REPRODUCTIONWINDOWSPOWERSHELL 7ANDROID / ARM64

Build it yourself

The public-development goal is not only to show that the port runs on my hardware. The source, dependency baselines, build steps, game-data boundary and validation criteria are documented so another person can reproduce the work without access to my private development workspace.

PUBLIC PRE-RELEASERelease: v0.1.0-pre.3Fresh source + dependencies: PASSSigned APK gate: PASSFirst-run importer on RP5: PASSReference target: Retroid Pocket 5

01 / REPRODUCIBILITY STATUS

What is public, and what is not

Redistributable source

The sanitized source tree is published at raposomiguel50/system-shock-android. The current public pre-release is v0.1.0-pre.3.

Game data

You must supply your own compatible System Shock resources from a legally obtained copy. The source tree and APK exclude res/data, res/sound and other proprietary game resources.

Evidence boundary

Fresh-clone bootstrap/build, semantic APK verification, RP5 side-by-side QA, manual gameplay QA, signed non-debuggable release verification and the first-run Android folder importer all passed before v0.1.0-pre.3 was published.

v0.1.0-pre.1 remains historical evidence of the first dependency-bootstrap defect. v0.1.0-pre.2 preserved the corrected bootstrap path. v0.1.0-pre.3 is the first public release that includes a validated APK.

02 / BUILD

Windows / PowerShell 7 build path

Clone the public repository or download the v0.1.0-pre.3 source ZIP.

Public releasev0.1.0-pre.3
Release source commitb51dbe495a0127754a82880dc3b38f736d937ce9
Shockolate baseline4cc3d07dfff2d11b6d3a0a9960a51cf4ca253690
SDL2.32.10 - 5d249570393f7a37e037abf22cd6012a4cc56a71
SDL_mixer2.8.1 - 171eb2d420d5643e4ee11514a06e04a41a463bbd
JDK17
Gradle8.1.1 via the included wrapper
Android SDKPlatform 34 + Build Tools 34.0.0
NDK29.0.14206865
CMake3.22.1 from the Android SDK
ABIarm64-v8a

1. Get the source

Clone https://github.com/raposomiguel50/system-shock-android.git or download the tagged source ZIP above. Use the exact v0.1.0-pre.3 tag to reproduce this release.

2. Bootstrap dependencies

Run pwsh -File .\scripts\bootstrap-deps.ps1. The helper obtains SDL and SDL_mixer at the exact pinned commits into the ignored .deps directory.

3. QA build

Run pwsh -File .\scripts\qa-gate.ps1 for the isolated QA build and semantic verifier. The QA package uses a distinct application ID so it can be tested without replacing the normal package.

4. Signed release build

Configure the private release-signing environment variables documented in the repository and run pwsh -File .\scripts\release-gate.ps1. The final public release variant is non-debuggable and rejects the generic Android debug certificate.

03 / GAME DATA

Bring your own compatible resources

Shockolate expects a resource layout containing res/data and res/sound. The port keeps those commercial files separate from source and APK distribution.

Expected layout

Prepare a res directory containing both data and sound. The upstream Shockolate documentation states that original CD-ROM or System Shock: Enhanced Edition assets are supported by this source lineage.

Android storage

The native Android entry point changes its working directory to SDL_AndroidGetInternalStoragePath(). Imported resources are therefore copied into the application's private files area.

First-run importer

The signed v0.1.0-pre.3 APK uses Android's Storage Access Framework. On first run choose Select res folder, select the res directory that contains data and sound, and approve access. The app copies the data through a staging directory and launches the game after a successful import.

ADB and run-as remain useful developer tools, but they are not required for the public release's normal first-run data import.

04 / INSTALL & TEST

Public pre-release installation

Install the APK

Download SystemShock-Android-v0.1.0-pre.3-arm64-v8a.apk from the GitHub release and install it on a compatible ARM64 Android device.

Import your data

Make your legally obtained res folder available on the device. Launch the app, select that folder when prompted and approve access. The data is copied into private app storage.

Validate behavior

Check menu/gameplay, 4:3 presentation, right-stick look/cursor toggle, touchscreen pointer behavior, Android text input and game audio. Record device/OS/controller details when reporting compatibility.

05 / RELEASE GATES

Evidence completed for v0.1.0-pre.3

The public pre-release was not accepted merely because a build command returned success. Source, artifact, signing and real-device gates were kept separate and all had to pass.

Source checkoutPASS. Fresh checkout of the accepted release source.
Dependency bootstrapPASS. SDL and SDL_mixer downloaded from scratch and verified to pinned commits.
APK buildPASS. ARM64 QA and release variants built successfully.
APK semantic gatePASS. Package/version/ABI/native libraries checked; proprietary game data absent.
Device QAPASS on Retroid Pocket 5. Side-by-side QA preserved the existing baseline package.
Own-data importPASS on Retroid Pocket 5. Signed non-debuggable release-QA build imported the selected res folder through Android's folder picker.
Runtime QAPASS on Retroid Pocket 5. Game launch, presentation, controls, text input and audio were accepted.
Release signingPASS. Stable release certificate SHA-256: 7419c3aae7efaeea3e0e10945a98164418faf92fa1e55deac2b654c72cb34409.
Published APKPASS. SHA-256: f7128eabd872ffd4f08644c05823b151992710c265d383c220b67796094155a9.

06 / FEEDBACK

Report what you find

External reproduction results are useful even when everything works. Use the structured GitHub forms for bugs, suggestions, compatibility reports, documentation corrections or general questions.