rgbfix —
Game
Boy checksum fixer
rgbfix |
[-CcjsVv]
[-f
fix_spec]
[-i
game_id]
[-k
licensee_str]
[-l
licensee_id]
[-m
mbc_type]
[-n
rom_version]
[-p
pad_value]
[-r
ram_size]
[-t
title_str]
file |
The
rgbfix program changes headers of Game Boy ROM
images. It also performs other filetype operations, such as truncation. The
arguments are as follows:
-
-
- -C
- Set the Game Boy Color–only flag:
0x143 = 0xC0. If both this and the
-c flag are set, this takes precedence.
-
-
- -c
- Set the Game Boy Color–compatible flag:
0x143 = 0x80. If both this and the
-C flag are set,
-C takes precedence.
-
-
- -f
fix_spec
- Fix certain header values that the Game Boy checks for
correctness. Alternatively, intentionally trash these values by writing
their binary inverse instead. fix_spec is
a string containing any combination of the following characters:
- l
- Fix the Nintendo logo
(0x104–0x133).
- L
- Trash the Nintendo logo.
- h
- Fix the header checksum (0x14D).
- H
- Trash the header checksum.
- g
- Fix the global checksum
(0x14E–0x14F).
- G
- Trash the global checksum.
-
-
- -i
game_id
- Set the game ID string
(0x13F–0x142) to a given string
of exactly 4 characters. If both this and the title are set, the game ID
will overwrite the overlapping portion of the title.
-
-
- -j
- Set the non-Japanese region flag: 0x14A =
1.
-
-
- -k
licensee_str
- Set the new licensee string
(0x144–0x145) to a given
string, truncated to at most two characters.
-
-
- -l
licensee_id
- Set the old licensee code, 0x14B, to a
given value from 0 to 0xFF. This value is deprecated and should be set to
0x33 in all new software.
-
-
- -m
mbc_type
- Set the MBC type, 0x147, to a given value
from 0 to 0xFF.
-
-
- -n
rom_version
- Set the ROM version, 0x14C, to a given
value from 0 to 0xFF.
-
-
- -p
pad_value
- Pad the image to a valid size with a given pad value from 0
to 0xFF. rgbfix will automatically pick a
size from 32KiB, 64KiB, 128KiB, ..., 8192KiB and give a warning
thereafter. The cartridge size byte (0x148) will be
changed to reflect this new size.
-
-
- -r
ram_size
- Set the RAM size, 0x149, to a given value
from 0 to 0xFF.
-
-
- -s
- Set the SGB flag: 0x146 = 3.
-
-
- -t
title
- Set the title string
(0x134–0x143) to a given
string, truncated to at most 16 characters. It is recommended to use 15
characters instead, to avoid clashing with the CGB flag
(-c or -C). If
both this and the game ID are set, the game ID will overwrite the
overlapping portion of the title.
-
-
- -V
- Print the version of the program and exit.
-
-
- -v
- Equivalent to -f
lhg.
Most values in the ROM header are only cosmetic. The bare minimum requirements
for a workable image are checksums, the Nintendo logo, and (if needed) the
CGB/SGB flags. It is a good idea to pad the image to a valid size as well
(“valid” meaning a multiple of 32KiB).
The following will make a plain, no-color Game Boy game without checking for a
valid size:
$ rgbfix -v foo.gb
The following will make a SGB-enabled, color-enabled game with a title of
“foobar”, and pad it to a multiple of 32KiB. (The Game Boy
itself does not use the title, but some emulators or ROM managers might.)
$ rgbfix -vcs -l 0x33 -p 0 -t foobar baz.gb
The following will duplicate the header (sans global checksum) of the game
“Survival Kids”:
$ rgbfix -cjsv -k A4 -l 0x33 -m 0x1B -p 0xFF -r 3 -t
SURVIVALKIDAVKE SurvivalKids.gbc
rgbasm(1),
rgblink(1),
rgbds(7)
rgbfix was originally released by Carsten
Sørensen as a standalone program called gbfix, and was later packaged
in RGBDS by Justin Lloyd. It is now maintained by a number of contributors at
https://github.com/rednex/rgbds.