mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-10 13:33:24 -05:00
182 lines
7.6 KiB
YAML
182 lines
7.6 KiB
YAML
emulator: devilutionx
|
|
type: standalone
|
|
core_classification: game_engine
|
|
source: "https://github.com/diasurgical/DevilutionX"
|
|
upstream: ~
|
|
profiled_date: "2026-10-04"
|
|
source_commit: "dac104babfb6187415432f428ac2516747ffc154"
|
|
core_version: "1.6.0-dev"
|
|
display_name: "Diablo (DevilutionX)"
|
|
cores: [devilutionx]
|
|
systems: [diablo]
|
|
verification: md5
|
|
|
|
notes: |
|
|
DevilutionX is a reimplementation of the Diablo 1 engine built from
|
|
the leaked Diablo source. It plays the original retail Diablo and the
|
|
Hellfire expansion from their shipped MPQ archives, or the shareware
|
|
Spawn edition. The code loads MPQs from the game folder (next to the
|
|
executable) and from a few platform-specific locations (XDG data home,
|
|
macOS Application Support, etc.) via GetMPQSearchPaths().
|
|
|
|
Load order is defined in Source/engine/assets.cpp:
|
|
LoadCoreArchives() (:505) - devilutionx.mpq, fonts.mpq (optional)
|
|
LoadLanguageArchive() (:521) - <language code>.mpq, skipped for "en"
|
|
LoadGameArchives() (:530) - diabdat.mpq or spawn.mpq (required)
|
|
hfbard.mpq, hfbarb.mpq (always probed)
|
|
LoadHellfireArchives() (:570) - hellfire.mpq + hfmonk/hfmusic/hfvoice
|
|
LoadModArchives() (:703) - mods/<name>.mpq for each active mod
|
|
|
|
diabdat.mpq is matched uppercase first ("DIABDAT.MPQ", GOG/retail CD
|
|
convention, line 538), then lowercase (line 542); if neither is found
|
|
the loader falls back to spawn.mpq (line 544). Missing BOTH triggers
|
|
the "diabdat.mpq or spawn.mpq" InsertCDDlg dialog and the game cannot
|
|
start.
|
|
|
|
Hellfire is optional: the engine advertises Diablo even when hellfire
|
|
files are absent. If hellfire.mpq is loaded, hfmonk.mpq + hfmusic.mpq
|
|
+ hfvoice.mpq must also be present (line 588) or the game aborts.
|
|
|
|
devilutionx.mpq is a build artefact packed from the repo's assets/
|
|
directory with the smpq tool (CMake option BUILD_ASSETS_MPQ,
|
|
CMakeLists.txt:192-204). CMake/Assets.cmake:46-238 lists the packed
|
|
files (ASSETS_VERSION, arena, data, fonts, gendata, levels, lua,
|
|
plrgfx, txtdata and ui_art, plus data/inv/objcurs-widths.txt and the
|
|
ui_art PNGs outside SDL1 and Vita builds); each Translations/<lang>.po
|
|
is compiled with msgfmt to <lang>.gmo and appended
|
|
(CMake/Assets.cmake:8-29, 268-272). The archive is written with
|
|
"smpq -A -M 1 -C BZIP2 -c" from the staged assets directory
|
|
(CMake/Assets.cmake:287-294). mods/hf.mpq is built the same way from
|
|
the mods/hf file list (CMake/Mods.cmake:8-33, 58-67). The compiled
|
|
binary expects devilutionx.mpq next to the executable on every
|
|
platform except Android, Apple and 3DS/Switch (:509-516), where its
|
|
contents are shipped loose. After loading the core archives the engine
|
|
reads the asset ASSETS_VERSION and aborts with "Failed to load UI
|
|
resources" unless its content is "1\n" (Source/init.cpp:54, 79-85,
|
|
Source/diablo.cpp:1225-1239). The same test on fonts\VERSION applies
|
|
to fonts.mpq when it is loaded (Source/init.cpp:98-114).
|
|
|
|
fonts.mpq is the CJK + language assets add-on from the
|
|
devilutionx-assets release; English installs do not need it.
|
|
|
|
files:
|
|
- name: diabdat.mpq
|
|
path: devilutionx/diabdat.mpq
|
|
system: diablo
|
|
category: game_data
|
|
required: true
|
|
description: "Diablo retail or GOG MPQ (contains all game data)"
|
|
aliases: [DIABDAT.MPQ]
|
|
note: "primary game archive; GOG CD convention uses uppercase"
|
|
source_ref: "Source/engine/assets.cpp:537-542"
|
|
|
|
- name: spawn.mpq
|
|
path: devilutionx/spawn.mpq
|
|
system: diablo
|
|
category: game_data
|
|
required: false
|
|
description: "Diablo shareware archive, used when diabdat.mpq is absent"
|
|
note: "freely redistributable shareware; triggers gbIsSpawn mode"
|
|
source_ref: "Source/engine/assets.cpp:544"
|
|
|
|
- name: hellfire.mpq
|
|
path: devilutionx/hellfire.mpq
|
|
system: diablo
|
|
category: game_data
|
|
required: false
|
|
description: "Hellfire expansion main archive"
|
|
source_ref: "Source/engine/assets.cpp:573"
|
|
|
|
- name: hfmonk.mpq
|
|
path: devilutionx/hfmonk.mpq
|
|
system: diablo
|
|
category: game_data
|
|
required: false
|
|
description: "Hellfire monk class assets; mandatory when hellfire.mpq is present"
|
|
source_ref: "Source/engine/assets.cpp:583"
|
|
|
|
- name: hfmusic.mpq
|
|
path: devilutionx/hfmusic.mpq
|
|
system: diablo
|
|
category: game_data
|
|
required: false
|
|
description: "Hellfire music; mandatory when hellfire.mpq is present"
|
|
source_ref: "Source/engine/assets.cpp:584"
|
|
|
|
- name: hfvoice.mpq
|
|
path: devilutionx/hfvoice.mpq
|
|
system: diablo
|
|
category: game_data
|
|
required: false
|
|
description: "Hellfire voices; mandatory when hellfire.mpq is present"
|
|
source_ref: "Source/engine/assets.cpp:585"
|
|
|
|
- name: "hfbard.mpq"
|
|
path: "devilutionx/hfbard.mpq"
|
|
system: diablo
|
|
category: game_data
|
|
required: false
|
|
description: "Hellfire bard class assets, loaded when present"
|
|
source_ref: "Source/engine/assets.cpp:565"
|
|
|
|
- name: "hfbarb.mpq"
|
|
path: "devilutionx/hfbarb.mpq"
|
|
system: diablo
|
|
category: game_data
|
|
required: false
|
|
description: "Hellfire barbarian class assets, loaded when present"
|
|
source_ref: "Source/engine/assets.cpp:566"
|
|
|
|
- name: "devilutionx.mpq"
|
|
path: "devilutionx/devilutionx.mpq"
|
|
system: diablo
|
|
category: game_data
|
|
required: true
|
|
description: "Engine assets (UI art, fonts, data tables, Lua scripts, compiled translations) packed from the repository's assets/ directory"
|
|
note: "Loaded first on every platform except Android, Apple, 3DS and Switch. Its files are also found in an assets/ directory next to the binary when the build installs them loose. The engine aborts when the asset ASSETS_VERSION is absent or is not \"1\\n\". Built by CMake with smpq (MPQ version 1, BZIP2, no attributes) from the file list of CMake/Assets.cmake plus one <lang>.gmo per translation."
|
|
source_ref: "Source/engine/assets.cpp:509-516, 223-226, Source/init.cpp:54, 79-85, Source/diablo.cpp:1225-1239, CMake/Assets.cmake:46-224, 287-294"
|
|
|
|
- name: "fonts.mpq"
|
|
path: "devilutionx/fonts.mpq"
|
|
system: diablo
|
|
category: game_data
|
|
required: false
|
|
description: "CJK and extended-language font pack from devilutionx-assets release"
|
|
source_ref: "Source/engine/assets.cpp:517"
|
|
|
|
- name: "es.mpq"
|
|
path: "devilutionx/es.mpq"
|
|
system: diablo
|
|
category: game_data
|
|
required: false
|
|
description: "Spanish voice pack"
|
|
note: "The archive named after the selected language code is loaded; English loads none."
|
|
source_ref: "Source/engine/assets.cpp:521-528"
|
|
|
|
- name: "pl.mpq"
|
|
path: "devilutionx/pl.mpq"
|
|
system: diablo
|
|
category: game_data
|
|
required: false
|
|
description: "Polish voice pack"
|
|
note: "The archive named after the selected language code is loaded; English loads none."
|
|
source_ref: "Source/engine/assets.cpp:521-528"
|
|
|
|
- name: "ru.mpq"
|
|
path: "devilutionx/ru.mpq"
|
|
system: diablo
|
|
category: game_data
|
|
required: false
|
|
description: "Russian voice pack"
|
|
note: "The archive named after the selected language code is loaded; English loads none."
|
|
source_ref: "Source/engine/assets.cpp:521-528"
|
|
|
|
- name: "hf.mpq"
|
|
path: "devilutionx/mods/hf.mpq"
|
|
system: diablo
|
|
category: game_data
|
|
required: false
|
|
description: "Hellfire mod archive packed from the repository's mods/hf directory"
|
|
note: "mods/<name>.mpq is opened for each active mod; hf is activated when hellfire.mpq is present. A mod with no archive and no loose directory is served from the core archives. Built by CMake with smpq (MPQ version 1, BZIP2, no attributes) from the hellfire_mod file list."
|
|
source_ref: "Source/engine/assets.cpp:748-764, Source/options.cpp:77-79, CMakeLists.txt:204, CMake/Mods.cmake:8-33, 58-66"
|