List of Controller II microphone games

Started by JC, July 03, 2008, 11:25:17 pm

Previous topic - Next topic

UglyJoe

Quote from: P on July 08, 2014, 08:22:38 am
I can't tell if the code is used in the game or not but, it looks like it increases $2E if the mic bit is set using the BEQ instruction, then it does some nested loop with nothing inside (some kind of delay?) and after some more branching it finally loads $2E into the accumulator and compares it with #$C8. It gets too complicated after that. lol


;ROM with iNES header

004A   AD 16 40   LDA $4016
004D   29 04      AND #$04
004F   F0 02      BEQ $0053
0051   E6 2E      INC $2E
0053   A2 10      LDX #$10
0055   A0 00      LDY #$00
0057   C8         INY
0058   D0 FD      BNE $0057
005A   CA         DEX
005B   D0 FA      BNE $0057
005D   E6 2D      INC $2D
005F   D0 E9      BNE $004A
0061   A5 2E      LDA $2E



It looks to me like the code is ensuring that you're yelling into the mic for more than a single frame.  I'm not sure what $2D is getting initialized to prior to entering the routine, but that's controlling the overall loop (004A - 005F).  Each iteration of the overall loop will increment $2E again if the player is still yelling into the mic.  

The game must be checking the value of $2E later on to see if it's above a certain value, meaning that the player was yelling at the mic for all or most of the iterations (enough so to consider it being used instead of just picking up a few bits of random noise).

P

I see. $2D and $2E are both initialised to 0 before this code (unless they are changed in one of the subroutine calls that comes before it). It certainly seems to be a working mic reading routine unless some of those branchings before it skips it entirely.

I gotta build a multitap later when I have time, so I can test that Ascii Stick cheat command.

UglyJoe

I think the code is legit.

I set a breakpoint in the code that process $2E.  If you play the game as one normally would, the breakpoint never snaps.  However, if you hold down Select + Start on the player 2 controller (easy to do in an emulator) and reset, then the breakpoint does snap at the titlescreen after a short delay.  Once the debugger snapped, I set the accumulator to $FF (basically telling it that I had screamed into the mic the whole time), and then started the game.  This time, my "K" meter was set to 320 instead of 220!

I don't really know the mechanics of this game well enough to say exactly what it does, but it definitely reads in the mic (if I don't up the accumulator to a high value, then it doesn't work) and it only does so if you hold down select and start on player two's controller (not player one, and not either/or).

I may see if I can rig up something later and try it on real hardware.

P

I'll be darned! You mean it actually worked with Con II Start+Select and Mic? Maybe they built a special controller for debugging. So that delay we saw in the code is what delays the title screen music after all.
I can get the title screen sound to be delayed in Nestopia (although it's hard) but I can't get the strength boost no matter how many times I try.

K means King Suren's battle strength and I think 320 is max. The random factor in this game is huge though, so there's always a chance to loose. If you bump into trees and rocks, and prisons you can rescue allied soldiers that's been transformed by Ogoreth and they should be gold coloured if they are at max strength.

I've always wondered if it's possible to add Controller II Start and Select buttons to a Red & White Famicom. Nesdev wiki says a Famicom always returns 0 for those buttons.

UglyJoe

So I had a really fun time explaining to my wife why I was yelling into an old game controller :-[

I used my Hori Laser Commander controller, since it has a 1P/2P switch.  I put it in 2P mode, held down start and select, and then pressed reset.  The pause before the title screen music definitely occurred!  So then I tried it again while blowing into the mic...no good.  Tried talking, yelling, tapping...no good.  So close to getting this to work, but now I don't know if my mic is bad or something.  I'll probably write a quick test program in Family Basic to see if I can figure out what's going on.

P

Cool we are so close!! :D In my experience shouting isn't doing much for the mic, but blowing into it is more effective to get a fairly constant high mic bit for as long as you want/have lung capacity (although the shop clerks in Paluthena aren't impressed at all :(). The mic test program I wrote in Family Basic is super sensitive so you might want to make a program that makes it easier to tell the mic bit's duty cycle when blowing. Or try Makimura's mic test program on the Everdrive or Powerpak. http://rdev.g-pw.org/makimura/homebrew/2p-mic-test

Now that I think about it, it isn't that strange that it works on external controller II as well as the normal controller II. In the controller reading subroutine they probably read all 4 possible controllers (like most other games do) and save the results in the same 2 variables which are then checked for the cheat.

Quote from: UglyJoe on July 09, 2014, 05:12:37 pm
So I had a really fun time explaining to my wife why I was yelling into an old game controller :-[

lol ;D

UglyJoe

Yeah, I tracked down your FB mic test.  It looked like the mic was fine.  However, I added an extra line to print "NOPE" if the read did not detect the mic.  The test then showed a world of difference.  It's mostly "NOPE"s with just a few "MIC"s in there.  I'm wondering if my mic dirty or something, though.  I put it up to my TV's speaker and turned the volume up until I got a nice loud feedback loop going.  It would still only register the mic occasionally.

The game does 256 reads and I have to get the mic to work for at least 200 of them in order for the cheat to activate.  It'll actually not work if you get all 256 reads, since your read "score" will loop back to zero!

P

I entered your program and I also get very few "MIC" in a lot of "NOPE"s. If I open the con II and blow into the mic it becomes much more sensetive, but it's still pretty bad. Yet another mic testing program http://forums.nesdev.com/viewtopic.php?f=2&t=9909#p109236 this one by Chris Covell.

All mics I've seen have been like this, I suppose they were fine when they were new. Cleaning the PCB and metal part of the slider was enough for Zelda but it's still really bad. I've been considering replacing the microphone part for a new electret condenser microphone.

UglyJoe

So I rigged up some wires on a 3.5mm plug, taped the bottom shell and PCB from a player II controller to my desk, and used some helping hands to pin the wires onto the microphone.  (pic).

I typed in the FB mic test from before and tried playing some sounds from my PC.  It's pretty neat to hear your computer audio coming out of your TV via the Famicom  ;D  I found a software signal generator and tried many different sine and square waves.  Some settings worked better than others (high amplitude, and frequencies of ~160Hz and ~200Hz, for some reason).  It was never really too consistent, though.

I started up Bokosuka Wars and tried a few of the more promising signals.  No luck :'(

This cheat code does exist, but I'm not sure it's technically possible to get it to happen.  It needs the mic to be activated between 200 and 255 of the 256 reads.  As a comparison, the Pols Voice code in Zelda only needs the mic to be activated 20 times -- and you can have as many gaps between the activations as you want.

P

It's strange that this cheat would be known in Famicom communities if it didn't work. I guess it could be the developers that leaked it out and it appeared in gaming magazines and such but no one actually got it to work since it's impossible.

Maybe we would be more successful if we were to wire a push-button (and possibly a pull-up resistor unless there is one for the mic already) to get a cleaner high signal on the mic line.


Oh and about "Nattechonmage. Teka~", nattechonmage means "please succeed for me", and teka is like "or how should I put it..." so you are basically begging the Famicom "Please work! Or something~" further suggesting that this cheat is a real b**ch to get to work.

BaconBitsKing

I heard you can try to haggle with shopkeepers in Light Myth: Palthena's Mirror (Kid Icarus) with the microphone, but it may be a rumor.

UglyJoe

Yup, that one's true.  It's in the first post.

BaconBitsKing


UglyJoe


mario_bro2065

From what I heard, Takeshi's Challenge used the Mic. Except that game takes 50 minutes to get past the beginning so I eventually gave up.