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

Christian
snesfreaks.com-Team
snesfreaks.com-Team
Beiträge: 3709
Registriert: 10. September 2005, 01:10
+Positive Tradingpoints+: 56 von 56
Wohnort: Kempen
Kontaktdaten:

Re: Disassemble Blog: Ihatovo Monogatari

Beitrag von Christian » 30. Dezember 2012, 17:32

Ich verstehe wirklich KEIN EINZIGES Wort von dem, was du da machst, aber dickes :respekt: von mir für deine Ausdauer und vor allem deine originelle Tagebuch-Führung. Klasse, dass du uns auf diese Art teilhaben lässt. :)
Bild

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 » 30. Dezember 2012, 18:36

LostTemplar hat geschrieben:Ein kleiner Tipp von mir: Wenn du mal nicht weiterkommst beim "sequentiellen" Disassemblieren (d.h. von vorne alle der Reihe nach durch), dann versuch's doch mal von hinten aufzurollen.

Du kannst zum Beispiel schauen, wo im Menü (falls das Spiel eines hat...) Text ausgegeben wird (z.B. mit Breakpoint auf die Tilemap). Wenn du die Routine hast, schaust du, wo sie aufgerufen wird und findest dann irgendwann die Routine, die das ganze Menü malt usw.

Der Sinn dahinter ist, dass es viel, viel einfacher ist, etwas zu verstehen, wenn man schon weiß, was es eigentlich tut. Aus Erfahrung weiß ich selbst, dass es ziemlich schwierig ist, ein Spiel einfach von vorne und der Reihe nach zu disassemblieren. Denn viele Sachen dienen nur zur Vorbereitung für spätere Berechnungen/Übertragungen/sonst was, und man fühlt sich schnell überwältigt.
Wehey! Moin LostTemplar, ich freu mir, dir hier zu sehen! :)

An dem jetzigen Brecher versuche ich mich zur Zeit auch im rückwärtigen Aufarbeiten, aber zur Zeit nur mit mäßigem Erfolg. Wo du dich einschaltest, fällt mir ein, dass ich immer noch nicht das Geiger-Programm getestet habe, das mir Svambo geschickt hat, was sich langsam in der Vorstellung verhornt, dass er mich für nicht Willens hält, seinen Tipp mit dem Programm auszuprobieren...

... Svambo, falls du das hier liest: Das ist kein Widerwille, das ist einfach nur Dummheit! Sei unbesorgt! :D

... Moment. Was habe ich da gerade-?
Egal. Diese Breakpoint-Analyse wäre sicherlich hilfreich bei so manchen Sachen, allein nur um zu checken, ob ich das richtig vermutet habe, was am Ende einer Berechnung rauskommt oder nicht.

Ich muss, ich muss, ich muss mal dieses Programm ausprobieren...! :bang:
Christian hat geschrieben:Ich verstehe wirklich KEIN EINZIGES Wort von dem, was du da machst, aber dickes :respekt: von mir für deine Ausdauer und vor allem deine originelle Tagebuch-Führung. Klasse, dass du uns auf diese Art teilhaben lässt. :)
Dankeschön, ich hoffe, das bringt trotzdem ein bisschen Leben und Entertainment in die Butze. :D
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 » 31. Dezember 2012, 21:13

Stunde 69
Disassembled: 145.048 / 1.048.576 Bytes (13,833%)
Gehört: Neues aus der Anstalt 21


Von neuem im Zweifel, wie konsequent ich jetzt arbeiten werde...

Offen ist noch eine Subroutine, EinsZwoDreiZeh.

Quasi: Die Füße sind offen. Oh yeah!
~~~

Code: Alles auswählen

	EinsZwoDreiCeh:
	LDA $AC.b
	REP #$30.b
	ASL a
	ASL a
	ASL a
	ASL a
	STA $AD.b
	LDA $B1.b
	LSR a
	LSR a
	LSR a
	LSR a
	STA $B5.b
	AND #$000F.w
	STA $00.b
	LDA $B3.b
	LSR a
	LSR a
	LSR a
	LSR a
	STA $B7.b
	LDA $B3.b
	AND #$00F8.w
	ASL a
	CLC
	ADC $00.b
	ASL a
	AND #$03FE.w
	STA $B9.b
	LDA $B5.b
	AND #$0010.w
	BEQ LeaveSomeOut
	LDA #$0400.w
	ORA $B9.b
	STA $B9.b
	BRA LeaveSomeOut
	LDA $AC.b
	REP #$30.b
	ASL a
	ASL a
	ASL a
	ASL a
	STA $AD.b
	LDA $B1.b
	LSR a
	LSR a
	LSR a
	LSR a
	STA $B5.b
	LDA $B3.b
	LSR a
	LSR a
	LSR a
	LSR a
	STA $B7.b
	LeaveSomeOut: ; 1294
	LDA $B7.b
	STA $20.b
	LDA $AD.b
	JSL DerGeldVerbrenner		; $009042 = $0000:1042
	LDA $B5.b
	CLC
	ADC $24.b
	ASL a
	STA $BB.b
	LDA #$0000.w
	SEP #$20.b
	RTL
