mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-11 05:53:23 -05:00
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: "2d4671e267cae25847432a2e7d4f814b44f91e35"
|
|
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 (:1471-1489) 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
|
|
(:1521-1523):
|
|
DATA/VBlk-0.tab
|
|
LEVELS/Level.L1
|
|
QDATA/SPointer.dat
|
|
Any missing file aborts init with "Invalid Theme Hospital
|
|
folder specified in config file..." (:1526).
|
|
3. DataM/Demo.dat (:1535) 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 :1559-1561. Full installs instead
|
|
get soft size checks on ANIMS/AREA01V.SMK, WINGAME.SMK,
|
|
WINLEVEL.SMK, LOSE1.SMK and INTRO/INTRO.SM4 (:1563-1567).
|
|
4. QData/Font00V.dat is read unconditionally (:1576) 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 :1589 probes GeneralUser-GS.sf2,
|
|
FluidR3_GM.sf2, FluidR3.sf3 and three Linux system paths); 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, 1499"
|
|
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:1521"
|
|
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:1522, 1560"
|
|
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:1523"
|
|
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; CRC32 selects charset (mik vs cp437)"
|
|
source_ref: "CorsixTH/Lua/app.lua:1576-1584"
|
|
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:1535-1539, 1558-1561"
|
|
note: "Looked up as DataM/Demo.dat. Absent from a full install."
|