The PCB looks overally quite elegant - there are place to solder PRG/CHR RAM/ROM, battery, mapper blob and a lot of jumpers underneath.
After analysing the pinout of blob, it turned out to be exactly AX5202P but with few more pins added in between.
* CPU-A12, CPU-A2, CPU-A1
* PRG-A19 (?),
* CHR-A19 (?), CHR-A18 (?),
* VBAT, WRAM-VCC (just like in MMC5),
* some unknown signal going to jumper with VCC (closed),
* three unknown signals, each of them going to jumper with PPU-A13 (each of them is open),
There are a few more jumpers (each is open),
* connecting PRG-A14/A13 to CPU-A14/13,
* connecting CHR-A12/11/10 to PPU-A12/11/10,
* connecting CIRA-A10 to PPU-A11/10
Sounds like a simply way for NROM game without even adding mapper-blob.
Firstly I desoldered the EEPROMs and checked whether they work in emulator as MMC3 and they ran flawlessly. However, many bytes of PRG are diferent in comparision to the loopy's (some are for example zeroed). But there are still copyrights, so no idea what authors of the cartridge changed. So either mapper-blob is broken or any other issue.
Then I pre-programmed them with other MMC3 game (I choose Doki Doki Yuuenchi, it's my faourite one for testing) and it worked. Even the scanline counter was perfectly accurate. So either SMB2J triggers any unkown register in MMC3 blob or...
Well, Doki does not use PRG-RAM while SMB2J does, so maybe that's the issue? I checked the PRG-RAM chip to be be OK. So I started analyzing what's going on with the PRG-RAM-/CS line and well.. it looked freakingly weird.
It turns out that the line is like open collector. That is, mapper only drives it low, but it is pulled-up to VCC by external 4.7k resistor (lowering the resistor to 470R made edges more vertical but still game didn't worked). And the few ns spike, caused by M2-/ROMSEL delay when accessing mapper registers at $e000-$ffff, produces slowly-rising signal that probably corrupts this fast 70ns RAM.
Firstly I thought of just adding a small capacitor to GND (but my experience is that results depends of the internal resistance of output). So much better was to add well-trusted circuit:
Code: Select all
VCC | 1k | mapper --+-|>|-+---+-- WRAM-/CE | | | +-1k--+ 56p | GND
So this will probably be issue with ANY MMC3 game that uses WRAM on this particular PCB.
Why they released such cartridge? Well, maybe they tested it with slower RAM. Here is 70ns which is one of the fastests ones, vulnerable to such short skipes.
For anyone trying to dump any of those cartridges: it watches for M2 and when it detect it to stop toggling, it disables any further writes to mapper register (and access to RAM)