{
  "commit": "d38cd580364b2c788e633b9e51c15e1668f726c0",
  "count": 1,
  "generated_at": "2026-11-03T13:36:34Z",
  "items": [
    {
      "id": "gearcoleco",
      "profile": {
        "core_classification": "official_port",
        "core_version": "1.7.4-35-gbe1a371",
        "cores": [
          "gearcoleco"
        ],
        "display_name": "Coleco - ColecoVision / ADAM (Gearcoleco)",
        "emulator": "Gearcoleco",
        "files": [
          {
            "aliases": [
              "coleco.rom",
              "os7.u2"
            ],
            "crc32": "3aa93ef3",
            "description": "ColecoVision OS-7 BIOS",
            "name": "colecovision.rom",
            "note": "Loaded for both machines. Any 8192-byte image is accepted, and a CRC32 other than 3aa93ef3 logs \"Unknown OS-7 revision\" and runs. PAL timing comes from the byte patched at 0x69, not from a PAL dump.\n",
            "required": true,
            "size": 8192,
            "source_ref": "platforms/libretro/libretro.cpp:779-840 (find_firmware), platforms/libretro/libretro.cpp:858-885 (load_colecovision_firmware), platforms/libretro/libretro.cpp:2453-2457, platforms/libretro/libretro.cpp:2258-2259, src/Adam.cpp:28-31, src/Adam.h:52, src/Memory.cpp:310-319, src/Memory.cpp:246-249",
            "system": "colecovision",
            "validation": [
              "size",
              "crc32"
            ]
          },
          {
            "crc32": "05a37a34",
            "description": "ADAM EOS (Elementary Operating System) ROM",
            "name": "eos.rom",
            "note": "The 8 KiB EOS bank, the first half of the 16 KiB u22 chip. A CRC32 other than 05a37a34 logs \"Unknown EOS revision\" and runs. Only the ADAM needs it: ColecoVision cartridges load without it.\n",
            "required": true,
            "size": 8192,
            "source_ref": "platforms/libretro/libretro.cpp:887-948 (load_adam_firmware), platforms/libretro/libretro.cpp:2426-2427, platforms/libretro/libretro.cpp:2483-2487, platforms/libretro/libretro.cpp:2500-2501, platforms/libretro/libretro.cpp:2584-2588, src/Adam.cpp:32-35, src/Adam.h:53, src/Adam.cpp:137-146, src/Adam.cpp:166-188, src/GearcolecoCore.cpp:414-419, src/Adam.cpp:519-522",
            "system": "coleco-adam",
            "validation": [
              "size",
              "crc32"
            ]
          },
          {
            "aliases": [
              "wp.rom",
              "wp_r80.rom"
            ],
            "crc32": "58d86a2a",
            "description": "ADAM SmartWriter word processor ROM",
            "name": "writer.rom",
            "note": "A CRC32 other than 58d86a2a logs \"Unknown SmartWriter revision\" and runs. Only the ADAM needs it: ColecoVision cartridges load without it.\n",
            "required": true,
            "size": 32768,
            "source_ref": "platforms/libretro/libretro.cpp:887-948 (load_adam_firmware), platforms/libretro/libretro.cpp:2426-2427, platforms/libretro/libretro.cpp:2483-2487, platforms/libretro/libretro.cpp:2500-2501, platforms/libretro/libretro.cpp:2584-2588, src/Adam.cpp:36-39, src/Adam.h:54, src/Adam.cpp:137-146, src/Adam.cpp:166-188, src/GearcolecoCore.cpp:414-419, src/Adam.cpp:513-522",
            "system": "coleco-adam",
            "validation": [
              "size",
              "crc32"
            ]
          }
        ],
        "notes": "ColecoVision and Coleco ADAM emulator by Ignacio Sanchez (drhelius). The\nlibretro port lives in the same repository. Three firmware roles are\ndeclared in kAdamFirmwareMetadata (src/Adam.cpp:26-40): OS-7, EOS and\nSmartWriter, each with a size, a CRC32 and its accepted file names.\n\nfind_firmware() (platforms/libretro/libretro.cpp:779-840) walks the\nfrontend system directory and then its gearcoleco subdirectory\n(platforms/libretro/libretro.cpp:793), trying every accepted name in each. A file whose size\ndiffers from the role's size is skipped with a warning (platforms/libretro/libretro.cpp:812-817).\nEvery candidate that passes is compared to the first one found: two\nvalid-sized images with different bytes are an ambiguous role and the load\nfails (platforms/libretro/libretro.cpp:826-833). CRC32 is computed after the search and only\nlogged when it differs from the table (platforms/libretro/libretro.cpp:873-876, 924-935).\n\nThe machine is chosen per load (platforms/libretro/libretro.cpp:2441-2443): .ddp, .dsk, a ZIP\nholding an ADAM image, an .m3u playlist, no content at all, or a cartridge\nwith the core option gearcoleco_cartridge_hardware set to ADAM start the\nADAM, and any other cartridge starts the ColecoVision. The \"adam\" subsystem\n(platforms/libretro/libretro.cpp:535-543) takes a cartridge, two disks and two data packs.\n\nColecoVision: load_colecovision_firmware() (platforms/libretro/libretro.cpp:858-885) needs OS-7\nand retro_load_game() returns false without it (platforms/libretro/libretro.cpp:2453-2457).\nIt runs again on retro_reset() (platforms/libretro/libretro.cpp:2258-2259). The image goes\nthrough Memory::LoadBiosFromBuffer() (src/Memory.cpp:310-319) and byte 0x69\nis patched on reset, 0x32 when the cartridge is PAL and 0x3C otherwise\n(src/Memory.cpp:246-249). The ADAM always gets 0x3C (src/Memory.cpp:221).\n\nADAM: load_adam_firmware() (platforms/libretro/libretro.cpp:887-948) needs all three roles and\nevery ADAM entry point returns false when one is missing (platforms/libretro/libretro.cpp:\n2427-2428, 2484-2488, 2501-2502, 2585-2589). Adam::LoadFirmware()\n(src/Adam.cpp:166-188) copies the three images, IsFirmwareReady()\n(src/Adam.cpp:137-146) gates StartAdam() (src/GearcolecoCore.cpp:414-419).\nThe MIOC maps SmartWriter over the lower 32 KiB with EOS replacing its\nlast 8 KiB bank when the control latch selects it, and OS-7 over the first\n8 KiB in cartridge mode (src/Adam.cpp:513-537).\n\nSave RAM, save states and IPS patches are read next to the content or in\nthe frontend save directory. They are state the core writes, not files a\nuser obtains.\n",
        "profiled_date": "2026-09-17",
        "source": "https://github.com/drhelius/Gearcoleco",
        "source_commit": "be1a3716d2db312c1add1639753258e365f2dfd4",
        "systems": [
          "colecovision",
          "coleco-adam"
        ],
        "type": "libretro",
        "upstream": "https://github.com/drhelius/Gearcoleco",
        "version_basis": {
          "distance": 35,
          "kind": "tag",
          "tag": "1.7.4"
        }
      }
    }
  ],
  "kind": "emulators",
  "schema_version": 1
}
