mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-11 12:33:53 -06:00
The hooked SDL2 description rested on the README alone. The notes now say what launch.sh does at the pinned commit.
248 lines
12 KiB
YAML
248 lines
12 KiB
YAML
emulator: "advanced_drastic"
|
|
type: standalone
|
|
core_classification: enhanced_fork
|
|
source: "https://github.com/trngaje/advanced_drastic"
|
|
upstream: closed-source
|
|
author: "trngaje (hooks), Exophase (DraStic)"
|
|
profiled_date: "2026-10-22"
|
|
source_commit: "eaf41ab9bc8adcc15c010bf9517bc94c38e7bffd"
|
|
pin_frozen: "KNULLI, the only platform that ships it, builds this revision (KNULLI package/emulators/advanced_drastic/advanced_drastic.mk:7 at tag 20260511). Later commits are not part of that build."
|
|
pin_build:
|
|
- platform: knulli
|
|
repo: "https://github.com/knulli-cfw/knulli-linux"
|
|
revision: "20260511"
|
|
path: "package/emulators/advanced_drastic/advanced_drastic.mk"
|
|
variable: ADVANCED_DRASTIC_VERSION
|
|
value: "eaf41ab9bc8adcc15c010bf9517bc94c38e7bffd"
|
|
core_version: "r2.5.2.0"
|
|
version_basis:
|
|
kind: file
|
|
path: "drastic"
|
|
pattern: "Version (r[0-9][0-9.]+[0-9])"
|
|
display_name: "Nintendo - DS (advanced_drastic)"
|
|
cores:
|
|
- "advanced_drastic"
|
|
- "drastic - standalone"
|
|
- "DraStic-original"
|
|
systems:
|
|
- nintendo-ds
|
|
mode: standalone
|
|
|
|
notes: |
|
|
trngaje's package around the closed-source 64-bit Linux DraStic. The
|
|
repository carries the DraStic binary itself, md5 59a7711eff41c640b8861b4d869c747d
|
|
(sha256 6e11511907f21888), stripped, which draws "Version r2.5.2.0" in its
|
|
menu, together with its system, config, resources and microphone
|
|
directories, game_database.xml and usrcheat.dat. launch.sh puts libs/ under
|
|
its own directory on LD_LIBRARY_PATH, changes to that directory and runs
|
|
./drastic on the content, so that directory is the root every path below is
|
|
joined to.
|
|
ref: launch.sh:1-9,
|
|
drastic r2.5.2.0 FUN_93140 0x931b4-0x931cc (draws the version string)
|
|
|
|
KNULLI builds this revision, installs the whole tree under
|
|
/usr/share/advanced_drastic, copies it to
|
|
/userdata/system/configs/advanced_drastic on first launch or after a board
|
|
change, then starts launch.sh from there. The copy includes the Nintendo
|
|
BIOS and firmware images the repository ships, so the platform installs
|
|
them with the emulator.
|
|
ref: KNULLI package/emulators/advanced_drastic/advanced_drastic.mk:7-14,
|
|
KNULLI package/system/knulli-configgen/configgen/configgen/generators/advanced_drastic/advanced_drasticGenerator.py:30-50,156-158
|
|
|
|
The binary names the same system files as DraStic r2.5.2.2: each BIOS slot
|
|
takes the Nintendo image, then the free DraStic one ("Can't find Nintendo
|
|
ARM9 BIOS. Trying free DraStic ARM9 BIOS."), the firmware is
|
|
nds_firmware.bin alone, a file of the wrong length is refused with "System
|
|
file %s is the wrong size", and an empty slot ends in "FATAL: Could not load
|
|
system files." It carries neither the firmware editor's
|
|
nds_firmware_modified.bin nor game_database_user.xml. The root also serves
|
|
game_database.xml, usrcheat.dat, microphone/<game>.wav then
|
|
microphone/microphone.wav, scripts/<game>.lua then scripts/default.lua,
|
|
cheats/<game>.cht, slot2/<game>.gba, drastic_dldi.img for homebrew and the
|
|
drastic_logo_<n>.raw splash. The functions are unnamed and are matched to
|
|
their r2.5.2.2 names by the strings and calls they share: FUN_fbd0 is
|
|
load_system_file, FUN_1e7e0 initialize_memory, FUN_10920 initialize_system,
|
|
FUN_84640 initialize_gamecard, FUN_86cf0 initialize_game_database, FUN_94650
|
|
load_cheat_directory, FUN_81720 reset_spu, FUN_839d0 load_nds, FUN_951e0
|
|
load_custom_cheats, FUN_82c50 gamecard_load_gba, FUN_82480
|
|
gamecard_initialize_homebrew and FUN_93360 load_logo.
|
|
ref: drastic r2.5.2.0 FUN_fbd0 0xfc18-0xfd04, drastic r2.5.2.0 FUN_1e7e0 0x1ed78-0x1ef6c,
|
|
drastic r2.5.2.0 FUN_10920 0x10ab8-0x10b84, drastic r2.5.2.0 FUN_84640 0x84678-0x846d0,
|
|
drastic r2.5.2.0 FUN_81720 0x819c8-0x81a78, drastic r2.5.2.0 FUN_839d0 0x83c30-0x83cd0,
|
|
drastic r2.5.2.0 FUN_951e0 0x952a4-0x952c4, drastic r2.5.2.0 FUN_82c50 0x82c98-0x82cdc,
|
|
drastic r2.5.2.0 FUN_82480 0x824f4-0x825ac, drastic r2.5.2.0 FUN_93360 0x933b8-0x93400
|
|
|
|
files:
|
|
- name: nds_bios_arm9.bin
|
|
path: system/nds_bios_arm9.bin
|
|
system: nintendo-ds
|
|
required: false
|
|
bundled: true
|
|
size: 4096
|
|
sha1: "bfaac75f101c135e32e2aaf541de6b1be4c8c62d"
|
|
md5: "a392174eb3e572fed6447e956bde4b25"
|
|
validation: [size]
|
|
description: "Nintendo DS ARM9 BIOS"
|
|
note: "First candidate for the ARM9 slot, before the free replacement. The hashes are those of the copy the repository ships."
|
|
source_ref: "drastic r2.5.2.0 FUN_1e7e0 0x1ed78-0x1ed94 (FUN_fbd0 of nds_bios_arm9.bin for 0x1000 bytes, failure branches to 0x1eea4), FUN_fbd0 0xfc18-0xfca4 (sprintf %s%csystem%c%s, fopen rb, fseek and ftell length compared to the requested size, fread), 0xfcec-0xfd04 (wrong size message, returns -1), FUN_10920 0x10ab8-0x10b84 (a negative return from FUN_1e7e0 draws the missing BIOS screen through FUN_93ae0, prints FATAL: Could not load system files. and quits)"
|
|
|
|
- name: drastic_bios_arm9.bin
|
|
sha1: 4dc29a1560e1cbd7afef1998f7a6c25c5db1cc3a
|
|
md5: 5f34f9f6108f8d57fc26789b7a7ecf82
|
|
path: system/drastic_bios_arm9.bin
|
|
system: nintendo-ds
|
|
required: false
|
|
bundled: true
|
|
size: 4096
|
|
validation: [size]
|
|
description: "DraStic free ARM9 BIOS replacement"
|
|
source_ref: "drastic r2.5.2.0 FUN_1e7e0 0x1eea4-0x1eec8 (logs Can't find Nintendo ARM9 BIOS, then FUN_fbd0 of drastic_bios_arm9.bin for 0x1000 bytes), 0x1eecc-0x1eeec (sets the free ARM9 bit), 0x1f160 (failure returns -1)"
|
|
|
|
- name: nds_bios_arm7.bin
|
|
path: system/nds_bios_arm7.bin
|
|
system: nintendo-ds
|
|
required: false
|
|
bundled: true
|
|
size: 16384
|
|
sha1: "24f67bdea115a2c847c8813a262502ee1607b7df"
|
|
md5: "df692a80a5b1bc90728bc3dfc76cd948"
|
|
validation: [size]
|
|
description: "Nintendo DS ARM7 BIOS"
|
|
note: "First candidate for the ARM7 slot. The hashes are those of the copy the repository ships."
|
|
source_ref: "drastic r2.5.2.0 FUN_1e7e0 0x1ed9c-0x1edb8 (FUN_fbd0 of nds_bios_arm7.bin for 0x4000 bytes, failure branches to 0x1eefc), 0x1eed8-0x1eef8 (same load on the path that took the free ARM9 image)"
|
|
|
|
- name: drastic_bios_arm7.bin
|
|
sha1: 31ae916c85d012582c7cdf47de6943ac6778253b
|
|
md5: c259d5dd2d1a8e1f58eaa26c08efae45
|
|
path: system/drastic_bios_arm7.bin
|
|
system: nintendo-ds
|
|
required: false
|
|
bundled: true
|
|
size: 16384
|
|
validation: [size]
|
|
description: "DraStic free ARM7 BIOS replacement"
|
|
source_ref: "drastic r2.5.2.0 FUN_1e7e0 0x1eefc-0x1ef20 (logs the fallback message, then FUN_fbd0 of drastic_bios_arm7.bin for 0x4000 bytes), 0x1f160 (failure returns -1)"
|
|
|
|
- name: nds_firmware.bin
|
|
path: system/nds_firmware.bin
|
|
system: nintendo-ds
|
|
required: false
|
|
hle_fallback: true
|
|
bundled: true
|
|
size: 262144
|
|
sha1: "87dae2500e889737af51f4a5b5845770a62482f5"
|
|
md5: "3c704824663ce26b6a1ed4d85238ae5b"
|
|
validation: [size]
|
|
description: "Nintendo DS firmware"
|
|
note: "The hashes are those of the copy the repository ships."
|
|
source_ref: "drastic r2.5.2.0 FUN_1e7e0 0x1edc0-0x1eddc, 0x1ef30-0x1ef50 (FUN_fbd0 of nds_firmware.bin for 0x40000 bytes), 0x1ef54-0x1ef6c (on failure the region is zeroed and FUN_1e250 writes the firmware header, then the boot carries on)"
|
|
|
|
- name: game_database.xml
|
|
path: game_database.xml
|
|
system: nintendo-ds
|
|
required: false
|
|
bundled: true
|
|
category: game_data
|
|
size: 1610336
|
|
sha1: 7b84fef16d1d461a49c197709d174eb1ccd8f88d
|
|
description: "save type database, one entry per title"
|
|
source_ref: "drastic r2.5.2.0 FUN_84640 0x84678-0x846a0 (sprintf %s%cgame_database.xml, then FUN_86cf0), FUN_86cf0 0x86d18-0x86d30 (fopen rb), 0x87684-0x8769c (a failed open logs Error: could not load game database file and returns)"
|
|
|
|
- name: usrcheat.dat
|
|
path: usrcheat.dat
|
|
system: nintendo-ds
|
|
required: false
|
|
bundled: true
|
|
category: game_data
|
|
size: 13739796
|
|
sha1: 6dd1a5399403f39620061556d61f5c6f6c704219
|
|
description: "Action Replay cheat library"
|
|
source_ref: "drastic r2.5.2.0 FUN_84640 0x846a8-0x846d0 (sprintf %s%cusrcheat.dat, then FUN_94650), FUN_94650 0x94680-0x9468c (fopen rb), 0x946cc-0x94704 (header read, Invalid cheat database header and close on a mismatch)"
|
|
|
|
- name: microphone.wav
|
|
path: microphone/microphone.wav
|
|
system: nintendo-ds
|
|
required: false
|
|
bundled: true
|
|
category: game_data
|
|
size: 1323090
|
|
sha1: ea9281c65ea39c9d1061a05b8b15d9a44f92918e
|
|
description: "default fake microphone input"
|
|
note: "Played when the game asks for the microphone and no microphone/<game>.wav exists."
|
|
source_ref: "drastic r2.5.2.0 FUN_81720 0x81a40-0x81a78 (sprintf %s%cmicrophone%cmicrophone.wav, FUN_7f220 loads it, Loaded default fake microphone audio file), FUN_7f220 0x7f250-0x7f28c (fopen rb, length by fseek and ftell)"
|
|
|
|
- name: "<game>.wav"
|
|
path: "microphone/<game>.wav"
|
|
system: nintendo-ds
|
|
required: false
|
|
category: game_data
|
|
description: "per-title fake microphone input"
|
|
note: "Tried before microphone.wav and named after the running title."
|
|
source_ref: "drastic r2.5.2.0 FUN_81720 0x819c8-0x81a0c (sprintf %s%cmicrophone%c%s.wav, FUN_7f220 loads it, Loaded game specific fake microphone audio file)"
|
|
|
|
- name: "<game>.lua"
|
|
path: "scripts/<game>.lua"
|
|
required: false
|
|
category: game_data
|
|
description: "per-title Lua script"
|
|
note: "Tried before default.lua and named after the running title."
|
|
source_ref: "drastic r2.5.2.0 FUN_839d0 0x83c30-0x83c8c (sprintf %s%c%s%c%s.%s with scripts and lua, Attempting to load lua script, FUN_99850), FUN_99850 0x99884 (luaL_loadfilex of the path), 0x998a4 (lua_pcallk)"
|
|
|
|
- name: default.lua
|
|
path: scripts/default.lua
|
|
required: false
|
|
category: game_data
|
|
unsourceable: "script the user writes against the built-in Lua 5.3 interpreter"
|
|
description: "fallback Lua script"
|
|
note: "Loaded when no per-title script answers."
|
|
source_ref: "drastic r2.5.2.0 FUN_839d0 0x83ca4-0x83cd8 (sprintf %s%c%s%cdefault.%s, then FUN_99850, which hands it to luaL_loadfilex at 0x99884)"
|
|
|
|
- name: "<game>.cht"
|
|
path: "cheats/<game>.cht"
|
|
system: nintendo-ds
|
|
required: false
|
|
category: game_data
|
|
description: "custom cheat file"
|
|
note: "Read on top of the entries usrcheat.dat holds and written back when a cheat is toggled. Absent, the message No custom cheat file is logged."
|
|
source_ref: "drastic r2.5.2.0 FUN_951e0 0x952a4-0x952e0 (sprintf %s%ccheats%c%s.cht, fopen rb, No custom cheat file at %s), FUN_957e0 0x95824-0x95850 (same path opened wb)"
|
|
|
|
- name: "<game>.gba"
|
|
path: "slot2/<game>.gba"
|
|
system: nintendo-ds
|
|
required: false
|
|
category: game_data
|
|
unsourceable: "Game Boy Advance cartridge the title reads for bonus content"
|
|
description: "slot 2 cartridge image"
|
|
note: "Loaded into the slot 2 cart window, with its save read from slot2/<game>.sav beside it."
|
|
source_ref: "drastic r2.5.2.0 FUN_82c50 0x82c98-0x82cdc (snprintf %s%cslot2%c%s.gba, fopen rb), 0x82d08-0x82d6c (length by fseek and ftell, read whole), 0x82dd0-0x82dec (slot2/<game>.sav opened rb)"
|
|
|
|
- name: drastic_dldi.img
|
|
path: drastic_dldi.img
|
|
system: nintendo-ds
|
|
required: false
|
|
category: game_data
|
|
unsourceable: "FAT image the user builds for the emulated flashcart"
|
|
description: "R4 flashcart disk image"
|
|
note: "Opened read-write when a homebrew title is recognised and mounted as the fat:/ device. Absent, the error is logged and the title runs without a card."
|
|
source_ref: "drastic r2.5.2.0 FUN_82480 0x824a4-0x824cc (Homebrew recognized), 0x824f4-0x82518 (sprintf %s%cdrastic_dldi.img, open O_RDWR), 0x825a4-0x825b0 (perror Couldn't load drastic_dldi.img, then carries on)"
|
|
|
|
- name: drastic_logo_0.raw
|
|
path: drastic_logo_0.raw
|
|
required: false
|
|
category: game_data
|
|
size: 120000
|
|
validation: [size]
|
|
description: "boot splash, first of two"
|
|
note: "Read from the root in one 120000 byte request, so a shorter file is rejected. The index is the low bit of the time and a missing file skips the splash. The repository ships neither."
|
|
source_ref: "drastic r2.5.2.0 FUN_93360 0x93398-0x933d8 (index time() & 1, sprintf %s%cdrastic_logo_%d.raw, fopen rb), 0x933e0-0x93410 (fread of 0x1d4c0 bytes as one item, buffer freed when the read falls short)"
|
|
|
|
- name: drastic_logo_1.raw
|
|
path: drastic_logo_1.raw
|
|
required: false
|
|
category: game_data
|
|
size: 120000
|
|
validation: [size]
|
|
description: "boot splash, second of two"
|
|
note: "Same read as index 0."
|
|
source_ref: "drastic r2.5.2.0 FUN_93360 0x93398-0x933d8, 0x933e0-0x93410"
|