Bridges Before
You Played ThemWakka’s development archive
Wakka’s field notes / edition 1.1

Before you
pressed play.

The failed builds. The strange fixes. The moment a dead phone game starts doing what it used to do.

A director’s cut of the work behind my Android game bridges, told through the reports, the failed attempts and the moments I remember.

Snowboarding / Sept. 29DoJa → Android
“Holy shit! It's cloud!
Just upside down
I think lol”
Wakka · recorded playtest reaction
Framebuffer: 240 × 240
Figure unit conversion: 1/64

Cloud finally fits.
Next: which way is up?
One of the early bridges
Owner feedback and a reviewed summary of the build notes.
Read the story and receipts ↗
52Projects indexed
52Histories open
533Receipts to open
For the first visit

Old phone games.
Another chance.

A human/AI workshop, one game at a time.

I wanted old phone games running on my Android phone. A bridge gives an original game the runtime, graphics, sound and controls it needs to run there. Omni Player brings those bridges together in one Android app; players supply the original game files.

I bring the ideas and constraints, test on my phone, and tell ChatGPT what still feels wrong. ChatGPT helps investigate failures and implement the next attempt. We put this archive together from the saved reports, checkpoints and my memories of doing it.

These chapters follow particular builds and moments in that work. For current releases and play instructions, head to Omni Player ↗. Here, start with a game you recognize—or with Cloud finally appearing upside down.

Across the collection

The pile becomes LEGION.

One game gives us a model parser. Another helps fix a timer. I picture the bridges stacked together, filling gaps in one another. The checkpoints show where those pieces actually traveled.

Follow the connections
Inside the workshop

How it came back.

52 histories from the surviving workbench record. Some follow long recoveries; others keep a shorter source window. The jokes, dead ends and unfinished parts stay visible.

CASE 01 / DoJa
Development history

Cloud was finally visible. Upside down.

Final Fantasy VII: Snowboarding

The first picture put me inside Cloud’s chest. Once we sorted out the model’s scale, I could finally recognize him. He was upside down.

CASE 02 / DoJa
Development history

First came the shadows. Then the rest of Mega Man.

Rockman: Great Adventure on 5 Islands

I kept trying to get Rockman’s world into view, then put it aside. Monster Hunter i gave us a way back in: first a mesh, then textures, and eventually a Mega Man who was more than a silhouette.

CASE 03 / BREW
Development history

The first BREW bridge asked: Enable Sound?

Mega Man: Rush Marine

Rush Marine was my first BREW game. Getting beyond DoJa meant an original ARM module, a sound prompt, missing sprites and controls that did something different from what their labels promised.

CASE 04 / N-Gage
Development history

The buttons let go. Ashen didn’t.

Ashen

I thought I’d got the controls wrong. Ashen kept sliding after release, even with the movement command cleared. The trail eventually led to the clock—and a workaround for a different game.

CASE 05 / DoJa
Development history

First came the silence.

Dirge of Cerberus: Lost Episode

We had a Japanese game running in complete silence. Getting the rest back meant building on an English patch, protecting checkpoints, trying different ways to aim, and finding several ways for audio to fail.

CASE 06 / DoJa
Development history

The hunter was there. The floor had other plans.

Monster Hunter i

We got the hunter and monsters into view while their floor still refused to make sense. A camera target, material flags and broken terrain led us through black slabs and islands of grass—and gave Rockman a way forward.

CASE 07 / J2ME
Focused case study

It passed on the host. The phone rendered zero frames.

God of War: Betrayal

The missing combat sounds were inside the game’s own package. Bringing them back led us into another trap: a phone build that stopped before frame one despite passing its host checks.

CASE 08 / DoJa
Development history

DeadShot worked. Then came the polish.

DeadShot

DeadShot was already playing when we started chasing audio, cropping and controls. The harder part became keeping what worked through regressions and lost chat context. Saved baselines let us keep going.

CASE 09 / Zeebo / BREW
Development history

Ghost Gun Leon

Resident Evil 4 · Zeebo

I found out this was the Brazilian Zeebo edition after we got it running. Then I got to run around as a gun and knife with no visible Leon. The enemies could still kill me, though.

CASE 10 / BREW
Development history

It runs, dude.

Metal Gear Solid Mobile

MGS was a harder BREW “can I?” We got from a loading screen to a title, a camera test and eventually Snake’s first room. A file callback and a misleading title-screen detector made us work for it.

