3-game cartridge and MMC3 / reset vector issue

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
3-game cartridge and MMC3 / reset vector issue
by on (#242532)
Hi guys,

I'm trying to implement MMC3 right now. And I really want to get this multi-game cartridge to run, that I had myself when I got my NES back then (SMB - Tetris - World Cup, that was packaged with the NES)

So, I think I kinda grasped the concept of MMC3, but I'm actually stuck when initializing it. So, the area 0xe000-0xffff is supposed to be statically mapped to the last PRG bank. Now, when evaluating the iNES header, I get a 16 / 0x10. And as these banks are only 8k, not 16k, I double the value. So, I have 32 * 8k banks to my avail. (Additionally 256k CHR ROM, but that shouldn't be important right now).

Now, when I actually implement it this way I start with the PC 0xff82, which should be wrong. When I compare to Mesen, it starts with PC 0xff00. So I check the memory in Mesen, and search for the bytes of the reset vector (plus a few around them) in the ROM, and there is only a single occurence - at 0xfffc / 0xfffd. And that is, for my understanding, wrong?! For all that I know, the last bank should be bank 31 (* 0x2000), so the reset vector should be around 0x3fffc / 0x3fffd...?

Am I missing something? Has someone had the same problem? Maybe I'm just blind, or not seeing the obvious here.

Any help would be greatly appreciated.
Re: 3-game cartridge and MMC3 / reset vector issue
by on (#242533)
That specific multicart isn't plain MMC3 (mapper 4)! It's mapper 37.

I'd recommend starting with something that's not a multicart.
Re: 3-game cartridge and MMC3 / reset vector issue
by on (#242545)
Thank you so much!