Files
libretro/emulators/geargrafx.yml
2026-03-24 09:33:06 +01:00

92 lines
3.7 KiB
YAML

emulator: Geargrafx
type: libretro
core_classification: official_port
source: "https://github.com/drhelius/Geargrafx"
upstream: "https://github.com/drhelius/Geargrafx"
profiled_date: "2026-03-23"
core_version: "1.6.0"
display_name: "NEC - PC Engine / SuperGrafx / CD (Geargrafx)"
cores:
- geargrafx
systems:
- nec-pc-engine
- nec-supergrafx
- nec-pc-engine-cd
notes: |
Geargrafx is a PC Engine / TurboGrafx-16 / SuperGrafx / CD-ROM emulator by
Ignacio Sanchez (drhelius). HuCard games run without BIOS.
CD-ROM games require a System Card BIOS from the system directory. The core
option "geargrafx_cdrom_bios" selects which card: Auto (default, maps to
syscard3.pce), System Card 1, System Card 2, System Card 3, or Game Express.
load_bios() in libretro.cpp builds "{system_directory}/{filename}" and calls
core->LoadBios(path, true) for the syscard, then always attempts to load
gexpress.pce via core->LoadBios(path, false).
LoadBios() in media.cpp reads the file, strips a 512-byte header if present,
computes CRC32, and checks it against k_game_database entries flagged with
GG_GAMEDB_BIOS_SYSCARD or GG_GAMEDB_BIOS_GAME_EXPRESS. If the CRC32 is not
found, the BIOS is marked as "Unknown" and invalid, but loading still proceeds.
Size is checked against expected constants and logged if wrong, but not enforced.
Game Express CD-ROM games are auto-detected via CRC32 lookup in game_db.h
(GG_GAMEDB_GAME_EXPRESS flag). Arcade Card games are also detected from
game_db.h and enable extra 0x30000 bytes of Card RAM for Super CD-ROM mode.
files:
- name: "syscard3.pce"
description: "Super CD-ROM System Card 3.0"
size: 262144
required: true
validation: [size, crc32]
source_ref: "libretro.cpp:453,471-473, media.cpp:241-307, defines.h:52, game_db.h:50,52"
notes: >
Default BIOS for CD-ROM games (cdrom_bios Auto or System Card 3).
game_db.h recognizes Japan (CRC32 6D9A73EF) and USA (CRC32 2B5B75FE)
variants under the same filename.
- name: "syscard2.pce"
description: "CD-ROM System Card 2.0"
size: 262144
required: false
validation: [size, crc32]
source_ref: "libretro.cpp:452,462-463, media.cpp:241-307, game_db.h:48-49,51"
notes: >
cdrom_bios = 'System Card 2'. For older CD-ROM2 titles. game_db.h
recognizes three variants: v2.0 Japan (CRC32 52520BC6), v2.1 Japan
(CRC32 283B74E0), and USA (CRC32 FF2A5EC3).
- name: "syscard1.pce"
description: "CD-ROM System Card 1.0 (Japan)"
size: 262144
required: false
validation: [size, crc32]
source_ref: "libretro.cpp:451,459-460, media.cpp:241-307, game_db.h:47"
notes: >
cdrom_bios = 'System Card 1'. Very early CD-ROM2 games only.
CRC32 3F9F95A4.
- name: "gexpress.pce"
description: "Game Express CD Card"
size: 32768
required: false
validation: [size, crc32]
source_ref: "libretro.cpp:454,468-469,481-482, media.cpp:241-307, defines.h:53, game_db.h:53-54"
notes: >
Always loaded alongside the selected System Card BIOS (libretro.cpp:481).
Required for Game Express CD-ROM titles. game_db.h recognizes Blue Version
(CRC32 51A12D90) and Green Version (CRC32 16AAF05A).
valid_bios_crc32:
syscard:
- { crc32: "3F9F95A4", name: "CD-ROM System Card 1.0 (J)" }
- { crc32: "52520BC6", name: "CD-ROM System Card 2.0 (J)" }
- { crc32: "283B74E0", name: "CD-ROM System Card 2.1 (J)" }
- { crc32: "6D9A73EF", name: "Super CD-ROM System 3.0 (J)" }
- { crc32: "FF2A5EC3", name: "TurboGrafx CD System Card 2.0 (USA)" }
- { crc32: "2B5B75FE", name: "TurboGrafx CD Super System 3.0 (USA)" }
game_express:
- { crc32: "51A12D90", name: "Game Express Card Blue Version (J)" }
- { crc32: "16AAF05A", name: "Game Express Card Green Version (J)" }