W4ME Station – a WASM-4 runtime for Java ME phones

W4ME Station brings unmodified WebAssembly cartridges to CLDC 1.1 / MIDP 2.0 devices, including feature phones from the mid 2000s.
Run WASM-4 games on Java ME phones.
W4ME Station brings unmodified WebAssembly cartridges to CLDC 1.1 / MIDP 2.0 devices, including feature phones from the mid 2000s.
Thirteen bundled cartridges ship in a 275 KB JAR. The runtime uses no JIT, and the bundled library needs no network connection. Both release variants stay below 300 KB.
| Variant | Application | Descriptor | |---|---|---| | Full, with optional JSR-75 file browsing | w4me-station.jar | w4me-station.jad | | Base, without JSR-75 classes | w4me-station-base.jar | w4me-station-base.jad |
SHA-256 checksums are stored beside the version 1.0.0 artifacts.
W4ME Station targets CLDC 1.1 / MIDP 2.0 devices. It is independent from and not endorsed by the WASM-4 maintainers.
| # | Cartridge | |---|---| | 1 | Sokoban | | 2 | Wasm Wars | | 3 | Annoying Robots | | 4 | Waternet | | 5 | Dragon Poker Draw | | 6 | Tic Tac Toe | | 7 | Watris | | 8 | Glowfish Chess | | 9 | Duck Maze | | 10 | Rubido | | 11 | Untangle | | 12 | Sound Demo | | 13 | Plasma Cube |
Further .wasm files can be installed from the device.
- validated WebAssembly execution with a persistent fixed-width W4IR cache;
- WASM-4 graphics, input, audio, disk, text, and tracing host APIs;
- thirteen bundled cartridges plus HTTP(S), RMS, URL, and optional JSR-75 loading;
- phone keys, keyboard controls, pointer input, and an on-screen touch pad;
- per-cartridge persistent disk storage with checksummed RMS generations;
- sampled MMAPI audio with streamed MIDI,
playTone, and silent fallbacks; - global RMS-backed sound On/Off and master-volume controls;
- deterministic host, KEmulator, and optional phoneME verification.
The release version is 1.0.0. The verified scope and remaining limitations are documented in Compatibility.
Development requires Linux with just, Podman, and Distrobox installed. The project toolchain contains JDK 8, ProGuard, KEmulator, WABT, and supporting utilities. Version-sensitive components are pinned by the container definition.
just setup
just doctor
Java sources and classfiles remain pinned to Java 1.3.
just build Artifacts are written to dist/:
| Artifact | Purpose |
|---|---|
| w4me-station.jar / .jad | full build with optional JSR-75 file browsing |
| w4me-station-base.jar / .jad | build without JSR-75 classes |
Both variants contain the same thirteen cartridges. The base build works on MIDP 2.0 devices that do not implement the optional FileConnection API.
W4ME Station source code is available under the MIT License. Bundled cartridges retain their own licenses and are not covered by the MIT License.
Source: Hacker News














