When Charles got things moving with the Data East 146 I/O & protection chip emulation it quickly became clear that the 104 chip was different to the other repackaged versions of the chip in that the tables it used internally differed from the 146, although it was also very obvious that the basic functionality was the same.
Luckily Smitdogg had a PCB with a 104 Chip on, an ideal test case to study in the form of the Dream Ball board (previously covered here) This board provided possibly the easiest test bed for the 104 chip because it doesn’t use any of the additional Data East security measures (encrypted CPUs etc.) I’d also determined that the chip was hooked up in a direct way without any additional line scrambling, again making it easier to work with.
The Dream Ball board was quickly shipped to Charles for studying, and after a couple of days of work he was able to use his knowledge from the 146 along with a list of what I felt to be the basic differences in terms of ports the 104 used compared to the 146 to produce a complete set of tables describing the behavior of the 104 chip, just as he did for the 146.
I’d already prepared MAME for this, restructuring all the existing protection and I/O handlers in the 104 based games to go through the same basic code as the 146 so slotting in the new data was fairly easy.
As a result of this Caveman Ninja, Wizard Fire, Pocket Gal Deluxe, Boogie Wings, Rohga, Diet GoGo, Tattoo Assassins, Dream Ball, Night Slashers, Schmeiser Robo and Double Wings now all go through a single implementation of the DECO104 emulation.
Now not all of those games are actually protected; Boogie Wings, Tattoo Assassins, Dream Ball, Night Slashers and Diet GoGo use the chip for nothing but the I/O ports, none of the protection features are used at all.
Caveman Ninja, Wizard Fire, Rohga and Schmeiser Robo on the other hand had rather complex partial implementations of the protection handled on a per-game basis, so by using the new 104 code we were able to kill off all of those and provide a much cleaner and more accurate solution. Pocket Gal Deluxe is only lightly protected, but actually provided one of the more annoying challenges because they hooked the chip up with some very different address line swapping to any other games, but in the end I managed to figure that out so we could kill the old simulation code there too and use the new stuff.
The most significant improvement from all of this is however Mitchell’s Double Wings. Until now Double Wings only had a very buggy incomplete protection simulation meaning the game had incorrect boss behavior (including hangs in places if you didn’t kill the bosses etc.) With the new code all these problems are fixed and the game can finally be considered as working. It’s a fairly generic Raiden type game, with similar weapons / weapon upgrade system and your standard selection of levels, 2 loops with the 2nd loop presenting some extended versions of the levels. There are 3 characters to choose from, each with a different first level and default shot type (the power-up ships will always drop that colour by default although like Raiden they do cycle if left) There is a terrible quality 1CC of it from original hardware on YouTube if you want to see an original reference.
It’s possible you’ve played through the game before and not noticed the problems, but the old emulation simply couldn’t be trusted, and was known to have flaws, hence the not working flag it’s had all these years.
I’ve also been doing bits of other Data East work too, studying Dragon Gun a little more. I haven’t managed to decode the FMV backgrounds yet, but I did stop the game hanging on the last boss. I plan on looking at a few other issues too, for example the sound banking on Wizard Fire.
Sorry for the lack of a proper writeup on the last release, I’ve been a bit tied up with some actual emulation work and emulation work always takes priority over the write-ups.