FB Alpha




Posted by barry on 12 May 2012 at 16:08:45

I looked at Street Fighter II: Magic Delta Turbo again. It had sprite glitches, and the scroll 2 layer was in the wrong place when row scroll was used. The game writes different row-scroll values than normal, and it wasn't just a case of applying an offset to line-up the layer.

Initially, I gave the game a different VBLANK IRQ, I found that using an IRQ of 4 the game started reading and writing in the 7xxxxx area. I hooked up inputs and dips for the reads at 708xxx. I then recognised the layer enable write and scroll register writes in the same 708xxx range. Hooking all these had the game working pretty well, albeit with sprite glitches and incorrect row scroll.

At times when sprites were on-screen, there were plenty of writes in the 0x7xxxxx area, with the tell-tale 0x8000 end of sprite list marker being written too. Sure enough, this is sprite RAM, in the same format as many of the other CPS-1 bootlegs. Hooking this up, the sprites work perfectly, the aforementioned glitches are gone.

For the row scroll, I noticed that the game wasn't writing the row scroll start register. This is usually the same as the y scroll value, so hooking up the scroll2 y write to this register seemed plausible (the game isn't writing it anywhere else). Doing this, aligned the scroll layers, but ended up with slightly "juddery" scrolling.

I also noticed, that the game wasn't alternating the row scroll table register. Usually, the game would alternate between four row scroll tables to achieve smooth scrolling. I found the alternating value in the game's work RAM, and hooking this up, gives the normal row scroll effect. I am not 100% sure if this is accurate or not, but it seems strange that the bootleggers would leave the game with the "juddery" scrolling. If anyone has access to a PCB, it would be nice to get confirmation about the scrolling. The Guile stage is particuarly good for checking, and helpfully, is first in the demo loop. A video would be perfect, if anyone has the capability.