Chasing Cloudstrike onto Evercade Hardware
Porting Cloudstrike to Evercade-compatible hardware has been a very different challenge from building for Windows or Android. The game is written in Go and now uses an engine abstraction layer, allowing me to experiment with Raylib alongside the existing Ebitengine implementation. For the EverSD test, I cross-compiled an ARMv7 build and tried running it on a Super Pocket. That immediately exposed several hardware-specific problems:
- The device reports a 240×320 DRM display mode, not the 640×480 landscape surface I expected.
- EGL and GBM initialization behave differently from desktop Linux.
- The included Mali driver was not compatible with the device’s GLIBC version.
- A prebuilt graphics hook failed, so I compiled a compatible replacement with the EverSDK toolchain.
- Because the SD card is mounted noexec, the launcher must copy the binary and libraries to /tmp before starting the game.
- The launcher now collects diagnostics so each failed boot gives useful information instead of being a mystery.
This is exactly why the engine-neutral architecture matters. The gameplay code should not need to know whether it is running through Ebitengine, Raylib, Android, Windows, or a tiny ARM device with an unusual graphics stack. The EverSD version is not working yet, but the remaining problems are now concrete: display orientation and mode handling, EGL/GBM startup, and the device’s runtime environment. Each failed launch has narrowed the gap. The goal is simple: make Cloudstrike run on affordable Android devices and, if the platform requirements allow it, on Evercade hardware too. Retro hardware is unforgiving, but it is also an excellent test of whether the code is genuinely portable.


Discussion