GB ROM Aufbau

aus RHWiki, der freien Romhacking-Enzyklopädie

(Weitergeleitet von GB Rom Aufbau)

In einem Gameboy-Rom sind von 0x0000-0x00FF Sprungvektoren definiert. Von 0x0100-0x014F erstreckt sich der Romheader und anschließend folgt der Hauptteil des Roms mit Code und Daten.

Ein Gameboy-Rom ist in Rombänke mit einer Größe von je 16KB, das sind 0x4000 Bytes, aufgeteilt. Weiteres dazu hier.

Inhaltsverzeichnis

Sprungvektoren

Bestimmte Adressen im Rom sind als Zieladressen für RST-Calls oder Interrupt-Events definiert:

RST-Zieladressen: (hex)
0000, 0008, 0010, 0018, 0020, 0028, 0030, 0038

Interrupt-Vektoren: (hex)
0040 (VBlank), 0048 (LCDC), 0050 (Timer), 0058 (Serial Transfer), 0060 (Keypad)

Diese Adressen müssen nur Code enthalten, falls die entsprechenden RST-Anweisungen/ Interrupts im Spiel verwendet werden. Ansonsten können sie auch für jeden beliebigen anderen Zweck genutzt werden.

Romheader

Der Romheader gibt den Titel und Hersteller des Roms an, bestimmt die Größe des Roms und mit Hilfe der Checksumme wird sichergestellt, dass das Rom gültig ist und/oder keinen Fehler hat.

0100-0103 = 4 Bytes Asm-Code der zum Spielstart ausgeführt wird (Entry Point)
0104-0133 = 0x30 Bytes Ninendo-Logo
0134-013E = Spiel Titel (11 Zeichen, ASCII)
013F-0142 = Hersteller Code (4 Zeichen, ASCII; kann in älteren Spielen auch Teil des Titels sein)
0143      = GBC-Flag (0x80 = GB & GBC / 0xC0 = nur GBC; in älteren Spielen Teil des Titels)
0144-0145 = Neuer Lizenzhaber-Code (ältere Spiele verwenden stattdessen Byte 014B), siehe unten
0146      = SGB-Flag (00 = Kein SGB / 03 = SGB-Funktionen werden unterstützt)
0147      = Rom-Typ, definiert MBC und Zusatzfeatures, siehe unten
0148      = Romgröße (= 32kB*2^N)
0149      = RAM-Größe (00 = Kein, 01 = 2kB, 02 = 8kB, 03 = 32kB, 04 = 128kB)
014A      = Bestimmungsland-Code (00 = Japan, 01 = Außerhalb von Japan)
014B      = Alter Lizenzhaber-Code
014C      = Rom-Version (meistens 00)
014D      = Header-Checksumme (aufaddieren der Headerbytes)
014E-014F = Rom-Checksumme (wird vom GB nicht überprüft)

Nintendo-Logo

Das Nintendo-Logo muss mit folgenden Bytes übereinstimmen, sonst spielt der Gameboy das Spiel nicht ab:

CE ED 66 66 CC 0D 00 0B 03 73 00 83 00 0C 00 0D
00 08 11 1F 88 89 00 0E DC CC 6E E6 DD DD D9 99
BB BB 67 63 6E 0E EC CC DD DC 99 9F BB B9 33 3E

Lizenshaber-Codes

Neue Lizenzhaber-Codes: Besteht aus 2 Bytes, von denen jeweils bloß die unteren 4 Bits des Bytes zählen und zu einem neuen Code zusammengesetzt werden. Die oberen 4 Bits sind immer 0x3. Beispiel für Codes: 3132=12, 3332=32 etc. Die folgende Liste bezieht sich auf umgerechnete Codes.

00- Kein Code 01- Nintendo (http://www.nintendo.de) 08- Capcom (http://www.capcom-europe.com)
13- Electronic Arts (http://www.electronic-arts.de) 18- Hudsonsoft (http://www.hudsonsoft.net/) 19- b-ai
20- KSS (http://www.kss-inc.co.jp/) 22- pow 24- pcm complete
25- san-x 28- Kemco Japan (http://www.kemco-net.co.jp/) 29- Seta Corporation (http://www.seta.co.jp/)
30- Viacom New Media (http://www.viacom.com) 31- Nintendo (http://www.nintendo.de) 32- Bandai (http://www.bandai.com/)
33- Ocean/Acclaim (http://www.acclaim.com/) 34- Konami (http://www.konami.com/) 35- hector
37- Taito (http://www.taito.co.jp/) 38- hudson (http://www.hudson.co.jp) 39- Banpresto (http://www.banpresto.co.jp/)
41- Ubi Soft (http://www.ubi.com) 42- Atlus (http://www.atlus.com/) 44- Malibu
46- Angel 47- pullet-proof 49- Irem (http://www.irem.co.jp/)
50- absolute 51- Acclaim (http://www.acclaim.com/) 52- Activision (http://www.activision.com/)
53- American Sammy (http://www.sammyusa.com/) 54- Konami (http://www.konami.com) 55- hi tech entertainment
56- ljn 57- Matchbox (http://www.matchbox.com) 58- Mattel (http://www.mattel.com)
59- Milton Bradley (http://www.mb-spiele.de/) 60- Titus (http://www.titusgames.com/) 61- Virgin
64- Lucasarts (http://www.lucasarts.com/) 67- Ocean (http://www.infogrames.com) 69- Electronic Arts (http://www.electronic-arts.de)
70- Infogrames (http://www.infogrames.com/) 71- Interplay (http://www.interplay.com/) 72- Broderbund (http://www.broderbund.com/)
73- Sculptured Software 75- Sci (http://www.sci.co.uk) 78- THQ (http://thq.com/)
79- accolade (http://www.accolade.com) 80- Misawa Entertainment 83- lozc
86- Tokuma Shoten Inc (http://www.tokuma.com/) 87- Tsukuda Original (http://www.baindai.com) 91- Chunsoft (http://www.chunsoft.co.jp/)
92- Video System (http://www.dreamsquare.co.jp/) 93- Ocean/Acclaim (http://www.acclaim.com/) 95- Varie
96- yonezawa/s'pal 97- Kaneko Co. Ltd. 99- Pack-in-Soft

Memory Bank Controller (MBC) und Zusatzfeatures

Der Romtyp definiert den verwendeten MBC, der u.a. darüber bestimmt wieviele Rombänke adressiert werden können und noch einige Zusatzfunktionen liefern kann.

00h  ROM ONLY                 13h  MBC3+RAM+BATTERY
01h  MBC1                     15h  MBC4
02h  MBC1+RAM                 16h  MBC4+RAM
03h  MBC1+RAM+BATTERY         17h  MBC4+RAM+BATTERY
05h  MBC2                     19h  MBC5
06h  MBC2+BATTERY             1Ah  MBC5+RAM
08h  ROM+RAM                  1Bh  MBC5+RAM+BATTERY
09h  ROM+RAM+BATTERY          1Ch  MBC5+RUMBLE
0Bh  MMM01                    1Dh  MBC5+RUMBLE+RAM
0Ch  MMM01+RAM                1Eh  MBC5+RUMBLE+RAM+BATTERY
0Dh  MMM01+RAM+BATTERY        22h  MBC7+BATTERY
0Fh  MBC3+TIMER+BATTERY       FCh  POCKET CAMERA
10h  MBC3+TIMER+RAM+BATTERY   FDh  BANDAI TAMA5
11h  MBC3                     FEh  HuC3
12h  MBC3+RAM                 FFh  HuC1+RAM+BATTERY


Siehe auch

'Persönliche Werkzeuge