mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-10 13:33:24 -05:00
feat: profile three java me front-ends
This commit is contained in:
1 parent
4bd277a7be
commit
4eea2db101
3 files changed
+654
No files matched your search
@@ -0,0 +1,113 @@
|
||||
emulator: IrataJaguar
|
||||
type: standalone
|
||||
core_classification: other
|
||||
source: "http://www.arts-union.ru/node/23"
|
||||
upstream: closed-source
|
||||
author: "Maxim Grishin (Altmer)"
|
||||
profiled_date: "2026-08-11"
|
||||
core_version: "1.0.7"
|
||||
display_name: "Atari - Jaguar (IrataJaguar)"
|
||||
cores:
|
||||
- iratajaguar
|
||||
systems:
|
||||
- atari-jaguar
|
||||
mode: standalone
|
||||
|
||||
notes: |
|
||||
Atari Jaguar emulator for Android, the Android build of Maxim Grishin's Phoenix
|
||||
Emu Project. The native library is libphoenixcore.so and reports
|
||||
PhoenixEmuProject core 2.8.21; the same core carries the author's desktop builds
|
||||
and his three other Android emulators, Real3DOPlayer, NumPadPlayer and
|
||||
GearMasterPlayer. The build read here is the free package the author publishes
|
||||
himself, IrataJaguar_free_1.0.7.zip holding app-release.apk md5
|
||||
a3e019d32203908d49e8220a79d8b570, package ru.vastness.altmer.iratajaguar
|
||||
versionName 1.0.7, minSdk and targetSdk 23, signed CN=MAXIM GRISHIN
|
||||
O=AltmerSoft L=Tula C=RU issued 2017-06-12, sha256
|
||||
f268dda6844e4f6013731f7ec7adbbb89a22cf06c9753e85c184b889dc81a758. No source has
|
||||
been published. The Android slices are stripped, so the readings below were
|
||||
taken against the desktop 2.8.JAG build from the same site, which keeps its
|
||||
symbol table, and each was confirmed against the Android x86_64 slice; the
|
||||
arm64-v8a, armeabi-v7a and x86 slices carry the same signature bytes at 0x9f7e8,
|
||||
0x83988 and 0xba848.
|
||||
ref: app-release.apk META-INF/CERT.RSA, AndroidManifest.xml,
|
||||
http://www.arts-union.ru/node/23, ph28jag-lin-x64.zip PhoenixEmuProject
|
||||
|
||||
One directory holds the cartridges and the BIOS together. MainActivity walks the
|
||||
external storage roots for a subdirectory named jaguar and offers the first one
|
||||
it finds, the settings tab lets the user pick another, and the choice is kept in
|
||||
the preference dumps. countGames scans that directory for the extensions bin,
|
||||
rom, jag, cof and j64 and hands every candidate to the library, which caches what
|
||||
it found in configs.xml under the private storage path as Library/CARTRIDGE and
|
||||
Library/BIOS entries carrying path, size, fast-md5, md5 and sh1. Those hashes are
|
||||
the cache key; nothing compares them against a known value. nameOfBios returns
|
||||
the single BIOS the library holds and the game list shows it as its first row,
|
||||
shifting the game indices by one.
|
||||
ref: MainActivity.java:257-273, 382-392, 447, 517, 99-100, 557-561,
|
||||
libphoenixcore.so countGames 0x8a1e0-0x8a5e6 (extensions 0x8a2ed-0x8a4b5),
|
||||
libphoenixcore.so 0xa4600-0xa4d4f (BIOS branch 0xa478f, entry write 0xa483e)
|
||||
|
||||
The BIOS is recognised by content, not by name. platformJaguar::getConfig
|
||||
declares two data elements, CARTRIDGE taking jag, cof and j64 and BIOS taking
|
||||
j64, and createDumpAdapter builds dumpAdapterJaguarROM with its bios flag set for
|
||||
everything that is not the CARTRIDGE element. That constructor reads the first
|
||||
0x2000 bytes and compares the first twelve against bios_sign, 00 00 00 00 00 E0
|
||||
00 08 41 F9 00 F0, the 68000 reset vector a Jaguar boot ROM opens with: stack
|
||||
pointer zero, program counter 00E00008, then the LEA that follows it. Every
|
||||
candidate is tried as BIOS before cartridge. Nothing past those twelve bytes is
|
||||
examined, so no length and no hash gates the file.
|
||||
ref: platformJaguar::getConfig 0x8ce080 (CARTRIDGE 0x8ce082, extensions
|
||||
0x8ce115-0x8ce147, BIOS 0x8ce197, extension 0x8ce1f2),
|
||||
dumpLibrary::createDumpAdapter 0x4f9600 (0x4fa37e-0x4fa402 cartridge,
|
||||
0x4fa4e7-0x4fa4fc bios flag set), dumpAdapterJaguarROM::dumpAdapterJaguarROM
|
||||
0x8d3c20 (read 0x8d3c88, memcmp 0x8d4259-0x8d426f), bios_sign 0x99d7a0,
|
||||
libphoenixcore.so 0x48162-0x482c3
|
||||
|
||||
A cartridge does not boot without it. The platform constructor gives the BIOS
|
||||
1 MB at 0xE00000 and the cartridge 8 MB at 0x800000, zeroes both, then pulls each
|
||||
through the frontend by data element index, 0 for the cartridge and 1 for the
|
||||
BIOS, byte swapping what comes back. When the BIOS read returns bytes and the
|
||||
cartridge is not an executable image, the first eight bytes of the BIOS are
|
||||
copied over DRAM 0, which is where cpu68K::Reset fetches the supervisor stack
|
||||
pointer and the program counter. Without a BIOS those eight bytes stay zero and
|
||||
the 68000 starts at 0 in cleared DRAM. The two images that skip it carry their
|
||||
own entry point: a JAGR header at offset 0x1c, whose body the constructor copies
|
||||
into DRAM itself, and a COFF image whose first word is 0x0150, the cof extension
|
||||
the config declares. Neither is a cartridge dump. There is no HLE path, and
|
||||
platform3DO::noBios has no platformJaguar counterpart in the same binary.
|
||||
ref: platformJaguar::platformJaguar 0x8d03d0 (buffers zeroed 0x8d0a35-0x8d0a8b,
|
||||
cartridge 0x8d0aa7, BIOS 0x8d0bc7-0x8d0be1, reset vector copy
|
||||
0x8d0c0b-0x8d0c2e, JAGR 0x8d0aec-0x8d0b74, COFF 0x8d0b98 and 0x8d16b9),
|
||||
cpu68K::Reset 0x8c9e90, platformJaguar::read32_cpu 0x8cc1a0
|
||||
(BIOS window 0x8cc1d4-0x8cc286), platformJaguar::read16 0x8cbdc0
|
||||
|
||||
A launcher can bypass the scan. MainActivity reads the intent extras rom and bios
|
||||
and passes them to the core as ext-rom and ext-bios, the paths used in place of
|
||||
the library, and switches to the reduced layout when either is present.
|
||||
EmulatorActivity, the activity registered for android.intent.action.VIEW, takes
|
||||
only lunchMode and lockOrient and replays whatever the library already holds.
|
||||
ref: MainActivity.java:480-481, 421-424, EmulatorActivity.java:33-35, 45,
|
||||
AndroidManifest.xml, libphoenixcore.so nativeOnCreate 0x8b2a2-0x8b562
|
||||
|
||||
files:
|
||||
- name: "[BIOS] Atari Jaguar (World).j64"
|
||||
system: atari-jaguar
|
||||
required: true
|
||||
validation: [signature]
|
||||
description: "Atari Jaguar boot ROM"
|
||||
note: "The emulator spells no filename for it. Any file the directory scan reaches whose first twelve bytes are 00 00 00 00 00 E0 00 08 41 F9 00 F0 is taken as the BIOS, so more than one boot ROM revision answers; the name carried here is the catalogue name of the retail dump, crc32 FB731AAA, under the extension the BIOS data element declares. Read into a 1 MB window at 0xE00000 and byte swapped, and its first eight bytes are copied over DRAM 0 to give the 68000 its reset vector. A longer file is read up to that bound rather than rejected."
|
||||
source_ref: "dumpAdapterJaguarROM::dumpAdapterJaguarROM 0x8d3c20 (memcmp 0x8d4259-0x8d426f), bios_sign 0x99d7a0, platformJaguar::getConfig 0x8ce197-0x8ce209, platformJaguar::platformJaguar 0x8d0bc7-0x8d0c2e"
|
||||
|
||||
exclusion_note: >
|
||||
Left out are the files the emulator writes and reads back itself, which are
|
||||
state rather than anything a user obtains: configs.xml, the dump library holding
|
||||
the scanned paths with their sizes and hashes, settings.ini, the savestates under
|
||||
.states that the game list offers as Continue and Auto entries, the NM93 EEPROM
|
||||
image behind the cartridge save, and test.txt, written and deleted to decide
|
||||
whether a chosen directory is writable. The on-screen control graphics are APK
|
||||
raw resources handed to the core through setImageRes as pixel buffers, not files
|
||||
opened from storage, and the character glyphs are compiled into the library. No
|
||||
CD image or CD BIOS applies: platformJaguar declares only the CARTRIDGE and BIOS
|
||||
elements and no CD extension, and the only CD adapter in the core belongs to the
|
||||
3DO platform, so Atari Jaguar CD is out of scope for this emulator.
|
||||
ref: libphoenixcore.so 0xb5663-0xb5774, MainActivity.java:189-199, 218-237,
|
||||
607-610, platformJaguar::getConfig 0x8ce080, dumpAdapter3DOcd 0x52b550
|
||||
@@ -0,0 +1,211 @@
|
||||
emulator: J2ME Loader
|
||||
type: standalone
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/nikita36078/J2ME-Loader"
|
||||
upstream: "https://github.com/nikita36078/J2ME-Loader"
|
||||
author: "Nikita Shakarun"
|
||||
profiled_date: "2026-08-11"
|
||||
source_commit: "9b0fa48a0a0d1e61376c0b9af28b3d2caec0a4cc"
|
||||
core_version: "1.8.2"
|
||||
display_name: "Mobile - J2ME (J2ME Loader)"
|
||||
cores:
|
||||
- j2me-loader
|
||||
- "J2ME-LOADER"
|
||||
systems:
|
||||
- j2me
|
||||
mode: standalone
|
||||
|
||||
notes: |
|
||||
MIDP/CLDC runtime for Android, package ru.playsoftware.j2meloader. A MIDlet is
|
||||
converted to Dalvik bytecode on import and runs against the javax.microedition
|
||||
classes compiled into the app, so no device firmware is read. The vendor
|
||||
extension trees (Nokia, Siemens, Samsung, Motorola, Sony Ericsson, Sprint,
|
||||
Vodafone, KDDI, JBlend, Mascot Capsule) are Java sources in the same package.
|
||||
A fork of NaikSoftware/J2meLoader with an independent history: the 2016
|
||||
ancestor carries no assets directory and none of the loading code cited below.
|
||||
ref: app/src/main/java/ru/woesss/j2me/installer/AppInstaller.java:292,
|
||||
app/src/main/java/javax/microedition/shell/AppClassLoader.java:38
|
||||
|
||||
The working directory holds converted/, configs/, templates/, data/, fs/c and
|
||||
fs/e, all written by the app. fs/c and fs/e are the JSR-75 drives, data/ is RMS
|
||||
storage, converted/ holds converted.dex and res.jar per MIDlet. Nothing there
|
||||
is user-supplied.
|
||||
ref: app/src/main/java/ru/playsoftware/j2meloader/config/Config.java:41-53,
|
||||
app/src/main/java/ru/playsoftware/j2meloader/config/Config.java:146-152
|
||||
|
||||
The shader and property 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. Roboto-Regular.ttf goes through
|
||||
Typeface.createFromAsset and appcenter.cer through the asset manager directly.
|
||||
ref: app/src/main/java/javax/microedition/util/ContextHolder.java:179-193
|
||||
|
||||
files:
|
||||
- name: Roboto-Regular.ttf
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Typeface for the virtual keyboard and overlays"
|
||||
note: "Built into a Typeface at CanvasWrapper construction, which is a field initializer of Canvas and therefore runs for every MIDlet that opens one. Drives the key captions, the soft bar and the FPS counter."
|
||||
source_ref: "app/src/main/java/javax/microedition/lcdui/graphics/CanvasWrapper.java:36, app/src/main/java/javax/microedition/lcdui/Canvas.java:141, app/src/main/java/javax/microedition/lcdui/keyboard/VirtualKeyboard.java:908, app/src/main/java/javax/microedition/lcdui/overlay/FpsCounter.java:48"
|
||||
|
||||
- name: system.props
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Default microedition system properties"
|
||||
note: "Read from assets/defaults when a profile is created and again when the config screen or updateSystemProperties fills the field. Each line becomes a System.setProperty pair at MIDlet startup, carrying microedition.configuration, microedition.platform, the JSR version strings and the vendor identity values."
|
||||
source_ref: "app/src/main/java/ru/playsoftware/j2meloader/config/ProfileModel.java:198, app/src/main/java/ru/playsoftware/j2meloader/config/ProfilesManager.java:185, app/src/main/java/ru/playsoftware/j2meloader/config/ConfigActivity.java:609, app/src/main/java/javax/microedition/shell/MicroLoader.java:247-252"
|
||||
|
||||
- name: simple.vsh
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Vertex shader for the screen blitter"
|
||||
note: "Compiled when the GL surface is created and no user shader is selected. Graphics mode 1 is the default, so this is the standard display path. Also compiled as the Simple program of the Mascot Capsule renderer."
|
||||
source_ref: "app/src/main/java/javax/microedition/lcdui/graphics/ShaderProgram.java:35, app/src/main/java/javax/microedition/lcdui/graphics/ShaderProgram.java:61, app/src/main/java/javax/microedition/lcdui/Canvas.java:782, app/src/main/java/ru/playsoftware/j2meloader/config/ProfileModel.java:180, app/src/main/java/com/mascotcapsule/micro3d/v3/Program.java:212"
|
||||
|
||||
- name: simple.fsh
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Fragment shader for the screen blitter"
|
||||
note: "Paired with simple.vsh. createProgram returning -1 raises RuntimeException at surface creation."
|
||||
source_ref: "app/src/main/java/javax/microedition/lcdui/graphics/ShaderProgram.java:36, app/src/main/java/javax/microedition/lcdui/graphics/ShaderProgram.java:62-66, app/src/main/java/com/mascotcapsule/micro3d/v3/Program.java:213"
|
||||
|
||||
- name: color.vsh
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Vertex shader for untextured Mascot Capsule geometry"
|
||||
note: "Program.create builds the tex, color, simple and sprite programs together the first time the Mascot Capsule renderer initializes, so all four pairs are read on the first micro3d frame."
|
||||
source_ref: "app/src/main/java/com/mascotcapsule/micro3d/v3/Program.java:153, app/src/main/java/com/mascotcapsule/micro3d/v3/Program.java:53-58"
|
||||
|
||||
- name: color.fsh
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Fragment shader for untextured Mascot Capsule geometry"
|
||||
note: "Carries the sphere map, toon threshold and primitive colour uniforms of the Color program."
|
||||
source_ref: "app/src/main/java/com/mascotcapsule/micro3d/v3/Program.java:154, app/src/main/java/com/mascotcapsule/micro3d/v3/Program.java:155-161"
|
||||
|
||||
- name: tex.vsh
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Vertex shader for textured Mascot Capsule geometry"
|
||||
note: "Built by Program.create alongside the other three pairs."
|
||||
source_ref: "app/src/main/java/com/mascotcapsule/micro3d/v3/Program.java:229, app/src/main/java/com/mascotcapsule/micro3d/v3/Program.java:53-58"
|
||||
|
||||
- name: tex.fsh
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Fragment shader for textured Mascot Capsule geometry"
|
||||
note: "Carries the texture size, transparency and sphere map uniforms of the Tex program."
|
||||
source_ref: "app/src/main/java/com/mascotcapsule/micro3d/v3/Program.java:230, app/src/main/java/com/mascotcapsule/micro3d/v3/Program.java:231-235"
|
||||
|
||||
- name: sprite.vsh
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Vertex shader for Mascot Capsule sprites"
|
||||
note: "Built by Program.create alongside the other three pairs."
|
||||
source_ref: "app/src/main/java/com/mascotcapsule/micro3d/v3/Program.java:310, app/src/main/java/com/mascotcapsule/micro3d/v3/Program.java:53-58"
|
||||
|
||||
- name: sprite.fsh
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Fragment shader for Mascot Capsule sprites"
|
||||
note: "Carries the texture size, transparency and colour key uniforms of the Sprite program."
|
||||
source_ref: "app/src/main/java/com/mascotcapsule/micro3d/v3/Program.java:311, app/src/main/java/com/mascotcapsule/micro3d/v3/Program.java:312-315"
|
||||
|
||||
- name: libjavam3g.so
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "JSR-184 M3G engine"
|
||||
note: "Named by System.loadLibrary(\"javam3g\") outside any catch, the first time the toolkit reports the UI thread available. Built by ndkBuild from the m3g sources against GLES 1.1."
|
||||
source_ref: "app/src/main/java/javax/microedition/m3g/Platform.java:66-72, app/src/main/cpp/Android.mk:3-15"
|
||||
|
||||
- name: libmicro3d.so
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Mascot Capsule vertex and buffer routines"
|
||||
note: "Loaded from the static initializer of Utils, so the first Mascot Capsule call brings it in. Holds fillBuffer, glReadPixels and the bone transform."
|
||||
source_ref: "app/src/main/java/com/mascotcapsule/micro3d/v3/Utils.java:149-159, app/src/main/cpp/Android.mk:28-34"
|
||||
|
||||
- name: appcenter.cer
|
||||
system: j2me
|
||||
required: false
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "X.509 certificate for the crash report endpoint"
|
||||
note: "Read into a trust store only when a crash report is sent from Android 4.1 through 4.4, where TLSv1.2 is forced. A read or certificate failure falls back to the default socket factory."
|
||||
source_ref: "app/src/main/java/ru/playsoftware/j2meloader/crashes/TLSSocketFactory.java:41-63, app/src/main/java/ru/playsoftware/j2meloader/crashes/AppCenterSender.java:56-60"
|
||||
|
||||
- name: licenses.html
|
||||
system: j2me
|
||||
required: false
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Third party licence text of the about screen"
|
||||
note: "Read when the licences dialog is opened and shown as HTML. Emulation never touches it."
|
||||
source_ref: "app/src/main/java/ru/playsoftware/j2meloader/info/LicensesDialogFragment.java:35"
|
||||
|
||||
- name: "<shader>.ini"
|
||||
path: "shaders/<shader>.ini"
|
||||
system: j2me
|
||||
required: false
|
||||
unsourceable: "user authored, no canonical file"
|
||||
category: game_data
|
||||
description: "Shader descriptor read from the emulator directory"
|
||||
note: "The config screen creates the shaders directory, lists every file ending in .ini and parses it as sections opened by a bracketed name, keeping the entries that name both a Vertex and a Fragment file. Name, Author, OutputResolution, Upscaling and four SettingName/SettingDefaultValue/SettingMinValue/SettingMaxValue groups are also read, which is the PPSSPP post-processing descriptor format."
|
||||
source_ref: "app/src/main/java/ru/playsoftware/j2meloader/config/ConfigActivity.java:336-367, app/src/main/java/ru/playsoftware/j2meloader/config/ShaderInfo.java:101-207, app/src/main/java/ru/playsoftware/j2meloader/util/FileUtils.java:207-212"
|
||||
|
||||
- name: "<shader>.vsh"
|
||||
path: "shaders/<shader>.vsh"
|
||||
system: j2me
|
||||
required: false
|
||||
unsourceable: "user authored, no canonical file"
|
||||
category: game_data
|
||||
description: "Vertex shader named by a descriptor"
|
||||
note: "Read whole from the shaders directory when the selected filter names it, then compiled in place of the built-in blitter. An unreadable file yields an empty string, the program fails to build and the bundled default is used after a toast."
|
||||
source_ref: "app/src/main/java/javax/microedition/lcdui/graphics/ShaderProgram.java:45-58, app/src/main/java/javax/microedition/shell/MicroLoader.java:270-273, app/src/main/java/ru/playsoftware/j2meloader/util/FileUtils.java:196-205"
|
||||
|
||||
- name: "<shader>.fsh"
|
||||
path: "shaders/<shader>.fsh"
|
||||
system: j2me
|
||||
required: false
|
||||
unsourceable: "user authored, no canonical file"
|
||||
category: game_data
|
||||
description: "Fragment shader named by a descriptor"
|
||||
note: "Paired with the vertex file of the same descriptor. Four float uniforms from the descriptor settings are pushed to it at surface creation."
|
||||
source_ref: "app/src/main/java/javax/microedition/lcdui/graphics/ShaderProgram.java:45-58, app/src/main/java/javax/microedition/lcdui/Canvas.java:791-793"
|
||||
@@ -0,0 +1,330 @@
|
||||
emulator: JL-Mod
|
||||
type: standalone
|
||||
core_classification: community_fork
|
||||
source: "https://github.com/woesss/JL-Mod"
|
||||
upstream: "https://github.com/nikita36078/J2ME-Loader"
|
||||
author: "Yury Kharchenko"
|
||||
profiled_date: "2026-08-11"
|
||||
source_commit: "f723a190c0bdb44b31c3bc0ead6f8665c7ea517d"
|
||||
core_version: "0.87.1"
|
||||
display_name: "Mobile - J2ME (JL-Mod)"
|
||||
cores:
|
||||
- jl-mod
|
||||
- "JL-MOD"
|
||||
systems:
|
||||
- j2me
|
||||
mode: standalone
|
||||
|
||||
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
|
||||
|
||||
files:
|
||||
- name: system.props
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Default microedition system properties"
|
||||
note: "Read from assets/defaults when a profile is created, when the config screen has no stored value and when updateSystemProperties fills the field. Each line becomes a System.setProperty and MidletSystem.setProperty pair at MIDlet startup, carrying microedition.configuration, microedition.platform, the JSR version strings and the vendor identity values."
|
||||
source_ref: "app/src/main/java/ru/playsoftware/j2meloader/config/ProfileModel.java:211, app/src/main/java/ru/playsoftware/j2meloader/config/ConfigActivity.java:644, app/src/main/java/ru/playsoftware/j2meloader/config/ProfilesManager.java:189, app/src/main/java/javax/microedition/shell/MicroLoader.java:246-252"
|
||||
|
||||
- name: simple.vsh
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Vertex shader for the screen blitter"
|
||||
note: "Compiled when the GL surface is created and no user shader is selected. Graphics mode 1 is the default, so this is the standard display path. Also compiled as the Simple program of the Mascot Capsule renderer."
|
||||
source_ref: "app/src/main/java/javax/microedition/lcdui/graphics/ShaderProgram.java:34, app/src/main/java/javax/microedition/lcdui/graphics/ShaderProgram.java:58, app/src/main/java/javax/microedition/lcdui/Canvas.java:744, app/src/main/java/ru/playsoftware/j2meloader/config/ProfileModel.java:193, app/src/main/java/ru/woesss/j2me/micro3d/Program.java:216"
|
||||
|
||||
- name: simple.fsh
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Fragment shader for the screen blitter"
|
||||
note: "Paired with simple.vsh. createProgram returning -1 raises RuntimeException at surface creation."
|
||||
source_ref: "app/src/main/java/javax/microedition/lcdui/graphics/ShaderProgram.java:35, app/src/main/java/javax/microedition/lcdui/graphics/ShaderProgram.java:59-63, app/src/main/java/ru/woesss/j2me/micro3d/Program.java:217"
|
||||
|
||||
- name: color.vsh
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Vertex shader for untextured Mascot Capsule geometry"
|
||||
note: "Program.create builds the tex, color, simple and sprite programs together the first time the Mascot Capsule renderer draws, so all four pairs are read on the first micro3d frame."
|
||||
source_ref: "app/src/main/java/ru/woesss/j2me/micro3d/Program.java:150, app/src/main/java/ru/woesss/j2me/micro3d/Program.java:53-58, app/src/main/java/ru/woesss/j2me/micro3d/Render.java:156"
|
||||
|
||||
- name: color.fsh
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Fragment shader for untextured Mascot Capsule geometry"
|
||||
note: "Carries the sphere map, toon threshold and primitive colour uniforms of the Color program."
|
||||
source_ref: "app/src/main/java/ru/woesss/j2me/micro3d/Program.java:151, app/src/main/java/ru/woesss/j2me/micro3d/Program.java:162-178"
|
||||
|
||||
- name: tex.vsh
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Vertex shader for textured Mascot Capsule geometry"
|
||||
note: "Built by Program.create alongside the other three pairs."
|
||||
source_ref: "app/src/main/java/ru/woesss/j2me/micro3d/Program.java:233, app/src/main/java/ru/woesss/j2me/micro3d/Program.java:53-58"
|
||||
|
||||
- name: tex.fsh
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Fragment shader for textured Mascot Capsule geometry"
|
||||
note: "Carries the texture size, sphere map and toon uniforms of the Tex program."
|
||||
source_ref: "app/src/main/java/ru/woesss/j2me/micro3d/Program.java:234, app/src/main/java/ru/woesss/j2me/micro3d/Program.java:253-271"
|
||||
|
||||
- name: sprite.vsh
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Vertex shader for Mascot Capsule sprites"
|
||||
note: "Built by Program.create alongside the other three pairs."
|
||||
source_ref: "app/src/main/java/ru/woesss/j2me/micro3d/Program.java:313, app/src/main/java/ru/woesss/j2me/micro3d/Program.java:53-58"
|
||||
|
||||
- name: sprite.fsh
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Fragment shader for Mascot Capsule sprites"
|
||||
note: "Carries the texture size and colour key uniforms of the Sprite program."
|
||||
source_ref: "app/src/main/java/ru/woesss/j2me/micro3d/Program.java:314, app/src/main/java/ru/woesss/j2me/micro3d/Program.java:330-337"
|
||||
|
||||
- name: m3d.vsh
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Vertex shader for the Nokia M3D renderer"
|
||||
note: "Compiled when a MIDlet first binds a com.nokia.mid.m3d context. Carries the position, texture coordinate and matrix inputs."
|
||||
source_ref: "app/src/main/java/com/nokia/mid/m3d/ShaderProgram.java:28, app/src/main/java/com/nokia/mid/m3d/ShaderProgram.java:38, app/src/main/java/com/nokia/mid/m3d/M3D.java:132"
|
||||
|
||||
- name: m3d.fsh
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Fragment shader for the Nokia M3D renderer"
|
||||
note: "Paired with m3d.vsh. A link failure raises RuntimeException in the constructor."
|
||||
source_ref: "app/src/main/java/com/nokia/mid/m3d/ShaderProgram.java:29, app/src/main/java/com/nokia/mid/m3d/ShaderProgram.java:39-76"
|
||||
|
||||
- name: patches.bin
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Binary class patches applied during MIDlet conversion"
|
||||
note: "Index of class CRC32 to patch offset, read by the static field initializer of AndroidProducer and again for each matching class the dexer instruments. A read failure outside end of file is rethrown as RuntimeException, which breaks class initialization and therefore every conversion. Patch entries are applied by the SRC/EXT/FWD/BWD opcode stream of BinaryPatcher."
|
||||
source_ref: "dexlib/src/main/java/org/microemu/android/asm/AndroidProducer.java:41, dexlib/src/main/java/org/microemu/android/asm/AndroidProducer.java:62-90, dexlib/src/main/java/com/android/dx/command/dexer/Main.java:468, dexlib/src/main/java/org/microemu/android/asm/BinaryPatcher.java:49-71"
|
||||
|
||||
- name: licenses.html
|
||||
system: j2me
|
||||
required: false
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Third party licence text of the about screen"
|
||||
note: "Read when the licences dialog is opened and shown as HTML. Emulation never touches it."
|
||||
source_ref: "app/src/main/java/ru/playsoftware/j2meloader/info/LicensesDialogFragment.java:35"
|
||||
|
||||
- name: appcenter.cer
|
||||
system: j2me
|
||||
required: false
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "X.509 certificate for the crash report endpoint"
|
||||
note: "Named as an ACRA certificate path only when the crash sender is configured on Android 4.1 through 4.4, where TLSv1.2 is forced. Every other release uses the default socket factory."
|
||||
source_ref: "app/src/main/java/ru/playsoftware/j2meloader/crashes/AppCenterSender.java:68-75"
|
||||
|
||||
- name: libc++_shared.so
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "NDK C++ runtime for the native modules"
|
||||
note: "Named ahead of every other native library, in the static initializers of GLESUtils and micro3d Utils, in the M3G toolkit init and in both synthesizer classes."
|
||||
source_ref: "app/src/main/java/ru/woesss/gles/GLESUtils.java:31, app/src/main/java/ru/woesss/j2me/micro3d/Utils.java:103, app/src/main/java/javax/microedition/m3g/Platform.java:86, app/src/main/java/ru/woesss/j2me/mmapi/synth/eas/LibEAS.java:70, app/src/main/java/ru/woesss/j2me/mmapi/synth/tsf/LibTSF.java:70"
|
||||
|
||||
- name: libgles_utils.so
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "GLES blit routines for the Nokia M3D and Mexa OpenGL surfaces"
|
||||
note: "Loaded from the static initializer of GLESUtils, so the first blit brings it in. Holds the GLES1 and GLES2 bitmap blits."
|
||||
source_ref: "app/src/main/java/ru/woesss/gles/GLESUtils.java:30-33, app/src/main/java/com/nokia/mid/m3d/M3D.java:323, app/src/main/java/com/mexa/opgl/OpglGraphics.java:493, app/src/main/cpp/gles_utils/Android.mk:5-11"
|
||||
|
||||
- name: libjavam3g.so
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "JSR-184 M3G engine"
|
||||
note: "Named by System.loadLibrary outside any catch, the first time the toolkit reports the UI thread available. Built by ndkBuild from the m3g sources against GLES 1.1."
|
||||
source_ref: "app/src/main/java/javax/microedition/m3g/Platform.java:85-89, app/src/main/java/javax/microedition/m3g/Interface.java:314, app/src/main/cpp/m3g/Android.mk:5-15"
|
||||
|
||||
- name: libmicro3d.so
|
||||
system: j2me
|
||||
required: true
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Mascot Capsule vertex and buffer routines"
|
||||
note: "Loaded from the static initializer of Utils, so the first Mascot Capsule call brings it in. Holds fillBuffer, glReadPixels and the bone transform."
|
||||
source_ref: "app/src/main/java/ru/woesss/j2me/micro3d/Utils.java:97-105, app/src/main/cpp/micro3d/Android.mk:5-10"
|
||||
|
||||
- name: liboboe.so
|
||||
system: j2me
|
||||
required: false
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Audio output stream of the sound bank synthesizers"
|
||||
note: "Named by both synthesizer classes ahead of their own libraries. Reached only when a sound bank is selected, and SynthPluginFactory catches the load failure and falls back to the Android synthesizer."
|
||||
source_ref: "app/src/main/java/ru/woesss/j2me/mmapi/synth/eas/LibEAS.java:71, app/src/main/java/ru/woesss/j2me/mmapi/synth/tsf/LibTSF.java:71, app/src/main/java/ru/woesss/j2me/mmapi/synth/SynthPluginFactory.java:40-53"
|
||||
|
||||
- name: libmmapi_common.so
|
||||
system: j2me
|
||||
required: false
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Shared player and listener code of the synthesizer plugins"
|
||||
note: "Named by both synthesizer classes ahead of their own libraries. Same fallback as liboboe.so."
|
||||
source_ref: "app/src/main/java/ru/woesss/j2me/mmapi/synth/eas/LibEAS.java:72, app/src/main/java/ru/woesss/j2me/mmapi/synth/tsf/LibTSF.java:72, app/src/main/cpp/mmapi_common/Android.mk:5-12"
|
||||
|
||||
- name: libmmapi_eas.so
|
||||
system: j2me
|
||||
required: false
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "Sonivox EAS synthesizer"
|
||||
note: "Loaded from the static initializer of LibEAS when a sound bank is selected. Links the sonivox wavetable engine statically and reads the bank as a DLS collection. A failure leaves the TinySoundFont plugin or the Android synthesizer."
|
||||
source_ref: "app/src/main/java/ru/woesss/j2me/mmapi/synth/eas/LibEAS.java:69-74, app/src/main/cpp/mmapi_eas/Android.mk:5-22, app/src/main/cpp/sonivox/Android.mk:134"
|
||||
|
||||
- name: libmmapi_tsf.so
|
||||
system: j2me
|
||||
required: false
|
||||
bundled: true
|
||||
unsourceable: "ships inside the application package"
|
||||
category: game_data
|
||||
description: "TinySoundFont synthesizer"
|
||||
note: "Loaded from the static initializer of LibTSF when a sound bank is selected. Reads the bank as a SoundFont and plays standard MIDI files. A failure leaves the EAS plugin or the Android synthesizer."
|
||||
source_ref: "app/src/main/java/ru/woesss/j2me/mmapi/synth/tsf/LibTSF.java:69-74, app/src/main/cpp/mmapi_tsf/Android.mk:5-11"
|
||||
|
||||
- name: "<soundbank>.dls"
|
||||
path: "soundbanks/<soundbank>.dls"
|
||||
system: j2me
|
||||
required: false
|
||||
unsourceable: "user supplied, no canonical file"
|
||||
category: game_data
|
||||
description: "DLS sound bank for MIDI playback"
|
||||
note: "The config screen lists every regular file in the sound banks directory with no extension filter, and the selected name is kept as a path when the file exists. EAS_LoadDLSCollection reads it with the header search flag off; a rejected file throws and the plugin is skipped."
|
||||
source_ref: "app/src/main/java/ru/playsoftware/j2meloader/config/ConfigActivity.java:318-337, app/src/main/java/javax/microedition/shell/MicroLoader.java:272-274, app/src/main/cpp/mmapi_eas/eas_player.cpp:112-126"
|
||||
|
||||
- name: "<soundbank>.sf2"
|
||||
path: "soundbanks/<soundbank>.sf2"
|
||||
system: j2me
|
||||
required: false
|
||||
unsourceable: "user supplied, no canonical file"
|
||||
category: game_data
|
||||
description: "SoundFont sound bank for MIDI playback"
|
||||
note: "Same selection path as the DLS bank. tsf_load_filename parses it, and a null result throws IllegalArgumentException so the plugin is skipped. Only standard MIDI files are played through this synthesizer."
|
||||
source_ref: "app/src/main/java/ru/playsoftware/j2meloader/config/ConfigActivity.java:318-337, app/src/main/cpp/mmapi_tsf/tsf_player.cpp:87-94, app/src/main/cpp/mmapi_tsf/tsf_player_jni.cpp:15-27"
|
||||
|
||||
- name: "<skin>"
|
||||
path: "skins/<skin>"
|
||||
system: j2me
|
||||
required: false
|
||||
unsourceable: "user supplied, no canonical file"
|
||||
category: game_data
|
||||
description: "Background image drawn behind the virtual screen"
|
||||
note: "Any image format Android can decode. Decoded twice, once for bounds and once downsampled to the display, and an undecodable file leaves the layer unset. A rectangular area filled with transparent black is taken as the screen placement."
|
||||
source_ref: "app/src/main/java/ru/playsoftware/j2meloader/config/ConfigActivity.java:297-316, app/src/main/java/javax/microedition/lcdui/skin/SkinLayer.java:81-111, app/src/main/java/javax/microedition/shell/MicroLoader.java:276-278"
|
||||
|
||||
- name: "<shader>.ini"
|
||||
path: "shaders/<shader>.ini"
|
||||
system: j2me
|
||||
required: false
|
||||
unsourceable: "user supplied, no canonical file"
|
||||
category: game_data
|
||||
description: "Shader descriptor read from the emulator directory"
|
||||
note: "The config screen creates the shaders directory, keeps every file ending in .ini and parses it as sections opened by a bracketed name, retaining the entries that name both a Vertex and a Fragment file. Name, Author, OutputResolution, Upscaling and four SettingName/SettingDefaultValue/SettingMinValue/SettingStep groups are also read, which is the PPSSPP post-processing descriptor format."
|
||||
source_ref: "app/src/main/java/ru/playsoftware/j2meloader/config/ConfigActivity.java:403-464, app/src/main/java/ru/playsoftware/j2meloader/config/ShaderInfo.java:101-207"
|
||||
|
||||
- name: "<shader>.vsh"
|
||||
path: "shaders/<shader>.vsh"
|
||||
system: j2me
|
||||
required: false
|
||||
unsourceable: "user supplied, no canonical file"
|
||||
category: game_data
|
||||
description: "Vertex shader named by a descriptor"
|
||||
note: "Read whole from the shaders directory when the selected filter names it, then compiled in place of the built-in blitter. An unreadable file yields an empty string, the program fails to build and the bundled default is used after a toast."
|
||||
source_ref: "app/src/main/java/javax/microedition/lcdui/graphics/ShaderProgram.java:44-56, app/src/main/java/javax/microedition/shell/MicroLoader.java:263-266, app/src/main/java/ru/playsoftware/j2meloader/util/FileUtils.java:152-160"
|
||||
|
||||
- name: "<shader>.fsh"
|
||||
path: "shaders/<shader>.fsh"
|
||||
system: j2me
|
||||
required: false
|
||||
unsourceable: "user supplied, no canonical file"
|
||||
category: game_data
|
||||
description: "Fragment shader named by a descriptor"
|
||||
note: "Paired with the vertex file of the same descriptor. Four float uniforms from the descriptor settings are pushed to it at surface creation."
|
||||
source_ref: "app/src/main/java/javax/microedition/lcdui/graphics/ShaderProgram.java:44-56, app/src/main/java/javax/microedition/lcdui/Canvas.java:753-754"
|
||||
Reference in new issue
Block a user