Hi all,
A few months ago there was a game jam for making MS-DOS games so i made a 3D adventure game in Free Pascal which i called "Post Apocalyptic Petra". It is somewhat similar to classic Tomb Raider 1 but without the shooting or major platforming (though there is a bit of platforming) and puzzles and exploration turned way up.
Here is a screenshot from the game itself (starting room):
So i decided to port it. The process wasn't that easy since even though i used SDL, i couldn't convince Free Pascal to produce a nice executable that runs on GCW0. My initial attempt was to use a MIPS-based distribution of Debian on QEMU to build it there but that didn't really work out (though in hindsight it could have worked if i had realized some stuff earlier but anyway). Eventually i decided to build a i386 VM with Slackware (which i already had it around), install the official SDK, install the official i386 version of Free Pascal 3.2.0, build a custom cross-compiler from i386 to mipsel and smash everything together... which didn't exactly work out of the box but after a bit of tweaking (and making sure the generated executable didn't refer to any libc stuff because then FPC introduced some dependencies to symbols that do not exist in uClibc - i guess i could modify the startup code in FPC to avoid that but i didn't need libc anyway since under Linux FPC performs syscalls directly).
After a bit of back and forth i got it running:
Originally i thought it might be too slow to run in the software rendering mode but turns out to run perfectly fine. The engine also has support for adding hardware accelerated backends but i mainly added that so i can make a 3dfx Voodoo 1 version and the software rendering version looks better / more crunchy to me :-P so i didn't bother with that. The software version is how it is "meant to be played" anyway :-).
You can download it together with the source code from here:
https://bad-sector.itch.io/post-apocalyptic-petra (look for the Petra099jGCW0.zip file).
The default controls seem to be mostly fine so i didn't bother much with that outside of changing a prompt from "Press Space to continue" to "Press Y to continue". The controls are:
D-Pad Move/turn
B Jump
A Perform action/climb
Y Move to next screen
Select Open inventory, Exit screen
Start Pick up item, Confirm
This may also work in other JZ4770 OpenDingux devices, though GCW Zero is all i have.