Mednafen: Difference between revisions
fixed some links |
|||
| (42 intermediate revisions by 26 users not shown) | |||
| Line 2: | Line 2: | ||
|logo = Newlogo-1-.png | |logo = Newlogo-1-.png | ||
|logowidth = 280 | |logowidth = 280 | ||
|version = {{ | |version = {{Version|Mednafen}} | ||
|active = Yes | |active = Yes | ||
|platform = [[Emulators on Windows|Windows]]</br>[[Emulators on Linux|Linux]]</br>BSD</br>[[Emulators on PS3|PS3]]<br/>[[Emulators on Wii|Wii]] | |platform = [[Emulators on Windows|Windows]]</br>[[Emulators on Linux|Linux]]</br>[[Emulators on BSD|BSD]]</br>[[Emulators on PS3|PS3]]<br/>[[Emulators on Wii|Wii]]<br/>[[Emulators on GCW Zero|GCW Zero]] | ||
|target = [[Apple II line|Apple II]]</br>[[Atari Lynx emulators|Atari Lynx]]</br>[[WonderSwan emulators|Bandai WonderSwan/Color]]</br>[[Game Boy Advance emulators|Nintendo Game Boy Advance]]</br>[[Virtual Boy emulators|Virtual Boy]]</br>[[Nintendo Entertainment System emulators|Nintendo Entertainment System]]</br>[[Super Nintendo emulators|Super Nintendo Entertainment System]]</br>[[PC Engine (TurboGrafx-16) emulators|NEC PC Engine/TurboGrafx-16]]</br>[[PC-FX emulators|PC-FX]]</br>[[Neo Geo Pocket emulators|SNK Neo Geo Pocket/Color]]</br>[[PlayStation emulators|Sony PlayStation]]</br>[[Master System emulators|Sega Master System]]</br>[[Sega Genesis emulators|Sega Genesis (Mega Drive)]]</br>[[Sega Saturn emulators|Sega Saturn]]</br>[[Master System emulators|Sega Game Gear]] | |target = [[Apple II line|Apple II]]</br>[[Atari Lynx emulators|Atari Lynx]]</br>[[WonderSwan emulators|Bandai WonderSwan/Color]]</br>[[Game Boy Advance emulators|Nintendo Game Boy Advance]]</br>[[Virtual Boy emulators|Virtual Boy]]</br>[[Nintendo Entertainment System emulators|Nintendo Entertainment System]]</br>[[Super Nintendo Entertainment System emulators|Super Nintendo Entertainment System]]</br>[[PC Engine (TurboGrafx-16) emulators|NEC PC Engine/TurboGrafx-16]]</br>[[PC-FX emulators|PC-FX]]</br>[[Neo Geo Pocket emulators|SNK Neo Geo Pocket/Color]]</br>[[PlayStation emulators|Sony PlayStation]]</br>[[Master System emulators|Sega Master System]]</br>[[Sega Genesis emulators|Sega Genesis (Mega Drive)]]</br>[[Sega Saturn emulators|Sega Saturn]]</br>[[Master System emulators|Sega Game Gear]] | ||
|developer = Ryphecha</br>Mednafen Team | |developer = Ryphecha</br>Mednafen Team | ||
|website = [https://mednafen.github.io mednafen.github.io] | |website = [https://mednafen.github.io mednafen.github.io] | ||
|source = [ | |source = [https://mednafen.github.io/releases/ download tarballs] | ||
|license = | |issuetracker = [https://github.com/unofficial-issue-tracker/mednafen/issues GitHub (unofficial)] | ||
|prog-lang = {{Proglang|Objective-C}}, {{Proglang|C++}} | |||
|license = {{license|GPLv2}} | |||
|bios = [[Emulator_Files#Multi-system|Required]] | |bios = [[Emulator_Files#Multi-system|Required]] | ||
}} | }} | ||
'''Mednafen''' (an acronym for '''My Emulator Doesn't Need A Frickin' Excellent Name''', formerly '''Nintencer''') is an open-source, [[Multi-system emulators|multi-system emulator]], driven from the command-line. Many of its cores are ports of other emulators, | '''Mednafen''' (an acronym for '''My Emulator Doesn't Need A Frickin' Excellent Name''', formerly '''Nintencer''') is an open-source, [[Multi-system emulators|multi-system emulator]], driven from the command-line. | ||
Many of its cores are ports of other emulators; however, many of its cores are also original and are notable for their high quality, compatibility and accuracy. | |||
==Downloads== | ==Downloads== | ||
| Line 23: | Line 27: | ||
|colspan="2"|<hr/> | |colspan="2"|<hr/> | ||
|- | |- | ||
|align=center|{{Icon|Lin| | |align=center|{{Icon|Lin-big}} | ||
|'''[https://flathub.org/de/apps/com.github.AmatCoder.mednaffe Flatpak]'''<br/>'''[https://github.com/pkgforge-dev/mednafen-appimage AppImage]''' | |||
|- | |||
|colspan="2"|<hr/> | |||
|- | |||
|align=center|{{Icon|Lin|FreeBSD|NetBSD}} | |||
|[https://pkgs.org/download/mednafen <code>mednafen</code> Package Listing]<br/><small>at pkgs.org</small> | |[https://pkgs.org/download/mednafen <code>mednafen</code> Package Listing]<br/><small>at pkgs.org</small> | ||
|- | |- | ||
| Line 33: | Line 42: | ||
|align=center|{{Icon|PS3}} | |align=center|{{Icon|PS3}} | ||
|[https://github.com/aaerox/mednafen-ps3 Source] [https://ps3.brewology.com/downloads/download.php?id=12232&mcid=4 r3]<br/><small>PS3 port (Outdated)</small> | |[https://github.com/aaerox/mednafen-ps3 Source] [https://ps3.brewology.com/downloads/download.php?id=12232&mcid=4 r3]<br/><small>PS3 port (Outdated)</small> | ||
|- | |||
|align=center|{{Icon|GCWZero}} | |||
|[https://github.com/gameblabla/mednafen-gcw Source]<br/><small>GCW Zero port (Outdated)</small> | |||
|} | |} | ||
==Overview== | |||
The best cores in Mednafen are those that are original - which are the [[PlayStation emulators|Sony PlayStation]], [[PC Engine (TurboGrafx-16) emulators|NEC PC Engine (TurboGrafx-16)]], [[PC-FX emulators|PC-FX]], [[Sega Saturn emulators|Sega Saturn]] and [[Virtual Boy emulators|Nintendo Virtual Boy]] cores. | |||
The NEC PC Engine core is one of the best emulators for that system, with a Fast and Accurate version. The PlayStation core is native resolution only and features a high degree of accuracy and compatibility<ref>[http://forum.fobby.net/index.php?t=msg&th=1114 Mednafen PSX bugs reports]</ref>. The Nintendo Virtual Boy core is one of the best for the system. | |||
Some cores improve upon emulators that have been long abandoned and rarely updated. These include the SNK Neo Geo Pocket/Color, Bandai WonderSwan/Color, and Atari Lynx cores. | |||
Other cores are less useful, as there are better options in stand-alone emulators (Nintendo Entertainment System, Sega Genesis, Master System, and Super Nintendo Entertainment System). These cores might even be based on out-dated versions. For instance, the Super Nintendo Entertainment System 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 Nintendo Game Boy Advance core is better than [[VisualBoy Advance#VBA-M|VBA-M]]. | |||
Mednafen's Sony PlayStation, NEC PC Engine, SNK Neo Geo Pocket/Color, Nintendo Virtual Boy, Sega Saturn and Bandai WonderSwan/Color emulators are all available as [[libretro]] cores under the name "Beetle", so it might make more sense to use [[RetroArch]] instead. | |||
Version 1.31.0 added experimental support for [https://system16.com/hardware.php?id=711 ST-V games] that don't require decryption chips or special hardware. Refer to the [https://mednafen.github.io/documentation/ss.html#Section_stv ST-V section of the official documentation] for more details and a list of explicitly supported games. | |||
==Supported systems== | ==Supported systems== | ||
| Line 80: | Line 107: | ||
|Original. | |Original. | ||
|- | |- | ||
|[[Super Nintendo emulators|SNES (Super Famicom)]] | |[[Super Nintendo Entertainment System emulators|SNES (Super Famicom)]] | ||
|[[higan|bsnes v059]] & Original ([https://mednafen.github.io/documentation/snes_faust.html SNES Faust]) | |[[higan|bsnes v059]] & Original ([https://mednafen.github.io/documentation/snes_faust.html SNES Faust]) | ||
|} | |} | ||
==Using Mednafen== | ==Using Mednafen== | ||
| Line 101: | Line 115: | ||
===BIOS=== | ===BIOS=== | ||
Most cores do not require any BIOS except for the Sony PlayStation, NEC PC Engine CD, PC-FX, and Sega Saturn 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, but all of these come with the [[ | Most cores do not require any BIOS except for the Sony PlayStation, NEC PC Engine CD, PC-FX, and Sega Saturn 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, but all of these come with the [[Emulator_files#Multi-system|Mednafen BIOS pack]] and are correctly named.<ref group=notes>Mednafen can be forced to accept incorrect bios roms by editing its config file if you absolutely cannot find the correct ones, but this may cause compatibility problems.</ref> The ones that you might need are: | ||
'''Sony PlayStation''' | '''Sony PlayStation''' | ||
| Line 115: | Line 129: | ||
'''Sega Saturn''' | '''Sega Saturn''' | ||
* sega_101.bin | * sega_101.bin - Required for Japan-region games. | ||
* mpr-17933.bin | * mpr-17933.bin - Required for North America/US-region and Europe-region games. | ||
For ST-V games, use the original uncompressed files inside stvbios.zip from MAME romset. | For ST-V games, use the original uncompressed files inside stvbios.zip from MAME romset. | ||
| Line 137: | Line 151: | ||
Save the .txt file and then change the file extension to .m3u. Run the .m3u, rather than the .cue of the first disc and the first disc will load. When you get to the end of that disc, the next disc will be automatically loaded. | Save the .txt file and then change the file extension to .m3u. Run the .m3u, rather than the .cue of the first disc and the first disc will load. When you get to the end of that disc, the next disc will be automatically loaded. | ||
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. | ||
===CHD=== | |||
Stock Mednafen does not include support for CHD (Compressed Hunks of Data) files, partially due to a size limitation for loaded files (hence why it accepts CUE sheets rather than BIN or ISO), but there are some unofficial builds and forks that add this functionality, such as [https://github.com/psakhis/emu4crt emu4crt], a custom fork that optimizes Mednafen for usage on CRT monitors, though in some cases it tends to be somewhat unstable and prone to crashes. The [https://reglinux.org REG Linux] community has [https://github.com/REG-Linux/mednafen a custom build of Mednafen] with full CHD support available on their GitHub, but it must be compiled from source as there are no releases. However, there is [https://github.com/platinumb3rlitz/mednafen/releases/tag/mednafen-1.32.1-windows-chd a precompiled Windows version] of this build available via a mirror of the repository created by another user. | |||
===Dual analog controllers with PlayStation=== | ===Dual analog controllers with PlayStation=== | ||
| Line 148: | Line 165: | ||
===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 the 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. | This is a feature on older systems, due to hardware limitations, that makes it only display so many sprites could be on the screen at the same time. Most systems got around this limitation by alternating which sprites were on the 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. | ||
* [{{MednafenURL|documentation/nes.html#nes.no8lim}} nes.no8lim] | * [{{MednafenURL|documentation/nes.html#nes.no8lim}} nes.no8lim] | ||
| Line 165: | Line 182: | ||
* ss.correct_aspect 0 | * ss.correct_aspect 0 | ||
Here is also a little list of the cores without an correct_aspect setting but its width is still wrong, so changing | Here is also a little list of the cores without an correct_aspect setting but its width is still wrong, so changing its xscale values will give pixel perfect. | ||
These cores (except PC-FX) also have a boolean setting called h_overscan which if it's enabled (1) some overscan (which is most known as black bars) on both sides will appear, but width size is still inaccurate. | These cores (except PC-FX) also have a boolean setting called h_overscan which if it's enabled (1) some [[overscan]] (which is most known as black bars) on both sides will appear, but width size is still inaccurate. | ||
All values are replaced from 1X scale, if you want 2X or 3X scale, multiply it with a calculator. | All values are replaced from 1X scale, if you want 2X or 3X scale, multiply it with a calculator. | ||
| Line 186: | Line 203: | ||
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 then back to the cheat engine searching for any variables that changed in that particular way. For example: | 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 the 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 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 the 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. | ||
| Line 195: | Line 212: | ||
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 you write it here. The first time, just write the 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 && C==V2''' if you know the explicit numerical values for the variable, you write it here. The first time, just write the 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 233: | Line 250: | ||
[[File:memory_card_manager.png|400px]] | [[File:memory_card_manager.png|400px]] | ||
It allows to transfer each of the game saves from a shared memory card to a .mcr memory file used by Mednafen. As it was described above you just need to start game and check for '''sav''' folder inside Mednafen system directory. Open with Memory Card Manager 1.4 the memory file created for your game by Mednafen and open the shared memory card file from which you wish to transfer a save entry. When there would be a dialogue 'Do you want to replace 'SAVE_ENTRY_NAME' click 'Yes' and then save the file to the '''sav''' folder (the older one should be replaced). | It allows to transfer each of the game saves from a shared memory card to a .mcr memory file used by Mednafen. As it was described above, you just need to start game and check for '''sav''' folder inside Mednafen system directory. Open with Memory Card Manager 1.4 the memory file created for your game by Mednafen and open the shared memory card file from which you wish to transfer a save entry. When there would be a dialogue 'Do you want to replace 'SAVE_ENTRY_NAME' click 'Yes' and then save the file to the '''sav''' folder (the older one should be replaced). | ||
==Frontends== | ==Frontends== | ||
| Line 262: | Line 279: | ||
|- | |- | ||
| '''CONS''' || | | '''CONS''' || | ||
* Command-line only (thankfully, front-end GUI for this emulator exists) | * Command-line only (thankfully, dedicated front-end GUI for this multi-emulator exists) | ||
* Weird, convoluted settings (or lack thereof) | * Weird, convoluted settings (or lack thereof) | ||
* Super Nintendo Entertainment System emulation | * Super Nintendo Entertainment System emulation can be slow to you if you're on a low-end computer (uses bsnes core) | ||
* Sony PlayStation core is accurate but slow | * Sony PlayStation core is accurate but slow | ||
* No CHD file support | * No CHD file support | ||
|} | |} | ||
| Line 325: | Line 341: | ||
==References== | ==References== | ||
<references/> | <references/> | ||
{{Atari Lynx emulators}} | |||
{{TurboGrafx-16/SuperGrafx emulators}} | |||
{{WonderSwan/WonderSwan Color emulators}} | |||
{{Neo Geo Pocket/Neo Geo Pocket Color emulators}} | |||
[[Category:Emulators]] | [[Category:Emulators]] | ||
| Line 331: | Line 352: | ||
[[Category:Home console emulators]] | [[Category:Home console emulators]] | ||
[[Category:Handheld console emulators]] | [[Category:Handheld console emulators]] | ||
[[Category:Luggable console emulators]] | |||
[[Category:Computer emulators]] | [[Category:Computer emulators]] | ||
[[Category:Apple II emulators]] | [[Category:Apple II emulators]] | ||
[[Category:Atari Lynx emulators]] | [[Category:Atari Lynx emulators]] | ||
[[Category: | [[Category:Famicom (NES) emulators]] | ||
[[Category:Super Nintendo emulators]] | [[Category:Super Nintendo emulators]] | ||
[[Category:PC Engine (TurboGrafx-16) emulators]] | [[Category:PC Engine (TurboGrafx-16) emulators]] | ||
| Line 346: | Line 368: | ||
[[Category:Sega Saturn emulators]] | [[Category:Sega Saturn emulators]] | ||
[[Category:Virtual Boy emulators]] | [[Category:Virtual Boy emulators]] | ||
[[Category:WonderSwan emulators]] | [[Category:WonderSwan/WonderSwan Color emulators]] | ||
[[Category:Netplay]] | [[Category:Netplay]] | ||
[[Category:Windows emulation software]] | [[Category:Windows emulation software]] | ||
[[Category:Linux emulation software]] | [[Category:Linux emulation software]] | ||
[[Category:BSD emulation software]] | [[Category:BSD emulation software]] | ||
[[Category:Active emulation software]] | |||