Utility Sonic 2 - Simon Wai Disassembly

Discussion in 'Engineering & Reverse Engineering' started by Alex Field, May 21, 2022.

  1. Alex Field

    Alex Field

    シュート! カオス・エメラルド・ザが消えようとしている! Member
    Downunda, Mobius
    Sonic the Hedgehog 2+, Sonic the Hedgehog 3+
    So, the last major disassembly of Sonic 2 Simon Wai was by SuperEgg and Nayr in 2012, and that version had several accuracy issues; the only accurate one was from Esrael, and that was from c. 2007.

    So why not post it to GitHub, port it to AS and update it?

    It's still a work-in-progress, however several objects and routines have been relabeled/tabbed, and some mappings split. The ROM itself still isn't identical, however the only differences come down to small byte differences, which itself is weirdness caused by the disassembler (presumably) automatically enabling zero-offset oprimization..

    Might as well mention some of the interesting things this prototype has:
    • The compression used for Green Hill Zone's chunks in the Nick Arcade build, and also Kid Chameleon is still present, albeit unused; I've decided to dub it "Chameleon Compression". It is another variation of the LZSS algorithm, and uses extreme unrolling to achieve fast decompression speeds.*
    • Obj03 (path swappers) are coded in an... interesting way, using a table to determine which character is passing by it instead of the "lea" method.
    • The sound driver is already compressed with Saxman, but the music isn't; this confirms that the 68k version is the original, while the Z80-variant is a port.
    • The bizarre object in Slot $0F is also still present, and has the same effects; interestingly, the RAM address it changes was changed from $FFE9 to $FFD9.
    *Still needs documentation, currently it is a mess of labels.
    Last edited: Jun 17, 2022