mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-24 12:49:03 -05:00
hf.mpq now has its own CMake option, BUILD_MOD_MPQS, beside BUILD_ASSETS_MPQ. The loaders moved by two lines after a romfs search path was added for 3DS and Switch. Same files.
186 lines
8.0 KiB
YAML
186 lines
8.0 KiB
YAML
emulator: devilutionx
|
|
type: standalone
|
|
core_classification: game_engine
|
|
source: "https://github.com/diasurgical/DevilutionX"
|
|
upstream: ~
|
|
profiled_date: "2026-10-04"
|
|
source_commit: "0706e014d6a12ec8178a81fba549a68bd559f247"
|
|
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() (:507) - devilutionx.mpq, fonts.mpq (optional)
|
|
LoadLanguageArchive() (:523) - <language code>.mpq, skipped for "en"
|
|
LoadGameArchives() (:532) - diabdat.mpq or spawn.mpq (required)
|
|
hfbard.mpq, hfbarb.mpq (always probed)
|
|
LoadHellfireArchives() (:572) - hellfire.mpq + hfmonk/hfmusic/hfvoice
|
|
LoadModArchives() (:712) - mods/<name>.mpq for each active mod
|
|
|
|
diabdat.mpq is matched uppercase first ("DIABDAT.MPQ", GOG/retail CD
|
|
convention, line 540), then lowercase (line 544). If neither is found
|
|
the loader falls back to spawn.mpq (line 546). 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 590) 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-205). 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), and 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 under the BUILD_MOD_MPQS option
|
|
(CMake/Mods.cmake:11-36, 61-71). The compiled
|
|
binary expects devilutionx.mpq next to the executable on every
|
|
platform except Android, Apple and 3DS/Switch (:511-518), 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, the GOG CD convention uses uppercase"
|
|
source_ref: "Source/engine/assets.cpp:539-544"
|
|
|
|
- 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:546"
|
|
|
|
- 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:575"
|
|
|
|
- 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:585"
|
|
|
|
- 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:586"
|
|
|
|
- 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:587"
|
|
|
|
- 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:567"
|
|
|
|
- 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:568"
|
|
|
|
- name: "devilutionx.mpq"
|
|
path: "devilutionx/devilutionx.mpq"
|
|
system: diablo
|
|
category: game_data
|
|
required: true
|
|
bundled: true
|
|
sha1: "f1ac6ba3a04f51f51e0e8bc2254742c70905f62b"
|
|
md5: "5afe4d6624064b41e25a36ac55da29fa"
|
|
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. Shipped beside the binary in the Windows zip and the Linux tarball, and loose under assets/ in the APK. The hashes are those of the 1.5.5 release."
|
|
source_ref: "Source/engine/assets.cpp:511-518, 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:519"
|
|
|
|
- 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:523-530"
|
|
|
|
- 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:523-530"
|
|
|
|
- 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:523-530"
|
|
|
|
- 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, and 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. The Windows and Linux packaging of this revision installs it under mods/ beside devilutionx.mpq, and no release carries it yet."
|
|
source_ref: "Source/engine/assets.cpp:756-772, Source/options.cpp:77-79, CMakeLists.txt:205, 641-646, 705-710, CMake/Mods.cmake:11-36, 61-70"
|