Skip to content

LZDoom emulates Doom, Heretic, Hexen and 2 more systems. It reads 38 files, none of them required: it starts games without them.

The app keeps its data in this folder:

On Linux: ~/.config/lzdoom/

Created on first run, and the first directory of the default FileSearch and IWADSearch lists.

Source: src/posix/unix/i_specialpaths.cpp:44-99, src/version.h:100-104

About this profile
Detail Value
Type standalone
Classification Game engine
Source https://github.com/drfrag666/lzdoom
Version 3.88b
Revision drfrag666/lzdoom@4ce19a12164e
Profiled 2026-10-20
Profile YAML, JSON
Cores lzdoom
Systems Doom, Heretic, Hexen, Strife, Chex Quest
Data folder (Linux) ~/.config/lzdoom/
Install this emulator's files

With AmberELEC, EmuELEC or RetroPie: the installer finds AmberELEC, EmuELEC or RetroPie and its BIOS folder, then downloads only the files LZDoom reads there and checks each one.

Open a terminal on the device. Or connect from a computer with SSH, a terminal over the network. Paste the line. Press Enter.

Terminal
curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh -s -- --emulator lzdoom
Technical notes

Legacy branch of GZDoom 3.x maintained by drfrag for older GPUs and OpenGL 2 hardware, built as lzdoom. The profiled revision is tag 3.88b, the one RetroPie builds. version.h names the engine resources: BASEWAD lzdoom.pk3 and OPTIONALWAD game_support.pk3 (src/version.h:90-91).

Engine resources (built from the wadsrc directories by add_pk3): lzdoom.pk3 searched first in the program directory, fatal "Cannot find lzdoom.pk3" when absent ref: src/d_main.cpp:2530-2534, wadsrc/CMakeLists.txt:3 game_support.pk3 loaded after lzdoom.pk3 when found ref: src/d_main.cpp:2537, src/d_iwad.cpp:757-763 lights.pk3 autoloadlights, false by default brightmaps.pk3 autoloadbrightmaps, false by default ref: src/d_main.cpp:228-229, 2164-2178 A GAMEINFO lump can switch the last two on. Neither is read for a shareware IWAD. game_widescreen_gfx.pk3 and game_conpics_gfx.pk3 are looked up too, both on by default (src/d_main.cpp:230-231, 2179-2190), but no wadsrc directory of this tree builds them.

BaseFileSearch tries the program directory first for these files, then the name as given, then the FileSearch.Directories of the configuration (src/d_main.cpp:1793-1830). On Linux those default to $HOME/.config/lzdoom, SHARE_DIR, /usr/local/share/doom, /usr/local/share/games/doom, /usr/share/doom, /usr/share/games/doom and $DOOMWADDIR (src/gameconfigfile.cpp:153-172).

Game data is a user-supplied IWAD. iwadinfo.txt declares each known IWAD with the lumps it must contain, its file name and the support files it loads. Each IWADSearch directory (".", $DOOMWADDIR, $HOME/.config/lzdoom and the four share directories on Linux, src/gameconfigfile.cpp:126-149) is scanned for the names of the Names block and for any .iwad, .ipk3 or .ipk7 file, and each candidate is identified by its lumps, not by its name (src/d_iwad.cpp:319-367, 466-499, 509-527). The Names block also lists doomu.wad, bfgdoom2.wad, doom2bfg.wad, bfgdoom.wad, doombfg.wad, doomxbox.wad, doom2xbox.wad, tntunity.wad, plutoniaunity.wad, freedoomu.wad, freedoom.wad, hereticsr.wad, hexendemo.wad, hexdemo.wad, strife0.wad, strife.wad and blasphem.wad (wadsrc_extra/static/iwadinfo.txt:568-618). -iwad adds the named file, trying .wad, .pk3, .iwad, .ipk3 and .ipk7 when it has no extension, and the first usable one wins (src/d_iwad.cpp:566-602, 638-650). An IWAD that declares Required is dropped unless the IWAD it names was found, and Load files are read from the IWAD's own directory (src/d_iwad.cpp:610-635, 772-788). Startup stops with "Cannot find a game IWAD" when nothing is identified (src/d_iwad.cpp:693-696). No hash is read.

MIDI music goes through FluidSynth with fluid_patchset "lzdoom" (src/sound/music/music_config.cpp:118). The soundfont manager reads every file of SoundfontSearch.Directories, keeping SF2, WOPL, WOPN and zipped GUS patch sets by their header, and falls back to $PROGDIR/soundfonts/lzdoom.sf2 when it found none (src/gameconfigfile.cpp:175-202, src/sound/music/i_soundfont.cpp:330-380, 428-431). The OPL and OPN banks are read only with adl_use_custom_bank or opn_use_custom_bank, off by default (src/sound/music/music_config.cpp:92-99, 253-260).

RetroPie installs lzdoom.pk3, game_support.pk3, lights.pk3, brightmaps.pk3 and soundfonts/ beside the binary, leaves fm_banks/ out, and launches "lzdoom -iwad <file>" with DOOMWADDIR set to its ports/doom directory, into which it downloads doom1.wad and the Freedoom 0.13.0 IWADs.

38 files: 0 required, 38 optional. 7 more files come with the app.

By kind: 45 game data.

