Files
libretro/emulators/freej2me_plus.yml
T
Abdessamad Derraz 4231902a6c docs: write prose without dashes or semicolons
Profiles, the wiki, comments, docstrings, command output and schema descriptions carried em-dashes, clause-joining semicolons, unicode arrows, box-drawing banners and check-mark glyphs. Each sentence was rewritten rather than having its character swapped. Hashes, paths, source_ref values and every cited file:line are unchanged, which a comparison of each parsed profile against the previous revision confirms.

validate_pr comments now say PASS and FAIL in words, and source_ref values in a profile's structured blocks render as code. test_prose_style fails if any of these comes back, in tracked files or in the generated site.
2026-10-19 06:47:31 +02:00

107 lines
5.7 KiB
YAML

emulator: FreeJ2ME-Plus
type: libretro
core_classification: enhanced_fork
source: "https://github.com/TASEmulators/freej2me-plus"
upstream: "https://github.com/hex007/freej2me"
profiled_date: "2026-10-04"
source_commit: "68069d79aa6ed106eb788a640a8294a0db55fdcd"
upstream_commit: "8b9bc8a19baf26e3d92f88934a64a32f1cbc2795"
core_version: "1.53"
display_name: "Mobile - J2ME (FreeJ2ME-Plus)"
cores:
- freej2me_plus
systems:
- j2me
notes: |
Fork of FreeJ2ME adding phone-specific APIs (Siemens, Nokia, Motorola,
KDDI, SKT, DoJa, JBlend, Mascot Capsule V3, M3G), KJX loading and more
core options. The native core is a C bridge: retro_init reads the system
directory, checks that freej2me_plus-lr.jar exists there and spawns
java -jar with the file encoding and the screen size as arguments, then
drives the Java process over pipes. Windows launches javaw through
CreateProcess with the system directory as starting directory, while Linux and
macOS fork, chdir() into it and execvp() java. A Java runtime must be on
the host PATH, and the start failure message asks for Java 6 or newer. The
jar is built by ant from build.xml, which writes the libretro variant as
freej2me_plus-lr.jar.
ref: src/libretro/freej2me_libretro.c:38-45,
src/libretro/freej2me_libretro.c:859-888,
src/libretro/freej2me_libretro.c:1556-1582,
src/libretro/freej2me_libretro.c:1679-1688,
src/libretro/freej2me_libretro.h:80,
build.xml:86-99
Only existence is tested. When the jar is absent the core posts the
SYSTEM_NOT_FOUND message and returns from retro_init before any process is
created, so nothing loads. The message text still names freej2me-lr.jar,
the file the original core opens. This core opens freej2me_plus-lr.jar.
ref: src/libretro/freej2me_libretro.c:339-346,
src/libretro/freej2me_libretro.c:866-872,
src/libretro/freej2me_libretro.h:73-79
Every relative path the jar opens resolves against the system directory,
since the Java process starts there. freej2me_system/ is created on first
run and holds freej2me.conf (written with defaults when missing, then
overridden by the core options the bridge sends), FreeJ2ME.log, and the
SiemensData/ and XceData/ directories that the Siemens and XCE file APIs
write to. FreeJ2MEDumps/KDDI/ receives the jar and jad extracted from a
.kjx. Saves go to <save_dir>/freej2me/ (rms/<suite>/ and
config/<suite>/game.conf), falling back to the system directory when the
frontend has no save directory.
ref: src/org/recompile/freej2me/Config.java:47-48,
src/org/recompile/freej2me/Config.java:186-206,
src/org/recompile/mobile/Mobile.java:121-123,
src/org/recompile/mobile/Mobile.java:135,
src/libretro/freej2me_libretro.c:926-934,
src/org/recompile/freej2me/Libretro.java:201-205,
src/javax/microedition/rms/RecordStore.java:111
Two files are user supplied and optional. With the freej2me_midifont core
option on, Manager.checkCustomMidi loads the first .sf2 or .gm listed in
freej2me_system/customMIDI/ as the MIDI soundbank. Off, or with the
directory empty, the JVM default soundbank is used. With freej2me_textfont
on, PlatformFont loads the first .ttf, .otf or .ttc in
freej2me_system/customFont/. Off, the AWT SansSerif, Monospaced and Dialog
faces are used. Both directories are created with a placeholder file when
missing, and neither file has a fixed name.
ref: src/libretro/freej2me_libretro.c:464-469,
src/libretro/freej2me_libretro.c:480-485,
src/org/recompile/freej2me/Libretro.java:240,
src/org/recompile/freej2me/Libretro.java:254,
src/org/recompile/mobile/Mobile.java:1056-1064,
src/javax/microedition/media/Manager.java:55,
src/javax/microedition/media/Manager.java:328-351,
src/org/recompile/mobile/PlatformFont.java:63,
src/org/recompile/mobile/PlatformFont.java:133-154
files:
- name: "freej2me_plus-lr.jar"
system: j2me
path: "freej2me_plus-lr.jar"
required: true
validation: [existence]
description: "FreeJ2ME-Plus libretro Java application"
note: "Java program the native core launches with java -jar from the system directory root. Built by ant from build.xml at the pinned revision. The code reads no size and no hash."
source_ref: "src/libretro/freej2me_libretro.c:38-45 (freej2meapp), src/libretro/freej2me_libretro.c:859-875 (GET_SYSTEM_DIRECTORY, freej2me_present, SYSTEM_NOT_FOUND_MSG), src/libretro/freej2me_libretro.c:339-346 (access F_OK), src/libretro/freej2me_libretro.c:877-888 (java -jar argv), build.xml:86-99 (destfile)"
- name: "<soundfont>.sf2"
system: j2me
path: "freej2me_system/customMIDI/<soundfont>.sf2"
required: false
unsourceable: "user supplied, no canonical file"
category: game_data
description: "MIDI soundbank for J2ME audio"
note: "First .sf2 or .gm in the directory listing, loaded through MidiSystem.getSoundbank when the freej2me_midifont option is on. A rejected file is logged and the JVM default soundbank stays."
source_ref: "src/javax/microedition/media/Manager.java:55, src/javax/microedition/media/Manager.java:328-351, src/org/recompile/mobile/Mobile.java:1056-1058"
- name: "<font>.ttf"
system: j2me
path: "freej2me_system/customFont/<font>.ttf"
required: false
unsourceable: "user supplied, no canonical file"
category: game_data
description: "TrueType font for J2ME text"
note: "First .ttf, .otf or .ttc in the directory listing, loaded through Font.createFont when the freej2me_textfont option is on. A rejected file is logged and the AWT faces stay."
source_ref: "src/org/recompile/mobile/PlatformFont.java:63, src/org/recompile/mobile/PlatformFont.java:133-154, src/org/recompile/mobile/Mobile.java:1062-1064"