I've contributed to MAME since 1998 but unfortunately I don't have a lot of time these days to contribute more. When I do
have time these are some of things I'm looking at!
February - April 2006
Fighter's History finally emulated, a long, long time after I first started
examining it (7 years?). The breakthrough came because I was able to map the
use of the protection chip (Deco 146) on the Fghthist board to that of the Nitro Ball board
which I had managed to attach the PCB target manager to. In the end it turns out it is a
'simple' address line swap, but I had to check the possibilities such as data line swapping,
different address swap for read & write data (which sounds strange, but makes perfect sense
for this chip) or even the possibility the chip has different hardware configurations that
mean there may be no mapping.
Also extracted all the c-chip data from Bonze Adventure, making the game properly playable
all the way through (restart points in later levels were wrong and would cause the game
DECO MLC system - added sprite buffering, fixed tile banking, fixed clear colour,
added sprite clipping (used to good effect for pseudo viewport effects in Skull Fang), ARM
interrupt bug fix and preliminary raster support. The end result is that Skull Fang and
Hoops are now properly playable. About the only thing left to do in this driver is
full raster support for the playfield in Stadium Hero 96.
There has been a long-standing known bug in dec0.c for some time
(checking my notes, it's been there for 7 years!), in that
row & column scroll could not be applied to a tilemap
simultaneously. The reason for this limitation is that Mame's
tilemap system did not support this. Anyway... I've re-implemented
the rendering of this sytem by providing a new tilemap draw function
that correctly implements simultaneous row & column scroll. I also
verified the rendering of all video modes using a trojan on a Birdie
Try board. This finally fixes the waterfalls in Midnight Resistance!
(It doesn't really affect any other games, but the source code is
much cleaner now).
Whilst working on this driver I noticed there are several revisions
of games that are still not dumped, eg, Japanese Heavy Barrel, World
Fighting Fantasy, USA Boulderdash. If you have any games on this
hardware please check the revision/rom-code ID against Mame to see
if you have an unsupported set.
Double Dragon has a crash which sometimes occurs at the very end of the game
(right before the final animation sequence). It occurs because of a jump look up
BAD3: LDY #$BADD
BAD7: JSR [A,Y]
At the point of the crash A is 0x3e which causes a jump to 0x3401 (background tile
ram) which obviously doesn't contain proper code and causes a crash. The jump
table has 32 entries, and only the last contains an invalid jump vector. A is set
to 0x3e as a result of code at 0x625f - it reads from the shared spriteram (0x2049
in main cpu memory space), copies the value to 0x523 (main ram) where it is later
fetched and shifted to make 0x3e.
So.. it's not clear where the error is - the 0x1f value is actually written to
shared RAM by the main CPU - perhaps the MCU should modify it before the main CPU
reads it back? Perhaps 0x1f should never be written at all? If you want to trace
this further please submit a proper fix! In the meantime I have patched the error
by making sure the invalid jump is never taken - this fixes the crash (see
Patch for 103u1 and save state near end of game. (You need the patch to
enable save state support).
Some small fixes to the Double Dragon driver to finish
Due to pressing deadlines in 'real' work, this took somewhat longer than I thought to finish
off. Unfortunately, although all Deco156 games now boot in Mame, only Night Slashers and
Heavy Smash are properly playable. All the other games make use of a math co-processor
which is not yet understood. Of the broken games Skull Fang works the most - the attract mode
is fully correct, and it's playable up to the first boss. The other games mostly have serious
gameplay errors (eg, AI players do not respond correctly in Hoops). Sound is also bust in all
of the new games.