mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-24 12:49:03 -05:00
emulator: carried the file stem on 67 profiles, so site links read like ids. Each now takes the project's own name (libretro .info corename, README title, window title or site title). tests/test_profile_names.py allows the stem only on a commented list: lowercase project names, test cores, aliases and the template.
112 lines
4.6 KiB
YAML
112 lines
4.6 KiB
YAML
emulator: "CorsixTH"
|
|
type: standalone
|
|
core_classification: game_engine
|
|
source: "https://github.com/CorsixTH/CorsixTH"
|
|
upstream: ~
|
|
profiled_date: "2026-10-04"
|
|
source_commit: "f98c9e8e1d22f638233c12b10f3a351f1484608c"
|
|
core_version: "0.70.1"
|
|
display_name: "Theme Hospital (CorsixTH)"
|
|
cores: [corsixth]
|
|
systems: [theme-hospital]
|
|
verification: existence
|
|
|
|
notes: |
|
|
CorsixTH is a Lua + C++ reimplementation of Bullfrog's Theme Hospital
|
|
engine. It reads graphics, sprites, levels and sounds from an
|
|
untouched Theme Hospital install (full retail/GOG or the shareware
|
|
demo).
|
|
|
|
App:checkInstallFolder() in CorsixTH/Lua/app.lua:1450 drives the
|
|
install discovery:
|
|
1. config.theme_hospital_install (user override) is tried first
|
|
(:1453). If unset or wrong, the loader scans a list of common
|
|
paths (:1473-1491) looking for a folder that passes
|
|
App:isThemeHospitalPath, which demands three subdirectories
|
|
named data, levels and qdata (:1435-1447).
|
|
2. Once a candidate is accepted, three sentinel files MUST exist
|
|
(:1523-1525):
|
|
DATA/VBlk-0.tab
|
|
LEVELS/Level.L1
|
|
QDATA/SPointer.dat
|
|
Any missing file aborts init with "Invalid Theme Hospital
|
|
folder specified in config file..." (:1528).
|
|
3. DataM/Demo.dat (:1537) marks the shareware demo install. Its
|
|
presence switches a different corruption-size check on
|
|
ANIMS/WINLEVEL.SMK (243188), LEVELS/LEVEL.L1 (163948) and
|
|
DATA/BUTTON01.DAT (252811) at :1561-1563. Full installs instead
|
|
get soft size checks on ANIMS/AREA01V.SMK, WINGAME.SMK,
|
|
WINLEVEL.SMK, LOSE1.SMK and INTRO/INTRO.SM4 (:1565-1569).
|
|
4. QData/Font00V.dat is read unconditionally (:1578) and its CRC32
|
|
picks the charset (mik vs cp437).
|
|
|
|
The install root is read as a tree. FileSystem:setRoot() lists the
|
|
root, each subdirectory is listed the first time a path crosses it,
|
|
and every name is matched after normalise() upper-cases it
|
|
(CorsixTH/Lua/filesystem.lua:59-76, 93-117, 243-272). Graphics,
|
|
sprites, levels, sounds and movies are opened from that tree on
|
|
demand, so the install is declared as one directory. The files the
|
|
loader names at startup keep their own entries, written with the
|
|
upper-case names the DOS release ships and the lookup normalises to.
|
|
|
|
The sound/music path uses the game's XMI tracks when a SoundFont is
|
|
available (App:findSoundFont at :1591 probes GeneralUser-GS.sf2,
|
|
FluidR3_GM.sf2, FluidR3.sf3 and three Linux system paths), and the
|
|
SoundFont is a user preference, not game data.
|
|
|
|
files:
|
|
- name: "corsixth/"
|
|
path: "corsixth/"
|
|
type: directory
|
|
system: theme-hospital
|
|
category: game_data
|
|
required: true
|
|
description: "Theme Hospital install directory (full game or demo)"
|
|
source_ref: "CorsixTH/Lua/filesystem.lua:64-76, CorsixTH/Lua/app.lua:1435-1447, 1454, 1501"
|
|
note: "Accepted as an install when it holds data, levels and qdata subdirectories. The rest of the tree is opened by name on demand."
|
|
|
|
- name: "VBLK-0.TAB"
|
|
path: "corsixth/DATA/VBLK-0.TAB"
|
|
system: theme-hospital
|
|
category: game_data
|
|
required: true
|
|
description: "Theme Hospital core sprite index, sentinel checked at startup"
|
|
source_ref: "CorsixTH/Lua/app.lua:1523"
|
|
note: "Looked up as Data/VBlk-0.tab."
|
|
|
|
- name: "LEVEL.L1"
|
|
path: "corsixth/LEVELS/LEVEL.L1"
|
|
system: theme-hospital
|
|
category: game_data
|
|
required: true
|
|
description: "First Theme Hospital level file, sentinel checked at startup"
|
|
source_ref: "CorsixTH/Lua/app.lua:1524, 1562"
|
|
note: "Looked up as Levels/Level.L1. With the demo marker present, a size more than 1024 bytes away from 163948 is reported as corrupt and the game still starts."
|
|
|
|
- name: "SPOINTER.DAT"
|
|
path: "corsixth/QDATA/SPOINTER.DAT"
|
|
system: theme-hospital
|
|
category: game_data
|
|
required: true
|
|
description: "Sprite pointer table, sentinel checked at startup"
|
|
source_ref: "CorsixTH/Lua/app.lua:1525"
|
|
note: "Looked up as QData/SPointer.dat."
|
|
|
|
- name: "FONT00V.DAT"
|
|
path: "corsixth/QDATA/FONT00V.DAT"
|
|
system: theme-hospital
|
|
category: game_data
|
|
required: true
|
|
description: "Theme Hospital font, its CRC32 selects charset (mik vs cp437)"
|
|
source_ref: "CorsixTH/Lua/app.lua:1578-1586"
|
|
note: "Looked up as QData/Font00V.dat."
|
|
|
|
- name: "DEMO.DAT"
|
|
path: "corsixth/DATAM/DEMO.DAT"
|
|
system: theme-hospital
|
|
category: game_data
|
|
required: false
|
|
description: "Demo marker: its presence selects the demo graphics set and the demo size checks"
|
|
source_ref: "CorsixTH/Lua/app.lua:1537-1541, 1560-1563"
|
|
note: "Looked up as DataM/Demo.dat. Absent from a full install."
|