Editing Mednafen
Jump to navigation
Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
− | {{Infobox | + | {{Infobox |
− | | | + | |image = Newlogo-1-.png |
− | | | + | |first = {{MednafenVer}} |
− | + | |second = Yes | |
− | | | + | |third = Multi-platform |
− | | | + | |fourth = Ryphecha, Mednafen Team |
− | + | |fifth = [https://mednafen.github.io/ mednafen.github.io] | |
− | | | + | |sixth = [http://sourceforge.net/projects/mednafen/files/latest/download?source=files SourceForge]}} |
− | | | ||
− | | | ||
− | |||
− | |||
− | }} | ||
− | '''Mednafen''' | + | '''Mednafen''' is a [[Multi-System Emulators|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 [[PlayStation emulators|PlayStation]], [[Sega Saturn emulators|Saturn]], and [[PC Engine (TurboGrafx-16) emulators|PC Engine (TurboGrafx-16)]] original cores are notable for their high quality, compatibility and accuracy. |
− | + | Mednafen is an acronym for "My Emulator Doesn't Need A Frickin' Excellent Name". | |
==Downloads== | ==Downloads== | ||
− | + | * [https://mednafen.github.io/releases/ Mednafen] Official releases. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Supported systems== | ==Supported systems== | ||
Line 63: | Line 22: | ||
|- | |- | ||
|[[Atari Lynx emulators|Atari Lynx]] | |[[Atari Lynx emulators|Atari Lynx]] | ||
− | | | + | |Handy |
|- | |- | ||
− | |[[ | + | |[[Game Boy Advance emulators|Game Boy Advance]] |
− | | | + | |[[VisualBoy Advance|VisualBoyAdvance]] |
+ | |- | ||
+ | |[[Neo Geo Pocket emulators|Neo-Geo Pocket/Color]] | ||
+ | |[http://www.emuxhaven.net/ NeoPop] | ||
|- | |- | ||
− | |[[ | + | |[[Nintendo Entertainment System emulators|Famicom (NES)]] |
− | |[ | + | |[http://freecode.com/projects/fceultra FCE Ultra] |
|- | |- | ||
− | |[[ | + | |[[Super Nintendo emulators|Super Famicom (SNES)]] |
− | | | + | |[[higan|bsnes]] |
|- | |- | ||
− | |[[ | + | |[[Virtual Boy emulators|Nintendo Virtual Boy]] |
|Original. NEC V810 CPU core based on [http://www.goliathindustries.com/vb/ Reality Boy]. | |Original. NEC V810 CPU core based on [http://www.goliathindustries.com/vb/ Reality Boy]. | ||
|- | |- | ||
− | |[[ | + | |[[PC Engine (TurboGrafx-16) emulators|PC Engine (TurboGrafx-16)]] |
− | |[http:// | + | |Original. CD-ROM interface based on [http://www.geocities.co.jp/SiliconValley-Bay/9975/PC2E/english.html PC2E]. |
|- | |- | ||
− | |[[ | + | |[[PC-FX emulators|PC-FX]] |
− | |[ | + | |Original. NEC V810 CPU core based on [http://www.goliathindustries.com/vb/ Reality Boy]. |
|- | |- | ||
− | |[[ | + | |[[PlayStation emulators|PlayStation]] |
− | |Original | + | |Original. |
|- | |- | ||
− | |[[ | + | |[[WonderSwan emulators|WonderSwan/Color]] |
− | | | + | |Cygne |
|- | |- | ||
|[[Master System emulators|Sega Master System]] and [[Master System emulators|Game Gear]] | |[[Master System emulators|Sega Master System]] and [[Master System emulators|Game Gear]] | ||
− | |[ | + | |[http://www.techno-junk.org/smsplus.php SMS Plus] |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | |[[ | + | |[[Sega Genesis emulators|Mega Drive (Sega Genesis)]] |
− | | | + | |[[Genesis Plus GX|Genesis Plus]] |
|- | |- | ||
− | |[[ | + | |[[Sega Saturn emulators|Saturn]] |
− | | | + | |Original |
|} | |} | ||
+ | |||
+ | ==Overview== | ||
+ | Mednafen only has a command line interface, so its interface might be hard to use to new users. | ||
+ | |||
+ | The best cores in Mednafen are those that are original - which are the PS1, PCE, PC-FX and Virtual Boy cores. The PCE core is one of the best emulators for that system, with a Fast and Accurate version. The PS1 core is native resolution only, and features high degree of accuracy and compatibility.<ref>[http://forum.fobby.net/index.php?t=msg&th=1114 Mednafen PSX bugs reports]</ref> The Virtual Boy core is one of the best for the system. | ||
+ | |||
+ | Other cores improve upon emulators that have been long abandoned and rarely updated. These include the Neo Geo Pocket, WonderSwan Color and Atari Lynx cores. | ||
+ | |||
+ | 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. | ||
+ | |||
+ | [[RetroArch]] uses the PS1, PCE, Neo Geo Pocket, Virtual Boy, and WonderSwan cores of Mednafen, so it might make sense to use that instead. | ||
==Using Mednafen== | ==Using Mednafen== | ||
− | + | Mednafen is pretty easy to get up and running. You can use a frontend like medgui. However, a good text editor like [http://www.notepad-plus-plus.org/ Notepad++] is all you need if you need to change settings. | |
===BIOS=== | ===BIOS=== | ||
− | Most cores do not require any BIOS except for the | + | Most cores do not require any BIOS except for the PS1, PCE-CD, PC-FX and Saturn cores. [[Emulator_Files#Multi-System|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: |
− | ''' | + | '''PlayStation''' |
− | * SCPH5500. | + | * SCPH5500.bin - (NTSC-J) Required for Japan-region games. |
− | * SCPH5501. | + | * SCPH5501.bin - (NTSC-U) Required for North America/US-region games. |
− | * SCPH5502. | + | * SCPH5502.bin - (PAL) Required for Europe-region games. |
− | ''' | + | '''PCE-CD''' |
* syscard3.pce | * syscard3.pce | ||
− | ''' | + | '''PC-FX''' |
− | * pcfx. | + | * pcfx.rom |
− | ''' | + | '''Saturn''' |
− | * sega_101.bin | + | * sega_101.bin |
− | * mpr-17933.bin | + | * mpr-17933.bin |
− | + | ||
+ | All of these come with the [[Emulator_Files#Multi-System|RetroArch BIOS pack]], and are correctly named. | ||
===CUE=== | ===CUE=== | ||
− | For most systems, Mednafen only needs the | + | For most systems, Mednafen only needs the rom file; but to load PS1 games, 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=== | ===Loading a game=== | ||
Line 146: | Line 116: | ||
For this method to work, shared memory cards (see below) must be used for the games in the playlist. | For this method to work, shared memory cards (see below) must be used for the games in the playlist. | ||
− | ===Dual analog controllers with | + | ===Dual analog controllers with PS1=== |
To enable analog sticks and rumble on DualShock controllers, 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. | To enable analog sticks and rumble on DualShock controllers, 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=== | ===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. | 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=== | ===Graphical enhancements=== | ||
====Sprite limit==== | ====Sprite limit==== | ||
− | 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 | + | 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. |
− | * [ | + | * [https://mednafen.github.io/documentation/nes.html#nes.no8lim nes.no8lim] |
− | * [ | + | * [https://mednafen.github.io/documentation/pce.html#pce.nospritelimit pce.nospritelimit] |
− | * [ | + | * [https://mednafen.github.io/documentation/pce_fast.html#pce_fast.nospritelimit pce_fast.nospritelimit] |
− | * [ | + | * [https://mednafen.github.io/documentation/pcfx.html#pcfx.nospritelimit pcfx.nospritelimit] |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
===Cheats=== | ===Cheats=== | ||
Line 194: | Line 138: | ||
To add an existing GS/AR/PAR/CB cheat code, use "Gameshark Codes". Else, if you have a memory address and a given value for it, choose "Search Code" then "Add Code", then put in the address (as $XXXXXXXX), the byte range depending on the values your variable can take (1 is 0-255, 2 is 0-65535, etc), and the numeric value proper (in decimal, or hexadecimal if followed by a lower-case h). Various cheat types exist too (S(substitute on read), C(substitute on read with compare) or R(replace value before vblank) -- R being the default recommended option). | To add an existing GS/AR/PAR/CB cheat code, use "Gameshark Codes". Else, if you have a memory address and a given value for it, choose "Search Code" then "Add Code", then put in the address (as $XXXXXXXX), the byte range depending on the values your variable can take (1 is 0-255, 2 is 0-65535, etc), and the numeric value proper (in decimal, or hexadecimal if followed by a lower-case h). Various cheat types exist too (S(substitute on read), C(substitute on read with compare) or R(replace value before vblank) -- R being the default recommended option). | ||
− | Searching for new cheat codes is also possible. The general idea being comparing variables, going back to gameplay so that this variable changes | + | Searching for new cheat codes is also possible. The general idea being comparing variables, going back to gameplay so that this variable changes then back to the cheat engine searching for any variables that changed in that particular way. For example: |
− | * '''Infinite Health / Ammo / Time / Money:''' you start with 5 hearts, reset search (in the cheat engine, not reset the game you silly!), you get hurt to 4 hearts, search variables that decreased, get healed back to 5 hearts, search variables that increased, and so on. For | + | * '''Infinite Health / Ammo / Time / Money:''' you start with 5 hearts, reset search (in the cheat engine, not reset the game you silly!), you get hurt to 4 hearts, search variables that decreased, get healed back to 5 hearts, search variables that increased, and so on. For money you can start with 0 when you have 0 gold and try earning/spending money. You could try using save states as well when you don't have as much freedom changing the value. |
* '''Infinite Lives:''' It's game over when the internal variable for "Lives" is 0. So in some cases, when it shows "REST/LEFT=1" in-game and you lose a life then it becomes 0 but you're still allowed to play on your last life, that means the internal counter for lives has actually changed from 2 to 1 and not from 1 to 0, but in other games (where if you die on "LIVESx1" it's game over) it's not the case. In the case of lives, you actually know the exact value: reset search initially, then (if you have 2 lives on a game that allows you to play on "LEFT=0") search for variables with values equal to 3. Lose a life, search for variables equal 2, and so on. | * '''Infinite Lives:''' It's game over when the internal variable for "Lives" is 0. So in some cases, when it shows "REST/LEFT=1" in-game and you lose a life then it becomes 0 but you're still allowed to play on your last life, that means the internal counter for lives has actually changed from 2 to 1 and not from 1 to 0, but in other games (where if you die on "LIVESx1" it's game over) it's not the case. In the case of lives, you actually know the exact value: reset search initially, then (if you have 2 lives on a game that allows you to play on "LEFT=0") search for variables with values equal to 3. Lose a life, search for variables equal 2, and so on. | ||
* '''Character Modifier / Level Modifier / Having an Item:''' reset search, play without changing whatever you're searching for (let's say the stage), do lots of searches for new value equals old value. In-game, change it, then do a new value doesn't equal old value. And so on. | * '''Character Modifier / Level Modifier / Having an Item:''' reset search, play without changing whatever you're searching for (let's say the stage), do lots of searches for new value equals old value. In-game, change it, then do a new value doesn't equal old value. And so on. | ||
− | * '''Walk | + | * '''Walk Though Walls / Invincibility / In-game Cheats & Features :''' you need to find the value that tells the character if he can move or not (he can't really move when walking against a wall) / if he's blinking or being invincible right now after getting hurt. Same methods as before, but there are hints that could be useful here -- both states could be 0/1, or something else... for example, one could assume 0 is not enabled and 1 is enabled. |
* '''Debug Modes:''' stuff that stays 0 no matter what, extra off-screen inaccessible options in menus, extra dialogue... you name it. Have fun experimenting. | * '''Debug Modes:''' stuff that stays 0 no matter what, extra off-screen inaccessible options in menus, extra dialogue... you name it. Have fun experimenting. | ||
The goal of these searches is to narrow down the list of results to a single or handful of addresses (variables) pertinent directly to whatever we're searching for. The search always starts with "Reset Search", going back in-game (Alt+C) to play and change stuff, then back to the cheat engine to compare the "Original" value with the "Current" value. Then you check the results page which must get smaller and smaller (if it's 0 results, you screwed up and need to reset search to try again). The comparing options offered by Mednafen are as follow, with O being the Original value, and C being the Current value (when you reset a search, they're the same): | The goal of these searches is to narrow down the list of results to a single or handful of addresses (variables) pertinent directly to whatever we're searching for. The search always starts with "Reset Search", going back in-game (Alt+C) to play and change stuff, then back to the cheat engine to compare the "Original" value with the "Current" value. Then you check the results page which must get smaller and smaller (if it's 0 results, you screwed up and need to reset search to try again). The comparing options offered by Mednafen are as follow, with O being the Original value, and C being the Current value (when you reset a search, they're the same): | ||
− | # '''O==V1 && C==V2''' if you know the explicit numerical values for the variable | + | # '''O==V1 && C==V2''' if you know the explicit numerical values for the variable you write it here. First time, just write same value in both. Subsequent times, leave O blank and press Enter so that you don't write the old value again, and write the current value under C. |
# '''O==V1 && |O-C|==V2''' same, but instead of writing the current value you write by how much it changed (0 if old value equals new value) | # '''O==V1 && |O-C|==V2''' same, but instead of writing the current value you write by how much it changed (0 if old value equals new value) | ||
# '''|O-C|==V2''' you write by how much it changed (0 if old value equals new value) | # '''|O-C|==V2''' you write by how much it changed (0 if old value equals new value) | ||
Line 211: | Line 155: | ||
===Further reading=== | ===Further reading=== | ||
− | * | + | * https://mednafen.github.io/documentation/ |
==Memory cards== | ==Memory cards== | ||
Line 218: | Line 162: | ||
Create '''psx.cfg''', and add the line: '''filesys.fname_sav %s.%X'''<br> | Create '''psx.cfg''', and add the line: '''filesys.fname_sav %s.%X'''<br> | ||
− | Here's the full documentation: | + | Here's the full documentation: https://mednafen.github.io/documentation/fname_format.txt |
− | Emulation bugs, crashes | + | Emulation bugs, crashes and save states can corrupt your memory card data. |
===Transfer=== | ===Transfer=== | ||
To transfer memory cards, follow this guide. Also, in games with multiple discs with saves that carry over, you have to follow the same procedure. | To transfer memory cards, follow this guide. Also, in games with multiple discs with saves that carry over, you have to follow the same procedure. | ||
− | Mednafen creates memory card files for each individual game, in contrast to | + | Mednafen creates memory card files for each individual game, in contrast to PCSX-R/ePSXe where all game saves are stored into 2 memory card files. To transfer memory card files from PCSX-R/ePSXe to RetroArch: |
− | * Start | + | * Start game in RetroArch. |
− | * Go to | + | * Go to system folder. Copy the names of the .mcr files created for the game. |
* Delete them. | * Delete them. | ||
* Rename the files you want to transfer with the names of the RetroArch memcard files. | * Rename the files you want to transfer with the names of the RetroArch memcard files. | ||
* Place the new ones in the system folder. | * Place the new ones in the system folder. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Frontends== | ==Frontends== | ||
− | + | * [http://sourceforge.net/projects/medgui/ Medgui] (Windows) | |
− | + | * [http://forum.fobby.net/index.php?t=msg&th=924&start=0& MedGui Reborn] (Windows) | |
− | + | * [https://code.google.com/p/mednaffe/ Mednaffe] (Multi-platform) | |
==Netplay== | ==Netplay== | ||
Cores that work with netplay: | Cores that work with netplay: | ||
− | * | + | * PC Engine (TurboGrafx-16)/PC-CD/SuperGrafx (option for both accuracy and fast cores) |
− | * | + | * PC-FX |
− | * | + | * NES |
− | * | + | * Genesis |
− | * | + | * Master System |
− | * | + | * SNES |
− | * | + | * PlayStation |
− | |||
{| class="mw-collapsible mw-collapsed wikitable" style="width: 100%;" | {| class="mw-collapsible mw-collapsed wikitable" style="width: 100%;" | ||
Line 267: | Line 200: | ||
* Netcode allows for people to join a game that's already in session | * Netcode allows for people to join a game that's already in session | ||
* In-game chat | * In-game chat | ||
− | * Playing it full | + | * Playing it full screen works (sometimes) |
|- | |- | ||
| '''CONS''' || | | '''CONS''' || | ||
− | * Command-line only ( | + | * Command-line only (you can use a frontend, though) |
* Weird, convoluted settings (or lack thereof) | * 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 core is accurate but slow |
* Only supports 2 players on Genesis | * 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) | ||
|} | |} | ||
Line 286: | Line 220: | ||
# Run MedGui.exe | # Run MedGui.exe | ||
# 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. | # 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. | ||
− | # 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 | + | # 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. |
# Pick your game. | # Pick your game. | ||
# Click the button with a checkered red ball and joystick to start the game. | # Click the button with a checkered red ball and joystick to start the game. | ||
Line 305: | Line 239: | ||
# When you're done fiddling with your settings, click Create standard.conf | # When you're done fiddling with your settings, click Create standard.conf | ||
# Click Create Server. A cmd window will appear. | # Click Create Server. A cmd window will appear. | ||
− | # Click My IP to obtain your external IP address and share it along with your port to your friend(s). | + | # Click My IP to obtain your external IP address, and share it along with your port to your friend(s). |
# Launch the game. | # Launch the game. | ||
# Press T, and type /server localhost. | # Press T, and type /server localhost. | ||
Line 316: | Line 250: | ||
#* "Password", blank if there is none. | #* "Password", blank if there is none. | ||
#* "Nickname" where you type whatever you want. | #* "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. | #* "Small font" which makes the chat font smaller. | ||
# When you're done fiddling with your settings, launch the game. | # When you're done fiddling with your settings, launch the game. | ||
Line 322: | Line 256: | ||
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. | 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 | + | There are way too many settings, commands and features to list, so take a look at the emulator's documentation. |
|} | |} | ||
==External links== | ==External links== | ||
* [http://fantasyanime.com/emuhelp/emuhelp_mednafen.htm Mednafen tutorial] | * [http://fantasyanime.com/emuhelp/emuhelp_mednafen.htm Mednafen tutorial] | ||
− | |||
− | |||
− | |||
==References== | ==References== | ||
<references/> | <references/> | ||
Line 336: | Line 267: | ||
[[Category:Emulators]] | [[Category:Emulators]] | ||
[[Category:Multi-emulators]] | [[Category:Multi-emulators]] | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
[[Category:Nintendo Entertainment System emulators]] | [[Category:Nintendo Entertainment System emulators]] | ||
− | |||
[[Category:PC Engine (TurboGrafx-16) emulators]] | [[Category:PC Engine (TurboGrafx-16) emulators]] | ||
− | + | [[Category:Game Boy emulators]] | |
− | |||
− | [[Category:Game Boy | ||
[[Category:Game Boy Advance emulators]] | [[Category:Game Boy Advance emulators]] | ||
[[Category:PlayStation emulators]] | [[Category:PlayStation emulators]] | ||
[[Category:Master System emulators]] | [[Category:Master System emulators]] | ||
[[Category:Sega Genesis emulators]] | [[Category:Sega Genesis emulators]] | ||
− | |||
[[Category:Virtual Boy emulators]] | [[Category:Virtual Boy emulators]] | ||
− | |||
[[Category:Netplay]] | [[Category:Netplay]] | ||
[[Category:Windows emulation software]] | [[Category:Windows emulation software]] | ||
[[Category:Linux emulation software]] | [[Category:Linux emulation software]] | ||
− | [[Category: | + | [[Category:OS X emulation software]] |