Files
libretro/emulators/tr2x.yml
T
Abdessamad Derraz ceaca2bf1d chore: record what each platform installs
Each platform's own packages were read at the revision our data pins, for every emulator and core it ships: Batocera, Recalbox, RetroPie, ROCKNIX, Lakka, RetroDECK, RetroBat and EmuDeck. Files a package installs where the emulator reads them are recorded with installed_on, and files a release bundles but a package leaves out with not_bundled_on, so each platform's pack brings what its users lack and nothing they already have. The standalone profiles never checked before were held against their releases the same way. Batocera's imame4all is the mame2000 core. The primary neogeo.zip was a 7.7 KB placeholder no platform pins and no pack served: removed, the real dumps stay in .variants.
2026-10-20 07:17:05 +02:00

743 lines
22 KiB
YAML

emulator: TR2X
display_name: "TR2X"
type: standalone
core_classification: game_engine
source: "https://github.com/LostArtefacts/TRX"
upstream: "https://github.com/LostArtefacts/TRX"
source_commit: "c43c1cc875277324dff44a9e57e4fdd58fd3fb4c"
upstream_commit: "c43c1cc875277324dff44a9e57e4fdd58fd3fb4c"
profiled_date: "2026-10-04"
cores: []
systems:
- tomb-raider-2
notes: |
Enhanced engine for Tomb Raider 2 (1997), part of the TRX monorepo
that also hosts TR1X and TR3X. Loads retail .tr2 level files, the
main.sfx soundbank, music tracks and FMV cutscenes from a Steam, GOG
or disc install of TR2.
Path resolution (src/trx/game/paths.c):
levels %mod_dir%/levels/<file> GAME_DYNAMIC_PATH_LEVEL_FILE
sfx %mod_dir%/<file> GAME_DYNAMIC_PATH_SFX_FILE
fmv %mod_dir%/fmv/<file><ext> GAME_DYNAMIC_PATH_FMV_FILE
music %mod_dir%/music/<name><ext> GAME_DYNAMIC_PATH_MUSIC_DIR
with %mod_dir% = games/tr2 under the TRX root. The gameflow.json5,
the catalog_*.csv tables, string tables, injections, images and
shaders ship inside the TRX zip (data/trx/ship/) and are not user
files.
main.sfx is TR2's sample bank. The gameflow sets sfx_path to it
(data/trx/ship/games/tr2/gameflow.json5:33) and the level pipeline
reads it per level (src/trx/game/level/pipeline.c:179).
FMV extension probing (src/trx/game/paths.c:76-79):
.mp4 .mkv .mpeg .avi .webm .ogv .rpl .fmv .bik
The retail Core/Eidos cutscenes are .rpl. The gameflow still names
them .AVI, resolution picks whichever extension exists.
Music backend (src/trx/game/music/backend_files.c:25-49):
extensions .flac .ogg .mp3 .wav .wma
file name trackNN.<ext> (two-digit) or N.<ext>
Retail TR2 CD rips yield 2.mp3 through 61.mp3 (bare-number form,
per docs/trx/INSTALLING.md ship tree).
files:
# Soundbank
- name: "main.sfx"
path: "games/tr2/main.sfx"
unsourceable: "retail data the collection does not hold, and 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"
note: "Shared sample bank, loaded for every level."
# Levels
# 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, and 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"
- name: "assault.tr2"
path: "games/tr2/levels/assault.tr2"
required: true
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:54"
note: "Lara's Home / assault course."
- name: "wall.tr2"
path: "games/tr2/levels/wall.tr2"
required: true
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:84"
note: "The Great Wall"
- name: "boat.tr2"
path: "games/tr2/levels/boat.tr2"
required: true
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:119"
note: "Venice"
- name: "venice.tr2"
path: "games/tr2/levels/venice.tr2"
required: true
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:144"
note: "Bartoli's Hideout"
- name: "opera.tr2"
path: "games/tr2/levels/opera.tr2"
required: true
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:171"
note: "Opera House"
- name: "rig.tr2"
path: "games/tr2/levels/rig.tr2"
required: true
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:202"
note: "Offshore Rig"
- name: "platform.tr2"
path: "games/tr2/levels/platform.tr2"
required: true
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:231"
note: "Diving Area"
- name: "unwater.tr2"
path: "games/tr2/levels/unwater.tr2"
required: true
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:260"
note: "40 Fathoms"
- name: "keel.tr2"
path: "games/tr2/levels/keel.tr2"
required: true
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:289"
note: "Wreck of the Maria Doria"
- name: "living.tr2"
path: "games/tr2/levels/living.tr2"
required: true
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:321"
note: "Living Quarters"
- name: "deck.tr2"
path: "games/tr2/levels/deck.tr2"
required: true
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:351"
note: "The Deck"
- name: "skidoo.tr2"
path: "games/tr2/levels/skidoo.tr2"
required: true
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:383"
note: "Tibetan Foothills"
- name: "monastry.tr2"
path: "games/tr2/levels/monastry.tr2"
required: true
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:411"
note: "Barkhang Monastery"
- name: "catacomb.tr2"
path: "games/tr2/levels/catacomb.tr2"
required: true
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:440"
note: "Catacombs of the Talion"
- name: "icecave.tr2"
path: "games/tr2/levels/icecave.tr2"
required: true
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:468"
note: "Ice Palace"
- name: "emprtomb.tr2"
path: "games/tr2/levels/emprtomb.tr2"
required: true
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:496"
note: "Temple of Xian"
- name: "floating.tr2"
path: "games/tr2/levels/floating.tr2"
required: true
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:526"
note: "Floating Islands"
- name: "xian.tr2"
path: "games/tr2/levels/xian.tr2"
required: true
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:552"
note: "The Dragon's Lair"
- name: "house.tr2"
path: "games/tr2/levels/house.tr2"
required: true
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:578"
note: "Home Sweet Home"
- name: "cut1.tr2"
path: "games/tr2/levels/cut1.tr2"
required: true
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:691"
note: "Cutscene level 1"
- name: "cut2.tr2"
path: "games/tr2/levels/cut2.tr2"
required: true
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:706"
note: "Cutscene level 2"
- name: "cut3.tr2"
path: "games/tr2/levels/cut3.tr2"
required: true
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:721"
note: "Cutscene level 3"
- name: "cut4.tr2"
path: "games/tr2/levels/cut4.tr2"
required: true
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:737"
note: "Cutscene level 4"
# FMV cutscenes
# Enumerated by data/trx/ship/games/tr2/gameflow.json5 "fmvs" array.
# The retail files on disc carry a .rpl extension. The gameflow still
# lists .AVI, resolution picks whichever extension is present.
- name: "LOGO.AVI"
aliases: [logo.rpl]
path: "games/tr2/fmv/logo.rpl"
required: false
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:756"
note: "Eidos legal screen."
- name: "ANCIENT.AVI"
aliases: [ancient.rpl]
path: "games/tr2/fmv/ancient.rpl"
required: false
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:757"
note: "Intro cutscene."
- name: "MODERN.AVI"
aliases: [modern.rpl]
path: "games/tr2/fmv/modern.rpl"
required: false
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:758"
- name: "LANDING.AVI"
aliases: [landing.rpl]
path: "games/tr2/fmv/landing.rpl"
required: false
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:759"
- name: "MS.AVI"
aliases: [ms.rpl]
path: "games/tr2/fmv/ms.rpl"
required: false
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:760"
- name: "CRASH.AVI"
aliases: [crash.rpl]
path: "games/tr2/fmv/crash.rpl"
required: false
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:761"
- name: "JEEP.AVI"
aliases: [jeep.rpl]
path: "games/tr2/fmv/jeep.rpl"
required: false
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:762"
- name: "END.AVI"
aliases: [end.rpl]
path: "games/tr2/fmv/end.rpl"
required: false
category: game_data
source_ref: "data/trx/ship/games/tr2/gameflow.json5:763"
# Music tracks (retail CD audio, ripped as N.<ext>).
# Enumerated by the ship tree in docs/trx/INSTALLING.md (TR2 uses the
# bare-number form, not the trackNN form, and the loader accepts either).
- name: "2.mp3"
path: "games/tr2/music/2.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "3.mp3"
path: "games/tr2/music/3.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "4.mp3"
path: "games/tr2/music/4.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "5.mp3"
path: "games/tr2/music/5.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "6.mp3"
path: "games/tr2/music/6.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "7.mp3"
path: "games/tr2/music/7.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "8.mp3"
path: "games/tr2/music/8.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "9.mp3"
path: "games/tr2/music/9.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "10.mp3"
path: "games/tr2/music/10.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "11.mp3"
path: "games/tr2/music/11.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "12.mp3"
path: "games/tr2/music/12.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "13.mp3"
path: "games/tr2/music/13.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "14.mp3"
path: "games/tr2/music/14.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "15.mp3"
path: "games/tr2/music/15.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "16.mp3"
path: "games/tr2/music/16.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "17.mp3"
path: "games/tr2/music/17.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "18.mp3"
path: "games/tr2/music/18.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "19.mp3"
path: "games/tr2/music/19.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "20.mp3"
path: "games/tr2/music/20.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "21.mp3"
path: "games/tr2/music/21.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "22.mp3"
path: "games/tr2/music/22.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "23.mp3"
path: "games/tr2/music/23.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "24.mp3"
path: "games/tr2/music/24.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "25.mp3"
path: "games/tr2/music/25.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "26.mp3"
path: "games/tr2/music/26.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "27.mp3"
path: "games/tr2/music/27.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "28.mp3"
path: "games/tr2/music/28.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "29.mp3"
path: "games/tr2/music/29.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "30.mp3"
path: "games/tr2/music/30.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "31.mp3"
path: "games/tr2/music/31.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "32.mp3"
path: "games/tr2/music/32.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "33.mp3"
path: "games/tr2/music/33.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "34.mp3"
path: "games/tr2/music/34.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "35.mp3"
path: "games/tr2/music/35.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "36.mp3"
path: "games/tr2/music/36.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "37.mp3"
path: "games/tr2/music/37.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "38.mp3"
path: "games/tr2/music/38.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "39.mp3"
path: "games/tr2/music/39.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "40.mp3"
path: "games/tr2/music/40.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "41.mp3"
path: "games/tr2/music/41.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "42.mp3"
path: "games/tr2/music/42.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "43.mp3"
path: "games/tr2/music/43.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "44.mp3"
path: "games/tr2/music/44.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "45.mp3"
path: "games/tr2/music/45.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "46.mp3"
path: "games/tr2/music/46.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "47.mp3"
path: "games/tr2/music/47.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "48.mp3"
path: "games/tr2/music/48.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "49.mp3"
path: "games/tr2/music/49.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "50.mp3"
path: "games/tr2/music/50.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "51.mp3"
path: "games/tr2/music/51.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "52.mp3"
path: "games/tr2/music/52.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "53.mp3"
path: "games/tr2/music/53.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "54.mp3"
path: "games/tr2/music/54.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "55.mp3"
path: "games/tr2/music/55.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "56.mp3"
path: "games/tr2/music/56.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "57.mp3"
path: "games/tr2/music/57.mp3"
required: false
bundled: true
size: 386864
sha1: "0873bc661731f6daa8c8a76af4259228b1cbf8ef"
md5: "423c7e39256ef8fd82193fefacdb14aa"
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
note: "The one music track the TRX 1.11.1 Windows and Linux zips ship."
- name: "58.mp3"
path: "games/tr2/music/58.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "59.mp3"
path: "games/tr2/music/59.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "60.mp3"
path: "games/tr2/music/60.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
- name: "61.mp3"
path: "games/tr2/music/61.mp3"
required: false
category: game_data
source_ref: "src/trx/game/music/backend_files.c:48"
# The Golden Mask expansion
# 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.
# The TRX 1.11.1 Windows and Linux zips ship those seven files, so they
# arrive with the install.
# 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
bundled: true
size: 7609670
sha1: "9de9423b6f12875b8d02dd783d5c1547f15e36fc"
md5: "b9045310d16b80638970978a9ce8489e"
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, 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"
path: "games/tr2-gm/levels/title.tr2"
aliases: ["title_gm.tr2"]
required: false
bundled: true
size: 611892
sha1: "b7dadcbaf38cefdc89a692e85b290caf6409b163"
md5: "c5a329491190227bc09ec19317b45f56"
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, 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"
path: "games/tr2-gm/levels/level1.tr2"
required: false
bundled: true
size: 4134916
sha1: "8d8109c1afbb2b443c1c1f57add4676f17b5dc84"
md5: "04ad2f33e48081a6b27a7f0ebf90968d"
category: game_data
source_ref: "data/trx/ship/games/tr2-gm/gameflow.json5:56"
note: "The Cold War"
- name: "level2.tr2"
path: "games/tr2-gm/levels/level2.tr2"
required: false
bundled: true
size: 4128016
sha1: "6c9417d3b03cc2fd9fac62cea0910d9ef107ee1b"
md5: "d9b53b88dd70eec1e4b31182f3286bf5"
category: game_data
source_ref: "data/trx/ship/games/tr2-gm/gameflow.json5:88"
note: "Fool's Gold"
- name: "level3.tr2"
path: "games/tr2-gm/levels/level3.tr2"
required: false
bundled: true
size: 4357268
sha1: "e92f045520d6e0aaec2c42dd2c28d34a0677df70"
md5: "ca4294e3bd8835ebf06e114b479a22c2"
category: game_data
source_ref: "data/trx/ship/games/tr2-gm/gameflow.json5:113"
note: "Furnace of the Gods"
- name: "level4.tr2"
path: "games/tr2-gm/levels/level4.tr2"
required: false
bundled: true
size: 4165986
sha1: "83ffcd559e656186bc807e1040485f72956dbc00"
md5: "63ff8be5c7abf37d7065456afeda029f"
category: game_data
source_ref: "data/trx/ship/games/tr2-gm/gameflow.json5:138"
note: "Kingdom"
- name: "level5.tr2"
path: "games/tr2-gm/levels/level5.tr2"
required: false
bundled: true
size: 4098568
sha1: "4508d23e8475ef6afd7a1756763dd606f23c15a9"
md5: "88c8124b6d152b9f3fe1c4eeec4428a5"
category: game_data
source_ref: "data/trx/ship/games/tr2-gm/gameflow.json5:175"
note: "Nightmare in Vegas"