[Tiptoi] TT-Homebrew - Eigene Binaries für GME-Dateien programieren

Joachim Breitner mail at joachim-breitner.de
So Dez 8 12:16:30 CET 2024


Hallo allerseits,

gibts hierzu inzwischen neue Erkenntnisse?

Sehe ich das richtig dass es bisher noch nicht gelungen ist mit einer
vollständig selbst erstellten GME-Datei (also ohne aus Ravensburger-
GMEs übernommenen Binaries) auf OIDs zu reagieren?


Und wissen wir ob, wenn es eine Main-Binary und eine Game-Binary gibt,
und man die Game-Binary gestartet hat (mit G(0)), dann auch weiter alle
zehntel Sekunde die Main-Binary aufgerufen wird, oder läuft dann nur
die Game-Binary? (Kann man vielleicht mit einem Zähler prüfen)

Vielleicht (blind geraten) ist es die Main-Binary die OID-Werte
irgendwie anders ausliest, prüft ob sie für das laufende Spiel gedacht
sind, und diese dann nach fpAkOidPara[oid_offset] schreibt und die
Ausführung an das Spiel übergibt?


Cheers,
Joachim


Am Montag, dem 28.10.2024 um 20:03 +0100 schrieb Florian via tiptoi:
> Hallo,
> 
> > Bei dir funktioniert get_tipped_oid?
> 
> Ja, hab es gerade noch mal getestet. Sowohl auf 3L und 2N. Habe es als 
> Gamebinary hinzugefügt. Wenn ich es als Main Binary einsetze, erhalte 
> ich das von dir beschriebene verhalten.
> 
> Desweiterem gibt es scheinbar einen Unterschied zwieschen Main-Binaries, 
> die Main320... heißen und älteren, welche OidMain. heißen. Gibt es da 
> vllt ein Value im Header, welches sich bei diesen unterscheidet? Bei 
> OidMain-Binaries wird der GME-Welcome-Sound abgespielt, bei Main320... 
> Binaries wird nicht der GME-Welcome-Sound abgespielt, nur das, was man 
> in der Binary programmiert.
> 
> Ich vermute, dass die Main-Binary irgendwie die Oids setzt, die von der 
> GME genutzt werden. Das würde erklären, wieso es als Main-Binary nicht 
> geht und eine Game-Binary auch keine Oids von anderen Büchern lesen 
> kann. Ist aber nur eine Vermutung, habe in den Main-Binarys keine 
> direkten Referenzen auf die Oids gefunden, könnte aber in einer 
> Firmwarefunktion versteckt sein.
> 
> 
> Mit freundlichen Grüßen,
> 
> Florian
> 
> On 27.10.24 20:22, Joachim Breitner via tiptoi wrote:
> > Hi,
> > 
> > Am Sonntag, dem 27.10.2024 um 18:19 +0100 schrieb Joachim Breitner via
> > tiptoi:
> > > Am Sonntag, dem 27.10.2024 um 16:03 +0100 schrieb Florian via tiptoi:
> > > > das wundert mich. Bist du dir sicher, dass du wirklich die Main-Binary
> > > > erstetzt? Soweit ich gesehen habe, tut diese den welcome-sound
> > > > abspielen. Somit sollte dieser nicht mehr abgespielt werden, wenn man
> > > > diese ersetzt. Oder macht das dein playSound(36)?
> > > Ja, playSound(36) ist der Anschaltsound.
> > > 
> > > > Ich würde empfehlen, ein Spiel zu ersetzen, und die Main Binary zu
> > > > lassen, wenn es einem darum geht, Spiele zu schreiben. Zumindest so
> > > > lange, bis diese vollständig verstanden ist.
> > > Ok, probiere ich mal
> > 
> > hmm, vielleicht war ich zu optimistisch am Donnerstag, zumindest kann
> > ich es jetzt nicht mehr alles reproduzieren.
> > 
> > 
> > Wenn ich das Feld
> > 
> >   * `0x009C`: 32bit. purpose unknown, can be 0.
> > 
> > auf 1 setze, aber keine Binaries habe, dann gehen die GME-Dateien, die
> > sonst vorher taten, nicht mehr. Genauer: Anschaltsound wird abgespielt,
> > der Rest nicht, Stift wohl abgestürzt, auch Lautstärke tut nicht mehr.
> > 
> > 
> > Wenn ich es auf 0 lasse, aber eine Main-Binary definiere, hat die kein
> > Effekt: Es kommt weiter der Anschaltsound aus der GME, und die GME
> > funktioniert sonst auch.
> > 
> > Wenn ich das Feld auf 1 setze und deine play_sound binary als Main-
> > Binary definiere, dann höre ich erst den Anschaltsound laut GME, dann
> > läuft dein play_sounds (und spielt alle Sounds der Reihe nach ab).
> > Main-Binary per tttool zu Laden funkioniert also prinzipiell!
> > 
> > 
> > Wenn ich das Feld auf 1 setze und deine play_sound binary als Spiel-
> > Binary anlege, dann ists kaputt wie oben: Anschaltsound abgespielt, der
> > Rest nicht. (Vermutuing bisher: 0x009C = 1 heißt: Es gibt ist ein main-
> > binary zu laden – wenn es das nicht gibt dann stürzt er ab.)
> > 
> > 
> > Wenn ich das Feld auf 0 setzte und deine play_sound binary als Spiel-
> > Binary anlege, dann tuts: Anschaltsounds tut, normale GME-Skripte tun,
> > mit G(0) kann ich das binary starten. Sehr schön!
> > 
> > 
> > Wenn ich nun das Binary durch das austausche, dass ich erstellt habe,
> > kommt beim Ausführen von G(0) nur ein kurzer Knacker, aber weiter
> > nichts, und danach scheint weiterhin das normale GME am werkeln zu
> > sein.
> > 
> > Ah, hab meinen (ersten) Fehler: Hab mich mit der Anzahl an Sounds in
> > meiner GME verzählt und
> >          playSound(36)
> > hab es einfach nicht. Mit
> >          playSound(35)
> > höre ich den Sound den ich im “Init-Code starte”. Sehr gut.
> > 
> > Aber auf OIDs reagieren tut er immer noch nicht…
> > 
> > Ich kann mein Binary auch als main-binary einsetzen (also mit 0x009C =
> > 1). Dann höre ich zuerst den Anschaltsound von der GME, dann das ersten
> > playSound aus meinem Binary. Aber auch dann nichts weiter, keine
> > Reaktion auf apii->fpAkOidPara[new_oid] == 1. Aber wohl auch nicht
> > abgestürzt, Lautstärkeknöpfe tun noch.
> > 
> > 
> > Bei dir funktioniert get_tipped_oid?
> > 
> > 
> > Cheers,
> > Joachim
> > 
> > 
> > 
> > 

-- 
Joachim Breitner
  mail at joachim-breitner.de
  http://www.joachim-breitner.de/



Mehr Informationen über die Mailingliste tiptoi