I did a bit of looking at MMC1 support in my emulator, and this is something I noticed that was not in the FireBug doc. I learned a lot of this from Nester and NesCafe....
Register 1 is sent 5 Bits. You do not ignore any of them. When bits 0 - 4 are set (on Bit 4 write), I immediatly evaluate the register.
If Bit 4 of register 0 is NOT set, you must swap 8K of graphics at PPU 0x0000.
This is the part that is NOT in Firebugs document....
To get the correct bank number (for 8K swaps),
int bank = mmc1_registerOne & 0x1F; //Use all 5 bits
bank = bank >> 1; //NEW PART: Shift down. Bit 0 is ignored.
I don't know if this will have any affect on your emulation. I still have lots of graphic corruption in my MMC1 emulation..but at least my Zelda 2 works good now....