OW repointen, Palette ändern und OW vergrößern

Wir sammeln alle Infos der Bonusepisode von Pokémon Karmesin und Purpur für euch!

Zu der Infoseite von „Die Mo-Mo-Manie“
  • Inhaltsverzeichnis:

    • Was ihr braucht
    • Palette eines OWs ändern
    • Größe eines OWs ändern
    • Pointer eines OWs ändern
    • Copyright


    Was ihr braucht

    • Pokémon Overworld Sprite Editor
    • Hexeditor
    • Pokémon GBA ROM
    • Vorkenntnisse im Bezug auf den Hexeditor und dem Hexadezimalsystem


    Palette eines OWs ändern

    • Öffnet die ROM im OW Sprite Editor. (bei mir eine deutsche Feuerrot ROM)
    • Geht nun zum Sprite, den ihr bearbeiten wollt. (bei mir ein Schild: Nummer 106)
    • Jetzt solltet ihr euch nicht von den Bildern oben ablenken lassen, sondern auf den unteren Teil schauen: Dort befinden sich eine Menge Zahlen und Werte.
    • Öffnet nun die Rom im Hexeditor.
    • Nun schreibt ihr den Sprite Pointer aus "Info 1: Sprite Header" byteverkehrt auf. (Es muss hier der Sprite Pointer sein, da dies der einzige Pointer ist, der in der Regel nur ein Mal im Spiel vorkommt. Byteverkehrt bedeutet, dass aus 083A1B4C (dieser Wert war mein Sprite Pointer) 4C1B3A08 wird.
    • Geht nun wieder in den Hexeditor und sucht nach eurem byteverkehrtem Sprite Pointer.
    • Wenn ihr ihn gefunden habt, geht ihr zurück, bis ihr zu zwei FF Bytes kommt (dem Anfang des ersten Sprite Headers). Das Byte nach den beiden FF Bytes ist die Palette. Ihr könnt nun das Byte so verändern, bis ihr die gewünschte Palette habt. (Die Palette muss aber bereits für Sprites definiert worden sein. 0-6 sind unter anderem vordefiniert.)
    • Am Schluss speichert ihr die Veränderung ab.


    Größe eines OWs ändern

    • Geht bis zum Anfang des ersten Sprite Headers.
    • Nun gehen wir die Struktur des Headers durch. (am Beispiel des Schildes: Nummer 106)

      Code
      FF FF 06 11 FF 11 80 00 10 00 10 00


    • Die ersten beiden Bytes (FF FF) sind, wie oben schon gesagt, der Anfang des Sprites, danach kommt gleich die Palette (06). Bei den nächsten drei Bytes muss ich passen, da weiß ich nicht, was diese bewirken ...
    • Jetzt wird es interessant: diese beiden Bytes (80 00) verändern sich bei der Spritegröße:

      • 80 00 wenn der Sprite 16 mal 16 Pixel groß ist
      • 00 01 wenn der Sprite 32 mal 16 oder 16 mal 32 Pixel groß ist
      • 00 02 wenn der Sprite 32 mal 32 Pixel groß ist
      • 00 08 wenn der Sprite 64 mal 64 Pixel groß ist
      • 00 10 wenn der Sprite 128 mal 64 Pixel groß ist


    • Und diese vier Bytes enthalten die genaue Größe (10 00 10 00). Die ersten zwei Bytes enthalten die Breite und die zweiten beiden die Höhe.
    • Schreibt die Größe eures Sprite im Hexadezimalsystem auf, setzt zwei Nullen vorne dran und schreibt sie nun byteverkehrt in die ROM an die entsprechende Stelle (Höhe und Breite)
    • Um nun alles wieder "normal" wirken zu lassen, schreiben wir auch die beiden Bytes vor der Höhe und der Breite mit Hilfe von der Tabelle um.
    • Im Info 2: Sprite Header steht aber immer noch die 2 Bytes, die die alte Größe repräsentieren. Um das zu ändern, geht ihr nun zu dem Punkt im Hexeditor, auf den der Sprite Pointer aus dem Info 1: Sprite Header zeigt. (Das ist der Info 2: Sprite Header.)
    • Nun könnt ihr dort vier Bytes weitergehen, um zu 0800 zu gelangen (wenn ihr auch das Schild aus meinem Beispiel bearbeitet, ansonsten kann es auch eine andere Zahl aus der Tabelle sein) und diese zu ändern.
    • Jetzt noch alles abspeichern und fertig!


    Pointer eines OWs ändern

    • Geht zu dem Info 2: Sprite Header.
    • Sucht euch genügend freien Platz in der ROM.
    • Jetzt ändere ich den Pointer auf die freie Stelle:

      • Am Amfang des Headers befinden sich acht Zahlen und Buchstaben (X ist eine Variable): XX XX XX 08.
      • Ihr schreibt nun über die sechs X (also die sechs Zeichen, die vor der 08 stehen) euer neues Offset byteverkehrt.


    • Nun wieder alles speichern und nun könnt ihr (falls ihr das ganze Tutorial an meinem Beispiel gemacht habt) eine schwarze Fläche bestaunen, die ich sofort einfärben würde, damit man nicht aus Versehen an die selbe Stelle ein anderes Script, Sprite oder was auch immer kommt!
    • Falls ihr jetzt viele bunte Punkte seht oder eine Fehlermeldung erscheint, habt ihr vermutlich entweder den falschen Pointer repointet oder eine falsche Offsetangabe in die ROM geschrieben.
    • Falls ihr den Pointer auf dem Info 2: Sprite Header verändern wollt, sucht ihr nach dem Pointer (natürlich byteverkehrt) und ersetzt ihn durch ein freies Offset (siehe Repoint des OW-Sprites).
    • An das eben eingesetzte Offset schreibt ihr zuerst das Offset des OW-Sprites byteverkehrt, danach 08 die Größenangabe wie bei "Größe eines OWs ändern" beschrieben und viermal Null.
    • Nur noch testen und falls eine Fehlermeldung erscheint, wurde falsch gerepointet oder eine oder mehrere Angaben stimmen nicht. Falls nun ein anderer Sprite kommt, als man haben möchte, wurde der OW-Sprite Pointer falsch eingetragen.


    Copyright
    Das Copyright dieses Tutorials liegt bei mir und darf deshalb nicht ohne meine Erlaubnis kopiert werden. Verlinken ist in Ordnung.


    PS: Bei Fragen könnt ihr mir eine PN schicken!