mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-10 21:43:23 -05:00
194 lines
10 KiB
YAML
194 lines
10 KiB
YAML
emulator: PrBoom+
|
|
type: standalone
|
|
core_classification: game_engine
|
|
source: "https://github.com/coelckers/prboom-plus"
|
|
upstream: "https://github.com/coelckers/prboom-plus"
|
|
profiled_date: "2026-08-08"
|
|
source_commit: "969515162c5aebea4ad7a125ee178dcad3d576ad"
|
|
core_version: "2.6.66"
|
|
display_name: "Doom (PrBoom+)"
|
|
cores:
|
|
- prboom-plus
|
|
systems:
|
|
- doom
|
|
mode: standalone
|
|
|
|
notes: |
|
|
Doom source port forked from PrBoom, with the software and OpenGL renderers
|
|
in a single binary. FindIWADFile accepts doom2f, doom2, plutonia, tnt, doom,
|
|
doom1, doomu, freedoom2, freedoom1, freedm, hacx, chex, rekkrsa, bfgdoom2
|
|
and bfgdoom (prboom2/src/d_main.c:144-165). ES-DE runs it as "prboom-plus -iwad <file>",
|
|
so the IWAD is content, not a system file.
|
|
|
|
prboom-plus.wad holds the engine's own lumps: the palette, the water
|
|
colormap, the sine, tangent and gamma tables, the HUD layouts, the status
|
|
bar digits, the crosshairs, the dog and plasma sprites, the GLSL shader
|
|
sources, and the DEHACKED patches applied to Chex Quest, the BFG Edition
|
|
and NERVE.WAD. M_LoadDefaults installs it as wad_files[0] and aborts with
|
|
"PrBoom-Plus.wad not found. Can't continue." when I_FindFile returns
|
|
nothing (prboom2/src/m_misc.c:1723-1724). It loads even under -noload, which caps the
|
|
autoload loop at that one entry (prboom2/src/d_main.c:1877-1879). Lumps coming from it
|
|
are tagged LUMP_PRBOOM so a PWAD can override them (prboom2/src/w_wad.c:185-196).
|
|
|
|
The tree ships the inputs, not the file: data/CMakeLists.txt builds it with
|
|
the rdatawad tool from the raw palette, lumps, PPM graphics and WAV sounds
|
|
under data/, then installs it into PRBOOMDATADIR, which is
|
|
<prefix>/share/prboom-plus (CMakeLists.txt:188-189, data/CMakeLists.txt:370).
|
|
|
|
I_FindFile searches, in order: the config directory, the working directory,
|
|
PRBOOMDATADIR, $DOOMWADDIR, the build-time DOOMWADDIR, $HOME/doom, $HOME,
|
|
/usr/local/share/games/doom, /usr/share/games/doom, /usr/local/share/doom,
|
|
/usr/share/doom, then every entry of $DOOMWADPATH (SDL/i_system.c:437-449,
|
|
471-505). The working directory entry carries no prefix, so an absolute
|
|
name resolves on that pass. Existence is the only test, and the requested
|
|
extension is appended only when the name as written is missing
|
|
(SDL/i_system.c:532-538). The config directory is the directory holding the
|
|
binary on Windows (SDL/i_system.c:289-311), and ~/.prboom-plus or the
|
|
XDG path from SDL_GetPrefPath elsewhere (SDL/i_system.c:347-383). The macOS
|
|
build replaces the list with ~/Library/Application Support/PrBoom-Plus, the
|
|
bundle resource path, and the bare name (MAC/i_system.m:57-59, 117-142).
|
|
|
|
snd_midiplayer picks the MIDI backend and defaults to fluidsynth on Windows,
|
|
sdl elsewhere (prboom2/src/m_misc.c:444-450). Only the sdl value leaves
|
|
use_experimental_music clear and routes MIDI through SDL_mixer
|
|
(SDL/i_sound.c:1662-1668, 1221-1225); every other value brings up the
|
|
in-tree players. Their init results are recorded once at startup
|
|
(SDL/i_sound.c:1383-1384) and consulted per song, a player that failed to
|
|
init being logged and passed over for the next entry of music_player_order
|
|
(SDL/i_sound.c:1511-1538). fluidsynth is the only one reading an external
|
|
file. The OPL2 player that follows it takes its instruments from the IWAD
|
|
GENMIDI lump (MUSIC/oplplayer.c:337-354).
|
|
|
|
files:
|
|
- name: "prboom-plus.wad"
|
|
system: doom
|
|
description: "PrBoom+ engine data WAD"
|
|
required: true
|
|
size: 357768
|
|
md5: "1164ae723c9181698cc41dde6a341132"
|
|
sha1: "8a799c6615702aac72016b784e30ea1abd3e197b"
|
|
crc32: "a4626dfa"
|
|
source_ref: "prboom2/src/m_misc.c:1723-1724 (I_FindFile then I_Error), prboom2/src/d_main.c:1873-1895 (autoload), prboom2/src/w_wad.c:185-196 (LUMP_PRBOOM tagging), prboom2/CMakeLists.txt:41 (PACKAGE_TARNAME), prboom2/CMakeLists.txt:234-235 (WAD_DATA), prboom2/data/CMakeLists.txt:364-370 (rdatawad build and install)"
|
|
note: >
|
|
The code checks existence only, then rejects a file whose header is
|
|
neither IWAD nor PWAD (prboom2/src/w_wad.c:216-218). Hashes are those of the file
|
|
rdatawad produces from the data/ assets at this revision, which matches
|
|
the copy in the v2.6.66 release archive byte for byte. They identify the
|
|
2.6.66 build; other versions carry different lumps.
|
|
|
|
- name: "TimGM6mb.sf2"
|
|
system: doom
|
|
description: "General MIDI soundfont for the fluidsynth MIDI player"
|
|
required: false
|
|
hle_fallback: true
|
|
source_ref: "prboom2/src/m_misc.c:445-446 (_WIN32 defaults for snd_midiplayer and snd_soundfont), prboom2/src/MUSIC/flplayer.c:193-202 (I_FindFile2 then fluid_synth_sfload)"
|
|
note: >
|
|
Named by the Windows default of snd_soundfont, where snd_midiplayer also
|
|
defaults to fluidsynth, so a stock Windows configuration reads it. Any
|
|
soundfont works: the value is a config string and I_FindFile2 appends
|
|
.sf2 only when the name as written is missing. A load failure returns 0
|
|
from fl_init, and the song falls through to the next player on the list,
|
|
the built-in OPL2 synth.
|
|
|
|
- name: "default-GM.sf3"
|
|
system: doom
|
|
description: "General MIDI soundfont named by the non-Windows soundfont default"
|
|
required: false
|
|
hle_fallback: true
|
|
source_ref: "prboom2/src/m_misc.c:448-449 (non-_WIN32 defaults, /usr/share/sounds/sf3/default-GM.sf3), prboom2/src/MUSIC/flplayer.c:193-202 (I_FindFile2 then fluid_synth_sfload)"
|
|
note: >
|
|
The default is an absolute path, which resolves through the unprefixed
|
|
working directory entry of the search table. Reached once snd_midiplayer
|
|
is set away from its sdl default, since sdl keeps the fluidsynth player
|
|
out of the picture entirely. Same fallback to the OPL2 synth as the
|
|
Windows default.
|
|
|
|
analysis:
|
|
engine_wad_contents:
|
|
source_ref: "data/CMakeLists.txt:24-340 (rdatawad input lists), data/CMakeLists.txt:342-362 (WAD_SRC and WAD_CMDLINE)"
|
|
note: >
|
|
What rdatawad packs into prboom-plus.wad, in the order the command line
|
|
builds it.
|
|
palette: palette.rgb
|
|
lumps:
|
|
- "SWITCHES, ANIMATED"
|
|
- "the CR* colour translation tables"
|
|
colormaps: "WATERMAP, between C_START and C_END"
|
|
tables:
|
|
note: "Between B_START and B_END"
|
|
entries:
|
|
- "SINETABL, TANGTABL, TANTOANG, GAMMATBL"
|
|
- "CHEXDEH, BFGBEX, NERVEBEX"
|
|
- "GLSHADOW, GLFP, GLVP"
|
|
- "-PRBHUD-, read by hu_stuff.c:1144"
|
|
- "the M_* OpenGL automap icons listed in gl_map.c:48-68"
|
|
sounds: "DSDGSIT, DSDGATK, DSDGACT, DSDGDTH, DSDGPAIN"
|
|
graphics: "the DIG* status bar digits, STBR*, the BOX* frame pieces, STKEYS6-8, STCFN096, M_BUTT1/2, M_COLORS, M_PALNO, M_PALSEL, M_VBOX, CROSS1-3"
|
|
flats: "-N0_TEX-, between FF_START and FF_END"
|
|
sprites: "TNT1A0, the DOGS* frames, PLS1* and PLS2*, between SS_START and SS_END"
|
|
|
|
shader_override:
|
|
files:
|
|
- "shaders/glvp.txt"
|
|
- "shaders/glfp.txt"
|
|
source_ref: "gl_shader.c:144-152 (path built from I_DoomExeDir), gl_shader.c:84-129 (ReadLump)"
|
|
note: >
|
|
Read from the config directory when present. ReadLump falls back to the
|
|
GLVP and GLFP lumps in the ns_prboom namespace when the file is missing,
|
|
and those lumps are built into prboom-plus.wad
|
|
(data/CMakeLists.txt:60-61). No distribution ships the .txt form: it is
|
|
an override slot, and the shipped content is already covered by the WAD.
|
|
|
|
generated_files:
|
|
note: "Written by the program itself, none is user-supplied"
|
|
entries:
|
|
- filename: "prboom-plus.cfg"
|
|
source_ref: "prboom2/src/m_misc.c:1586-1600 (BOOM_CFG, path from I_DoomExeDir), prboom2/src/m_misc.c:1606 (read)"
|
|
- filename: "RGB2PAL.dat"
|
|
source_ref: "gl_hires.c:938-953 (read), gl_hires.c:962-967 (opened wb and written)"
|
|
note: >
|
|
A 24-bit RGB to palette lookup table built from V_GetPlaypal, so its
|
|
contents follow whichever IWAD is loaded. gl_hires.c:920-936 prefers
|
|
an RGB2PAL lump of the right length when a WAD supplies one.
|
|
- filename: "<hires image>.cache"
|
|
source_ref: "gl_hires.c:1144-1147 (read), gl_hires.c:1179 (gld_HiRes_WriteCache)"
|
|
note: "Keyed on the source image mtime and discarded when it differs."
|
|
- filename: "levelstat.txt"
|
|
source_ref: "e6y.c:968"
|
|
- filename: "levelinfo.txt"
|
|
source_ref: "prboom2/src/d_main.c:1049-1060, behind GL_DOOM and PRBOOM_DEBUG"
|
|
- filename: "temp_a.nut, temp_v.nut"
|
|
source_ref: "prboom2/src/m_misc.c:1065-1066 (cap_tempfile1, cap_tempfile2)"
|
|
|
|
user_supplied_paths:
|
|
note: "Named on the command line or in the config, with no fixed filename"
|
|
entries:
|
|
- what: "IWAD, -iwad or autodetected from the standard names"
|
|
source_ref: "prboom2/src/d_main.c:144-165 (standard_iwads), prboom2/src/d_main.c:977-990 (FindIWADFile)"
|
|
- what: "PWADs, -file"
|
|
source_ref: "prboom2/src/d_main.c:1906-1927"
|
|
- what: "DEHACKED and BEX patches, -deh, plus the dehfile_1 and dehfile_2 config keys and the autoload directories"
|
|
source_ref: "prboom2/src/d_main.c:2036-2055, prboom2/src/d_main.c:2081-2099, prboom2/src/m_misc.c:336-337"
|
|
- what: "extra autoloaded WADs, wadfile_1 and wadfile_2"
|
|
source_ref: "prboom2/src/m_misc.c:334-335, prboom2/src/d_main.c:1873-1895"
|
|
- what: "autoload directories, <config dir>/autoload/doom-all and one per IWAD"
|
|
source_ref: "prboom2/src/d_main.c:1400-1414 (GetAutoloadBaseDir), prboom2/src/d_main.c:1500-1519 (D_AutoloadIWadDir)"
|
|
- what: "demos, -playdemo, -fastdemo, -record"
|
|
source_ref: "r_demo.c:89-119, g_game.c:2570, g_game.c:3150"
|
|
- what: "external high resolution texture packs, under textures/, flats/ and patches/"
|
|
source_ref: "gl_hires.c:467-631 (hires_paths), gl_hires.c:703-719 (gl_texture_hires_dir or I_DoomExeDir)"
|
|
- what: "savegames, DOOMSAVEDIR or the config directory"
|
|
source_ref: "prboom2/src/d_main.c:1019-1032, m_menu.c:957"
|
|
- what: "response files, @name"
|
|
source_ref: "prboom2/src/d_main.c:1094-1112"
|
|
|
|
external_programs:
|
|
note: "Invoked as processes, not read as data files"
|
|
entries:
|
|
- what: "ffmpeg, video capture and muxing"
|
|
source_ref: "prboom2/src/m_misc.c:1062-1064 (cap_soundcommand, cap_videocommand, cap_muxcommand)"
|
|
- what: "wget then unzip, fetching a WAD a game server asks for"
|
|
source_ref: "d_client.c:236-257 (execlp), doc/prboom-plus.6:200-206"
|
|
- what: "getwad_cmdline, run through system() when a needed WAD is missing"
|
|
source_ref: "r_demo.c:1641-1704 (D_TryGetWad), prboom2/src/m_misc.c:1029 (default empty, so the path is inert until configured)"
|