Disassemble Blog: Ihatovo Monogatari

Sprachbarrieren halten Dich vom Spielen Deines Herzchenspiels ab? Du willst eines Deiner Herzchenspiele Mal ganz neu erleben? Dann bist Du hier genau richtig.

Moderatoren: ikari_01, d4s, Redscorpion

Benutzeravatar
lytron
Code Bro
Code Bro
Beiträge: 2664
Registriert: 12. August 2012, 20:18
+Positive Tradingpoints+: 12 von 12
Wohnort: ハノーファー区
Kontaktdaten:

Re: Disassemble Blog: Ihatovo Monogatari

Beitrag von lytron » 12. Mai 2013, 10:40

Stunde 122
Disassembled: 215.156 / 1.048.576 Bytes (20,519%)
Gehört: OC-Remixes zu Link's Awakening (Der Rest) und zu FFA/Mystic Quest


Gut, Stunde 122 mache ich jetzt noch, danach werde ich die Hausarbeit nicht weiter aufschieben können... :(
Ich werde versuchen, meinen Bro dazuzumotivieren, dass er mir einen Dekompressor/Kompressor-Kommandozeilenprogramm schreibt, denn dieser Klimbim wird wohl noch öfter genutzt.
Und jetzt habe ich Holzleim an den Fingern.
Bitte nicht fragen.
~~~

Stunde rum, Resümee:
Ich habe in ziemlich genau einer Stunde eine Prosafassung der funktionsweise der Subroutine hinbekommen und sie meinem Bruder geschickt. Ich hoffe, er schreibt mir das Programm (und schickt mir nicht bloß einen Link zu einem C++-Tutorial). Ich werde schauen, was zurückkommt, und in der Zeit Hausarbeit verrichten.

Und, oh, DieChinesischeMauer dekomprimiert Tilesets, u. a. den Titlescreen. Habe ich schon erwähnt?
pantalytron: ルトロンはくそのディスアセンブラだよ!
Perikles hat geschrieben:Man muss sich das mal reinziehen: die Idee ist scheiße, die theoretische Ausarbeitung ist scheiße, die praktische Umsetzung ist scheiße und der so entstehende Anspruch noch beschissener.

Benutzeravatar
lytron
Code Bro
Code Bro
Beiträge: 2664
Registriert: 12. August 2012, 20:18
+Positive Tradingpoints+: 12 von 12
Wohnort: ハノーファー区
Kontaktdaten:

Re: Disassemble Blog: Ihatovo Monogatari

Beitrag von lytron » 12. Mai 2013, 14:53

Stunde 123
Disassembled: 215.156 / 1.048.576 Bytes (20,519%)
Gehört: Turner - A Pack of Lies


Ich bleibe dran. Mein Bruder schrob mir Antwort.
Ich möge den Dingens in eine (Pseudo-)Code-Form schreiben.
Das tolle ist, ich kann nicht mehr als das bisschen, was er mir als Beispiel drunter gesetzt hat.
Wehey, ich liebe es.
~~~
So. Innerhalb einer halben Stunde habe ich ihm das beisammengeschrieben, es kam eine Korrektur-Mail von seiner Seite, und ich hoffe, er ist jetzt geneigt den Klimbim umzusetzen.
Ich poste das mal hier, was ich/wir schroben. Ich denke, ich werde das eher nutzen können, um den Sinn dahinter zu verstehen, als den Assembler-Code.

Code: Alles auswählen

	

    uint8_t memory[0x1000];
    uint8_t FEB1;
    uint8_t FEB2;
    uint16_t DatGr;
    uint16_t ReadCounter;
    uint16_t WriteCounter;
    uint16_t SRamIndex;
    uint8_t SLimit;
    uint8_t SCounter;
    uint16_t RamIndex;
    uint8_t Storage;
     
    uint16_t SRIHelfer;
    RamIndex = 0x0ffe;
    FEB1 = 0;
    FEB2 = 0;
    ReadCounter = 4;        // Abweichung vom ASM-Code, Vereinfachung
    WriteCounter = 0;
    DatGr = (datei[1] << 8) + (datei[0]);
     
    Beginn:
    if (WriteCounter = DatGr)
        exit;
     
    // (Jetzt werden quasi die beiden FallEntscheiderBytes als eine 16-bit-Zahl betrachtet und mittels Logic Shift Right durch zwei geteilt (und abgerundet, natürlich)):
    // Mach einen Logic Shift Right bei FallEntscheiderByte2; setz 0 als neuen MSB, verschieb die Bits alle nach rechts, fang den alten LSB irgendwie auf.
     
    FEB1 = FEB1 >> 1 + AlterMSB << 8;           // Schieb jetzt den alten LSB als neuen MSB in FallEntscheiderByte1 und die restlichen Bits gehen alle nach rechts. Der alte LSB von FEB1 ist egal.
    // Diese Änderungen an den Werten der FEBs werden gespeichert.
     
    if ( LSB[FEB2] = 1)
        goto FEB1Pruefung;
     
    Storage = datei[ReadCounter];
    FEB1 = datei[ReadCounter];
    FEB2 = 0xff;
    ReadCounter = ReadCounter + 1;
     
    FEB1Pruefung:
    if (LSB[FEB1] = 0)
        goto Sonderfall;
     
    Storage = datei[ReadCounter];
    outputdatei[WriteCounter] = datei[ReadCounter];
    ReadCounter = ReadCounter + 1;
    WriteCounter = WriteCounter + 1;
    memory[RamIndex] = Storage;
    RamIndex = RamIndex + 1;
    if (RamIndex > 0x0fff)
        RamIndex = RamIndex - 0x1000;
    goto Beginn;
     
    Sonderfall:
    SRamIndex = datei[ReadCounter++];
    SLimit = datei[ReadCounter++];
    SRamIndex = SRamIndex + ((SLimit >> 4) << 8);
     
     
    SLimit &= 0xf;
    SLimit = SLimit + 2;
     
    SCounter = 0;
    goto SLoop;
     
    IncSC:
    SCounter = SCounter + 1;
     
    SLoop:
    SRIHelfer = (((SRamIndex + SCounter) << 4) >>4);
    if (SRIHelfer > 0x0fff)
        SRIHelfer = SRIHelfer - 0x1000;
    Storage = memory[SRIHelfer];
    outputdatei[WriteCounter] = memory[SRIHelfer];
    WriteCounter = WriteCounter + 1;
    memory[RamIndex] = Storage;
    RamIndex = RamIndex + 1;
    if (RamIndex > 0x0fff)
        RamIndex = RamIndex - 0x1000;
    if (SCounter = SLimit)
        goto Beginn;
    goto IncSC;
~~~
Gut, nach weiterem Mailverkehr konnte ich dank des Geigers den RAM samt dekomprimierten Daten dumpen. Bietet meinem Bruder die Möglichkeit zu schauen, ob der Dekompressor richtig funktioniert, und ich kann nebenbei die Funktionsweise analysieren und vielleicht sogar einen Kompressor schonmal vorbereiten.
Hier ein Bild der dekomprimierten Daten through the eyes of TileMolester:
Unbenannt.png
Unbenannt.png (44.51 KiB) 5418 mal betrachtet
~~~
Stunde rum, Resümee:
Es erschließt sich mir immer noch nicht. Vielleicht hat mein Bro einen Geistesblitz; ich verstehe den RAM-Schabernack nicht. Zumal, wenn ich den RAM dumpe (das, was oben als "memory" bezeichnet wurde), er komplett leer ist. Vielleicht an einer anderen Stunde.
pantalytron: ルトロンはくそのディスアセンブラだよ!
Perikles hat geschrieben:Man muss sich das mal reinziehen: die Idee ist scheiße, die theoretische Ausarbeitung ist scheiße, die praktische Umsetzung ist scheiße und der so entstehende Anspruch noch beschissener.

Benutzeravatar
lytron
Code Bro
Code Bro
Beiträge: 2664
Registriert: 12. August 2012, 20:18
+Positive Tradingpoints+: 12 von 12
Wohnort: ハノーファー区
Kontaktdaten:

Re: Disassemble Blog: Ihatovo Monogatari

Beitrag von lytron » 12. Mai 2013, 21:01

Stunde 124
Disassembled: 215.156 / 1.048.576 Bytes (20,519%)
Gehört: Wamdue Project - Program yourself


Da ich Menschen hasse, und mich selbst ganz besonders, werde ich jetzt nochmal versuchen, den Ablauf dieser Subroutine auf einem Stück Papier mitzuschreiben. Es könnte durchaus fragwürdig sein, ob ich innerhalb einer Stunde überhaupt nennenswerte Ergebnisse erzielen kann. Wenigstens verbrauche ich damit meinen gigantischen Vorrat an Schmierpapier.
~~~
Stunde rum, Resümee:
Als schlauer Hund habe ich mir irgendwann gedacht: Loggste doch den Kram und guckst dann in die Log. Und das habe ich gerade gemacht. Ich habe mir allerlei Variablenwerte aufgeschrieben und gerade die meiste Zeit in einem Loop verbracht. Da ich natürlich *alles* geloggt habe, war das gerade ziemlich stupide und vermutlich auch fragwürdig, aber bevor ich zu hastig vorgehe und dann ständig neuanfangen muss, mache ich es lieber so. Diese Vorgehensweise ist für mich gerade weniger frustrierend, als überall hineinzustochern und festzustellen, dass ich es so nicht checke. Mag man sehen, wie man will.

An dieser Stelle hebe ich noch einmal die Tasse für unseren geliebten Admin ChronoMoogle, der nach fünf Jahren hier die Segel streicht, um sie andernorts zu hissen, wo es weniger Computer gibt.

Snesfreaks ist ein besserer Ort durch dich geworden, und es wird ein anderer Ort werden, jetzt, da du wegbist! Moogie, es war immer eine Freude mit dir! Byebye, grüß mir das Reallife, wenn du es siehst, sag ihm, ich, äh, komm dann später. ^^'
pantalytron: ルトロンはくそのディスアセンブラだよ!
Perikles hat geschrieben:Man muss sich das mal reinziehen: die Idee ist scheiße, die theoretische Ausarbeitung ist scheiße, die praktische Umsetzung ist scheiße und der so entstehende Anspruch noch beschissener.

Benutzeravatar
lytron
Code Bro
Code Bro
Beiträge: 2664
Registriert: 12. August 2012, 20:18
+Positive Tradingpoints+: 12 von 12
Wohnort: ハノーファー区
Kontaktdaten:

Re: Disassemble Blog: Ihatovo Monogatari

Beitrag von lytron » 13. Mai 2013, 19:40

Stunde 125
Disassembled: 215.156 / 1.048.576 Bytes (20,519%)
Gehört: Wamdue Project - Program yourself


Noch eine Stunde Log-Datei-Lesen, vielleicht sogar mit Verständnis von meiner Seite aus.

~~~
(Bei ungf. 30min: ) Ouououououou, vielleicht hab ichs!
~~~
(Bei ungf. 40min: ) Ououououououououououou, es läuft gerade so, wie ich mir das gedacht habe... wow!

Stunde rum, Resümee:
Schade, dass die Stunde schon rum ist!
Meine Vermutung hatte sich übrigens gestern im Bett beim Einschlafen schon in Schemen abgezeichnet und gerade größtenteils bewiesen. Ich werde in der nächsten Stunde noch einmal genauer schauen, und auch versuchen, es in genaue Worte zu fassen, bzw. in Pseudo-Programmiercode, um es meinem Bruder zum Schreiben eines Kompressors zu übergeben. Holla, was freu ich mich schon, wenn ich sehe, dass es klappt! ^.^
pantalytron: ルトロンはくそのディスアセンブラだよ!
Perikles hat geschrieben:Man muss sich das mal reinziehen: die Idee ist scheiße, die theoretische Ausarbeitung ist scheiße, die praktische Umsetzung ist scheiße und der so entstehende Anspruch noch beschissener.

Benutzeravatar
lytron
Code Bro
Code Bro
Beiträge: 2664
Registriert: 12. August 2012, 20:18
+Positive Tradingpoints+: 12 von 12
Wohnort: ハノーファー区
Kontaktdaten:

Re: Disassemble Blog: Ihatovo Monogatari

Beitrag von lytron » 14. Mai 2013, 20:36

Stunde 126
Disassembled: 215.156 / 1.048.576 Bytes (20,519%)
Gehört: Suffer Like G Did - Raspberry EP, Kuniaki Haishima - Monster OST


Heut schreib ich meinem Brüderle eine E-Mail. Danach werde ich vielleicht noch ein wenig die Log weiterlesen, wenn es die Zeit zulässt.
~~~
Nach vierzig Minuten habe ich dann das grobe *irgendwas* Konzept fertig. Hundertpro wird das beim ersten Lauf nicht sauber funktionieren:

Code: Alles auswählen

// DEFINE
uint8_t memory[0x1000];
uint8_t InputCounter;
uint8_t OutputCounter;
uint8_t NextFEBPos;
uint8_t NextFEBContent;
unit8_t NextFEBStelle;
uint8_t score;
uint8_t hiscore;
uint16_t hiscoreaddress;
uint8_t AbgleichCounter;
unit8_t OutputByte;
uint16_t RamIndex;
uint16_t SearchRamIndex;

// PREP
InputCounter = 0;
OutputCounter = 5;
NextFEBPos = 4;
NextFEBContent = 0;
for RamIndex = 0 to 0x0fff
   memory[RamIndex] = 0;
RamIndex = 0x0ffe;
OutputDatei[0] = filesize[InputDatei] & 0xff;
OutputDatei[1] = filesize[InputDatei] & 0xff00 >> 8;
OutputDatei[2] = 0;
OutputDatei[3] = 0;

//EXEC
Exec:
NextFEBStelle = 0;
score = 1;
hiscore = 0;
hiscoreaddress = 0;
for SearchRamIndex = 0 to 0xfff
 begin
  if memory[SearchRamIndex] = Inputdatei[InputCounter] then
   begin
    // taucht die in der InputDatei vor uns liegende Kette von Bytes schon im memory auf?
    for AbgleichCounter = 1 to 0x12
     begin
      if memory[(SearchRamIndex+AbgleichCounter) & 0xfff] = Inputdatei[(InputCounter+AbgleichCounter) & 0xfff] then
       score = score + 1;
       else AbgleichCounter = 0x20    // exit Abgleich
     end;
   if score > hiscore then
    begin
     hiscore = score;
     hiscoreaddress = memory[SearchRamIndex];
    end;
   end;
 end;
if hiscore < 3 then
begin    // Standardfall
memory[RamIndex++] = InputDatei[InputCounter];
OutputDatei[OutputCounter++] = InputDatei[InputCounter++];
NextFEBContent = NextFEBContent + 1 << NextFEBStelle;
end;
else
begin    // Sonderfall
OutputDatei[OutputCounter++] = highscoreaddress & ff;
OutputDatei[OutputCounter++] = highscoreaddress &f00 >> 4 + (hiscore - 3);
 for AbgleichCounter = 0 to hiscore
  memory[RamIndex++] = Inputdatei[InputCounter++];
NextFEBStelle = NextFEBStelle + 1;
end;
if NextFEBStelle = 8 then
begin
OutputFile[NextFEBPos] = NextFEBContent;
NextFEBStelle = 0;
NextFEBContent = 0;
NextFEBPos = OutputCounter++;
end;

if InputCounter < filesize[inputcounter] then
   goto Exec
Ich bin mal gespannt, aber ich gehe davon aus, dass das noch ein ziemlich fieses Bugtracking geben wird, zu dem mein Bruder vermutlich keine Lust haben wird und mich auf kurz oder lang dazu bringen wird, mir wieder Qt zu installieren und den Kram, den er mir einmal in anständiges C(++) übersetzt hat, selbst zu kompilieren.
Mag sein, dass das einen gewissen Lerneffekt haben mag, aber wirklich effektives Arbeiten ist das für mich nicht, wenn ich dann auch noch nebenbei C lernen soll. :/
Anywaaays! Ich mache mal mit der Logdatei weiter. Nur, um mir Bestätigung zu holen, dass das alles so funktioniert, wie ich das dachte.
~~~
Stunde rum, Resümee:
Meine Güte, ja, es funktioniert so, wie ich es mir dachte.
Ich habe gerade noch eine Erklärung in Englisch mit Ach und Krach in der ASM-Datei versucht.
Folgendes Prinzip:
Am Anfang wird ein großer Speicher im WRAM gecleart. Alle Bytes, die ausgegeben werden, werden dort genauso mitgeschrieben. Sobald sich drei oder mehr Bytes nach einem Muster wiederholen, dass schon einmal dagewesen ist, wird in die komprimierten Daten ein Hinweis gemacht, dass angibt, von welcher Stelle im WRAM wie viele Bytes kopiert werden sollen.
Beispiel:
Dekomprimiert: 00 01 00 01 00 02 00 01 00 01 00 03 04 05
Da hieße es dann: 00 01, wiederhole drei Bytes, beginnend beim hiererstgenannten (das heißt, der erste Byte, der gesetzt wird, ist gleichzeitig der letzte, der "wiederaufgegriffen" und neu eingesetzt wird"), 02, wiederhole fünf Bytes, beginnend beim erstgenannten, 03.
Komprimiert wären das dann 00 01 ?? ?? 02 ?? ?? 03 04 05
Statt vierzehn, nur zehn Byte.
Na gut, eigentlich elf Byte.
Denn: Woran soll das Ding erkennen, ob es den Byte jetzt so ausgeben soll, wie er da steht, oder der Byte und sein Nachbar diese Sonderfall-Adress- und -Längen-Daten sind?
Es stehen immer wieder Bytes dadrin, deren Bits darüber Auskunft geben. Diese Bits werden der Reihe nach untersucht. 1 ist für einen normalen Byte, 0 für die Spezi-Doppelbytes. Sobald alle Bits durchsind, wird der nächste Byte automatisch als so ein Info-Byte interpretiert.
Für obiges Beispiel hieße das: Zwei normale, ein Spezi, ein normaler, ein Spezi, drei Normale... 1110.1011. Der Infobyte wäre $EB.

Coole Sache. Das heißt, nächstes Mal kann ich mich etwas anderem widmen. Weheeey! :)
pantalytron: ルトロンはくそのディスアセンブラだよ!
Perikles hat geschrieben:Man muss sich das mal reinziehen: die Idee ist scheiße, die theoretische Ausarbeitung ist scheiße, die praktische Umsetzung ist scheiße und der so entstehende Anspruch noch beschissener.

Benutzeravatar
lytron
Code Bro
Code Bro
Beiträge: 2664
Registriert: 12. August 2012, 20:18
+Positive Tradingpoints+: 12 von 12
Wohnort: ハノーファー区
Kontaktdaten:

Re: Disassemble Blog: Ihatovo Monogatari

Beitrag von lytron » 15. Mai 2013, 08:47

Gerade bei Google:
google.jpg
google.jpg (591.63 KiB) 5388 mal betrachtet
Bäääääm!
pantalytron: ルトロンはくそのディスアセンブラだよ!
Perikles hat geschrieben:Man muss sich das mal reinziehen: die Idee ist scheiße, die theoretische Ausarbeitung ist scheiße, die praktische Umsetzung ist scheiße und der so entstehende Anspruch noch beschissener.

Benutzeravatar
lytron
Code Bro
Code Bro
Beiträge: 2664
Registriert: 12. August 2012, 20:18
+Positive Tradingpoints+: 12 von 12
Wohnort: ハノーファー区
Kontaktdaten:

Re: Disassemble Blog: Ihatovo Monogatari

Beitrag von lytron » 19. Mai 2013, 11:45

Stunde 127
Disassembled: 215.603 / 1.048.576 Bytes (20,562%)
Gehört: Sparta - Wiretap Scars, Tomohito Nishiura - Professor Layton vs Gyakuten Saiban Special OST-Single


Ich werde wohl an diesem Wochenende nicht viel schaffen, aber ich wollte wenigstens eine Stunde machen. Bis dato gab es noch keine Rückläufer bzgl. des Kompressors/Dekompressors, folglich werde ich erst einmal um andere Dinge im Programm kümmern. Ist ja auch nicht weiter wild.

~~~
Ich beginne, die Tabellen einzufügen.
Das tu ich per Hand; heißt, ich füge keine Binärdateien ein, womit ich ziemlich pronto durch wäre, sondern schreibe es in Befehle für WLA DX um. Ziemlich großer Aufwand, aber es bietet sich die Möglichkeit, dass ich so auch z. B. hineinkommentieren kann, wie diese Einträge aufgebaut sind, und wofür sie genutzt werden. Erleichtert dann das Hacking für die nachfolgenden Generationen.
~~~
Ein Ein-Byte-Edit:
imtest_00000.png
imtest_00000.png (9.06 KiB) 5382 mal betrachtet
Ein Zwei-Byte-Edit:
imtest_00001.png
imtest_00001.png (8.45 KiB) 5382 mal betrachtet
Wie ich gerade dachte: Die allererste Tabelle nennt u. a. den Eintrag für die zweite Tabelle. Die zweite Tabelle nennt Blickrichtung, X- und Y-Positionslisteneintrag und-
und-
UND-
*tröttröt*
Tileset.
DieChinesischeMauer wird mit diesem Dingensdingens auch gefüttert und aufgerufen.
~~~

Stunde rum, Resümee:
Ich habe drei Listen eingespeist, soweit ich sie hatte, und danach ein bisschen getestet, was so passiert, wenn ich andere Startwerte für den großen Verzweiger einstelle. Das Ergebnis ist: Es werden andere Maps geladen. O Wunder.
Na ja. Die nächste Stunde werde ich wohl mal *alle* Maps durchprobieren, die ich kann. Das werden viele werden.
liste.png
liste.png (45.3 KiB) 5382 mal betrachtet
Dateianhänge
Stunde 127.rar
(213.57 KiB) 174-mal heruntergeladen
pantalytron: ルトロンはくそのディスアセンブラだよ!
Perikles hat geschrieben:Man muss sich das mal reinziehen: die Idee ist scheiße, die theoretische Ausarbeitung ist scheiße, die praktische Umsetzung ist scheiße und der so entstehende Anspruch noch beschissener.

Benutzeravatar
lytron
Code Bro
Code Bro
Beiträge: 2664
Registriert: 12. August 2012, 20:18
+Positive Tradingpoints+: 12 von 12
Wohnort: ハノーファー区
Kontaktdaten:

Re: Disassemble Blog: Ihatovo Monogatari

Beitrag von lytron » 19. Mai 2013, 18:14

Stunde 128
Disassembled: 216.606 / 1.048.576 Bytes (20,657%)
Gehört: Sparta - Wiretap Scars, Tomohito Nishiura - Professor Layton vs Gyakuten Saiban Special OST-Single


Jetzt blätter ich mal in der Map-Liste. Bis zum bitteren Ende. Oder, bis zum Ende der Stunde. Wir machen mal guck-guck.

~~~
Ich kann mich nicht erinnern, als ich das Spiel mit Walkthrough durchgespielt habe, jemals im Kino gewesen zu sein, wo der Chaplin-Movie lief. o_O
imtest_00002.png
imtest_00002.png (9.42 KiB) 5373 mal betrachtet
~~~
Gerade per Zufall dieses Gebäude gefunden:
imtest_00003.png
imtest_00003.png (5.76 KiB) 5377 mal betrachtet
Dank Andre aus dem Chat weiß ich, dass da steht: "Hier ist die Bibliothek.". Mehr sagt der Typ nicht. Wenn ich das Haus verlasse, stehe ich mitten auf einem leeren Feld in der Stadt. Entweder, die Bibliothek wird irgendwie getriggert, dass sie in Ihatovo Town erscheint, oder... sie wurde aus der Entfassung geschnitten. Seis wies sei, ich finds voll cool. ^.^
Ich könnte mir fast vorstellen, dass ich noch so was finde, weil ich noch einen Exit fand, wo ich plötzlich mitten im Nirgendwo von Ihatovo Town stand.
~~~
Hammer. Gerade das hier gefunden:
imtest_00005.png
imtest_00005.png (5.37 KiB) 5373 mal betrachtet
Und wenn man die Butze verlässt, steht man hier:
imtest_00006.png
imtest_00006.png (21.69 KiB) 5373 mal betrachtet
Da der Ausgang dieses Hauses so nah am anderen Gebäude ist, und der Mann hinterm Tresen gar nichts zu sagen hat, gehe ich mal ganz stark davon aus, dass das nichtgenutzte Daten sind. Hammer. :goofy:

Stunde rum, Resümee:
Habe alle/die meisten Einträge in die Liste gebracht (~180) und knapp vierzig schon getestet. Und geheime Häuschen gefunden. ^.^
Läuft doch supi! ^.^
Dateianhänge
Stunde 128.rar
(214.63 KiB) 158-mal heruntergeladen
pantalytron: ルトロンはくそのディスアセンブラだよ!
Perikles hat geschrieben:Man muss sich das mal reinziehen: die Idee ist scheiße, die theoretische Ausarbeitung ist scheiße, die praktische Umsetzung ist scheiße und der so entstehende Anspruch noch beschissener.

Benutzeravatar
lytron
Code Bro
Code Bro
Beiträge: 2664
Registriert: 12. August 2012, 20:18
+Positive Tradingpoints+: 12 von 12
Wohnort: ハノーファー区
Kontaktdaten:

Re: Disassemble Blog: Ihatovo Monogatari

Beitrag von lytron » 19. Mai 2013, 20:31

Stunde 129
Disassembled: 216.606 / 1.048.576 Bytes (20,657%)
Gehört: Sparta - Wiretap Scars, Tomohito Nishiura - Professor Layton vs Gyakuten Saiban Special OST-Single


Weiter, nur Map-Einträge gucken.

~~~
Stunde rum, Resümee:
Ja gut, bin mit fast der ganzen Liste durchgekommen.
wholelist.jpg
wholelist.jpg (1.06 MiB) 5372 mal betrachtet
Komisch nur, dass der Film im Fuchsdorf an zwei verschiedenen Stellen flimmert, nämlich exakt nicht da, wo er flimmern sollte... o_O
imtest_00008.png
imtest_00008.png (28.73 KiB) 5372 mal betrachtet
imtest_00009.png
imtest_00009.png (25.18 KiB) 5372 mal betrachtet
pantalytron: ルトロンはくそのディスアセンブラだよ!
Perikles hat geschrieben:Man muss sich das mal reinziehen: die Idee ist scheiße, die theoretische Ausarbeitung ist scheiße, die praktische Umsetzung ist scheiße und der so entstehende Anspruch noch beschissener.

Benutzeravatar
lytron
Code Bro
Code Bro
Beiträge: 2664
Registriert: 12. August 2012, 20:18
+Positive Tradingpoints+: 12 von 12
Wohnort: ハノーファー区
Kontaktdaten:

Re: Disassemble Blog: Ihatovo Monogatari

Beitrag von lytron » 20. Mai 2013, 08:54

Stunde 130
Disassembled: 217.253 / 1.048.576 Bytes (20,719%)
Gehört: Yoko Shimomura - Legend of Mana OST (disc 1)


Den Rest Map-Einträge, danach die anderen Listeneinträge, die von diesen Map-Listen-Einträgen aufgerufen werden.

~~~
Stunde rum, Resümee:
So, zweite Liste ist auch komplett drin. Ich könnte jetzt wohl eine ganze Stunde damit verbringen, in den Kommentaren der zweiten Liste zu vermerken, für welche Maps die Einträge sind... aber das kann ich im Zweifelsfall auch an einem Arbeits-Feierabend machen.
Dateianhänge
Stunde 130.rar
(216.67 KiB) 182-mal heruntergeladen
pantalytron: ルトロンはくそのディスアセンブラだよ!
Perikles hat geschrieben:Man muss sich das mal reinziehen: die Idee ist scheiße, die theoretische Ausarbeitung ist scheiße, die praktische Umsetzung ist scheiße und der so entstehende Anspruch noch beschissener.

Benutzeravatar
ChronoMoogle
snesfreaks.com-Team
snesfreaks.com-Team
Beiträge: 9895
Registriert: 26. Februar 2007, 14:56
+Positive Tradingpoints+: 98 von 98
Wohnort: Nippon
Kontaktdaten:

Re: Disassemble Blog: Ihatovo Monogatari

Beitrag von ChronoMoogle » 20. Mai 2013, 10:42

Sehr sehr cool! Ungenutzte Maps und wichtige Infos fuer einen eventuellen Leveleditor^^
Ich lese gespannt mit!
Bild
| Mein YT Channel | Mein Twitter | Ich suche | Ich verkaufe | Foren SuFu |
...weil Terranigma einfach das Größte ist!

Benutzeravatar
duoGS
SNES-Programmer
SNES-Programmer
Beiträge: 108
Registriert: 9. Dezember 2012, 20:17
+Positive Tradingpoints+: 4 von 4

Re: Disassemble Blog: Ihatovo Monogatari

Beitrag von duoGS » 20. Mai 2013, 11:23

Einfach Klasse von dir, mach weiter so, bin schon gespannt auf weiteres :wink:

Benutzeravatar
lytron
Code Bro
Code Bro
Beiträge: 2664
Registriert: 12. August 2012, 20:18
+Positive Tradingpoints+: 12 von 12
Wohnort: ハノーファー区
Kontaktdaten:

Re: Disassemble Blog: Ihatovo Monogatari

Beitrag von lytron » 20. Mai 2013, 11:52

Stunde 131
Disassembled: 218.166 / 1.048.576 Bytes (20,806%)
Gehört: Yoko Shimomura - Legend of Mana OST (disc 2)


Dritte Liste. Diese Liste wird mir noch große Zahnschmerzen bereiten.
Es handelt sich um die Liste, die in DieChinesischeMauer gefüttert wird. Und die Eingabedaten eindeutig zu Lesen bin ich ja bisher gescheitert. Aber na ja, Daten sind Daten.

~~~
Oh, dieses Zuordnen der Listen zu einzelnen Maps (in den Kommentaren) könnte doch demnächst sehr lustig und spaßig werden, da bei der dritten Liste dann klar wird, welcher Listeneintrag welche Tilemap beherbergt.
~~~
Little Endian will be the death of me.
Ständiges Umdrehen von Bytes nervt. ~_~
~~~
Oh super. Gegen Ende dieser Liste verhedder ich mich jetzt auch noch im Byte Drehen.
~~~

Stunde rum, Resümee:
Dritte Liste ist drin, in der dritten Liste sind schon alle doppelten und leeren Einträge markiert (sind einige), die Subroutinen, die ich mal ganz zu Anfang in eigene Dateien ausgelagert habe, weil ich dachte, das mächte es übersichtlicher, sind zurück in der großen Datei, die vierte Liste (X- und Y-Positionen) ist angefangen.

Level-Editor? Ja, bitte.

PS: duoGS! Mann, schön dich zu sehen! :)
Dateianhänge
Stunde 131.rar
(213.88 KiB) 181-mal heruntergeladen
pantalytron: ルトロンはくそのディスアセンブラだよ!
Perikles hat geschrieben:Man muss sich das mal reinziehen: die Idee ist scheiße, die theoretische Ausarbeitung ist scheiße, die praktische Umsetzung ist scheiße und der so entstehende Anspruch noch beschissener.