CASE 11 / DoJa
Development history

The phone was waiting to be opened.

Chokkan Crash

I hoped I could get Chokkan Crash running for Caddicarus to play. First we had to open a phone with no hinge, sort out an array, and find out why the snow was magenta.

CASE 12 / DoJa
Development history

The drawing callback was empty on purpose.

Sonic Jump

My brother likes Sonic, so here we are. This little DoJa game drew outside paint(), stayed busy while waiting for the clock, and could miss a quick touch between updates.

CASE 13 / BREW
Development history

Rapture was real. So was the heat.

BioShock 3D

Finding BioShock 3D was a surprise. Getting it running gave us a hot phone, a timer bug, a speedup that didn’t hold up, and eventually a clean rebuild with the original world still in charge.

CASE 14 / BREW
Development history

Duke could walk and turn all along.

Duke Nukem 3D

Duke could walk and turn together. Our four-way touch pad had hidden that, until we checked the original player state.

CASE 15 / BREW
Development history

A file seek broke the garbage collector.

Earthworm Jim: Special Edition

A native garbage-collector crash led us back to a file seek reading the wrong entry. After startup came tap-to-whip, hold-to-fire, and a wait that needed to stop wasting CPU time.

CASE 16 / BREW
Development history

A tap had to last until the game looked.

Brothers in Arms

I picked Brothers in Arms after reading a claim that Melange couldn’t play it. We ended up working through original ARM execution, a key queue that could lose a quick tap, and a sound-conversion wrinkle.

CASE 17 / BREW
Development history

It stopped investigating before it started playing.

Orcs & Elves II

I saw somebody on an unrelated Reddit post waiting for an Orcs & Elves port. Our automated investigation stopped after 191 milliseconds. I still wanted the raw files looked at.

CASE 18 / J2ME
Development history

The pet sound that would not finish.

The Sims 2: Pets

My wife likes The Sims, so I tried getting her interested in one of the old games I was recovering. We got a pet room—and a half-second voice that wouldn’t stop playing.

CASE 19 / BREW
Development history

The memory error was a file error.

Resident Evil: Genesis

Rush Marine’s runtime got us started. Genesis added its own contracts, a false memory warning, and Jill’s unexpected use for the 5 key.

CASE 20 / BREW
Development history

The texture patch could stay out.

DOOM RPG

The original module could load its own textures without the optional patch. The automap, music callbacks and Android system bars then gave us the next details to sort out.

CASE 21 / BREW
Development history

The timer was charged twice.

Contra 4 Redux

Contra played well on my phone, but it felt hot. We followed that into a timer being charged twice and an image cache doing work it didn’t need to do.

CASE 22 / BREW
Development history

The first shot found the wrong interface.

Wolfenstein RPG

The corridor worked. The first pistol shot asked a bitmap for a transform, and our host handed back the wrong interface.

CASE 23 / DoJa
Development history

The camera borrowed the wrong height.

Biohazard: The Episodes

Earlier bridges gave us a starting point for Biohazard. Its camera still used the wrong height, and a held key could change identity halfway through a press.

CASE 24 / BREW
Development history

The countdown broke the level.

Rolling with Katamari

The tutorial and rolling worked. The timed level wanted one missing circular sector, while the Prince’s charge action stopped us borrowing the wrong input rule.

CASE 25 / ExEn
Development history

Select was not the throwing button.

Banjo-Kazooie: Grunty’s Revenge Missions

Banjo’s original campaign gave us timing to preserve, a charge-and-throw action to understand, and saved images that needed more than restoring the heap.

CASE 26 / ExEn
Development history

The missing byte stopped the movement.

South Park

Banjo’s ExEn foundation met packed velocities, an SMS price query and thirteen different minigames. South Park gave us several new parts to carry forward.

CASE 27 / ExEn
Development history

The sound was waiting for its own samples.

Crash Bandicoot

Crash inherited South Park’s repairs. Its melody data was ready, but our empty Android audio buffer was waiting for samples we never let it receive.

CASE 28 / ExEn
Development history

PLAY was beside the SMS detour.

Mutant Alert

I couldn’t get past the opening screen. We found an optional SMS detour sitting beside PLAY, with controls that weren’t making the choice clear enough.

CASE 29 / BREW
Development history

The text panel lost its own rectangle.

Driv3r

The text spilled out of its panel, mission statistics found a missing formatter, and I didn’t like how driving felt. We needed to follow Driv3r’s own screen bounds and steering options.

