If you're interested, I've still got the data that I ripped from the x1 version. As I recall it's pretty much the same as the pc88 version. It consists of a couple of tools to extract level data and a set of images generated from that data.
EditI've been thinking about how to make the build process less convoluted. As it currently stands, it's quite the process to get it all working. The dependancies for a fully automated build are pretty involved. They are, at the moment:
- make
- cc65
- uips
- python
- various file utils
Of those, I think I can eliminate several of them.
Make is only required to automate the build. I have complete instructions in the source code package as to how to build it manually. However, given the complexity of the build proccess, it'd be a pain to pull off by hand. A less sophisticated automatic build could probably be made using a batch file or two and I'll look into setting that up.
CC65 is required as it's assembler is the one I used. It may not be strictly required, but to build a NES game from source, you need some assembler, so you might as well get the one I used. It's cross-platform and readily availible, so I'm not worried about this requirement.
UIPS is used by the build proccess to apply frantik's patches to get the ROMs to extract the level data out of. It's also used to patch the CHR image extracted from SMB. Any IPS patcher could be used, but UIPS has the handy convience of being command line based, so it can be used from a script. As any ROM hacker should have a patch utility, this isn't really a concern.
Python is required to run the level extracting utility. Recently I've been experimenting with PyInstall, which can make standalone applications out of Python scripts. It seems to work pretty well, so I should be able to release a Win32 version of the level extractor. Most Linux distros and OS X ship with Python pre-installed, so that should cover all the major platforms.
The level extractor isn't strictly required if you have the files it produces. However, without it, there's no easy way to edit the levels, so the source would be of pretty limited utility. Honestly, I wish there was a SMB level editor that was flexible enough to handle a ROM that been expanded like this. Then I wouldn't have to worry about is so much. I could just ship the binary blob and say, use editor such-and-such. Are there any SMB level editors with source availible?
The file utilities are the tricky bit. Generic stuff like copy and delete are easy enough, but the real stickler is dd. dd can do a lot of things, but it's basic function is to copy bytes from one file to another. It can start take offsets for the source and desination files and copies the specified number of bytes. Currently, I'm using it to extract a bunch of data from roms produced by frantik's patches. I'm sure there are similar tools availble, but unless I can script them from a batch file, that means the user has to extract the data by hand and that's tedious and error prone. (Plus it's just replacing one requirement with another.)
I'm currently extracting the demo, title screen, and scenery from the patched ROM. I could ship all of those as binary blobs, but then they become difficult to edit. I also use it to extract the CHR ROM from SMB (which then needs to be patched). I suppose I could ship the CHR too, but I don't know if that's wise. Any opinions?
I'm thinking of doing the following. In the Win32 package, I'll provide all the extracted data. The builder will be required to provide the patched version of the CHR (the patch is included). Then they'll be able to build it just by running a simple batch file. I'll include the standalone version of the level extractor. That should allow for editing the levels. If they want to edit anything else, they'll have to edit the binaries directly, or use whatever means they have to extract the data from the ROM they edit. That should bring the requirements down to cc65 and an IPS patcher. Any comments?