Skip to content

Releases: mulfyx/w4me-station

W4ME Station 1.1.0

Choose a tag to compare

@mulfyx mulfyx released this 30 Jul 12:26
Immutable release. Only release title and notes can be modified.

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 release gate 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

Choose a tag to compare

@mulfyx mulfyx released this 29 Jul 13:16
Immutable release. Only release title and notes can be modified.

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 release gate 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

Choose a tag to compare

@mulfyx mulfyx released this 28 Jul 23:28
Immutable release. Only release title and notes can be modified.

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_u and f64.convert_i64_u
    results for unsigned values above 2^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

Choose a tag to compare

@mulfyx mulfyx released this 28 Jul 13:03
Immutable release. Only release title and notes can be modified.

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

Choose a tag to compare

@mulfyx mulfyx released this 27 Jul 12:13
Immutable release. Only release title and notes can be modified.

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

Choose a tag to compare

@mulfyx mulfyx released this 26 Jul 14:21

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 browsing
  • w4me-station-base.jar / .jad: base build without JSR-75 classes or file permissions
  • SHA256SUMS: 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.