{
  "commit": "d38cd580364b2c788e633b9e51c15e1668f726c0",
  "count": 1,
  "generated_at": "2026-11-03T13:36:34Z",
  "items": [
    {
      "id": "pokemini",
      "profile": {
        "core_classification": "community_fork",
        "core_version": "v0.60",
        "cores": [
          "pokemini"
        ],
        "display_name": "Nintendo - Pokemon Mini (PokeMini)",
        "emulator": "PokeMini",
        "files": [
          {
            "description": "Pokemon Mini official BIOS",
            "hle_fallback": true,
            "name": "bios.min",
            "note": "Mapped at $000000-$000FFF (4 KB). Read via Hardware.c:144-145. Falls back to embedded FreeBIOS if missing.",
            "required": false,
            "size": 4096,
            "source_ref": "source/PokeMini.c:189-206 (PokeMini_LoadBIOSFile), libretro/libretro.c:565 (path)",
            "system": "nintendo-pokemon-mini"
          }
        ],
        "notes": "PokeMini is a Pokemon Mini handheld emulator ported to libretro.\n\nThe core has an embedded FreeBIOS (open-source replacement) compiled\ndirectly into the binary from freebios/freebios.c. This means the\nreal BIOS is never strictly required -- games will run with FreeBIOS\nalone, though compatibility may differ from the original firmware.\n\nBIOS loading sequence in the libretro port:\n\n1. PokeMini_Create() clears PM_BIOS (4096 bytes at $000000-$000FFF),\n   then loads FreeBIOS into it via memcpy (source/PokeMini.c:116).\n   PokeMini_FreeBIOS is set to 1.\n\n2. retro_load_game() calls PokeMini_Reset(0) after loading the ROM.\n\n3. PokeMini_Reset() checks forcefreebios (hardcoded to 0 in the\n   libretro port, libretro.c:499). Since FreeBIOS is currently loaded\n   and forcefreebios is 0, it enters the real-BIOS path\n   (source/PokeMini.c:503-508):\n     - Reloads FreeBIOS as a safety fallback\n     - Checks if CommandLine.bios_file exists on disk\n     - If found, overwrites PM_BIOS with the real BIOS via\n       PokeMini_LoadBIOSFile(), sets PokeMini_FreeBIOS to 0\n\n4. If bios.min is missing, FreeBIOS stays loaded and emulation\n   proceeds normally.\n\nFile path construction (libretro.c:565):\n  sprintf(CommandLine.bios_file, \"%s%cbios.min\", g_system_dir, slash)\nThe core looks for bios.min directly in the system directory root,\nno subdirectory.\n\nThere is no core option to toggle FreeBIOS in the libretro port.\nThe standalone PokeMini has a forcefreebios setting, but the libretro\nwrapper hardcodes it to 0 (always prefer real BIOS when available).\n\nFreeBIOS (freebios/freebios.min) is 4096 bytes, a clean-room\nreimplementation. It is NOT the official Nintendo Pokemon Mini BIOS.\n",
        "platform_details": {
          "bios_mapping": {
            "note": "PM_BIOS is a 4096-byte array. CPU reads from address range\n$000000-$000FFF are served directly from this buffer. The BIOS\nhandles interrupt vectors, hardware init, and the startup logo.\n",
            "source_ref": "source/PokeMini.h:38, source/Hardware.c:144-145",
            "target": "$000000-$000FFF in Pokemon Mini address space (4 KB)"
          },
          "freebios_fallback": {
            "freebios_hashes": {
              "md5": "d6c3ff5abc88f7c42f1a5edd6889f9cf",
              "sha1": "b40421defb005e836913e4e39dc1a18aa3b8887e",
              "size": 4096
            },
            "note": "FreeBIOS is a 4096-byte open-source replacement embedded in the\nbinary as a C array. It provides basic interrupt vectors and\nstartup code. Loaded by default at PokeMini_Create() and used\nas fallback when bios.min is not found on disk.\n",
            "source_ref": "freebios/freebios.c, source/PokeMini.c:209-214"
          },
          "load_priority": {
            "note": "During PokeMini_Reset(), the core first reloads FreeBIOS as a\nsafe baseline, then attempts to load bios.min from disk. If\nthe file exists and is exactly 4096 bytes, it replaces FreeBIOS.\nThe forcefreebios flag (hardcoded 0 in libretro) controls this:\nwhen 0, the core always prefers real BIOS over FreeBIOS.\n",
            "source_ref": "source/PokeMini.c:500-509"
          }
        },
        "profiled_date": "2026-03-24",
        "source": "https://github.com/libretro/PokeMini",
        "source_commit": "132111b76343559860532a1ccc094f93f1ed5650",
        "systems": [
          "nintendo-pokemon-mini"
        ],
        "type": "libretro",
        "upstream": "https://sourceforge.net/projects/pokemini/",
        "version_basis": {
          "kind": "file",
          "path": "libretro/libretro.c",
          "pattern": "info->library_version\\s+=\\s+\"([^\"]+)"
        }
      }
    }
  ],
  "kind": "emulators",
  "schema_version": 1
}