~~~
Grober Ablauf:
$AC * 16 ==> $AD (= $AE)
$B1 : 16 ==> $B5
$B5 & AND #$000F ==> $00
$B3 : 16 ==> $B7
$B3 & AND #$00F8 * 2 + $00 * 2 & AND #$03FE ==> $B9

Wenn $B5 nicht Bit 4 gesetzt hat (AND #$0010), lasse dieses aus:
$0400 & ORA $B9 ==> $b9

$B7 ==> $20
Mit $AD gehts zu DerGeldVerbrenner
$B5 + $24 ==> $BB

Keine Ahnung, keine Ahnung. Schau ich mal den Geld-Verbrenner.
~~~
DerGeldVerbrenner:
STZ $23.b
STA $22.b
PHP
PHX
REP #$30.b
LDA #$0000.w
STA $24.b
LDX #$000F.w
UndWiederZurueck:
LDA $20.b
LSR a
STA $20.b
BCC EinPaarBytesWeiter
LDA $24.b
CLC
ADC $22.b
STA $24.b
EinPaarBytesWeiter:
LDA $22.b
ASL a
STA $22.b
DEX
BPL UndWiederZurueck
LDA #$0000.w
PLX
PLP
RTL
#$00 ==> $23
$AD ==> $22
#$00 ==> $24
#$00 ==> $25
In einem Loop (UndWiederZurueck, $0F mal durchlaufen):
$20 : 2 ==> $20. Wenn der Rest bei der Teilung eins war (bzw., korrekter, der durch "LSR a" rausgeschmissene Bit den Wert "eins" hatte), wird $22 auf $24 addiert (und wieder in $24 gespeichert).
In jedem Fall wird anschließend $22 verdoppelt. Und das wars.
~~~

Stunde rum, Resümee:
Öh...
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 » 2. Januar 2013, 13:45

Bad news again.

And... as they are bad, I share them with our English buddies, too.

I played through Ihatovo Monogatari. And then google-translated the stuff I posted here. And then compared the Blog dates with the broadcasting dates of BS Ihatovo Monogatari.

There is no such thing as a second Ihatovo Monogatari.

Seems like they only pimped it with Soundlink, not more. At least two of the three BSIM scenes that can be seen on screenshots happen in the Original game, too. And the eight chapters of BSIM are the same as the original ones. So, if there are differences between both versions other than the Timer and division into four two-chapter-units, than these are minor ones.

This is a dark hour... :(

~~~

Next news: The translation of this game should be "Ihatovo Story", not as I mentioned before, "Ihatov Story".
I thought the -o-Appendix was something that came from the Japanese inability for consonants without vowels. BUT: As mentioned (IIRC) in the English Kenji-Miyazawa-Wikipedia-Article, the -o is attached to make it sound like an Esperanto-word. Kenji Miyazawa showed big interest in Esperanto.
Furthermore, later in the game there are some places where you can see "Ihatovo" in Roman letters. And: In the credits, the game calls itself "Ihatovo Story".

And now... I try to find a good screen capture software (VirtualDub, why do you have to be so buggy? We could be so happy with each other...)
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.

Gandalf
SNES-Freak
SNES-Freak
Beiträge: 379
Registriert: 2. September 2008, 14:03
+Positive Tradingpoints+: 3 von 3
Kontaktdaten:

Re: Disassemble Blog: Ihatovo Monogatari

Beitrag von Gandalf » 2. Januar 2013, 15:48

Ich habe mal zwei Fragen; ich hoffe, dass ich den Thread nicht hijacke ;)

1.) Wie sind die Sprites eigentlich gespeichert? Wahrscheinlich nicht als *.bmp Dateien ;)

2.) Kann man sagen, in welcher Programmiersprache ein SNES-Spiel geschrieben ist, bzw. ist der Code eines Spiels 20 Jahre alt oder werden Elemente daraus heute immer noch benutzt.
Wenn ihr Scans von Anleitungen und Magazinen, Roms, und anderen Daten die mit dem Super Nintendo zu tun haben mit anderen Teilen wollt, dann schaut euch mal die Super Nintendo Cloud an

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 » 2. Januar 2013, 15:58

