Disassembled: 214.142 / 1.048.576 Bytes (20,422%)
Gehört: Peter Tschaikowski - Der Nußknacker (zweite Stunde), Lions - Roosevelt EP
Noch ne Stunde Arbeit.
~~~
Okay, interessant: Nach dem Menü gelangt man entweder zu Jump-Table-Eintrag $08 oder $00. $08 ist offensichtlich der, der für ein neues Spiel zuständig ist. $08 ruft $09 auf, $09 ruft $0A auf. Derzeit habe ich noch einige der Unterverästelungen von $0A zu klären, aber gerade habe ich herausgefunden, dass der nächste JT-Eintrag $01 ist. Das heißt, scheinbar laufen an dieser jenen Stelle dann die Fäden zwischen "Spiel laden" und "Neues Spiel" wieder zusammen.
~~~
Ach du liebe Zeit. Eine Subroutine setzt bei Adresse $16C5 an. Eine andere hört bei $16C2 auf. Dazwischen sind zwei Byte mit dem Inhalt "$FF".
Es ist klar, dass man irgendwo irgendwie den verbliebenen Platz auf einer Bank füllen muss, da man nie und nimmer-nicht eine Bank auf den Byte genau vollkriegt. Aber warum an dieser Stelle? Warum nur zwei Byte? Fragen über Fragen...
Vielleicht werden die zwei Byte ja für einen festen DMA-Transfer gebraucht. Wer weiß. Sinn mächte es nicht. Aber egal.
~~~
Jaaaaa... es ist Feiertag! Ich habe frei! Der dörfische Spielmannszug steht zur Sekunde unter meinem Fenster und spielt den immerselben Mai-Marsch, um von der senilen Nachbarschaft Spirituosen zu erspielen. Yay!
Nein, ich möchte sagen: Ich habe Zeit, ich habe Ruhe, ich hatte Schlaf - und folglich kann ich jetzt auch wirklich arbeiten. Folglich schreibe ich mehr, folglich werde ich wohl weniger Bytes disassemblen können.
Gerade habe ich eine Sache auseinander genommen, die ein VRAM-Tileset-Bereich-Clear-DMA vorbereitet. Dabei werden die beiden oberen $FF-Bytes genutzt. Jetzt ist die Frage, ob damit nur die zweite Hälfte des BG3-Tilesets gecleart wird, oder ob auch noch das komplette Tileset von BG1/2 mitgelöscht wird. Ich habe die Frage mal im snes-projects-Chat gestellt, mal schauen, ob die Antwort kommt.
~~~
Oddities!
Ich habe mal investigatives Karpaltunnelsyndrom betrieben: Die nächste Subroutine sah so seltsam aus, hat in mir doch eine Vermutung geweckt, folglich habe ich mal wieder eine Kopie der Original-ROM gemacht und selbige mit dem Hexeditor umgefusselt.
Und ich hatte mit meiner Vermutung recht. Ladies and Gents, we're right inside the textbox!
Habe ich dann meine zweite Vermutung getestet und die beiden $FFs durch $00s ersetzt, und auch diese Vermutung erwies sich als korrekt: Bäääääm! Ich bin ein H4><z0r!
~~~
Bäääääm! Ikari_01 hat mich gerettetetet!
Code: Alles auswählen
[10:25] <+ikari_01> lytron:
[10:25] <+ikari_01> A30/2
[10:25] <+ikari_01> 518.00000000000000000
[10:25] <+ikari_01> 2AE8+518
[10:25] <+ikari_01> 3000~~~
Und nochmal Bäääääm!
Ich wunderte mich, dass im *Tileset* geändert wird, und nicht in der Tilemap. Und meine Vermutung prüfte ich mittels NO$SNS, und auch hier, bäääääm, erwies sich meine Vermutung als richtig: Die Tilemap für die Textbox ist immer gleich, es werden die *Tiles* bearbeitet; das heißt, taucht in einer Textbox dasselbe Schriftzeichen zweimal auf, sind auch zwei Tiles im VRAM dasselbe. Diese Handhabung scheint üblicher zu sein als die Anpassung der Tilemap, auch wenn das für mich auf den ersten Blick weniger logisch erscheint. Ich meine, dass LostTemplar soetwas mal über FEoEZ auch im Chat erwähnt hat...
~~~
Stunde rum, Resümee:
Konnte dann gerade noch den Großteil des verbliebenen Geäders von JT-Eintrag $0A absolvieren, einige Subroutinen, die sich mit dem Malen des Textbox-Rahmens beschäftigen. Sobald ich mehr Zeit habe, mich mit dem Code eingehend zu beschäftigen, werde ich vielleicht auch schon auf die Textbox-Tiles zusteuern, und dann kann ich ernste Vorbereitungen für den Text-Dump treffen. =)
206 von 438 KB.
PS:
Code: Alles auswählen
[10:25] <+ikari_01> lytron:
[10:25] <+ikari_01> A30/2
[10:25] <+ikari_01> 518.00000000000000000
[10:25] <+ikari_01> 2AE8+518
[10:25] <+ikari_01> 3000
[10:26] <lytron> Danke, das macht sinn.
[10:27] <lytron> Das ist, übrigens, das clearen des letzten Rests des Tile*set*s für BG3; das wiederum für Textboxen genutzt wird.
[10:28] <lytron> Der Text wird in einzelne Tiles hineingesetzt und jede Textbox hat dieselbe Tilemap, statt dass die Tilemap gemäß den Zeichen angepasst wird.
[10:28] <lytron> Scheint aber usus zu sein, es sorum zu machen.
[10:28] <lytron> domo arigato, ikari-sensei! :)
[10:30] * +MarcoEagleEye (~MarcoEagl@euirc-ec12b569.adsl.alicedsl.de) Quit (Client exited)
[10:46] * RedScorpion (~RedScorpi@euirc-1b72fe82.cust.telecolumbus.net) has joined #snesprojects
[10:46] * ChanServ sets mode: +qo RedScorpion RedScorpion
[10:57] <+ikari_01> lytron: da man japanische Zeichen eh zusammenkopieren muss, weil die Tilemap nicht genug verschiedene Einträge und das VRAM nicht genug Platz hat... ;)
[11:06] * LostTemplar (~LostTempl@euirc-b9b0311c.superkabel.de) has joined #snesprojects
[11:12] <lytron> Ach ja, die teuflischen Kanji...
[11:12] <lytron> ... ich vergaß.
[11:37] <LostTemplar> Sinn, du ergibst ihn nicht!

