Overworlds vergößern via Hexeditor

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

Zu der Infoseite von „Die Mo-Mo-Manie“
  • Overworlds vergößern via Hexeditor


    Vorwort:


    Nach langer Zeit schreibe ich mal wieder ein Tutorial. Und zwar ein ganz besonderes.
    Dieses Tutorial handelt, wie der Titel schon sagt, davon, wie man seine OWs mit dem Hexeditor vergrößern kann.
    Eigentlich ist das ganz simpel. Lest euch alles aufmerksam durch ;)


    Was brauchen wir?


    Wir brauchen einige Programme, um voran zu kommen.
    Hexeditor
    OW Editor
    FSF
    Eine Rom


    So, jetzt können wir arbeiten.



    Als erstes öffnen wir den Overworld Editor und gehen zu einem OW, das wir vergrößern wollen.


    [Blockierte Grafik: http://dragonflye.pytalhost.de/RomHacking/Tuts/Overworlds-Verg%C3%B6%C3%9Fern/Tutorial%20Bild%201.PNG]



    Wie ihr sehen könnt ist im Profi Header vieles aufgelistet. Wir brauchen jedoch nur einiges.


    Als nächstes öffnet ihr den Hexeditor und ladet euer Rom.
    Bei mir ist es Feuerrot Deutsch.
    [Blockierte Grafik: http://dragonflye.pytalhost.de/RomHacking/Tuts/Overworlds-Verg%C3%B6%C3%9Fern/Tutorial%20Bild%202.PNG]



    So, wenn ihr das habt, können wir weiter machen.


    Jetzt schauen wir uns den OW-Editor mal genauer an:


    [Blockierte Grafik: http://dragonflye.pytalhost.de/RomHacking/Tuts/Overworlds-Verg%C3%B6%C3%9Fern/Tutorial%20Bild%203.PNG]



    Dieses Offset kopieren wir und geben es im Hexeditor unter "Suchen und Ersetzen" byteverkehrt ein.
    Es ist nämlich die Quelle, die angibt, wo die Frames liegen und wie groß der Sprite ist, welche Pal und was für Daten es hat.



    [Blockierte Grafik: http://dragonflye.pytalhost.de/RomHacking/Tuts/Overworlds-Verg%C3%B6%C3%9Fern/Tutorial%20Bild%204.PNG]


    So, das was ich markiert habe, ist sehr wichtig! Die kleine Liste unten im Spoiler erläutert es euch:



    Also, das 0xFFFF ist der Starter-Word jedes Overworlds (2 Byte ergeben ein Word, 4 Byte wären ein Doubleword bzw. DWord). 06 ist die zugehörige Palette.
    0x0080 ist die Dateigröße des Sprites.


    Das ist jetzt wichtig.


    0080 steht für die Größe 10x10 das ist Sprite Größe 16x16.
    0001 steht für die Größe 10x20 das ist Sprite Größe 16x32.
    0002 steht für die Größe 20x20 das ist sprite Größe 32x32.
    0008 steht für die Größe 40x40 das ist Sprite Größe 64x64.


    0080, 0001, 0002, 0008, steht für die dazugehörige Größe eines Overworlds.
    10x10, 10x20, 20x20, 40x40, steht jeweils für jede Größe. Umgerechnet ist 10x10 = 16x16.
    Warum? Weil wir hier mit Hex-Dezimal arbeiten, das heißt, 0x10 ist ist gleich 16.


    20x20 wäre umgerechnet in Dezimal 32x32.
    Also sollte das geklärt sein.



    So, jetzt kommen wir zu, wofür denn die Daten stehen?
    10x10 ist jetzt die Breite und Höhe.
    Der erste Wert ist immer die Breite der zweite immer die Höhe.
    Also wisst ihr jetzt bescheid.


    Jetzt ändern wir im Hexeditor mal ein paar Daten:


    [Blockierte Grafik: http://dragonflye.pytalhost.de/RomHacking/Tuts/Overworlds-Verg%C3%B6%C3%9Fern/Tutorial%20Bild%205.PNG]


    Wie ihr sehen könnt habe ich die Datei Größe in 0008 und die Höhe und Breite in 40 00 40 geändert. Warum?
    Ganz einfach: In der kleinen Liste steht ja, die OW 64x64 Größe beträgt 40 00 40 (Umrechnung) und die Datei Größe 0008 (ist byteverkehrt).


    Wenn ihr jetzt im Hexeditor abspeichern drückt, sieht es im Overworld-Editor so aus:


    [Blockierte Grafik: http://dragonflye.pytalhost.de/RomHacking/Tuts/Overworlds-Verg%C3%B6%C3%9Fern/Tutorial%20Bild%206.PNG]
    So, wie ihr sehen könnt ist der Platz jetzt größer. Aber wir sind noch lange nicht fertig.


    Wir müssen noch jedes einzelne Frame umpointen.
    Aber davor müssen wir noch andere Änderungen vornehmen, wir brauchen dazu diese beiden Sachen:


    B4353a08 = Unbekannter Pointer 1 (byte verkehrt)
    0C363A08 = Unbekannter Pointer 2 (byte verkehrt)



    Richtig, diese Offset sind sehr sehr wichtig^^


    Diese 2 Offset beinhalten die Dateigröße eines Overworlds, es gibt ungefähr von beidem 4 mal welche.
    Ihr könnt euch sicher denken für was.


    2x für die Größe 16x16; 1x für Breite 1x und Höhe.
    2x für die Größe 16x32; 1x für Breite 1x und Höhe.
    2x für die Größe 32x32 ; 1x für Breite 1x und Höhe.
    2x für die Größe 64x64; 1x für Breite 1x und Höhe.


    In jedem Rom und in jeder Sprache des Roms sind die Offsets verschieden.
    Da ich jetzt den Sprite in 64x64 geändert habe, muss ich irgendwo im Rom einen Overworld mit der Größe 64x64 suchen.
    Und seine 2 Offsets kopieren. Und hier verwenden. Also öffnet nochmal den OW-E mit dem selben Rom und sucht ein Sprite mit der Größe die ihr braucht.
    Bei mir ist es die Größe 64x64:



    [Blockierte Grafik: http://dragonflye.pytalhost.de/RomHacking/Tuts/Overworlds-Verg%C3%B6%C3%9Fern/Tutorial%20Bild%207.PNG]
    Die 2 markierten Offset mit denen Rechts ersetzen, das machen wir im Hexeditor.
    Gebt bloß nicht Suchen & Ersetzen ein, weil es gibt tausende solcher Treffer.


    Ihr müsst in dem Bereich des Overworlds die alten Offset Daten finden.


    [Blockierte Grafik: http://dragonflye.pytalhost.de/RomHacking/Tuts/Overworlds-Verg%C3%B6%C3%9Fern/Tutorial%20Bild%208.PNG]


    Und sie mit den Neuen ersetzen und abspeichern.
    Denkt dran das jedes Offset in jedem Rom anders ist und zu jeder Größe gibt es 2
    B4353a08 = unbekannter Pointer 1 (byte verkehrt)
    0C363A08 = unbekannter Pointer 2 (byte verkehrt)
    Offsets.



    Jetzt wo wir die Quelle bearbeitet haben kommen wir zum Frame.
    Das ist auch ganz leicht zu finden, dafür schauen wir uns den OW-Editor wieder an.


    [Blockierte Grafik: http://dragonflye.pytalhost.de/RomHacking/Tuts/Overworlds-Verg%C3%B6%C3%9Fern/Tutorial%20Bild%209.PNG]


    Das geben wir im Hexeditor auch byteverkehrt ein unter "Suchen & Ersetzen". Dann kommt auch Offset und das müssen wir umpointen in eine freie Stelle.


    [Blockierte Grafik: http://dragonflye.pytalhost.de/RomHacking/Tuts/Overworlds-Verg%C3%B6%C3%9Fern/Tutorial%20Bild%2010.PNG]
    So, jetzt haben wir das Offset jetzt müssen wir es Umpointen.


    Bitte bedenken dass jede Größe eine gewisse Anzahl Bytes zum Umpointen braucht, unten ist eine Liste:



    16x16 braucht 128 Bytes.
    16x32 braucht 256 Bytes.
    32x32 braucht 512 Bytes.
    64x64 braucht 2048 Bytes.


    So würde ich es raten, weil anders überschreibt ihr eventuell Sachen.


    Das was ich oben im Bild schwarz umrandet habe ist wieder die Datei Größe des Frames, die müsst ihr auch ändern und abspeichern.
    Ich habe Glück, dieser OW hat nur ein Frame also muss ich nicht viel machen.


    BITTE dran denken, jedes einzelne Frame muss umgepointet werden und zwar in verschiedene mit diesen Bytes Abständen.



    [Blockierte Grafik: http://dragonflye.pytalhost.de/RomHacking/Tuts/Overworlds-Verg%C3%B6%C3%9Fern/Tutorial%20Bild%2011.PNG]


    Denkt dran das das Offset auch Byteverkehrt geschrieben wird.
    Abspeichern und im OW-E bestaunen:


    [Blockierte Grafik: http://dragonflye.pytalhost.de/RomHacking/Tuts/Overworlds-Verg%C3%B6%C3%9Fern/Tutorial%20Bild%2012.PNG]

    (Rechtschreibfehler *Fläche)
    Jetzt könnt ihr jedes OW einfügen das ihr wollt. Ingame wird es zu 100% klappen, wenn ihr alles richtig gemacht habt.

    Hier der Beweis:


    [Blockierte Grafik: http://dragonflye.pytalhost.de/RomHacking/Tuts/Overworlds-Verg%C3%B6%C3%9Fern/Tutorial%20Bild%2013.PNG]


    Ich möchte anmerken, ihr müsst ganz sauber arbeiten.
    Mir ist gerade ein Fehler unterlaufen. Und zwar habe ich eine Ziffer falsch getippt.
    Selbst das kann dazu führen, dass der OW nicht Ingame erscheint.


    Verlasst euch nicht auf meine Herausgefundenen Daten bei den "Grafiken" findet es selber raus.



    Schlusswort


    Ich hoffe ich konnte alles so gut wie möglich erklären und einigen Helfen.
    Falls ihr Fragen habt, postet hier rein oder schreibt mich via PN an.


    Ich würde mich über Feedback freuen und über Verbesserungsvorschläge ;)


    Noch ein Dankeschön an driver und häfi, für die Rechtschreibfehler berichtigung.^^


    Mit freundlichen Grüßen
    Dragonflye ;)