Skip to content

JL-Mod - RetroBIOS

Type standalone
Classification Community forks
Source https://github.com/woesss/JL-Mod
Upstream https://github.com/nikita36078/J2ME-Loader
Version 0.87.1
Profiled 2026-08-11
Cores jl-mod, JL-MOD
Systems j2me
Author Yury Kharchenko
Technical notes

MIDP/CLDC runtime for Android, package ru.woesss.j2meloader. A .jar, .jad or .kjx is instrumented and converted to Dalvik bytecode at install time, then runs against the javax.microedition classes compiled into the app, so no device firmware is read. Two build flavors share the sources: emulator, the published application, and midlet, which packs a single ported J2ME application and is the only one reading MIDLET-META-INF/MANIFEST.MF. ref: app/src/main/java/ru/woesss/j2me/installer/AppInstaller.java:127-146, app/build.gradle.kts:67-93, app/src/main/java/javax/microedition/shell/MicroLoader.java:127-146

Three 3D stacks are compiled in, each with its own shaders and native code: JSR-184 M3G on GLES 1.1 (libjavam3g.so), Mascot Capsule v3 (libmicro3d.so with the tex, color, simple and sprite programs) and Nokia M3D (libgles_utils.so with the m3d pair). MIDI playback goes to the Android synthesizer unless a sound bank is selected, which routes it to Sonivox EAS or TinySoundFont, both driven by Oboe. ref: app/src/main/cpp/Android.mk:1, app/src/main/java/ru/woesss/j2me/mmapi/synth/SynthPluginFactory.java:34-52

Assets are read through ContextHolder.getAssetAsString, which rethrows an IOException as RuntimeException instead of degrading, so an absent asset ends the code path that reads it. ref: app/src/main/java/javax/microedition/util/ContextHolder.java:178-192

The working directory holds converted/, configs/, templates/ and data/, all written by the app, plus shaders/, soundbanks/ and skins/, created empty at first run and read from. data/ carries the RMS record stores and backs the JSR-75 c: drive. ref: app/src/main/java/ru/playsoftware/j2meloader/config/Config.java:41-58, app/src/main/java/ru/playsoftware/j2meloader/util/FileUtils.java:162-171, app/src/main/java/javax/microedition/shell/MicroLoader.java:221-227

28 files | 16 required, 12 optional | 22 in repo, 6 missing Categories: 28 game data

system.props required in repo game_data bundled
Default microedition system properties

simple.vsh required in repo game_data bundled
Vertex shader for the screen blitter

simple.fsh required in repo game_data bundled
Fragment shader for the screen blitter

color.vsh required in repo game_data bundled
Vertex shader for untextured Mascot Capsule geometry

color.fsh required in repo game_data bundled
Fragment shader for untextured Mascot Capsule geometry

tex.vsh required in repo game_data bundled
Vertex shader for textured Mascot Capsule geometry

tex.fsh required in repo game_data bundled
Fragment shader for textured Mascot Capsule geometry

sprite.vsh required in repo game_data bundled
Vertex shader for Mascot Capsule sprites

sprite.fsh required in repo game_data bundled
Fragment shader for Mascot Capsule sprites

m3d.vsh required in repo game_data bundled
Vertex shader for the Nokia M3D renderer

m3d.fsh required in repo game_data bundled
Fragment shader for the Nokia M3D renderer

patches.bin required in repo game_data bundled
Binary class patches applied during MIDlet conversion

licenses.html optional in repo game_data bundled
Third party licence text of the about screen

appcenter.cer optional in repo game_data bundled
X.509 certificate for the crash report endpoint

libc++_shared.so required in repo game_data bundled
NDK C++ runtime for the native modules

libgles_utils.so required in repo game_data bundled
GLES blit routines for the Nokia M3D and Mexa OpenGL surfaces

libjavam3g.so required in repo game_data bundled
JSR-184 M3G engine

libmicro3d.so required in repo game_data bundled
Mascot Capsule vertex and buffer routines

liboboe.so optional in repo game_data bundled
Audio output stream of the sound bank synthesizers

libmmapi_common.so optional in repo game_data bundled
Shared player and listener code of the synthesizer plugins

libmmapi_eas.so optional in repo game_data bundled
Sonivox EAS synthesizer

libmmapi_tsf.so optional in repo game_data bundled
TinySoundFont synthesizer

<soundbank>.dls optional missing game_data
DLS sound bank for MIDI playback

<soundbank>.sf2 optional missing game_data
SoundFont sound bank for MIDI playback

<skin> optional missing game_data
Background image drawn behind the virtual screen

<shader>.ini optional missing game_data
Shader descriptor read from the emulator directory

<shader>.vsh optional missing game_data
Vertex shader named by a descriptor

<shader>.fsh optional missing game_data
Fragment shader named by a descriptor

Generated on 2026-08-23T16:12:06Z