Bounce took us from classic N-Gage into a newer phone environment. We kept the Ashen-derived Android EKA2L1 core and prepared the Nokia 5320 software stack. There was more to bring along than the game file.BV01BV08

A jump on the host.

The Linux route reached the original title, Keys screen and 3D opening. An initial generic action-key hypothesis was replaced with the device’s actual gaming-key mapping. The corrected E4 input made the ball jump.BV04BV05

The original Bounce ball airborne above its ground shadow after the corrected E4 Jump input. Retained Linux EKA2L1 host screenshot; this does not show the repaired Android APK.
Historical host capture

The original Bounce ball airborne above its ground shadow after the corrected E4 Jump input. Retained Linux EKA2L1 host screenshot; this does not show the repaired Android APK.

Open the image for the full original view.

BV90

That host ran a different EKA2L1 build from the inherited Android core. A ball in the Linux window could not certify the packaged phone renderer.BV05

Counters over black.

On the 0.1.0 phone build, we had initialization, a surface, input dispatch and a game-setting file. The viewport stayed black while the log filled with program/uniform errors. The APK seed had left out the entire resources directory, including eight core GLES shaders.BV02

We restored 31 exact Ashen support resources before JNI startup on every launch, including installations where ready-v1 already existed. We could repair that directory in place and keep the player’s game files and saves.BV03

Shader checks and a rendered host fixture passed, while the repaired phone run remained a separate next result. Reporting also kept both the log head and tail so a flood of repeated errors could not bury the first useful failure.BV03BV06

About these records

Bounce uses the dependency-bearing EKA2L1/Nokia stopgap, not a completed independent runtime. The Linux jump, Android black viewport and repaired host/framework checks are distinct records. The image is an unchanged Linux window from the original game, not proof the corrected Android APK was played. Readiness repair preserves saves and does not overwrite the full seed.

The receipts

Selected source lines, investigation notes and recorded feedback. Open a receipt for the original context and scope.

BV01 / Ashen core, newer Nokia environmentCheckpoint investigation notes

Source: Bounce_Boing_Voyage_Bridge_v0.1.1_PRIVATE_CHECKPOINT.zip / Bounce_Boing_Voyage_Bridge_v0.1.1_PRIVATE/README_FIRST.txt · selected lines 66–73

WHAT WAS REUSED
Ashen v0.1.3's unmodified Android EKA2L1 core, JNI callbacks, lifecycle,
first-install save protection and independent reporting. Its Pocket Kingdom/
Shadowkey runtime lineage is retained in provenance. The original N-Gage
Symbian 6 firmware was replaced with the required Nokia 5320 Symbian 9.3 FP2
files and N-Gage 2.0 service dependencies. This is a newer platform generation.
Actual Wakka Bridge Gameplay UI Kit v1.1.2 source is compiled into the APK.
Its source/JAR/tests are preserved in app/ui-kit/.
BV08 / EKA2L1 and original environment creditsCheckpoint investigation notes

Source: Bounce_Boing_Voyage_Bridge_v0.1.1_PRIVATE_CHECKPOINT.zip / Bounce_Boing_Voyage_Bridge_v0.1.1_PRIVATE/THIRD_PARTY_NOTICES.txt · selected lines 3–12

EKA2L1 Symbian/N-Gage runtime by the EKA2L1 contributors.
https://github.com/EKA2L1/EKA2L1
GPL-3.0-or-later. License and recovered source snapshot are in upstream/.
Unmodified native binary identity/provenance: upstream/PROVENANCE.json.

Bounce Boing Voyage, the Nokia device environment and N-Gage service retain
their respective original owners' rights. The supplied .n-gage was preserved
unchanged. Additional device/service inputs are recorded in provenance.
The separate bridge frontend and app-registration resource do not confer
ownership over original game, artwork, firmware or service materials.
BV04 / Original gaming keys corrected the failed initial hypothesisCheckpoint investigation notes

Source: Bounce_Boing_Voyage_Bridge_v0.1.1_PRIVATE_CHECKPOINT.zip / Bounce_Boing_Voyage_Bridge_v0.1.1_PRIVATE/VERIFICATION.txt · selected lines 25–39

CONTROLS — PRIMARY EVIDENCE, INCLUDING A CONSEQUENT CORRECTION
Original Options > Keys: movement is the controller, Jump is gaming A,
Change form is gaming B. The controller center is distinct from numeric 5.
The device profile is decoded from original C:/private/10202be9/20001079.cre.
For /hardware/input/devices/0/orientation_270:
  primaryactionkey (0x3b000f) = 228 = 0xE4
  secondaryactionkey (0x3b0011) = 229 = 0xE5
  keytranslationdata maps E4 to RGA 0x01000000, E5 to 0x02000000.
The game's saved settings confirm orientation=3, key_action_270=80 (gaming A)
and key_change_form_270=81 (gaming B). The JNI sink accepts scan codes directly.
The initial generic Application0/Application1 (B4/B5) hypothesis did not
produce jump and was replaced BEFORE delivery. No B4/B5 A/B binding is shipped.
Native profile and real ngiinput/game disassembly are retained as evidence.
Other mappings: arrows 10/11/0E/0F; center A7; softkeys A4/A5; Clear 1;
digits ASCII and # 7F. All are runtime scan codes, not Android key codes.
BV05 / Original Linux game and corrected jump, with different-core boundaryCheckpoint investigation notes

Source: Bounce_Boing_Voyage_Bridge_v0.1.1_PRIVATE_CHECKPOINT.zip / Bounce_Boing_Voyage_Bridge_v0.1.1_PRIVATE/VERIFICATION.txt · selected lines 75–90

ORIGINAL EXECUTION — LINUX HOST
Official EKA2L1 master-416fd7994 AppImage, Xvfb/software OpenGL, Nokia 5320.
Genuine title/menu, Options/Keys, intro, native loading, 3D opening level and
controller movement and the corrected native E4 jump were observed. The
airborne ball and separate ground shadow are visible in host-correct-E4-in-game.png.
Up plus Right produces simultaneous native
movement; original camera follows that movement. Original movement and Jump A
tutorials and original pause/menu were reached. See actual host screenshots.
The earlier F1/F2 host keyboard routing was bypassed with dedicated host-only
letter aliases to the same native softkey codes; Android does not use Qt keys.
No game code was patched for this test.
An earlier online Rankings experiment crashed the Linux host; logs are kept
as earlier-configuration evidence, not represented as a failure reproduced
against the finished Android APK. Online/Arena features remain unverified.
The host runtime is a different build from the recovered Android native core.
No claim of equivalence follows from seeing the game on Linux.
BV90 / Historical image / Bounce: Boing VoyageHistorical host capture

Source: Bounce_Boing_Voyage_Bridge_v0.1.1_PRIVATE/evidence/host-correct-E4-in-game.png

Retained historical host output. Original emulator chrome, where present, is part of the unchanged source image. No phone capture or phone performance is inferred.

Unchanged historical image.
Source member: Bounce_Boing_Voyage_Bridge_v0.1.1_PRIVATE/evidence/host-correct-E4-in-game.png
SHA-256: 1251f11069184a441fbd248b9070e83c8712b9cc23d273d654a850997ad765b1

The original Bounce ball airborne above its ground shadow after the corrected E4 Jump input. Retained Linux EKA2L1 host screenshot; this does not show the repaired Android APK.

Scope: Historical Linux original-game execution in Nokia5320 guest environment; different EKA2L1 build from inherited Android core.
BV02 / The phone black viewport and omitted shader resourcesCheckpoint investigation notes

Source: Bounce_Boing_Voyage_Bridge_v0.1.1_PRIVATE_CHECKPOINT.zip / Bounce_Boing_Voyage_Bridge_v0.1.1_PRIVATE/VERIFICATION.txt · selected lines 92–114