CASE 30 / N-Gage
Development history

Sonic closed before the game could open.

Sonic N

Another Sonic game for my brother. We had its first level running on the host before a later Android shell started returning straight to the launcher.

CASE 31 / N-Gage
Development history

The kingdom survived the process.

Pocket Kingdom: Own the World

We reached Offline Play, saved through the original menu, and returned to the kingdom with Continue after a complete host restart.

CASE 32 / N-Gage
Development history

The menu lost the held key.

The Elder Scrolls Travels: Shadowkey

The original room could save and reload. Opening our utility menu could still clear a physical key hold and swallow its release.

CASE 33 / N-Gage
Development history

Four racing actions were four original keys.

Crash Nitro Kart

A countdown and race gave us the original inputs to follow: accelerator, brake, hop and item, alongside a separate native direction pad.

CASE 34 / N-Gage 2.0
Development history

The shaders never made it into the APK.

Bounce: Boing Voyage

We had startup and input counters on the phone, but a black viewport. The package was missing a resource directory that included eight renderer shaders.

CASE 35 / N-Gage 2.0
Development history

The first pattern said “Good!”

Star Wars: The Force Unleashed

We brought Bounce’s repaired environment to the original CellWeaver tutorial. Getting the keypad pattern right earned a small but very clear answer: “Good!”

CASE 36 / N-Gage 2.0
Development history

Leon needed the original A and B.

Resident Evil: Degeneration

Leon’s aim, fire and reload actions needed the original gaming keys. Our preparation work also had to bring the environment across without erasing saves.

CASE 37 / J2ME
Development history

The CRC helper had the wrong name.

Digital Devil Story: Megami Tensei

The CRC helper file was there. The class and method inside it had different names from the ones the game called.

CASE 38 / J2ME
Development history

An empty rectangle stopped the next room.

Nowhere

We borrowed Ratchet’s MIDP layer and hit a room transition that tried to draw an empty rectangle. Doing nothing needed to work—and input couldn’t wait for another repaint.

CASE 39 / J2ME
Focused history

The filename said EN. The game was Russian.

The Witcher: Crimson Trail

The filename said EN, but we had Russian resources. Later, keeping the saves working meant preserving an RMS implementation whose Java source was missing.

CASE 40 / J2ME
Development history

The log line was also the clock.

Resident Evil: Uprising

We found a loop timestamp that stopped updating. An existing print call gave us a place to pace it; later, the original inventory exposed actions missing from our controls.

CASE 41 / ExEn
Development history

The minimap leaked 9,444 magenta pixels.

Age of Empires II Mobile

Magenta leaked into the generated minimap. We needed to follow its palette alpha without breaking transparency in the images loaded from files.

CASE 42 / J2ME
Development history

The Settlers brought back wood.

Age of Empires III

I love RTS games, and this was our first bridge in the genre. A 128×128 Nokia game gave us a practical test: select workers, send them to wood, and watch the counter.

CASE 43 / J2ME
Development history

The resources were behind the wrong class loader.

Ratchet & Clank: Going Mobile

Ratchet asked a bootstrap class for its fonts and sound. Our compatibility loader had to send that request back into the application.

CASE 44 / J2ME
Development history

The arrows moved a cursor.

Silent Hill: Orphan

I had this down as a possible magnum opus, for no particular reason I could explain. Then we had to make clear that the arrows moved a cursor, rather than walking the character around.

CASE 45 / BREW
Development history

Three pixels stopped the hidden keypad.

DOOM II RPG

A keypad nobody had opened could stop startup. Its minimum promised 693 pixels; the rounded rows and padding needed 696.

CASE 46 / BREW
Development history

Two fingers met a one-key game.

Dragon Island

Several fingers on the phone still had to become one active key in the game. Its dedicated diagonal-jump actions gave us the translation.

CASE 47 / BREW
Development history

The configuration file held the characters.

Dragon Sword

We threw out a configuration file as old progress. It contained the original starting-character statistics. Zero attributes and a divide-by-zero made the mistake rather obvious.

CASE 48 / BREW
Development history

The scene file was not the engine.

Kingdom Hearts V CAST

Recognizable scene data wasn’t the missing Swerve engine. Finding the separate original module got us running; absent Wonderland gameplay remained a different problem.

CASE 49 / Zeebo
Development history

The phone took the texture path the host missed.

