Hi all helpful peoples!
I come bearing gifts of puzzles to solve!
I started a new emulator that is accuracy focused, while also being fast enough to run on a mobile phone (a tall order, but I'm up to the challenge)
The problem is pretty much identical to viewtopic.php?f=3&t=9395&p=101095&hilit=SMB3+IRQ#p101095
except that thread never got to a resolution. Starting solution attempts from top to bottom in Dwedit's first post.
> scanline 248 (vblank time): C000 = C1 ;next value for latch
check
> C001 = xx ;value C1 will be reloaded into the scanline counter at dot 260 of the prerender scanline
check
> E001 = xx ;allow MMC3 interrupts
check
> Interrupt should trigger at scanline 192, dot 260.
check
> CPU will be at the address of the IRQ handler at about dot 284-295.
huh? If the interrupt triggers, the address changes nearly immediately, certainly not 24 dots later? right? (nevermind, silly comment. check)
Then comes (for me)
scanline 241: 8000 = 0x64; no effect in this case, set command
scanline 241: A001 = 0;
scanline 241: E000 = 0; acknowledge, disable interrupt
scanline 243: A000 = 1; set horizontal nametable mirroring
scanline 243: A001 = 0;
scanline 33: 8000 = 0x46; no effect, set command
scanline 33: 8001 = 0x19; Load 8k rom bank to address 0xC000, bank #25 (out of 32 8k banks available)
scanline 34: 8000 = 0x47; no effect, set command
scanline 34: 8001 = 0x18; Load 8k rom bank to address 0xA000, bank #24
scanline 112: 8000 = 0x46; no effect, set command
scanline 112: 8001 = 0x19; Load 8k rom bank to address 0xC000, bank #25
scanline 112: 8000 = 0x47;
scanline 112: 8001 = 0x18; Load 8k rom bank to address 0xA000, bank #24
scanline 246: 8000 = 0x45;
scanline 246: 8001 = 0x7F; Load 4k vrom bank to address 0x1C00, bank #127
At this point there is garbage on the screen until the NMI, then it re-renders the curtain again, sets the MMC3 irq counter, and repeats the vicious cycle.
Any help or ideas would be much appreciated. I'm looking for a super accurate emulator I can compile in MSVC and compare with side by side that is not my javascript emulator (cuz I don't trust it for accuracy )
Thanks!
Jon
I come bearing gifts of puzzles to solve!
I started a new emulator that is accuracy focused, while also being fast enough to run on a mobile phone (a tall order, but I'm up to the challenge)
The problem is pretty much identical to viewtopic.php?f=3&t=9395&p=101095&hilit=SMB3+IRQ#p101095
except that thread never got to a resolution. Starting solution attempts from top to bottom in Dwedit's first post.
> scanline 248 (vblank time): C000 = C1 ;next value for latch
check
> C001 = xx ;value C1 will be reloaded into the scanline counter at dot 260 of the prerender scanline
check
> E001 = xx ;allow MMC3 interrupts
check
> Interrupt should trigger at scanline 192, dot 260.
check
> CPU will be at the address of the IRQ handler at about dot 284-295.
huh? If the interrupt triggers, the address changes nearly immediately, certainly not 24 dots later? right? (nevermind, silly comment. check)
Then comes (for me)
scanline 241: 8000 = 0x64; no effect in this case, set command
scanline 241: A001 = 0;
scanline 241: E000 = 0; acknowledge, disable interrupt
scanline 243: A000 = 1; set horizontal nametable mirroring
scanline 243: A001 = 0;
scanline 33: 8000 = 0x46; no effect, set command
scanline 33: 8001 = 0x19; Load 8k rom bank to address 0xC000, bank #25 (out of 32 8k banks available)
scanline 34: 8000 = 0x47; no effect, set command
scanline 34: 8001 = 0x18; Load 8k rom bank to address 0xA000, bank #24
scanline 112: 8000 = 0x46; no effect, set command
scanline 112: 8001 = 0x19; Load 8k rom bank to address 0xC000, bank #25
scanline 112: 8000 = 0x47;
scanline 112: 8001 = 0x18; Load 8k rom bank to address 0xA000, bank #24
scanline 246: 8000 = 0x45;
scanline 246: 8001 = 0x7F; Load 4k vrom bank to address 0x1C00, bank #127
At this point there is garbage on the screen until the NMI, then it re-renders the curtain again, sets the MMC3 irq counter, and repeats the vicious cycle.
Any help or ideas would be much appreciated. I'm looking for a super accurate emulator I can compile in MSVC and compare with side by side that is not my javascript emulator (cuz I don't trust it for accuracy )
Thanks!
Jon