SML2-Mapheader
aus RHWiki, der freien Romhacking-Enzyklopädie
| Inhaltsverzeichnis |
Offset
Mapnummer1 = [A269h]
Mapnummer1 * 2 + 55CBh = Offset des Pointers zum Mapheader
Die Mapheader befinden sich alle in Mapbank 01. Der gesamte Mapheader wird nach A800h (im RAM) kopiert.
Struktur
A800h = Y-Startposition (niedriges Byte) A801h = Y-Startposition (höheres Byte) A802h = X-Startposition (niedriges Byte) A803h = X-Startposition (höheres Byte) A804h = Startbildmittelpunkt Y-Achse (niedriges Byte) A805h = Startbildmittelpunkt Y-Achse (höheres Byte) A806h = Startbildmittelpunkt X-Achse (niedriges Byte) A807h = Startbildmittelpunkt X-Achse (höheres Byte) A808h = A809h = A80Ah = A80Bh = unteres Byte des Blockpointers A80Ch = oberes Byte des Blockpointers A80Dh = Mapbank A80Eh = Musik A80Fh = Hintergrundpalette A810h = Vordergrundpalette 0 A811h = Vordergrundpalette 1 A812h = Mapnummer2 A813h = Zeit
Bedeutung der einzelnen Elemente
Y-Startposition und X-Startposition
Y-Startposition und X-Startposition geben Mario's Startposition in Pixeln relativ zur linken, oberen Ecke des Levels an.
Startbildmittelpunkt Y-Achse und Startbildmittelpunkt X-Achse
Startbildmittelpunkt Y-Achse und Startbildmittelpunkt X-Achse geben den Mittelpunkt des Sichtfenstern in Pixeln relativ zur linken, oberen Ecke des Levels an. Um den linken Rand zu errechnen, muss man von der Startbildmittelpunkt X-Achse 50h subtrahieren. Um den oberen Rand zu errechnen, muss man von der Startbildmittelpunkt Y-Achse 48h subtrahieren.
Blockpointer
Der Blockpointer zeigt auf die Blockdaten des Levels. Alle Blockdaten befinden sich in Bank 08.
Mapbank
Mapbank gibt die Bank an, in der die eigentliche Map und noch ein paar andere Daten liegen.
Musik
Das Musik-Byte gibt an, welche Musik im Level gespielt wird.
Hintergrundpalette
Dieses Byte gbit die Palette für alle Hintergrundgrafiken an. Diese ist normalerweise E4.
Vordergrundpaletten
Die Vordergrundpaletten geben die Palette für die Sprites an.
Mapnummer2
Mapnummer2 gibt die Mapnummer innerhalb der Mapbank an. Dies ist notwendig, da in einer Mapbank mehr als eine Map liegen kann.
Zeit
Die Zeit gibt die Zeit für das Level in Sekunden dividiert durch 100 an. Dieses Byte kann Werte zwischen 1 und 9 annehmen.
Byte / 0x64 = Zeit in Sekunden
Mapheader | Maps | Levelgrafiken | Gegner | Overworld | Bereiche | Titelscreen | Auswahl des Savestates | Musik | Credits | Saves | Engine | Warps