Quake II

We hit a mipmap guard on Android that the old desktop test had missed. Later, we worked on the long wait for the original map to finish loading.

CASE 50 / Zeebo
Development history

The control screen rejected the second contact.

Need for Speed: Carbon — Domine a Cidade

I sent the first control screen straight back. It was hard to read, and we hadn’t enabled simultaneous-pad input. A separate in-race exit fault still needed work.

CASE 51 / BREW
Development history

Spider-Man brought another 3D module.

Spider-Man 2 3D

Spider-Man brought a Micro3D engine of his own. Five minigames and a stale shared-kit test inventory gave us the next details to work through.

CASE 52 / J2ME
Development history

Raw 2 was not Up.

Spider-Man: Doc Ock

This Spanish Java ME game treated numeric keys differently from directions. Its logo wait also kept our host busy until the clock boundary learned to sleep.

The collection / 52 development projects

Find a bridge.

52 game histories across DoJa, BREW, J2ME, ExEn, Zeebo and N-Gage. Find a familiar title, or pick something you never knew existed.

52 of 52 projectsProject roster · release status varies
Age of Empires II MobileEnglish · V01.00.50ExEnHistory open

Magenta leaked into the generated minimap. We needed to follow its palette alpha without breaking transparency in the images loaded from files.

Read the history
History window
0.1.0 checkpoint
The chapter follows the records cited in its source ledger.
Age of Empires IIIEnglish · Nokia 128×128 · v1.0.2J2MEHistory open

I love RTS games, and this was our first bridge in the genre. A 128×128 Nokia game gave us a practical test: select workers, send them to wood, and watch the counter.

Read the history
History window
0.1.0 → 0.1.1
The chapter follows the records cited in its source ledger.
Banjo-Kazooie: Grunty’s Revenge MissionsExEnHistory open

Banjo’s original campaign gave us timing to preserve, a charge-and-throw action to understand, and saved images that needed more than restoring the heap.

Read the history
History window
0.1.0 → 0.1.1
The chapter follows the records cited in its source ledger.
Biohazard: The EpisodesJapanese · offline editionDoJaHistory open

Earlier bridges gave us a starting point for Biohazard. Its camera still used the wrong height, and a held key could change identity halfway through a press.

Read the history
History window
0.1.0 → 0.1.4
The chapter follows the records cited in its source ledger.
BioShock 3DBREWHistory open

Finding BioShock 3D was a surprise. Getting it running gave us a hot phone, a timer bug, a speedup that didn’t hold up, and eventually a clean rebuild with the original world still in charge.

Read the history
History window
0.1.5 → 0.2.2
The chapter follows the records cited in its source ledger.
Brothers in ArmsBREWHistory open

I picked Brothers in Arms after reading a claim that Melange couldn’t play it. We ended up working through original ARM execution, a key queue that could lose a quick tap, and a sound-conversion wrinkle.

Read the history
History window
0.1.0 → 0.1.3
The chapter follows the records cited in its source ledger.
Chokkan CrashDoJaHistory open

I hoped I could get Chokkan Crash running for Caddicarus to play. First we had to open a phone with no hinge, sort out an array, and find out why the snow was magenta.

Read the history
History window
0.0.3 → 0.0.8
The chapter follows the records cited in its source ledger.
Contra 4 ReduxBREWHistory open

Contra played well on my phone, but it felt hot. We followed that into a timer being charged twice and an image cache doing work it didn’t need to do.

Read the history
History window
0.1.0 → 0.1.3
The chapter follows the records cited in its source ledger.
Crash BandicootEnglish · original v1.9ExEnHistory open

Crash inherited South Park’s repairs. Its melody data was ready, but our empty Android audio buffer was waiting for samples we never let it receive.

Read the history
History window
0.1.0 → 0.1.1
The chapter follows the records cited in its source ledger.
DeadShotDoJaHistory open

DeadShot was already playing when we started chasing audio, cropping and controls. The harder part became keeping what worked through regressions and lost chat context. Saved baselines let us keep going.

Read the history
History window
0.0.1 → 0.1.4
The chapter follows the records cited in its source ledger.
Digital Devil Story: Megami TenseiJ2MEHistory open

The CRC helper file was there. The class and method inside it had different names from the ones the game called.

Read the history
History window
0.1.0 → 0.1.1
The chapter follows the records cited in its source ledger.
Dirge of Cerberus: Lost EpisodeEnglish 1.0 patchDoJaHistory open

