[Tiptoi] Unknown commands

Ulrich Sibiller uli42 at gmx.de
Do Jan 15 01:03:44 CET 2015


2015-01-14 23:16 GMT+01:00 Tobias Bäumer <to_b at gmx.de>:
> 02 00 (Zahlenwert 2 - bin mir nicht sicher, ob der nötig ist)

Wenn er da ist, ist er auch nötig...

> Bei OID 2202 findet "00 FB" auch Verwendung und hier sieht es ähnlich aus:
> 00 00 (Register 0 - dürfte ignoriert werden)
> 00 FB (Kommando)
> 01 (es folgt eine Zahl)
> 01 00 (Zahlenwert 1)
> 02 00 (Anzahl der Sounds: 2)
> 00 00 (erster Sound: Nummer 0)
> 01 00 (zweiter Sound: Nummer 1)
>
> Da "00 FB" sonst nirgendwo vorkommt, ist es schwierig, den Zahlenwert abzuleiten.
> Ich würde vorschlagen: Anzahl Soundfiles - 1

Ich glaube eher, dass es sich genau wie bei FC00 verhält:

 * `FC00` (written `P(b-a)`): Play a random sample from that inclusive
range. `a` := lowbyte(`m`), `b` := highbyte(`m`)

Dementsprechend also im obigen Beispiel der Range 0-1.

Ergo: FB00: Play all samples from that inclusive range. `a` :=
lowbyte(`m`), `b` := highbyte(`m`)

> Bei "E0 FF" (aus dem Puzzle Ponyhof) bin ich noch in der Detailanalyse, tippe aber auf Zufallswiedergabe aus einer Liste von Soundfiles.

Wofür wir auch schon ein Kommando (FC00) haben. Da stellt sich also
die Frage nach dem Unterschied. Wenn du testest: Ersetze doch einfach
mal E0FF durch 00FC und schaue, welcher Unterschied sich ergibt.

> Der Aufbau ist ähnlich wie bei "00 FB":
>
> Am Beispiel zu OID 6161:
> 00 00 (Register 0 - dürfte ignoriert werden)
> E0 FF (Kommando)
> 01 (es folgt eine Zahl)
> 01 00 (Zahlenwert 1)
> 02 00 (Anzahl der Sounds: 2)
> 43 00 (erster Sound: Nummer 67 "Jens und Florian")
> 44 00 (zweiter Sound: Nummer 68 "Nanu...")
>
> Zweites Beispiel OID 6165:
> 00 00 (Register 0 - dürfte ignoriert werden)
> E0 FF (Kommando)
> 01 (es folgt eine Zahl)
> 02 00 (Zahlenwert 2)
> 02 00 (Anzahl der Sounds: 2)
> 47 00 (erster Sound: Nummer 71 "Frau Ziegler")
> 48 00 (zweiter Sound: Nummer 72 "Sandras Mama")

Oha, der Zahlenwert 2 hier passt nicht zu meiner Range-Theorie.
Koennte allerdings auch einfach nur ein Fehler sein.

> An "E1 FF" (Ponyhof) habe ich bisher noch kein Bein bekommen:
>
> Am Beispiel zu OID 6217:
> 00 00 (Register 0 - dürfte ignoriert werden)
> E1 FF (Kommando)
> 01 (es folgt eine Zahl)
> FF FF (Zahlenwert 65535 - m.E. immer)
> 01 00 (Anzahl der Sounds: 1)
> 89 00 (erster Sound: Nummer 137 "Das ist ein Sack Hafer...")
>
> Sieht also aus, als würde da einfach eine Sounddatei abgespielt.
> Der Unterschied zum "normalen" Play(E8 FF) ist wohl nur, dass der Parameter nicht 0, sondern 65535 ist...

E8FF ist ja so definiert:
 * `FFE8` (written `P(m)`): Play audio referenced by the `m`th entry
in the indices list.

m wird hier dann auf FFFF gesetzt. Könnte also sein, dass der Wert
damit ignoriert wird und somit immer der erste in der Liste (oder doch
alle? oder der letzte?) abgespielt wird. Also P() statt P(m). Oder
dieser Play-Befehl kennt nur eine Obergrenze, dafür aber mit 16bit.
Also P(0-m).

Oder vielleicht wird damit eine Pause vor oder nach dem Abspielen
eingefügt? Oder die Lautstärke beeinflusst?

> Momentan hänge ich bei OID 6106 und 6140 (ziemlich ähnlicher Code, unterscheidet sich aber raw):
> Da werden abhängig vom Register 6 unterschiedliche Klänge mit "E1 FF" aufgerufen.
> "00 FE" taucht auch noch auf, aber der Wert von Register 6 wird m.E. nirgends erhöht...

Ja, das sieht in der Tat seltsam aus. Bugs in den gme-Files sind
allerdings nie auszuschliessen, es gab ja auch schon mehrere
GME-Releases für einzelne Bücher.

> Ich habe das alles bisher nicht verifizieren können, weil ich den ganzen Abend ein schlafendes Kind auf dem Arm hatte und nur einhändig arbeiten konnte.

;-) War zum Glück bei uns sehr selten nötig.

> Jetzt habe ich zwar wieder beide Hände frei, aber für heute keine Lust mehr, weiter zu machen.

Es sei dir gegönnt!

Gute Nacht,

Uli




Mehr Informationen über die Mailingliste tiptoi