GB ROM Aufbau
aus RHWiki, der freien Romhacking-Enzyklopädie
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