We had a Japanese game running in complete silence. Getting the rest back meant building on an English patch, protecting checkpoints, trying different ways to aim, and finding several ways for audio to fail.

Read the history
History window
0.1.0 → 0.3.1
The chapter follows the records cited in its source ledger.
DOOM II RPGEnglish · LG AX830BREWHistory open

A keypad nobody had opened could stop startup. Its minimum promised 693 pixels; the rounded rows and padding needed 696.

Read the history
History window
0.1.0 → 0.1.1
The chapter follows the records cited in its source ledger.
DOOM RPGBREWHistory open

The original module could load its own textures without the optional patch. The automap, music callbacks and Android system bars then gave us the next details to sort out.

Read the history
History window
0.1.0 → 0.1.1
The chapter follows the records cited in its source ledger.
Dragon IslandEnglish · Macrospace v1.0.2 · 240×320BREWHistory open

Several fingers on the phone still had to become one active key in the game. Its dedicated diagonal-jump actions gave us the translation.

Read the history
History window
0.1.1 checkpoint
The chapter follows the records cited in its source ledger.
Dragon SwordEnglish · v1.0.0 · 240×320BREWHistory open

We threw out a configuration file as old progress. It contained the original starting-character statistics. Zero attributes and a divide-by-zero made the mistake rather obvious.

Read the history
History window
0.1.0 → 0.1.1
The chapter follows the records cited in its source ledger.
Driv3rBREWHistory open

The text spilled out of its panel, mission statistics found a missing formatter, and I didn’t like how driving felt. We needed to follow Driv3r’s own screen bounds and steering options.

Read the history
History window
0.1.0 → 0.1.4
The chapter follows the records cited in its source ledger.
Duke Nukem 3DBREWHistory open

Duke could walk and turn together. Our four-way touch pad had hidden that, until we checked the original player state.

Read the history
History window
0.1.0 → 0.1.2
The chapter follows the records cited in its source ledger.
Earthworm Jim: Special EditionBREWHistory open

A native garbage-collector crash led us back to a file seek reading the wrong entry. After startup came tap-to-whip, hold-to-fire, and a wait that needed to stop wasting CPU time.

Read the history
History window
0.1.0 → 0.1.1
The chapter follows the records cited in its source ledger.
Final Fantasy VII: SnowboardingEnglish · offline editionDoJaHistory open

The first picture put me inside Cloud’s chest. Once we sorted out the model’s scale, I could finally recognize him. He was upside down.

Read the history
History window
Early renderer → October 4 feedback
The chapter follows the records cited in its source ledger.
God of War: BetrayalNokia 352×416 · v1.4.58 · six languagesJ2MEHistory open

The missing combat sounds were inside the game’s own package. Bringing them back led us into another trap: a phone build that stopped before frame one despite passing its host checks.

Read the history
History window
0.1.1 → 0.1.3
The chapter follows the records cited in its source ledger.
Kingdom Hearts V CASTBREWHistory open

Recognizable scene data wasn’t the missing Swerve engine. Finding the separate original module got us running; absent Wonderland gameplay remained a different problem.

Read the history
History window
Initial findings → 0.1.1
The chapter follows the records cited in its source ledger.
Mega Man: Rush MarineEnglish · v1.1.11BREWHistory open

Rush Marine was my first BREW game. Getting beyond DoJa meant an original ARM module, a sound prompt, missing sprites and controls that did something different from what their labels promised.

Read the history
History window
0.0.1 → 0.0.10
The chapter follows the records cited in its source ledger.
Metal Gear Solid MobileBREWHistory open

MGS was a harder BREW “can I?” We got from a loading screen to a title, a camera test and eventually Snake’s first room. A file callback and a misleading title-screen detector made us work for it.

Read the history
History window
0.0.2 → 0.0.18, with a later shell
The chapter follows the records cited in its source ledger.
Monster Hunter iEnglish patch and Japanese · two editionsDoJaHistory open

We got the hunter and monsters into view while their floor still refused to make sense. A camera target, material flags and broken terrain led us through black slabs and islands of grass—and gave Rockman a way forward.

Read the history
History window
0.0.4 → 0.1.4
The chapter follows the records cited in its source ledger.
Mutant AlertEnglish · v1.2ExEnHistory open

I couldn’t get past the opening screen. We found an optional SMS detour sitting beside PLAY, with controls that weren’t making the choice clear enough.

