mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-21 03:09:08 -05:00
Profiles that read two repositories, a libretro port and its upstream, now prefix each citation with source or upstream, decided by which tree carries the cited value at its pin. The emulator pages use the word to tell libretro glue, emulator code as the port carries it, and the upstream emulator apart.
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, and 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: "source libretro/LibretroOmicronCore/omicron_libretro.c:364-387 (GET_SYSTEM_DIRECTORY, omicron/omicron.jar, fileExists), source libretro/LibretroOmicronCore/ejava.c:258-287 (Bootstrap main with the jar path), source libretro/omicron-libretro-java/src/Bootstrap.java:33-39 (URLClassLoader, EntryPoint), source 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."
|