Skip to content

Omicron - RetroBIOS

Type libretro
Classification Game engines
Source https://github.com/libretro/Omicron
Upstream https://github.com/msx80/Omicron
Version v1
Profiled 2026-09-17
Cores omicron
Systems omicron
Technical 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.

1 files | 1 required, 0 optional | 1 in repo, 0 missing

omicron.jar required in repo
Omicron libretro Java backend: engine, libGDX, LWJGL and their natives

  • Path: omicron/omicron.jar
  • System: omicron
  • Validation: existence
  • Source: libretro/LibretroOmicronCore/omicron_libretro.c:364-387, libretro/LibretroOmicronCore/ejava.c:258-287, libretro/omicron-libretro-java/src/Bootstrap.java:33-39, libretro/omicron-libretro-java/pom.xml:13-61
  • 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.

Generated on 2026-10-10T11:26:01Z