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.
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.