<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Hallo Joachim,</p>
    <p>danke für die Einschätzung. Das hat mir Lust gemacht, es zu
      versuchen. Und tatsächlich, beim ersten Versuch hat es geklappt!</p>
    <p>Mein Workflow (ohne Recherchieren und Einlesen):</p>
    <p>1. GME-Datei in HxD öffnen (kostenloser Hex-Editor)<br>
      2. Adresse <code>0x0094 </code>(32bit offset to <a
        class="internal present"
href="https://github.com/entropia/tip-toi-reveng/wiki/GME-Special-symbols">special
        symbols</a>) ausfindig machen.<br>
      2a. Nach Generierung durch tttool steht dort einfach der
      32bit-Wert '0' drin.<br>
      3. Einen Offset eingetragen, der genau dem Dateiende+1 entspricht
      (würde also aus der Datei "herauszeigen")<br>
      3a. Ich habe hierzu den Eintrag in <code>0x0071</code> (32bit
      offset to the <a class="internal present"
        href="https://github.com/entropia/tip-toi-reveng/wiki/GME-Playlistlist">playlistlist</a>)
      eingesehen - die playlistlist ist praktischerweise ziemlich am
      Dateiende. Da habe ich die übrigen Bytes abgezählt und
      kopfrechnend zum Offset in <code>0x0071</code> hinzugerechnet.
      Geht mit Sicherheit auch eleganter durch Subtraktion der
      beteiligten Adressen statt Abzählen. :D<br>
      4. 40 Bytes (Wert: '0') am Dateiende hinzugefügt.<br>
      4a. Die nötige Länge habe ich der Seite "GME Special symbols"
      entnommen
      (<a class="moz-txt-link-freetext" href="https://github.com/entropia/tip-toi-reveng/wiki/GME-Special-symbols">https://github.com/entropia/tip-toi-reveng/wiki/GME-Special-symbols</a>).<br>
      5. In der GME-Datei von "Mein Wörter-Bilderbuch Tiere" die
      16bit-kodierten OIDs für Wiederholen (5402) und Stop (5401)
      ausgelesen.<br>
      5a. Ich habe hierzu in dieser Datei den Offset in Adresse <code>0x0094</code>
      herausgesucht und bin dann an den Ort gesprungen. Die ersten 32bit
      enthalten die beiden o.g. 16bit-Werte.<br>
      6. Eintragung dieser 2x16bit in meiner GME-Datei in Adresse <code>0x0094+Offset</code>.
      (das sind also die ersten 4 Byte der hinzugefügten 40 Bytes).<br>
      7. Speichern.<br>
      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!</p>
    <p>Noch zwei Anmerkungen:</p>
    <p>A. Für o.g. Workflow wäre es vielleicht hilfreich, wenn tttool an
      Adresse <code>0x0094 </code>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ß.</p>
    <p>Man kann sicher aber auch ein Tool basteln, das einfach blind 40
      Bytes an die Datei anhängt und dann in <code>0x0094</code> den
      entsprechenden Offset schreibt.<br>
    </p>
    <p>B. Keine Ahnung, ob das eigentlich selbstverständlich für die
      Offset-Adressierung ist, aber ich hatte beim Lesen der Seite "GME
      Playlistlist"
      (<a class="moz-txt-link-freetext" href="https://github.com/entropia/tip-toi-reveng/wiki/GME-Playlistlist">https://github.com/entropia/tip-toi-reveng/wiki/GME-Playlistlist</a>)
      zunächst Zweifel. Dort steht: "A 16bit value followed by that many
      32bit offsets to playlists."</p>
    <p>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
      <code>0x0071 </code>gespeichert. Die gelisteten Offsets innerhalb
      dieser Playlistlist werden auch genau von Adresse <code>0x0071</code>
      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)."</p>
    <p>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. :)</p>
    <p>Viele Grüße<br>
      Thomas<br>
    </p>
    <div class="moz-cite-prefix">Am 16.10.2020 um 10:46 schrieb Joachim
      Breitner via tiptoi:<br>
    </div>
    <blockquote type="cite"
cite="mid:2f075178a4d3210e14f0a2b6d476e473e373dd56.camel@joachim-breitner.de">
      <pre class="moz-quote-pre" wrap="">Hallo,

Am Donnerstag, den 15.10.2020, 17:28 +0000 schrieb Thomas Schäfer via
tiptoi:
</pre>
      <blockquote type="cite">
        <pre class="moz-quote-pre" wrap="">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?
</pre>
      </blockquote>
      <pre class="moz-quote-pre" wrap="">
ich denke schon. Erfolgsberichte sind willkommen, vielleicht lernst du
ja noch was neues (oder kannst wenigstens bestätigen was auf
 <a class="moz-txt-link-freetext" href="https://github.com/entropia/tip-toi-reveng/wiki/GME-Special-symbols">https://github.com/entropia/tip-toi-reveng/wiki/GME-Special-symbols</a>
steht)

Cheers,
Joachim

</pre>
    </blockquote>
  </body>
</html>