mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-11 12:33:53 -06:00
fix: read the SSF BIOS rules from SSF.exe
Readme claims give way to the boot routine of SSF.exe R38: the Saturn BIOS must read 0x80000 bytes, a failed read or NoBIOS falls back to the embedded boot ROM, so the BIOS is optional with an HLE fallback, and ST-V reads its EPROM whatever NoBIOS says.
This commit is contained in:
1 parent
95bb3ab127
commit
302994d209
1 file changed
+30
-21
+30
-21
@@ -29,35 +29,43 @@ notes: |
|
||||
emulator is the 64-bit SSF.exe and which is cited by virtual address, and the
|
||||
Android build SSF_AndroidVer.zip of 2022-08-07, package
|
||||
com.xrea.g2.aaaaaaaa.ssf, whose lib/arm64-v8a/libnative-lib.so keeps its 40738
|
||||
dynamic symbols and which is cited by symbol. Prose references name the
|
||||
Japanese documentation shipped in Document/.
|
||||
dynamic symbols and which is cited by symbol.
|
||||
|
||||
Every path below is stored in full in SSF.ini and picked through a file dialog
|
||||
filtered on "all files (*.*)". SSF fixes no filename and no directory for any
|
||||
of them and looks for none, so the names used here are the dumps that fill
|
||||
each slot rather than names the code searches.
|
||||
|
||||
Saturn BIOS, [Peripheral] SaturnBIOS. Readme.txt describes the image as the
|
||||
console address range 00000000-0007FFFF and states that the filename is free.
|
||||
Neither a length nor a hash is compared against the file. The one routine that
|
||||
walks the 512 KiB BIOS area is CStateSaveBase::_GetBIOSHash, which folds it
|
||||
into the checksum pair that tags a save state.
|
||||
Saturn BIOS, [Peripheral] SaturnBIOS. The boot routine at 0xae0950 opens the
|
||||
configured path with fopen "rb" and succeeds only when fread returns 0x80000
|
||||
bytes (0xa61f70), so a shorter file fails and a longer one is cut at 512 KiB.
|
||||
No hash is compared against the file. The one routine that walks the 512 KiB
|
||||
BIOS area is CStateSaveBase::_GetBIOSHash, which folds it into the checksum
|
||||
pair that tags a save state.
|
||||
|
||||
Running without it is a supported mode, [Program4] NoBIOS. SSF carries a boot
|
||||
ROM of its own, an embedded program with the SYS_* system calls and the
|
||||
interrupt vectors, and in that mode the backup library is always hooked.
|
||||
Readme.txt records lower compatibility and advises supplying a BIOS.
|
||||
Running without it is a supported mode, [Program4] NoBIOS, inverted by holding
|
||||
Ctrl at launch (GetAsyncKeyState(VK_CONTROL) at 0xae0cf3, applied at
|
||||
0xae0d9b-0xae0da7). A failed read leads to the same state: the BIOS present
|
||||
flag is cleared (0xae0e95, published at 0xaccc46-0xaccc50) and the setup at
|
||||
0xa7cfa3-0xa7cfbc passes its negation to the embedded boot ROM, a program with
|
||||
the SYS_* system calls and the interrupt vectors decompressed into the BIOS
|
||||
area (0xa756c0), and to the ST-V system call layer (0xa77630).
|
||||
|
||||
ST-V is entered by holding left Shift at launch. [Peripheral] STVBIOS names
|
||||
the motherboard EPROM, and both the option reference and the No BIOS entry of
|
||||
Readme.txt state that ST-V does not run without it.
|
||||
ST-V is entered by holding left Shift at launch or by a command-line ROM whose
|
||||
extension is zip (GetAsyncKeyState(VK_LSHIFT) at 0xae0c08, extension compare
|
||||
at 0xae0c9d-0xae0ce0). [Peripheral] STVBIOS names the motherboard EPROM. In
|
||||
that mode the EPROM is read whatever NoBIOS says (0xae0db4-0xae0e63), and an
|
||||
image carrying SEGA ST-V(TITAN) at 0x500 is byte-swapped in 16-bit units
|
||||
(0xae0ea6-0xae0ef6). When it is missing the boot carries on with the BIOS
|
||||
present flag cleared, which arms STVSystemCall::Initialize (0xa77630, the 1
|
||||
MiB clear and table reset of the Android symbol) and writes its stub into the
|
||||
BIOS area.
|
||||
|
||||
ST-V cartridges are the game and are read from a ZIP: the loader takes the
|
||||
extension of each member as its IC number, accepts 1 through 13, byte-swaps
|
||||
every mask ROM in 16-bit units, doubles each byte of the IC13 EPROM across the
|
||||
16-bit bus, then mirrors each chip over its window. IC7 and IC13 are
|
||||
exclusive. STV_ROM.html gives the same layout and notes that MAME ROM sets fit
|
||||
once the extensions are changed.
|
||||
exclusive.
|
||||
|
||||
Cheat scripts live in Cheat/ under the disc product number. Six ship with the
|
||||
emulator and the memory cheat dialog writes more.
|
||||
@@ -82,7 +90,7 @@ files:
|
||||
size: 524288
|
||||
description: "Saturn BIOS"
|
||||
note: "Any dump of the 512 KiB console ROM, the compatible machines included. Area code is chosen by [Peripheral] Areacode and AutoAreacode, not by the image, so no region selects this file. Each alias labels one of those dumps: mpr-17933.bin, sega_100.bin, sega_100a.bin, sega1003.bin, hisaturn.bin and vsaturn.bin."
|
||||
source_ref: "SSF.exe 0x43d770 (SaturnBIOS 0x129b1f8), SSF.exe 0x129a2f8 with the filter at 0x129a310, SSF.exe 0x43ff96 (NoBIOS 0x129b4cc), libnative-lib.so SSF::CStateSaveBase::_GetBIOSHash 0x134b8ec-0x134b924, SSF-archive Document/Readme.txt BIOSファイルについて"
|
||||
source_ref: "SSF.exe 0x43d770 (SaturnBIOS 0x129b1f8), SSF.exe 0x129a2f8 with the filter at 0x129a310, SSF.exe 0x43ff96 (NoBIOS 0x129b4cc), SSF.exe 0xae0950 0xae0e4b-0xae0e95 (path chosen, read of 0x80000 bytes through 0xa61f70), SSF.exe 0xa61f70 0xa61fad-0xa6200e (fopen rb, fread count compared to the size), libnative-lib.so SSF::CStateSaveBase::_GetBIOSHash 0x134b8ec-0x134b924"
|
||||
|
||||
- name: "epr-20091.ic8"
|
||||
aliases:
|
||||
@@ -98,19 +106,20 @@ files:
|
||||
- epr-17741a.ic8
|
||||
- epr-17742a.ic8
|
||||
system: sega-stv
|
||||
required: true
|
||||
required: false
|
||||
hle_fallback: true
|
||||
size: 524288
|
||||
description: "ST-V BIOS"
|
||||
note: "Loose 512 KiB EPROM image, read outside the cartridge ZIP. Any of the board revisions is accepted, the code branching on none of them."
|
||||
source_ref: "SSF.exe 0x43d91f (STVBIOS 0x129b218), SSF.exe 0x129a328, SSF-archive Document/Readme.txt ST-V BIOS option, SSF-archive Document/Readme.txt No BIOS option"
|
||||
source_ref: "SSF.exe 0x43d91f (STVBIOS 0x129b218), SSF.exe 0x129a328, SSF.exe 0xae0950 0xae0db4-0xae0e93 (ST-V mode reads this path through 0xa61f70 whatever NoBIOS says), 0xae0ea6-0xae0ef6 (SEGA ST-V(TITAN) compare, 16-bit swap), 0xa7cfa3-0xa7cfbc (BIOS absent passed to STVSystemCall::Initialize 0xa77630)"
|
||||
|
||||
- name: "<cartridge>.bin"
|
||||
system: sega-saturn
|
||||
required: false
|
||||
category: game_data
|
||||
description: "cartridge image mapped at A-Bus CS0"
|
||||
note: "[Peripheral] DataCartridge, gated by DataCartridgeEnable and off by default. SSF reads the file at the configured path into the 32 MiB A-Bus CS0 window and identifies it in no way. The dumps that belong there are the two Saturn ROM carts, mpr-18811-mx.ic1 for The King of Fighters '95 and mpr-19367-mx.ic1 for Ultraman. Readme.txt records the option as unverified."
|
||||
source_ref: "SSF.exe 0x43e26b (DataCartridge 0x1298838), SSF.exe 0x43e178 (DataCartridgeEnable 0x1298820), SSF.exe 0x129a340, SSF.exe 0x916e5e-0x916e84, SSF-archive Document/Readme.txt Data Cartridge option"
|
||||
note: "[Peripheral] DataCartridge, gated by DataCartridgeEnable and off by default. SSF reads the file at the configured path into the 32 MiB A-Bus CS0 window and identifies it in no way. The dumps that belong there are the two Saturn ROM carts, mpr-18811-mx.ic1 for The King of Fighters '95 and mpr-19367-mx.ic1 for Ultraman."
|
||||
source_ref: "SSF.exe 0x43e26b (DataCartridge 0x1298838), SSF.exe 0x43e178 (DataCartridgeEnable 0x1298820), SSF.exe 0x129a340, SSF.exe 0x916e5e-0x916e84"
|
||||
|
||||
- name: "<name>.cht"
|
||||
path: "Cheat/<product id>/<name>.cht"
|
||||
|
||||
Reference in new issue
Block a user