[Pokémon Feurrote Edition] Behebung des Fadescreen-Bugs bei Wetter

  • Mal wieder etwas kleineres, ein Bugfix für Feuerrot. Benutzt man in Feuerrot bei dunklem Wetter (Wolken, Regen, etc.) ein fadescreen- Scriptcommand, faden die Paletten je nach benutztem Fadescreen heller / dunkler als zuvor. Da mich Kairyon darauf hingewiesen hat, dass es in Smaragd ein extra fadescreen- Scriptcommand gibt, der dem entgegenwirkt, indem er eine Recovery der Paletten anlegt, habe ich das kurzerhand in das fadescreen von Feuerrot integriert.


    Was ihr tun müsst:

    Sucht euch ein freies Offset XXX in eurem ROM, das mindestens 0x34 Bytes umfasst. Dort fügt ihr folgenden Bytecode ein:


    Dann navigiert ihr zum Offset 0x15FB70 in eurem ROM, an welchem ihr eine Referenz auf das originale fadescreen- Command vorfindet. Ersetzt diese Referenz mit einem Pointer auf XXX (+0x8000000 addieren, | 1 um den Prozessormodus auf thumb zu stellen, gemäß LE-Encoding die Bytereihenfolge umkehren).
    Fertig.


    Für jene unter euch, die der Code interessiert, er ist relativ unspektakulär:


    Dank geht an Kairyon, für Idee und Hilfe bei Umsetzung.

  • Danke fürs Posten! :)
    habe jedoch aus irgendeinem Grund, meinen Fadescreen zerstört ;)


    habe den Code auf 0xBF7E10 gelegt...
    habe es beim Offset: 0x15FB70 mit: 11 7E BF 08 abgespeichert...
    Stimmt das so?
    weil irgendwie verwirrt mich das mit dem |1 für den Prozessormodus... habe es auch mit 0 nicht geschafft den Fadescreen zu richten ;)

  • Du musst 1 dazurechnen, weil es Thumb-Code ist. Machst du das nicht, würde es als ARM-Code interpretiert werden. Das Programm erwartet aber an dieser Stelle, dass ein Thumb-Code kommt.
    Bist du dir sicher, dass bei 0xBF7E10 alle Bytes vorhanden sind, die im Startbeitrag im Spoiler stehen?

  • Bei dir fehlt aber ein Teil des Bytecodes.


    Tipp: Verwende lieber den Hexeditor HxD. Damit kannst du Bytes einfach an eine Stelle reinschreiben, ohne dass der Code danach verschoben wird und musst nicht vorher exakt die gleiche Menge an Bytes markieren, um neuen Code sauber einzufügen. Rechtsklick > Schreiben (Strg + B). Wenn eine Aktion das ROM vergrößern soll, wirst du auch vorher darüber informiert.