Gandalf hat geschrieben:Ich habe mal zwei Fragen; ich hoffe, dass ich den Thread nicht hijacke ;)

1.) Wie sind die Sprites eigentlich gespeichert? Wahrscheinlich nicht als *.bmp Dateien ;)

2.) Kann man sagen, in welcher Programmiersprache ein SNES-Spiel geschrieben ist, bzw. ist der Code eines Spiels 20 Jahre alt oder werden Elemente daraus heute immer noch benutzt.
1) Die werden umgerechnet. Ich habe da mal eine Beschreibung geschrieben, wie.

2) SNES-Spiele sind in Assembler geschrieben, also Maschinensprache. Die sind direkt auf das SNES zugeschnitten (soll heißen: Ein- und Ausgabegeräte wie zum Beispiel die Controller oder der Soundchip haben ein ganz spezielles, eigenes System, wie sie die Daten übergeben oder wie sie die Daten bekommen möchten), sodass davon für heutige Systeme nichts mehr gebraucht wird; es wäre einfach zu aufwendig, das anzupassen.
Die Emulatoren wiederum stellen das SNES nach und "dolmetschen" zwischen den Daten des Spiels und dem Computer. Und auf der Wii gehe ich mal davon aus, dass die auch einfach nur einen Emulator geschrieben haben, damit man auf der Konsole spielen kann.

Weitere allgemeine Programmierfragen immer wieder gern, aber bitte im Maggi-Fix-Thread. Da passen die besser hin. :)
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 » 3. Januar 2013, 00:01



Spent the whole day on this...
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
KiddoCabbusses
SNES-Programmer
SNES-Programmer
Beiträge: 128
Registriert: 7. August 2011, 01:01
+Positive Tradingpoints+: 0 von 0
Wohnort: The St.GIGA Satellite
Kontaktdaten:

Re: Disassemble Blog: Ihatovo Monogatari

Beitrag von KiddoCabbusses » 3. Januar 2013, 00:38

Jotting notes down from this thread. Thank you for any info you provide that is relevant to the Satellaview. :)

I kinda expected BS Ihatovo to be the same in terms of overall narrative and game structure as the retail game. However, as BS Zelda easily shows, it being a "version" of the game doesn't necessarily mean it's exactly the same (Although since this is a third party game, it's more likely so than with first-party Nintendo titles). Even knowing how the narrative was split and how this affected gameplay could be interesting case studies into how the Satellaview worked.

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 » 3. Januar 2013, 08:56

KiddoCabbusses hat geschrieben:Jotting notes down from this thread. Thank you for any info you provide that is relevant to the Satellaview. :)

I kinda expected BS Ihatovo to be the same in terms of overall narrative and game structure as the retail game. However, as BS Zelda easily shows, it being a "version" of the game doesn't necessarily mean it's exactly the same (Although since this is a third party game, it's more likely so than with first-party Nintendo titles). Even knowing how the narrative was split and how this affected gameplay could be interesting case studies into how the Satellaview worked.
Kiddooo! Nice to read you! :)

MadHatter wrote in his Satellaview-Blog about BS Ihatovo Monogatari:
The game is a sequel to the 1993 Hecht game for the SNES, Ihatovo Monogarati (「イーハトーヴォ物語」), earlier-broadcast for the Satellaview as well.
So I understood it as: They first broadcasted the Original game and then a sequel. But, I guess, if I would examine the broadcast list (which is complete for the whole Satellaview runtime, correct?), I would only find "BS Ihatovo Monogatari".
I realized, too, that the first chapter of the Original game was not part of BSIM. According to these Japanese info bits I posted, it starts with the Chapter "Kairo Dancho", that is the second chapter in the original game. As you don't get one of the seven notebooks at the end of the "Fire Stone", but the chapter name giving item you don't necessarily need to finish the game, this one was predestined to be cut out. Without that chapter, we have an even number of chapters that could be better spread in "Broadcasting bits".
So, I think BSIM is rather a trimmed than an enhanced IM. :(
Especially, if no one recorded the Soundlink broadcast. :(
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 » 3. Januar 2013, 10:50

Constantly contradicting myself...
... like alternate current...

In the BS-version, they added at least one new cut scene image:
peacock.jpg
peacock.jpg (58.61 KiB) 3557 mal betrachtet
The upper screen is, as you know, from the BS version. The lower is from the Original game. The message says that you got the peacock (クジャク) notebook (手帳).
クジャクじる手帳を手にいれた
I don't know what the signs between "peacock" and "notebook" mean: じる. Google-translation translates it as: "Ji Ru" (so... it doesn't translate it at all).

This notebook is the first one you receive in the game, after completing the Kairo-dancho-Chapter (that fits to the timer, saying 0:16?). And, it's IIRC the only one of the seven which is red.
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 » 3. Januar 2013, 13:32

Temporary File Dump.
Dateianhänge
Unbenannt.jpg
Unbenannt.jpg (60.56 KiB) 3549 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.

LostTemplar
SNES-Gamer
SNES-Gamer
Beiträge: 55
Registriert: 21. Februar 2012, 09:41
+Positive Tradingpoints+: 0 von 0
Kontaktdaten:

Re: Disassemble Blog: Ihatovo Monogatari

Beitrag von LostTemplar » 3. Januar 2013, 19:55

lytron hat geschrieben:Constantly contradicting myself...
クジャクじる手帳を手にいれた
I don't know what the signs between "peacock" and "notebook" mean: じる. Google-translation translates it as: "Ji Ru" (so... it doesn't translate it at all).
It's じるし, or rather しるし(印), and means "mark/symbol/sign". し becomes じ because it's combined with クジャク. So "Notebook with the Peacock Mark/Symbol".

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 » 4. Januar 2013, 20:49