Benutzeravatar
lytron
Code Bro
Code Bro
Beiträge: 2664
Registriert: 12. August 2012, 20:18
+Positive Tradingpoints+: 12 von 12
Wohnort: ハノーファー区
Kontaktdaten:

Re: Disassemble Blog: Ihatovo Monogatari

Beitrag von lytron » 20. Mai 2013, 14:28

Stunde 132
Disassembled: 218.734 / 1.048.576 Bytes (20,860%)
Gehört: Sparta - Wiretap Scars, Tomohito Nishiura - Professor Layton vs Gyakuten Saiban Special OST-Single


Vierte Liste. It goes on and on.

~~~
Stunde rum, Resümee:
Die vierte Liste ist drin. Auf die fünfte hatte ich gerade keinen Bock, da ich dazu erst einmal genauer schauen muss, was mit den Werten angestellt wird.
Darum habe ich angefangen, in den Kommentaren der anderen Listen ihre Herkunft zu vermerken.
Was ich ein wenig seltsam finde, ist: Z. B. werden für das Kenjinton (das Hotel) für den ersten Stock und das Erdgeschoss dasselbe Tileset genutzt. So fern man das Erdgeschoss über die Treppen vom ersten Stock her betritt, oder im zweiten Stock aufwacht. Betritt man den ersten Stock über die Treppen oder tritt über die Schwelle ins Kenjinton ein, sind das *jeweils* andere Ladebefehle für das Tileset.
Genauso gibt es zwanzig, dreißig Map-Ladebefehle für Ihatovo Town, je nachdem, welches Gebäude man gerade verlassen hat. Warum hat *jeder* dieser Einträge einen eigenständigen Tileset-Ladebefehl? Sind die Tilesets, die hier geladen werden, derart winzig, und reichen nur für einen Screen?
Fragen über Fragen... eventuell erst nachvollziehbar, wenn ich den Dekompressor habe.
Dateianhänge
Stunde 132.rar
(216.76 KiB) 175-mal heruntergeladen
pantalytron: ルトロンはくそのディスアセンブラだよ!
Perikles hat geschrieben:Man muss sich das mal reinziehen: die Idee ist scheiße, die theoretische Ausarbeitung ist scheiße, die praktische Umsetzung ist scheiße und der so entstehende Anspruch noch beschissener.

