-
-
Notifications
You must be signed in to change notification settings - Fork 19
ROM Expander Pro
Text below is copied from application ROM Expander Pro
Here's a sample file that shows all that can be done.
Original ROM with NES header is shown in YELLOW.
Expanded (shrunk!) ROM with NES header is shown in WHITE.
Of course, this is NOT the real file, just an example for illustrative
purposes:
NAME Portopia Renzoku Satsujin Jiken.nes Portopia Serial Murder Case.nes
SIZE A000 A0 24F1D824A2E187603A22AF0C4612EE5F
HEADER 10 4E 45 53 1A 4 1 40 40
COPY 0 20
REPLACE 20 11 22 33
REPLACE 30 44 55 66
FILL 40 FF
COPY 50 60
FILL 80 F0
REPLACE 90 77 88 99
- All entries are tab dilineated.
- All numbers are in hex, optionally padded with zeros.
- All addresses refer to locations in an original or expanded ROM WITHOUT A HEADER even if you want the expanded ROM to have a header.
- Row names are required but are case insensitive.
- The file can be a DOS, Mac, or Unix text file. {As of rev 12.8.12}
Note that most real expansion files will be much simpler.
For example, this is the real Portopia file:
NAME Portopia Renzoku Satsujin Jiken.nes Portopia Serial Murder Case.nes
SIZE A000 12000 24F1D824A2E187603A22AF0C4612EE5F
HEADER 10 4E 45 53 1A 4 1 40 40
COPY 0 0
COPY 4000 0
COPY 8000 0
NAME
{original ROM name}
{Expanded ROM name}
SIZE
{original ROM size in bytes WITHOUT header}
{expanded ROM size in bytes WITHOUT header}
optional: {MD5 checksum of original ROM (ignoring the header bytes)}
Notes on the MD5 checksum feature:
If the MD5 is not listed, the program simply ignores this.
If the MD5 is doesn't match, it let's the user know this, but it still expands
the ROM.
To compute the MD5 of your game, simply run the program with any string in the MD5 location. You will get an error, telling you that your MD5 is wrong, but it will list the MD5 it calculated in a box below the status box. Now, simply copy this string and paste it in over the string you used in the MD5 location.
You might not want to use this feature for FDS games that use save files since the MD5 will be wrong for their file if their save file doesn't match yours.
HEADER
{size of header in bytes}
{1st byte of header}
{2nd byte of header}
...
{nth byte of header}
Non-defined header bytes will all be 00s.
ROM Expander Pro automatically detects whether or not the original ROM file has a header, but you need to define the size of header for it to do this!
Even if you don't want the expanded ROM to have a header, you must define the length of the standard header for your game if you want someone with a headered ROM to be able to use the expansion program.
Some header size standards:
NES 10 : Required for both emulators and copiers
FDS 10 : Optional for emulator and not allowed for copiers
SNES 100 : Optional for copiers and emulators
If your original ROM file is designed for a system where no standard header is
used and thus would never have a header and, of course, your expanded ROM will
not have one either, you can use the following line:
HEADER 0
If a user tries to add a header, he will get an error box telling him that it
is not possible.
COPY
{starting address to copy data to in expanded ROM}
{starting address to copy data from in original ROM}
or
FILL
{starting address to fill with bytes in expanded ROM}
{byte value to fill area with (typically 00 or FF}}
ROM Expander Pro will continue to FILL or COPY data until the next FILL or COPY line OR the end of the expanded ROM is reached, as defined on the SIZE line.
COPY
or
FILL
or
REPLACE
{starting address to replace bytes in expanded ROM}
{list of bytes to put at that address}
REPLACE simply replaces bytes that would normally be copied or filled. After the byte list ends, it goes back to copying or filling the bytes that it was doing before.
This is very useful for things like FDS expansion where bytes need to be modified to change the size of the file or number of files.
Of course, all byte replacement, even in the header, can be done by the IPS patch, but doing it here allows you to test that the expanded ROM still runs before applying the IPS patch.