Chris White - Emulation & Decompilation

Wednesday, February 25, 2004

As promised, I've implemented correct (as opposed to hacky) subscreen support. This includes fixed colour and subscreen addition and subtraction. One obvious benefit of this is that the sky in Super Mario World is now correct (compare these new screenshots with the previous ones). Also, have a look at the transparent clouds in the Dwarf demo.

Nearly all the docs I found regarding subscreens were absolutely terrible and generally wrong. I have to thank Grog for his doc, which was both clear and correct. I've fixed a bunch of other graphic bugs, and will probably work on either HDMA or sprite support next.

Monday, February 23, 2004

Implemented H-Blanking support, which was causing Super Mario World to hang. In fact, SMW now runs into the game... and I'm sure it would be playable, if I had sprites implemented! There are some graphical glitches, related to me not supporting subscreens correctly yet. I'll optimise the BG layer code next, and simultaneously correct this.

Found a small bug related to NMI interrupts, although I don't think was affecting anything. SMW also showed up a bug with the LSR absolute opcode. I also corrected a bug related to scrolling tilemaps vertically, which only manifested itself on certain titles.

Currently, 80% of all opcodes are implemented. SMW, Super Off-Road, Super Mario All-Stars, Gradius III and Super R-Type are among a handful of titles that seem to run into the game (minus sprites). A few other titles do stuff, but require more of the PPU to be emulated correctly before progressing further.

Tuesday, February 17, 2004

I've worked on fixing more graphics related bugs (one of which was very silly and prevented 64x64 tilemaps working). I'm sure they'll be more to uncover yet. I've implemented horizontal and vertical tile flipping.

Super Mario World now partially works. Obviously, there are no sprites yet, and graphics emulation is incomplete. It doesn't run any further than the second screen at the moment, due to some kind of CPU/Interrupt bug which affects a bunch of ROMs. I'll try to solve this soon.

Thursday, February 12, 2004

No screenshots today, because I don't have anything interesting enough to post. However, I've worked on improving graphics emulation. I've started to clean a few bits of code, and most importantly, have implemented 16x16 tiles.

Some further opcodes and bugfixes in the core mean that a whole bunch of new PD demos run, or at least do something.

I've also ordered myself a Game Doctor SF7, which will enable me to test lots of interesting stuff on SNES hardware if I find the time.

Monday, February 09, 2004

Here's an update of my progress:

  • 150 CPU Opcodes are now emulated. I've bug fixed quite a few existing ones, and corrected various errors.
  • 64x32 tilemaps now display correctly
  • Tilemap scrolling implemented
  • Automatic joypad reading implemented
  • SPU skipper implemented (Fakes the sound processor for now)

The result of all this is that a handful of new PD demos are working, and the following commericial ROMs are displaying some graphics:

Currently, these do not run any further due to unimplemented opcodes. Still, I'm on the right track...