45 rows
File Required Hash
game_widescreen_gfx.pk3 no MD5 094baa608b85
game_conpics_gfx.pk3 no -
doom.wad no -
doom1.wad no -
doom2.wad no -
doom2f.wad no -
nerve.wad no -
doomunity.wad no -
doom2unity.wad no -
nerveunity.wad no -
extras.wad no -
soundtrack no -
doom_complete.pk3 no -
plutonia.wad no -
tnt.wad no -
sigil_v1_21.wad no -
sigil_shreds.wad no -
freedoom1.wad no -
freedoom2.wad no -
freedm.wad no -
heretic.wad no -
heretic1.wad no -
blasphemer.wad no -
hexen.wad no -
hexdd.wad no -
strife1.wad no -
sve.wad no -
voices.wad no -
chex.wad no -
chex3.wad no -
hacx.wad no -
hacx2.wad no -
action2.wad no -
harm1.wad no -
square.pk3 no -
square1.pk3 no -
delaweare.wad no -
rotwb.wad no -
lzdoom.pk3 with the app MD5 fa846e2dc466
game_support.pk3 with the app MD5 e11fb785ff8d
lights.pk3 with the app MD5 199fa1fac48a
brightmaps.pk3 with the app MD5 19c17b0ccbe5
soundfonts/lzdoom.sf2 with the app SHA1 9dba9212f2e3
fm_banks/GENMIDI.GS.wopl with the app SHA1 538d220d87b8
fm_banks/gs-by-papiezak-and-sneakernets.wopn with the app SHA1 12e77c61ae10

In this collection: 26 in repo and 12 missing.

38 files

game_widescreen_gfx.pk3 optional in repo game data

  • Widescreen HUD and menu graphics, read by default when present. Not built from this tree. The 3.88b Windows release archive (LZDoom_3.88b_x64.zip) ships this copy.

game_conpics_gfx.pk3 optional missing game data

  • Looked up by default when present. Neither this tree nor any 3.88b release package ships it.

doom.wad optional in repo game data

  • The Ultimate DOOM, DOOM Registered, the BFG and XBox editions all use this name and are told apart by their lumps.

doom1.wad optional in repo game data

  • DOOM Shareware.

doom2.wad optional in repo game data

doom2f.wad optional in repo game data

nerve.wad optional missing game data

  • No Rest for the Living, which requires DOOM 2. Also loaded from the IWAD directory by the BFG and XBox editions of DOOM 2.

doomunity.wad optional missing game data

doom2unity.wad optional missing game data

nerveunity.wad optional missing game data

  • Loaded from the IWAD directory by DOOM 2: Unity Edition.

extras.wad optional missing game data

  • Loaded from the IWAD directory by the Unity editions.

soundtrack optional missing game data

  • Loaded from the IWAD directory by the Unity editions.

doom_complete.pk3 optional missing game data

  • WadSmoosh merge of the Doom IWADs.

plutonia.wad optional in repo game data

tnt.wad optional in repo game data

sigil_v1_21.wad optional missing game data

  • Sigil, which requires The Ultimate DOOM.

sigil_shreds.wad optional missing game data

  • Loaded from the IWAD directory by Sigil.

freedoom1.wad optional in repo game data

freedoom2.wad optional in repo game data

freedm.wad optional in repo game data

heretic.wad optional in repo game data

  • System: Heretic
  • Heretic and Shadow of the Serpent Riders share the name and are told apart by their lumps.

heretic1.wad optional in repo game data

  • System: Heretic
  • Heretic Shareware.

blasphemer.wad optional in repo game data

  • System: Heretic
  • Aliases: blasphem.wad

hexen.wad optional in repo game data

  • System: Hexen

hexdd.wad optional in repo game data

  • System: Hexen
  • Deathkings expansion, which requires hexen.wad.

strife1.wad optional in repo game data

  • System: Strife

sve.wad optional missing game data

  • System: Strife
  • Veteran Edition, which requires Strife: Quest for the Sigil.

voices.wad optional in repo game data

  • System: Strife
  • Loaded from the IWAD directory by Strife.

chex.wad optional in repo game data

  • System: Chex Quest

chex3.wad optional in repo game data

  • System: Chex Quest

hacx.wad optional in repo game data

hacx2.wad optional in repo game data

action2.wad optional in repo game data

harm1.wad optional in repo game data

square.pk3 optional missing game data

  • Absent from the Names block: picked up only when named with -iwad.

square1.pk3 optional in repo game data

delaweare.wad optional in repo game data

rotwb.wad optional in repo game data

7 files

lzdoom.pk3 comes with the app game data

  • Fonts, menus, ZScript, textures. Fatal if absent. Existence is the only test. The pk3s are zipped at build time and their bytes change from one build to the next: the hashes are those of the copy in the 3.88b Linux release package (lzdoom_3.88b_amd64.deb).

game_support.pk3 comes with the app game data

  • Holds iwadinfo.txt and the per-game filters. Shipped in the 3.88b release packages.

lights.pk3 comes with the app game data

  • Dynamic light definitions, read when autoloadlights is set. Shipped in the 3.88b release packages.

brightmaps.pk3 comes with the app game data

  • Brightmap textures, read when autoloadbrightmaps is set. Shipped in the 3.88b release packages.

lzdoom.sf2 comes with the app game data

  • Path: soundfonts/lzdoom.sf2
  • Default soundfont, used when the soundfont directories hold none. Committed in the tree as soundfont/lzdoom.sf2 and copied next to the executable.

GENMIDI.GS.wopl comes with the app game data

  • Path: fm_banks/GENMIDI.GS.wopl
  • OPL3 bank copied next to the executable, read only with adl_use_custom_bank. The RetroPie package leaves it out.

gs-by-papiezak-and-sneakernets.wopn comes with the app game data

  • Path: fm_banks/gs-by-papiezak-and-sneakernets.wopn
  • OPN2 bank copied next to the executable, read only with opn_use_custom_bank. The RetroPie package leaves it out.
.