mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-10 13:33:24 -05:00
76 lines
4.4 KiB
YAML
76 lines
4.4 KiB
YAML
emulator: Omicron
|
|
type: libretro
|
|
core_classification: game_engine
|
|
source: "https://github.com/libretro/Omicron"
|
|
source_mirror: "https://git.libretro.com/libretro/Omicron"
|
|
upstream: "https://github.com/msx80/Omicron"
|
|
profiled_date: "2026-09-17"
|
|
source_commit: "0181fbad079addb1fca895325c711f8f91397be4"
|
|
upstream_commit: "aaaa2f1a98b88a6b1e6102417317ced206887076"
|
|
core_version: "v1"
|
|
display_name: "Omicron"
|
|
cores:
|
|
- omicron
|
|
systems:
|
|
- omicron
|
|
|
|
notes: |
|
|
Java game engine on libGDX by msx80, inspired by fantasy consoles. A game
|
|
is an .omicron cartridge: a jar carrying an omicron.properties descriptor
|
|
that names the Game class, and numbered sheetN.png, soundN.wav, musicN.mp3
|
|
and fileN.bin resources, all read from inside the cartridge
|
|
(omicron-player/omicron-loader/src/main/java/org/github/msx80/omicron/fantasyconsole/cartridges/JarCartridge.java:20-25,
|
|
omicron-player/omicron-engine/src/main/java/org/github/msx80/omicron/GameRun.java:74-100).
|
|
The libretro core is the experimental frontend of the same repository; the
|
|
libretro fork is the 2020-09-29 tree plus a GitLab CI file and a Makefile
|
|
that takes the JNI headers from JAVA_HOME. The CI builds the shared
|
|
library for Linux x64, i686 and aarch64 only (.gitlab-ci.yml:48-66).
|
|
|
|
retro_load_game builds <system_dir>/omicron/omicron.jar and refuses the
|
|
content when the file is absent
|
|
(libretro/LibretroOmicronCore/omicron_libretro.c:364-387). It then opens
|
|
the JVM shared library by hand: JAVA_HOME must be set
|
|
(libretro/LibretroOmicronCore/ejava.c:74-80), and libjvm.so or jvm.dll is
|
|
probed under lib/server, jre/bin/server, jre/lib/amd64/server,
|
|
jre/lib/aarch64/server, bin/server, bin/client and jre/bin/client, first
|
|
hit wins (libretro/LibretroOmicronCore/ejava.c:86-94). The JVM is created
|
|
with no option (libretro/LibretroOmicronCore/ejava.c:249-250). A
|
|
Bootstrap class compiled into the core binary
|
|
(libretro/LibretroOmicronCore/bootstrap.h) is defined through JNI and
|
|
given the jar path; it opens the jar in a URLClassLoader and instantiates
|
|
org.github.msx80.omicron.libretro.entrypoint.EntryPoint
|
|
(libretro/LibretroOmicronCore/ejava.c:258-287,
|
|
libretro/omicron-libretro-java/src/Bootstrap.java:33-39). One JVM per
|
|
process: unloading keeps it and the next load reuses it
|
|
(libretro/LibretroOmicronCore/ejava.c:291-305). The Java runtime is a
|
|
host installation, not a file of this profile.
|
|
|
|
omicron.jar is the Maven jar-with-dependencies of
|
|
libretro/omicron-libretro-java under that name: EntryPoint, the engine,
|
|
loader and api modules, libGDX 1.9.10 with the LWJGL 3 backend and the
|
|
desktop natives of both (libretro/omicron-libretro-java/pom.xml:13-61).
|
|
GdxNativesLoader.load and GL.createCapabilities extract those natives
|
|
from the jar when the frontend creates the GL context
|
|
(libretro/omicron-libretro-java/src/org/github/msx80/omicron/libretro/entrypoint/EntryPoint.java:137-147),
|
|
so nothing else is read from system_dir. Audio is a MockAudio and
|
|
Preferences are written under java.io.tmpdir
|
|
(libretro/omicron-libretro-java/src/experimental/LibretroApplication.java:45,
|
|
libretro/omicron-libretro-java/src/experimental/LibretroApplication.java:172-173).
|
|
|
|
The cartridge class loader installs a SecurityManager
|
|
(omicron-player/omicron-loader/src/main/java/org/github/msx80/omicron/fantasyconsole/crazyclassloader/NonAggressiveClassLoader.java:19-20).
|
|
From Java 18 on System.setSecurityManager throws unless the JVM starts
|
|
with java.security.manager=allow, which the core never passes; the C side
|
|
does not check the pending exception, so the game is reported as loaded
|
|
with a 0x0 geometry. Java 8 to 17 runs it.
|
|
|
|
files:
|
|
- name: "omicron.jar"
|
|
system: omicron
|
|
path: "omicron/omicron.jar"
|
|
required: true
|
|
validation: [existence]
|
|
description: "Omicron libretro Java backend: engine, libGDX, LWJGL and their natives"
|
|
source_ref: "libretro/LibretroOmicronCore/omicron_libretro.c:364-387 (GET_SYSTEM_DIRECTORY, omicron/omicron.jar, fileExists), libretro/LibretroOmicronCore/ejava.c:258-287 (Bootstrap main with the jar path), libretro/omicron-libretro-java/src/Bootstrap.java:33-39 (URLClassLoader, EntryPoint), libretro/omicron-libretro-java/pom.xml:13-61"
|
|
note: "Built with mvn package assembly:single in libretro/omicron-libretro-java after the omicron-api, omicron-loader and omicron-engine Gradle modules are published to the local Maven repository; the jar-with-dependencies output is renamed omicron.jar. Only its presence is checked."
|