How longmanngithub/city-bloxx-web works
City Bloxx Web packages a J2ME game inside a virtual Nokia 5310 browser experience. The main workflow is: a player presses a virtual or keyboard-mapped key, the device controller queues a mapped event for the CheerpJ/FreeJ2ME runtime, and the game renders to the phone’s 240×320 display. The runtime also bridges graphics, MIDI, and media; the local server provides the game archive. The README documents some JVM and server connections not visible in the sampled implementation, so those edges cite the README.
Main entry points: freej2me-web.jar FreeJ2ME Bridge · nokia-app.js Device Controller · index.html Nokia Phone UI · eventqueue.js Event Queue
Components 19
Virtual Device
- Nokia Phone UI
index.html - Key Mapping
src/key.js - Device Controller
src/nokia-app.js
J2ME Runtime
- Event Queue
src/eventqueue.js - CheerpJ JVM
- FreeJ2ME Bridge
freej2me-web.jar
Graphics Bridge
- Canvas Graphics
libjs/libcanvasgraphics.js - Canvas Fonts
libjs/libcanvasfont.js - WebGL GLES2
libjs/libgles2.js - JS References
libjs/libjsreference.js
Audio Media
- MIDI Bridge
libjs/libmidibridge.js - MIDI Synth
libmidi/libmidi.js - Media Bridge
libjs/libmediabridge.js - Media Player
libmedia/libmedia.js - Media Transcoder
libmedia/transcode/transcode.js
Game Delivery
- City Bloxx MIDlet
game/City_Bloxx-51946.jar - Range HTTP Server
server.js - Game Files
game
Other components
- Player
Connections 19
- Player → Nokia Phone UI: presses controls
README.md - Nokia Phone UI → Device Controller: routes input
README.md - Device Controller → Key Mapping: maps keys
src/nokia-app.js - Device Controller → Event Queue: queues events
src/nokia-app.js - Event Queue → CheerpJ JVM: dispatches events
README.md - CheerpJ JVM → FreeJ2ME Bridge: runs bridge
README.md - CheerpJ JVM → City Bloxx MIDlet: loads MIDlet
README.md - FreeJ2ME Bridge → Canvas Graphics: calls graphics natives
README.md - FreeJ2ME Bridge → Canvas Fonts: calls font natives
README.md - FreeJ2ME Bridge → WebGL GLES2: calls GLES natives
README.md - FreeJ2ME Bridge → JS References: uses JS references
- Canvas Graphics → Nokia Phone UI: renders game
README.md - FreeJ2ME Bridge → MIDI Bridge: calls MIDI bridge
README.md - MIDI Bridge → MIDI Synth: controls synthesis
libjs/libmidibridge.js - FreeJ2ME Bridge → Media Bridge: calls media bridge
README.md - Media Bridge → Media Player: controls playback
libjs/libmediabridge.js - Media Player → Media Transcoder: transcodes media
libmedia/libmedia.js - CheerpJ JVM → Range HTTP Server: requests archive ranges
README.md - Range HTTP Server → Game Files: serves files
README.md