diff --git a/emulators/bstone.yml b/emulators/bstone.yml index a123fa07..5c264606 100644 --- a/emulators/bstone.yml +++ b/emulators/bstone.yml @@ -9,140 +9,305 @@ core_version: "v1.3.4" display_name: "Blake Stone (BStone)" cores: [bstone] systems: [blake-stone] -verification: md5 +verification: sha1 notes: | - Blake Stone source port by bibendovsky, covering Aliens of Gold (shareware - v1.0/v2.0/v2.1/v3.0 and registered v1.0/v2.0/v2.1/v3.0) plus Planet Strike. + Source port of Blake Stone: Aliens of Gold and Blake Stone: Planet Strike. - The engine identifies the installed game by SHA1-hashing every file in the - content directory against a hardcoded resource table in id_ca.cpp. - Assets::get_aog_sw_v1_0_resources, get_aog_sw_v2_0_resources, - get_aog_sw_v2_1_resources, get_aog_sw_v3_0_resources, - get_aog_full_v1_0_resources through get_aog_full_v3_0_resources, and - get_ps_resources (id_ca.cpp:1493-1687) each list one shipping variant. - has_content() in jm_free.cpp:195-220 opens every file in the chosen set and - fails the match on the first SHA1 mismatch. + The engine accepts nine data sets, each a table of file names and SHA-1 + values in src/bstone/src/id_ca.cpp:1493-1688: Aliens of Gold shareware + v1.0, v2.0, v2.1, v3.0 (.BS1), Aliens of Gold registered v1.0, v2.0, v2.1, + v3.0 (.BS6) and Planet Strike (.VSI). has_content + (src/bstone/src/jm_free.cpp:197-220) opens every file of a table, hashes + each one and rejects the set on the first mismatch, so the files of one + directory must all belong to the same version. Within a game the versions + are tried in the order v2.1, v3.0, v2.0, v1.0 + (src/bstone/src/jm_free.cpp:222-356). - Search paths come from the command line (-aog_dir, -ps_dir), the Steam install - (bstone_steam_content_path.cpp) and the GOG install (bstone_gog_content_path.cpp) - before the current working directory. File names carry the game suffix: - .BS1 Aliens of Gold shareware - .BS6 Aliens of Gold registered - .VSI Planet Strike + find_contents (src/bstone/src/jm_free.cpp:626-773) looks for the three + games, or only the one forced by --aog, --aog_sw or --ps, in these + directories in order: + 1. the --data_dir directory, when given + 2. the working directory + 3. the profile directory (--profile_dir, else the per-user data path) + 4. the GOG install directories (Windows registry) + 5. the Steam install directories (Windows registry) + One complete set is enough. With none the engine stops on "Content not + found." (src/bstone/src/jm_free.cpp:754); with several games found it asks + which one to play. No single file is required on its own. - Every file in a set is required; the game refuses to start otherwise. Levels - are checked separately: a modded-levels hash saves to the player data instead - of being refused (jm_free.cpp:934-946). + Each file is opened under its upper-case name first, then under the + lower-case name (src/bstone/src/id_ca.cpp:940-961). - No separate BIOS. BStone requires one of the three retail/shareware data sets. + A --mod_dir directory is searched before the data directory for every + resource. A MAPTEMP file found there replaces the level hash, unless it is + the official level file of another version, which is refused + (src/bstone/src/jm_free.cpp:918-950). files: - # ─── Aliens of Gold registered v3.0 (the common retail dump) ─── + # Aliens of Gold shareware + - name: "AUDIOHED.BS1" + category: game_data + system: blake-stone + description: "Aliens of Gold shareware audio chunk offsets" + required: false + sha1: + - "0c3de403b524107809fa9308b730d60e8e41ba93" + - "e2c101f9fd4bc7e22ddbfa3f019c9303877de4e2" + validation: [sha1] + note: "sha1 values in order: v1.0 and v2.0; v2.1 and v3.0" + source_ref: "src/bstone/src/id_ca.cpp:1497, 1518, 1539, 1560" + + - name: "AUDIOT.BS1" + category: game_data + system: blake-stone + description: "Aliens of Gold shareware audio data" + required: false + sha1: + - "3d4e8b62aa4683671027513ad9720f76f176ba5b" + - "b79e7afcb4e4b29e59660ec261f72ff1ab4d3a25" + validation: [sha1] + note: "sha1 values in order: v1.0 and v2.0; v2.1 and v3.0" + source_ref: "src/bstone/src/id_ca.cpp:1498, 1519, 1540, 1561" + + - name: "IANIM.BS1" + category: game_data + system: blake-stone + description: "Aliens of Gold shareware intro movie" + required: false + sha1: "ba1fa5b0bc34f148deffb4977a3cd1e718e91bbd" + validation: [sha1] + source_ref: "src/bstone/src/id_ca.cpp:1499, 1520, 1541, 1562" + + - name: "MAPHEAD.BS1" + category: game_data + system: blake-stone + description: "Aliens of Gold shareware map offsets" + required: false + sha1: + - "55b9eb9ed555b0f249c2cefd54ecc3f511bfcd55" + - "04a8e4e7c360f6033dc70f7b09edbc4a6447e462" + validation: [sha1] + note: "sha1 values in order: v1.0; v2.0 and v2.1 and v3.0" + source_ref: "src/bstone/src/id_ca.cpp:1500, 1521, 1542, 1563" + + - name: "MAPTEMP.BS1" + category: game_data + system: blake-stone + description: "Aliens of Gold shareware level data" + required: false + sha1: + - "293464e7143ff7e6faf5f5b20799e76a394d65bf" + - "bbb3cd6ab3e742eada427862504eba06437036d0" + validation: [sha1] + note: "sha1 values in order: v1.0; v2.0 and v2.1 and v3.0" + source_ref: "src/bstone/src/id_ca.cpp:1501, 1522, 1543, 1564" + + - name: "SANIM.BS1" + category: game_data + system: blake-stone + description: "Aliens of Gold shareware second final movie" + required: false + sha1: "22bf818465da0f32eef9611de936cba9966b14aa" + validation: [sha1] + source_ref: "src/bstone/src/id_ca.cpp:1502, 1523, 1544, 1565" + + - name: "VGADICT.BS1" + category: game_data + system: blake-stone + description: "Aliens of Gold shareware graphics Huffman dictionary" + required: false + sha1: + - "b54d48d35d095e27a3c9130cfa59ed9c4f05abe7" + - "058fe0b59c7aa020bf4e7509103892d4c7459aa6" + - "ed1ab61ad2529e046f966d9c1627508f76693ef8" + - "537676ddcafeee415c22bb9d00097b25bc7e13c5" + validation: [sha1] + note: "sha1 values in order: v1.0; v2.0; v2.1; v3.0" + source_ref: "src/bstone/src/id_ca.cpp:1503, 1524, 1545, 1566" + + - name: "VGAGRAPH.BS1" + category: game_data + system: blake-stone + description: "Aliens of Gold shareware compressed graphics" + required: false + sha1: + - "d1fa19131281d30787125f946881652be876f57a" + - "e14b6172b6ab7568d3736f087f07a0df5eac5dad" + - "b59cbe3793b4612b06254ece48bf8e961ab6f528" + - "9f9f4c40c9637af472ce5e1a360e51364c3a418a" + validation: [sha1] + note: "sha1 values in order: v1.0; v2.0; v2.1; v3.0" + source_ref: "src/bstone/src/id_ca.cpp:1504, 1525, 1546, 1567" + + - name: "VGAHEAD.BS1" + category: game_data + system: blake-stone + description: "Aliens of Gold shareware graphics chunk offsets" + required: false + sha1: + - "cc44c362e9e2c9f7b9fb2e4ba31331dde42a1e96" + - "6c0e273df7fd3940c038fc20a5bdfb81cd50e7ef" + - "0635a4a2b823eef2904ed1d590d98362fb16621d" + - "e7fb8f241b8fa94739c3bd09ea05c1afc7bbfc95" + validation: [sha1] + note: "sha1 values in order: v1.0; v2.0; v2.1; v3.0" + source_ref: "src/bstone/src/id_ca.cpp:1505, 1526, 1547, 1568" + + - name: "VSWAP.BS1" + category: game_data + system: blake-stone + description: "Aliens of Gold shareware walls, sprites and digitised sounds" + required: false + sha1: + - "37412ca9139562fc31330d72470822de4d9ceb4a" + - "dbde907ba1110bef445d6daae283c4520d6951b4" + validation: [sha1] + note: "sha1 values in order: v1.0; v2.0 and v2.1 and v3.0" + source_ref: "src/bstone/src/id_ca.cpp:1506, 1527, 1548, 1569" + + # Aliens of Gold registered - name: "AUDIOHED.BS6" category: game_data system: blake-stone - description: "Aliens of Gold v3.0 audio header" - required: true + description: "Aliens of Gold registered audio chunk offsets" + required: false sha1: "e2c101f9fd4bc7e22ddbfa3f019c9303877de4e2" - source_ref: "src/bstone/src/id_ca.cpp:1657 (get_aog_full_v3_0_resources)" + validation: [sha1] + source_ref: "src/bstone/src/id_ca.cpp:1581, 1604, 1627, 1650" - name: "AUDIOT.BS6" category: game_data system: blake-stone - description: "Aliens of Gold v3.0 audio data" - required: true + description: "Aliens of Gold registered audio data" + required: false sha1: "b79e7afcb4e4b29e59660ec261f72ff1ab4d3a25" - source_ref: "src/bstone/src/id_ca.cpp:1658" + validation: [sha1] + source_ref: "src/bstone/src/id_ca.cpp:1582, 1605, 1628, 1651" - name: "EANIM.BS6" category: game_data system: blake-stone - description: "Aliens of Gold v3.0 ending animation" - required: true + description: "Aliens of Gold registered final movie" + required: false sha1: "af5af59ad7ed17517d87b3ece3c0cac23ade535b" - source_ref: "src/bstone/src/id_ca.cpp:1659" + validation: [sha1] + source_ref: "src/bstone/src/id_ca.cpp:1583, 1606, 1629, 1652" - name: "GANIM.BS6" category: game_data system: blake-stone - description: "Aliens of Gold v3.0 gameplay animation" - required: true + description: "Aliens of Gold registered third final movie" + required: false sha1: "9b2418a1a1f34abdcf6fcd9ed3344a49912c9b5e" - source_ref: "src/bstone/src/id_ca.cpp:1660" + validation: [sha1] + source_ref: "src/bstone/src/id_ca.cpp:1584, 1607, 1630, 1653" - name: "IANIM.BS6" category: game_data system: blake-stone - description: "Aliens of Gold v3.0 intro animation" - required: true + description: "Aliens of Gold registered intro movie" + required: false sha1: "ba1fa5b0bc34f148deffb4977a3cd1e718e91bbd" - source_ref: "src/bstone/src/id_ca.cpp:1661" + validation: [sha1] + source_ref: "src/bstone/src/id_ca.cpp:1585, 1608, 1631, 1654" - name: "MAPHEAD.BS6" category: game_data system: blake-stone - description: "Aliens of Gold v3.0 map header" - required: true - sha1: "028f624e150f84ffc8336336cb0ecea0932cc22d" - source_ref: "src/bstone/src/id_ca.cpp:1662" + description: "Aliens of Gold registered map offsets" + required: false + sha1: + - "6f19a144d8985e90f096fc1c67ade58e9051235c" + - "028f624e150f84ffc8336336cb0ecea0932cc22d" + validation: [sha1] + note: "sha1 values in order: v1.0; v2.0 and v2.1 and v3.0" + source_ref: "src/bstone/src/id_ca.cpp:1586, 1609, 1632, 1655" - name: "MAPTEMP.BS6" category: game_data system: blake-stone - description: "Aliens of Gold v3.0 level data" - required: true - sha1: "8b48e7eb859382a4c84948c5a62899194288e853" - source_ref: "src/bstone/src/id_ca.cpp:1663" + description: "Aliens of Gold registered level data" + required: false + sha1: + - "4d00c5f5c843f99a266bd938648192a6eff17b5a" + - "8b48e7eb859382a4c84948c5a62899194288e853" + validation: [sha1] + note: "sha1 values in order: v1.0; v2.0 and v2.1 and v3.0" + source_ref: "src/bstone/src/id_ca.cpp:1587, 1610, 1633, 1656" - name: "SANIM.BS6" category: game_data system: blake-stone - description: "Aliens of Gold v3.0 story animation" - required: true + description: "Aliens of Gold registered second final movie" + required: false sha1: "22bf818465da0f32eef9611de936cba9966b14aa" - source_ref: "src/bstone/src/id_ca.cpp:1664" + validation: [sha1] + source_ref: "src/bstone/src/id_ca.cpp:1588, 1611, 1634, 1657" - name: "VGADICT.BS6" category: game_data system: blake-stone - description: "Aliens of Gold v3.0 huffman dictionary" - required: true - sha1: "60da35e506d57753f83cca5f232a76dd1cf074ba" - source_ref: "src/bstone/src/id_ca.cpp:1665" + description: "Aliens of Gold registered graphics Huffman dictionary" + required: false + sha1: + - "d4f81ace1701a7338d43ce07723c2adaafdc837c" + - "e83b690836c9edf9ef60f6189b8384fb2319b735" + - "e4ae3ef9a3ac158a832092b7b5487227337c6f13" + - "60da35e506d57753f83cca5f232a76dd1cf074ba" + validation: [sha1] + note: "sha1 values in order: v1.0; v2.0; v2.1; v3.0" + source_ref: "src/bstone/src/id_ca.cpp:1589, 1612, 1635, 1658" - name: "VGAGRAPH.BS6" category: game_data system: blake-stone - description: "Aliens of Gold v3.0 compressed graphics" - required: true - sha1: "001037fafdff124befb5437c563d0b9c613b3c00" - source_ref: "src/bstone/src/id_ca.cpp:1666" + description: "Aliens of Gold registered compressed graphics" + required: false + sha1: + - "02dc27d4810e3ffa26540b310eac6091f5e16de0" + - "67a679e3b107db8685ba5ff1643a38f9291b00bf" + - "6868e6cc4f8cb9160a218c5bce680a11f64c675a" + - "001037fafdff124befb5437c563d0b9c613b3c00" + validation: [sha1] + note: "sha1 values in order: v1.0; v2.0; v2.1; v3.0" + source_ref: "src/bstone/src/id_ca.cpp:1590, 1613, 1636, 1659" - name: "VGAHEAD.BS6" category: game_data system: blake-stone - description: "Aliens of Gold v3.0 graphics offsets" - required: true - sha1: "ff165ca5924d738853587a7e4ab1cd239e10e359" - source_ref: "src/bstone/src/id_ca.cpp:1667" + description: "Aliens of Gold registered graphics chunk offsets" + required: false + sha1: + - "639ec9e7a81ad83fc5b5c557cf4fc5fa28b9676b" + - "48b18caa86151610957b64b207cf2a2977ef7d57" + - "1a3864cd12de4b8fd6be023b73d2d79e91b9018d" + - "ff165ca5924d738853587a7e4ab1cd239e10e359" + validation: [sha1] + note: "sha1 values in order: v1.0; v2.0; v2.1; v3.0" + source_ref: "src/bstone/src/id_ca.cpp:1591, 1614, 1637, 1660" - name: "VSWAP.BS6" category: game_data system: blake-stone - description: "Aliens of Gold v3.0 wall and sprite data" - required: true - sha1: "6fcc6e007b02b2e55892cfa7acfd42966ef9c9fb" - source_ref: "src/bstone/src/id_ca.cpp:1668" + description: "Aliens of Gold registered walls, sprites and digitised sounds" + required: false + sha1: + - "0a700732ccbc72f95318a6226a7e1ad78ac713bb" + - "6fcc6e007b02b2e55892cfa7acfd42966ef9c9fb" + validation: [sha1] + note: "sha1 values in order: v1.0; v2.0 and v2.1 and v3.0" + source_ref: "src/bstone/src/id_ca.cpp:1592, 1615, 1638, 1661" - # ─── Planet Strike (only one shipping version) ─── + # Planet Strike - name: "AUDIOHED.VSI" category: game_data system: blake-stone - description: "Planet Strike audio header" + description: "Planet Strike audio chunk offsets" required: false sha1: "2ed9a587926b2b455f8176788f595d03f6359171" - source_ref: "src/bstone/src/id_ca.cpp:1696 (get_ps_resources)" + validation: [sha1] + source_ref: "src/bstone/src/id_ca.cpp:1673" - name: "AUDIOT.VSI" category: game_data @@ -150,31 +315,35 @@ files: description: "Planet Strike audio data" required: false sha1: "ecac8a800c5d021c8b68d170066c8859df9bd79a" - source_ref: "src/bstone/src/id_ca.cpp:1697" + validation: [sha1] + source_ref: "src/bstone/src/id_ca.cpp:1674" - name: "EANIM.VSI" category: game_data system: blake-stone - description: "Planet Strike ending animation" + description: "Planet Strike final movie" required: false sha1: "b668330e56ceb069c1b972cefddd8a3d618a14af" - source_ref: "src/bstone/src/id_ca.cpp:1698" + validation: [sha1] + source_ref: "src/bstone/src/id_ca.cpp:1675" - name: "IANIM.VSI" category: game_data system: blake-stone - description: "Planet Strike intro animation" + description: "Planet Strike intro movie" required: false sha1: "ba1fa5b0bc34f148deffb4977a3cd1e718e91bbd" - source_ref: "src/bstone/src/id_ca.cpp:1699" + validation: [sha1] + source_ref: "src/bstone/src/id_ca.cpp:1676" - name: "MAPHEAD.VSI" category: game_data system: blake-stone - description: "Planet Strike map header" + description: "Planet Strike map offsets" required: false sha1: "c3fb0a9b81e0240d12c952fe5b57b78c1108aa48" - source_ref: "src/bstone/src/id_ca.cpp:1700" + validation: [sha1] + source_ref: "src/bstone/src/id_ca.cpp:1677" - name: "MAPTEMP.VSI" category: game_data @@ -182,15 +351,17 @@ files: description: "Planet Strike level data" required: false sha1: "acd03031d526eeaee64072518adf6814f96e2a37" - source_ref: "src/bstone/src/id_ca.cpp:1701" + validation: [sha1] + source_ref: "src/bstone/src/id_ca.cpp:1678" - name: "VGADICT.VSI" category: game_data system: blake-stone - description: "Planet Strike huffman dictionary" + description: "Planet Strike graphics Huffman dictionary" required: false sha1: "061692d166f68d7e0b81568725439078cc728f33" - source_ref: "src/bstone/src/id_ca.cpp:1702" + validation: [sha1] + source_ref: "src/bstone/src/id_ca.cpp:1679" - name: "VGAGRAPH.VSI" category: game_data @@ -198,20 +369,23 @@ files: description: "Planet Strike compressed graphics" required: false sha1: "e619a3e6245f79888da5436df138d63204d2caba" - source_ref: "src/bstone/src/id_ca.cpp:1703" + validation: [sha1] + source_ref: "src/bstone/src/id_ca.cpp:1680" - name: "VGAHEAD.VSI" category: game_data system: blake-stone - description: "Planet Strike graphics offsets" + description: "Planet Strike graphics chunk offsets" required: false sha1: "ad5fed9de5d1d82145df3ff2286e4bc62cb80e2a" - source_ref: "src/bstone/src/id_ca.cpp:1704" + validation: [sha1] + source_ref: "src/bstone/src/id_ca.cpp:1681" - name: "VSWAP.VSI" category: game_data system: blake-stone - description: "Planet Strike wall and sprite data" + description: "Planet Strike walls, sprites and digitised sounds" required: false sha1: "4113ce83c42e69dc5cb20de79f41971a100f876e" - source_ref: "src/bstone/src/id_ca.cpp:1705" + validation: [sha1] + source_ref: "src/bstone/src/id_ca.cpp:1682" diff --git a/emulators/hurrican.yml b/emulators/hurrican.yml index b8025478..c1730268 100644 --- a/emulators/hurrican.yml +++ b/emulators/hurrican.yml @@ -12,75 +12,95 @@ systems: [] verification: existence notes: | - Open-source Turrican-inspired platformer by Poke53280 / HurricanGame. The - tree ships all shipping assets under Hurrican/data/ (93 MB): textures, - levels, music, sfx, shaders, plus a bundled gamecontrollerdb.txt. + Turrican-style platformer by Poke53280. The repository ships the game data + under Hurrican/data/ (textures, levels, music, sfx, shaders, + gamecontrollerdb.txt) and the language files under Hurrican/lang/. - The engine resolves two paths at startup, both set in Hurrican/src/Main.cpp - (main() at line 342): - * g_storage_ext — the data root used for every asset load. Taken from the - -data= CLI flag first (Main.cpp:349-353), then from the compile-time - USE_STORAGE_PATH macro (355-363), falling back to "." (365). - * g_save_ext / g_config_ext — the user-writable save and config directory, - from -save= CLI flag then XDG_DATA_HOME/XDG_CONFIG_HOME under UNIX - (369-389). + main() (Hurrican/src/Main.cpp:342) sets two roots: + g_storage_ext: the read-only data root. Taken from --pathdata or -PD + (Hurrican/src/Main.cpp:227-241, 349-352), else from the compile-time + USE_STORAGE_PATH when that directory exists, else "." + (Hurrican/src/Main.cpp:354-366). + g_save_ext and g_config_ext: saves, high scores and Hurrican.cfg. Taken + from --pathsave or -PS, else XDG_DATA_HOME and XDG_CONFIG_HOME on + builds with USE_HOME_DIR, else "." (Hurrican/src/Main.cpp:370-385). - Everything the game loads is under /data/: - data/textures/* — DX8Font.cpp:160, DX8Graphics.cpp:393-407 (shaders), - TextureAtlas class and loadImageSDL calls - data/shaders// — DX8Graphics.cpp:393-407 (vert/frag per renderer) - data/levels/.lev — Tileengine.cpp:324-330 - data/music/ — SoundManager Mp3/OGG loads - data/sfx/ — SoundManager LoadSound - data/gamecontrollerdb.txt (joystick remapping) + Files read under g_storage_ext: + lang/*.lng: Hurrican/src/Main.cpp:496-515, Hurrican/src/Texts.cpp:65 + data/textures/: Hurrican/src/DX8Texture.cpp:204-211 + data/levels/levellist.dat: Hurrican/src/Texts.cpp:127 + data/levels/: Hurrican/src/Tileengine.cpp:330 + data/music/: Hurrican/src/DX8Sound.cpp:314 + data/sfx/: Hurrican/src/DX8Sound.cpp:580 + data/shaders//: Hurrican/src/DX8Graphics.cpp:393-428 + data/gamecontrollerdb.txt: Hurrican/src/DX8Input.cpp:97-99 - All data is open content; no retail or BIOS files needed. + A texture, level, song or sample that cannot be found sets GameRunning to + false and the game quits. --custom reads data/levels// first + for levels, textures, custom.lng and levellist.dat. files: + - name: "lang" + path: "lang" + category: game_data + description: "Language files (.lng)" + required: true + bundled: true + source_ref: "Hurrican/src/Main.cpp:496-515, Hurrican/src/Texts.cpp:65" + note: > + GameInit lists the .lng files of lang/, then of the working directory, + and aborts when it finds none. + - name: "textures" path: "data/textures" category: game_data - description: "Game textures (sprites, backgrounds, fonts)" + description: "Textures (sprites, backgrounds, fonts)" required: true bundled: true - source_ref: "src/DX8Font.cpp:160 (data/textures/ prefix on every font load)" + source_ref: "Hurrican/src/DX8Texture.cpp:204-218" + note: > + An optional scalefactors.txt in the same directory is read by + ReadScaleFactorsFiles (Hurrican/src/DX8Texture.cpp:162-168). - name: "levels" path: "data/levels" category: game_data - description: "Level files (.lev)" + description: "Level files and levellist.dat" required: true bundled: true - source_ref: "src/Tileengine.cpp:324-330 (data/levels/.lev + custom lists)" + source_ref: "Hurrican/src/Tileengine.cpp:330-336, Hurrican/src/Texts.cpp:127-133" - name: "shaders" path: "data/shaders" category: game_data - description: "GLSL shader sources per version subdirectory" + description: "GLSL shader sources, one subdirectory per GLSL version" required: true bundled: true - source_ref: "src/DX8Graphics.cpp:393-407 (data/shaders//*)" + source_ref: "Hurrican/src/DX8Graphics.cpp:393-428" + note: > + Loaded by the GL2 and GL3 renderers (GL2 is the build default); a GL1 + build compiles this block out. - name: "music" path: "data/music" category: game_data description: "Music tracks" - required: false + required: true bundled: true - source_ref: "src/SoundManager.cpp (data/music/ prefix for LoadMp3/LoadOgg)" + source_ref: "Hurrican/src/DX8Sound.cpp:314-320" - name: "sfx" path: "data/sfx" category: game_data description: "Sound effect samples" - required: false + required: true bundled: true - source_ref: "src/SoundManager.cpp (data/sfx/ prefix for LoadSound)" + source_ref: "Hurrican/src/DX8Sound.cpp:580-586" - name: "gamecontrollerdb.txt" path: "data/gamecontrollerdb.txt" category: game_data - description: "SDL gamecontroller mapping database" + description: "SDL game controller mapping database" required: false bundled: true - source_ref: "src/DirectInput.cpp (data/gamecontrollerdb.txt)" + source_ref: "Hurrican/src/DX8Input.cpp:97-99" diff --git a/emulators/ikemen.yml b/emulators/ikemen.yml index d124c5ce..b54703ef 100644 --- a/emulators/ikemen.yml +++ b/emulators/ikemen.yml @@ -4,7 +4,7 @@ core_classification: game_engine source: "https://github.com/ikemen-engine/Ikemen-GO" upstream: "https://github.com/ikemen-engine/Ikemen-GO" profiled_date: "2026-10-04" -source_commit: "02a078d6bf189ff56bbcbbbc8dbfd81753692c56" +source_commit: "e8b065f410fa9507dbddc1d6b1abc231de99f8c6" core_version: ~ display_name: "Ikemen GO" cores: [ikemen] @@ -12,180 +12,259 @@ systems: [] verification: existence notes: | - Open-source M.U.G.E.N.-compatible 2D fighting game engine, written in Go. - Reads the Elecbyte .def / .air / .cmd / .cns / .sff / .snd files that - commercial and community M.U.G.E.N. content ships with. + M.U.G.E.N.-compatible 2D fighting game engine written in Go. It reads the + .def, .air, .cmd, .cns, .sff and .snd files of M.U.G.E.N. content, plus its + own .zss state files. - The binary comes with the engine's own motif-neutral core data (bundled with - the install, not retail BIOS): - data/ — common definitions, stage shell, screenpack parameters - (action.zss, common.air, common.cmd, common.const, - common1.cns.zss, dizzy.zss, functions.zss, guardbreak.zss, - score.zss, system.base.def, tag.zss, training.zss) - external/ — icons, mods template, lua scripts, GLSL shaders - font/ — fallback TTF fonts (Open Sans) and 3x5 bitmap fonts - (default-3x5-bold.def/sff, default-3x5.def/sff, debug.def) + Every path below is relative to the working directory. The file names come + from the embedded default configuration, src/resources/defaultConfig.ini, + which save/config.ini overrides (src/main.go:189-195). - Characters, stages, and motifs are user-supplied. system.go:2630 and - script.go:1174 enforce the convention that any character path lacking the - "chars/" prefix is rewritten to "chars/", so content drops into - chars/, stages/, data// under the install root. + The repository ships: + data/: common animations, commands, constants and state files + external/script/: the Lua scripts that drive menus and game modes + external/icons/: window icons + external/shaders/: optional post-processing shaders + font/: debug.def with Open Sans, and the default-3x5 bitmap fonts - Nothing in Ikemen itself is a BIOS. The engine refuses to run with no motif, - but ships a stub select screen and the common.* lifebar config, so a user - character and stage are enough to boot. + The default configuration also names files the repository does not hold: + the motif data/ikemen1/system.def, the effects pack data/gofx/gofx.def and + the stage stages/stage0-720.def. Release packages copy chars, data, font, + sound, stages and video from the Ikemen-GO-Screenpack repository next to + the engine (.github/workflows/releases.yml:585-593). + + Characters and stages are found under chars/ and stages/ + (src/system.go:5364, src/system.go:5590). files: - - name: "system.base.def" - path: "data/system.base.def" + - name: "script" + path: "external/script" category: game_data - description: "Screenpack / motif parameter reference" + description: "Lua scripts: main.lua and the modules it requires" required: true bundled: true - source_ref: "src/system.go (default screenpack parsing)" + source_ref: "src/resources/defaultConfig.ini:143, src/main.go:213-232" + note: > + main.go opens Config.System and panics when it is missing. main.lua + requires debug, start, options and menu from the same directory. - - name: "common.cmd" - path: "data/common.cmd" + - name: "IkemenCylia_256.png" + path: "external/icons/IkemenCylia_256.png" category: game_data - description: "Common character command set (fallback for chars missing CMD)" + description: "Window icon, 256 px" required: true bundled: true - source_ref: "src/char.go (common.cmd lookup for every loaded character)" + source_ref: "src/resources/defaultConfig.ini:141, src/system.go:527-538" + + - name: "IkemenCylia_96.png" + path: "external/icons/IkemenCylia_96.png" + category: game_data + description: "Window icon, 96 px" + required: true + bundled: true + source_ref: "src/resources/defaultConfig.ini:141, src/system.go:527-538" + + - name: "IkemenCylia_48.png" + path: "external/icons/IkemenCylia_48.png" + category: game_data + description: "Window icon, 48 px" + required: true + bundled: true + source_ref: "src/resources/defaultConfig.ini:141, src/system.go:527-538" + + - name: "shaders" + path: "external/shaders" + category: game_data + description: "Post-processing shaders offered in the options menu" + required: false + bundled: true + source_ref: "external/script/options.lua:1646, src/system.go:457-470" - name: "common.air" path: "data/common.air" category: game_data - description: "Common animations (fallback for chars missing AIR)" + description: "Common animations merged into every character" required: true bundled: true - source_ref: "src/char.go" + source_ref: "src/resources/defaultConfig.ini:12, src/char.go:4676-4689" + + - name: "common.cmd" + path: "data/common.cmd" + category: game_data + description: "Common commands appended to every character's command file" + required: true + bundled: true + source_ref: "src/resources/defaultConfig.ini:14, src/compiler.go:8367-8380" - name: "common.const" path: "data/common.const" category: game_data - description: "Common constants (gravity, speeds)" + description: "Common constants" required: true bundled: true - source_ref: "src/char.go" - - - name: "common1.cns.zss" - path: "data/common1.cns.zss" - category: game_data - description: "Common state controllers (ZSS)" - required: true - bundled: true - source_ref: "src/char.go (ZSS state handler)" - - - name: "action.zss" - path: "data/action.zss" - category: game_data - description: "Default engine action script" - required: true - bundled: true - source_ref: "src/system.go" + source_ref: "src/resources/defaultConfig.ini:16, src/char.go:4338-4355" - name: "functions.zss" path: "data/functions.zss" category: game_data - description: "Shared ZSS helper functions" + description: "Common states: shared ZSS functions" required: true bundled: true - source_ref: "src/system.go" + source_ref: "src/resources/defaultConfig.ini:18, src/compiler.go:8545-8552" - - name: "score.zss" - path: "data/score.zss" + - name: "action.zss" + path: "data/action.zss" category: game_data - description: "Score system script" + description: "Common states: actions" required: true bundled: true - source_ref: "src/system.go" + source_ref: "src/resources/defaultConfig.ini:18, src/compiler.go:8545-8552" - - name: "tag.zss" - path: "data/tag.zss" + - name: "demo.zss" + path: "data/demo.zss" category: game_data - description: "Tag-team mode script" + description: "Common states: demo mode" required: true bundled: true - source_ref: "src/system.go" + source_ref: "src/resources/defaultConfig.ini:18, src/compiler.go:8545-8552" - name: "dizzy.zss" path: "data/dizzy.zss" category: game_data - description: "Dizzy/stun state script" + description: "Common states: dizzy" required: true bundled: true - source_ref: "src/system.go" + source_ref: "src/resources/defaultConfig.ini:18, src/compiler.go:8545-8552" - name: "guardbreak.zss" path: "data/guardbreak.zss" category: game_data - description: "Guard-break state script" + description: "Common states: guard break" required: true bundled: true - source_ref: "src/system.go" + source_ref: "src/resources/defaultConfig.ini:18, src/compiler.go:8545-8552" + + - name: "score.zss" + path: "data/score.zss" + category: game_data + description: "Common states: score" + required: true + bundled: true + source_ref: "src/resources/defaultConfig.ini:18, src/compiler.go:8545-8552" + + - name: "system.zss" + path: "data/system.zss" + category: game_data + description: "Common states: system" + required: true + bundled: true + source_ref: "src/resources/defaultConfig.ini:18, src/compiler.go:8545-8552" + + - name: "tag.zss" + path: "data/tag.zss" + category: game_data + description: "Common states: tag team" + required: true + bundled: true + source_ref: "src/resources/defaultConfig.ini:18, src/compiler.go:8545-8552" - name: "training.zss" path: "data/training.zss" category: game_data - description: "Training mode script" + description: "Common states: training mode" required: true bundled: true - source_ref: "src/system.go" + source_ref: "src/resources/defaultConfig.ini:18, src/compiler.go:8545-8552" - - name: "default-3x5.sff" - path: "font/default-3x5.sff" + - name: "common1.cns.zss" + path: "data/common1.cns.zss" category: game_data - description: "Default 3x5 bitmap font sprites" + description: "ZSS replacement for the common1.cns state file" required: true bundled: true - source_ref: "src/font.go, data/system.base.def [Files]" - - - name: "default-3x5.def" - path: "font/default-3x5.def" - category: game_data - description: "Default 3x5 bitmap font definition" - required: true - bundled: true - source_ref: "src/font.go" - - - name: "default-3x5-bold.sff" - path: "font/default-3x5-bold.sff" - category: game_data - description: "Default 3x5 bold bitmap font sprites" - required: true - bundled: true - source_ref: "src/font.go" - - - name: "default-3x5-bold.def" - path: "font/default-3x5-bold.def" - category: game_data - description: "Default 3x5 bold bitmap font definition" - required: true - bundled: true - source_ref: "src/font.go" + source_ref: "src/compiler.go:6929-6943, src/compiler.go:8538-8543" + note: > + A character names its common state file in stcommon. When that file is + not found, stateCompile retries with the .zss suffix, so a character + asking for common1.cns gets data/common1.cns.zss. - name: "debug.def" path: "font/debug.def" category: game_data - description: "Debug overlay font" + description: "Debug overlay font definition" + required: true + bundled: true + source_ref: "src/resources/defaultConfig.ini:174, external/script/main.lua:648, src/script.go:4108-4111" + note: "loadDebugFont raises a Lua error when the font cannot be loaded." + + - name: "OpenSans-Bold.ttf" + path: "font/Open_Sans/OpenSans-Bold.ttf" + category: game_data + description: "TrueType face named by debug.def" + required: true + bundled: true + source_ref: "font/debug.def:19, src/util_desktop.go:29-40" + note: > + When the file is not found, the same name is searched in the system + font directories; the engine panics when that fails too. + + - name: "default-3x5.def" + path: "font/default-3x5.def" + category: game_data + description: "Default motif font (font1)" required: false bundled: true - source_ref: "src/font.go" + source_ref: "src/resources/defaultMotif.ini:75, src/motif.go:2593-2609" + note: "A motif font that fails to load is logged and replaced by an empty font." + + - name: "default-3x5.sff" + path: "font/default-3x5.sff" + category: game_data + description: "Glyph sprites named by default-3x5.def" + required: false + bundled: true + source_ref: "font/default-3x5.def:21, src/font.go:412-418" + note: "LoadFntSff panics when default-3x5.def is loaded and this file is missing." + + - name: "system.def" + path: "data/ikemen1/system.def" + category: game_data + description: "Default motif definition" + required: true + bundled: true + source_ref: "src/resources/defaultConfig.ini:96, src/motif.go:2627-2659, src/script.go:4249-4252" + note: > + Held by the Ikemen-GO-Screenpack repository and copied into release + packages. main.lua calls loadMotif at startup, which raises a Lua error + when the definition cannot be read. -r selects another motif. + + - name: "gofx.def" + path: "data/gofx/gofx.def" + category: game_data + description: "Common effects pack" + required: true + bundled: true + source_ref: "src/resources/defaultConfig.ini:21, src/fightscreen.go:85-102, src/system.go:6551-6555" + note: > + Held by the Ikemen-GO-Screenpack repository and copied into release + packages. A load failure puts the match loader in its error state. - name: "chars" + path: "chars" category: game_data - description: "User-supplied character directory (name resolved via chars/)" + description: "Character directory" required: false - source_ref: "src/system.go:2630, src/script.go:1174 (prefix enforcement)" + source_ref: "src/system.go:5364, src/script.go:3190-3191" note: > - Not shipped: user drops MUGEN-compatible characters under chars/. Each - character directory contains its own .def, .cmd, .cns, .air, .sff, .snd. + User supplied. A character path that does not resolve as given is + searched under chars/. - name: "stages" + path: "stages" category: game_data - description: "User-supplied stage directory" + description: "Stage directory" required: false - source_ref: "src/resources/defaultConfig.json:112 (StartStage default)" + source_ref: "src/system.go:5590, src/resources/defaultConfig.ini:178, external/script/main.lua:1770-1774" note: > - Not shipped: user drops MUGEN-compatible stages under stages/. Default - configuration asks for stages/stage1.def. + User supplied. Debug.StartStage defaults to stages/stage0-720.def, the + stage added when select.def lists none.