Chris White - Emulation & Decompilation

Monday, March 22, 2004

Sprites are now implemented. Support is included for all sizes, including those that are undocumented, as well as features like sprite priority rotation. Check out the new screenshots.

Also fixed a bug in VRAM reading, which caused graphical corruption in a few ROMs.

Tuesday, March 16, 2004

Added support for screen fading, one of the easier bits of the PPU to emulate! In the CPU core, I fixed a bug with the TCS / TSC opcode; the 16-bit accumulator needed to be transferred to/from the stack pointer ignoring the status of the memory flag. I already knew this, but implemented it incorrectly. Oops. Now Ghosts N Ghouls runs further, before hitting an unimplemented opcode. Lots of commercial ROMs now start, but really need sprites implemented to play!

Sprites will be the next aspect of the PPU I emulate. Then, a few titles should be playable. A number of people have contacted me to ask when I'll release JSnes. I think there will be a release in a couple of months, once I've stabilised the emulator somewhat. This might be sooner, but no promises.

Monday, March 15, 2004

Well, a short time without an update, but I've been hacking away. I researched offet-per-tile mode, which can be used in Modes 2, 4 and 6 by the Snes. Implementing this proved tricky, as no documentation exists on it, and quite a few emulators don't support it. Further to this, the game doctor I ordered didn't work and is being sent back for repair, so I couldn't run any tests on hardware. Bah!

The main problem I ran into with offset-per-tile is that my current line-by-line engine wasn't good enough to support it properly. If I'd realised this functionality existed when I'd started coding, I could have done things differently from the outset. As it was, most of my graphics rendering code needed a rewrite.

Anyway, offset-per-tile now seems to be working correctly in all but one demo I've tried. I'm sure there's more bugs to find.

I also improved the sound skipping code, which means the Infinity demo now runs. I also fixed directPageIndirect addressing, which fixed problems in the Super Mario Allstars + World double pack and a PD demo.

Tuesday, March 02, 2004

Added HDMA support. Managed to get the basics working pretty quickly, but spent a while trying to get the repeat flag working properly. Also had some trouble with conflicting documentation. A lot of nice effects work in PD demos now!

Next, I'm going to work on bug fixing existing code to ensure everything is working as it should. Currently a few simple demos that should work don't, and I want to establish the reasons for this before implementing anything new.