Ricoh-16
SNES-Baby
SNES-Baby
Beiträge: 37
Registriert: 10. Juli 2013, 13:11
+Positive Tradingpoints+: 1 von 1

Re: Disassemble Blog: Ihatovo Monogatari

Beitrag von Ricoh-16 » 12. August 2013, 09:59

Hallo Herr lytron,

die Warnung im Eingangspost hatte ich gelesen:
Dieses Board hat zu wenig Thread-Leichen. Also noch eine. [...] Und wenn ich keine Lust mehr habe, höre ich einfach auf.
Allerdings hatte ich bis jetzt gehofft, dass es nicht dazu kommen wird. Und um nicht täglich prüfen zu müssen, ob es nicht doch schon einen Fortschritt gibt, habe ich mich sogar hier im Forum angemeldet, um per E-Mail benachrichtigt zu werden - das war wirklich der Hauptgrund!

Ich fürchte aber, dass es hier wohl auf absehbare Zeit keinen neuen Status geben wird. (??) - Das wäre schade! :-(

Handelt es sich um eine temporäre Lustlosigkeit oder ist das Projekt völlig beendet?

Vielleicht noch ein paar Motivationsversuche:
- Du hast schon so viel erreicht und so viel dazu gelernt; Du willst doch jetzt nicht mittendrin einfach aufhören?! Jetzt, wo Du langsam "ein Gefühl" für den Code bekommst und es interessant geworden ist.

- Du arbeitest nicht für die Schublade. Es gibt Leute in der Welt, die begeistert und ungeduldig jede Nachricht zu diesem Projekt lesen und sich über jeden (noch so kleinen) Fortschritt freuen.

Vielleicht packt Dich ja doch wieder die Lust und Neugierde - ich würde mich freuen.

Grüße
Ricoh-16

Antworten