The Retrode can be easily configured by the user through a text-file interface. Just open the file RETRODE.CFG in a text editor, change any of the provided parameters, save the file, and abracadabra, there you go. Deleting a line in the file will reset the respective parameter to factory default.
On this page I’ll provide a reference of all the options in the Retrode’s configuration file. Depending on your firmware version, you may find that some of the parameters are not available on your device. Since you want to use the latest firmware for other reasons anyway (compatibility, plug-in support, bugfixes), now might be a good time to check if there is a newer version.
Trouble writing the config back to the Retrode? Under some operating systems (Mac OS, Linux), you may find that saving to the config file gives an error message (”disk full” or similar). This is a principal issue and can only be fixed by changing the way the text editor accesses files. For instance, reportedly vi doesn’t work but nano does. Please check the information on this page for a workaround.
So, from top to bottom, here are the parameters…
[HIDMode] (until v0.17c: [enumerateHID])
Supported values: 0, 1, 2, 3
[HIDMode] 0 (Golden Edition/2010 hardware); [HIDMode] 1 (Retrode 2)
This parameter selects one out of several possible USB protocols for the game controller interface. Setting this to 0 speeds up all plugging and unplugging (detection by the OS) but game controllers will be disabled. you will only be able to use the mass storage functions: cartridge access and config file. When set to 1 (default for the new Retrodes with built-in connector ports), the system will take a few seconds upon connection or reset until the Retrode becomes fully usable.
- 0 – No controllers. This mode offers the fastest initialization when connecting/disconnecting the Retrode. Preferred setting for those who don’t use controllers at all.
- 1 – 4 USB game controllers plus mouse (default in Retrode 2 firmware). Maps each port to a different USB game controller, and supports the Super Mario Paint mouse an the left SNES controller port. Up to 4 players.
- 2 – 2 USB game controllers. The left Sega and SNES ports are both mapped to controller 1, the right ones to controller 2. Up to 2 players.
- 3 – Keyboard mode. Up to 2 players (again; player 1: left ports; player 2: right ports). Key mappings can be configured using [kbL] and [kbR] (see below).
- 4 – Arcade mode. In this mode, the Retrode sends keyboard hits for button press and release events. Compatible to many titles on iOS platform.
[kbL] [kbR] (until v0.17c: [gamepad1] [gamepad2])
Setting no longer available in version 0.17h and up.
Supported values: 8-bit hex codes (00 – FF) x 12
[kbL] 74 5d 20 67 62 0d 0a 5b 67 62 61 52 [kbR] 6f 6d 45 78 74 5d 20 67 62 61 0d 0a
The key mapping for game controllers (only relevant when running in Keyboard Mode, or [HIDMode] 3) can be configured in terms of hexadecimal USB keycodes. See this document, pages 53 and following, for a list of codes.
For SNES controllers, the order is B Y SELECT START UP DOWN LEFT RIGHT A X L R; for NES gamepads, it is A B SELECT START UP DOWN LEFT RIGHT (unused) (unused) (unused) (unused). Even in NES mode, you should always specify all 12 key codes.
[keyboardMode] (merged into [HIDMode] from v0.17d upwards)
Supported values: 0, 1
When the Retrode runs in keyboard mode ([keyboardMode] = 1), the SNES gamepads 1 and 2 will be translated into key hits instead of HID game controllers. Some emulators under some exotic operating systems may have trouble with USB game controllers, so here you have a backup solution that should work pretty much everywhere.
Supported values: 0, 1
This setting determines whether the file name should contain the 4-digit checksum (or, for certain systems such as GBA and N64, the game code). Some people may prefer setting this to 0, since it will produce “cleaner” file names.
Supported values: 0 – 255
Specifies the lag between insertion/removal of a cartridge and the triggering of the re-detection routine. The more slowly you insert carts, the higher this value should be, so the Retrode doesn’t start looking for carts until the electrical connection is fully established. I found 10 to work fine for me.
Supported values: 0, 1
The SRAM file is connected to the physical save ram on the cartridge, so writing to that file may overwrite your precious saves. By default, the Retrode therefore protects the SRAM from write accesses. Set to 0 if you want to copy a savegame to a cartridge.
Supported values: string of 1-3 alphanumerical characters
[snesRomExt] sfc [snesSramExt] srm [segaRomExt] bin ; Optional plug-ins: [n64RomExt] n64 [gbRomExt] gb [gbaRomExt] gba [smsRomExt] sms ; new in v0.17h [ggRomExt] gg ; new in v0.17h
Specifies the file extensions for cartridges of most supported systems.
[forceSystem], [forceSize], [forceMapper]
(available from the yet-to-be-published firmware v0.16) Use these settings to override the Retrode’s auto-detection routine. This may come in handy whenever the Retrode doesn’t detect the type of cartridge, ROM size, memory mapper right. One fine day in the distant future, I hope to support the following combinations (preceded by a “V” if currently implemented):
|SNES/SFC||snes||1-32 (=Mbit)||0 (=LoROM)
|V Genesis/MD||mdrv||1-32 (=Mbit)||0 (none)|
|V N64||n64||1-64 (=Mbyte)||0 (none)|
|V GBA||gba||1-32 (=Mbyte)||0 (none)|
|V GB/GBC||gboy||1-128 (=16kByte banks)||(none, they basically all work the same)|
|TG16/PCE||tg16||1-32 (=Mbit)||0 (=TG16)
In auto mode, [forceSize] and [forceMapper] have no effect. For non-auto values of [forceSystem], setting [forceSize] to 0 will attempt to auto-detect the size.