The Dooyong developed shooters are some of the more original Korean efforts of the 1990s, while other companies were simply bootlegging hardware ideas and code and hacking them into new looking games, Dooyong actually created their own games and used their own hardware designs.
The quality in general was fairly average, but they’re not terrible to play.
The emulation of them still had some bugs too, each game uses a slightly different mapping (same basic ideas, but all the ports moved around, slight changes etc.) which means sometimes bad assumptions get made, or things get missed. One game in the driver that had always had issues was Pollux with visible problems even on the title screen, and a number of MameTesters bugs relating to it.
We knew from earlier work on Flying Tiger that the hardware had some palette banking, it just hadn’t been hooked up on Pollux.
I spent a bit of time hooking it up, but was initially a little confused, we knew that Pollux was missing a palette cycle effect on the title, but none of the colours in any of the palette banks were cycling. That actually turned out to be a simple case of a missing vblank flag. The 2nd palette bank uploaded by the game is for the most part a darker copy of the first, although it was quickly obvious that the title screen was meant to be using that darker copy and not the one that it was using before, the darker copy is where the palette colours were cycling, and also where the correct colours were for several other title screen elements rather than entirely just darker versions like the rest of the time the game is running.
Now, when the palette ‘banking’ was hooked up to Flying Tiger we didn’t actually treat it as banking, we treated it as some ‘ram write protecetion’ meaning the bank bit was being used more like a RAM write protect flag than actual palette banking. This struck me as wrong, and a little more studying of a reference video for Pollux gave further weight to my theory that the hardware really did want to do real palette banking instead.
What I’d noticed is that in Pollux, when a bomb was released, the screen was meant to show periodic brighter pulses for the duration of the bomb. What I found out is that we’d actually been rendering the whole of Pollux with the wrong palette, the brighter version, since it was first emulated. That brighter palette was actually only meant to be used when you used a bomb, that was the entire point in there being two palette banks, a simple and quick way to turn the whole screen brighter / darker without having to write a new palette during gameplay. This simple bankswitch on the palette actually fits well with Dooyong’s general design of this hardware – leaving the CPU as free as possible to just run the game logic, not be updating palette data and tilemap data)
I implemented this, it turned out the selected palette bank for writing is also always the visible one. As a result the game looks much darker now, which greatly improves the contrast between backgrounds and sprites.
There was a MameTesters bug concerning the character portraits in the ending, after fixing the above issues I checked and that was fixed too, not too surprising.
Title screen – Left = Bad palettes, Right = Good palettes
Here’s a video from MAME with the fixes, it’s got cheats enabled, but allows you to see all scenes in the game for reference.
The Flying Tiger code was also updated with this new knowledge, although I don’t know if anything has changed in it as a result. It’s possible some of the other games in the driver should have this hooked up too, I plan on checking that soon.