Beiträge von Dragonflye

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

Zu der Infoseite von „Die Mo-Mo-Manie“

    Ich stelle den Link hier sobald wieder rein, sobald die ersten Lets Player durch sind, dann kann ich sehen, ob das meiste behoben wurde und so.^^
    Ich werde es dann weider hier reinstellen. Solange vom andern Forum runterladen, ich braucht euch nichtmal zu regestrieren.^^


    PS: Ich suche einen Komponisten, der gerne Musik für RPG spiele erstellt, unser Musik Hacker kann sie ledeglich perfekt einfügen, selber Kompsizieren (haut mich wenne s falsch geschrieben ist), kann er nicht und ich auch nicht. Wäre echt glücklich wenn sich einer via PN bei mir melden würde.^^

    Auf RHR ist es schon gepostet worden, aber ich mache es hier auch mal.

    Wir haben schon einen Musik hacker, nein, danke.^^


    Ich werde vllt. im Laufe der Tage mal KB3 ansprechen und ihm sagen, dass er den Mache der Lieder in die Creditsliste setzt.
    Ach ja, die neue Musik ist in der Beta2 vorhanden und nicht in Beta1 soweit ich weiß.


    Danke für die ganzen Feedbacks ;)


    MfG
    euer Pokémon SotS Team - Dragonflye

    Levelscript via XSE


    Vorwort
    Ein Levelscript ist ein Script, der direkt nach einem Map betritt los geht.
    So ein Levelscript ist eigentlich ganz einfach, es sei den man weiß wie es geht.


    Dieses Tutorial ist aber für fortgeschrittene Hacker, also Anfänger HÄNDE WEG!
    Fangen wir an, let's go!



    Was brauchen wir?

    • Advance Map
    • Extreme Script Creator
    • Eine Rom (SM/SA/RU/FR/BG)


    Und eine Gute Anleitung:
    Zu erst öffnen wir den Advance Map und dann öffnen wir unseren Rom!
    Ich habe einen Feuerrot Deutsch Rom genommen, ihr könnt jedes andere nehmen, die Methode bleibt gleich!


    Methode 1: Normaler Levelscript
    ------------------------------------------------------------------------------------------------------------------------

    In dem Bild sieht ihr einen gewöhnlichen Dialog Script, mit einer weiteren Funktion, „SETVAR“.
    Eine Setvar sorgt dafür, dass der Script sich nicht wiederholt, dass ist sehr praktisch.
    Ohne eine Servar, würde sich der Script immer wieder wiederholen, und das wollen wir ja nicht.


    Dort fügt ihr den Script ein und stellt die Einstellungen ein.
    Das 6000 steht für das Setvar 0x6000 0x1.
    Das 6000 ist eine Freie Flagge so wie Checlflag.


    Ihr fragt auch sicher warum, ihr nicht auch im AM Wert 0001 einfügt.
    Das Ganze ist anders, wenn man im XSE 0x0 eingibt muss man im AM 0001 eingeben.
    Und wenn im XSE 0x1 steht, muss man im AM 0002 eingeben und immer so weiter...


    Falls ihr den Script jetzt einfach so eingefügt habt, werdet ihr sofort festellen das es nicht gehen wird.Man wird entweder Stecken bleiben oder es kommt eine endlose Textbox.


    HINWEISS: Bei gewöhnlichen Dialog Scripte, wird dieses Problem zwar nicht vorkommen, aber bei etwas längeren Scripten wird das Problem sehr oft vorkommen.


    Um das Problem zu lösen müsst ihr folgendes machen:
    Aktiviert den Profi Header, „STRG + H“ und kopiert den „MapScript-Offset: $XXXXXX
    und kopiert das Offset. Danach gibt den wert im XSE neben „Offset“ ein. So ungefähr:


    Wenn alles geschafft ist, sollte der Script nun ohne Probleme funktionieren.
    Noch eine wichtige Sache, nimmt nicht immer die Setvar 6000, pro Levelscript eine Neue Setvar!
    Die Freienstellen...
    6000 – 7000 so ungefähr.


    ------------------------------------------------------------------------------------------------------------------------


    Methode 2 : Levelscript der nach einer Setzung der Var startet

    Diese Methode ist ganz leicht!
    In dem Script geht es darum, dass man einen Levelscript starten lässt, wenn erst eine bestimmte Flagge gesetzt wurde.Das ist auch ganz simpel.


    Man muss so vorgehen:
    Damit ein Levelscript startet, wenn eine bestimmte Setvar gesetzt wurde, muss man die bestimmte setvar in einem anderen Script machen. Ihr erinnert euch sicher an Checkflag und Setflag, genau wie da ist es hier etwas anders. In Checkflag und if_line gibt es 2 Funktionen:

    ------------------------------------------------------------------------------------------------------------------------
    If b_true goto $done / if 0x1 goto @done ↠Script springt auf @/$done wenn die flagge gesetzt ist.
    Falls aber die Flagge nicht gesetzt ist geht der Script.


    If b_false goto $done /if 0x0 goto @done der Script springt auf den done wenn die Flagge nicht
    gesetzt wurde, aber wenn die Flagge gesetzt wurde
    läuft der Script.

    ------------------------------------------------------------------------------------------------------------------------


    Und das ist hier halt etwas anderes.
    Wenn man im Header, im Wert das eingibt was auch im XSE steht, dann arbeitet der Script ganz anders. Sagen wir, die Setvar 0x6000 0x1 ist breites gesetzt in einem anderen Script, und man hat im anderen Levelscript im Header auch 6000 0001 $(Offset) stehen, dann kontoliert der Script ob die Setvar gesetzt wurde. Wenn doch, dann startet der script. Falls nicht, dann nicht.
    Hier eine kleine Übersicht:

    Seht ihr? Ist doch ganz Simpel, es ist aber echt schwer zu erklären!


    Wert: Beschreibung: Im XSE:
    0000 = Der Levelscript startet sofort, damit es nicht immer startet muss ein 0x1 im XSE sein!
    0001 = Kontrolliert ob der Setvar einmal gesetzt wurde und startet erst dann. Im XSE 0x2
    0002 = Kontrolliert ob der Setvar zweimal gesetzt wurde und startet erst dann. Im XSE 0x3
    0003 = Kontrolliert ob der Setvar dreimal gesetzt wurde und startet erst dann. Im XSE 0x4
    ... ... ...


    Und immer so weiter, aber ich glaub nicht das man mehr als 0003 nicht brauchen wird ;)


    Ich hoffe ich konnte etwas helfen, es wahr echt schwer zu beschreiben, aber ich habs ja geschafft.


    Diese Tutorial ist Copyright by Dragonflye und darf nicht ohne meine erlaubniss kopiert werden. Ich würde mich beim verlinken freuen!^^
    Ich würde mich über jede Kritik freuen!


    Rechtschreibfehler können passieren:D


    MfG
    Dragonflye ;)

    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 ;)