Mednafen jest bardzo udanym multiemulatorem, który powstał przede wszystkim z myślą o linuksie, jednak dzięki portowi pod win32 i ostatnio testowanej wersji x64, możemy pobawić się nim także pod okienkami. Jest na tyle dobrym udawaczem, że na podwalinie jego kodu powstały takie emulatory jak VBjin (VirtualBoy) i PCEjin (PCEngine) Delikata. Menfagen pozwala zaemulować platformy Atari Lynx, GameBoy (Color), GameBoy Advance, NES, PC Engine(TurboGrafx 16), SuperGrafx, Neo Geo Pocket (Color), PC-FX i WonderSwan (Color)) i PSX - większość zmian dotyczy właśnie emulacji SONY PLAYSTATION.
→ [MULTI] Mednafen x86/x64 0.9.45.1
Mednafen 0.9.45.1 July 1, 2017 - 21:33 PDT
This very minor release fixes a regression introduced in 0.9.45, that caused garbled sound output when using the (non-default) exclusive-mode WASAPI sound driver with certain higher-end sound cards.
-- 0.9.45.1: --
June 5, 2017:
- SNES: Fixed an instance of possibly-undefined behavior.
- Silenced dumb warning spam relating to endian.h emitted by newer versions of gcc.
June 4, 2017:
- Fixed garbled audio with the exclusive-mode WASAPI sound driver on some higher-end sound cards(regression introduced in 0.9.45 due to a mistake in changing the meaning of a macro field during development); may also fix garbled audio when using the new OpenBSD sound driver with certain sound cards.
→ [MULTI] Mednafen x86/x64 0.9.38.4 Unstable
-- 0.9.38.4: --
- Miscellaneous debugger bug fixes and tweaks.
- NES: Altered mapper 185 emulation to fix all known commercially-released mapper 185 games that were previously non-working.
- PCE: Fixed a VRAM DMA emulation bug introduced around 0.9.16-WIP that broke some homebrew software.
- PS1: Cheats are now also tied to the game's base filename(previously written out in the psx.cht file as a comment, but now being used for something more). Previously(and currently with other emulated systems), cheats were tied only to the game's "ID". However, Mednafen's CD ID calculation code is flawed and insufficient, particularly for single-track games, leading to many collisions in the PS1's vast game library. (The underlying issue, bad CD ID calculation, will be fixed in a future major release)
- PS1: Improved GPU texture cache emulation; fixes menu graphical glitches in "Tigershark".
- SNES: Fixed a bug that was breaking input after triggering a virtual Reset/Power Toggle event when a non-gamepad controller(e.g. mouse) is currently selected for a port.
April 12, 2015:
- PC-FX: Reorganized the debugger's register view to be slightly more space-efficient horizontally.
- NES: Migrated the rest of the *GetRegister() and *SetRegister() debugger functions over to the newer-style interface.
- PC-FX: Migrated the rest of the *GetRegister() and *SetRegister() debugger functions over to the newer-style interface.
April 11, 2015:
- PC-FX: Migrated debugger functions PCFXDBG_GetRegister() and PCFXDBG_SetRegister() over to the newer-style interface that takes integer IDs instead of std::string.
- VB: Migrated debugger functions VBDBG_GetRegister() and VBDBG_SetRegister() over to the newer-style interface that takes integer IDs instead of std::string.
- WonderSwan: Migrated debugger functions WSwan_GfxGetRegister() and WSwan_GfxSetRegister() over to the newer-style interface that takes integer IDs instead of std::string.
- PC-FX: Added support for setting breakpoints on writes to specific VDC registers, by setting an Aux Write Breakpoint on an address ranging from A0000-A001F(VDC-A) or B0000-B001F(VDC-B).
April 10, 2015:
- Debugger: Relaxed most maximum string length restrictions on user-inputted addresses(to allow for lazily leaving an excessive number of 0s at the beginning of an address, for example).
- Debugger: "Goto Address" prompt in the memory editor can now be activated by pressing "ENTER"(in addition to "G"), and "Disassembly Address" prompt in the main debugger view can now be activated by pressing the "G" key(in addition to "ENTER").
April 9, 2015:
- NES: Added sprite RAM to the debugger's memory editor.
- NES: Fixed some issues with the debugger's graphics/tileset viewer.
April 8, 2015:
- PSX: Improved GPU texture cache emulation accuracy per tests on a PS1; fixes graphical glitches in the menus of "Tigershark".
April 5, 2015:
- PCE: Added support for setting breakpoints on writes to specific VDC registers(like MAWR, BXR, BYR, etc.), by setting an Aux Write Breakpoint on an address ranging from 20000-2001f(hexadecimal).
April 4, 2015:
- Avoid left-shifting negative values in hw_sound/pce_psg/pce_psg.cpp
- Added a couple more tests regarding left shift of signed integers to tests.cpp.
April 2, 2015:
- Debugger: Fixed half-broken re-activation of the debug screen when a breakpoint triggers and the user was last on a debug screen other than the main one.
- Debugger: Fixed a rounding issue that could cause insufficient disassembly lines with some *.debugger.disfontsize setting values.
- PSX: Hooked up writing(editing) in the debugger's memory editor for "CPU Main RAM".
March 29, 2015:
- PCE: Removed old leftover debug puts() in HuC6280 emulation code.
- Debugger: Fixed a bug that could cause breakpoints to be skipped if the 'R' key was pressed(or auto-repeated) while outside of step mode.
- NES: Fixed highpass filter coefficient calculation.
- SNES: Fixed a bug that was breaking input after triggering a virtual Reset/Power Toggle event when a non-gamepad controller(e.g. mouse) is currently selected for a port.
March 23, 2015:
- NES: Fixed a minor sound emulation bug.
March 15, 2015:
- GBA: Fixed several instances of left-shifting negative values in thumb.cpp.
- PC-FX, VB: Fixed an instance of left-shifting uint64 by 64 in the FPU emulation code.
March 14, 2015:
- GBA: Fixed a few instances of technically undefined behavior(shifting 32-bit int by >= 32, and left-shifting negative values) in arm.cpp.
March 11, 2015:
- Reworked a test in tests.cpp to better reflect the requirements of certain undefined behavior some code still (unfortunately) relies on, to avoid triggering an assert() during startup when compiled with llvm/clang 3.6.
March 6, 2015:
- PCE: Fixed a major VRAM DMA emulation regression introduced around version 0.9.16-WIP, that breaks some homebrew software.
- NES: Altered mapper 185 emulation to fix "Bird Week", "B-Wings", "Sansuu 1 Nen", "Sansuu 2 Nen", "Sansuu 3 Nen", and "Seicross (version 2)".
- PSX: Added a kludge to the core cheat file reading and writing code to work around the mess created by our flawed game ID generation code (the PS1 game library is enormous, and many games only have one track, leading to many collisions); effectively, the game's filename(which was previously regarded as a comment), is now used in addition to the game ID.
→ [MULTI] Mednafen x86/x64 0.9.38.3 Unstable
-- 0.9.38.3: --
March 4, 2015:
- NES: Fixed mapper 69 IRQ acknowledge behavior, per tip from tepples.
February 24, 2015:
- MD: Fixed an out-of-bounds array access in the 68K emulation code. Avoid passing NULL to memcpy() in netplay.cpp.
- MD: Fixed some code doing misaligned memory writes in vdp.cpp.
February 23, 2015:
- Avoid blitting to the screen when visibility is lost(i.e. window is minimized), to reduce CPU usage and to prevent memory usage from skyrocketing on
Windows under certain conditions.
February 22, 2015:
- PSX: Tweaked non-logical CD seek emulation to fix lockups in some versions of "Tomb Raider".
February 17, 2015:
- PSX: Fixed Justifier and GunCon x position being off when setting "psx.h_overscan" is set to "0".
→ [MULTI] Mednafen x86/x64 0.9.38.2 Unstable
-- 0.9.38.2: --
February 15, 2015:
- PSX: Fixed some miscellaneous minor issues in the triangle rasterization code.
- PSX: Fixed a GPU timing regression introduced around version 0.9.37; fixes a disappearing graphics glitch in "Tobal No.1".
→ [MULTI] Mednafen x86/x64 0.9.38.1 Unstable
February 11, 2015:
- NES: Subtract 3 from emulated 6502 stack pointer on reset, to match what reportedly occurs on a NES and to fix a certain poorly-programmed "Legend of Zelda" game hack.
February 9, 2015:
- Allow interrupting the virtual device input configuration process(it was broken in 0.9.38-UNSTABLE); though of course interrupting it will still leave the configuration in a broken state(but that's not a regression ;)).
- PSX: Fixed a bug that was causing a segfault on loading a PSF/EXE file(a regression introduced in 0.9.38-UNSTABLE).
February 8, 2015:
- Clear override settings on game close(for the benefit of forks/ports).
→ [MULTI] Mednafen x64 0.9.38 Unstable
-- 0.9.38-UNSTABLE: --
February 5, 2015:
- Lynx: Added support for custom palettes.
January 31, 2015:
- Split cdrom/audioreader.cpp into multiple files.
January 29, 2015:
- Dropped physical CD support.
- Throw an error, rather than crashing, in the CUE sheet reader if a track is missing.
- Throw an error in the CUE sheet reader if an M:S:F time contains a component out of range.
- Implemented rudimentary support for CD-i discs (images), but no actual CD-i emulation, of course(yet :p).
January 27, 2015:
- PSX: Added support for reading (synthesized) CD sector data located at MSF 00:00:00 through 00:01:74.
- Fixed completely broken synthesis of pregap data(mode 1/mode 2) sectors with CUE+whatever.
- PSX: Refactored leadout track sector data synthesis handling into the core CD reading code.
January 26, 2015:
- PSX: Host system file/disk access time is now partially masked by emulated seek time when using CD images(except TOC+BIN with
- embedded subchannel data), which should reduce the probability of sound buffer underruns when
- running with "cd.image_memcache" set to "0"(the default).
- The CloneCD format reader now always caches the subchannel file data in memory on load, regardless of the "cd.image_memcache" setting's value.
- Added setting "osd.message_display_time".
- Added undocumented setting "srwautoenable".
January 25, 2015:
- PSX: Fixed a problem that broke building after passing --disable-debugger to the configure script.
January 24, 2015:
- PCE_FAST, VB: Now dynamically-allocate the Blip_Buffer objects, and made very minor tangentially-related optimizations to the sound emulation code.
- Refactored command key processing to be a bit cleaner, and to fix a couple of issues in the process(avoid triggering a command if keys/buttons are pressed
- while Mednafen is starting up, and to skip the input.ckdelay delay when selecting a command key to remap after starting the process via F2); some of the
- changes could conceivably cause regressions, as the modified code was very old and convoluted.
January 18, 2015:
- PSX: Improved some Read*/SeekL versus status bits versus GetLocL semantics, to fix a lockup in "Harukanaru Toki no Naka de - Banjou Yuugi".
- PSX: SetLoc CDC command now generates an error on invalid arguments, per tests on a PS1.
January 17, 2015:
- PSX: Fixed the value that the "Mode" CDC parameter is reset to in the CDC Reset command; fixes lockups in "This Is Football 2" and
- "Disney's Pooh's Party Game: In Search of the Treasure".
- PSX: Fixed some issues with emulation of CDC command GetTD, per tests on a PS1.
- PSX: Improved CDC result FIFO emulation accuracy; fixes a startup lockup in the Japanese version of "CyberSled".
- PSX: Fixed a line-drawing regression from a Dec 28 change.
- PSX: Fixed a few minor bugs in the GPU RAM write and read commands, per tests on a PS1.
January 15, 2015:
- PSX: Tweaked CDC SeekL timing to fix a random lockup problem in Wing Commander 3.
January 14, 2015:
- Fixed a small memory corruption issue in the input grabbing/command key disable toggle code, and reworked the code to be more verbose in the status message it displays and to prevent activating certain combinations of input grabbing/command key disabling that can be confusing to deactivate.
January 13, 2015:
- PSX: Fixed some problems with multitap emulation that were preventing DualShock functionality(such as rumble) from working properly when the emulated DualShock was behind an emulated multitap.
January 11, 2015:
- PSX: Allow dithering on non-gradient lines(instead of only on gradient-colored lines), per tests on a PS1.
January 10, 2015:
- PSX: Fixed an off-by-1 saturation/clamping related bug in the RTPS/RTPT emulation code.
January 9, 2015:
- PSX: Improved emulation of the GPU info/VRAM read latches, per tests on a PS1.
- PSX: Added support for GPU texturing disable bits, per no$ notes and tests on a PS1(still need to implement the actual functionality of texturing
- disabling, though).
- PSX: Return GPU display mode bit 7 in GPU status port reads properly(though we still don't emulate the effects of setting that bit to 1).
January 1, 2015:
- PSX: Removed most of the event system pedantic sanity checks(and associated computational/cache overhead), as they've long outlived their usefulness.
December 29, 2014:
- No longer ignore settings in configuration files when the value is empty.
December 28, 2014:
- CDPLAY: Increased output volume by 3.5dB.
- Added support for per-game configuration override files.
- PSX: Fixed a minor line drawing bug, per tests on a PS1.
December 27, 2014:
- PSX: Fixed a few instances of left-shifting a negative value, and signed integer overflow.
December 26, 2014:
- PSX: Replaced SimpleFIFO usage in GPU and MDEC emulation with a new FastFIFO class.
December 25, 2014:
- PSX: Altered an emulation loop exit condition to not be based on psx.slstart* and psx.slend* settings(to fix a potential desynchronization issue with netplay and input-recording movies).
- Removed VLA usage in qtrecord.cpp.
December 24, 2014:
- PSX: Tweaked the region detection heuristics to support a hacky Russian translation of Tomb Raider 1.
- Added MDFN_lzcount32() inline function to math_ops.h to replace direct usage of __builtin_clz() in psx/cpu.cpp.
- PSX, PC-FX, VB: Added alternative to computed-goto in the CPU emulation cores, for crazy people who want to compile (parts of) Mednafen
- with MSVC.
December 23, 2014:
- PSX: Fixed a bug that could cause a significant mischeduling of timer/root-counter 1's IRQ event under certain conditions.
- PSX: Brought MDEC decode timing closer to what it is on a PS1; fixes stuttering issue in the early FMV-background sequence
- in in Parasite Eve II.
December 21, 2014:
- Replaced usage of case-range and VLAs with non-GNUish alternatives in:
→ [MULTI] Mednafen x86/x64 0.9.37.1
-- 0.9.37.1: --
December 19, 2014:
- Fixed some issues causing compilation errors on gcc 4.7.x.
- Conditionalize the compilation of shared hardware emulation components(such as 68K, Z80, YM2612, etc. emulators) based on what emulation modules
- are being compiled in, since support for loading external emulation modules never went anywhere, and if we do eventually add support for it, the exported
- symbols won't include the common specific hardware emulation components.
- Fixed some code causing compiler errors with clang 3.4.0.
- Fixed broken loading of save states made with 0.9.37+ on big-endian platforms(0.9.37 regression).
- fflush() before fstat() on the underlying file descriptor in FileStream::size() if the stream is open for writing.
- December 18, 2014:
- Added zlib type-size sanity tests to tests.cpp
- _LARGEFILE64_SOURCE and _LARGEFILE_SOURCE are now defined to "1" in config.h, for zlib purposes.
December 17, 2014:
- PSX: Avoid undefined behavior(that wasn't currently causing any problems) in the CPU core.
December 16, 2014:
- PSX: Clamp final SPU output samples(before volume adjustment and resampling) properly; lack of it wasn't causing any problems per-se, but it could have
- been an issue in the future.
- GB: Load GBC custom palette from "gbc.pal", not "gb.pal"(0.9.37 regression).
→ [MULTI] Mednafen x64 0.9.37 Unstable
UNSTABLE x64 0.37
This release is marked as UNSTABLE due to the huge number of internal changes, which may have caused a regression or three. Many of the changes were concerning file access, so it may be prudent to backup your save game memory files before using this release.
- PS1 save state functionality is enabled by default now.
- PS1 emulation is a bit more CPU-intensive than in 0.9.36.5, more so in 32-bit builds than 64-bit builds, mostly due to some accuracy-related improvements.
- Netplay functionality now requires the new mednafen-server 0.5.2.
Use gcc 4.9.2+ to compile the source code. 4.8.3 might work, but 4.7.x and older definitely won't anymore. Latest LLVM clang should work too, but I've not tested it.
Notable end-user changes compared to 0.9.36.5:
→ [MULTI] Mednafen 0.9.36.5
0.9.36.5: November 5, 2014:
- NES: Fixed a minor issue that could break compiling after --disable-nls was passed to the configure script.
- Added support for automatic loading and usage of redump.org "SBI" files when loading CUE sheets; the files should have the same base filename as the CUE sheet, and the file extension case should match the case of the corresponding character in the CUE sheet filename file extension.
- "Super Bandicoot Luigi (Moon, Niflheim, Australia).CuE" -> "Super Bandicoot Luigi (Moon, Niflheim, Australia).SbI"
- PSX: Fixed half-implemented broken implementation of CDC command 0x00; fixes lockups in the European PAL releases of "Spyro 2" and "Spyro - Year of the Dragon".
→ [MULTI] Mednafen 0.9.36.4
-- 0.9.36.4: September 8, 2014:
- Fixed a piece of ancient mouse button mapping/reading code that was so broken it worked most of the time; fixes broken mapping of more exotic(other than left, center, and right) physical mouse buttons to virtual buttons.
- Lynx: Fixed a minor stereo sound emulation issue thanks to a patch from "sage".
- Lynx: Fixed a bug that could cause Mednafen to crash when a game attempts to power-down the emulated Lynx(which may occur if a game is left unattended for a prolonged period of time).
- WonderSwan, PC-FX, MD, NGP: Fixed several violations of C/C++ sequence point rules in relation to call order in expressions of functions with side effects, that could lead to undefined/wrong behavior with certain types of compiler optimizations and features(e.g. PC-FX emulation was broken on gcc 4.9.x with -fsanitize=undefined -std=gnu++11).
-- 0.9.36.3: -- August 3, 2014:
- NGP: Fixed a potentially-exploitable overflow bug in the flash dirty block list code.
- PCE, PCE_FAST: Fixed bug(from sloppy handling of errors) that caused battery-backed save game file destruction if an error(e.g. missing CD BIOS, memory allocation failure, etc.) occurred during game load and initialization.
- PSX: Fixed a bug that caused a crash when trying to use save states during PSF playback/PS-EXE execution.