Do you have a continuity tester? I made a poor man's one once out of a AA battery, a speaker, and a 100 ohm resistor and listened for clicks.When the value 'written' to A0 is 0, it's horizontal layout/vertical mirroring; when it's 1 it's the vertical layout/horizontal mirroring.

No... I am now trying for a while to approach this through emulation. (I went through all the 256 mappers again in FCEU to verify that it doesn't work now that the ROM is correct size.)

MAPPER 252 IMPLEMENTATION (EDIT: Later changed to 174.)
Trap writes to $8000-$FFFF (really only $FF00-$FFFF matter). Regarding the ADDRESS (value is ignored):
- PRG 0x4000 bytes from 0x4000*v are mapped to 0x8000, where v=bits 6..4
- PRG 0x4000 bytes from 0x4000*p are mapped to 0xC000, where p=v+bit7.
OR in other words:
If bit 7 was set:
- PRG 0x8000 bytes from 0x8000*v are mapped to 0x8000, where v=bits 6..5 (bit 4 is zero)
Else
- PRG 0x4000 bytes from 0x4000*v are mapped to 0xC000, where v=bits 6..4 (mapping of $8000-$BFFF is unknown)
If bit 0 was set, mirroring is vertical, else horizontal
CHR 0x2000 bytes from 0x2000*g are mapped to 0x0000, where g=bits 3..1

This is what I figure so far. However, this only explains the first write, not the subsequential ones.

EDIT: Implemented these measures in my emulator. The ROM works perfectly. Turns out I was needlessly worrying about the other writes.
How do I get to assign a mapper number? ;-) Tentatively I chose 252. (EDIT: Later changed to 174.)

EDIT: The mapper description above (arrived to independently) seems very similar to what liqnariq posted earlier, albeit with different bit indexes. I am seriously impressed by liqnariq's ability to understand the circuits.

Now, the next logical step would be to replace the ROM on the cartridge with a connection to the Arduino so I could use the Arduino as a dev cartridge! 8-) (No idea whether that is feasible really.)

Last edited by Bisqwit on Sun Jul 08, 2012 5:17 pm, edited 3 times in total.

Well done. Could you please make macro photo(or scan) of PCB? I am curious about '153 usage.Thanks in advance

Thanks. Do you need me to desolder the 74LS chips to see the PCB contents underneath? Because I am not particularly willing to do that, lest I accidentally damage those chips. I can take photos of the ROMless board later today (in about 10 hours) and link to them in higher resolution.

Well done. Could you please make macro photo(or scan) of PCB? I am curious about '153 usage.

This is the best I can do with my camera that is seriously handicapped in the macro photography depertment, and has difficulties in focusing.
These are all long exposure shots taken on a tripod, to minimize changes & impact of camera shake.
Click for enlarged versions.

That doesn't quite make sense; I've done a disassembly of Galaxian and although there's some repurposeable space (e.g. the music easter egg) there's not a lot — did your logs really show both the menu and galaxian executing out of $e000-$ffff ?

Quote:

The mapper description above (arrived to independently) seems very similar to what liqnariq posted earlier, albeit with different bit indexes. I am seriously impressed by liqnariq's ability to understand the circuits.

That doesn't quite make sense; I've done a disassembly of Galaxian and although there's some repurposeable space (e.g. the music easter egg) there's not a lot — did your logs really show both the menu and galaxian executing out of $e000-$ffff ?

I may have meant C000-FFFF for the menu. I should verify that.

EDIT: Ayup. Galaxian & main menu both work when $8000-$9FFF is mapped into 8k page 0 and $E000-$FFFF is mapped into 8k page 1. Mapping $A000-$DFFF is not necessary for either program.Main menu requires only $8000-$9FFF + vector table at $FFFx.Galaxian requires only $E000-$FFFF + bootstrap code at $80xx.

The reason to my erroneous statement earlier was that in my tests, I set the 32k address range into a "dummy" mapping mode and only explicitly mapped $E000-$FFFF to 8k page 1. However, my "dummy" mapping mode also accidentally mapped $8000-$BFFF into the first page, which I had missed.

liqnariq wrote:

Quote:

Now, the next logical step would be to replace the ROM on the cartridge with a connection to the Arduino so I could use the Arduino as a dev cartridge! 8-) (No idea whether that is feasible really.)

Can the atmega update its outputs in less than 350ns? Finely tuned asm might work; the plain arduino code definitely isn't fast enough.

The Arduino runs at 16 MHz (62.5 ns per cycle), meaning it has less than 6 cycles of time to update the outputs. Seems unlikely, even if I have two boards, one dealing with PRG and the other dealing with CHR. Hmm.
Maybe the Raspberry Pi then :-)

However, in The Goonies, they did not remove the KONAMI text (bottom left):
Possibly because it would have been a bit too difficult. The Konami logo is embedded in 1-bpp graphics that overlaps with another 1-bpp graphics item. A neat trick that Konami used for increasing the mileage for CHR data.

But now, this is what they did to Arkanoid:
No, they did not remove the TAITO logo, even though that would have been easy. They removed half of the game! What's that "JALECO" text doing there? Turns out that through their incompetence, they somehow put graphics of a wrong game in the cartridge. If I understand correctly, that graphics is from Argus.
I verified it in an emulator, by poking the RAM directly to warp to stage 33. Left: Real Arkanoid. Right: NTDec Arkanoid.
Oh, it did not even bother to switch VROM pages.
Granted, this is the last stage of the game, and there are approximately zero players who can get that far in the game, but still, if anyone did, they would have been somewhat disappointed.

Who is online

You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot post attachments in this forum