[Tiptoi] tt-homebrew - tttool binary roundtrip
Florian
tttool at florian.rgrplay.de
Di Okt 29 09:09:54 CET 2024
Hallo,
solange das Spiel läuft, wird die Main-Funktion 10 mal in der Sekunde
aufgerufen. Der Code in if (api->fpAkOidPara[First_time_exec] == 0) {}
wird einmal ausgeführt. Beim 2.mal Ausführen wird done niemals auf true
gesetzt, und die Binary loopt für immer. Das erkennt ein Watchdog und
resetet den TipToi.
Wichtig: Die Main-Funktion muss innerhalb von weniger als einer Sekunde
returnen, sonst crasht der Stift. (Hätte ich vllt irgendwo in die Readme
schreiben sollen)
> Wie wahrscheinlich ist es, dass eine der tbd Positionen in der Api ein
> terminate oder exit Funktion ist?
100%, das machen die ganzen Spiele so. Es ist auch möglich, von einer
Binary eine andere zu Starten.
Fürs erste würde ich ein playSoundNow() nehmen, was den Spieler
auffordert, auf eine Oid zu tippen, welche "|FAFF| (written |C|): Cancel
game mode." enthält. Oder paar Stunden warten, ich glaube, ich weiß, wo
ich suchen muss.
Mit freundlichen Grüßen,
Florian
On 29.10.24 08:35, Jens Georg via tiptoi wrote:
> Hallo Florian und Joachim,
>
> schon mal vielen Dank für eure Arbeit.
>
> Das kombinieren von eigenen yaml Files und binaries mit der neuen
> tttool rewrite Funktion klappt super ;-).
>
> Ich habe eine kleines tiptoi "spiel" geschrieben um die
> save_gme_registers binary aus dem tt-homebrew repo zu testen. Das
> Speichern klappt schon mal ;-). Das Problem ist, wie von dir
> befürchtet, das Terminieren des "subgames". Zum Testen habe ich den
> Loop nach dem Speichern mit einem Boolean terminiert (siehe unten).Das
> hat aber nur den Effekt, das sich der Stift nach dem Speichern selbst
> ausschaltet.
>
> Wie wahrscheinlich ist es, dass eine der tbd Positionen in der Api ein
> terminate oder exit Funktion ist?
>
> VG Jens
>
> #include "api.h"
> #include "sdk.c"
> #include <stdbool.h>
>
> void main(system_api *apiPara) {
> initTT(apiPara);
> bool done = false;
>
> while (!done) {
> if (api->fpAkOidPara[First_time_exec] == 0) {
> api->fpAkOidPara[First_time_exec] = 1;
>
> if (api->gme_registers[5] == 0) {
> // Load game
> int file = api->open(L"B:/tt-homebrew.save", 0, 0);
> api->read(file, api->gme_registers,
> *api->gme_register_count * 2);
> api->close(file);
> done = true;
> } else if (api->gme_registers[5] == 1) {
> // Save game
> int file = api->open(L"B:/tt-homebrew.save", 1, 1);
> api->write(file, api->gme_registers,
> *api->gme_register_count * 2);
> api->close(file);
>
> // Set flag to end loop
> done = true;
> }
> }
> }
> }
>
>
>
>
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <https://lists.nomeata.de/pipermail/tiptoi/attachments/20241029/644514e8/attachment.htm>
Mehr Informationen über die Mailingliste tiptoi