This repository will contain buildable code using GCC-esque tools to compile the executable binaries necessary to run the data of Sonic the Fighters on a Model2b arcade board. It is an accumulation of many years of work to better understand the inner workings of AM2's arcade engine from the early to mid-1990s.
- Tim Ritiau | egregiousguy - For collaboration, direct research, and dedication in their own Model2 journey.
- SteveBlockhead - For originally and accidentally discovering debug mode, which allowed documenting the code much easier.
- Ryou of Sudden Desu - For their constant, independent digital archaeology efforts which led to the discovery of how Debug Mode was truly activated, as well as efforts to improve and implement new inputs in MAME's code.
- Joshua Scoggins | DrItanium - For their in-depth professional knowledge of the 80960 architecture, as well as improving and documenting the original disassembly.
- brouhaha - For being a hardware and software rubber duck debugger with expansive embedded systems knowledge.
- The decompilation/disassembly teams behind Mario 64, Zelda 64, Star Fox 64, Paper Mario 64, Dinosaur Planet, Pokémon GS Spaceworld Protos
- Founders and maintainers of The Cutting Room Floor Wiki
- Sappharad - For kickstarting Sonic the Fighters research by discovering Honey in Sonic Gems Collection two decades ago.
- While the code is almost entirely still in assembly language, the way it is built will mostly remain the same as this repo evolves.
- It's recommended to install CTOOLS 6.0 from this archive.org mirror. For Linux users, CTOOLS should be WINE compatible, but you can try prebuilds of i960-elf-gcc-3.4.6 or i960-coff-gcc-3.4.6. You can also attempt to build your own with instructions to get you started with binutils 2.16 I've provided here.
- Ensure the
bin
folder of your GCC tools is in your path or edit the Makefile to point to the correct directories. (TODO: Create automake file which verifies GCC versions and assigns paths) - Put
schamp.zip
(MD5 4826E870E5652811DE149C2EC89E3A20
) andsfight.zip
(MD5 E801C222C174E45E091E361DE83503F0
) in therom
directory for asset extraction. (Currently used for DSP binaries but will be used for sound, texture, and model extraction sometime in the future) - Further dependencies (
make
,python
,md5sum
) will vary by platform, but I highly recommend Windows users open the repo's folder with VSCode to recognize theMakefile
to ensure the environment will be correct. - In a terminal window (PowerShell is recommended for Windows users), navigate to the repo and run
make
. The Makefile should produce a binary in thebin
folder with presplit ROMs for use in emulators in thesplit
folder.
No assets for the game will be provided in this repository, however, you will be able to extract them all using the various scripts and binaries in this repo.
- Using the
data_extract.py
script you can extract various assets:- Run with
--all
to extract all currently supported asset extractions (they will be listed below) - Run with
--rom
to extract all interleaved ROM data from theschamp
andsfight
archives located in therom
folder. - Run with
--cpres
to extract and process DSP coprocessor executables fromrom_code1.bin
into 80960 compliant.S
preprocessor files. (This will become deprecated when the coprocessors become decompiled)- More to come... (Models, textures, sounds, music samples, music arrangements)
- Run with
This is a work-in-progress project of disassembled code from Sonic the Fighters which will be converted, function by function, to human-readable C/C++ code. One of the project's main goals is create an analysis of a game and all its components. These components will be broken down to code and assets, the logic and building blocks of the game, in a way that can be rebuilt into its original executable form.
This project is not open source. Just like its predecessor, stfdisasm, it is source-available. This code is not licensed, and as such, all rights are reserved. GitHub's terms of service allow users to view and fork the repository within the GitHub site, and this allows for pull requests. The code may become licensed someday, but for now it will remain source-available for research purposes.