Mapper 137

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Mapper 137
by on (#144450)
As you can see in the screen shot below, the legs of the walking people are not displayed correctly:

Image

I don't know if this is a mapping issue or if it is a CPU/PPU timing issue or if the game uses some rarely used NES feature. The ROM is marked as 4-screen mirroring even though the ROM supposedly controls its own mirroring and it should never be able to use 4-screen. If I force it to 4-screen, it actually does improve things slightly (the animated SACHEN logo looks correct when set to 4-screen, but the rest of it is about the same).

The wiki mentions that it may contain inaccuracies.

This video demonstrates what it is supposed to look like.

My emulator and FCEUX look about the same. Nestopia gets the walking legs to appear, but other parts don't look right.

Edit: The sprite 0 hit occurs on scanline 15, close to the top above those mountains (see the white pixels in the upper-right). I assume it counts cycles or something to figure out when to split the screen.
Re: Mapper 137
by on (#144452)
PAL vs NTSC.

This game appears to be 2A07/2C07 only.

I'm also confused about the mirroring situation; the game never seems to need anything except horizontal layout (vertical mirroring), so does it actually need the "4 screen" marking or is the definition of mapper 137 wrong? It does seem to write 2 to register 7 once, and nothing else ever again.

edit: http://wiki.nesdev.com/w/index.php/Sach ... 59A_pinout -- You know, I bet the mirroring control definition for mapper 137 is all wrong. The original IC uses the PPU A11 and PPU A12 inputs to select one of four 2 KiB slices, but mapper 137 shrinks them in half, so those pins have to be now PPU A10 and A11 ... if so, the mirroring control at the very least has to be 3'b010=A10 (V mir/H layout). Only question is whether the input that was PPU A10 is still, or if they swapped it for PPU A11.

Finally, you should, in general, allow the 4-screen flag to override mapper-controlled mirroring, e.g. mapper 75 vs mapper 151.
Re: Mapper 137
by on (#144489)
You're right! Thanks. Switching to PAL makes it work correctly. I also disabled the ROM controlled nametable mirroring code and let it work as 4-screen as specified in the header. I wonder how many other Sachen mappers are like this.
Re: Mapper 137
by on (#145628)
zeroone wrote:
I wonder how many other Sachen mappers are like this.

Not only Sachen mappers but also a lot of other ROMs are iNES-Header-Error. Bootgod's ROM database may help you to detect whether a ROM is iNES-Header-Error or not. I remember the site should be http://bootgod.dyndns.org:7777.