[Tiptoi] Wiederholen / Spiel programmieren

Thomas Schäfer thomas.schaefer at itschert.net
Fr Okt 16 22:37:16 CEST 2020


Hallo Joachim,

danke für die Einschätzung. Das hat mir Lust gemacht, es zu versuchen. 
Und tatsächlich, beim ersten Versuch hat es geklappt!

Mein Workflow (ohne Recherchieren und Einlesen):

1. GME-Datei in HxD öffnen (kostenloser Hex-Editor)
2. Adresse |0x0094 |(32bit offset to special symbols 
<https://github.com/entropia/tip-toi-reveng/wiki/GME-Special-symbols>) 
ausfindig machen.
2a. Nach Generierung durch tttool steht dort einfach der 32bit-Wert '0' 
drin.
3. Einen Offset eingetragen, der genau dem Dateiende+1 entspricht (würde 
also aus der Datei "herauszeigen")
3a. Ich habe hierzu den Eintrag in |0x0071| (32bit offset to the 
playlistlist 
<https://github.com/entropia/tip-toi-reveng/wiki/GME-Playlistlist>) 
eingesehen - die playlistlist ist praktischerweise ziemlich am 
Dateiende. Da habe ich die übrigen Bytes abgezählt und kopfrechnend zum 
Offset in |0x0071| hinzugerechnet. Geht mit Sicherheit auch eleganter 
durch Subtraktion der beteiligten Adressen statt Abzählen. :D
4. 40 Bytes (Wert: '0') am Dateiende hinzugefügt.
4a. Die nötige Länge habe ich der Seite "GME Special symbols" entnommen 
(https://github.com/entropia/tip-toi-reveng/wiki/GME-Special-symbols).
5. In der GME-Datei von "Mein Wörter-Bilderbuch Tiere" die 
16bit-kodierten OIDs für Wiederholen (5402) und Stop (5401) ausgelesen.
5a. Ich habe hierzu in dieser Datei den Offset in Adresse |0x0094| 
herausgesucht und bin dann an den Ort gesprungen. Die ersten 32bit 
enthalten die beiden o.g. 16bit-Werte.
6. Eintragung dieser 2x16bit in meiner GME-Datei in Adresse 
|0x0094+Offset|. (das sind also die ersten 4 Byte der hinzugefügten 40 
Bytes).
7. Speichern.
8. Geänderte GME-Datei auf den Tiptoi geladen, gestartet, mein Projekt 
aktiviert. Eine beliebige OID ausgewählt. Sound angehört. 
Wiederholungszeichen aus "Mein Wörter-Bilderbuch Tiere" angetippt. 
Vorigen Sound erneut gehört!

Noch zwei Anmerkungen:

A. Für o.g. Workflow wäre es vielleicht hilfreich, wenn tttool an 
Adresse |0x0094 |nicht einfach den Wert 0 schreibt, sondern tatsächlich 
40 Bytes am Dateiende ergänzt und dort dann darauf verweist. Wenn das 
einmal implementiert ist, ist der Schritt, in YAML eine 
Syntaxerweiterung vorzunehmen, um OID-Codes für Restart und Stop zu 
ergänzen, vielleicht auch nicht mehr so groß.

Man kann sicher aber auch ein Tool basteln, das einfach blind 40 Bytes 
an die Datei anhängt und dann in |0x0094| den entsprechenden Offset 
schreibt.

B. Keine Ahnung, ob das eigentlich selbstverständlich für die 
Offset-Adressierung ist, aber ich hatte beim Lesen der Seite "GME 
Playlistlist" 
(https://github.com/entropia/tip-toi-reveng/wiki/GME-Playlistlist) 
zunächst Zweifel. Dort steht: "A 16bit value followed by that many 32bit 
offsets to playlists."

Mir war zuerst nicht klar, von wo aus diese Offsets gerechnet werden 
sollen. Vom Beginn der Playlistlist jedenfalls nicht, dafür waren die 
Werte viel zu groß. Nach etwas Nachdenken bin ich dann dahinter 
gekommen. Der Offset für die Playlistlist ist in Adresse |0x0071 
|gespeichert. Die gelisteten Offsets innerhalb dieser Playlistlist 
werden auch genau von Adresse |0x0071| aus adressiert! Vielleicht könnte 
man hinter den o.g. Satz aus der Dokumentation ergänzen: "These offsets 
have to be applied to the address where the playlistlist offset is 
stored (0x0071)."

Ob das nötig oder sinnvoll ist, kann ich nicht bewerten. Und ich weiß 
auch nicht ob es sinnvoll ist, die Adresse konkret hineinzuschreiben. 
Ich habe es mal getan, damit deutlicher wird, was ich überhaupt meine. :)

Viele Grüße
Thomas

Am 16.10.2020 um 10:46 schrieb Joachim Breitner via tiptoi:
> Hallo,
>
> Am Donnerstag, den 15.10.2020, 17:28 +0000 schrieb Thomas Schäfer via
> tiptoi:
>> Habe ich das aber richtig verstanden? Wenn ich die passende Adresse im HEX-Editor ausfindig mache und die OID korrekt eintrage, dann sollte/könnte das theoretisch funktionieren, ja?
> ich denke schon. Erfolgsberichte sind willkommen, vielleicht lernst du
> ja noch was neues (oder kannst wenigstens bestätigen was auf
>   https://github.com/entropia/tip-toi-reveng/wiki/GME-Special-symbols
> steht)
>
> Cheers,
> Joachim
>
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <https://lists.nomeata.de/pipermail/tiptoi/attachments/20201016/68df28ae/attachment.htm>


Mehr Informationen über die Mailingliste tiptoi