Bilder Anzeigen per Special ( FR D )

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Also ich erkenne grundsätzlich einige Schönheitsfehler:

      Je nachdem wie der Scripthandler implementiert, bzw. vom Compiler gebaut wurde zerschießt du dir mit Start und End Snippet einige CPU Register, das kann funktionieren, je nachdem nach welchen Konventionen hier gearbeitet wurde, ist aber grundsätzlich zu vermeiden, i.e. "Alles sichern, was man während seiner Routine verwendet" - Außerdem zerstörst du den BG1 mit dieser Aktion. Hierzu werden IRAM Adressen verwendet, bei denen es zu prüfen gilt, ob jene für beide Versionen von FR gleich sind. Ich würde prinzipiell bei Änderungen von I/O die Hausinternen ChangeIO Routinen verwenden:

      BPRE: 08000000 + A38 [Thumb]
      BPEE: 08000000 + 10B4 [Thumb]
      BPED: 08000000 + 10B4 [Thumb]

      Faustregel: So wenig wie möglich direkt auf den RAM zugreifen, man bewegt sich dann außerhalb von MALLOC (Memory Allocate) und riskiert u.a. Spielinternes zu überschreiben, oder wenn man lesend zugreifen möchte: Dynamische Alloziierung.

      Für den VRAM Zugriff schlage ich vor: Callbacks, so kann im Nachhinein die Map wieder Ordnungsgemäß geladen werden und man kann auch mit den BGs tun was man will. Außerdem für Script Integration: Waitstate, das muss allerdings dann auch in der Routine festgehalten werden.

      Ich würde die von mir verwendete Routine veröffentlichen, allerdings ist jene viel zu game-dependent als dass sie wohl jemandem was nützen würde. Auf dein konkretes Problem habe ich keine Antwort, so wie es aussieht rufst du aber die END Routine nichtmal auf, was für lustige Abstürze sorgt. Das Problem mit den Paletten und dem verschobenen Bild dürfte an IRAM und WRAM Adressen liegen, die bei dir halt nicht passend sind.

      ~Sturmvogel
    • Jemand mit etwas mehr Ahnung könnte ja auch ein Tutorial schreiben.
      Vorlagen sind immer willkommen.

      Bei der Palette sollte man auch den buffer von GF verwenden. Davon gibt es 2.
      Der erste beinhaltet die originalen Paletten und der zweite die manipulierten, z.B. durch Effekte wie bewölktes Wetter auf der Map.

      Spoiler anzeigen
      SM

      Quellcode

      1. .palbuffer1:
      2. .word 0x02037714
      3. .palbuffer2:
      4. .word 0x02037B14

      FRBG

      Quellcode

      1. .palbuffer1:
      2. .word 0x020371F8
      3. .palbuffer2:
      4. .word 0x020375F8

      So wie ich das bis jetzt herausbekommen habe, schreibt man den Pointer zur seiner Routine in den Taskhandler (0x030022C4).
      Dann gibt es noch einen Byte, mit dem man die Steuerung des Spielers deaktiviert. (0x03000F2C)

      Quellcode

      1. push {lr}
      2. ldr r0, =$08177399
      3. bl $08000540
      4. bl $08098E70
      5. pop {r0}
      6. bx r0

      Die eigentliche Routine fängt an mit

      Quellcode

      1. push {r4, r5, lr}
      2. add sp, -#0xC

      und endet mit

      Quellcode

      1. add sp, #0xC
      2. pop {r4, r5}
      3. pop {r0}
      4. bx r0

      Irgendwo vor dem Ende müsste ja die Routinen sein, die einem zur Map zurückführen.
      Einen Keks für denjenigen, der da durchsieht.
      Wie Sturmvogel schon geschrieben hat, folgt nach dem special ein waitstate.

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Kairyon ()

    • Gib doch nicht gleich auf Mensch! Versuche es weiter, keiner hat es bisher beim ersten oder zweiten oder dritten Mal geschafft. Das gehört zum Erfolg dazu, scheitern, aber immer wieder aufzustehen. Ich kenne mich zwar nicht aus mit ASM, aber die Jungs geben hier ihr bestes, also Versuche es bitte weiter! :)

      Aufgrund des Studiums, habe ich derzeit überhaupt keine Zeit für Rom-hacking oder Fragen. Die Arbeiten erfolgen in den Ferien. ;)
    • Ich denke effizienter würde es einfach sein das special mit der Urkunde zu hacken, denn die zeigt auch ein Bild an. Also entweder so, da man auf ein Table verweist und dann das special mit diesem Parameter callt oder so, das man den Pointer zum Bild dynamisch abändern lässt.
      Pokémon spielen auf einem höheren Level.


      Links zu meiner Person:

      Youtube
      Facebook Twitter