Stunde 70
Disassembled: 145.048 / 1.048.576 Bytes (13,833%)
Gehört: Regen auf dem Fenster, Kaffee in der Küche


Nach dem die Einzelteile inspiziert sind, will ich mich an der Summe selbiger versuchen.

~~~
Ich bin beruhigt. Am Anfang, bevor EinsZwoDreiCeh und SetzMalKaffeeAuf aufgerufen werden, werden Werte in Variablen gespeichert, die mir aus den beiden Subroutinen schon bekannt vorkommen. Das heißt, ich kann mir jetzt selbige "in Flussrichtung" anschauen und gucken, wie damit gearbeitet wird.
Überrascht bin ich allerdings ein wenig durch die (neuerliche) Feststellung, dass diese beiden Subroutinen innerhalb eines Loops aufgerufen werden (HomeFishy), und dementsprechend nicht einmal, sondern einige Male durchlaufen werden.
~~~
(72 Stunden Pause)
~~~
Okay, es wird unübersichtlich.
Die Subroutine JT54 enthält FischAmHaken, und FischAmHaken enthält EinsZwoDreiCeh und SetzMalKaffeeAuf.
Ich war so lange mit FischAmHaken beschäftigt, dass ich vergessen habe, dass da noch eine Subroutine "drumherum schwebt" und in der werden Werte in Variablen gespeichert, die dann in dieser Subroutine genutzt werden. Das gab einen kurzen Moment der Verwirrung. ;)
~~~
Bedauerlicherweise muss ich wieder die Untersuchung auf halber Strecke abbrechen, weil ich es heute nicht mehr meinen Kopf für sowas beisammen halten kann. Seltsam, stimmts?
Also nutze ich die Zeit für einen kleinen Abgleich. Denn, ich finde es seltsam, dass mein Intro-Gedicht so komisch aussieht. Also gucke ich mir mal mittels NO$SNS und dessen schicken VRAM-Viewer an, was währenddessen im VRAM so herumliegt.
Direktabgleich.jpg
Direktabgleich.jpg (302.4 KiB) 3519 mal betrachtet
Gut, weiß ich wenigstens, dass es daran liegt. Also mache ich dann endlich mal einen Abgleich einer Nicht-Code-Bank, um zu sehen, ob es vielleicht daran liegt.
Ich vergleiche und stelle auf den ersten Blick fest, dass ich beim Kanji-Letterset ganz offensichtlich das falsche Kanji-Letterset eingesetzt habe. Ich habe aber leider keine Ahnung mehr, wo ich die Daten her habe, die ich fälschlicherweise dort hingepackt habe.

Ist das jetzt ein gutes Zeichen?

Stunde rum, Resümee:
Heute war kein guter Tag.
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 » 6. Januar 2013, 20:51

Got Milk?
Got bored.

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
kolwe-x
SNES-Programmer
SNES-Programmer
Beiträge: 122
Registriert: 23. Mai 2012, 23:06
+Positive Tradingpoints+: 2 von 2

Re: Disassemble Blog: Ihatovo Monogatari

Beitrag von kolwe-x » 7. Januar 2013, 19:43

U got milk? - Great, I got cookies ;)

Respekt, das Video gefällt mir. Dank dir werde ich wohl doch wieder mit Japanisch anfangen :D
Bild
Immer auf der Suche nach netten Mitspielern ;). Könnt mich gern adden.

Antworten