This script makes it (super?!?) easy to build the assebly of Phantasy Star games for Mega Drive / Genesis. The script is also able to create binary diffs (patches) too. BSDiff and Xdelta for example. So the goal is to be easy in terms of "run-one-command-and-be-done-with-it". The project is very young at the moment. It may eventually cover more games.
The most recent (standalone) version can be found from https://github.com/Zuccace/mdps-asm-builder
Patches and issues should be targeted to the project above.
-
Can create ROM binary images from assembly source files
-
Can create binary diffs (patches) between two binaries
-
Can create checksums from the created binary ROM image
It should be pretty easy once you have all the dependencies installed in your $PATH.
-
busybox shell or other compatible.
-
asl from http://john.ccac.rwth-aachen.de:8000/as/ - dev-lang/asl on Gentoo roslin overlay
-
gcc or clang - for automatic compiling of p2bin
-
Assembly sources of said games: II (most actively tested), III (tested once, works), and IV (tested once, works)
Just make sure build.sh has executable bit, then you can run it.
some/path/to/build.sh <file.asm> <out.bin>
To learn more pass the --help
-switch alone.
Or alternatively see the source. ;)
You can create more different files just by specifying them on command line:
some/path/to/build.sh my.asm my.xdelta my.bin.sha256 my.xdelta.sha256
Note that it’s not neccessary to specify the binary (ROM) on the line.
Just be sure to have correct extension. You always need specify a subextension when creating hashes. Fore example: game.bin.sha256
and game.bsdiff.sha256
are ok, while game.sha256
is not, since the script cannot determine from where to calculate the hash.
You can place the script wherever you want. It should work from anywhere in the filesystem.
-
Won’t magically re-compress parts that need Kosinski compression. It is totally unknown at the moment if the feature will ever be implemented into this project.
-
This script is not coded to support filesnames with weird characters or especially line breaks in them. (Please clean up your filenames with detox. ;) )
-
This build script might work with some other disassemblies too. It’s written that in mind, but not tested yet. Only Phantasy Star games are being tested.
-
Bring back IPS patching.
-
Add LC_ALL="C" at least in front of find and any command that uses regexp to be able to handle non typical charaters in filenames.
-
Clean up the code and publish first release.
-
??? (Suggest more features by creating an issue).