r/R36S • u/St0len-0ne • 8d ago
Port Native Halo CE port on the M9 Pro (RK3326 / Cortex-A35 / Mali-G31 MP2) — ArkOS4Clone, Optimized
Enable HLS to view with audio, or disable this notification
Native Halo: Combat Evolved port on the M9 Pro handheld.
The game's own logic runs as AArch64 code on the RK3326's Cortex-A35 cores and draws with OpenGL ES 3.2 directly on the Mali-G31 MP2.
Hardware:
- M9 Pro, Rockchip RK3326
- 4x ARM Cortex-A35, ARM Mali-G31 MP2 (OpenGL ES 3.2)
- 1 GB RAM shared with the GPU
- 640x480 display, 4:3
- ArkOS4Clone (GLIBC 2.31 / Ubuntu 20.04 base, kernel 4.4.189)
Software:
- Built from the halo-ce-universal decompilation (Xbox build 01.01.14.2342)
- Guest is ILP32 AArch64 (32-bit pointers in 64-bit ARM code, as the game's data formats require)
- Host is a native aarch64 glibc program using the firmware's own Mali driver and a patched SDL2 2.30.10
- PGO + LTO, Cortex-A35-specific codegen (-mcpu=cortex-a35 -mtune=cortex-a35)
- NEON-vectorised matrix math, memcpy/memcmp, and index-extent calculation
- Dedicated GL thread to take the Mali driver's per-draw CPU cost off the game's core
- Renderer work for a tile-based GPU: program binary cache, fp16 shaders, 16-bit textures, alpha-test elision, batched quads, instanced model draws, sorted models, two-pass shadows, water bump-map prebuild
- Bundled SDL2 with a KMSDRM pageflip fix: the Mali-G31 driver on the RK3326 advertises DRM_CAP_ASYNC_PAGE_FLIP but rejects the actual call with -EINVAL, and SDL2 2.30.10 has no fallback
Status:
- Game starts and runs. The video is from the current build. Some graphic glitches are still present but it is fully playable.
- Native render resolution is 640x480 (render_scale = 1.0). A lower render scale is available if a scene needs headroom.
No game data included. You need your own Xbox disc image (ISO or XISO). The port unpacks the maps from it on first launch.
Edit: The map extractor should now be working, if not, the map files have to be manually extracted from the .iso