Video Game Emulation Wiki

Mednafen is a multi-system emulator, driven from the command-line. Many of its cores are ports of other emulators, but many of them are also original. Its PC Engine, PlayStation and Sega Saturn original cores are notable for their high quality, compatibility and accuracy.


Supported systems[]


Mednafen only has a command line interface, so its interface might be slightly challenging to people that have never used an emulator with a command line interface.

Other cores are less useful, as there are better options in stand-alone emulators (NES, Genesis, Master System and SNES). These cores might even be based on out-dated versions. For instance, the SNES core is based on an old outdated version of bSNES. This is before the performance/accuracy/balanced cores - 0.50x territory - with a couple of changes by Ryphecha.

It is unknown at this time whether Mednafen's GBA core is better than VBA-M (but it's likely not true).

RetroArch uses the Atari Lynx, PS1, PCE, Neo-Geo Pocket, Sega Saturn, Virtual Boy, and WonderSwan cores of Mednafen, so it might make sense to use that instead.

Using Mednafen[]

Most cores do not require any BIOS except for the PS1, PCE-CD and PC-FX cores. BIOS files need to be placed into a folder called "firmware" in your Mednafen directory. Mednafen is very picky about which BIOS to use. The ones that you might need are:


  • syscard3.pce


  • pcfx.rom


For most systems, Mednafen only needs the rom file; but to load, Mednafen requires CUE sheets to know where the music data is. Ensure that the CUE sheet is properly set up in order for the game to run. See the Cue sheet (.cue) page for more info.

Loading a game[]

To load a game in Mednafen, simply drag and drop your rom or CUE file onto mednafen.exe, or if you prefer, you can use the command line. Mednafen requires no special commands, such as the desired system. For example, in Windows, the command would look like C:/Emulators/Mednafen/mednafen.exe C:/Roms/Nintendo/battletoads.nes

Dual Analog Controllers with PS1[]

To enable analog sticks and rumble on, open the mednafen-09x.cfg file, search for "psx.input.port1" and change gamepad to DualShock. Do this for port2 if you wish to play multiplayer games with the features of Dualshock controllers.

Configuring Controls[]

Once in-game, to configure your controller at any time, press Alt+Shift+1 and it will guide you through the setup. Press Alt+Shift+2 and so on for each additional controller for multiplayer.

Graphical Enhancements[]

This is a feature on older systems, due to hardware limitations, that makes it only display so many sprites could be on screen at the same time. Most systems got around this limitation by alternating which sprites were on screen each refresh, causing the sprite to flicker. Mednafen's default settings are true to the original system limits,  but this can be disabled in the cfg file. Here is the list of options from the cfg file to change from 0 to 1 if you don't wish to have the limit.

  • pcfx.rom
  • nes.no8lim
  • pce.nospritelimit
  • pce_fast.nospritelimit
  • pcfx.nospritelimit


Mednafen supports the usual cheats such as GameShark, Code Breaker, and Action Replay. The cheats menu can be accessed with ALT+C.

RAW cheat codes can also be entered via the console menu:

  1. choose "2) Cheat Search..."
  2. choose "1) Add Cheat"
  3. enter the cheat name
  4. enter the cheat type (usually the default "R"=replace is correct)
  5. enter the RAW address with a preceding dollar sign (eg. "$0071")
  6. enter the byte length (usually the default "1" is correct)
  7. enter the RAW value with a trailing "h" (eg. "63h")
  8. confirm cheat insertion


Cores that work with Netplay:

  • TG-16/PC Engine/PC-CD/SuperGrafx (option for both accuracy and fast cores)
  • PC-FX
  • NES
  • Genesis (experimental but mostly functional; 2 Players only)
  • Master System
  • SNES
  • Playstation 1
  • Sega Saturn
  • You can make and load savestates
  • Netcode allows for people to join a game that's already in session
  • In-game chat
  • Playing it fullscreen works (sometimes)
  • Command-line only (you can use a frontend, though)
  • Weird, convoluted settings (or lack thereof)
  • SNES emulation will be slow to you if you're on a low-end computer (uses BSNES core)
  • Playstation is inexplicably slow (haven't checked to see what core it uses, but probably has one that's focused on accuracy)
  • Only supports 2 Players on Genesis.
  • Frontend doesn't always save settings correctly.
  • Frontend defaults to detecting compressed ROM archives instead of the actual ROMs (you can still load uncompressed ROMs by selecting "All files *.*" from the dropdown menu).
How to

It's recommended that you download a frontend

  1. Run MedGui.exe
  2. You'll get a small window. On your left, you'll see two arrow buttons with a console/handheld icon in between. Choose your desired platform.
  3. Click the button with the blue lightning icon and look for the folder that contains your game(s). The emulator looks for compressed archives by default, but you can still load uncompressed files by clicking on the drop down menu.
  4. Pick your game.
  5. Click the button with a checkered red ball and joystick to start the game.
  6. You'll then (very likely) get a message an update prompt. Click Yes, and wait.
  7. Start the game. If it asks you to update again, ignore it and restart the emulator.
  8. While the game is loaded, press ALT + SHIFT + 1 to map your controller. You'll get several options per button (for example, UP 1, UP 2, UP 3, etc.). Just map the first one to your controller, and the rest to a key you'll never press. You will have to repeat this step for every emulator core.
  9. Close the emulator.
  10. Click the arrow button on the right side of the window. It should expand it.
  11. Click Advanced Mode.
  12. Click the tab called Media/Network/Utility.

For Hosting:

  1. In the Netplay-Server section, you have the following options:
    • "Max Clients", as in, the number of people that can connect to your server (not necessarily players; theoretically you can use this as a makeshift stream)
    • "Conn. Timeout" which is the number of seconds you'll allow for your clients to attempt establishing a connection
    • "Port" where you'll choose one an open TCP/UDP one
    • "Password" which you can establish or leave blank
  2. When you're done fiddling with your settings, click Create standard.conf
  3. Click Create Server. A cmd window will appear.
  4. Click My IP to obtain your external IP address, and share it along with your port to your friend(s).
  5. Launch the game.
  6. Press T, and type /server localhost.
  7. Wait for other people to connect.

If you're Connecting:

  1. In the Netplay-Client section, you have the following options:
    • "Host", which is the server's IP you'll connect to
    • "Port, which is the one used by the server (which you should also have open on your end).
    • "Password", blank if there is none.
    • "Nickname" where you type whatever you want.
    • "Localplayer" is the number of players that will also be playing from one computer.
    • "Small font" which makes the chat font smaller.
  2. When you're done fiddling with your settings, launch the game.
  3. Press T, and type /server IP_goes_here.

You can chat in-game by pressing T. Also, remember that you can drop in and out of the game at any time, so you don't need to reset the game if someone accidentally disconnects. There are way too many settings, commands and features to list, so take a look at the emulator's documentation.

External links[]