I noticed when I tested with my test ROMs that Mesen seems to emulate the IRQ even with VRC2 submappers. So if you emulate the IRQ, the test ROM may think it's dealing with a VRC4 and hence complain about the missing one-screen mirroring.Sour wrote:This is what I have implemented, but the mapper 22 test complains about 1-screen mirroring not being available?
- (7.14 KiB) Downloaded 413 times
And you would be absolutely correct! Thanks, between disabling IRQs for VRC2 & disabling 1-screen mirroring for VRC2c, all the tests pass now.NewRisingSun wrote:I noticed when I tested with my test ROMs that Mesen seems to emulate the IRQ even with VRC2 submappers. So if you emulate the IRQ, the test ROM may think it's dealing with a VRC4 and hence complain about the missing one-screen mirroring.
It looks like you were working from an outdated version of Quietust's sources. Recently (meaning a couple months ago when I was last working on this) I pointed out an off-by-one error to quietust which he fixed, but the error is back in your version.NewRisingSun wrote:Attached is my modification of Nintendulator's Mapper DLL source file that passes all of AWJ's submapper identification tests. The only complaint the ROM still has is that the pseudo-scanline IRQ is "late".
Code: Select all
((IRQenabled & 2) && ((IRQenabled & 4) || ((IRQcycles -= 3) < 0)))
The screenshots at the top of the thread were taken before I had finished writing the IRQ tests. Under FCEUX, the complete test program displays "???" (unknown/inconsistent) for mapper 22 since it (correctly) doesn't implement IRQs but it does implement one-screen mirroring and alternate PRG bank layout for that mapper.Sour wrote:And your FCEUX screenshot says mapper 22 = VRC4?
Ah. Thanks for pointing this out. Now vrc2and4.cpp passes all tests.AWJ wrote:It looks like you were working from an outdated version of Quietust's sources.
I have updated my local copy of all mapper sources and replaced the vrc2and4.cpp in the post above.
FCEUX emulates this cart's outer bank register as part of its normal VRC2/4 code ("big_bank"), Mapper 23. Since we just cleaned up the VRC mappers thanks to submappers, I would prefer to assign Mappper