diff --git a/.gitignore b/.gitignore index 37f4579c..e00aaa5d 100644 --- a/.gitignore +++ b/.gitignore @@ -29,6 +29,14 @@ bios/Sony/PlayStation Vita/PSP2UPDAT.PUP # Large files stored as GitHub Release assets (additional) bios/Other/mame4droid-2024/data/history.db bios/Other/mame4droid-2024/data/.variants/history.db.615619e8 +bios/Interplay/Descent/d1x-rebirth/d1xr-opl3-music.dxa +bios/Interplay/Descent/d1x-rebirth/d1xr-sc55-music.dxa +bios/Game Engines/Sonic 3 AIR/sonic3-air/data/audioremaster.bin +bios/Id Software/Return to Castle Wolfenstein/demomain/pak0.pk3 +bios/Id Software/Return to Castle Wolfenstein/demomain/.variants/pak0.pk3.82395c6e +bios/Id Software/Doom 3/demo/demo00.pk4 +bios/Electronic Arts/Medal of Honor Allied Assault/mainta/pak3.pk3 +bios/Valve/Half-Life/valve/.variants/pak0.pak.2c57b84f bios/Arcade/MAME/artwork/snspell.zip bios/Arcade/MAME/MAME 0.174 Arcade XML.dat bios/Sony/PlayStation Vita/.variants/PSP2UPDAT.PUP.3ae832c9 diff --git a/bios/Blizzard/Diablo/devilutionx/.variants/devilutionx.mpq.ef8fee4e b/bios/Blizzard/Diablo/devilutionx/.variants/devilutionx.mpq.ef8fee4e new file mode 100644 index 00000000..7c4dfc93 Binary files /dev/null and b/bios/Blizzard/Diablo/devilutionx/.variants/devilutionx.mpq.ef8fee4e differ diff --git a/bios/Blizzard/Diablo/devilutionx/devilutionx.mpq b/bios/Blizzard/Diablo/devilutionx/devilutionx.mpq index 7c4dfc93..70c58956 100644 Binary files a/bios/Blizzard/Diablo/devilutionx/devilutionx.mpq and b/bios/Blizzard/Diablo/devilutionx/devilutionx.mpq differ diff --git a/bios/Blizzard/Diablo/devilutionx/mods/hf.mpq b/bios/Blizzard/Diablo/devilutionx/mods/hf.mpq new file mode 100644 index 00000000..f371ca57 Binary files /dev/null and b/bios/Blizzard/Diablo/devilutionx/mods/hf.mpq differ diff --git a/bios/Game Engines/DOOM/hacx2.wad b/bios/Game Engines/DOOM/hacx2.wad new file mode 100644 index 00000000..dcff29ce Binary files /dev/null and b/bios/Game Engines/DOOM/hacx2.wad differ diff --git a/bios/Game Engines/Sonic 3 AIR/sonic3-air/data/audiodata.bin b/bios/Game Engines/Sonic 3 AIR/sonic3-air/data/audiodata.bin new file mode 100644 index 00000000..586cd2db Binary files /dev/null and b/bios/Game Engines/Sonic 3 AIR/sonic3-air/data/audiodata.bin differ diff --git a/bios/Game Engines/Sonic 3 AIR/sonic3-air/data/enginedata.bin b/bios/Game Engines/Sonic 3 AIR/sonic3-air/data/enginedata.bin new file mode 100644 index 00000000..aaf4793b Binary files /dev/null and b/bios/Game Engines/Sonic 3 AIR/sonic3-air/data/enginedata.bin differ diff --git a/bios/Game Engines/Sonic 3 AIR/sonic3-air/data/gamedata.bin b/bios/Game Engines/Sonic 3 AIR/sonic3-air/data/gamedata.bin new file mode 100644 index 00000000..6da91cb9 Binary files /dev/null and b/bios/Game Engines/Sonic 3 AIR/sonic3-air/data/gamedata.bin differ diff --git a/bios/Game Engines/TRX/games/tr1-demo-pc/levels/level2.phd b/bios/Game Engines/TRX/games/tr1-demo-pc/levels/level2.phd new file mode 100644 index 00000000..3ae81b4d Binary files /dev/null and b/bios/Game Engines/TRX/games/tr1-demo-pc/levels/level2.phd differ diff --git a/bios/Game Engines/TRX/games/tr1-demo-pc/levels/title.phd b/bios/Game Engines/TRX/games/tr1-demo-pc/levels/title.phd new file mode 100644 index 00000000..f8f04d3b Binary files /dev/null and b/bios/Game Engines/TRX/games/tr1-demo-pc/levels/title.phd differ diff --git a/bios/Game Engines/TRX/games/tr1-ub/levels/.variants/cat.phd.31979d04 b/bios/Game Engines/TRX/games/tr1-ub/levels/.variants/cat.phd.31979d04 new file mode 100644 index 00000000..74bf8007 Binary files /dev/null and b/bios/Game Engines/TRX/games/tr1-ub/levels/.variants/cat.phd.31979d04 differ diff --git a/bios/Game Engines/TRX/games/tr1-ub/levels/.variants/egypt.phd.9ae2584e b/bios/Game Engines/TRX/games/tr1-ub/levels/.variants/egypt.phd.9ae2584e new file mode 100644 index 00000000..e0986055 Binary files /dev/null and b/bios/Game Engines/TRX/games/tr1-ub/levels/.variants/egypt.phd.9ae2584e differ diff --git a/bios/Game Engines/TRX/games/tr1-ub/levels/.variants/end.phd.9ce67763 b/bios/Game Engines/TRX/games/tr1-ub/levels/.variants/end.phd.9ce67763 new file mode 100644 index 00000000..0989f525 Binary files /dev/null and b/bios/Game Engines/TRX/games/tr1-ub/levels/.variants/end.phd.9ce67763 differ diff --git a/bios/Game Engines/TRX/games/tr1-ub/levels/.variants/end2.phd.1395611c b/bios/Game Engines/TRX/games/tr1-ub/levels/.variants/end2.phd.1395611c new file mode 100644 index 00000000..97c0acde Binary files /dev/null and b/bios/Game Engines/TRX/games/tr1-ub/levels/.variants/end2.phd.1395611c differ diff --git a/bios/Game Engines/TRX/games/tr1-ub/levels/cat.phd b/bios/Game Engines/TRX/games/tr1-ub/levels/cat.phd new file mode 100644 index 00000000..96fb0ac5 Binary files /dev/null and b/bios/Game Engines/TRX/games/tr1-ub/levels/cat.phd differ diff --git a/bios/Game Engines/TRX/games/tr1-ub/levels/egypt.phd b/bios/Game Engines/TRX/games/tr1-ub/levels/egypt.phd new file mode 100644 index 00000000..ddb72023 Binary files /dev/null and b/bios/Game Engines/TRX/games/tr1-ub/levels/egypt.phd differ diff --git a/bios/Game Engines/TRX/games/tr1-ub/levels/end.phd b/bios/Game Engines/TRX/games/tr1-ub/levels/end.phd new file mode 100644 index 00000000..cad8a41c Binary files /dev/null and b/bios/Game Engines/TRX/games/tr1-ub/levels/end.phd differ diff --git a/bios/Game Engines/TRX/games/tr1-ub/levels/end2.phd b/bios/Game Engines/TRX/games/tr1-ub/levels/end2.phd new file mode 100644 index 00000000..16f082ee Binary files /dev/null and b/bios/Game Engines/TRX/games/tr1-ub/levels/end2.phd differ diff --git a/bios/Game Engines/TRX/games/tr2-gm/levels/level1.tr2 b/bios/Game Engines/TRX/games/tr2-gm/levels/level1.tr2 new file mode 100644 index 00000000..6e82f876 Binary files /dev/null and b/bios/Game Engines/TRX/games/tr2-gm/levels/level1.tr2 differ diff --git a/bios/Game Engines/TRX/games/tr2-gm/levels/level2.tr2 b/bios/Game Engines/TRX/games/tr2-gm/levels/level2.tr2 new file mode 100644 index 00000000..2686cf04 Binary files /dev/null and b/bios/Game Engines/TRX/games/tr2-gm/levels/level2.tr2 differ diff --git a/bios/Game Engines/TRX/games/tr2-gm/levels/level3.tr2 b/bios/Game Engines/TRX/games/tr2-gm/levels/level3.tr2 new file mode 100644 index 00000000..39ad768b Binary files /dev/null and b/bios/Game Engines/TRX/games/tr2-gm/levels/level3.tr2 differ diff --git a/bios/Game Engines/TRX/games/tr2-gm/levels/level4.tr2 b/bios/Game Engines/TRX/games/tr2-gm/levels/level4.tr2 new file mode 100644 index 00000000..7f97dc73 Binary files /dev/null and b/bios/Game Engines/TRX/games/tr2-gm/levels/level4.tr2 differ diff --git a/bios/Game Engines/TRX/games/tr2-gm/levels/level5.tr2 b/bios/Game Engines/TRX/games/tr2-gm/levels/level5.tr2 new file mode 100644 index 00000000..1d3d45f0 Binary files /dev/null and b/bios/Game Engines/TRX/games/tr2-gm/levels/level5.tr2 differ diff --git a/bios/Game Engines/TRX/games/tr2-gm/levels/title.tr2 b/bios/Game Engines/TRX/games/tr2-gm/levels/title.tr2 new file mode 100644 index 00000000..3c384d03 Binary files /dev/null and b/bios/Game Engines/TRX/games/tr2-gm/levels/title.tr2 differ diff --git a/bios/Game Engines/TRX/games/tr2-gm/main.sfx b/bios/Game Engines/TRX/games/tr2-gm/main.sfx new file mode 100644 index 00000000..03b0849d Binary files /dev/null and b/bios/Game Engines/TRX/games/tr2-gm/main.sfx differ diff --git a/emulators/devilutionx.yml b/emulators/devilutionx.yml index 78b2a304..c4ae37f4 100644 --- a/emulators/devilutionx.yml +++ b/emulators/devilutionx.yml @@ -39,14 +39,22 @@ notes: | 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). The compiled binary expects it 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). + 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/.po + is compiled with msgfmt to .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. @@ -124,9 +132,9 @@ files: system: diablo category: game_data required: true - description: "Engine assets (UI art, fonts, data tables, Lua scripts) 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\"." - source_ref: "Source/engine/assets.cpp:509-516, 223-226, Source/init.cpp:79-85, Source/diablo.cpp:1225-1239" + 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 .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" @@ -169,5 +177,5 @@ files: category: game_data required: false description: "Hellfire mod archive packed from the repository's mods/hf directory" - note: "mods/.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." - source_ref: "Source/engine/assets.cpp:748-764, Source/options.cpp:77-79, CMakeLists.txt:204" + note: "mods/.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" diff --git a/emulators/gzdoom.yml b/emulators/gzdoom.yml index 69fd9696..b0232cd1 100644 --- a/emulators/gzdoom.yml +++ b/emulators/gzdoom.yml @@ -343,7 +343,8 @@ files: category: game_data system: doom required: false - source_ref: "wadsrc_extra/static/iwadinfo.txt:71, 699" + source_ref: "wadsrc_extra/static/iwadinfo.txt:65-75, 699, src/d_iwad.cpp:351-394, src/common/filesystem/source/resourcefile.cpp:156-174" + note: "Identified by the MAP01 map and the HACX-E lump, whatever the container: every candidate is opened by its magic, so a zip under this name is read as a pk3. The Hacx 2.0 repository builds that zip from src/, where hacx-e.txt is the HACX-E lump and maps/MAP01.wad the first map." - name: "action2.wad" category: game_data diff --git a/emulators/sonic3-air.yml b/emulators/sonic3-air.yml index 22eb2dc9..13515b97 100644 --- a/emulators/sonic3-air.yml +++ b/emulators/sonic3-air.yml @@ -38,15 +38,33 @@ notes: | Oxygen/sonic3air/source/sonic3air/ConfigurationImpl.cpp:33-47, Oxygen/sonic3air/oxygenproject.json:9-20 - The engine ships four data packages built from Oxygen/sonic3air/data/ - (enginedata.bin, gamedata.bin, audiodata.bin, audioremaster.bin). Three - are required and part of the release; audioremaster.bin is optional and - downloaded on demand from https://sonic3air.org/download/audioremaster.bin - when the user enables the remastered soundtrack. + The engine ships four data packages (enginedata.bin, gamedata.bin, + audiodata.bin, audioremaster.bin). Three are required and part of the + release; audioremaster.bin is optional and downloaded on demand from + https://sonic3air.org/download/audioremaster.bin when the user enables + the remastered soundtrack. ref: Oxygen/sonic3air/oxygenproject.json:32-38, Oxygen/sonic3air/source/sonic3air/EngineDelegate.cpp:115-118, Oxygen/sonic3air/source/sonic3air/audio/RemasteredMusicDownload.cpp:48-62 + The packages are written by the game binary itself when run with -pack + from Oxygen/sonic3air/ (PackageBuilder::performPacking), which the + mastering scripts call before copying the results to the release image. + gamedata.bin data/ without data/audio/ and data/metadata.json + audiodata.bin data/audio/original/ + audioremaster.bin data/audio/remastered/ + enginedata.bin ../oxygenengine/data/ + Each package is a flat container: "OPCK", format version 3, content + version BUILD_NUMBER, then one entry per file keyed by its path relative + to the base directory, in std::map order. Packing reads the data + directories only; the ROM is not involved. + ref: Oxygen/sonic3air/source/sonic3air/main.cpp:92-97, + Oxygen/sonic3air/source/sonic3air/helper/PackageBuilder.cpp:16-63, + Oxygen/oxygenengine/source/oxygen/file/FilePackage.cpp:44-151, + Oxygen/oxygenengine/source/oxygen/file/FilePackage.h:28-30, + Oxygen/sonic3air/source/sonic3air/version.inc:1, + Oxygen/sonic3air/___internal/mastering/mastering_linux.sh:48-52 + Each package is opened from the game data directory, data/ under the install directory, then from data/ under the app-data directory, where the downloader saves audioremaster.bin. Package paths below are written @@ -81,24 +99,25 @@ files: category: game_data system: sonic3-air required: true - bundled: true - source_ref: "Oxygen/sonic3air/source/sonic3air/EngineDelegate.cpp:115, Oxygen/oxygenengine/source/oxygen/engine/EngineMain.cpp:603-617, Oxygen/oxygenengine/source/oxygen/engine/EngineMain.cpp:643-651" + source_ref: "Oxygen/sonic3air/source/sonic3air/EngineDelegate.cpp:115, Oxygen/oxygenengine/source/oxygen/engine/EngineMain.cpp:603-617, Oxygen/oxygenengine/source/oxygen/engine/EngineMain.cpp:643-651, Oxygen/sonic3air/source/sonic3air/helper/PackageBuilder.cpp:57-62" note: | - Oxygen Engine data package. A required package that cannot be opened - closes the application, unless the data is present unpacked - (data/images/icon.png exists). The engine then checks for - oxygen_icon.png in the engine data and stops when it is absent - (EngineMain.cpp:584-593). + Oxygen Engine data package, packed from Oxygen/oxygenengine/data/ + (fonts, images, shaders, sprites, oxygen_icon.png). A required + package that cannot be opened closes the application, unless the + data is present unpacked (data/images/icon.png exists). The engine + then checks for oxygen_icon.png in the engine data and stops when it + is absent (EngineMain.cpp:584-593). - name: "gamedata.bin" path: "sonic3-air/data/gamedata.bin" category: game_data system: sonic3-air required: true - bundled: true - source_ref: "Oxygen/sonic3air/source/sonic3air/EngineDelegate.cpp:116, Oxygen/oxygenengine/source/oxygen/engine/EngineMain.cpp:603-617, Oxygen/oxygenengine/source/oxygen/engine/EngineMain.cpp:643-651" + source_ref: "Oxygen/sonic3air/source/sonic3air/EngineDelegate.cpp:116, Oxygen/oxygenengine/source/oxygen/engine/EngineMain.cpp:603-617, Oxygen/oxygenengine/source/oxygen/engine/EngineMain.cpp:643-651, Oxygen/sonic3air/source/sonic3air/helper/PackageBuilder.cpp:36-41" note: | - Game data package. A required package that cannot be opened closes + Game data package, packed from Oxygen/sonic3air/data/ without the + audio directory and metadata.json (binary tables, fonts, images, + rawdata, sprites). A required package that cannot be opened closes the application, unless the data is present unpacked (data/images/icon.png exists). @@ -107,12 +126,12 @@ files: category: game_data system: sonic3-air required: true - bundled: true - source_ref: "Oxygen/sonic3air/source/sonic3air/EngineDelegate.cpp:117, Oxygen/oxygenengine/source/oxygen/engine/EngineMain.cpp:603-617, Oxygen/oxygenengine/source/oxygen/engine/EngineMain.cpp:643-651" + source_ref: "Oxygen/sonic3air/source/sonic3air/EngineDelegate.cpp:117, Oxygen/oxygenengine/source/oxygen/engine/EngineMain.cpp:603-617, Oxygen/oxygenengine/source/oxygen/engine/EngineMain.cpp:643-651, Oxygen/sonic3air/source/sonic3air/helper/PackageBuilder.cpp:43-48" note: | - Audio data package. A required package that cannot be opened closes - the application, unless the data is present unpacked - (data/images/icon.png exists). + Audio data package, packed from Oxygen/sonic3air/data/audio/original/ + (emulated soundtrack definitions and prototype SMPS tracks). A + required package that cannot be opened closes the application, + unless the data is present unpacked (data/images/icon.png exists). - name: "audioremaster.bin" path: "sonic3-air/data/audioremaster.bin" diff --git a/emulators/tr1x.yml b/emulators/tr1x.yml index 76aaa337..1ce39fda 100644 --- a/emulators/tr1x.yml +++ b/emulators/tr1x.yml @@ -43,6 +43,7 @@ files: # Enumerated by data/trx/ship/games/tr1/gameflow.json5 "levels" array. - name: "title.phd" path: "games/tr1/levels/title.phd" + unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" required: true category: game_data source_ref: "data/trx/ship/games/tr1/gameflow.json5:38" @@ -62,6 +63,7 @@ files: - name: "level2.phd" path: "games/tr1/levels/level2.phd" + unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" required: true category: game_data source_ref: "data/trx/ship/games/tr1/gameflow.json5:116" @@ -631,46 +633,52 @@ files: # Known game tr1-ub, extends tr1 (src/trx/game/shell/mod.c:30-31). # Enumerated by data/trx/ship/games/tr1-ub/gameflow.json5 "levels" array. # Its title, FMVs and music fall back to games/tr1. + # The project's installer downloads the levels from its own host as + # tr1-ub-vanilla.zip (original edition) or tr1-ub-music.zip (fan-patched + # edition) and copies data/*.phd to games/tr1-ub/levels/; tools/download_assets + # fetches tr1-ub.zip, which carries the expansion's images only. - name: "egypt.phd" path: "games/tr1-ub/levels/egypt.phd" required: false category: game_data - source_ref: "data/trx/ship/games/tr1-ub/gameflow.json5:63" - note: "Return to Egypt" + source_ref: "data/trx/ship/games/tr1-ub/gameflow.json5:63, tools/installer/TRX_Installer/InstallComponentFactory.cs:72-81, tools/installer/TRX_Installer/InstallMappings.cs:18-22" + note: "Return to Egypt. The installer offers the original edition and a fan-patched edition of the level set." - name: "cat.phd" path: "games/tr1-ub/levels/cat.phd" required: false category: game_data - source_ref: "data/trx/ship/games/tr1-ub/gameflow.json5:87" - note: "Temple of the Cat" + source_ref: "data/trx/ship/games/tr1-ub/gameflow.json5:87, tools/installer/TRX_Installer/InstallComponentFactory.cs:72-81, tools/installer/TRX_Installer/InstallMappings.cs:18-22" + note: "Temple of the Cat. The installer offers the original edition and a fan-patched edition of the level set." - name: "end.phd" path: "games/tr1-ub/levels/end.phd" required: false category: game_data - source_ref: "data/trx/ship/games/tr1-ub/gameflow.json5:110" - note: "Atlantean Stronghold" + source_ref: "data/trx/ship/games/tr1-ub/gameflow.json5:110, tools/installer/TRX_Installer/InstallComponentFactory.cs:72-81, tools/installer/TRX_Installer/InstallMappings.cs:18-22" + note: "Atlantean Stronghold. The installer offers the original edition and a fan-patched edition of the level set." - name: "end2.phd" path: "games/tr1-ub/levels/end2.phd" required: false category: game_data - source_ref: "data/trx/ship/games/tr1-ub/gameflow.json5:132" - note: "The Hive" + source_ref: "data/trx/ship/games/tr1-ub/gameflow.json5:132, tools/installer/TRX_Installer/InstallComponentFactory.cs:72-81, tools/installer/TRX_Installer/InstallMappings.cs:18-22" + note: "The Hive. The installer offers the original edition and a fan-patched edition of the level set." # PC demo # Known game tr1-demo-pc, extends tr1 (src/trx/game/shell/mod.c:32-33). + # tools/download_assets and the installer fetch tr1-demo-pc.zip from the + # project's host; it holds games/tr1-demo-pc/levels/{title,level2}.phd. - name: "title.phd" path: "games/tr1-demo-pc/levels/title.phd" required: false category: game_data - source_ref: "data/trx/ship/games/tr1-demo-pc/gameflow.json5:38, src/trx/game/game_flow/reader.c:903-909, src/trx/game/paths.c:123-132" + source_ref: "data/trx/ship/games/tr1-demo-pc/gameflow.json5:38, src/trx/game/game_flow/reader.c:903-909, src/trx/game/paths.c:123-132, tools/download_assets:67, tools/installer/TRX_Installer/InstallComponentFactory.cs:83-87" note: "Title level of the PC demo. A title level is also looked up in the levels directory of the game it extends, so games/tr1/levels/title.phd is used when this one is absent." - name: "level2.phd" path: "games/tr1-demo-pc/levels/level2.phd" required: false category: game_data - source_ref: "data/trx/ship/games/tr1-demo-pc/gameflow.json5:56, src/trx/game/level/format/format_tr1.c:74-99, 186-191" + source_ref: "data/trx/ship/games/tr1-demo-pc/gameflow.json5:56, src/trx/game/level/format/format_tr1.c:74-99, 186-191, tools/download_assets:67, tools/installer/TRX_Installer/InstallComponentFactory.cs:83-87" note: "City of Vilcabamba in the PC demo layout, which stores the palette before the cameras. The demo game does not load without it." diff --git a/emulators/tr2x.yml b/emulators/tr2x.yml index 4de934e6..98d488ab 100644 --- a/emulators/tr2x.yml +++ b/emulators/tr2x.yml @@ -46,6 +46,7 @@ files: # Soundbank - name: "main.sfx" path: "games/tr2/main.sfx" + unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" required: true category: game_data source_ref: "data/trx/ship/games/tr2/gameflow.json5:33" @@ -55,6 +56,7 @@ files: # Enumerated by data/trx/ship/games/tr2/gameflow.json5 "levels" array. - name: "title.tr2" path: "games/tr2/levels/title.tr2" + unsourceable: "retail data the collection does not hold; a same-named file of another game must not stand in" required: true category: game_data source_ref: "data/trx/ship/games/tr2/gameflow.json5:15" @@ -649,12 +651,16 @@ files: # Known game tr2-gm, extends tr2 (src/trx/game/shell/mod.c:37-38). # Enumerated by data/trx/ship/games/tr2-gm/gameflow.json5 "levels" array. # Its FMVs and music fall back to games/tr2. + # tools/download_assets and the installer fetch tr2-gm.zip from the + # project's host; it holds games/tr2-gm/main.sfx and games/tr2-gm/levels/*.tr2. + # Installing from a retail directory maps data/main_gm.sfx to + # games/tr2-gm/main_gm.sfx and data/*.tr2 to games/tr2-gm/levels/. - name: "main.sfx" path: "games/tr2-gm/main.sfx" aliases: ["main_gm.sfx"] required: false category: game_data - source_ref: "data/trx/ship/games/tr2-gm/gameflow.json5:34, src/trx/game/game_flow/reader.c:198-219, src/trx/game/paths.c:203-212" + source_ref: "data/trx/ship/games/tr2-gm/gameflow.json5:34, src/trx/game/game_flow/reader.c:198-219, src/trx/game/paths.c:203-212, tools/download_assets:71, tools/installer/TRX_Installer/InstallMappings.cs:35-40" note: "Sample bank of the expansion. main_gm.sfx is tried first, each name in the expansion directory then in games/tr2." - name: "title.tr2" @@ -662,7 +668,7 @@ files: aliases: ["title_gm.tr2"] required: false category: game_data - source_ref: "data/trx/ship/games/tr2-gm/gameflow.json5:16, src/trx/game/game_flow/reader.c:198-219, 903-909, src/trx/game/paths.c:123-132" + source_ref: "data/trx/ship/games/tr2-gm/gameflow.json5:16, src/trx/game/game_flow/reader.c:198-219, 903-909, src/trx/game/paths.c:123-132, tools/download_assets:71, tools/installer/TRX_Installer/InstallMappings.cs:35-40" note: "Title level of the expansion. title_gm.tr2 is tried first, each name in the expansion levels directory then in games/tr2/levels." - name: "level1.tr2"