[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