Stunde 11
Disassembled: 1.347 / 1.048.576 Bytes (0,128%)
Gehört: Fortuna Quartett & Helmut Abel - Astor Piazzolla: Oda para un hippie
Gut. Drei Subroutinen geklärt, sind noch sechs offen.
~~~
Okay. Beim ersten Blick auf die erste Subroutine ist die Funktionsweise klar, der Sinn noch nicht wirklich. Es ist wieder eine DMA-Funktion, wieder vollkommen flexibel (in Abhängigkeit zu den Registern ab $0700), DMA-Channel 7. Es ist mir noch nicht ganz klar, wozu eine weitere DMA-Subroutine benötigt wird; sinnhaft wird es in jedem Falle sein, ich habe ja gelernt, die Arbeit dieser Programmierer nicht qualitativ in Frage zu stellen.

~~~
Ah, okay, die Pipeline (die "To Do"-Liste) für diese Funktion reicht bis $077F und wird rückwärts abgearbeitet. Gleich mal ein Vermerk in der ROM Map gemacht. Das Ding wächst auch beträchtlich...

~~~
Oh. Jetzt, wo ich es mir genau anschaue, verstehe ich es, wozu dieses Ding gut ist. Der Datensatz in der Pipeline enthält nicht bloß die Werte für die DMA-Register, sondern auch noch Werte für Register $2115 und $2116. Wieder eine VRAM-Transfer-Subroutine, flexibler als die vorherige.
~~~
Ich bin wirklich gespannt, was ich mit diesem Wissen aus dem vorherigen großen Register-Beschreiben herauslesen kann. Aber erst muss ich mich in Geduld üben, erst will ich die Subroutine komplett übertragen haben.
Habe ich die Kanne Kaffee wirklich schon zu zwei Dritteln leer?
~~~
Hrrrm... Also, es gibt eine Reihe von Befehlen, die die Register um $0700 betreffen. Da werden die Register alle auf 0 gesetzt. Allerdings macht das Ding vor $0770 Halt. Das heißt... keine Ahnung. Vielleicht wird ein DMA durchgeführt; ich schätze nicht. Nicht im ersten Anlauf. Vielleicht im zweiten?
~~~
Hui, es ist so ungemein sexy (wenn auch nur fürs Selbstwertgefühl), wenn man was im Code ändert, assembled und einfach nur die Hexzahlen angucken muss, um zu wissen, ob funktioniert hat, was man wollte. ^.^
Okay, ich habe jetzt noch ein bisschen Zeit, und die nächste Subroutine ist recht groß, also kümmer ich mich jetzt *endlich mal* um den Header.

~~~
Okay, bevor ich den ROM-size-Byte ändere, werde ich in nocashs FullSNES-Doc mal nachschauen, was er bewirkt. Nicht, dass es mir alle Jump-Adressen zerschießt. Und das kurz vorm Ende der Stunde!

~~~
ROM-Hack-City schreibt:
$ffda => Licensee code. If this value is $33, then the ROM has an extended header with ID at $ffb2..$ffb5.
In der Original-ROM steht $35. Ich schätze, das ist dem wohl ähnlich. Noch etwas, was ich in FullSNES nachschauen muss. Mensch, warum benutze ich überhaupt diese ROM-Hack-City-Seite!?
... weil die im Vergleich zum FullSNES kram halbwegs übersichtlich aufgebaut ist.

~~~
Wenn mir mal langweilig ist, kann ich ja mal gucken, wo die restlichen Interrupt-Vektoren hingehen... außerdem kann ich ja mal meinen Header mit dem Original abgleichen. Aber das mache ich später.
Stunde um, Resümee:
Da wieder herzlich wenig ansich Zusammenfassbares geschehen ist, weil ich nur eine weitere DMA-Subroutine aufgegabelt habe und ein bisschen Unfug in den Header geschrieben habe, hier jetzt mal
eine kurze Zusammenfassung der letzten paar Stunden für diejenigen, die jetzt erst zugeschaltet haben:
Öh... nichts.
Ich denke, ich bin gerade dem Initialisieren des SNES entstiegen. Initialisieren heißt: Es werden überall Startwerte hingespeichert, weil man nicht weiß, was an den Speicherstellen ansonsten drin steht, und man will keine Risiken eingehen, dass irgendein Tinneff geschieht.
Jetzt gerade gehe ich davon aus, dass ich am Anfang des Intros stehe, wo soweit alles vorbereitet wird, um Grafikdaten zu übertragen und gleich das Logo des Programmierteams ("hector") anzeigen zu lassen. Dazu haben sie viele Unterfunktionen geschrieben, die dazu ausgelegt sind, von jeder Stelle des Programms ausgehend ausführbar zu sein (was bei weitem nicht selbstverständlich ist; bei vielen Unterfunktionen muss man in deren Nähe sein, ansonsten mag einen das Programm nicht mehr und kollabiert).
Das interpretiere ich so, als wäre ich gerade im Werkzeugschuppen des Programms unterwegs: Allerlei nützliche Sachen, "die wir später mal wieder brauchen werden", gucke ich mir gerade an. Das heißt: Für die spätere Disassemble-Arbeit wird man immer wieder darauf zurückgreifen können, dass ich diese Funktionen schon auseinander genommen habe. Aber selbstverständlich ist das an dieser Stelle eher prozess-verlangsamend, wenn man davon ausgeht, hier schnell zu erwarten, dass ich die ganzen hübschen Grafiken finde.
Es ist zwar im Kleinen, das heißt für den Intro, nicht zwangsläufig alles nötig, aber es zeigt, dass das hier alles für einen größeren Rahmen ausgelegt ist. Das hier ist ein
Spiel, und keine Slideshow.
Und damit kenne ich mich aus!

Hitomi, over and out.