Files
libretro/emulators/kemulator.yml
T
Abdessamad Derraz 11da070128 chore: recale the profile refs onto their pins
Upstream moved under 145 profiles: 679 refs shifted and 452 followed a
renamed file, against 6,483 that still anchor where they were written.
The recale rewrites the located ranges only, keeping the annotations and
the sentences that carry them, and 106 pins advance in the same commit
because refs and source_commit name one revision or the profile
describes two at once.

Nothing here was guessed. The 183 refs that are CHANGED, GONE or
AMBIGUOUS are untouched, and the 57 profiles holding them keep their old
pin until someone reads the diff: profile_sync refuses to recale a
profile while any of its refs needs a re-read. trident kept its pin too,
its annotated ref being one the writer will not rewrite.
2026-09-04 14:41:44 +02:00

204 lines
9.6 KiB
YAML

emulator: KEmulator nnmod
type: standalone
core_classification: community_fork
source: "https://github.com/shinovon/KEmulator"
upstream: "https://github.com/shinovon/KEmulator"
author: "shinovon"
profiled_date: "2026-08-11"
source_commit: "4230a6af24e8e5d60e00e760750cfd9f195f0bd5"
core_version: "2.21.5"
display_name: "Mobile - J2ME (KEmulator nnmod)"
cores:
- kemulator
- KEMULATOR
systems:
- j2me
mode: standalone
verification: existence
notes: |
MIDP/CLDC runtime running on the host JVM, developed from decompiled KEmulator
1.0.3. MIDlet bytecode executes against the javax.microedition classes compiled
into the application, so no device firmware is read.
Yamaha SMAF audio is the one thing the user supplies. MMFPlayer.initialize()
probes the directory holding the executable for a hardware emulator library in
a fixed order, MA-7 then MA-5 then MA-3, and keeps the first complete set. MA-3
ships with the emulator, so .mmf playback works on a stock install and the MA-5
and MA-7 libraries raise the chip generation: MA-5 adds 32 PCM channels, MA-7
adds DSP effects and is the only mode where supportsAudioTracks() is true,
which the MEXA phrase audio track API reads to size its track array.
ref: src/media/emulator/media/mmf/MMFPlayer.java:11-40,
src/media/emulator/media/mmf/MaDll.java:862-864,
src/media/emulator/media/mmf/PhrasePlayerImpl.java:20-26
The probe is 32-bit Windows only. isX64() returns before any file is touched,
so the x64 build loads none of these. The MIDI-through-MA path passes
notMmf=true, which skips the MA-7 branch and leaves MA-5 or MA-3.
ref: src/media/emulator/media/mmf/MMFPlayer.java:15-17,
src/media/javax/microedition/media/PlayerImpl.java:206-211,
win/src/main/emulator/EmulatorPlatform.java:9-11,
x64/src/main/emulator/EmulatorPlatform.java:9-11
Every caller degrades when the probe fails. PlayerImpl.midi() breaks out of the
ma block and falls back to MidiSystem; PlayerImpl.mmf(), SmafPlayer, AudioClip
and PhrasePlayerImpl each throw and lose SMAF audio alone. Only the file's
existence is tested, then the path goes to Native.load, so the code reads no
size and no hash.
ref: src/media/javax/microedition/media/PlayerImpl.java:212-249,
src/oem/com/jblend/media/smaf/SmafPlayer.java:91,
src/oem/com/samsung/util/AudioClip.java:61,
src/media/emulator/media/mmf/MaDll.java:181-190
The 3D and Mascot Capsule backends default to their OpenGL implementations, so
the two shipped native libraries below load only when the user selects the
SWERVE M3G engine or the Mascot Capsule DLL engine.
ref: src/main/emulator/Settings.java:20-21,
win/src/main/emulator/EmulatorPlatform.java:41-80
Two settings hold user-chosen paths with no fixed filename. SoundfontPath takes
any .sf2 or .dls and is empty by default, leaving useCustomSoundfont() false and
the JVM default soundbank in place. VlcDir points at a VLC installation that
vlcj scans for libvlc.
ref: src/media/emulator/media/EmulatorMIDI.java:26-36,
src/main/emulator/ui/swt/Property.java:1860-1901
files:
- name: M7_EmuSmw7.dll
system: j2me
required: false
validation: [existence]
description: "Yamaha MA-7 SMAF sequencer library"
note: "First branch of the MMFPlayer probe, taken only when M7_EmuHw.dll sits beside it and the caller did not pass notMmf. Selects MODE_MA7, the only mode carrying phrase audio tracks. Distributed with the SoftBank MEXA emulator."
source_ref: "src/media/emulator/media/mmf/MMFPlayer.java:19-23, src/media/emulator/media/mmf/MaDll.java:186"
- name: M7_EmuHw.dll
system: j2me
required: false
validation: [existence]
description: "Yamaha MA-7 SMAF hardware layer"
note: "Tested for existence next to M7_EmuSmw7.dll; the MA-7 branch is skipped unless both are present. Loaded by the Windows loader as a dependency of the sequencer library, which is the path handed to Native.load."
source_ref: "src/media/emulator/media/mmf/MMFPlayer.java:21"
- name: M5_EmuSmw5.dll
system: j2me
required: false
validation: [existence]
description: "Yamaha MA-5 SMAF sequencer library"
note: "Second branch of the probe, taken when the MA-7 pair is absent or the caller passed notMmf and M5_EmuHw.dll sits beside it. Selects MODE_MA5, whose init walks a 1024-byte allocation to an address ending in 0x81 before calling MaSound_EmuInitialize."
source_ref: "src/media/emulator/media/mmf/MMFPlayer.java:24-27, src/media/emulator/media/mmf/MaDll.java:184, src/media/emulator/media/mmf/MaDll.java:231-241"
- name: M5_EmuHw.dll
system: j2me
required: false
validation: [existence]
description: "Yamaha MA-5 SMAF hardware layer"
note: "Tested for existence next to M5_EmuSmw5.dll; the MA-5 branch is skipped unless both are present."
source_ref: "src/media/emulator/media/mmf/MMFPlayer.java:25"
- name: ma3smwemu.dll
system: j2me
required: false
bundled: true
size: 724992
md5: c1625f6c2fbf66e2e838c6bc74ffe641
sha1: b566d111ccd3e303d21ab5c4cd1519dc238a4fce
validation: [existence]
description: "Yamaha MA-3 SMAF emulator"
note: "Last branch of the probe and the only one satisfied by a single file. Selects MODE_MA3, whose init calls MaSound_Initialize directly. Present in a stock install, so .mmf playback needs nothing from the user on the 32-bit Windows build."
source_ref: "src/media/emulator/media/mmf/MMFPlayer.java:28-30, src/media/emulator/media/mmf/MaDll.java:182, src/media/emulator/media/mmf/MaDll.java:227-230"
- name: jsr184client.dll
system: j2me
required: false
bundled: true
size: 405504
md5: 9fcb2bd1f36d1e8d94f8e4e2650914c9
sha1: ed9a60d56ddcc91514b033c16f2062638c3e6eeb
validation: [existence]
description: "SWERVE M3G native engine"
note: "Loaded from the executable's directory by the static initializers of the SWERVE javax.microedition.m3g classes, with a System.loadLibrary fallback on the library path. Reached only when the 3D engine setting is SWERVE, the LWJGL engine being the default."
source_ref: "m3g_swerve/src/javax/microedition/m3g/Graphics3D.java:275, m3g_swerve/src/javax/microedition/m3g/Loader.java:378, src/main/emulator/i.java:6-14"
- name: java_micro3d_v3_32.dll
system: j2me
required: false
bundled: true
size: 27648
md5: 60045cd91e30880c731c9fea8c712093
sha1: b1d6aef4559bb46af27eebda50fe06e0de659966
validation: [existence]
description: "Mascot Capsule V3 JNI bridge"
note: "System.loadLibrary from the static initializers of the com.mascotcapsule.micro3d.v3 classes, reached only when the Mascot Capsule engine setting is DLL. Its import table names micro3d_v3_32.dll."
source_ref: "micro3d_dll/src/com/mascotcapsule/micro3d/v3/Figure.java:162-165, micro3d_dll/src/com/mascotcapsule/micro3d/v3/Graphics3D.java:279"
- name: micro3d_v3_32.dll
system: j2me
required: false
bundled: true
size: 475136
md5: d5ab04740801208b92fa3de7252a75d8
sha1: f59e0d445aafe2503c6e5249ca07df4b89626f8f
validation: [existence]
description: "Mascot Capsule V3 renderer"
note: "Pulled in by the Windows loader when java_micro3d_v3_32.dll loads; no Java code names it."
source_ref: "micro3d_dll/src/com/mascotcapsule/micro3d/v3/Figure.java:163"
- name: amrdecoder.dll
aliases:
- amrdecoder_64.dll
- amrdecoder_arm64.dll
- libamrdecoder.so
- libamrdecoder_64.so
- libamrdecoder_arm32.so
- libamrdecoder_arm64.so
- libamrdecoder.dylib
- libamrdecoder_arm64.dylib
system: j2me
required: false
bundled: true
validation: [existence]
description: "opencore-amr decoder for AMR audio"
note: "System.load on a name composed from os.name and os.arch, resolved against the executable's directory. The 32-bit Windows build asks for amrdecoder.dll unconditionally. A load failure is printed and swallowed."
source_ref: "win/src/main/emulator/EmulatorPlatform.java:91-97, x64/src/main/emulator/EmulatorPlatform.java:173-212"
- name: s60snr.ttf
system: j2me
required: false
bundled: true
category: game_data
validation: [existence]
description: "Series 60 typeface"
note: "Read from /res inside the jar the first time a FontAWT is built for the Series 60 face, then cached and derived per style and size."
source_ref: "src/main/emulator/graphics2D/awt/FontAWT.java:20-28"
- name: Nokia.ttf
system: j2me
required: false
bundled: true
category: game_data
validation: [existence]
description: "Nokia typeface"
note: "Read from /res inside the jar the first time a FontAWT is built for the Nokia face."
source_ref: "src/main/emulator/graphics2D/awt/FontAWT.java:29-37"
- name: presets.xml
system: j2me
required: false
bundled: true
category: game_data
validation: [existence]
description: "Device presets: screen sizes, key maps, platform identities"
note: "Devices.load reads the PresetsPath setting, /res/presets.xml by default, as a jar resource and falls back to a disk read when the resource is absent, which is how a user-supplied preset file is picked up."
source_ref: "src/main/emulator/Settings.java:131, src/main/emulator/Devices.java:25-50, src/main/emulator/Emulator.java:638"
- name: en.txt
system: j2me
required: false
bundled: true
category: game_data
validation: [existence]
description: "UI strings, English"
note: "Read from the lang directory next to the executable at startup and kept as the fallback bundle; the language setting names a sibling in the same directory. Every lookup that misses both bundles falls back to the string built into the call site."
source_ref: "src/main/emulator/UILocale.java:11-48"