Skip to content

Add new port: Olduvai - #2811

Open
ksokolowski wants to merge 5 commits into
PortsMaster:mainfrom
ksokolowski:add-olduvai
Open

ksokolowski wants to merge 5 commits into
PortsMaster:mainfrom
ksokolowski:add-olduvai

Conversation

@ksokolowski

@ksokolowski ksokolowski commented Oct 25, 2026 •

Copy link
Copy Markdown

Game Information

Authorship & Testing

  • I wrote and understand this script/patch myself, or clearly marked which parts came from an AI assistant and reviewed them
  • I can explain every non-standard line in my launch script

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:

  • AmberELEC (testing thread)
  • dArkOS: tested on ArkOS4Clone, the ArkOS fork on my R36S (RK3326, 640x480)
  • muOS (testing thread)
  • Knulli (TrimUI Smart Pro, 1280x720)
  • ROCKNIX
    -> [x] Libmali (testing thread)
    -> [x] Panfrost (testing thread)
    -> [x] Adreno (Optional) (testing thread)
  • Other (add here)
    • ROCKNIX community build on the Powkiddy A12 and A13 (RK3128, Mesa lima on the Mali-400; 1024x600, armhf)

The community results are in the testing thread linked above.

Resolution Tests

Test all major resolutions:

  • 480x320 (Optional)
  • 640x480 (R36S, and the testing thread)
  • 720x720 (Optional) (testing thread)
  • Higher resolutions (e.g., 1280x720): 1024x600 (A12, A13), 1280x720 (TrimUI Smart Pro)

File Structure

As the template: port.json, README.md, screenshot.png, cover.png,
gameinfo.xml, Olduvai.sh, and olduvai/ with the two binaries
(olduvai.aarch64, olduvai.armhf), olduvai.gptk, fonts/ (OFL, for the HD
text), licenses/, and three empty folders for the player's files (game/,
mt32-roms/, soundfonts/, each with a PUT-FILES-HERE.txt).
build_release.py --do-check is 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 and
    bug reports stay inside the port folder.
  • OLDUVAI_PANEL="${DISPLAY_WIDTH}x${DISPLAY_HEIGHT}": the engine fits its
    render scale and aspect to the panel PortMaster reports.
  • The PROFILE choice: panels under 400 lines start in the Classic (DOS) mode,
    taller ones in Enhanced; the player can switch in Options - Style.
  • The SoundFont loop: if the player added a .sf2 / .sf3, it plays the
    General MIDI music (the synthesizer is compiled in).
  • chmod +x on the binary at run time: the exec bit does not survive every
    way the package reaches a device.

Binaries and the C++ runtime

The 0.9.11 release (build a69e920), built from the public repository with
zig's clang for aarch64-linux-gnu and arm-linux-gnueabihf, glibc floor
2.17. From the device each binary loads only libSDL2-2.0.so.0, libc,
libm, libpthread and libdl; nothing is bundled in libs.<arch>/.

The C++ runtime is LLVM's libc++, linked in statically. I know AGENTS.md
warns against static libstdc++, and I read that as being about a second
copy 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 symbols
in its own std::__1 namespace, so it does not collide with the system
libstdc++, and no C++ exception crosses into SDL or the driver. It also
keeps the binaries free of any GLIBCXX version requirement. If you would
still rather have the usual build against the device's libstdc++, say so
and I will provide one.

The armhf binary assumes no hardware divide, so it runs on Cortex-A8 / A9
cores too.

🤖 Generated with Claude Code

ksokolowski and others added 4 commits October 25, 2026 19:05
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>
@cdeletre

Copy link
Copy Markdown
Collaborator

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):

CFW Tests:
[] AmberELEC
[ ] dArkOS
[ ] MuOS
ROCKNIX
-> [ ] Libmali
-> [ ] Panfrost
-> [ ] Adreno (Optional)
[ ] Knulli

Resolutions:
[ ] 480x320 (Optional)
[] 640x480
[ ] 720x720 (RGB30) (Optional)
[ ] Higher resolutions (e.g., 1280)

We need it fulfilled before we can review the PR :)

@ksokolowski

Copy link
Copy Markdown
Author

Hi @ksokolowski

I don't see the testing matrix in the Olduvai testing thread on our discord server

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 :)

@Cebion
Cebion marked this pull request as draft October 28, 2026 08:36
@cdeletre

cdeletre commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

Hi @ksokolowski
I don't see the testing matrix in the Olduvai testing thread on our discord server

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 ;)

@ksokolowski
ksokolowski marked this pull request as ready for review October 29, 2026 20:11

@cdeletre cdeletre left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I only have minor CR, overall it's very well packed for a first port ;)

Comment thread ports/olduvai/cover.png

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you please replace with this optimized png (smaller file size).

Image

You can also optimize by yourself with https://jantrueno.github.io/PortMaster-Wiki/tools/png-compressor/ if you prefer.

Comment thread ports/olduvai/port.json
"exp": false,
"runtime": [],
"min_glibc": "2.17",
"reqs": [],

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's missing few entries:

Suggested change
"reqs": [],
"reqs": [],
"store": [
{
"name": "GOG",
"gameurl": "https://www.gog.com/en/game/prehistorik_12",
"developerurl": "https://en.wikipedia.org/wiki/Titus_Interactive"
}
],
"availability": "paid",

Comment thread ports/olduvai/olduvai/screenshot.png Outdated

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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>
@ksokolowski

Copy link
Copy Markdown
Author

Thanks for the review, @cdeletre! All three are done in 05ca3e5:

  • cover.png optimized (380 KB down to 130 KB)
  • store and availability added to port.json
  • duplicate olduvai/screenshot.png removed

build_release.py --do-check shows no errors for the port. Ready for another look when you have time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants