Files
libretro/emulators/ghostship.yml
T
Abdessamad Derraz bb19a6d5cf feat: profile what RetroBat and RetroPie run
100 emulator names the two platforms run had no profile, so their packs carried nothing for them. Each was read from the platform's own launcher or scriptmodule: the same program as an existing profile takes the name in cores:, a different build gets its own profile read from that version, a launcher or self-contained game goes to remove_cores, and the rest are new profiles written from their source or shipped binary. The files they need that the collection lacked are collected from the upstream distributions. Bungie and splitwolf trees are read by path and stay out of dedup.
2026-10-20 06:14:10 +02:00

129 lines
6.7 KiB
YAML

emulator: Ghostship
type: standalone
core_classification: game_engine
source: "https://github.com/HarbourMasters/Ghostship"
upstream: "https://github.com/HarbourMasters/Ghostship"
source_commit: "deb091c29caff57dd986398087b058f16b11911e"
profiled_date: "2026-10-20"
core_version: "3.0.0"
display_name: "Super Mario 64 (Ghostship)"
cores: [ghostship]
systems: [ghostship]
notes: |
PC port of Super Mario 64 built on the decompilation, by HarbourMasters.
The game runs from assets extracted out of the user's N64 ROM into
sm64.o2r, plus the port's own archive ghostship.o2r, on the libultraship
runtime. Torch (submodule Torch) performs the extraction inside the
executable.
RetroBat installs the 3.0.0 release: its ghostship.7z carries the
Ghostship.exe, ghostship.o2r, config.yml, gamecontrollerdb.txt and
assets/ymls tree of Nautilus-Alfa-Win64.zip byte for byte, so the profile
is pinned to the 3.0.0 tag. Its launcher passes the ROM on the command line
when sm64.o2r is absent (only a .z64 file), and deletes sm64.o2r first
when the portVersion inside it names another major.minor than the
executable, so the archive is regenerated from the ROM.
Startup:
1. ghostship.o2r is located in the application directories and handed to
the resource manager (src/port/Engine.cpp:229-230, 250-255).
2. RunExtract checks sm64.o2r. It is regenerated when its portVersion
differs from the build in major or minor, or when its version file
holds neither ROM revision (src/port/Engine.cpp:673-682, 170-192).
3. Without sm64.o2r a ROM given on the command line is extracted.
Otherwise .z64 files next to the executable are offered, then a file
dialog filtered on *.z64. A file whose SHA-1 is not in mGameList is
refused, and with no sm64.o2r at the end the port shows an error and
exits (src/port/GameExtractor.cpp:37-40, 114, src/port/Engine.cpp:1056-1088).
4. LoadResourceFiles adds sm64.o2r, then every .otr, .o2r and .zip under
mods/ and every directory there (src/port/Engine.cpp:488-518).
The ROM SHA-1 is computed by Torch over the whole file with no byte order
conversion, so only big-endian .z64 dumps match
(Torch src/n64/Cartridge.cpp:21, Torch src/Companion.cpp:2491-2493). Torch then
reads config.yml from the application bundle path, which maps each
accepted hash to an asset tree under assets/ymls/ and to sm64.o2r. Without
config.yml Torch logs "No config file found" and writes nothing
(src/port/GameExtractor.cpp:295-299, Torch src/Companion.cpp:1350-1354).
config.yml and the 842 assets/ymls files ship with the release.
The renderer loads its shader from the archives and aborts when it is
missing (libultraship src/fast/backends/gfx_direct3d11.cpp:1586-1598).
The shaders are only in ghostship.o2r, packed from port/ by "torch pack port
ghostship.o2r o2r" (CMakeLists.txt:990-996).
tcc.dll and the .tcc tree serve the script mod compiler, and
shaderc_shared.dll the Vulkan shader compiler. Both are program components
of the release.
Torch and libultraship are submodules of the repository, pinned at 3.0.0
to 106621f0f0f9731b8739bec95227c2c5887492df and
6b861a64d29d9fe95d100be228eb6d190231cc0d. Their citations above are at
those revisions.
files:
- name: "baserom.us.z64"
category: game_data
system: ghostship
required: true
sha1: "9bef1128717f958171a4afac3ed78ee2bb4e86ce"
validation: [sha1]
description: "Super Mario 64 (USA) ROM in big-endian .z64 order"
source_ref: "src/port/GameExtractor.cpp:37-40, 114, 122-129, config.yml:42-48"
note: "Picked through a file dialog filtered on *.z64 or passed on the command line on Windows, Linux and macOS. Android and iOS read baserom.us.z64 from the application directory. Either ROM produces sm64.o2r, and the ROM is not read again once sm64.o2r exists."
unsourceable: "retail ROM the collection does not hold, and a same-named dump of another game must not stand in"
- name: "baserom.jp.z64"
category: game_data
system: ghostship
required: false
sha1: "8a20a5c83d6ceb0f0506cfc9fa20d8f438cafe51"
validation: [sha1]
description: "Super Mario 64 (Japan) ROM in big-endian .z64 order"
source_ref: "src/port/GameExtractor.cpp:37-40, config.yml:4-10"
note: "Accepted in place of the US ROM and extracted to the same sm64.o2r. The file name is whatever the user picks."
unsourceable: "retail ROM the collection does not hold, and a same-named dump of another game must not stand in"
- name: "ghostship.o2r"
path: "ghostship/ghostship.o2r"
category: game_data
system: ghostship
required: true
bundled: true
size: 384109
sha1: "95300becccd0660d606c71dab5b457d52098dbe7"
md5: "ad8f2494ce4bb346485f03903b611464"
description: "Port archive packed from port/: Direct3D, OpenGL, Vulkan and Metal shaders and the menu textures"
source_ref: "src/port/Engine.cpp:229-230, 250-255, libultraship src/fast/backends/gfx_direct3d11.cpp:1586-1598"
note: "Located across the application directories. No version check runs on it at this tag, but the renderer aborts without the shader it carries. Hash of the copy in Nautilus-Alfa-Win64.zip."
unsourceable: "ships inside the Ghostship release, and the collection does not hold it"
- name: "config.yml"
path: "ghostship/config.yml"
category: game_data
system: ghostship
required: true
bundled: true
size: 1396
sha1: "29a8661b29923bc329459ff2ec9ea43e6e0c6bdb"
md5: "a196a1b5beb1ac9e0ef5fc9047a8f789"
description: "Torch extraction table: accepted ROM hashes, their asset tree under assets/ymls/ and the output archive"
source_ref: "src/port/GameExtractor.cpp:295-299, Torch src/Companion.cpp:1350-1354"
note: "Read from the application bundle path during an extraction only, together with the assets/ymls tree. Without it no sm64.o2r is written and the port exits. Hash of the copy in Nautilus-Alfa-Win64.zip."
unsourceable: "ships inside the Ghostship release, and a same-named file of another port must not stand in"
- name: "gamecontrollerdb.txt"
path: "ghostship/gamecontrollerdb.txt"
category: game_data
system: ghostship
required: false
bundled: true
size: 607874
sha1: "48e5b33c476ad7a93d41e33b9d2ffcb82009dad2"
md5: "2cccea5a3f80fbcbe7e8fb6d29e22a03"
description: "SDL game controller mapping database"
source_ref: "libultraship src/libultraship/libultra/os.cpp:21-27, CMakeLists.txt:998-999"
note: "A load failure is logged and SDL keeps its built-in mappings. The build downloads it from gabomdq/SDL_GameControllerDB. Hash of the copy in Nautilus-Alfa-Win64.zip."
unsourceable: "ships inside the Ghostship release, and other revisions under the same name must not stand in"