[Tiptoi] Fwd: GME-Dateien generieren

Ulrich Sibiller uli42 at gmx.de
Fr Jan 30 00:36:33 CET 2015


Hallo,

anbei eine uralte Mail, in der ich etwas bezueglich der
Language-Strings geschrieben habe. Ist das so implementiert?

Uli



---------- Forwarded message ----------
From: Ulrich Sibiller <uli42 at gmx.de>
Date: 2014-01-18 3:21 GMT+01:00
Subject: Re: GME-Dateien generieren
To: Joachim Breitner <mail at joachim-breitner.de>
Cc: Bjoern Grothkast <b.grothkast at online.de>, Matthias Weber
<matthiaz.weber at gmx.de>, Michael Wolf <susonicth at gmail.com>


2014/1/18 Joachim Breitner <mail at joachim-breitner.de>:
> Hi,
>
> Am Samstag, den 18.01.2014, 01:27 +0100 schrieb Ulrich Sibiller:
>> Neue Erkenntnisse:
>> - Der Power-On-Sound wird über die an Position 0x71 festgelegte
>> Adresse referenziert. Ist 0x71 0, dann wird einfach kein
>> Begrüssungssound abgespielt, der Rest tut aber. Welche Relevanz jetzt
>> Spiel 253 hat, ist mir nicht klar.
>
> Ok, lasse ich erstmal leer. Ist 0x71 ein Offset auf eine Playlist? Eine
> Playlistlist? Oder steht da einfach die Nummer des Audio-Stücks?

Siehe Readme (pullen!)

>> - 0x018 zeigt auf eine der üblichen Listen. Die ersten 16bit geben die
>> Länge an, der Rest sind die Vorbelegungen für die Register
>> (verifziert!)
>>
>> Im Bauernhof-Buch sind das 101 Register, alle mit 9 vorbelegt außer
>> dem ersten Register (also $0), das wird hier auf 1, also Entdecken,
>> gesetzt. Und ich denke, die werden zwingend gebraucht, also solltest
>> du das als nächstes implementieren.
>
> Ist drin, wird mit info angezeigt, bei play verwendet und bei rewrite
> rausgeschrieben.

Sieht gut aus.

>> - 0x1c hat was mit dem XOR zu tun, ist dieser Wert in zwei gme-File
>> identisch, dann ist es auch der XOR-Wert. Ich schlage vor, du setzt da
>> mal die 0x39 und XORs mit 0xAD (wie im Bauernhof-Original)
>
> Ist auch drin, info zeigt es an, und rewrite schreibts wieder raus.

OK.

Und ich hab hab jetzt rausgefunden, woran es hakt:

Du hast einen 37 Zeichen langen String da drin. Das ist OK. ABER: Was
wir bisher noch nicht wussten: An Position 0x21 + Stringlaenge + 8
(also direkt nach dem Datum) bis inkl. 0x5F muessen entweder Nullbytes
stehen oder ein Language-String, welcher zu Sprache des Stiftes passt
(GERMAN, DUTCH, FRENCH, ITALIAN). Sonst wird das File abgelehnt. Der
Language-String muss vollständig sein. Direkt vor dem Language-String
muss eine ASCII-Ziffer stehen. Also
0x20: Stringlänge l
0x21: l*Zeichen
0x21+l: (mindest. eine Ziffer + Languagestring) (optional)
Auffuellen mit Nullbytes bis inkl 0x5f

Beachtet man das, tut auch das mit rewrite erzeugte gme-File!

Uli




Mehr Informationen über die Mailingliste tiptoi