[Tiptoi] tt-homebrew - tttool binary roundtrip
Florian
tttool at florian.rgrplay.de
Di Okt 29 12:55:35 CET 2024
Hallo,
> Oder paar Stunden warten, ich glaube, ich weiß, wo ich suchen muss.
Habe das Update gepusht. Es ist nun möglich, die GME-Register zu
speichern und das Game-Binary zu beenden (einfach $0 auf nicht 4 setzen).
Mit cachix baut das tttool ohne Probleme, alles funktioniert. Bin
aktuell am überlegen, wie man tttool und tt-homebrew am besten
kombinieren könnte. Also falls jemand Ideen hat, bin ich offen.
> Hallo,
>
> als eigentlich stiller aber interessierter Mitleser muss ich jetzt
> doch mal nachfragen: versteh ich das richtig dass ich, wenn ich ne
> Sprache habe, die Arm64-Binaries (< 64k)erzeugen kann, ich praktisch
> auch diese verwenden kann? Denn bislang hat mich dabei abgeschreckt
> das ich C bzw C++ lernen müsste. Ich bin eigentlich Pascal-"Freak"...
> Und speziell Lazarus (wahrscheinlich geht es auch direkt in der
> Freepascal-IDE) kann mit etwas Vorarbeit und Konfiguration auch ARM64.
Im Prinzip ja, aber C zu lernen wird der einfachere Weg sein, da man
keine Standartbibliothek lernen muss, sondern nur den Syntax. Für eine
andere Programmiersprache müsste man die ganzen C Funktionen wrappen,
was aktuell die api.h macht. Zudem gibt es auf dem TipToi keinen stdout,
wodurch ein einfaches Hello World nicht klappt. Aber man könnte es in
das tt-homebrew Repo hinzufügen, man müsste nur die Makefile ändern.
Ps. Es ist arm32 kein arm64
Mit freundlichen Grüßen,
Florian
On 29.10.24 09:09, Florian via tiptoi wrote:
>
> 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/870b9354/attachment.htm>
Mehr Informationen über die Mailingliste tiptoi