Files
libretro/emulators/thextech.yml
T

134 lines
4.7 KiB
YAML

emulator: TheXTech
type: standalone
core_classification: game_engine
source: "https://github.com/TheXTech/TheXTech"
upstream: "https://github.com/TheXTech/TheXTech"
profiled_date: "2026-10-04"
source_commit: "48f15208ff2857985d3534f191dab494ea3cd3d0"
display_name: "TheXTech"
cores: []
systems: [smbx]
notes: |
C++ reimplementation of the SMBX 1.3 engine. The engine itself ships
no game assets; an asset pack is probed at startup from
AppPathManager::assetsSearchPath() and the first pack with a valid
graphics/ui/ directory is used.
ref: src/main/asset_pack.cpp:249-340 (s_find_asset_packs,
s_scan_asset_pack), lib/AppPath/private/app_path.cpp:135-170
A pack is accepted when it carries graphics/ui/ plus an identification
file. Two schemas are recognized:
_meta.ini modern asset pack (engine field "TheXTech", platform
field matching the running target, pack-id)
gameinfo.ini legacy SMBX-style descriptor read under [android]
ref: src/main/asset_pack.cpp:138-212
Three images are loaded unconditionally to render the pack-selection
menu; without them the pack is rejected ("Could not load UI assets
from possible asset pack").
ref: src/main/asset_pack.cpp:115-117, 285-291
TheXTech is content-agnostic. The reference packs that TheXTech
releases alongside the engine are the SMBX 1.3 asset pack
(`thextech-assets-smbx13`) and the free Adventures of Demo pack
(`thextech-assets-adventures-of-demo`); any pack that satisfies the
structure above runs.
files:
# ================================================================
# Asset pack identification files (one of the two is required)
# ================================================================
- name: "_meta.ini"
category: game_data
required: false
source_ref: "src/main/asset_pack.cpp:138-168 (modern asset pack schema)"
note: "Modern asset pack descriptor. [content] engine=TheXTech + pack-id."
- name: "gameinfo.ini"
category: game_data
required: false
source_ref: "src/main/asset_pack.cpp:169-180 (legacy schema)"
note: "Legacy SMBX descriptor. [game] id + [android] logo/background."
# ================================================================
# UI assets probed to validate an asset pack
# ================================================================
- name: "thextech_128.png"
category: game_data
path: "graphics/ui/icon/thextech_128.png"
required: true
source_ref: "src/main/asset_pack.cpp:115 (assets_icon)"
note: "Pack icon. Loaded during pack scan."
- name: "MenuGFX2.png"
category: game_data
path: "graphics/ui/MenuGFX2.png"
required: true
source_ref: "src/main/asset_pack.cpp:116 (logo_image_path_default), 285-291"
note: "Main menu logo. Pack rejected if this image fails to load."
- name: "background2-2.png"
category: game_data
path: "graphics/background2/background2-2.png"
required: true
source_ref: "src/main/asset_pack.cpp:117 (bg_image_path_default)"
note: "Menu background. Covered by the UI-assets gate."
# ================================================================
# Core content directories (engine iterates on disk, filenames are
# the pack's own; the directory contract is what the engine checks)
# ================================================================
- name: "graphics/"
category: game_data
required: true
source_ref: "src/main/asset_pack.cpp:275-291 (DirMan::exists(root + \"graphics/ui/\"))"
note: "Pack validation requires graphics/ui/ to exist."
- name: "sound/"
category: game_data
required: false
source_ref: "src/load_gfx.cpp:443 (LoadGFXFromList), src/sound.h"
note: "SFX directory read from sounds.ini. Game runs without sounds."
- name: "music/"
category: game_data
required: false
source_ref: "src/sound.cpp (music loader)"
note: "Music tracks read from music.ini."
- name: "sounds.ini"
category: game_data
required: false
source_ref: "src/sound.cpp (SFX index file)"
- name: "music.ini"
category: game_data
required: false
source_ref: "src/sound.cpp (music index file)"
- name: "intro/"
category: game_data
required: false
source_ref: "src/main/game_main.cpp (intro level loader)"
note: "Intro level episode; played before the main menu when present."
- name: "outro/"
category: game_data
required: false
source_ref: "src/main/game_main.cpp (outro episode)"
- name: "worlds/"
category: game_data
required: false
source_ref: "src/main/game_main.cpp (world loader)"
note: "Default world episodes shipped with the pack."
- name: "battle/"
category: game_data
required: false
source_ref: "src/main/game_main.cpp (battle mode levels)"