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

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

Key Points

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.

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. Download one matching .jad /.jar pair from the table above and keep both files in the same directory. Use the full build on devices with JSR-75 FileConnection support; use the base build if the full build is rejected or the device lacks that optional API. Open the .jad from the phone's application manager or file manager. If the device does not accept JAD installation, transfer and open the matching .jar directly. Installation details and troubleshooting are covered in Installation. | Input | Player 1 | Player 2 | |---|---|---| | Movement | Arrow or directional phone keys | E , S , D , F | | Button 1 | X , Fire, or 5 | Tab | | Button 2 | Z or 0 | Q | Touchscreen devices display an on-screen directional pad and action buttons. The controls stay outside the 160×160 framebuffer whenever the screen is large enough. Sound settings is available from the cartridge library and the in-game command menu. It contains Automatic/Compatible audio mode, a hard global Sound On/Off mute, and master volume when the backend supports it. Confirmed settings persist across MIDlet restarts. The launcher includes the thirteen cartridges listed above, in that order. Additional .wasm files can be installed from HTTP(S), entered as a file:// URL, or selected with the JSR-75 browser on supported devices. Installed cartridges are copied into RMS and can be relaunched without their original file or network source. Cartridges are third-party works. Their authors, upstream sources, hashes, and licenses are listed in Third-party notices. just test just verify just run The stable commands are listed by just --list . Specialized KEmulator, phoneME, and profiling commands are described in Development. Generated logs, screenshots, and benchmark receipts are written under build/reports/ . - Compatibility and limitations - Installing on a phone - 1.0.0 release notes - Development and testing - Performance methodology - Release checklist - OpenSpec changes W4ME Station source code is available under the MIT License. Bundled cartridges retain their own licenses and are not covered by the MIT License. The optional local phoneME rig is GPL-2.0-only and is not distributed with the project. Its modified corresponding source is not public yet, so its binaries must remain local and ignored. See Performance.
W4ME Station (ORG) Java (ORG) WebAssembly (ORG) CLDC 1.1 / MIDP 2.0 (ORG) JIT (ORG) KB (ORG) SHA-256 (LOCATION) Dragon Poker (ORG) Tic Tac Toe (PERSON) Glowfish (PERSON) Duck Maze (LOCATION) Rubido (LOCATION) W4IR (ORG) HTTP(S (LOCATION) MIDI (ORG)
Originally published by Hacker News Read original →