[back]
Street Fighter 2 development toolchain (Capcom CPS1 arcade ROM hacking)

I have created this tool chain to automatically go from patch source code (in Motorola 68000 assembly language) to a patched Street Fighter 2 Champion Edition ROM set, which could be run immediately in an emulator. The tool chain consists of the LEA assembler (for 68000), as well as a number of small tools I wrote.

It also includes scripts which will start either of the two included emulators (MAME or WinKawaks) - either to run the original SF2CE ROM, or the modified one.

Since all CPS1 games run on a 68000 system, the tool chain can be easily modified to patch any CPS1 game.

Downloads

Street Fighter 2 CE development toolchain (tested in Windows 10) - download and extract anywhere; then run any of the .bat scripts to start an emulator loading the SF2CE rom (original or modified). Then look inside patch_dev to learn how to write your own patch in assembly language

Take a look at patch_dev\make.bat to learn how to develop your own patch. The tool chain comes with a simple, example patch of changing some of the text at game startup to something like "Hello!". Text changes like these can be done by first finding text strings by using a hex editor such as Hxd (in patch_dev\bin\), and then writing the patch source code to replace that string at its starting offset.

Obviously, for more advanced patches - such as changing or adding functionality - a more significant reverse engineering effort is required.

This is how Street Fighter 2 Champion Edition starts up after the example patch has been applied:


The text patch that accomplishes this is:


; this address was obtained by inspecting rom 23 (byteswapped), visually
; searching for English text
org $11DC0 ; decimal 73152

dc.w $0F48 ; attribute byte
; "H"
dc.w $454C ; "EL"
dc.w $4C4F ; "LO"
dc.w $2100 ; "!" terminated