TheXTech - RetroBIOS¶
Technical notes
C++ reimplementation of the SMBX 1.3 engine. The engine itself ships no game assets; asset packs are searched at startup under every root of AppPathManager::assetsSearchPath(): the root itself (legacy layout), then each directory or archive of its assets/ folder. ref: src/main/asset_pack.cpp:249-378 (s_find_asset_packs), lib/AppPath/private/app_path.cpp:135-181
A directory is scanned when it carries graphics/ui/, an archive when it carries _meta.ini. Two descriptors are recognized: _meta.ini archive pack ([content] engine "TheXTech", platform matching the running target, pack-id) gameinfo.ini directory pack ([game] id, menu images under [android]) A pack under assets/ is ignored when no id could be read; the legacy root pack needs none. ref: src/main/asset_pack.cpp:125-207, 334-339
The pack-selection menu loads an icon, a logo and a background. Only the logo is checked: without it the pack is ignored ("Could not load UI assets from possible asset pack"). ref: src/main/asset_pack.cpp:115-117, 225-233, 282-283
The selected pack is then loaded by GFX_t::load, which fails when one of the UI images it requires from graphics/ui/ is missing. ref: src/gfx.cpp:121-229, src/main/asset_pack.cpp:415-438
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.
Paths below are written from a search root. TheXTech/ is the name the build gives its user directory (THEXTECH_DIRECTORY_PREFIX) and its system directory; the application directory is searched the same way. ref: CMakeLists.txt:297, lib/AppPath/private/app_path_unix.cpp:46, 103, lib/AppPath/private/app_path.cpp:87
19 files | 3 required, 16 optional | 19 in repo, 0 missing Categories: 19 game data
assets/ optional in repo game_data directory
- Path:
TheXTech/assets/ - Source:
src/main/asset_pack.cpp:131-181,src/main/asset_pack.cpp:290-300,src/main/asset_pack.cpp:313-319 - Every file directly under assets/ is opened as an archive and kept as a pack when it holds _meta.ini; every subdirectory is kept when it holds graphics/ui/. _meta.ini is read only through the archive prefix: [content] engine must be TheXTech, platform must match the build, pack-id names the pack.
gameinfo.ini optional in repo game_data
- Path:
TheXTech/gameinfo.ini - Source:
src/main/asset_pack.cpp:126,src/main/asset_pack.cpp:182-190,src/main/game_info.cpp:143 - Directory pack descriptor. [game] id names the pack, [android] logo/background override the menu images.
thextech.ini optional in repo game_data
- Path:
TheXTech/thextech.ini - Source:
lib/AppPath/private/app_path.cpp:98,lib/AppPath/private/app_path.cpp:196-222 - Read from the application directory at startup. [Main] force-portable = true makes that directory the user directory, so settings and saves stay next to the executable.
thextech_128.png optional in repo game_data
- Path:
TheXTech/graphics/ui/icon/thextech_128.png - Source:
src/main/asset_pack.cpp:115,src/main/asset_pack.cpp:225 - Pack icon. Loaded during pack scan, result not checked.
MenuGFX2.png required in repo game_data
- Path:
TheXTech/graphics/ui/MenuGFX2.png - Source:
src/main/asset_pack.cpp:116,src/main/asset_pack.cpp:226-230,src/main/asset_pack.cpp:334-335,src/gfx.cpp:201 - Main menu logo. Pack ignored if no logo loads; GFX_t::load requires it as well.
background2-2.png optional in repo game_data
- Path:
TheXTech/graphics/background2/background2-2.png - Source:
src/main/asset_pack.cpp:117,src/main/asset_pack.cpp:227-233 - Menu background. Loaded during pack scan, result not checked.
graphics/ required in repo game_data directory
- Path:
TheXTech/graphics/ - Source:
src/main/asset_pack.cpp:274,src/main/asset_pack.cpp:326-327,src/gfx.cpp:121-229,src/load_gfx.cpp:120-123 - graphics/ui/ must exist for a directory to be scanned as a pack; GFX_t::load rejects the pack when a required UI image is missing.
fonts/ optional in repo game_data directory
- Path:
TheXTech/fonts/ - Source:
src/fontman/font_manager.cpp:270,src/fontman/font_manager.cpp:477-499 - Raster fonts described by *.font.ini files. Without the directory, or with no font in it, the built-in fallback fonts are loaded.
languages/ optional in repo game_data directory
- Path:
TheXTech/languages/ - Source:
lib/AppPath/private/app_path.cpp:311-315,src/core/language/language_common.cpp:72-83,src/core/language/language_common.cpp:104-122 - thextech_<lang>.json and assets_<lang>.json translations. Without the directory no translation is listed.
sound/ optional in repo game_data directory
- Path:
TheXTech/sound/ - Source:
src/sound.cpp:1319 - SFX directory, files named by sounds.ini. Game runs without sounds.
music/ optional in repo game_data directory
- Path:
TheXTech/music/ - Source:
src/sound.cpp:1318 - Music tracks, files named by music.ini.
sounds.ini optional in repo game_data
- Path:
TheXTech/sounds.ini - Source:
src/sound.cpp:1322,src/sound.cpp:1348-1354,src/sound.cpp:1363 - SFX index. A message box reports its absence and the game runs without SFX.
music.ini optional in repo game_data
- Path:
TheXTech/music.ini - Source:
src/sound.cpp:1321,src/sound.cpp:1341-1347,src/sound.cpp:1356 - Music index. A message box reports its absence and the game runs without default music.
editor.ini optional in repo game_data
- Path:
TheXTech/editor.ini - Source:
src/editor/editor_custom.cpp:962,src/editor/editor_custom.cpp:979,src/main/translate.cpp:888 - Item lists of the built-in editor, read when the translation table is built.
intro.lvlx required in repo game_data
- Path:
TheXTech/intro.lvlx - Aliases:
intro.lvl - Source:
src/game_main.cpp:172-185,src/game_main.cpp:224-250,src/game_main.cpp:1095-1106 - Level shown behind the main menu. intro.lvl is opened when intro.lvlx is absent, and a level picked from introset/ takes the place of both; with none of the three the game exits on a fatal error.
introset/ optional in repo game_data directory
- Path:
TheXTech/introset/ - Source:
src/game_main.cpp:194-222,src/game_main.cpp:247,src/main/level_file.cpp:321-339 - Directory of .lvl/.lvlx intro levels; one is picked at random when present, otherwise the root intro level is opened. The Adventures of Demo pack carries none; these 19 levels come from the introset/ of the Nostalgic Paradise pack (Blue Edition 0.2.8b, nostalgic-paradise-stable.7z). A level reads custom graphics from introset/ and from the subfolder named after it (07/, 08/, 10/); every other block, BGO, NPC and background ID they use is present in the Adventures of Demo graphics.
outro.lvlx optional in repo game_data
- Path:
TheXTech/outro.lvlx - Aliases:
outro.lvl - Source:
src/game_main.cpp:857-869 - Level shown behind the credits, unless the episode names its own. outro.lvl is opened when outro.lvlx is absent.
worlds/ optional in repo game_data directory
- Path:
TheXTech/worlds/ - Source:
src/main/menu_main.cpp:361-370 - Episodes shipped with the pack, listed next to the user's worlds directory.
battle/ optional in repo game_data directory
- Path:
TheXTech/battle/ - Source:
src/main/menu_main.cpp:701-706 - Battle mode levels shipped with the pack.
Generated on 2026-10-10T11:26:02Z