Read the history
History window
0.1.0 → 0.1.2
The chapter follows the records cited in its source ledger.
NowhereEnglish · Sony Ericsson K790J2MEHistory open

We borrowed Ratchet’s MIDP layer and hit a room transition that tried to draw an empty rectangle. Doing nothing needed to work—and input couldn’t wait for another repaint.

Read the history
History window
0.1.0 → 0.1.1
The chapter follows the records cited in its source ledger.
Orcs & Elves IIBREWHistory open

I saw somebody on an unrelated Reddit post waiting for an Orcs & Elves port. Our automated investigation stopped after 191 milliseconds. I still wanted the raw files looked at.

Read the history
History window
Raw intake → 0.1.1
The chapter follows the records cited in its source ledger.
Quake IIPortuguese (Brazil)ZeeboHistory open

We hit a mipmap guard on Android that the old desktop test had missed. Later, we worked on the long wait for the original map to finish loading.

Read the history
History window
0.1.0 → 0.1.4
The chapter follows the records cited in its source ledger.
Ratchet & Clank: Going MobileJ2MEHistory open

Ratchet asked a bootstrap class for its fonts and sound. Our compatibility loader had to send that request back into the application.

Read the history
History window
Original intake → 0.1.3
The chapter follows the records cited in its source ledger.
Resident Evil 4Spanish / PortugueseZeebo / BREWHistory open

I found out this was the Brazilian Zeebo edition after we got it running. Then I got to run around as a gun and knife with no visible Leon. The enemies could still kill me, though.

Read the history
History window
0.1.2–0.1.9 record + later phone play
The chapter follows the records cited in its source ledger.
Resident Evil: GenesisBREWHistory open

Rush Marine’s runtime got us started. Genesis added its own contracts, a false memory warning, and Jill’s unexpected use for the 5 key.

Read the history
History window
0.2.0 → 0.6.2
The chapter follows the records cited in its source ledger.
Rockman: Great Adventure on 5 IslandsEnglish patchDoJaHistory open

I kept trying to get Rockman’s world into view, then put it aside. Monster Hunter i gave us a way back in: first a mesh, then textures, and eventually a Mega Man who was more than a silhouette.

Read the history
History window
0.1.7 → 0.3.6
The chapter follows the records cited in its source ledger.
Rolling with KatamariBREWHistory open

The tutorial and rolling worked. The timed level wanted one missing circular sector, while the Prince’s charge action stopped us borrowing the wrong input rule.

Read the history
History window
0.1.0 → 0.1.4
The chapter follows the records cited in its source ledger.
Silent Hill: Orphan240×320 · six original languagesJ2MEHistory open

I had this down as a possible magnum opus, for no particular reason I could explain. Then we had to make clear that the arrows moved a cursor, rather than walking the character around.

Read the history
History window
0.1.0 → 0.1.1
The chapter follows the records cited in its source ledger.
Sonic JumpEnglish patchDoJaHistory open

My brother likes Sonic, so here we are. This little DoJa game drew outside paint(), stayed busy while waiting for the clock, and could miss a quick touch between updates.

Read the history
History window
0.1.0 checkpoint
The chapter follows the records cited in its source ledger.
South ParkEnglish · 13 original minigamesExEnHistory open

Banjo’s ExEn foundation met packed velocities, an SMS price query and thirteen different minigames. South Park gave us several new parts to carry forward.

Read the history
History window
0.1.0 → 0.1.2
The chapter follows the records cited in its source ledger.
Spider-Man 2 3DEnglish · NY RooftopsBREWHistory open

Spider-Man brought a Micro3D engine of his own. Five minigames and a stale shared-kit test inventory gave us the next details to work through.

Read the history
History window
0.1.0 → 0.1.2
The chapter follows the records cited in its source ledger.
Spider-Man: Doc OckSpanish · Spider-Man VS Doc Ock · Sony Pictures · v6.2.20J2MEHistory open

This Spanish Java ME game treated numeric keys differently from directions. Its logo wait also kept our host busy until the clock boundary learned to sleep.

Read the history
History window
0.1.0 → 0.1.2
The chapter follows the records cited in its source ledger.
The Sims 2: Petsv4.4.44J2MEHistory open

My wife likes The Sims, so I tried getting her interested in one of the old games I was recovering. We got a pet room—and a half-second voice that wouldn’t stop playing.

