Files
libretro/emulators/boom3.yml
T
Abdessamad Derraz e7aa9e870b fix: state libretro core versions from their code
Each libretro profile records version_basis and core_version is read
there at its pin. snes9x states 1.63 in snes9x.h, nestopia 2.0.0, mgba
0.11.0, vice 3.10, atari800's libretro tree 7.0.0. Cores whose build
takes its version from git carry the nearest tag in describe form
(flycast v2.7-90-ge88b0ce, ppsspp, duckstation, gearcoleco), placeholders
copied from .info files (Git, SVN) are replaced by the code's statement,
and a code that states none is null with kind none.
2026-10-27 19:21:27 +01:00

66 lines
3.3 KiB
YAML

emulator: boom3
type: libretro
core_classification: game_engine
source: "https://github.com/libretro/boom3"
upstream: "https://github.com/dhewm/dhewm3"
profiled_date: "2026-03-23"
source_commit: "efe140ce8fdf8793f5a6fbba062fb34df7f55a81"
upstream_commit: "455b88e8dff2be822f08eb498f51b383e851fa38"
core_version: "1.5.5"
version_basis:
kind: file
path: "neo/framework/Licensee.h"
pattern: '#define\s+ENGINE_VERSION\s+"dhewm3 ([^"]+)"'
display_name: "Doom 3 (boom3)"
cores: [boom3, boom3_xp]
systems: [doom3]
verification: existence
notes: >
Doom 3 source port based on dhewm3 (GPL Doom 3 engine). The core accepts
.pk4 extensions (retro_get_system_info sets valid_extensions = "pk4").
Content is loaded directly from the .pk4 file path - the engine extracts
the grandparent directory as fs_basepath (neo/sys/libretro/libretro.cpp:4242,4310-4311
via extract_directory called twice on info->path) and expects the standard
Doom 3 directory layout with base/ containing pak000.pk4 through pak008.pk4.
BASE_GAMEDIR is "base" (neo/framework/Licensee.h:58), and content in a
directory under another name is mounted in its place through fs_gamedirname
(neo/sys/libretro/libretro.cpp:3248-3262). One binary serves both
games: content in a directory named d3xp, or the doom_game core option,
passes "+set fs_game d3xp" (neo/sys/libretro/libretro.cpp:3238-3246,4245-4271) to load the
Resurrection of Evil expansion from a d3xp/ subdirectory alongside base/.
The filesystem code (neo/framework/FileSystem.cpp:2318)
scans for .pk4 files in the game directory and loads them in order, with
higher-numbered paks overriding lower ones. The core requires OpenGL
(RETRO_ENVIRONMENT_SET_HW_RENDER) and XRGB8888 pixel format. The game
data is the commercial Doom 3 release, not engine firmware. No BIOS or
system files are needed in the RetroArch system directory.
Builds made with HAVE_VR=1 (the Windows x64, Linux x64 and Linux arm64
jobs, .gitlab-ci.yml:87, 101, 109) offer the boom3_vr_enable option. With it
on, the core passes "+set fs_vr 1" and the filesystem mounts base_vr/ over
base/ and d3xp_vr/ over d3xp/ (neo/sys/libretro/libretro.cpp:3264-3272,
neo/framework/FileSystem.cpp:2440-2472). These replacement packs carry the
hand and weapon models of Doom3Quest and ship in the core's repository under
tools/vr_paks/compiled.
files:
- name: "pak399.pk4"
path: "base_vr/pak399.pk4"
system: doom3
category: game_data
load_from: content_dir
required: false
description: "VR hand and weapon models (Doom3Quest), mounted over base/"
source_ref: "neo/sys/libretro/libretro.cpp:4313-4335, neo/framework/FileSystem.cpp:2440-2450"
note: "Read in VR builds with boom3_vr_enable on. base_vr/ sits beside base/, one level above the loaded .pk4. When the file is absent the core shows a notification and the game still starts."
- name: "pak399roe.pk4"
path: "d3xp_vr/pak399roe.pk4"
system: doom3
category: game_data
load_from: content_dir
required: false
description: "VR replacement pack for Resurrection of Evil, mounted over d3xp/"
source_ref: "neo/framework/FileSystem.cpp:2465-2472"
note: "Mounted in VR builds when fs_game is d3xp. The code reads every .pk4 in d3xp_vr/ and names none, this is the pack the core's repository ships for it."