emulator: Rosalie's Mupen GUI type: standalone core_classification: community_fork source: "https://github.com/Rosalie241/RMG" upstream: "https://github.com/Rosalie241/RMG" profiled_date: "2026-10-04" source_commit: "4777ed3f1fb7f1e4a0e70438a27dc4a5e9fb1927" core_version: "v0.9.0" display_name: "Nintendo - Nintendo 64 (Rosalie's Mupen GUI)" cores: - rosalies-mupen-gui - RMG - com.github.Rosalie241.RMG systems: - nintendo-64 - nintendo-64dd mode: standalone notes: | Qt front end by Rosalie Wanders built around its own vendored fork of mupen64plus-core, compiled with OSD=0, NEW_DYNAREC=1 and VULKAN=0 (Source/3rdParty/CMakeLists.txt:63-83). Forks of the RSP plugins hle, cxd4 and parallel, the video plugins GLideN64, parallel, angrylion-plus and softrdp, and the raphnetraw input plugin are vendored alongside it, plus RMG's own audio and input plugins. softrdp opens no data file. ES-DE runs it as `--nogui -q ` for both n64 and n64dd. Against mupen64plus-core 6dca4c15 the media loader, the DD region enum and load_dd_rom are unchanged; the fork diverges on SDL3, video capture, netplay and the dynarec. Cartridge boot needs no boot ROM. The PIF boot ROM is simulated (Source/3rdParty/mupen64plus-core/src/device/pif/bootrom_hle.c:48, reached from Source/3rdParty/mupen64plus-core/src/device/r4300/interrupt.c:445,496) and the CIC-NUS-6105 challenge is answered by an algorithm rather than a stored table (Source/3rdParty/mupen64plus-core/src/device/pif/n64_cic_nus_6105.c:93). Which 64DD IPL is used is not a user choice. scan_and_expand_disk_format accepts a disk only when one of eight candidate blocks holds system data carrying a known region word, and marks it development when that block sits at index 2, 3, 10 or 11 (Source/3rdParty/mupen64plus-core/src/device/dd/disk.c:412-475). The core hands the resulting region to the front end, which answers with one of three configured paths, or with nothing when the region stayed unknown (Source/RMG-Core/MediaLoader.cpp:47-74). All three settings default to empty (Source/RMG-Core/Settings.cpp:284-292) and are filled from a file dialog filtered on *.n64 (Source/RMG/UserInterface/Dialog/SettingsDialog.cpp:1377-1390). A bare .ndd or .d64 opens as a disk with no cartridge (Source/RMG-Core/Rom.cpp:111-133), which is the route ES-DE takes, so the IPL is the only boot ROM and the core bails before starting when it is absent (Source/3rdParty/mupen64plus-core/src/main/main.c:1722-1738). Passing a cartridge with --disk (Source/RMG/main.cpp:219,232,287) boots the cartridge and switches 64DD off instead. Disk content inside a .zip or .7z is extracted to the user cache directory first (Source/RMG-Core/MediaLoader.cpp:164-215, Source/RMG-Core/Archive.cpp:188-227). Transfer Pak carts come from the input profile, which copies its GameboyRom and GameboySave paths into the per player core settings (Source/RMG-Input/main.cpp:320-321,472-483, Source/RMG-Core/MediaLoader.cpp:76-114). The core rejects a ROM under 32 KiB and an unknown cart type byte at 0x147 (Source/3rdParty/mupen64plus-core/src/device/gb/gb_cart.c:999-1012) and fixes no name, size or hash, so neither the cart nor its save carries an entry here. Data the install places in the shared data directory (CMakeLists.txt:130-153; /usr/share/RMG, or Data beside the executable for portable and Windows builds, Source/RMG-Core/Directories.cpp:406-431): mupen64plus.ini, read as the ROM database (Source/3rdParty/mupen64plus-core/src/main/rom.c:585-604) and used by GLideN64 to locate that same directory (Source/3rdParty/mupen64plus-video-GLideN64/src/mupenplus/CommonAPIImpl_mupenplus.cpp:77-85); GLideN64.custom.ini, per ROM overrides keyed on the uppercased header name (Source/3rdParty/mupen64plus-video-GLideN64/src/mupenplus/Config_mupenplus.cpp:331-350); font.ttf, reached only after the configured font name fails both as a system font path and as a full path (Source/3rdParty/mupen64plus-video-GLideN64/src/TextDrawer.cpp:202-230); Cheats/.cht, named from the header CRC pair and country code, or from the ROM MD5 when all three are zero, and merged with a user copy under the config directory (Source/RMG-Core/Cheats.cpp:82-116,579-598); InputProfileDB.json (Source/RMG-Input/Utilities/InputProfileDB.cpp:26-36); gamecontrollerdb.txt (Source/RMG-Input/main.cpp:1071-1077); and for VRU builds vosk-model-small-en-us-0.15.zip, extracted into the user data directory when any of the thirteen model files it checks for is missing (Source/RMG-Input/VRU.cpp:154-232). The published AppImage is the features-on build, so the model ships with it (.github/workflows/build.yml:10,94,107). Optional files with no canonical artifact: a .qss stylesheet under Styles in the shared data directory (Source/RMG/UserInterface/MainWindow.cpp:405-425), hi-res texture packs under hires_texture in the user data directory (GLideN64 Config.cpp:118-123), and alp_screen.vert and alp_screen.frag, which angrylion-plus opens as working directory relative paths before falling back to its embedded shaders (angrylion-plus output/vdac.c:120-175,257-258). Written rather than obtained: mupen64plus.cfg in the config directory, GLideN64.ini written there by the plugin settings pages and read back from both that directory and the shared data directory (Source/3rdParty/mupen64plus-video-GLideN64/src/GLideNUI/Config_GLideNUI.cpp:20-21,45-46, Source/3rdParty/mupen64plus-video-GLideN64/src/GLideNUI/Settings.cpp:354-370), the mempak, eeprom, flashram and sram saves opened with default content when absent (Source/3rdParty/mupen64plus-core/src/main/main.c:1711-1715), 64DD disk saves in the format the SaveDiskFormat setting selects (Source/3rdParty/mupen64plus-core/src/main/main.c:1285-1297), savestates, screenshots, the ROM browser header cache (Source/RMG-Core/CachedRomHeaderAndSettings.cpp:152), the GLideN64 texture cache and texture dumps (GLideN64 Config.cpp:120-123) and the parallel-rdp pipeline cache (video-parallel vulkan/device.cpp:760,834). Two files in the tree this build never reads: the vendored core's data/mupencheat.txt, which RMG neither installs nor parses since cheats use its own .cht format and the core's cheat.c opens no file, and cxd4's rsp_conf.bin, whose reader is the zilmar variant of update_conf behind #if !defined(M64P_PLUGIN_API); the variant this build compiles takes settings from the core config API and ignores its filename argument (Source/3rdParty/mupen64plus-rsp-cxd4/module.c:89-99,652-673). files: - name: "64DD_IPL_JP.n64" aliases: ["64DD_IPL_v12_JPN.bin", "64DD_IPL.bin"] system: nintendo-64dd region: [japan] required: true description: "64DD IPL ROM (Japanese retail)" note: > Selected when the disk system data holds the Japanese region word 0xe848d316, which covers the retail library. The path is set in the settings dialog and no name is fixed by the code. Loaded whole, then byteswapped after identifying the first word as one of 0x80270740 (z64), 0x40072780 (n64) or 0x27804007 (v64); any other value disables 64DD. Size is not checked and no hash is computed. source_ref: "Source/RMG-Core/MediaLoader.cpp:47-74, Source/RMG-Core/Settings.cpp:284-286, Source/3rdParty/mupen64plus-core/src/main/main.c:1189-1254, Source/3rdParty/mupen64plus-core/src/device/dd/disk.c:434-445" - name: "64DD_IPL_US.n64" aliases: ["64DD_IPL_USA.bin", "IPL_USA.n64"] system: nintendo-64dd region: [north-america] required: true description: "64DD IPL ROM (American retail)" note: > Selected when the disk system data holds the US region word 0x2263ee56. The other two IPL settings are not consulted for such a disk, so no substitution is possible. Same load path, format check and absence of size or hash validation as the Japanese image. source_ref: "Source/RMG-Core/MediaLoader.cpp:54-56, Source/RMG-Core/Settings.cpp:287-289, Source/3rdParty/mupen64plus-core/src/main/main.c:1189-1254, Source/3rdParty/mupen64plus-core/src/device/dd/disk.c:434-445" - name: "64DD_IPL_DEV.n64" aliases: ["64DD_IPL_DEV.bin", "IPL_DEV.n64"] system: nintendo-64dd required: true description: "64DD IPL ROM (Japanese development)" note: > Selected when the disk system data holds the development region word 0x00000000, and also whenever the valid system data block sits at index 2, 3, 10 or 11, which is the development disk layout. Same load path, format check and absence of size or hash validation as the Japanese image. source_ref: "Source/RMG-Core/MediaLoader.cpp:57-59, Source/RMG-Core/Settings.cpp:290-292, Source/3rdParty/mupen64plus-core/src/main/main.c:1189-1254, Source/3rdParty/mupen64plus-core/src/device/dd/disk.c:412-475"