PHONE v0.1.0 FAILURE / v0.1.1 REPAIR
The returned Samsung SM-S938U / Android 17 API 37 video shows a black viewport.
Its genuine manual report confirms native initialization, original launch
request, one native surface connection, surface 1028x771 and 156 dispatched
input transitions. These counters are not FPS or gameplay-success evidence.
The report lists original-game settings created in the guest, suggesting the
original process executed beyond registration. Its native log tail is flooded
with glUseProgram error 1281 and glUniform error 1282. Initial log diagnostics
were displaced from the old tail-only report.

The v0.1.0 packaged seed has no resources/ directory. The actual native core
references eight external resources//*.vert/*.frag shader files. Upstream
Android packaging explicitly copies the GLES shaders into resources/.
The working supplied Ashen seed contains them, along with audio banks and
upscale resources; all 31 are now restored byte-identically in a separate ZIP.
All eight base shaders match the preserved GLES upstream source.

RendererAssets installs/repairs and SHA-256 verifies only resources/ before
JNI, even with ready-v1 already present. Guest seed, original files, config,
native core and shared UI kit are unchanged. Same package/signing certificate,
version code 2; intended as an in-place update. Native reports now include the
first 64 KiB and last 128 KiB rather than losing startup errors in a flood.
Phone evidence and exact restored-file hashes are retained in evidence/.
BV03 / Repair before every startup without replacing savesCheckpoint investigation notes

Source: Bounce_Boing_Voyage_Bridge_v0.1.1_PRIVATE_CHECKPOINT.zip / Bounce_Boing_Voyage_Bridge_v0.1.1_PRIVATE/README_FIRST.txt · selected lines 15–33

v0.1.1 restores all 31 original renderer/audio resources from the working
Ashen v0.1.3 seed, byte-for-byte. An independent resources/ installer verifies
SHA-256 before native startup on EVERY launch. It runs even when the old
ready-v1 guest marker already exists, and repairs missing/corrupt core resources.
The existing guest seed, game files, firmware, UI kit and native core are
unchanged. The installer only writes resources/; it does not modify guest
saves, settings or configuration. Reports now retain the start AND end of the
native log, so repeated errors cannot hide startup shader diagnostics.

INSTALL THIS AS AN UPDATE over v0.1.0. The package and private signing key are
the same, and version code is 2. Do not uninstall or clear app data to apply it.
The actual upgrade path preserves existing guest files in the Android
framework regression. All five core GLES programs compile/link/use in host
Mesa GLES, and the screen sprite shader produces 256 exact fixture pixels.
These checks validate the repair; v0.1.1 still needs a physical-phone test.

The supplied original executable previously booted its title, introduction,
Options > Keys and 3D opening level in a different Linux EKA2L1 build.
That host evidence does not establish Android gameplay or audio success.
BV06 / Keep both ends of the native logCheckpoint investigation notes

Source: Bounce_Boing_Voyage_Bridge_v0.1.1_PRIVATE_CHECKPOINT.zip / Bounce_Boing_Voyage_Bridge_v0.1.1_PRIVATE/CHANGES_v0.1.1.txt · selected lines 3–21

Repair the black viewport reported on the first phone build.

Root cause found: v0.1.0 omitted the external renderer resources needed by
its unchanged native core. Native initialization/input counters continued,
but shader program/uniform calls failed repeatedly.

Restore all 31 original resources from the working supplied Ashen seed,
including all eight GLES shader files. Verify immutable resources before
native startup, independently of ready-v1; repair individual missing/corrupt
files. Only resources/ is written by this migration. Guest seed and game data
are unchanged. Retain the same private update signing key; version code 2.

Keep the beginning and end of the native log in reports so repeated driver
errors cannot displace the initial shader failure. Include resource state.

Validation: 497 package/integrity checks; four production Android Activity
regressions including actual ready-v1 upgrade preservation; all five renderer
programs compile/link/use in Mesa GLES, with 256 exact screen-sprite pixels.
No v0.1.1 phone rendering or audio success has yet been observed.
Continue through the archiveStar Wars: The Force Unleashed →