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)" }