Super Mario Advance 4 Research Thread

  • Moin Moin,


    ich bin dabei die Super Mario Advance 4 Strukturdaten zu suchen damit ich an meinem Map Editor weiter arbeiten kann :P


    WIEDER AKTIV !



    Der Einfachheit als Markdown umgeschrieben:

    Das Markdown gibts auch als HTML: 2018-04-01.zip



    Gruß,
    Julian

  • UPDATE:

    • Beitrag zur Einfachheit als Markdown formatiert
    • HTML Download ergänzt
    • Worldmap Struktur aufgenommen
    • Paletten Berechnung aufgenommen

    Ich bin nicht vergesslich, in meinem Hirn werden nur Pointer zu den Leuten angelegt, auf die ich dann nur zurück greifen muss um die Information zu erlangen :)

  • SMA4 hat in der ganzen Reihe eigentlich das meisten Potenzial zum Hacken, allein schon wegen den ganzen nicht verwendeten Features (Cape, Tracks, Gegner, Akkordion-Blöcke, etc. aus SMW (SMA2)). Habe mich daher auch ein bisschen dran gesetzt.


    Kann leider deine Level-Pointer nicht bestätigen, bei derselben ROM steht bspw. der Pointer für 1-1 bei 0x136288 (03 53 15). Das Ändern des Pointers auf 1-1-Bonus funktioniert z.B., bei 1-2 crasht aber die ROM.


    Ich glaube, jede Map hat auch ein "Hintergrund-Tile". Bei Welt 1-1 ist dieses zu finden bei 0x14EE74 (8 Bytes, da 4 Blöcke). Es wird auch ein anderer Filter auf die Palette angewendet und der Hintergrund wirkt sich nicht auf Objekte aus (dort sind dann "Löcher" im Hintergrund bei Transparenter Farbe).


    Außerdem habe ich schon geprüft, ob die unused objects wie z.B. das Cape aus SMW auch funktionierten - das tut sie!
    Zum Testen einfach bei Offset 0x16c24f das 72 durch DA ersetzen.
    Bei 0x16c24e fängt der erste Goomba aus 1-1 an (ein Gegner) mit den Werten 00 72 0E 19 00


    Spritebank 00
    Sprite 72 (Goomba)
    X-Position 0E
    Y-Position 19
    00 soll scheinbar ein Parameter für Sachen wie nummerierte Münzen sein


    In Welt 1-1 rein und schon liegt eine funktionierende Feder für ein Cape beim Start!


    Edit: habe herausgefunden, warum den Pointer von 1-1 auf 1-2 ändern nicht geklappt hat: habe es mit 1-3 versucht, dort funktioniert es einwandfrei. Muss also am Object Set, GFX oder sonst was liegen, das davor bei "Next Level xxx-Set" steht. :)

  • Es kann sein, dass du eine andere ROM Version hast. Probiers mal mit den Pointer Offsets.


    Also schau dir mal an, was bei 0x9C88 bei dir als Pointer steht, gehe zu dem Offset und von da aus der 0x22te (34. ) Pointer (1 Pointer = 4 Byte) ist dann Level 1-1

    Ich bin nicht vergesslich, in meinem Hirn werden nur Pointer zu den Leuten angelegt, auf die ich dann nur zurück greifen muss um die Information zu erlangen :)

  • Grundsätzlich ist es immer eine gute Idee irgendeine Indikation der ROM-Version für Research anzugeben. Mein Vorschlag ist immer ein common shasum (Unix `shasum`) - Gerade bei neuen Spielen, wo sich noch nicht irgendeine Version als Gemeinsamer Nenner etabliert hat, kann so der, der damit anfängt das Spiel zu researchen, diesen erstmal setzen.


    Devtronic: Ich weiß Markdown ist voll toll, aber ohne Parsing im Forum jetzt auch nicht so toll zu lesen... Es gibt übrigens ein Markdown to BBCode LUA Script für pandoc, fyi.


    ~Sturmvogel


    Let the old ways live and prosper in the hearts of our young


  • Leider kann ich den ersten Post nicht bearbeiten da zu lang (>10k Zeichen)


    Also, das ROM hat einen sha1sum von 2e5ce11a893464dc0cce0a6b451580ba35a7e5de

    Folgende Informationen zeigt der VBA an:




    Zum Markdown: jap, werde ich bei Gelegenheit anpassen - oder eventuell auf GitHub schieben.


    Kleines Update:

    Die Worldmap Struktur lässt sich schon mal gut auslesen:






    Aktuell scheitere ich daran, die korrekten Tiles bzw. die verwendeten Tilesets auszulesen. LZ77 laden ist kein Problem mehr. Anscheinend werden die verwendeten Tiles aus verschiedenen Tilesets zusammengesetzt :/

    Ich bin nicht vergesslich, in meinem Hirn werden nur Pointer zu den Leuten angelegt, auf die ich dann nur zurück greifen muss um die Information zu erlangen :)