I really should update here more often.. but here’s a mini-update to get things started.
The infamous Tattoo Assassins has been emulated in MAME for a good few years now, but it always had some graphical issues which annoyed me. While it was possible they were glitches of the original game (which given the horror stories you read about it’s development, wouldn’t have been too surprising) but at the same time, for a machine at the ‘location test’ stage, they seemed a bit TOO obvious.
The animated graphical corruption when you executed a fatality, accompanied by some nonsense miscoloured text about having seen XX fatalities, and an incomplete Game Over screen. If you’ve ever tried Tattoo Assassins in MAME you’ve probably noticed them.
Over the last week I’ve been cleaning up the Data East drivers in MAME, trying to consolidate multiple (near identical) implementations of the tilemap, and sprite custom chips into single, shared implementations for each chip. The existing implementations were a bit messy, with some features implemented in one, but missing in another. Having multiple implementations of the same thing is bad, code tends to develop in one place, but not another which is pretty much what had happened here.
Anyway, doing such cleanups does carry a risk of introducing bugs, because it’s not always clear why one copy of a function has been modified and another hasn’t, when they should be the same, however, in the case of Tattoo Assassins this cleanup work has actually fixed the aforementioned bugs.
Some bugs could still remain, the behavior of the blending chip(s) isn’t fully understood, as is evident in the likes of Night Slashers, and some implementations have yet modified to use the generic code (usually because they’re tied closely to fancy game specific mixing routines, as found in the Desert Assault and Boogie Wings drivers, making the conversion significantly more difficult) however, there is nothing which looks obviously wrong in Tattoo Assassins anymore.
It turns out the problem with the fatality screen was that the tilemap was meant to be switched to a 16×16 pixel tilesize mode at that point, and the implementation of the tile code for that layer only supported 8×8 mode. The XX fatalities text is actually debug text, it’s clearly NOT meant to be displayed, the animated garbage was the ‘TATTOOED’ text being shown using the wrong tiles, in the wrong mode.
The Game Over text problem was because the game was only drawing the first half of the sprite list. In some cases the spritelist can be bigger, Charlie Ninja already needed this for the foreground text to work, so by sharing the implementation this problem was fixed in Tattoo Assassins.
And as an aside (not my work, but interesting to note), the BSMT2000 was decapped recently, and hooked up as a CPU instead of an higher level implementation of the sound chip, which should make the sound more accurate than ever (don’t coin up too soon after boot tho, or you’ll get no sound at all ;-)
One or two other things have also improved as a result of doing this video code merge, Birdie Try gained multi-width sprite support, so the rendering of the radar / sprites is now correct (still unplayable due to protection glitches) and Super Shanghai Dragons Eye (bootleg) gains a previously missing rowscroll effect on the Hot-B logo at startup.