Files
libretro/emulators/gopher2600.yml
T

181 lines
7.8 KiB
YAML

emulator: Gopher2600
type: standalone
core_classification: other
source: "https://github.com/JetSetIlly/Gopher2600"
upstream: "https://github.com/JetSetIlly/Gopher2600"
profiled_date: "2026-08-08"
source_commit: "6bfd0abeb61ff109e3e354efad8274da1ac629d6"
core_version: "v0.57.0"
display_name: "Atari - 2600 (Gopher2600)"
cores:
- gopher2600
systems:
- atari-2600
mode: standalone
notes: |
Atari 2600 emulator written in Go. The 6507, TIA and RIOT are emulated in
software and the console needs no ROM of its own, so a plain cartridge boots
with nothing supplied.
Supercharger emulation is the only path that reads a BIOS. NewSupercharger
branches three ways (supercharger.go:93-119). A tape held as WAV or MP3 sets
Loader.IsSoundData and calls loadBIOS, and the error is returned, so the
cartridge fails to attach without the file. A demo unit image calls loadBIOS
and substitutes fastloadOnlyBIOS() on failure. Everything else, including the
usual Supercharger BIN, takes fastloadOnlyBIOS() without ever looking for the
file: a 2048 byte stub holding a touch of the tape load register and the CPU
jump table (bios.go:151-166).
loadBIOS reads the current working directory, then the directory holding the
tape or BIN, then the configuration directory (bios.go:53-116). Each candidate
name is tried in turn and the content is gated on MD5 before the caller checks
the 2048 byte length, so a file under the right name with the wrong content is
refused. ReqSpec selects the PAL table and the PAL hash (bios.go:56-59);
ReqSpec comes from the television specification, the stella.pro entry or the
filename (cartridgeloader/loader.go:194-201).
The demo unit is recognised by MD5 of the 256 bytes at 0x300 of the loaded
image (demounit.go:58,78). When that image carries more than 2048 bytes it
holds the Schweber chip and the carousel together; otherwise the eight ROMs
are read from the directory of the loaded file (demounit_controller.go:
178-200). A read error or a length other than 8192 logs and returns nil, and
the peripheral is left unplugged.
stella.pro is Stella's cartridge properties database, read from the
configuration directory (properties.go:28,48-58). It is loaded by
NewDebugger (debugger.go:356), which drives play as well as debug
(gopher2600.go:261,307,326), so it applies to the plain `gopher2600 <rom>`
invocation. A missing file is logged and start-up continues; the ROM selector
then falls back to the filename and no television specification is inferred
from the cartridge name.
The ROM selector also reads a Named_Boxarts directory from the configuration
directory, listing it at start-up and fuzzy matching the cartridge name
against the entries before reading one image (win_rom_select.go:92,127-138,
678-689). It holds the box art of the libretro-thumbnails Atari 2600 set,
pinned upstream at commit 4ea759821724d6c7bcf2f46020d79fc4270ed2f6
(win_rom_select.go:91). Its content is whatever the user copies in and no
name is fixed by the code, so it carries no file entry here.
Fonts, shaders, bevels, the CPU instruction table and the Movie Cart core are
compiled in with go:embed. The remaining paths under the configuration
directory are written by the emulator or authored by hand: preferences,
debugger_imgui.ini, managerState, managerHotkeys, savekey, fa2_nvram,
elf_nvram, regression, patches and setupDB. ARM map files and DWARF sources
are read from a project build tree beside the ROM. AtariVox speech calls the
festival binary as a process, with the path taken from preferences
(atarivox_preferences.go:51).
files:
- name: "Supercharger BIOS.bin"
system: atari-2600
aliases:
- "Supercharger.BIOS.bin"
- "Supercharger_BIOS.bin"
- "supercharger_bios.bin"
- "SUPERCHARGER_BIOS.bin"
required: false
hle_fallback: true
size: 2048
md5: "4565c1a7abce773e53c75b35414adefd"
validation: [size, md5]
description: "Starpath Supercharger BIOS, required to load a tape held as WAV or MP3"
source_ref: "hardware/memory/cartridge/supercharger/bios.go:30-36,45,53-116,141"
- name: "Supercharger BIOS PAL.bin"
system: atari-2600
aliases:
- "Supercharger_BIOS_PAL.bin"
- "SUPERCHARGER_BIOS_PAL.bin"
required: false
hle_fallback: true
size: 2048
md5: "4a8c743396b8ad69d97e6fd3dd3e3132"
validation: [size, md5]
description: "PAL Supercharger BIOS, selected when the loader resolves a PAL specification"
source_ref: "hardware/memory/cartridge/supercharger/bios.go:38-42,46,56-59,141"
- name: "Schweber OQ.bin"
system: atari-2600
required: false
size: 2048
md5: "0a98bc3d53a0965de87fc77377b5a0db"
validation: [md5]
description: "Schweber chip image, the load that turns the Supercharger into the demo unit"
note: >-
Recognised by the MD5 of the 256 bytes at 0x300, so the name is the one the
dump carries rather than one the code fixes. The carousel ROMs are only
read once this image has been accepted.
source_ref: "hardware/memory/cartridge/supercharger/demounit.go:56-78, hardware/memory/cartridge/supercharger/supercharger.go:107,115, hardware/memory/cartridge/fingerprint.go:333"
- name: "Starpath Demonstration Unit 1P.bin"
system: atari-2600
required: false
size: 8192
validation: [size]
description: "Demo unit carousel ROM 1, read from the directory of the loaded image"
source_ref: "hardware/memory/cartridge/supercharger/demounit_controller.go:37-46,178-200"
- name: "Starpath Demonstration Unit 2P.bin"
system: atari-2600
required: false
size: 8192
validation: [size]
description: "Demo unit carousel ROM 2, read from the directory of the loaded image"
source_ref: "hardware/memory/cartridge/supercharger/demounit_controller.go:37-46,178-200"
- name: "Starpath Demonstration Unit 3P.bin"
system: atari-2600
required: false
size: 8192
validation: [size]
description: "Demo unit carousel ROM 3, read from the directory of the loaded image"
source_ref: "hardware/memory/cartridge/supercharger/demounit_controller.go:37-46,178-200"
- name: "Starpath Demonstration Unit 4P.bin"
system: atari-2600
required: false
size: 8192
validation: [size]
description: "Demo unit carousel ROM 4, read from the directory of the loaded image"
source_ref: "hardware/memory/cartridge/supercharger/demounit_controller.go:37-46,178-200"
- name: "Starpath Demonstration Unit 5P.bin"
system: atari-2600
required: false
size: 8192
validation: [size]
description: "Demo unit carousel ROM 5, read from the directory of the loaded image"
source_ref: "hardware/memory/cartridge/supercharger/demounit_controller.go:37-46,178-200"
- name: "Starpath Demonstration Unit 6P.bin"
system: atari-2600
required: false
size: 8192
validation: [size]
description: "Demo unit carousel ROM 6, read from the directory of the loaded image"
source_ref: "hardware/memory/cartridge/supercharger/demounit_controller.go:37-46,178-200"
- name: "Starpath Demonstration Unit 7P.bin"
system: atari-2600
required: false
size: 8192
validation: [size]
description: "Demo unit carousel ROM 7, read from the directory of the loaded image"
source_ref: "hardware/memory/cartridge/supercharger/demounit_controller.go:37-46,178-200"
- name: "Starpath Demonstration Unit 8P.bin"
system: atari-2600
required: false
size: 8192
validation: [size]
description: "Demo unit carousel ROM 8, read from the directory of the loaded image"
source_ref: "hardware/memory/cartridge/supercharger/demounit_controller.go:37-46,178-200"
- name: "stella.pro"
system: atari-2600
required: false
description: "Stella cartridge properties database, keyed by cartridge MD5"
source_ref: "properties/properties.go:28,48-58; debugger/debugger.go:356"