This has been my on-again, off-again (and mostly off-again) project this year after the long start I got on it last. I had invisioned this having some accompaniment, but circumstances forbid. I actually thought I was having trouble with this at the beginning of the year and "privately" asked for some help that didn't come along until too late, which is where all of the new Sonic 3 knowledge that's been showing up this year came from :P
Anyway, here it is, the world's first functioning Sonic and Knuckles disassembly:
http://www.s2beta.co...th/skdisasm.rar
In the rar is an IDB database of the main Sonic and Knuckles ROM (no "upmem"), which has been disassembled, analyzed, and corrected to the point where I can't find any errors during gameplay from start to finish, even with Sonic 3 "locked-on" (Considering certain changes in the coding style between Sonic 2 and Sonic 3, as well as IDA's inherent inability to handle some of it, I see this as a pretty hefty accomplishment). No scripts were used in the process, as I wanted to make absolutely sure I covered everything myself. Alot of routines and data are identified or at least categorized, and all data areas are formatted as seemed appropriate. There's also an extra segment added to the end to accommodate for Sonic 3 address space, which allows the use of labels in reference to data that only exists in Sonic 3. The space is filled with ds.b directives, so when using the output ASM as-is, all the labels will always point to the proper relative position in Sonic 3 (affixing an existing Sonic 3 ROM to the end of the built Sonic and Knuckles ROM will produce a working Sonic 3 and Knuckles*). The package also has some of the notes I took down for myself all throughout the time I spent working on the disassembly
Here is a ROM built from the above disassembly, with the code and data shifted from their original position (*with the exception of the sound drivers and data for BOTH Sonic and Knuckles and Sonic 3 aligned to their original positions). A clean Sonic 3 ROM is attached directly to the new end of the Sonic and Knuckles ROM. The only problem you should see during playback is the torn "Sonic/Miles" background on the level select, which I just didn't bother to align:
http://www.s2beta.co...th/s3kshift.rar
Note that Sonic 3 (and Knuckles) is NOT ideal for "hacking", as there's alot of specialty code for most of the levels and events, and beginners will probably have a harder time picking up on the way things work in Sonic 3 than the way they work in Sonic 1 and 2. Sonic 3 is best used as a reference or for interest's sake. Also, for developing certain Sonic3-esque features for other games, remember that some of them are easier than they look, and try to use Sonic 3 only as a last resort (Read: I don't want this disassembly to breed laziness :P). In some cases, it will end up easier than trying to "port" it anyway :P
That said, I hope you all enjoy it thoroughly, especially after the effort I put into it. Hopefully it will entertain and inspire throughout the new year


00