Hi everyone, we're back working in our NES emulator, and now we're tackling MMC3 IRQ counter.
So far I pass all of Blargg's MMC3 tests (except for the alternative behavior one, which I don't emulate yet), but there are a couple of details that are not clear to me after reading the wiki pages and a lot of related posts in this forum.
I currently have the mapper set up so it doesn't clock the counter sooner than 16 pixels after the last rising edge. I pass the status of the VRAM address from the PPU to the mapper in every access to VRAM and 2006/2007.
- In Mega Man 5, in the screen after you select a boss, I get the bottom half of the screen shaking. This sometimes gets fixed adjusting the timer used to ignore fast toggling of CHR A12, but I can't get consistent results. I also get similar screen shakes in Mega Man 6.
-In G.I. Joe - A Real American Hero (USA), I get a messed up split screen at the bottom, which presumably causes a zero hit to miss, hanging the game. (Any ideas on what could be happening here?)
Almost every other game I've tried works fine. :S.
We're passing all of zero hit, ppu_vbl, cpu_instr_timing and cpu_interrupt tests as well.
It'd be great if someone could give me some clues about the proper emulation of A12 toggling; how long does it need to ignore quick toggles.
Thank you in advance!
So far I pass all of Blargg's MMC3 tests (except for the alternative behavior one, which I don't emulate yet), but there are a couple of details that are not clear to me after reading the wiki pages and a lot of related posts in this forum.
I currently have the mapper set up so it doesn't clock the counter sooner than 16 pixels after the last rising edge. I pass the status of the VRAM address from the PPU to the mapper in every access to VRAM and 2006/2007.
- In Mega Man 5, in the screen after you select a boss, I get the bottom half of the screen shaking. This sometimes gets fixed adjusting the timer used to ignore fast toggling of CHR A12, but I can't get consistent results. I also get similar screen shakes in Mega Man 6.
-In G.I. Joe - A Real American Hero (USA), I get a messed up split screen at the bottom, which presumably causes a zero hit to miss, hanging the game. (Any ideas on what could be happening here?)
Almost every other game I've tried works fine. :S.
We're passing all of zero hit, ppu_vbl, cpu_instr_timing and cpu_interrupt tests as well.
It'd be great if someone could give me some clues about the proper emulation of A12 toggling; how long does it need to ignore quick toggles.
Thank you in advance!