I picture the bridges stacked together. A part we’ve figured out for one game can fill a missing spot in another. LEGION is my internal name for what that growing pile becomes.L01
The pile.
“for me i visualize the bridges as greater parts of a whole and when their stacked overtop, you can see where the others fill in the missing spots of others”Wakka · explaining LEGION L01
You can see it happening in the notes. We carry a model parser across, or start with a timer we’ve already corrected. Then the next game’s first shot or circular countdown asks that inherited code to do something new.BE02WR10KT11
What traveled.
A second 3D game gives Rockman another way forward
Rockman’s mesh pass names what we’d learned in Monster Hunter about surface orientation and the near plane. We kept different renderers for the two games. Understanding the earlier mistake still helped us see what to inspect next.R09R12
The BREW foundation keeps gaining services
We carried the execution family forward while Contra refined timing and bitmap watches. Wolfenstein then needed independent timers and a correctly typed transform interface. The first corridor and the first shot asked different things of that foundation.CR01CR02WR01WR02WR10
A clean restart still starts with earlier work
We used the working Wolfenstein family for BioShock’s clean rebuild. Katamari then named that clean BioShock core and the Contra deadline/cache work it carried, before adding its own graphics and input requirements.BS01KT01
An ExEn repair reaches the next game
We brought Banjo’s core to South Park and fixed full-width array storage. Crash explicitly reused those repairs. Mutant named the Crash/South Park foundation and added palette-alpha support for its generated minimap. Handyplay’s upstream VM credit stays with that family.BJ02SP01SP02XC01MA01
The stack inside one game.
By Biohazard: The Episodes, we had a clear cross-section of the pile. Its notes credit Monster Hunter for model/render/audio foundations, Snowboarding for the float adapter, DeadShot for per-contact input, Genesis for presentation and reporting, Wolfenstein/DOOM for bars and cutouts, and Contra for completed frames and quieter ordinary execution.BE02
We still had to fix Biohazard’s own problems. Its camera used the wrong canvas height, and a held action could change native identity after a context switch. The borrowed work got us far enough to expose those particular gaps.BE12BE15
What still belongs to the game.
We couldn’t treat every useful repair as universal. Katamari counted releases for its charge action. Duke’s simultaneous walk/turn behavior needed measuring in Duke. Mutant needed its actual input checked even where its printed help disagreed. Each game had the next say in whether a borrowed piece fit.KT04DU05MA08
That’s the part of the whole I can see when I look at the individual bridges. We start from something another game helped us understand, then find the next missing part. The failures belong in these stories because they explain where the useful pieces came from.L01WR10KT11
After the next bridge.
The big ExEn push came out of all the BREW and Java ME work we’d been doing. One part of the pile changed what I went after next.L02
Ashen sent me toward a bigger question. Finding how much Nokia runtime and system software these games depended on made me want to build my own independent runtime. I’m still working on it. In the meantime, we have a playable stopgap, much as the ExEn route still uses original runtime inputs.L02SN05BV01BJ02
“im still in the process of doing it.”Wakka · on the Nokia runtime quest L02
We’ve kept the classic N-Gage environment separate from the newer Nokia 5320 stack in the records. Launching through a dedicated bridge screen doesn’t remove those original dependencies. I can keep building toward independence while using the stopgap to bring games into the collection.SN05BV01
About these records
LEGION is the owner’s current description of the collection. The routes shown here are selected transfers explicitly documented in the surviving checkpoints, not a complete dependency graph or an inferred chronological tree. Presentation references, reused code and transferable debugging knowledge keep their stated meanings. A common bug mechanism alone is not treated as proof that one patch was copied into another title. Historical host evidence and phone outcomes remain scoped in the linked chapters.
The receipts
Selected report lines, investigation notes and recorded feedback. Each receipt keeps its original source and scope.
L01 / How Wakka visualizes LEGIONOwner recollection
Source: Archive-building conversation / owner explanation
Current owner description of the collection and its internal name. Specific technical transfers below are grounded separately in their checkpoint records.
alot of these just became a larger part of LEGION, the internal referances towards what the Game pile turns into. for me i visualize the bridges as greater parts of a whole and when their stacked overtop, you can see where the others fill in the missing spots of others
BE02 / A bridge assembled from earlier discoveriesCheckpoint investigation notes
Source: Biohazard_Episodes_Bridge_v0.1.0_PRIVATE_CHECKPOINT.zip / Biohazard_Episodes_Bridge_v0.1.0_PRIVATE/README.md · selected lines 40–42
## Prior-work references The recovered Monster Hunter i v0.1.2 checkpoint supplies the DoJa model parser, software renderer and MFi translation foundation. Its bundled Snowboarding work informed the float utility adapter. DMC DeadShot v0.1.2 informed the per-contact input handling. Resident Evil Genesis v0.6.1 informed the dark teal presentation, controls and report tools. Wolfenstein RPG v0.1.0 and Doom RPG v0.1.1 informed system-bar/cutout handling; Contra 4 v0.1.1 informed completed-frame presentation, idle behavior and logging restraint. This title has its own Android package and signing identity.
WR10 / A bitmap is not its transform interfaceCheckpoint investigation notes
Source: Wolfenstein_RPG_Bridge_v0.1.4_PRIVATE_CHECKPOINT.zip / Wolfenstein_RPG_Bridge_v0.1.4_PRIVATE/evidence/baseline-v0.1.2/TECHNICAL_HANDOFF.txt · selected lines 7–9
The supplied v0.1.1 device report records an unsupported interface cls=0x7E000001, offset 0x10, during a native timer callback. The earlier bridge returned the same bitmap object for QueryInterface(0x01001029), although that IID is ITransform. The later native transform call therefore reached an IBitmap vtable with the wrong method layout. v0.1.2 supplies a separately typed ITransform view retaining the original backing bitmap. Its native signed 8.8 matrix blit performs center rotation and mirroring with pixel-center sampling, source/destination clipping and transparent compositing. It keeps reference counts and backing DIB bytes coherent, including overlapping source/destination use. The original executable and game state are not patched. The supplied v0.1.1 video starts after the combat freeze. It shows the stopped frame but does not capture the initial trigger. The short original first-guard host route reproduces the same fault with matching object/registers and LR00117BC0. The native matrix is [0,-256,256,0], a transparent 16x16 quarter rotation at destination (-1,17). The release runtime passes this route and further combat: original player HP100->97->94->91, pistol ammo10->6, guard HP40->24->9->0 and corpse flag, then movement Y1376->1312 with continuing timers. Evidence includes the pinned v0.1.1 comparison and current runtime hash. VERIFICATION.txt records the tested scope. No physical v0.1.2 run has been supplied.
KT11 / The countdown needed a clipped circular sectorCheckpoint investigation notes
Source: Katamari_Bridge_v0.1.4_PRIVATE_CHECKPOINT.zip / Katamari_Bridge_v0.1.4_PRIVATE/TECHNICAL_HANDOFF.txt · selected lines 162–178
UPDATE FROM THE PHONE REPORT (v0.1.1) The owner's SM-S938U / Android 17 report reached 469 original callbacks before IGraphics cls 0x01002001 method 0x64 failed at native LR 0x108460. Android audio had 4 starts and 0 errors, battery 29.0 C, thermal status 0 during the short run. Those measurements establish this run only; no extrapolation to long play. The native caller supplies five signed shorts: center(x,y),radius,startAngle, sweepAngle. The countdown draws a clipped quarter-circle at(screenWidth,0), radius 30,start 270,sweep -90, then overlays the elapsed-time sector. The new backend supports signed/wrapping/full/zero sweeps, fill/outline and clipping; it writes through the existing DIB coherence path. No game instructions patched. Per-draw trigonometry sets the two rays; the pixel loop uses cross-products. Regression uses the supplied archived config from the other original ZIP only as a host fixture to unlock Make a Star 1. It reproduces exactly the same error with v0.1.0; the new runtime executes the native sector and 1000 further timed callbacks. This fixture is never preloaded by the Android app.
R09 / Monster Hunter lessons enter Rockman’s mesh passCheckpoint investigation notes
Source: Rockman v0.3.3 preservation / PATCH_NOTES.md · selected lines 3–18
Preserved inside the original 0.3.3 archive retained by the later checkpoint.
## Why this build exists v0.3.2 proved that Area 5's decoded D4D world mesh is live on-device: 3,241 vertices, 2,497 triangles, eight topology records, no GL errors, and full-frame GPU presentation. Visually, however, the entire stage used one flat color, so correct geometry and incorrect giant polygons were hard to distinguish. Monster Hunter i v0.0.7 independently reinforced two lessons for the shared DoJa 3D work: surface orientation/backface behavior matters, and near-plane handling needs to be measured rather than guessed. This build borrows those lessons without transplanting Monster Hunter-specific game code. ## Changes - Preserves the v0.3.2 D4D decode, world coordinates, camera path, Figure renderer, audio, controls, and GL-to-Android presentation bridge. - Keeps all eight D4D topology streams separate through rendering instead of flattening them into one index buffer draw. - Draws each topology/material stream with a stable neutral shade so stage segmentation can be seen before texture decoding is implemented. - Builds a deduplicated depth-tested wireframe edge buffer from the decoded 2,497 triangles and overlays it on the filled stage. - Adds D4D near-plane and winding telemetry: triangles wholly before the near plane, near crossings, far rejects, in-depth triangles, and CCW/CW/degenerate winding counts. - Clips diagnostic screen-bound calculations to the active near/far range so near-zero perspective divisions no longer explode telemetry into meaningless million-pixel bounds. - Does not enable backface culling yet. v0.3.3 gathers the winding evidence first so the next pass can choose the correct orientation rather than risking a blind scene disappearance. ## Expected visual result The stage should no longer read as one featureless flat slab if the topology is coherent. Individual surface groups and triangle edges should become visible. This is still an untextured diagnostic render, but it is intended to distinguish real floor/wall structure from bad topology immediately.
R12 / Shared model-format knowledge, distinct rendering pathsCheckpoint investigation notes
Source: Rockman v0.3.7 preservation / docs/ARCHITECTURE.md · selected lines 11–15
## Models and animation MbacMesh decodes original MB bone-local vertices, hierarchy, topology, per-corner UVs, material/texture slots, colors and appearance patterns. Texture decodes the original BMP resources used by Figure. Figure batches use original texture/material selection and upload to the preserved GLES1 backend; unavailable textures retain a defined geometry fallback. ActionTable and MtraAnimation decode the original MT actions rather than supplying an empty duration. Action maxima and the guest's setTime remain Q16 frame values. Figure evaluates bone channels and composes them through the original hierarchy, applying the pose to the corresponding bone-local vertex ranges. Pose changes refresh the GLES vertex buffers; topology and source resources are retained. setAction starts the selected action at zero, and the guest then advances its own time. Animated appearance patterns follow the same action/time state. Monster Hunter supplied useful shared-format decoding knowledge; Rockman's presentation continues through ui.graphics3d/D4D/GLES rather than its incompatible opt.ui.j3d renderer.
CR01 / Genesis and Doom supplied the execution foundationCheckpoint investigation notes
Source: 11-Contra_4_Bridge_v0.1.1_PRIVATE_CHECKPOINT.zip / Contra_4_Bridge_v0.1.1_PRIVATE/TECHNICAL_HANDOFF.txt · selected lines 1–3, 7–11
CONTRA 4 BRIDGE v0.1.1 — CURRENT HANDOFF Purpose: execute the supplied original Contra 4 Redux 1.0.9 English BREW ARM/Thumb module on Android using the Resident Evil Genesis bridge and its Doom RPG extensions. [... selected excerpt ...] The original MOD, SP resource archive, MIF, SIG and initial store bytes are retained. Game logic remains in the original executable. The host adds the BREW services it uses, including original BMP image decoding, corrected graphics color return values, memory comparisons, device information, file operations and native sound playback. The guest uses a 240x320 device profile. Android scales its framebuffer proportionally with nearest-pixel sampling. Explicit system-bar and display-cutout insets keep the output and touch controls inside Android's usable area. Directions deliver native arrow press/release events; diagonals hold two directions together. Jump uses SELECT, grapple 0, weapon STAR, drop POUND, pause CLR. Full original keypad remains accessible. Input source reference counts prevent a released touch from cancelling the same key held by a controller.
CR02 / The timer was charged for work twiceCheckpoint investigation notes
Source: 11-Contra_4_Bridge_v0.1.1_PRIVATE_CHECKPOINT.zip / Contra_4_Bridge_v0.1.1_PRIVATE/TECHNICAL_HANDOFF.txt · selected lines 13–19
One HandlerThread owns native execution, timer pumping, saves, reports and all MediaPlayer callbacks. Android focus loss and lifecycle suspension stop scheduled gameplay and release input. Native background/resume events retain ordering even if the Activity changes quickly. Timer pacing uses the deadline recorded at the actual native IShell.SetTimer call. The original Contra callback already requests max(20, 80 - native frame elapsed) milliseconds. v0.1.0 subtracted the whole Android tick time again; v0.1.1 waits only the time remaining after registration and checks that a timer is due before pumping it. Input and audio can update the queued deadline, but do not pump timers themselves. No queued tick remains when the guest has no timer. Bitmap cache validity uses exact byte-range watches indexed by memory page, replacing whole-page versions. Writes outside a bitmap's header, backing memory and palette no longer invalidate its decoded pixels. Actual overlapping writes invalidate the cache; pointer or size changes rebind watches and released bitmaps remove them. RGB565 guest writeback remains immediate. The original executable, drawing order and guest memory format remain intact. Production operations return independent pixel snapshots only when the framebuffer revision changes. Attach and explicit report capture retain full-frame reads. The controller retains a pending snapshot across same-revision audio results so a new image is not lost before Android receives it.
WR01 / Contra with Genesis and Doom services becomes Wolfenstein’s foundationCheckpoint investigation notes
Source: 14-Wolfenstein_RPG_Bridge_v0.1.0_PRIVATE_CHECKPOINT.zip / Wolfenstein_RPG_Bridge_v0.1.0_PRIVATE/TECHNICAL_HANDOFF.txt · selected lines 5–9
Original Wolfenstein RPG 7.1.32 en.mtv3cb (Motorola V3c English), CLSID 0x01081949, native 176x220 canvas. Original MOD/BAR/MIF/config.txt bytes are unchanged; the Android-free ARM/Thumb interpreter executes the original engine. Foundation: Contra 4 v0.1.1 bridge with Resident Evil Genesis and Doom RPG compatibility services. Native timers are independent registrations keyed callback/data, with captured registration deadlines. Earliest due callback is removed before execution; one Android worker callback pumps only due guest timers. This preserves the separate 50 ms game-loop and 100 ms sound timers which a single pending slot would overwrite. Added original startup requirements: retained bitmap QueryInterface 0x01001029 alias; GetAppletInstance during constructor via native output pointer; SYS_B+0x16C allocation annotation preserving allocated pointer; SYS_B+0x140 ARM va_list indirection; queued shell PostEvent returning native boolean success; ISound registration/config/volume notification and guest-compatible vibration calls. Rendering retains the tested original IDIB/IGraphics compatibility and coherent byte-range bitmap caches. No guest executable patches are applied.
WR02 / One timer slot lost the sound callbackCheckpoint investigation notes
Source: 14-Wolfenstein_RPG_Bridge_v0.1.0_PRIVATE_CHECKPOINT.zip / Wolfenstein_RPG_Bridge_v0.1.0_PRIVATE/evidence/timer_queue/verification.txt · selected lines 3–11
Implemented independent registrations keyed by callback/data, each retaining its original deadline. Replacement only touches an identical pair. Cancellation handles null callback and matching data. Earliest registration is exposed to Android scheduling; real pumping checks its due time, and removes it before entering the guest. Virtual clock conversion shifts all registrations and pumping advances to the earliest deadline. NativeTimerRegression: PASS. Real ARM callback stubs independently wrote game marker 1 and sound marker 2 in deadline order. Verified no early real-time callbacks, all deadline conversion, callback/data identity, replacement ordering, cancellation of multiple callbacks sharing data, empty-queue reporting. WolfProbe sequence: tick 80, tap 5 (sound YES), tick 100. Session remains live; 181 timer callbacks executed; 184 display updates; 176x220 city/cinematic frame, 36080 nonblack pixels; no boot/live failure. Original guest SoundPlayer reached CreateInstance, SetData 29420 bytes, and Play 29420 bytes (trace.log lines 1371–1374). Previously the single lastTimer slot lost this callback. Playback completion still requires Android audio notification; desktop probe does not synthesize it.
BS01 / A clean rebuild instead of continuing the discarded forkCheckpoint investigation notes
Source: 17-BioShock_3D_Bridge_v0.2.0_PRIVATE_FULL_CHECKPOINT.zip / BioShock_3D_Bridge_v0.2.0_PRIVATE/TECHNICAL_HANDOFF.txt · selected lines 3–10
Foundation and retained identity The fresh source was staged from Wolfenstein RPG v0.1.0 (the working RE Genesis / Doom / Contra v0.1.1 BREW family). No old BioShock native library, JNI layer, Omni controller/shell or previous code tree was imported. Old BioShock was consulted as evidence for original native ABI/control fields and checked against the supplied unmodified game bytes. Only its private signing identity and existing icon were retained. Package com.wakka.omnibridge.bioshock3d, code 9, version 0.2.0; same owner certificate as previous updates.
KT01 / The clean BREW family reaches KatamariCheckpoint investigation notes
Source: 18-Katamari_Bridge_v0.1.0_PRIVATE_CHECKPOINT.zip / Katamari_Bridge_v0.1.0_PRIVATE/TECHNICAL_HANDOFF.txt · selected lines 3–19
The original 137168-byte 2008 ARMv5/Thumb module runs in the Java BREW compatibility layer. The core comes from the clean BioShock v0.2.0 lineage, including Contra's native timer deadlines and exact bitmap memory watches; the UI follows Resident Evil Genesis. It does not reuse the old hot BioShock v0.1.7 build. No gameplay is reconstructed and no game instructions are patched. TITLE INTEGRATION Class ID 0x0106CC3B, native framebuffer 240x320. Selected module/resource.bar are byte-identical across the unnumbered and screen-capture variants. Clean MIF/icon comes from the latter. All three exact original ZIPs are retained; the other 2009 variant has different native maps and archived player progress. Existing runtime gzip sources, original BMP decode/palettes and native file services cover this resource.bar. Katamari adds the display/font measurement services, original SoundPlayer memory-source handling, the optional original 0x01005000 query, and graphics circle/ellipse rendering. Circle/ellipse outlines honor no-fill mode; border thresholds are calculated once per draw.
BJ02 / The upstream core and original runtime inputsCheckpoint investigation notes
Source: 01-Banjo_Kazooie_ExEn_Bridge_v0.1.0_PRIVATE_CHECKPOINT.zip / Banjo_ExEn_Bridge_v0.1.0_PRIVATE/native/README.md · selected lines 3–7, 58–67
This directory contains the portable ExEn 2 VM, its platform-native API handlers, a small C host interface, and an Android JNI interface. It executes the supplied original `.exn` game bytecode. The Android build targets ARM64 and Android API 29 or later; ELF TLS is used by the allocator. ## Source and license The VM and native handlers originate from [Handyplay's ExEn core](https://github.com/mohamedahmed166e/my-mre-emulator/tree/main/exen-core), commit `460b149302e9a52523bc314a37efabbee9f3d666`. The repository is distributed under AGPL-3.0; see `LICENSE-AGPL-3.0.txt`. The bridge and project modifications are supplied under the same license. Game content and original runtime firmware retain their original ownership. [... selected excerpt ...] The private runtime uses original ExEn runtime classes and its embedded bitmap font extracted from the stock simulator. The full executable is not included. Source archive: [EXEN-V2 Emulator.zip](https://archive.org/download/spyro-exen/EXEN-V2%20Emulator.zip), MD5 `24275cdff33263bd4da977ae518c9a47`. Original `EXEN-V2.exe`: 405,504 bytes, MD5 `f102c98717b4d680f9a38199fb3c0421`, PE image base `0x400000`. | Extracted asset | PE virtual address | File offset | Bytes | MD5 | | --- | --- | --- | ---: | --- | | Runtime classes, app `exen_builtins.bin`, copied to `assets/unk_4494F0.bin` | `0x4494F0` | `0x494F0` | 44,940 | `870bef21d6f269e3e3d91943c66de8e8` | | `core/assets/font_5x8.bin` | `0x454DD0` | `0x54DD0` | 1,280 | `b2898698a79885529d4e9bd10455e775` | The runtime blob begins with `4CVP` class records and matches the hash required by the upstream core. The font is the original 256-glyph 5 × 8 bitmap atlas.
SP01 / The Banjo ExEn foundationCheckpoint investigation notes
Source: 24-South_Park_ExEn_Bridge_v0.1.2_PRIVATE_CHECKPOINT.zip / South_Park_ExEn_Bridge_v0.1.2_PRIVATE/native/README.md · selected lines 3–14
Runs the supplied unchanged NEXE bytecode and original assets. Derived from the private Banjo ExEn checkpoint's Handyplay ExEn core, upstream commit 460b149302e9a52523bc314a37efabbee9f3d666 (AGPL-3.0). Full native source and license are included. Original firmware classes and game content remain private. Use Zig 0.15.2. Host: `zig build -Doptimize=ReleaseSafe -Djni=true`. Android: `zig build -Doptimize=ReleaseFast -Dtarget=aarch64-linux-android -Dstrip=true --prefix zig-out-android`. Copy zig-out-android/lib/libsouthpark_exen.so to ../app/lib/arm64-v8a/libsouthpark.so. The existing banjo_* C ABI names are retained for the common host harness. JNI is scoped to com.wakka.southpark.ExEnController and the Android library loads as southpark. Native load segments use 16 KiB alignment, with no external DT_NEEDED dependencies. This is a portable VM; no original host simulator is run.
SP02 / Full-width shorts, resource arrays and a real SMS priceCheckpoint investigation notes
Source: 24-South_Park_ExEn_Bridge_v0.1.2_PRIVATE_CHECKPOINT.zip / South_Park_ExEn_Bridge_v0.1.2_PRIVATE/native/README.md · selected lines 16–27
South Park repairs: - Implement Sms.getPrice as a real VM String from the original 16.16 tariff table and currency. The unimplemented native previously returned null and caused a later unchecked operand-stack subtraction to crash. - Bound-check invokestatic argument subtraction. - Give short arrays full-width dynamic element storage. SALOAD sign-extends signed 16-bit values, SASTORE preserves all 16 bits. Bytes/chars retain their byte storage. The previous byte-only short model erased packed velocity high bytes and made movement remain at zero. - Resource.readShorts/readInts preserve every element and advance the full resource cursor, including arrays longer than 63 inline slots. - Unsupported offline SMS returns failure, never a fabricated success reply.
XC01 / South Park repairs and the surviving banjo ABI namesCheckpoint investigation notes
Source: 22-Crash_Bandicoot_ExEn_Bridge_v0.1.1_PRIVATE_CHECKPOINT.zip / Crash_Bandicoot_ExEn_Bridge_v0.1.1_PRIVATE/native/README.md · selected lines 1–19
# Crash ExEn runtime Portable ExEn VM adapted from Handyplay / mohamedahmed166e, pinned upstream 460b149302e9a52523bc314a37efabbee9f3d666, AGPL-3.0. See LICENSE-AGPL-3.0.txt. Current source includes the reused South Park full-width array repair, original font input separation, native diagnostic snapshots and SMS price handler. Crash adds String construction from wide character arrays, wide drawChars input, canonical zero/black pen handling, and DialogBox line layout/render services from the original runtime class contracts. Manufacturer-specific dialog decoration has no physical-reference comparison. Original EXN bytecode/assets are unchanged. Use ../tools/build-native.sh with Zig 0.15.2. Host ABI symbols retain the original banjo_* names for compatibility; they are internal and execute the game provided as game.exn, with no Banjo game logic. JNI identity is com.wakka.crashexen. Android ARM64 library has 16 KiB segments and no external dynamic dependencies. The original 5x8 atlas is loaded from assets/font_5x8.bin at runtime, never embedded in the compatibility ELF. Both firmware classes and font are original inputs. The game-requested timer is 75 ms on the first stage. FIFO input does not add extra ticks. Detailed tracing is disabled. Native game saves are isolated per app.
MA01 / Earlier ExEn repairs fill the foundation; the minimap adds alphaCheckpoint investigation notes
Source: 25-Mutant_Alert_ExEn_Bridge_v0.1.2_PRIVATE_CHECKPOINT.zip / Mutant_Alert_ExEn_Bridge_v0.1.2_PRIVATE/native/README.md · selected lines 1–15
# Mutant Alert ExEn runtime Portable ExEn VM adapted from Handyplay / mohamedahmed166e, pinned upstream 460b149302e9a52523bc314a37efabbee9f3d666, AGPL-3.0. See LICENSE-AGPL-3.0.txt. Reuses the private Crash/South Park full-width arrays, String conversion, original-font separation, canonical pen color, dialog and FIFO/timing repairs. Graphics.drawImage now honors original palette-alpha on composited render targets without source index buffers. This corrects the original game's generated 240x120 minimap; decoded images retain index-based transparency unchanged. No original bytecode/assets/logic or progression is patched. Zig 0.15.2. C ABI keeps internal banjo_* symbols for compatibility, with no Banjo gameplay logic. JNI identity is com.wakka.mutantalertexen. The Android ARM64 library uses 16 KiB segments and no external dynamic dependencies. Host JNI build for Android framework checks: zig build -Doptimize=ReleaseFast -Djni=true Original platform classes and 5x8 font are runtime inputs, never embedded in ELF.
KT13 / Katamari borrows RE4 Zeebo’s independent report designCheckpoint investigation notes
Source: Katamari_Bridge_v0.1.4_PRIVATE_CHECKPOINT.zip / Katamari_Bridge_v0.1.4_PRIVATE/TECHNICAL_HANDOFF.txt · selected lines 180–186
Reporting follows RE4 Zeebo v0.1.9 ReportStore: immutable cached native metadata at most once per 5 foreground seconds, plus faults; no framebuffer clone for sampling. Manual export reads the volatile cache and queues an independent writer; it never posts to or locks the guest. File saving uses MediaStore Downloads on Android 10+, with private-external Documents fallback on 8/9. Detected faults automatically export a FAULT TXT. Heavy instructions traces remain off during play. See tests/report for busy-worker/session-lock coverage.
KT14 / Reports complete while the original session lock is heldHistorical host report regression
Source: Katamari_Bridge_v0.1.4_PRIVATE_CHECKPOINT.zip / Katamari_Bridge_v0.1.4_PRIVATE/evidence/report-independence.log · selected lines 1–10
PASS report export finishes while original session lock is held PASS report export leaves guest worker queue untouched PASS file export uses independent report writer PASS export retains cached state and explicit sample age PASS manual TXT also retains a private diagnostic copy PASS completion reports direct game-named Downloads location PASS cached report retrieval also avoids session lock PASS manual export does not pause original execution PASS report operations execute no guest instructions or callbacks PASS 9 report independence checks. Storage fixture verifies dispatch; Android MediaStore itself needs a device run.
BE12 / A clip rectangle changed the projectionCheckpoint investigation notes
Source: Biohazard_Episodes_Bridge_v0.1.4_PRIVATE_CHECKPOINT.zip / Biohazard_Episodes_Bridge_v0.1.4_PRIVATE/HANDOFF.md · selected lines 17–21
Version 0.1.1 corrects high-level 3D projection: use full canvas height and centre, independent of setClipRectFor3D. Apply that clip only at flushBuffer, intersecting the active 2D clip. The original b.j(width,height) assigns b.X to height; c.K(room,7) multiplies raw camera FOV by b.X/240. Room 20 is 45° × 320/240 = 60° (MC angle 533, focal 277), and room 21 is 70° × 320/240 = 93.333° (MC angle 876, focal 150). The old 180px-height conversion produced room 21 MC angle 1245/focal 84, matching the phone report. Never resize models or modify player/world positions to compensate for projection. Control labels observe original soft labels and c.fc (Types A/B/C/D). In gameplay b.ah==8 and b.ai==1, the right soft label indicates whether the weapon is raised. The manual text.out entries 306–313 define direction/numeric variants; entries 358–366 supply published soft labels. Labels and help now translate these functions while preserving every mask and control position. The supplied Samsung SM-S938U Android 16 recording/report reaches the third camera and reports 146 resource opens, zero misses, 22 successful audio starts, and zero draw failures. Its single battery reading is not a temperature trend. The revised host checks load and draw rooms 20/21 deterministically with test positions inside the original wall bounds, rather than replaying that phone session. Physical validation of the correction, phone save/continue, full campaign completion, controller analog axes, exact perspective texture correction and spatial audio remain outside the recorded host checks.
BE15 / A held action changed identity halfway through the pressCheckpoint investigation notes
Source: Biohazard_Episodes_Bridge_v0.1.4_PRIVATE_CHECKPOINT.zip / Biohazard_Episodes_Bridge_v0.1.4_PRIVATE/NORMALIZATION_v014.txt · selected lines 11–20
WHAT CHANGED 1. Native mappings now belong to a whole held press. Previously a contextual action already held as numeric 5 could turn into native SELECT when an unrelated input arrived after the game entered a menu. Walk/run had the same problem when the selected control family changed. Touch aliases now retain their native binding until release; a later fresh press uses current context. An active directional group also retains its original numeric/native family. Raw original-keypad/physical codes remain exact, and duplicate original key owners remain independent. The retained baseline test fails against v0.1.3 and passes against v0.1.4. No original movement or aiming logic was changed.
KT04 / Three queued taps keep three separate releasesHistorical host controller regression
Source: 18-Katamari_Bridge_v0.1.0_PRIVATE_CHECKPOINT.zip / Katamari_Bridge_v0.1.0_PRIVATE/evidence/controller/input-regression.log · selected lines 1–4
PASS: 43 actual production Katamari controller checks. Original native evidence: triple queued taps = 3 separate key presses + 3 immediate key releases; all handlers execute original ARM instructions; input pumps 0 native timers; one due worker runs exactly 1 original registered timer. Covered: original startup pause/resume; distinct queued taps and immediate physical release; duplicate/held key behavior; one due worker; no early timer or input-driven timer; pause hold-release and tick cancellation; paused input suppression. Scope: host queue/clocks are deterministic fixtures; Android media consumption and filesystem writes are not tested; this does not prove physical phone heat, sound, or touch feel. No guest module, guest memory, callback code, or game state is patched.
DU05 / Position and heading changed togetherCheckpoint investigation notes
Source: DukeNukem_3D_Bridge_v0.1.2_PRIVATE_CHECKPOINT.zip / DukeNukem_3D_Bridge_v0.1.2_PRIVATE/evidence/v0.1.2-native-input-evidence.txt · selected lines 10–30
Original key handler routes separate key-down/up events into an input mask. During the first real 3D level, applet+0x420 points to the input object. Its +4 field retains independent bits: Up=1, Down=2, Left=4, Right=8, Fire=16. Observed Up -> Up+Right -> release Right -> release Up produces 1,9,1,0. Original update at module address 0x11bd18 reads those bits in independent branches. Left/right paths at 0x11bda0 / 0x11bdc0 call the yaw update 0x1120d0. Up/down paths at 0x11bde0 / 0x11be04 feed movement 0x11233c. The original player comes from applet->engine(+0x328)->player(+0xb48). Native yaw is at player+0x34; horizontal coordinates are player+0x48 and player+0x50, as read/ written by the original yaw/movement routines. These fields are observed ONLY. DukeCombinedInputAcceptance verifies forward-right, forward-left, backward-right, backward-left, turn-before-forward and forward-turn-fire on fresh real sessions. All 36/36 observed callbacks changed both position and heading with both native inputs still held. Releasing either direction first preserved the other native input, including fire where configured; final releases cleared the native mask. Frame-level native values are retained in v0.1.2-native-combinations/native-player-frames.csv. This proves original game support for combined cardinals. It does not prove physical Android touch comfort, real phone execution or audible playback.
MA08 / Original help differs from observed EXN executionCheckpoint investigation notes
Source: 25-Mutant_Alert_ExEn_Bridge_v0.1.2_PRIVATE_CHECKPOINT.zip / Mutant_Alert_ExEn_Bridge_v0.1.2_PRIVATE/AGENTS.md · selected lines 5–12
Original numeric controls: forward 2, backward 8, turn right 6, turn left 4, strafe right 1, strafe left 7, fire/action 5, grenade *, map/search #. Softkeys -8 left command, -7 right command stay separately accessible. Normal D-pad UP/DOWN/LEFT/RIGHT sends 2/8/4/6 based on live game evidence. Menu navigation uses UP (2) and DOWN (8). Original help numeric directions differ from actual EXN/framework execution; use captured live evidence and preserve unmodified original bytecode. Original keypad preserves all digits and both softkeys inline.
L02 / The ExEn push and the ongoing Nokia runtime questOwner recollection
Source: Archive-building conversation / owner explanation
Current owner explanation of motivation and ongoing work. It does not establish a completed independent Nokia runtime or a precise release chronology. The source wording is retained.
the big Exen push was in response to me pushing our all of the BREW and J2ME games lol. also Ashen and finding out about nokia games runtimes being interwined witht the game software put me on a quest to make my own nokia runtime lol im still in the process of doing it. bu tin the mean time im a stop gag like with exen.
SN05 / Native core, original game and platform data remain distinctCheckpoint investigation notes
Source: Sonic_N_Bridge_v0.1.2_PRIVATE_CHECKPOINT.zip / Sonic_N_Bridge_v0.1.2_PRIVATE/THIRD_PARTY_NOTICES.txt · selected lines 1–6
EKA2L1 native compatibility core is by the EKA2L1 contributors, GPL-3.0-or-later. Recovered source and license accompany the private checkpoint. See upstream/. Nokia N-Gage firmware/device data are recovered original platform components. Sonic N code, artwork, audio and data are the original supplied game; ownership and trademarks remain with their respective rights holders (SEGA/Nokia). The app's launcher/header icon is decoded from the supplied SONICN.AIF.
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/.