Repository navigation
Add new port: Olduvai - #2811
ksokolowski wants to merge 5 commits into
Conversation
Olduvai, a native C++17/SDL2 recreation of the engine of the 1991 DOS caveman platformer; the player supplies the game files. Built from https://github.com/ksokolowski/olduvai (development build 7bb66a8, to be replaced by the 0.9.11 release before review). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The launcher hands PortMaster's panel size to the engine, which fits the scale and aspect itself (one handheld profile pair instead of four). The binaries: safe on every ARMv7 core (no hardware divide assumed), the system's memory functions, LTO; still a development build, to be replaced by the 0.9.11 release before review. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The binaries of the published release (build a69e920), from olduvai-0.9.11-portmaster.zip; the rest of the package was already that release's. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The 0.9.11 binaries compile in both scalers, whose MIT notices the release package did not carry: LICENSE.OmniScale.txt and LICENSE.MMPX.txt, with their rows in THIRD-PARTY-NOTICES.md (as the next release ships them). The cover is the engine's Enhanced widescreen frame, cropped to 4:3 at 640x480. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Hi @ksokolowski I don't see the testing matrix in the Olduvai testing thread on our discord server Can you please add in the OP (I'll ask in discord as well just icymi :D): We need it fulfilled before we can review the PR :) |
I have copied this testing matrix to post on Discord. If there are some edits needed there still please let me know - and naturally if any Discord admin can help that would be also great. This is my first contribution to PortMaster :) |
No problem, there is always a first time. Thank you for coming to PR your own game/engine, that's not often we see this ;) |
cdeletre
left a comment
There was a problem hiding this comment.
I only have minor CR, overall it's very well packed for a first port ;)
There was a problem hiding this comment.
Can you please replace with this optimized png (smaller file size).
You can also optimize by yourself with https://jantrueno.github.io/PortMaster-Wiki/tools/png-compressor/ if you prefer.
| "exp": false, | ||
| "runtime": [], | ||
| "min_glibc": "2.17", | ||
| "reqs": [], |
There was a problem hiding this comment.
It's missing few entries:
| "reqs": [], | |
| "reqs": [], | |
| "store": [ | |
| { | |
| "name": "GOG", | |
| "gameurl": "https://www.gog.com/en/game/prehistorik_12", | |
| "developerurl": "https://en.wikipedia.org/wiki/Titus_Interactive" | |
| } | |
| ], | |
| "availability": "paid", |
There was a problem hiding this comment.
Duplicated, must be removed :)
A smaller cover.png (the same frame, 256 colours), the store and availability entries in port.json, and no second copy of the screenshot in the port folder: the release tool places the root one there. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Game Information
Authorship & Testing
AI assistance, plainly: the launcher and the packaging scripts were written with
Claude (an AI assistant); I reviewed them and tested them on my own devices. The
engine is my project.
CFW Tests
Ensure your game has been tested on all major CFWs:
-> [x] Libmali (testing thread)
-> [x] Panfrost (testing thread)
-> [x] Adreno (Optional) (testing thread)
limaon the Mali-400; 1024x600, armhf)The community results are in the testing thread linked above.
Resolution Tests
Test all major resolutions:
File Structure
As the template:
port.json,README.md,screenshot.png,cover.png,gameinfo.xml,Olduvai.sh, andolduvai/with the two binaries(
olduvai.aarch64,olduvai.armhf),olduvai.gptk,fonts/(OFL, for the HDtext),
licenses/, and three empty folders for the player's files (game/,mt32-roms/,soundfonts/, each with aPUT-FILES-HERE.txt).build_release.py --do-checkis clean for the port.Script Conventions
The launcher follows Powermanga's. The lines beyond it, and why:
XDG_CONFIG_HOME="$GAMEDIR/conf",OLDUVAI_BUG_DIR: settings, saves andbug reports stay inside the port folder.
OLDUVAI_PANEL="${DISPLAY_WIDTH}x${DISPLAY_HEIGHT}": the engine fits itsrender scale and aspect to the panel PortMaster reports.
PROFILEchoice: panels under 400 lines start in the Classic (DOS) mode,taller ones in Enhanced; the player can switch in Options - Style.
.sf2/.sf3, it plays theGeneral MIDI music (the synthesizer is compiled in).
chmod +xon the binary at run time: the exec bit does not survive everyway the package reaches a device.
Binaries and the C++ runtime
The 0.9.11 release (build
a69e920), built from the public repository withzig's clang for
aarch64-linux-gnuandarm-linux-gnueabihf, glibc floor2.17. From the device each binary loads only
libSDL2-2.0.so.0,libc,libm,libpthreadandlibdl; nothing is bundled inlibs.<arch>/.The C++ runtime is LLVM's
libc++, linked in statically. I know AGENTS.mdwarns against static
libstdc++, and I read that as being about a secondcopy of GCC's runtime colliding with the system one that a C++ GPU driver
(the libmali blobs) loads into the same process.
libc++keeps its symbolsin its own
std::__1namespace, so it does not collide with the systemlibstdc++, and no C++ exception crosses into SDL or the driver. It alsokeeps the binaries free of any
GLIBCXXversion requirement. If you wouldstill rather have the usual build against the device's
libstdc++, say soand I will provide one.
The armhf binary assumes no hardware divide, so it runs on Cortex-A8 / A9
cores too.
🤖 Generated with Claude Code