It runs standard WASM-4 cartridges on devices that support CLDC 1.1 and MIDP 2.0. The runtime includes a WebAssembly interpreter, graphics, audio, input, persistent storage, and support for loading external cartridges.
The full application, including 13 bundled cartridges, fits into a JAR of about 275 KB.
I started this to see whether an unchanged WASM-4 cartridge could run on memory-constrained Java ME hardware. I’d be interested in feedback on the interpreter, cartridge compatibility, and real devices worth testing.
Would love a writeup on how you went at it and how the layers work, think the real juice is hidden there as Java ME is basically archeology at this point so it would definitely have some learning value. Even if your agent was the one dealing with it, still a dump of "weird things saw while dealing with JavaME" would be fun to read.
What a throwback, last time I played this was I believe on my Motorola v3 Razr, where I spent days playing Gang Starr game and Splinter Cell. And spent a few hundred on internet traffic and downloads, which were super costly at the time so my parents banned me from using internet/WAP on my phone for a while.
Also, if it could fit into 275kb, wonder if it could also be made to fit on the 128k SIM cards that run Java
The project has three main layers. At the top there is the MIDP interface and cartridge management. Below that is the WASM-4 implementation for graphics, audio, and input. At the bottom is a small WebAssembly interpreter. A writeup could cover memory limits, bytecode preverification, differences between Java ME implementations, and the parts that had to be tested on real devices.
The SIM card idea is more complicated. Programmable SIM cards usually run Java Card rather than CLDC/MIDP. Java Card does not provide the usual display, audio, or input APIs, so W4ME Station could not be ported directly.
A small command-based WebAssembly experiment on Java Card may be possible. A playable WASM-4 runtime would need a separate implementation.
> W4ME Station brings unmodified WebAssembly cartridges to CLDC 1.1 / MIDP 2.0 devices, including feature phones from the mid 2000s.
300kb is a _way_ too huge for most of the feature phones.