mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-26 10:19:47 -04:00
b8adb758d2
Writes down the contract before implementing it, because one part is a behaviour change someone would otherwise file as a bug. The rule: no BIOS chosen -> OpenBIOS; a BIOS the player explicitly chose -> that BIOS. A developer can require retail for a title with a verified OpenBIOS incompatibility via [runtime] openbios = false. "Chosen" means --bios or a launcher/settings pick, and nothing else. Today resolve_bios_path() also searches directories near the executable, so a stray SCPH1001.BIN would silently win even though the player never asked — making behaviour depend on what happens to be on disk. Discovery stops being a selection mechanism. Also recorded: why both BIOSes are compiled into one binary (a build flavour per BIOS needed the same choice restated in three places that nothing cross-checked, and it compiled cleanly when they disagreed); why that is affordable (game C is byte-identical across profiles — verified on Tomba!, Tomba! 2 and Ape Escape — so only the BIOS is duplicated, and the two collide on just 22 symbols); that the developer setting is not player-overridable; and that savestates are BIOS-specific and must be refused across BIOSes, which is the one silent-corruption risk here. README gets a player-facing version: you probably don't need a BIOS, here's how to use your own, saves work either way, savestates don't mix. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>