Martin Piper
Posts: 1
Joined: Wed Nov 28, 2018 3:01 pm

Bomb Jack emulation understanding

During the course of reverse engineering the Bomb Jack hardware I discovered some new understanding related to the two registers at $9a00-$9a01 that control 32x32 sprite selection. In the MAME source (https://github.com/mamedev/mame/blob/ma ... mbjack.cpp) it labels only one register $9a00 (not two) as "? number of small sprites for video controller?"

Also https://github.com/mamedev/mame/blob/ma ... mbjack.cpp notes the sprite size selection with "use big sprites (32x32 instead of 16x16)". However in the real hardware sprite size is not selected by this bit, it is just coincidence. The hardware is capable of displaying 32x32 sprites from any portion of the sprite ROMs.

The actual hardware is more controllable:

Code: Select all

0x9a00 start index of 32x32 sprites
0x9a01 end index of 32x32 sprites (exclusive)
	So 0,0 = no 32x32 sprites
	0,8 means indexes 0 to 7 (inclusive) are 32x32
	Maximum number in both is is 0xf

This is all simulated and documented in this open source project: https://github.com/martinpiper/BombJack ... /README.md

This simulation can also be used to debug failures in original boards, since disabling chips or signals in the simulation can produce similar output display artefacts. For example disabling one of the scan line RAM chips (4A/4B/4C/4D) produces alternate pixels and bright lines, similar to the original hardware.

Return to “MAME Discussion”