Before we talk about conversion, let’s define the players.
The problem? Emulators like MAME expect MCR layouts. Dumping tools often spit out GME fragments. And many homebrew toolchains target GME because it’s simpler to edit.
Hence the need for a converter.
If you want, I can convert this into a shorter developer README, a CLI usage guide, or a technical spec showing exact mapping tables between GME and MCR types.
Converting .gme (DexDrive) files to .mcr (Emulator) format is a common task for PlayStation 1 enthusiasts using saves from sites like GameFAQs on modern emulators. Based on user reviews and technical guides, here is the most reliable way to get this working: The Best Tool: MemcardRex
MemcardRex is widely considered the "good piece" of software for this job because it handles almost all PS1 save formats with ease.
Open the File: Run MemcardRex and use File > Open to select your .gme file. gme to mcr converter work
Save as MCR: Go to File > Save as.... In the "Save as type" dropdown, select ePSXe/PSEmu Pro Memory Card (*.mcr).
Rename (if needed): Many modern emulators like RetroArch or DuckStation use .srm or .mcd extensions. You can often simply rename your new .mcr file to match what your emulator requires (e.g., gamename.srm). Alternative: Online Converters
If you don't want to install software, there are web-based tools like SaveFileConverter.com that allow you to upload a .gme file and download it instantly in .mcr format. Troubleshooting Common Issues
Wrong Region: If a save won't load, ensure the save file's region (NTSC-U, PAL, NTSC-J) matches the version of the game you are playing.
File Not Found: Some emulators require specific filenames. For example, DuckStation may look for [Game Name]_1.mcd.
Corrupted Saves: If the file opens in MemcardRex but looks empty, the original .gme dump might be corrupted. Before we talk about conversion, let’s define the players
For a visual walkthrough on managing these files with MemcardRex: How to Import & Export PS1 Saves on a Virtual Memory Card MrMario2011 YouTube• Jul 15, 2023
If you're having trouble, let me know which emulator you're using or if you're on a Mac or PC so I can give you more specific steps.
The converter is not finished. It never is.
I have released the alpha version on my GitHub ([link redacted for blog style – but search “gme2mcr” on my profile]). It is rough, but it works for the 12 games I tested.
with open('output.mcr', 'wb') as mcr: mcr.write(b'MCR\x01') mcr.write(struct.pack('<H', len(mcr_records))) # little-endian count for lat, lon, name in mcr_records: mcr.write(struct.pack('>ii', lat, lon)) # big-endian coords mcr.write(struct.pack('<H', 1)) # default icon mcr.write(struct.pack('B', len(name))) mcr.write(name) # Note: Omitted CRC for brevity; real implementation requires CRC-16
This script does not include checksum validation, so OziExplorer may warn, but many versions ignore CRC for waypoints. The problem
Using a state machine, the converter iterates through each record. For text-based GME (GPX format), it uses an XML parser to extract <wpt> tags. For binary GME (rare), it reads fixed-offset structures. Example pseudocode:
foreach waypoint in gme_file:
lat = read_double(offset + 0)
lon = read_double(offset + 8)
name = read_string(offset + 16, max_len=40)
Theory is nice, but I test on real hardware (an FPGA System 16 replica) and in MAME.
The first successful test was Altered Beast (System 16A). I extracted the GME from a known MAME set, modified one Z80 instruction (changing a LD A, $03 to LD A, $FF to amplify sound), then ran it through gme2mcr. The resulting MCR booted in MAME with comically loud attack samples. Success.
The second test was E-SWAT (System 18). Here, the GME used bank switching. My converter failed the first five attempts because I ignored the OUT instruction. Once I added a simple pattern scanner (b'\xed\x79' for OUT (C),A), the tool correctly flagged the need for a 512KB Z80 region instead of the default 128KB.
If you have ever tinkered with Sega System 16, System 18, or X-Board emulation, you have run into the acronyms GME and MCR. At first glance, they look like just two more obscure file formats in a sea of ROM dumps. But for anyone serious about preservation, reverse engineering, or building custom arcade hardware, the bridge between these two formats is a chasm that needs crossing.
I recently spent several weeks building a GME to MCR converter. This post is the autopsy of that work—the headaches, the byte-order revelations, and the quiet satisfaction of watching a scrambled sound driver snap into place.
GME waypoint symbols (e.g., 0x4E for "Residence") must map to OziExplorer MCR icon indexes. The converter maintains a lookup table: