Releases: mulfyx/w4me-station
Release list
W4ME Station 1.1.0
W4ME Station 1.1.0 adds a native paused system menu, one temporary save-state
slot, clearer audio technologies, and another round of universal runtime
optimization for CLDC 1.1 / MIDP 2.0 phones.
Highlights
- Opens the native LCDUI paused menu directly from the gameplay soft key, with
Continue, Save State, Load State, Settings, Restart Cart, and Exit. - Pauses game updates, presentation timing, input, and APU advancement while
the menu or its Settings screens are open. - Adds one atomic temporary save-state slot at frame boundaries.
- Renames the audio choices to WAV synthesis, MIDI synthesis, and Simple tones,
adds a hard Sound Off fast path, and ramps WAV boundaries to remove
click-capable discontinuities. - Replaces Rubido in the bundled catalog with Jake Ledoux's unmodified Nyan Cat
cartridge as a continuous-music stress case. - Hardens persisted W4IR metadata validation and cache recovery.
- Speeds function-body decoding while retaining the existing validation limits.
Native no-JIT measurements
Measured against v1.0.4 with the same corrected route harness on the native
i686 phoneME C interpreter, using 12 balanced paired runs per workload:
| Route | Median improvement | 1.1.0 wins/losses/ties |
|---|---|---|
| Duck Maze level 1 | +42.065% | 12/0/0 |
| Game of Life | +6.061% | 12/0/0 |
| Rubido | +5.475% | 12/0/0 |
| Untangle | +3.595% | 12/0/0 |
| Waternet | -0.114%, neutral | 4/6/2 |
The Waternet median difference was five microseconds per frame, below the
10.638-microsecond timer resolution, so it is not presented as a confirmed
regression.
All 60 pairs matched logical instruction counts, route checkpoints, and final
framebuffer hashes. Route timings include WebAssembly execution and synchronous
WASM-4 host imports. They exclude drawRGB, flushGraphics, physical display
latency, and real MMAPI audio, so they are not physical-device FPS claims.
Verification
- Full
just releasegate passed. - All 21 KEmulator functional scenarios passed.
- Java 1.3 classfile, CLDC 1.1 API, preverification, archive, manifest, and JAD
checks passed. - W4Bench, full-state route differentials, malformed-cache recovery,
save-state, audio, storage, drawing, and counterless production checks passed. - Both release variants remain below 300 KiB.
W4ME Station is independent from and not endorsed by WASM-4. The application
source is MIT-licensed; bundled cartridges remain under their respective
upstream licenses and are attributed in THIRD_PARTY_NOTICES.md.
Physical-device compatibility, display speed, and MMAPI behavior vary by
handset and JVM. The final 1.1.0 JAR was not smoke-tested on a connected physical
handset during this release run. phoneME is an optional local reference rig and
is not distributed with W4ME Station.
Downloads
w4me-station.jar/.jad: full build with optional JSR-75 file browsing.w4me-station-base.jar/.jad: build without JSR-75 classes or permission.SHA256SUMS: SHA-256 hashes for all four release artifacts.
W4ME Station 1.0.4
W4ME Station 1.0.4 is a backward-compatible graphics-performance and verification release for CLDC 1.1 / MIDP 2.0 phones.
Highlights
- Accelerates aligned opaque 2bpp WASM-4 blits with a packed-byte fast path.
- Accelerates rotated 1bpp vertical blits and vertical or axis-aligned drawing.
- Adds a specialized 160-to-240 nearest-neighbor conversion path for 240-pixel game areas, including the Nokia E71 layout.
- Fixes counterless KEmulator verification and makes the canonical build container self-contained.
- Keeps cartridge execution universal: the new paths are selected only from standard WASM-4 drawing parameters, with no cartridge recognition or replacement.
Native no-JIT measurements
Measured against v1.0.3 with the corrected route harness on the native i686 phoneME C interpreter, using 12 balanced paired runs:
| Route | Median improvement | Candidate wins/losses/ties |
|---|---|---|
| Waternet | +48.001% | 12/0/0 |
| Untangle | +8.785% | 12/0/0 |
| Duck Maze level 1 | +3.996% | 10/2/0 |
| Rubido | +0.303% | neutral |
Game of Life remained neutral: -0.691% in the first control run, -0.185% on repeat, and -0.231% in a drawing-only repeat. The specialized 160-to-240 conversion component improved by +61.870% with identical ARGB output.
Route timings include WebAssembly execution and synchronous WASM-4 host drawing. They exclude drawRGB, flushGraphics, physical display latency, and real MMAPI audio, so they are not device FPS claims.
Verification
- Full
just releasegate passed. - All 20 KEmulator functional scenarios passed.
- Java 1.3 classfile, CLDC 1.1 API, preverification, archive, manifest, and JAD checks passed.
- Logical instruction counts, route oracles, linear memory, framebuffer, and ARGB conversion outputs matched the baseline.
- Release and base JARs remain counterless.
Physical-device behavior still depends on the handset JVM, display implementation, heap, and MMAPI stack.
Downloads
w4me-station.jar/.jad: full build with the bundled cartridge showcase.w4me-station-base.jar/.jad: runtime-only build for installing or opening external cartridges.SHA256SUMS: checksums for all four release artifacts.
The W4ME Station runtime is MIT-licensed. Bundled cartridges remain under their respective upstream licenses; see THIRD_PARTY_NOTICES.md.
W4ME Station 1.0.3
W4ME Station 1.0.3 is a backward-compatible interpreter performance,
correctness, and verification release for CLDC 1.1 / MIDP 2.0 phones using
Java 1.3-compatible bytecode.
Highlights
- Keeps the universal interpreter instruction counter local on the main
dispatch path and defers auxiliary W4IR loads until an opcode needs them. - Corrects rounding-sensitive
f32.convert_i64_uandf64.convert_i64_u
results for unsigned values above2^63. - Makes native phoneME benchmark receipts auditable by separating timed
execution from exact replay validation and rejecting unverified idle routes
by default. - Adds the frozen W4Bench v1 suite with seven deterministic interpreter
workloads and an independent result oracle.
Native no-JIT measurements
The same corrected route harness was used for both v1.0.2@33a6632 and the
1.0.3 interpreter. Twelve balanced fresh-VM pairs per workload on the native
i686 phoneME CLDC C interpreter measured these median headless frame-time
reductions:
| Workload | Frame-time reduction | Pair results |
|---|---|---|
| Waternet | 5.910% | 12 / 0 / 0 |
| Rubido | 4.961% | 12 / 0 / 0 |
| Untangle | 6.275% | 12 / 0 / 0 |
| Game of Life | 6.418% | 12 / 0 / 0 |
| Duck Maze level 1 | 3.728% | 12 / 0 / 0 |
Pair results are candidate wins / losses / ties. All 60 pairs matched exact
instruction counts, oracle checkpoints, and final framebuffer hashes.
These are interpreter-runtime measurements. They exclude MIDP presentation and
audio latency and are not physical-device FPS figures.
Verification
The host W4Bench gate dynamically reaches all 190 supported source-WebAssembly
opcodes, accepts the single expected unreachable trap, rejects internal W4IR
fusion-opcode leakage and a deliberately corrupted result, and checks exact
unsigned-i64 conversion sentinels.
W4Bench timings are diagnostic interpreter measurements. They are not
physical-device FPS figures or a substitute for paired A/B measurements on
exact cartridge routes. Physical-device compatibility and performance vary by
Java ME VM and handset.
Downloads
w4me-station.jar/.jad: full build with optional JSR-75 file browsing.w4me-station-base.jar/.jad: base build without JSR-75 classes or file
permission.SHA256SUMS: checksums for all four install files.
W4ME Station is independent from and not endorsed by WASM-4. The application
source is MIT-licensed; bundled cartridges retain their individual licenses
and attributions. phoneME is used only as an optional local reference rig and
is not included in the downloads.
W4ME Station 1.0.2
W4ME Station 1.0.2 is a backward-compatible interpreter performance release
for CLDC 1.1 / MIDP 2.0 phones.
Highlights
- Reduces outer-dispatch overhead by moving compact-tier activation onto an
existing instruction-budget boundary. - Packs control-frame metadata into fewer arrays.
- Removes an extra Java method call from common 32-bit stack pushes and pops.
- Replaces the misleading Duck Maze idle benchmark with a validated
155-frame level-one route.
Native no-JIT measurements
Twelve balanced pairs per workload on the native i686 phoneME CLDC C
interpreter measured these median headless frame-time reductions against
main@7a77b08:
| Workload | Frame-time reduction |
|---|---|
| Waternet | 5.464% |
| Rubido | 6.684% |
| Untangle | 4.931% |
| Game of Life | 7.005% |
| Plasma Cube | 3.214% |
| Duck Maze level 1 | 3.681% |
Exact instruction counts and oracle checkpoints remained unchanged. These are
interpreter-runtime measurements: they exclude MIDP presentation and audio
latency and are not physical-device FPS figures.
Downloads
w4me-station.jar/.jad: full build with optional JSR-75 file browsing.w4me-station-base.jar/.jad: base build without JSR-75 classes or file
permission.SHA256SUMS: checksums for all four install files.
W4ME Station is independent from and not endorsed by WASM-4. The application
source is MIT-licensed; bundled cartridges retain their individual licenses
and attributions. phoneME is used only as an optional local reference rig and
is not included in the downloads.
W4ME Station 1.0.1
W4ME Station 1.0.1 is a backward-compatible performance and runtime-integrity release for CLDC 1.1 / MIDP 2.0 phones.
Highlights
- Speeds up the universal no-JIT interpreter by reducing Java helper calls in common integer and control-flow paths.
- Packs horizontal framebuffer spans directly instead of drawing them through one Java call per pixel.
- Compiles diagnostic counters and opcode profiling out of distributable JARs.
- Removes the cartridge-specific Plasma Cube Java replacement: bundled and external cartridges now use the same universal interpreter.
Native no-JIT measurements
Sixteen balanced pairs per workload on the native i686 phoneME CLDC C interpreter measured these headless frame-time reductions against main@8e85065:
| Workload | Frame-time reduction | Throughput |
|---|---|---|
| Waternet | 35.753% | 1.555x |
| Rubido | 17.057% | 1.205x |
| Untangle | 65.151% | 2.875x |
| Game of Life | 10.826% | 1.121x |
All 64 pairs favored 1.0.1 and preserved exact oracle checkpoints. These are interpreter-runtime measurements: they exclude MIDP presentation and audio latency and are not physical-device FPS figures.
Plasma Cube may run slower than in 1.0.0 because it now exercises the actual universal interpreter instead of a cartridge-fingerprinted replacement.
Downloads
w4me-station.jar/.jad: full build with optional JSR-75 file browsing.w4me-station-base.jar/.jad: base build without JSR-75 classes or file permission.SHA256SUMS: checksums for all four install files.
W4ME Station is independent from and not endorsed by WASM-4. The application source is MIT-licensed; bundled cartridges retain their individual licenses and attributions. phoneME is used only as an optional local reference rig and is not included in the downloads.
W4ME Station 1.0.0
W4ME Station brings unmodified WASM-4 cartridges to CLDC 1.1 / MIDP 2.0
phones through a WebAssembly interpreter built for Java ME.
Highlights
- Thirteen bundled cartridges selected for keypad usability and handset frame cost
- Native LCDUI launcher, file picker, audio settings, and in-game system menu
- Graphics, input, audio, disk, tracing, pointer, and two-gamepad WASM-4 host APIs
- Latched gamepad input so slow frames do not drop short button presses
- HTTP(S), URL, RMS, and optional JSR-75 cartridge installation
- Deterministic framebuffer, state, audio, storage, and no-JIT verification
Downloads
w4me-station.jar/.jad: full build with optional JSR-75 file browsingw4me-station-base.jar/.jad: base build without JSR-75 classes or file permissionsSHA256SUMS: checksums for all four application files
Known limitations
- Performance varies significantly between Java ME VMs and handsets. Plasma Cube is a stress workload.
- Glowfish Chess is practical in two-player mode; its CPU opponent can exceed the current frame budget.
- MMAPI behavior is device-dependent. On the tested Nokia E71, short effects work but continuous music stutters.
- Save-state slots, Bluetooth play, and the workshop catalog are not included in 1.0.0.
W4ME Station is independent from and not endorsed by WASM-4. Application
source is MIT-licensed; bundled cartridges and the console font retain their
separate licenses listed in THIRD_PARTY_NOTICES.md. phoneME is used only as
an optional local no-JIT reference rig and is not distributed with the source
or release artifacts.