mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-23 11:32:07 +00:00
This supports the names listed in Pan Docs: https://gbdev.io/pandocs/#_0147-cartridge-type Spaces may be replaced with underscores. It also supports "ROM" for "ROM ONLY".
178 lines
5.0 KiB
Groff
178 lines
5.0 KiB
Groff
.\"
|
|
.\" This file is part of RGBDS.
|
|
.\"
|
|
.\" Copyright (c) 2010-2017, Anthony J. Bentley and RGBDS contributors.
|
|
.\"
|
|
.\" SPDX-License-Identifier: MIT
|
|
.\"
|
|
.Dd December 5, 2019
|
|
.Dt RGBFIX 1
|
|
.Os
|
|
.Sh NAME
|
|
.Nm rgbfix
|
|
.Nd Game Boy header utility and checksum fixer
|
|
.Sh SYNOPSIS
|
|
.Nm
|
|
.Op Fl jsVv
|
|
.Op Fl C | c
|
|
.Op Fl f Ar fix_spec
|
|
.Op Fl i Ar game_id
|
|
.Op Fl k Ar licensee_str
|
|
.Op Fl l Ar licensee_id
|
|
.Op Fl m Ar mbc_type
|
|
.Op Fl n Ar rom_version
|
|
.Op Fl p Ar pad_value
|
|
.Op Fl r Ar ram_size
|
|
.Op Fl t Ar title_str
|
|
.Ar file
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Nm
|
|
program changes headers of Game Boy ROM images.
|
|
It also performs other correctness operations, such as padding.
|
|
.Pp
|
|
Note that options can be abbreviated as long as the abbreviation is unambiguous:
|
|
.Fl Fl verb
|
|
is
|
|
.Fl Fl verbose ,
|
|
but
|
|
.Fl Fl ver
|
|
is invalid because it could also be
|
|
.Fl Fl version .
|
|
The arguments are as follows:
|
|
.Bl -tag -width Ds
|
|
.It Fl C , Fl Fl color-only
|
|
Set the Game Boy Color\(enonly flag:
|
|
.Ad 0x143
|
|
= 0xC0.
|
|
If both this and the
|
|
.Fl c
|
|
flag are set, this takes precedence.
|
|
.It Fl c , Fl Fl color-compatible
|
|
Set the Game Boy Color\(encompatible flag:
|
|
.Ad 0x143
|
|
= 0x80.
|
|
If both this and the
|
|
.Fl C
|
|
flag are set,
|
|
.Fl C
|
|
takes precedence.
|
|
.It Fl f Ar fix_spec , Fl Fl fix-spec Ar fix_spec
|
|
Fix certain header values that the Game Boy checks for correctness.
|
|
Alternatively, intentionally trash these values by writing their binary inverse instead.
|
|
.Ar fix_spec
|
|
is a string containing any combination of the following characters:
|
|
.Pp
|
|
.Bl -tag -compact -width xx
|
|
.It Cm l
|
|
Fix the Nintendo logo
|
|
.Pq Ad 0x104 Ns \(en Ns Ad 0x133 .
|
|
.It Cm L
|
|
Trash the Nintendo logo.
|
|
.It Cm h
|
|
Fix the header checksum
|
|
.Pq Ad 0x14D .
|
|
.It Cm H
|
|
Trash the header checksum.
|
|
.It Cm g
|
|
Fix the global checksum
|
|
.Pq Ad 0x14E Ns \(en Ns Ad 0x14F .
|
|
.It Cm G
|
|
Trash the global checksum.
|
|
.El
|
|
.It Fl i Ar game_id , Fl Fl game-id Ar game_id
|
|
Set the game ID string
|
|
.Pq Ad 0x13F Ns \(en Ns Ad 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.
|
|
.It Fl j , Fl Fl non-japanese
|
|
Set the non-Japanese region flag:
|
|
.Ad 0x14A
|
|
= 1.
|
|
.It Fl k Ar licensee_str , Fl Fl new-licensee Ar licensee_str
|
|
Set the new licensee string
|
|
.Pq Ad 0x144 Ns \(en Ns Ad 0x145
|
|
to a given string, truncated to at most two characters.
|
|
.It Fl l Ar licensee_id , Fl Fl old-licensee Ar licensee_id
|
|
Set the old licensee code,
|
|
.Ad 0x14B ,
|
|
to a given value from 0 to 0xFF.
|
|
This value is deprecated and should be set to 0x33 in all new software.
|
|
.It Fl m Ar mbc_type , Fl Fl mbc-type Ar mbc_type
|
|
Set the MBC type,
|
|
.Ad 0x147 ,
|
|
to a given value from 0 to 0xFF.
|
|
This value may also be an MBC name from the Pan Docs.
|
|
.It Fl n Ar rom_version , Fl Fl rom-version Ar rom_version
|
|
Set the ROM version,
|
|
.Ad 0x14C ,
|
|
to a given value from 0 to 0xFF.
|
|
.It Fl p Ar pad_value , Fl Fl pad-value Ar pad_value
|
|
Pad the image to a valid size with a given pad value from 0 to 0xFF.
|
|
.Nm
|
|
will automatically pick a size from 32 KiB, 64 KiB, 128 KiB, ..., 8192 KiB.
|
|
The cartridge size byte
|
|
.Pq Ad 0x148
|
|
will be changed to reflect this new size.
|
|
.It Fl r Ar ram_size , Fl Fl ram-size Ar ram_size
|
|
Set the RAM size,
|
|
.Ad 0x149 ,
|
|
to a given value from 0 to 0xFF.
|
|
.It Fl s , Fl Fl sgb-compatible
|
|
Set the SGB flag:
|
|
.Ad 0x146
|
|
= 3. This flag will be ignored by the SGB unless the old licensee code is 0x33!
|
|
.It Fl t Ar title , Fl Fl title Ar title
|
|
Set the title string
|
|
.Pq Ad 0x134 Ns \(en Ns Ad 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
|
|
.Po Fl c
|
|
or
|
|
.Fl C
|
|
.Pc .
|
|
If both this and the game ID are set, the game ID will overwrite the overlapping portion of the title.
|
|
.It Fl V , Fl Fl version
|
|
Print the version of the program and exit.
|
|
.It Fl v , Fl Fl validate
|
|
Equivalent to
|
|
.Fl f Cm lhg .
|
|
.El
|
|
.Sh EXAMPLES
|
|
Most values in the ROM header are only cosmetic.
|
|
The bare minimum requirements for a workable program are the header checksum, 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
|
|
.Pq Do valid Dc meaning a power of 2, times 32 KiB .
|
|
.Pp
|
|
The following will make a plain, non-color Game Boy game without checking for
|
|
a valid size:
|
|
.Pp
|
|
.D1 $ rgbfix -v foo.gb
|
|
.Pp
|
|
The following will make a SGB-enabled, color-enabled game with a title of
|
|
.Dq foobar ,
|
|
and pad it to a valid size.
|
|
.Po
|
|
The Game Boy itself does not use the title, but some emulators or ROM managers do.
|
|
.Pc
|
|
.Pp
|
|
.D1 $ rgbfix -vcs -l 0x33 -p 255 -t foobar baz.gb
|
|
.Pp
|
|
The following will duplicate the header (sans global checksum) of the game
|
|
.Dq Survival Kids :
|
|
.Pp
|
|
.D1 $ rgbfix -cjsv -k A4 -l 0x33 -m 0x1B -p 0xFF -r 3 -t SURVIVALKIDAVKE \
|
|
SurvivalKids.gbc
|
|
.Sh BUGS
|
|
Please report bugs on
|
|
.Lk https://github.com/gbdev/rgbds/issues GitHub .
|
|
.Sh SEE ALSO
|
|
.Xr rgbasm 1 ,
|
|
.Xr rgblink 1 ,
|
|
.Xr rgbds 7
|
|
.Sh HISTORY
|
|
.Nm
|
|
was originally released by Carsten S\(/orensen 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
|
|
.Lk https://github.com/gbdev/rgbds .
|