The disassembled source code to Toejam and Earl on the Sega Megadrive, my favourite game on my favourite console.
Warning! - I'm constantly working on this game so some info may not be perfectly accurate, it is constantly being refined!
This project has its own public BitBucket repository where you can view (and download) the latest copy of the source code and see up to the minute comments and updates.
The project continues to go from strength to strength.
Cutscenes, menus, player controls, level seed generation and more are amongst the areas that have been the focus of the disassembly process recently and the process itself has underwent another round of scrutiny and refinement.
Easy68K is no longer the assembler of choice for the project, having been replaced with VASM, a commandline based assembler. By moving away from Easy68K and it's GUI only assembler the project can now be completely managed from within Visual Studio Code, including keyboard shortcuts to rebuild the ROM and launch it automatically in your favourite debugging emulator. It may not seem a lot but this saves a huge amount of time while working out what the code is doing as it runs.
If you are interested in knowing more about VASM and 68K in general (and a wealth of other processors from the SEGA / Nintendo 8bit and 16bit generations) then I highly recommend ChibiAkumas videos over on YouTube and his accompanying website.
Updates to this site are far and between, and that isn't because things aren't happening, quite the opposite! Things are happening so fast that updating this site is becoming the slowest part of the process! So to stay up to date with the latest and greatest updates keep checking the BitBucket repository, the Wiki, and the Issue Tracker (which I'm using as a task list).
Of course I've still got my dedicated topic over at RHDN that gives a play by play blow on the development so far and can also be used for comments, questions and suggestions.
The high level next steps are still the same they were previously, in roughly this order:
- Presents related data (how do Rocket Skates work, what sets how long tomatoes last, etc).
- Random map generation routine.
- Enemy related data (A.I., sprites, attributes like health, speed, damage, etc)
- Player (Toejam and Earl) related data (Health, speed, sprites, etc)
- Everything else...
If there is anything you have a particular interest in let me know on the RHDN topic and I'll see what I can find.
Back in October 2015 I was contacted by a fellow Toejam and Earl fan going by the name of Juan Perez. Juan had created what he believed to be a disassembly of Toejam and Earl by running the original ROM file through a program called Disasm.exe (which I believe is part of Sega-asm.zip). The disassembly, having been ran over the entire ROM file, was pretty messy containing a lot of nonsense code as a result of disassembling data (images, music, sound effects, etc) as if it were code, however, it was enough to peak my interest as a fun, interesting, long-term project.
Since then I've been working to turn this disassembly into a fully assemblable, editable and commented source code.
The following people and pages have been of great help during the completion of this project. Huge thanks to them and their respective authors (listed in order of discovery):
- Marc at DarkDust.net - Great info on ROM headers and initialising the Sega Megadrive.
- Big Evil Corporation - Very accessible info on ROM headers, initialising and programming the Sega Megadrive.
- MarkeyJester’s Motorola 68K Tutorial - Really good guide to the 68K processor.
- Hivebrain's Sonic 1 Disassembly at SonicRetro - A clear and well commented disassembly of Sonic 1.
- HoodyTwoShoes, MyTwoDogs, Slab, DanVincent - very talented Toejam and Earl speedrunners and (in Slab's case) ROM hacker.