{
  "count": 1,
  "generated_at": "2026-10-20T02:57:31Z",
  "items": [
    {
      "id": "eka2l1",
      "profile": {
        "core_classification": "community_fork",
        "core_version": "0.0.9",
        "cores": [
          "eka2l1"
        ],
        "display_name": "Nokia - Symbian / N-Gage (EKA2L1)",
        "emulator": "eka2l1",
        "files": [
          {
            "description": "Nokia N-Gage (NEM-4) firmware 4.03 ROM image, EKA1",
            "name": "SYM.ROM",
            "note": "An EKA1 image carrying sw.txt installs on its own: the libretro core picks it up from the firmware folder under any name ending in .rom and the standalone frontends take it through the device dialog. The installers copy it to roms/nem-4/SYM.ROM, the path the emulator opens whenever the device is selected. Every other phone model needs its own dump, an EKA2 image with its RPKG, or a VPL with its .fpsx images.",
            "path": "eka2l1/firmware/SYM.ROM",
            "required": true,
            "size": 18612224,
            "source_ref": {
              "libretro": "src/emu/libretro/src/main.cpp:92-110, src/emu/libretro/src/content.cpp:129-195, src/emu/libretro/src/main.cpp:173-181, src/emu/system/src/installation/rpkg.cpp:208-255",
              "standalone": "src/emu/system/src/epoc.cpp:1486-1494, src/emu/system/src/epoc.cpp:824-848, src/emu/system/include/system/consts.h:23-25, src/emu/system/src/installation/rpkg.cpp:44-68, src/emu/system/src/installation/rpkg.cpp:196-199, src/emu/qt/src/device_install_dialog.cpp:162-172"
            },
            "standalone_path": "data/roms/nem-4/SYM.ROM",
            "system": "ngage"
          },
          {
            "bundled": true,
            "description": "Export map routing audiooutputrouting.dll to the host",
            "mode": "standalone",
            "name": "audiooutputrouting.dll.map",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:411-415, src/emu/kernel/src/libmanager.cpp:505-556, cmake/Symbian.cmake:20-31, src/patch/CMakeLists.txt:6",
            "standalone_path": "patch/audiooutputrouting.dll.map"
          },
          {
            "bundled": true,
            "description": "Patched audiooutputrouting.dll, EKA2 versions",
            "mode": "standalone",
            "name": "audiooutputrouting_general.dll",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:540-556, src/emu/kernel/src/libmanager.cpp:586-590, src/patch/audiooutputrouting/group/audiooutputrouting.dll.map:1",
            "standalone_path": "patch/audiooutputrouting_general.dll"
          },
          {
            "bundled": true,
            "description": "Avkon FEP bridged to the host input method, copied over Z:\\sys\\bin\\avkonfep.dll on S60v3 FP1 and later",
            "mode": "standalone",
            "name": "avkonfep_general.dll",
            "required": false,
            "source_ref": "src/emu/qt/src/state.cpp:179-202, src/patch/CMakeLists.txt:5",
            "standalone_path": "patch/avkonfep_general.dll"
          },
          {
            "bundled": true,
            "description": "FEP bridged to the host input method for EKA1, routed to from hwrfep.fep on Symbian 7.0s",
            "mode": "standalone",
            "name": "avkonfep_v81a.dll",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:505-518, src/emu/kernel/src/libmanager.cpp:521-538, src/patch/avkonfep/group/hwrfep.fep.map:1, src/patch/avkonfep/group/hwrfep.fep.map:7-9, src/patch/CMakeLists.txt:5",
            "standalone_path": "patch/avkonfep_v81a.dll"
          },
          {
            "bundled": true,
            "description": "Export map for backlightctrl.dll, bound to the DLL UIDs it names",
            "mode": "standalone",
            "name": "backlightctrl.dll.map",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:411-415, src/emu/kernel/src/libmanager.cpp:453-469, src/patch/CMakeLists.txt:10",
            "standalone_path": "patch/backlightctrl.dll.map"
          },
          {
            "bundled": true,
            "description": "Patched backlightctrl.dll built for Symbian 8.1a, routed to on Symbian 6.1, 7.0s and 8.0a: the epoc81 section of the map matches no version name",
            "mode": "standalone",
            "name": "backlightctrl_v81a.dll",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:521-538, src/emu/kernel/src/libmanager.cpp:487-502, src/emu/common/src/types.cpp:140-141, src/patch/backlightctrl/group/backlightctrl.dll.map:1-5, src/patch/backlightctrl/group/backlightctrl.dll.map:17, src/patch/backlightctrl/group/backlightctrl.dll.map:29, src/patch/backlightctrl/group/backlightctrl.dll.map:41",
            "standalone_path": "patch/backlightctrl_v81a.dll"
          },
          {
            "bundled": true,
            "description": "Export map for the in-ROM commdb.dll of Symbian 6",
            "mode": "standalone",
            "name": "commdb.dll.map",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:411-415, src/emu/kernel/src/libmanager.cpp:453-469, src/patch/CMakeLists.txt:18",
            "standalone_path": "patch/commdb.dll.map"
          },
          {
            "bundled": true,
            "description": "Patched commdb.dll for Symbian 6",
            "mode": "standalone",
            "name": "commdb_v6.dll",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:521-538, src/patch/commdb/group/commdb.dll.map:1-7",
            "standalone_path": "patch/commdb_v6.dll"
          },
          {
            "bundled": true,
            "description": "Export map for ecam.dll, the camera API",
            "mode": "standalone",
            "name": "ecam.dll.map",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:411-415, src/emu/kernel/src/libmanager.cpp:505-556, src/patch/CMakeLists.txt:8",
            "standalone_path": "patch/ecam.dll.map"
          },
          {
            "bundled": true,
            "description": "Patched ecam.dll, EKA2 versions",
            "mode": "standalone",
            "name": "ecam_general.dll",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:540-556, src/emu/kernel/src/libmanager.cpp:586-590, src/patch/ecam/group/ecam.dll.map:1-4",
            "standalone_path": "patch/ecam_general.dll"
          },
          {
            "bundled": true,
            "description": "Global OOM monitor client, copied over Z:\\sys\\bin\\goommonitor.dll on S60v5 and later",
            "mode": "standalone",
            "name": "goommonitor_general.dll",
            "required": false,
            "source_ref": "src/emu/qt/src/state.cpp:179-202, src/patch/CMakeLists.txt:15",
            "standalone_path": "patch/goommonitor_general.dll"
          },
          {
            "bundled": true,
            "description": "Export map for hwrfep.fep on Symbian 7.0s, bound to the UIDs it names and served by avkonfep_v81a.dll through its source key",
            "mode": "standalone",
            "name": "hwrfep.fep.map",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:411-415, src/emu/kernel/src/libmanager.cpp:453-469, src/emu/kernel/src/libmanager.cpp:505-518, src/patch/avkonfep/group/hwrfep.fep.map:1-9, src/patch/CMakeLists.txt:5",
            "standalone_path": "patch/hwrfep.fep.map"
          },
          {
            "bundled": true,
            "description": "Export map for mediaclientaudio.dll, CMdaAudioPlayerUtility and friends",
            "mode": "standalone",
            "name": "mediaclientaudio.dll.map",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:411-415, src/emu/kernel/src/libmanager.cpp:505-556, src/patch/CMakeLists.txt:11",
            "standalone_path": "patch/mediaclientaudio.dll.map"
          },
          {
            "bundled": true,
            "description": "Patched mediaclientaudio.dll, EKA2 versions",
            "mode": "standalone",
            "name": "mediaclientaudio_general.dll",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:540-556, src/emu/kernel/src/libmanager.cpp:586-590, src/patch/mediaclientaudio/group/mediaclientaudio.dll.map:1-4",
            "standalone_path": "patch/mediaclientaudio_general.dll"
          },
          {
            "bundled": true,
            "description": "Patched mediaclientaudio.dll for Symbian 8.1a and earlier EKA1 releases",
            "mode": "standalone",
            "name": "mediaclientaudio_v81a.dll",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:521-538, src/patch/mediaclientaudio/group/mediaclientaudio.dll.map:428-431",
            "standalone_path": "patch/mediaclientaudio_v81a.dll"
          },
          {
            "bundled": true,
            "description": "Export map for mediaclientaudioinputstream.dll, served by the mediaclientaudiostream DLLs through its source key",
            "mode": "standalone",
            "name": "mediaclientaudioinputstream.dll.map",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:505-518, src/patch/mediaclientaudiostream/group/mediaclientaudioinputstream.dll.map:1",
            "standalone_path": "patch/mediaclientaudioinputstream.dll.map"
          },
          {
            "bundled": true,
            "description": "Export map for mediaclientaudiostream.dll",
            "mode": "standalone",
            "name": "mediaclientaudiostream.dll.map",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:411-415, src/emu/kernel/src/libmanager.cpp:505-556, src/patch/CMakeLists.txt:12",
            "standalone_path": "patch/mediaclientaudiostream.dll.map"
          },
          {
            "bundled": true,
            "description": "Patched mediaclientaudiostream.dll, EKA2 versions",
            "mode": "standalone",
            "name": "mediaclientaudiostream_general.dll",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:540-556, src/emu/kernel/src/libmanager.cpp:586-590, src/patch/mediaclientaudiostream/group/mediaclientaudiostream.dll.map:1",
            "standalone_path": "patch/mediaclientaudiostream_general.dll"
          },
          {
            "bundled": true,
            "description": "Patched mediaclientaudiostream.dll for Symbian 8.1a and earlier EKA1 releases",
            "mode": "standalone",
            "name": "mediaclientaudiostream_v81a.dll",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:521-538, src/patch/mediaclientaudiostream/group/mediaclientaudiostream.dll.map:1",
            "standalone_path": "patch/mediaclientaudiostream_v81a.dll"
          },
          {
            "bundled": true,
            "description": "Export map for mediaclientvideo.dll",
            "mode": "standalone",
            "name": "mediaclientvideo.dll.map",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:411-415, src/emu/kernel/src/libmanager.cpp:505-556, src/patch/CMakeLists.txt:13",
            "standalone_path": "patch/mediaclientvideo.dll.map"
          },
          {
            "bundled": true,
            "description": "Patched mediaclientvideo.dll, routed to from the epoc93fp1, epoc93fp2, epoc94 and epoc100 sections of the map",
            "mode": "standalone",
            "name": "mediaclientvideo_v100.dll",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:521-538, src/patch/mediaclientvideo/group/mediaclientvideo.dll.map:1, src/patch/mediaclientvideo/group/mediaclientvideo.dll.map:168, src/patch/mediaclientvideo/group/mediaclientvideo.dll.map:335, src/patch/mediaclientvideo/group/mediaclientvideo.dll.map:502",
            "standalone_path": "patch/mediaclientvideo_v100.dll"
          },
          {
            "bundled": true,
            "description": "Patched mediaclientvideo.dll for Symbian 8.0a and 8.1a",
            "mode": "standalone",
            "name": "mediaclientvideo_v81a.dll",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:521-538, src/patch/mediaclientvideo/group/mediaclientvideo.dll.map:669, src/patch/mediaclientvideo/group/mediaclientvideo.dll.map:721",
            "standalone_path": "patch/mediaclientvideo_v81a.dll"
          },
          {
            "bundled": true,
            "description": "Export map for postingsurfacefactory.dll, the video posting surface",
            "mode": "standalone",
            "name": "postingsurfacefactory.dll.map",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:411-415, src/emu/kernel/src/libmanager.cpp:505-556, src/patch/CMakeLists.txt:14",
            "standalone_path": "patch/postingsurfacefactory.dll.map"
          },
          {
            "bundled": true,
            "description": "Patched postingsurfacefactory.dll, EKA2 versions",
            "mode": "standalone",
            "name": "postingsurfacefactory_general.dll",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:540-556, src/emu/kernel/src/libmanager.cpp:586-590, src/patch/postingsurfacefactory/group/postingsurfacefactory.dll.map:1",
            "standalone_path": "patch/postingsurfacefactory_general.dll"
          },
          {
            "bundled": true,
            "description": "Replacement map for the in-ROM Qt JPEG plugin qjpeg.dll: replace and qt-plugin requirements, no export route",
            "mode": "standalone",
            "name": "qjpeg.dll.map",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:411-415, src/emu/kernel/src/libmanager.cpp:475, src/emu/kernel/src/libmanager.cpp:558-569, src/patch/qjpeg/group/qjpeg.dll.map:1-6, src/patch/CMakeLists.txt:16",
            "standalone_path": "patch/qjpeg.dll.map"
          },
          {
            "bundled": true,
            "description": "Qt JPEG plugin decoding on the host, loaded in place of the ROM's qjpeg.dll on EKA2 when the Qt of the ROM accepts it",
            "mode": "standalone",
            "name": "qjpeg_general.dll",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:540-556, src/emu/kernel/src/libmanager.cpp:697-780, src/emu/kernel/src/libmanager.cpp:1191-1193, src/patch/qjpeg/group/qjpeg.dll.map:1-6",
            "standalone_path": "patch/qjpeg_general.dll"
          },
          {
            "bundled": true,
            "description": "Export map for scdv.dll, CFbsDrawDevice and CDirectScreenBitmap",
            "mode": "standalone",
            "name": "scdv.dll.map",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:411-415, src/emu/kernel/src/libmanager.cpp:505-556, src/patch/CMakeLists.txt:7",
            "standalone_path": "patch/scdv.dll.map"
          },
          {
            "bundled": true,
            "description": "Patched scdv.dll, EKA2 versions",
            "mode": "standalone",
            "name": "scdv_general.dll",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:540-556, src/emu/kernel/src/libmanager.cpp:586-590, src/patch/scdv/group/scdv.dll.map:1-28",
            "standalone_path": "patch/scdv_general.dll"
          },
          {
            "bundled": true,
            "description": "Patched scdv.dll for Symbian 8.1a and earlier EKA1 releases",
            "mode": "standalone",
            "name": "scdv_v81a.dll",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:521-538, src/patch/scdv/group/scdv.dll.map:29-45",
            "standalone_path": "patch/scdv_v81a.dll"
          },
          {
            "bundled": true,
            "description": "Export map for ssl.dll routed to the host TLS stack, skipped below S60v3 FP1",
            "mode": "standalone",
            "name": "ssl.dll.map",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:440-443, src/patch/ssl/group/ssl.dll.map:1-4, src/patch/CMakeLists.txt:17",
            "standalone_path": "patch/ssl.dll.map"
          },
          {
            "bundled": true,
            "description": "Patched ssl.dll, S60v3 FP1 and later",
            "mode": "standalone",
            "name": "ssl_general.dll",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:540-556, src/emu/kernel/src/libmanager.cpp:586-590, src/patch/ssl/group/ssl.dll.map:6-9",
            "standalone_path": "patch/ssl_general.dll"
          },
          {
            "bundled": true,
            "description": "Export map for vibractrl.dll, bound to the DLL UIDs it names",
            "mode": "standalone",
            "name": "vibractrl.dll.map",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:411-415, src/emu/kernel/src/libmanager.cpp:453-469, src/patch/CMakeLists.txt:9",
            "standalone_path": "patch/vibractrl.dll.map"
          },
          {
            "bundled": true,
            "description": "Patched vibractrl.dll for Symbian 8.1a and earlier EKA1 releases",
            "mode": "standalone",
            "name": "vibractrl_v81a.dll",
            "required": false,
            "source_ref": "src/emu/kernel/src/libmanager.cpp:521-538, src/patch/vibractrl/group/vibractrl.dll.map:1-4",
            "standalone_path": "patch/vibractrl_v81a.dll"
          },
          {
            "bundled": true,
            "description": "Vertex shader shared by the sprite, mask and upscale programs",
            "mode": "standalone",
            "name": "sprite_norm.vert",
            "required": true,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:264, src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:274, src/emu/drivers/src/graphics/backend/ogl/shader_ogl.cpp:184-189, src/emu/qt/CMakeLists.txt:272",
            "standalone_path": "resources/sprite_norm.vert"
          },
          {
            "bundled": true,
            "description": "Fragment shader of the sprite program",
            "mode": "standalone",
            "name": "sprite_norm.frag",
            "required": true,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:265, src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:278, src/emu/drivers/src/graphics/backend/ogl/shader_ogl.cpp:184-189",
            "standalone_path": "resources/sprite_norm.frag"
          },
          {
            "bundled": true,
            "description": "Fragment shader of the masked sprite program",
            "mode": "standalone",
            "name": "sprite_mask.frag",
            "required": true,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:266, src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:279, src/emu/drivers/src/graphics/backend/ogl/shader_ogl.cpp:184-189",
            "standalone_path": "resources/sprite_mask.frag"
          },
          {
            "bundled": true,
            "description": "Fragment shader of the default upscale program",
            "mode": "standalone",
            "name": "sprite_upscaled.frag",
            "required": true,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:267, src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:280, src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-398, src/emu/drivers/src/graphics/backend/ogl/shader_ogl.cpp:184-189",
            "standalone_path": "resources/sprite_upscaled.frag"
          },
          {
            "bundled": true,
            "description": "Vertex shader of the brush program",
            "mode": "standalone",
            "name": "brush.vert",
            "required": true,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:268, src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:275, src/emu/drivers/src/graphics/backend/ogl/shader_ogl.cpp:184-189",
            "standalone_path": "resources/brush.vert"
          },
          {
            "bundled": true,
            "description": "Fragment shader of the brush program",
            "mode": "standalone",
            "name": "brush.frag",
            "required": true,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:269, src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:281, src/emu/drivers/src/graphics/backend/ogl/shader_ogl.cpp:184-189",
            "standalone_path": "resources/brush.frag"
          },
          {
            "bundled": true,
            "description": "Vertex shader of the pen program",
            "mode": "standalone",
            "name": "pen.vert",
            "required": true,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:270, src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:276, src/emu/drivers/src/graphics/backend/ogl/shader_ogl.cpp:184-189",
            "standalone_path": "resources/pen.vert"
          },
          {
            "bundled": true,
            "description": "Fragment shader of the pen program",
            "mode": "standalone",
            "name": "pen.frag",
            "required": true,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:271, src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:282, src/emu/drivers/src/graphics/backend/ogl/shader_ogl.cpp:184-189",
            "standalone_path": "resources/pen.frag"
          },
          {
            "bundled": true,
            "description": "Upscale filter selected by an application's filter-shader-path setting",
            "mode": "standalone",
            "name": "2xBR.frag",
            "required": false,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:638-640, src/emu/qt/src/settings_dialog.cpp:318-319, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273",
            "standalone_path": "resources/upscale/2xBR.frag"
          },
          {
            "bundled": true,
            "description": "Upscale filter selected by an application's filter-shader-path setting",
            "mode": "standalone",
            "name": "4xBR.frag",
            "required": false,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:638-640, src/emu/qt/src/settings_dialog.cpp:318-319, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273",
            "standalone_path": "resources/upscale/4xBR.frag"
          },
          {
            "bundled": true,
            "description": "Upscale filter selected by an application's filter-shader-path setting",
            "mode": "standalone",
            "name": "4xhq.frag",
            "required": false,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:638-640, src/emu/qt/src/settings_dialog.cpp:318-319, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273",
            "standalone_path": "resources/upscale/4xhq.frag"
          },
          {
            "bundled": true,
            "description": "Upscale filter selected by an application's filter-shader-path setting",
            "mode": "standalone",
            "name": "5xBR-lv2.frag",
            "required": false,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:638-640, src/emu/qt/src/settings_dialog.cpp:318-319, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273",
            "standalone_path": "resources/upscale/5xBR-lv2.frag"
          },
          {
            "bundled": true,
            "description": "Upscale filter selected by an application's filter-shader-path setting",
            "mode": "standalone",
            "name": "5xBR.frag",
            "required": false,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:638-640, src/emu/qt/src/settings_dialog.cpp:318-319, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273",
            "standalone_path": "resources/upscale/5xBR.frag"
          },
          {
            "bundled": true,
            "description": "Upscale filter selected by an application's filter-shader-path setting",
            "mode": "standalone",
            "name": "aacolor.frag",
            "required": false,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:638-640, src/emu/qt/src/settings_dialog.cpp:318-319, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273",
            "standalone_path": "resources/upscale/aacolor.frag"
          },
          {
            "bundled": true,
            "description": "Upscale filter selected by an application's filter-shader-path setting",
            "mode": "standalone",
            "name": "CRT-Hyllian.frag",
            "required": false,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:638-640, src/emu/qt/src/settings_dialog.cpp:318-319, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273",
            "standalone_path": "resources/upscale/CRT-Hyllian.frag"
          },
          {
            "bundled": true,
            "description": "Upscale filter selected by an application's filter-shader-path setting",
            "mode": "standalone",
            "name": "CRT-Lottes-TV.frag",
            "required": false,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:638-640, src/emu/qt/src/settings_dialog.cpp:318-319, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273",
            "standalone_path": "resources/upscale/CRT-Lottes-TV.frag"
          },
          {
            "bundled": true,
            "description": "Upscale filter selected by an application's filter-shader-path setting",
            "mode": "standalone",
            "name": "CRT-Lottes.frag",
            "required": false,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:638-640, src/emu/qt/src/settings_dialog.cpp:318-319, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273",
            "standalone_path": "resources/upscale/CRT-Lottes.frag"
          },
          {
            "bundled": true,
            "description": "Upscale filter selected by an application's filter-shader-path setting",
            "mode": "standalone",
            "name": "dot.frag",
            "required": false,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:638-640, src/emu/qt/src/settings_dialog.cpp:318-319, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273",
            "standalone_path": "resources/upscale/dot.frag"
          },
          {
            "bundled": true,
            "description": "Upscale filter selected by an application's filter-shader-path setting",
            "mode": "standalone",
            "name": "dot_mobile.frag",
            "required": false,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:638-640, src/emu/qt/src/settings_dialog.cpp:318-319, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273",
            "standalone_path": "resources/upscale/dot_mobile.frag"
          },
          {
            "bundled": true,
            "description": "Upscale filter selected by an application's filter-shader-path setting",
            "mode": "standalone",
            "name": "dotpsp_color_mobile.frag",
            "required": false,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:638-640, src/emu/qt/src/settings_dialog.cpp:318-319, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273",
            "standalone_path": "resources/upscale/dotpsp_color_mobile.frag"
          },
          {
            "bundled": true,
            "description": "Upscale filter selected by an application's filter-shader-path setting",
            "mode": "standalone",
            "name": "fxaa.frag",
            "required": false,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:638-640, src/emu/qt/src/settings_dialog.cpp:318-319, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273",
            "standalone_path": "resources/upscale/fxaa.frag"
          },
          {
            "bundled": true,
            "description": "Upscale filter selected by an application's filter-shader-path setting",
            "mode": "standalone",
            "name": "grayscale.frag",
            "required": false,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:638-640, src/emu/qt/src/settings_dialog.cpp:318-319, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273",
            "standalone_path": "resources/upscale/grayscale.frag"
          },
          {
            "bundled": true,
            "description": "Upscale filter selected by an application's filter-shader-path setting",
            "mode": "standalone",
            "name": "inversecolors.frag",
            "required": false,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:638-640, src/emu/qt/src/settings_dialog.cpp:318-319, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273",
            "standalone_path": "resources/upscale/inversecolors.frag"
          },
          {
            "bundled": true,
            "description": "Upscale filter selected by an application's filter-shader-path setting",
            "mode": "standalone",
            "name": "natural.frag",
            "required": false,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:638-640, src/emu/qt/src/settings_dialog.cpp:318-319, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273",
            "standalone_path": "resources/upscale/natural.frag"
          },
          {
            "bundled": true,
            "description": "Upscale filter selected by an application's filter-shader-path setting",
            "mode": "standalone",
            "name": "scanline-emu.frag",
            "required": false,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:638-640, src/emu/qt/src/settings_dialog.cpp:318-319, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273",
            "standalone_path": "resources/upscale/scanline-emu.frag"
          },
          {
            "bundled": true,
            "description": "Upscale filter selected by an application's filter-shader-path setting",
            "mode": "standalone",
            "name": "scanline.frag",
            "required": false,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:638-640, src/emu/qt/src/settings_dialog.cpp:318-319, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273",
            "standalone_path": "resources/upscale/scanline.frag"
          },
          {
            "bundled": true,
            "description": "Upscale filter selected by an application's filter-shader-path setting",
            "mode": "standalone",
            "name": "sharpen.frag",
            "required": false,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:638-640, src/emu/qt/src/settings_dialog.cpp:318-319, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273",
            "standalone_path": "resources/upscale/sharpen.frag"
          },
          {
            "bundled": true,
            "description": "Upscale filter selected by an application's filter-shader-path setting",
            "mode": "standalone",
            "name": "zfast_lcd.frag",
            "required": false,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:638-640, src/emu/qt/src/settings_dialog.cpp:318-319, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273",
            "standalone_path": "resources/upscale/zfast_lcd.frag"
          },
          {
            "bundled": true,
            "description": "Upscale filter selected by an application's filter-shader-path setting",
            "mode": "standalone",
            "name": "zfast_lcd_mobile.frag",
            "required": false,
            "source_ref": "src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409, src/emu/services/src/window/screen.cpp:638-640, src/emu/qt/src/settings_dialog.cpp:318-319, .gitmodules:70-72, src/emu/qt/CMakeLists.txt:273",
            "standalone_path": "resources/upscale/zfast_lcd_mobile.frag"
          },
          {
            "bundled": true,
            "description": "SoundFont bank of the TinySoundFont MIDI player, the sf2-bank-path option",
            "mode": "standalone",
            "name": "defaultbank.sf2",
            "required": false,
            "source_ref": "src/emu/drivers/src/audio/backend/tinysoundfont/player_tsf.cpp:66-77, src/emu/drivers/src/audio/backend/tinysoundfont/player_tsf.cpp:192-196, src/emu/config/include/config/options.inl:73, src/emu/config/src/config.cpp:404-406, src/emu/qt/src/state.cpp:155-156, src/emu/qt/CMakeLists.txt:275",
            "standalone_path": "resources/defaultbank.sf2"
          },
          {
            "bundled": true,
            "description": "Beatnik bank of the miniBAE MIDI player, the hsb-bank-path option",
            "mode": "standalone",
            "name": "defaultbank.hsb",
            "required": false,
            "source_ref": "src/emu/drivers/src/audio/backend/minibae/player_minibae.cpp:86-96, src/emu/config/include/config/options.inl:72, src/emu/config/src/config.cpp:400-402, src/emu/qt/src/state.cpp:155-156, src/emu/qt/CMakeLists.txt:274",
            "standalone_path": "resources/defaultbank.hsb"
          },
          {
            "bundled": true,
            "description": "SDL2 controller mapping database handed to SDL_GameControllerAddMappingsFromFile",
            "md5": "b1586eb09b91f65c37a2f5e7c6ef7980",
            "mode": "standalone",
            "name": "gamecontrollerdb.txt",
            "note": "src/external/SDL_GameControllerDB is a submodule pinned at a113e7fa",
            "required": false,
            "sha1": "8c272ae624c56d48d788fafe0397fab2e33d838f",
            "size": 408885,
            "source_ref": "src/emu/drivers/src/input/backend/emu_controller_sdl2.cpp:143-145, src/emu/qt/CMakeLists.txt:277",
            "standalone_path": "resources/gamecontrollerdb.txt"
          },
          {
            "bundled": true,
            "description": "Joystick image of the Qt button mapping editor",
            "mode": "standalone",
            "name": "joystick_base.png",
            "required": false,
            "source_ref": "src/emu/qt/src/btnmap/joystick.cpp:113-117, src/emu/qt/CMakeLists.txt:278",
            "standalone_path": "resources/joystick_base.png"
          },
          {
            "bundled": true,
            "description": "Overlay font of the Qt button mapping editor",
            "mode": "standalone",
            "name": "overlay_font.ttf",
            "required": false,
            "source_ref": "src/emu/qt/src/btnmap/editor.cpp:60-62, src/emu/qt/CMakeLists.txt:278",
            "standalone_path": "resources/overlay_font.ttf"
          },
          {
            "bundled": true,
            "description": "Thread panics the kernel swallows instead of killing the thread, by process, thread, category and code",
            "mode": "standalone",
            "name": "panicBlackList.json",
            "required": false,
            "source_ref": "src/emu/config/src/panic_blacklist.cpp:27-35, src/emu/kernel/src/kernel.cpp:1536, src/emu/qt/CMakeLists.txt:276",
            "standalone_path": "compat/panicBlackList.json"
          },
          {
            "bundled": true,
            "description": "Per-application settings for UID 0x101FD3DE: frame rate and launch delay",
            "mode": "standalone",
            "name": "101FD3DE.yml",
            "required": false,
            "source_ref": "src/emu/config/src/app_settings.cpp:82-114, src/emu/qt/CMakeLists.txt:276",
            "standalone_path": "compat/101FD3DE.yml"
          },
          {
            "bundled": true,
            "description": "Per-application settings for UID 0x101FD3F5: frame rate and launch delay",
            "mode": "standalone",
            "name": "101FD3F5.yml",
            "required": false,
            "source_ref": "src/emu/config/src/app_settings.cpp:82-114, src/emu/qt/CMakeLists.txt:276",
            "standalone_path": "compat/101FD3F5.yml"
          },
          {
            "bundled": true,
            "description": "Per-application settings for UID 0x101FD3F6: frame rate and launch delay",
            "mode": "standalone",
            "name": "101FD3F6.yml",
            "required": false,
            "source_ref": "src/emu/config/src/app_settings.cpp:82-114, src/emu/qt/CMakeLists.txt:276",
            "standalone_path": "compat/101FD3F6.yml"
          },
          {
            "bundled": true,
            "description": "Per-application settings for UID 0x101FD3FD: frame rate and launch delay",
            "mode": "standalone",
            "name": "101FD3FD.yml",
            "required": false,
            "source_ref": "src/emu/config/src/app_settings.cpp:82-114, src/emu/qt/CMakeLists.txt:276",
            "standalone_path": "compat/101FD3FD.yml"
          },
          {
            "bundled": true,
            "description": "Per-application settings for UID 0x101FD409, The ONE: T9 bypass",
            "mode": "standalone",
            "name": "101FD409.yml",
            "required": false,
            "source_ref": "src/emu/config/src/app_settings.cpp:82-114, src/emu/qt/CMakeLists.txt:276",
            "standalone_path": "compat/101FD409.yml"
          },
          {
            "bundled": true,
            "description": "Per-application settings for UID 0x101FE1CA: frame rate and launch delay",
            "mode": "standalone",
            "name": "101FE1CA.yml",
            "required": false,
            "source_ref": "src/emu/config/src/app_settings.cpp:82-114, src/emu/qt/CMakeLists.txt:276",
            "standalone_path": "compat/101FE1CA.yml"
          },
          {
            "bundled": true,
            "description": "Panic category descriptions read when the system is created",
            "mode": "standalone",
            "name": "panic.json",
            "required": false,
            "source_ref": "src/emu/utils/src/panic.cpp:32-38, src/emu/system/src/epoc.cpp:653, src/emu/qt/CMakeLists.txt:269",
            "standalone_path": "panic.json"
          },
          {
            "bundled": true,
            "description": "Compatibility script, loaded from scripts/ by builds carrying LuaJIT",
            "mode": "standalone",
            "name": "aq_crash_fix.lua",
            "required": false,
            "source_ref": "src/emu/scripting/src/manager.cpp:196-202, src/emu/scripting/src/manager.cpp:230-256, src/emu/qt/CMakeLists.txt:271",
            "standalone_path": "scripts/aq_crash_fix.lua"
          },
          {
            "bundled": true,
            "description": "Compatibility script, loaded from scripts/ by builds carrying LuaJIT",
            "mode": "standalone",
            "name": "eternal_legacy_crash_fix.lua",
            "required": false,
            "source_ref": "src/emu/scripting/src/manager.cpp:196-202, src/emu/scripting/src/manager.cpp:230-256, src/emu/qt/CMakeLists.txt:271",
            "standalone_path": "scripts/eternal_legacy_crash_fix.lua"
          },
          {
            "bundled": true,
            "description": "Compatibility script, loaded from scripts/ by builds carrying LuaJIT",
            "mode": "standalone",
            "name": "hero_of_sparta_crash_fix.lua",
            "required": false,
            "source_ref": "src/emu/scripting/src/manager.cpp:196-202, src/emu/scripting/src/manager.cpp:230-256, src/emu/qt/CMakeLists.txt:271",
            "standalone_path": "scripts/hero_of_sparta_crash_fix.lua"
          },
          {
            "bundled": true,
            "description": "Compatibility script, loaded from scripts/ by builds carrying LuaJIT",
            "mode": "standalone",
            "name": "qt_font_extras_fix.lua",
            "required": false,
            "source_ref": "src/emu/scripting/src/manager.cpp:196-202, src/emu/scripting/src/manager.cpp:230-256, src/emu/qt/CMakeLists.txt:271",
            "standalone_path": "scripts/qt_font_extras_fix.lua"
          },
          {
            "bundled": true,
            "description": "Compatibility script, loaded from scripts/ by builds carrying LuaJIT",
            "mode": "standalone",
            "name": "s3_driver_patch.lua",
            "required": false,
            "source_ref": "src/emu/scripting/src/manager.cpp:196-202, src/emu/scripting/src/manager.cpp:230-256, src/emu/qt/CMakeLists.txt:271",
            "standalone_path": "scripts/s3_driver_patch.lua"
          },
          {
            "bundled": true,
            "description": "Compatibility script, loaded from scripts/ by builds carrying LuaJIT",
            "mode": "standalone",
            "name": "s60v3_empty_avkon_menu_fix.lua",
            "required": false,
            "source_ref": "src/emu/scripting/src/manager.cpp:196-202, src/emu/scripting/src/manager.cpp:230-256, src/emu/qt/CMakeLists.txt:271",
            "standalone_path": "scripts/s60v3_empty_avkon_menu_fix.lua"
          },
          {
            "bundled": true,
            "description": "Compatibility script, loaded from scripts/ by builds carrying LuaJIT",
            "mode": "standalone",
            "name": "ssx_cash_unlock_fix.lua",
            "required": false,
            "source_ref": "src/emu/scripting/src/manager.cpp:196-202, src/emu/scripting/src/manager.cpp:230-256, src/emu/qt/CMakeLists.txt:271",
            "standalone_path": "scripts/ssx_cash_unlock_fix.lua"
          },
          {
            "bundled": true,
            "description": "Compatibility script, loaded from scripts/ by builds carrying LuaJIT",
            "mode": "standalone",
            "name": "wh40k_slow_load_fix.lua",
            "required": false,
            "source_ref": "src/emu/scripting/src/manager.cpp:196-202, src/emu/scripting/src/manager.cpp:230-256, src/emu/qt/CMakeLists.txt:271",
            "standalone_path": "scripts/wh40k_slow_load_fix.lua"
          },
          {
            "bundled": true,
            "description": "eka2l1.common module the shipped scripts require through package.path",
            "mode": "standalone",
            "name": "common.lua",
            "required": false,
            "source_ref": "src/emu/scripting/src/manager.cpp:252, src/scripts/aq_crash_fix.lua:1, src/emu/qt/CMakeLists.txt:289-290",
            "standalone_path": "scripts/eka2l1/common.lua"
          },
          {
            "bundled": true,
            "description": "eka2l1.ipc.context module required by eka2l1.events",
            "mode": "standalone",
            "name": "context.lua",
            "required": false,
            "source_ref": "src/emu/scripting/src/manager.cpp:252, src/emu/scripting/lua/eka2l1/events.lua:11, src/emu/qt/CMakeLists.txt:289-290",
            "standalone_path": "scripts/eka2l1/ipc/context.lua"
          },
          {
            "bundled": true,
            "description": "eka2l1.cpu module the shipped scripts require through package.path",
            "mode": "standalone",
            "name": "cpu.lua",
            "required": false,
            "source_ref": "src/emu/scripting/src/manager.cpp:252, src/scripts/aq_crash_fix.lua:3, src/emu/qt/CMakeLists.txt:289-290",
            "standalone_path": "scripts/eka2l1/cpu.lua"
          },
          {
            "bundled": true,
            "description": "eka2l1.events module the shipped scripts require through package.path",
            "mode": "standalone",
            "name": "events.lua",
            "required": false,
            "source_ref": "src/emu/scripting/src/manager.cpp:252, src/scripts/aq_crash_fix.lua:2, src/emu/qt/CMakeLists.txt:289-290",
            "standalone_path": "scripts/eka2l1/events.lua"
          },
          {
            "bundled": true,
            "description": "eka2l1.helper module required by the other eka2l1 modules",
            "mode": "standalone",
            "name": "helper.lua",
            "required": false,
            "source_ref": "src/emu/scripting/src/manager.cpp:252, src/emu/qt/CMakeLists.txt:289-290",
            "standalone_path": "scripts/eka2l1/helper.lua"
          },
          {
            "bundled": true,
            "description": "eka2l1.kernel module the shipped scripts require through package.path",
            "mode": "standalone",
            "name": "kernel.lua",
            "required": false,
            "source_ref": "src/emu/scripting/src/manager.cpp:252, src/scripts/aq_crash_fix.lua:4, src/emu/qt/CMakeLists.txt:289-290",
            "standalone_path": "scripts/eka2l1/kernel.lua"
          },
          {
            "bundled": true,
            "description": "eka2l1.std module the shipped scripts require through package.path",
            "mode": "standalone",
            "name": "std.lua",
            "required": false,
            "source_ref": "src/emu/scripting/src/manager.cpp:252, src/scripts/aq_crash_fix.lua:5, src/emu/qt/CMakeLists.txt:289-290",
            "standalone_path": "scripts/eka2l1/std.lua"
          }
        ],
        "notes": "Symbian OS and N-Gage emulator: the EKA1 and EKA2 kernels are emulated and\nthe critical application servers and libraries reimplemented in C++, while\nthe ROM of a real phone supplies the rest of the operating system, so every\ndevice to emulate is built from a firmware dump. Covers the N-Gage and\nN-Gage 2.0 libraries and the game libraries from S60v1 to Symbian Belle. One\ntree builds the Qt desktop frontend, the Android and iOS applications, and a\nlibretro core. The core lives on the libretro branch of the WizzardSK fork,\nrebased on the upstream revision named in its upstream.version, 11f5b6cd.\ncontent.cpp passes isolate_drives false to install_firmware and\ninstall_rom_with_optional_rpkg, so drives C, D and E are shared between\ndevices.\nref: README.md:20, README.md:29-32, src/emu/CMakeLists.txt:61-62,\n     CMakeLists.txt:18, .gitlab-ci.yml:17-25, src/emu/libretro/CMakeLists.txt:40-46,\n     src/emu/libretro/src/content.cpp:178-184,\n     src/emu/system/src/installation/rpkg.cpp:208-210,\n     src/emu/system/src/installation/firmware.cpp:290-293\n\nA device is registered in <storage>/devices.yml and holds its ROM image at\n<storage>/roms/<firmware code, lower case>/SYM.ROM with the unpacked ROFS\ntree beside it under <storage>/drives/z/<firmware code>/. Selecting the\ndevice opens that SYM.ROM, and a parse failure or a missing file makes set_device\nreturn false and nothing runs. The image is parsed for its root directory\nlist and never checked against a size or a hash. <storage> is the\ndata-storage option, \"data\" by default, relative to the working directory.\nref: src/emu/system/include/system/consts.h:23-25,\n     src/emu/system/src/epoc.cpp:1486-1494, src/emu/system/src/epoc.cpp:824-848,\n     src/emu/loader/src/rom.cpp:281-299, src/emu/system/src/devices.cpp:177-202,\n     src/emu/config/include/config/options.inl:45\n\nThree installers produce that layout from a dump. A bare ROM image is enough\nwhen it is an EKA1 image carrying one of the device naming files: product.txt,\nsw.txt or langsw.txt under z:\\resource\\versions, sw.txt or langsw.txt under\nz:\\system\\versions, or z:\\system\\install\\sonyericssonp90xplatform.sis. That\nis the N-Gage case: its files are unpacked to drives/z/, the firmware code is\nread from them and the image is copied to SYM.ROM. Any other image needs\nthe RPKG made by the Dumber tool beside it, which supplies the ROFS. A .vpl\nvariant packing list names the .fpsx flash images of a factory firmware,\nfrom which the core image, the ROFS and the drive contents are extracted.\nThe names of the dump files are free. SYM.ROM is the name the installers\ngive the resident copy.\nref: src/emu/system/src/installation/rpkg.cpp:44-68,\n     src/emu/system/src/software.cpp:396-408,\n     src/emu/system/src/installation/rpkg.cpp:132-199,\n     src/emu/system/src/installation/rpkg.cpp:208-255,\n     src/emu/system/src/installation/rpkg.cpp:257-259,\n     src/emu/system/src/installation/firmware.cpp:290-303,\n     src/emu/system/src/installation/firmware.cpp:381-406,\n     src/emu/system/src/installation/firmware.cpp:438-441,\n     src/emu/system/src/installation/firmware.cpp:480-515\n\nStandalone, the Qt frontend installs through its device dialog, from a ROM,\na ROM with its RPKG, or a VPL, and the settings dialog can also rescan drives/z/\nand rebuild devices.yml from the directories that still hold a SYM.ROM. A\ndevice installed with the isolate-drives box ticked keeps drives C, D and E\nunder <storage>/drives/<firmware code>/ instead of <storage>/drives/. On\nLinux and macOS the working directory is the EKA2L1 folder of the user data\nlocation and the shipped patch, resources, scripts and compat folders are\ncopied there at startup. On Windows it is the directory the executable is\nstarted from.\nref: src/emu/qt/src/device_install_dialog.cpp:162-172,\n     src/emu/qt/src/device_install_dialog.cpp:181-185,\n     src/emu/qt/src/settings_dialog.cpp:534, src/emu/system/src/epoc.cpp:396-462,\n     src/emu/qt/src/device_install_dialog.cpp:138,\n     src/emu/system/src/devices.cpp:378-385, src/emu/system/src/epoc.cpp:877-884,\n     src/emu/qt/src/main.cpp:101-121\n\nThe libretro core keeps everything under <system>/eka2l1: data-storage is\nforced to that directory whatever config.yml carries. On retro_init, when no\ndevice is registered, <system>/eka2l1/firmware is scanned once and the first\n.vpl found is installed, otherwise the first .rom or .fpsx with the first\n.rpkg beside it. The result is saved to devices.yml and device 0 is selected.\nWithout a device the core logs where the dump goes and refuses to start when\nthe GL context arrives, so the firmware folder is required. Content is a\n.sis, .sisx or .n-gage package, installed on first load and remembered in\n<system>/eka2l1/libretro-content.txt against the UID it registered, or a\n.eka2l1 text shortcut naming the UID of an application already installed.\nsupports_no_game is false. is_experimental is true in the .info.\nref: src/emu/libretro/src/main.cpp:55-57, src/emu/libretro/src/state.cpp:12-17,\n     src/emu/libretro/src/main.cpp:92-110, src/emu/libretro/src/content.cpp:129-195,\n     src/emu/libretro/src/main.cpp:173-181, src/emu/libretro/src/main.cpp:72-73,\n     src/emu/libretro/src/main.cpp:126-127, src/emu/libretro/src/content.cpp:203,\n     src/emu/libretro/src/content.cpp:350-355\n\nAt this revision the libretro build stages none of the shipped resource\nfolders and never calls set_runtime_resource_root, so the GL shaders, the\ncompat folder and panic.json are looked up relative to the process working\ndirectory. It calls neither initialize_user_parties nor mount for drive Z\nand creates no audio or controller driver, so the patch libraries, the Lua\nscripts, the MIDI banks and the controller database are not read there.\nThose entries carry mode standalone.\nref: src/emu/libretro/CMakeLists.txt:8-72, src/emu/libretro/src/thread.cpp:20-61,\n     src/emu/libretro/src/thread.cpp:87-93,\n     src/emu/common/src/path.cpp:427-450, src/emu/system/src/epoc.cpp:1389-1410\n\nShipped runtime files are read at their own name below the working\ndirectory. Patch libraries: every patch/*.map is parsed, the DLL is\n<map name>_<version suffix>.dll for the device's Symbian version upward,\nstopping at 8.1a on an EKA1 device, then <map name>_general.dll on EKA2\nonly. A map naming a source picks that DLL prefix, a map requiring host-tls\nis skipped below S60v3 FP1, and a missing folder is skipped. A map routes exports\nof the original DLL to the patch DLL and is dropped when it holds no route\nfor the device's version. A map whose requirements carry replace holds no\nroute: its DLL is loaded in place of the image of that name, and with\nqt-plugin only when the Qt plugin verification data of the original accepts\nit. goommonitor_general.dll and avkonfep_general.dll are reached by no map:\nthe Qt and Android frontends copy them over the ROM's own Z:\\sys\\bin DLL,\nfrom S60v5 and from S60v3 FP1 on. Shaders:\nthe eight files under resources are compiled by the OpenGL driver at start\nand an unreadable one leaves the program without source. The upscale filter\nnamed in an application's screen-upscale setting is read from\nresources/upscale/<name>.frag, and the 21 filters ship from the upscale-shaders\nsubmodule, pinned at 49dd304c. MIDI: resources/defaultbank.sf2 feeds the\nTinySoundFont player and resources/defaultbank.hsb the miniBAE player, the\npaths being the sf2-bank-path and hsb-bank-path options. SDL2 controller\nmappings come from resources/gamecontrollerdb.txt. compat/panicBlackList.json\nnames thread panics to swallow and compat/<UID>.yml carries per-application\nsettings. panic.json holds the panic category descriptions. Lua scripts under\nscripts/ are loaded when the build carries LuaJIT and require the eka2l1.*\nmodules from scripts/eka2l1/; the libretro recipe builds without it. Fonts\nthe user imports live in <storage>/fonts and are added to the font store\nafter the ROM fonts.\nref: src/emu/kernel/src/libmanager.cpp:411-415, src/emu/kernel/src/libmanager.cpp:440-443,\n     src/emu/kernel/src/libmanager.cpp:475-503, src/emu/kernel/src/libmanager.cpp:505-556,\n     src/emu/kernel/src/libmanager.cpp:558-569, src/emu/kernel/src/libmanager.cpp:586-590,\n     src/emu/kernel/src/libmanager.cpp:697-780, src/emu/kernel/src/libmanager.cpp:1191-1193,\n     src/emu/qt/src/state.cpp:179-202,\n     src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:264-282,\n     src/emu/drivers/src/graphics/backend/ogl/shader_ogl.cpp:184-189,\n     src/emu/drivers/src/graphics/backend/ogl/graphics_ogl.cpp:397-409,\n     src/emu/drivers/src/audio/backend/tinysoundfont/player_tsf.cpp:66-77,\n     src/emu/drivers/src/audio/backend/minibae/player_minibae.cpp:86-96,\n     src/emu/config/include/config/options.inl:72-73,\n     src/emu/drivers/src/input/backend/emu_controller_sdl2.cpp:143-145,\n     src/emu/config/src/panic_blacklist.cpp:27-35, src/emu/config/src/app_settings.cpp:82-114,\n     src/emu/utils/src/panic.cpp:32-38, src/emu/scripting/src/manager.cpp:196-202,\n     src/emu/scripting/src/manager.cpp:230-256, src/emu/services/src/fbs/fbs.cpp:443,\n     src/emu/services/src/fbs/impls/font.cpp:1185-1208, .gitlab-ci.yml:22,\n     src/emu/qt/CMakeLists.txt:264-278, src/emu/qt/CMakeLists.txt:289-290,\n     src/emu/qt/CMakeLists.txt:376-377, cmake/Symbian.cmake:20-31\n\nconfig.yml, bindings/<profile>.yml, devices.yml, the drives/ tree and\nlibretro-content.txt are written by the emulator itself.\nref: src/emu/config/src/config.cpp:344-350, src/emu/config/src/config.cpp:358-368,\n     src/emu/system/src/devices.cpp:260-261\n",
        "profiled_date": "2026-09-17",
        "source": {
          "libretro": "https://github.com/WizzardSK/eka2l1-libretro/tree/libretro",
          "standalone": "https://github.com/EKA2L1/EKA2L1"
        },
        "source_commit": {
          "libretro": "1c49c1bcde3853273cd520a5360bff756f872e06",
          "standalone": "1fcfadbff7f8b81d8c17bc82d04b0c94d16803bf"
        },
        "systems": [
          "ngage",
          "symbian"
        ],
        "type": "standalone + libretro",
        "upstream": "https://github.com/EKA2L1/EKA2L1",
        "upstream_commit": {
          "libretro": "11f5b6cd141c0884a130ee45743f1f5e17bb1783"
        }
      }
    }
  ],
  "kind": "emulators",
  "schema_version": 1
}