Read the history
History window
0.1.0 → 0.1.2
The chapter follows the records cited in its source ledger.
The Witcher: Crimson TrailRussian · Nokia N73J2MEHistory open

The filename said EN, but we had Russian resources. Later, keeping the saves working meant preserving an RMS implementation whose Java source was missing.

Read the history
History window
0.1.0 → 0.1.2
The chapter follows the records cited in its source ledger.
Resident Evil: UprisingGlu Mobile · v1.0.0J2MEHistory open

We found a loop timestamp that stopped updating. An existing print call gave us a place to pace it; later, the original inventory exposed actions missing from our controls.

Read the history
History window
0.1.0 → later preparation report
The chapter follows the records cited in its source ledger.
Wolfenstein RPGEnglish · v7.1.32BREWHistory open

The corridor worked. The first pistol shot asked a bitmap for a transform, and our host handed back the wrong interface.

Read the history
History window
0.1.0 → 0.1.4
The chapter follows the records cited in its source ledger.
AshenN-GageHistory open

I thought I’d got the controls wrong. Ashen kept sliding after release, even with the movement command cleared. The trail eventually led to the clock—and a workaround for a different game.

Read the history
History window
October 19, 2026 · 0.1.3–0.1.5
The chapter follows the records cited in its source ledger.
Sonic NN-GageHistory open

Another Sonic game for my brother. We had its first level running on the host before a later Android shell started returning straight to the launcher.

Read the history
History window
0.1.0 → 0.1.2
The chapter follows the records cited in its source ledger.
Pocket Kingdom: Own the WorldN-GageHistory open

We reached Offline Play, saved through the original menu, and returned to the kingdom with Continue after a complete host restart.

Read the history
History window
0.1.0 → 0.1.1
The chapter follows the records cited in its source ledger.
The Elder Scrolls Travels: ShadowkeyN-GageHistory open

The original room could save and reload. Opening our utility menu could still clear a physical key hold and swallow its release.

Read the history
History window
0.1.0 → 0.1.2
The chapter follows the records cited in its source ledger.
Crash Nitro KartN-GageHistory open

A countdown and race gave us the original inputs to follow: accelerator, brake, hop and item, alongside a separate native direction pad.

Read the history
History window
0.1.0 → 0.1.1
The chapter follows the records cited in its source ledger.
Bounce: Boing VoyageN-Gage 2.0History open

We had startup and input counters on the phone, but a black viewport. The package was missing a resource directory that included eight renderer shaders.

Read the history
History window
0.1.0 → 0.1.1
The chapter follows the records cited in its source ledger.
Star Wars: The Force UnleashedN-Gage 2.0History open

We brought Bounce’s repaired environment to the original CellWeaver tutorial. Getting the keypad pattern right earned a small but very clear answer: “Good!”

Read the history
History window
0.1.0 checkpoint
The chapter follows the records cited in its source ledger.
Resident Evil: DegenerationN-Gage 2.0History open

Leon’s aim, fire and reload actions needed the original gaming keys. Our preparation work also had to bring the environment across without erasing saves.

Read the history
History window
0.1.0 checkpoint
The chapter follows the records cited in its source ledger.
Need for Speed: Carbon — Domine a CidadeZeeboHistory open

I sent the first control screen straight back. It was hard to read, and we hadn’t enabled simultaneous-pad input. A separate in-race exit fault still needed work.

Read the history
History window
0.1.0 → 0.1.1
The chapter follows the records cited in its source ledger.
A note about the record

The rough edges
stay in the story.

A passing build, a running game and a good time holding the phone are three different milestones.

This archive follows the original games, the compatibility repairs and my phone testing. We kept the failed approaches, mismatched version labels and gaps in the record alongside the things that worked.

Game code, translations, upstream runtimes and the bridge work each keep their own credit. English Lost Episode patch integration, for example, is credited to TurquoiseHammer / Yuvi.

01

Phone reports

Observed counters, errors and events from a recorded device session. They establish that session’s behavior, with the report’s limits.

02

Host and build checks

Useful evidence for code paths, compatibility, packaging and regression checks. Their scope remains separate from physical-phone acceptance.

03

Owner feedback

A recorded acceptance or observation belongs to the build and behavior actually tested. A later candidate keeps its own open questions.

Published evidence is selected and reviewed. Full private checkpoints and implementation material remain outside this site. This is a history archive; play and release information lives with Omni Player ↗.