1-- 1.26.1: -- 2 3November 8, 2020: 4 PSX: Fixed various inaccuracies in the SPU reverb emulation code. 5 6 PSX: Fixed quasi-benign dereferencing of a null pointer in the GPU code when playing a PSF. 7 8November 3, 2020: 9 SNES-Faust: Fixed a crash when an MSU1-enabled game tried to play MSU1 audio but no audio tracks existed. 10 11 SNES-Faust: Only create MSU1 multithreaded audio reader object if at least one audio track is available. 12 13November 2, 2020: 14 SNES-Faust: Fixed a design flaw in the MSU1 audio track loading code that broke loading of audio tracks when the game's filename included a "%" character. 15 16November 1, 2020: 17 SS: Fixed compilation errors after configuring with --disable-debugger. 18 19 SS: Fixed compilation errors with clang. 20 21-- 1.26.0-UNSTABLE: -- 22 23October 26, 2020: 24 SS: Added "The Lost World: Jurassic Park" to the internal database of games to enable full cache emulation with, to fix most rock face graphical glitches. 25 26October 25, 2020: 27 SS: Added "Corpse Killer" to the internal database of games to enable full cache emulation with, to fix the glitchy rotation-zoom effect. 28 29October 24, 2020: 30 SS: Fixed major bug, existing since Saturn save state support was added, in the SCU save state code that caused wrong state to be saved(and later restored) 31 when an SCU DMA level in indirect mode was active. 32 33 SS: Added "Kaitei Daisensou"/"In the Hunt" to the internal database of games to enable SH-2 read/write VDP1 draw slowdown with, to fix FMV tearing. 34 35 SS: Added "Zero Divide" to the internal database of games to use the data cache read bypass kludge with, to fix a graphical glitch with character portraits. 36 37October 23, 2020: 38 SS: Made changes to prevent the CDB emulation from reporting PLAY status until the second sector is read after a seek completes; fixes game-breaking 39 problems in "Break Point", "DJ Wars", "Hop Step Idol", and "Tennis Arena". 40 41 SS: Fixed inaccuracies with how CDB playback buffer full auto-pause and resume works; fixes occasional hangs of finite duration in "Dragon Force II" and 42 "World Cup France '98: Road to Win" when trying to skip FMVs. 43 44October 22, 2020: 45 SS: Added "Mujintou Monogatari R: Futari no Love Love Island" to the internal database of games to use the data cache read bypass kludge with, 46 to fix glitches when character portrait graphics change. 47 48October 21, 2020: 49 SS: Added "Doraemon: Nobita to Fukkatsu no Hoshi" to the internal database of games to use the data cache read bypass kludge with, 50 to fix the blank Game Over screen. 51 52 SS: When a CDB 'Get CD Device Connection' command is issued very shortly after a 'Reset Selector' command, the 'Get CD Device Connection' command 53 will now be executed before the resetting effects of the 'Reset Selector' command occur. Fixes startup hang in the USA version of "Independence Day". 54 55October 20, 2020: 56 SS: Slowed down emulated VDP1 pixel plotting performance by a bit less than 20%(10% in 8bpp mode); fixes prematurely cut-off voices in "Paneltia Story", 57 and reduces tearing in "Yu-No". 58 59October 18, 2020: 60 SS: Added "3D Baseball", "The Crow", "NBA Action", "NFL Quarterback Club 96", "Solar Eclipse", and "Titan Wars" to the internal database of games to 61 enable full cache emulation with, to fix minor FMV glitches. 62 63 SS: Added "Thunder Force Gold Pack 1" to the internal database of games to enable full cache emulation with, to fix the glitchy ship sprite in the ending 64 of "Thunder Force III". 65 66 SS: Added the Europe releases of "Virtua Cop" and "Virtua Cop 2" to the internal database of games to enable full cache emulation with, to fix 67 startup hangs. 68 69 SS: Added "Yu-No" to the internal database of games to enable full cache emulation with, to fix the problem of the intro FMV ending too soon. 70 71 SS: Added "Horror Tour" to the internal database of games to enable full cache emulation with, to fix graphical glitches on the save and load screens. 72 73 SS: Added "Falcom Classics II" to the internal database of games to enable SH-2 read/write VDP1 draw slowdown with, to fix tearing in the intro FMV of "Ys II". 74 75 SS: Added "Tokimeki Memorial: Forever With You" to the internal database of games to enable SH-2 read/write VDP1 draw slowdown with, to fix the glitchy 76 arm sprite in the Konami intro. 77 78 SS: Added "Virtua Fighter Kids" to the internal database of games to use the data cache read bypass kludge with, to fix a major FMV glitch. 79 80October 17, 2020: 81 SS: Made a very small SSE2-based optimization to the cache tag evaluation code. 82 83October 16, 2020: 84 SS: Removed incorrect write mirrors for the SH-2 CCR register; fixes FMV glitches in "NFL Quarterback Club 97". 85 86 SS: When full cache emulation is enabled(e.g. via database), alternate slave CPU and bus sharing emulation code will be used, to reduce 87 disproportionate sharing of the bus(it's still not perfect, however). 88 89 SS: SH-2 PC-relative MOV.W and MOV.L loads are now correctly treated as instruction fetches instead of data fetches with respect to the 90 OD/ID bits of CCR. 91 92 SS: The SH-2 WB/EX pipeline stall emulation logic is now always enabled, instead of only being enabled in full cache emulation mode as it was previously. 93 94October 12, 2020: 95 SS: Moved SH-2 cache entry invalid bit from bit31 of the internal combined tag variable to bit0, for slightly better code generation. 96 97October 11, 2020: 98 SS: Slave SH-2 on/off is now handled outside of the regular event handling system to prevent a crash under certain conditions. 99 100October 9, 2020: 101 SS: Extended the handling of VDP1 command execution slowdown on SH-2 CPU reads/writes to also include SH-2 DMA accesses. 102 103October 5, 2020: 104 SS: Bumped up minimum seek timing delay, to compensate for upcoming general CPU timing improvements in the games sensitive to seek timing. 105 106October 4, 2020: 107 SS: The SR value loaded with RTE is now properly masked. 108 109October 2, 2020: 110 SS: Allow the SMPC joystick reading process to be aborted earlier on, while still waiting for vblank to end; fixes another hang in "QuoVadis". 111 112 SS: Added "Wolf Fang SS: Kuuga 2001" to the internal database of games to enable SH-2 CPU read/write VDP1 draw slowdown with, to 113 fix glitchy graphics in the player's robot. 114 115 SS: Added "Mahjong Doukyuusei Special" to the internal database of games to use the data cache read bypass kludge with, to fix the missing 116 background graphics layer on disc 2. 117 118 SS: Added "Kidou Senkan Nadesico: Yappari Saigo wa Ai ga Katsu" to the internal database of games to use full cache emulation with, to fix a hang. 119 120 SS: Implemented emulation of the timing effects of the B-bus write buffer on SH-2 CPU writes; fixes hang in "QuoVadis". 121 122September 4, 2020: 123 SNES-Faust: Fixed bug in the multithreaded PPU renderer that could cause massive graphics corruption when a game interleaves reads and writes to 124 VRAM without resetting the VRAM address, like in "NBA Pro Basketball: Bulls vs Blazers". 125 126August 28, 2020: 127 SS: Delay CDB status position info update by about 44us after a seek request(via Play command, or otherwise); fixes missing graphics in 128 the intro of "Magical Drop 3". 129 130-- 1.25.0-UNSTABLE: -- 131 132June 27, 2020: 133 SS: Implemented more accurate emulation of VDP1 drawing of excessively-large primitives. 134 It's not perfect, there's still something weird going on with antialiasing, and the effects on gradient shading 135 and texturing are not fully emulated, but it's enough to fix missing graphics in the attract mode of "Virtua Cop", 136 and a hang after defeating the final boss in "Rayman". 137 138 SS: Fixed an off-by-1 inaccuracy in the edge stepping code for sprites and polygons, with minor visible effects in 139 non-rectangular sprites/polygons. 140 141June 26, 2020: 142 SS, MD: Fixed/Implemented M68K MULU and MULS instruction timing. 143 144June 24, 2020: 145 SS: Added wait states to M68K writes; fixes hang in "Lunar" after the Meribia pub singer's singing, that was caused by a timer being 146 reloaded too quickly in an interrupt handler. 147 148June 13, 2020: 149 SS: Allow VDP1 primitive drawing code to be suspended(and later resumed) mid-drawing when it's consumed too much emulated time; fixes excessive CPU usage during 150 the FMV in "Dark Seed II". 151 152June 4, 2020: 153 SS: Added "Senken Kigyouden", "Xian Jian Qi Xia Zhuan", "Virtua Fighter", and "Virtua Fighter Remix" to the internal database of games to 154 enable full cache emulation with, to fix graphical glitches. 155 156May 17, 2020: 157 SS: Implemented more complete emulation of SCSP's buggy(inter-slot contamination) linear interpolation on FM carrier slots. 158 159-- 1.24.3: -- 160 161May 1, 2020: 162 SS: Implemented more complete emulation of the SCSP short waveform mode, after running further tests; fixes excessive distortion in a 163 sound effect in "Sega Ages: OutRun", a regression introduced in Mednafen 1.24.2. 164 165-- 1.24.2: -- 166 167April 25, 2020: 168 Fixed broken support for systems without any usable OpenGL implementation available. 169 170April 24, 2020: 171 Apple2: Adjust disk angle variable upon disk change, partially sanitize the disk angle variable on state load, and print out a debug error 172 message instead of triggering an assert() in the disk reading code, to prevent Mednafen from aborting out in certain circumstances involving disk 173 changing and state loading. 174 175April 21, 2020: 176 Apple2: Added missing keyboard reading variable to save states. 177 178April 7, 2020: 179 SS: Fixed a few inaccuracies with the SCSP waveform loop handling. 180 181April 6, 2020: 182 SS: Added emulation of SCSP slot short waveform mode bit. 183 184April 5, 2020: 185 SS: Implemented the buggy linear interpolation that occurs on the SCSP when FM is used. 186 187April 3, 2020: 188 SS: Added emulation of SCSP slot EG bypass bit. 189 190 SS: Implemented SCSP register mirroring. 191 192-- 1.24.1: -- 193 194February 27, 2020: 195 NES: Changed some macros in the CPU emulation code to not have leading underscores. 196 197February 25, 2020: 198 Use sem_clockwait() or sem_clockwait_np() when available, instead of sem_timedwait(). 199 200 NES: Don't memset() MDFN_PixelFormat object. 201 202February 23, 2020: 203 Fixed build errors on FreeBSD relating to the multithreading code. 204 205February 22, 2020: 206 Fixed broken semaphore emulation code used on non-Windows platforms when sem_timedwait() is not available(1.24.0-UNSTABLE regression). 207 208February 15, 2020: 209 Altered Linux joystick API detection in the configure script, to avoid compiling with Linux joystick support in lieu of SDL joystick support on *BSD systems 210 with Linux header files installed. 211 212February 11, 2020: 213 Fixed AltiVec-related build errors on 64-bit POWER/PPC. 214 215 SS: Added kludges to fix NBG2/NBG3 background layer offset problems in "Fighters Megamix". 216 217February 2, 2020: 218 SNES-Faust: Replaced assert() in the DSP-1 emulation code with a SNES_DBG() 219 220January 23, 2020: 221 PSX: Implemented a partial fix for missing notes/instruments in the music of "Dragon Ball GT: Final Bout". 222 223December 30, 2019: 224 PSX: Don't ignore the sample loop address set via ADPCM header when the loop address register was written only before the end of voice on startup delay. 225 Fixes sound effect glitches in "Re-Loaded: The Hardcore Sequel". 226 227-- 1.24.0-UNSTABLE: -- 228 229December 19, 2019: 230 PSX: Handle SPU CD volume as signed 16-bit instead of unsigned; fixes lowest volume setting in "Star Wars Dark Forces". 231 232December 18, 2019: 233 PSX: Tweaked PAL pixel aspect ratio, tweaked nominal FPS values, added setting "psx.correct_aspect", and fixed light gun Y positioning with PAL games. 234 235December 16, 2019: 236 SNES-Faust: Added SDD-1 emulation. 237 238November 26, 2019: 239 SNES-Faust: Allow emulation to switch away from the SPC700 during execution of opcode 0xFA, between the read and write, to fix bonkers 240 audio that leads to a hang in the "Tenshi no Uta" game. 241 242 SNES-Faust: Extended DMA NMI delay kludge to cover 8-bit LDX #imm to fix hang in "Frisky Tom" in "Nichibutsu Arcade Classics". 243 244 SNES-Faust: Added DSP-2 emulation. 245 246November 19, 2019: 247 SNES-Faust: Added MSU1 support. 248 249 SNES-Faust: Added a multithreaded PPU renderer, controlled via the new "snes_faust.renderer" setting, disabled by default. 250 251 SNES-Faust: Added SuperFX overclocking support, controlled via setting "snes_faust.superfx.clock_rate". 252 253 SNES-Faust: Added SuperFX instruction cache emulation support, controlled via setting "snes_faust.superfx.icache", disabled by default. 254 255 SNES-Faust: Added support for Game Genie cheats(entered via Mednafen's cheat system). 256 257 SNES-Faust: Added setting "snes_faust.region" to allow for overriding the automatic region detection and emulating one region while reporting the different region to the game. 258 259November 17, 2019: 260 On Windows, call CoInitializeEx() with COINIT_MULTITHREADED before calling SDL_Init(), to prevent potential initialization errors with Mednafen's 261 WASAPI sound code. 262 263November 16, 2019: 264 Using drive-relative paths on Windows should no longer make a mess due to Mednafen looking for and putting files in the wrong place. 265 266November 14, 2019: 267 SS: Removed "ss.midsync" setting; the functionality it controlled is now always enabled. 268 269 Added settings "affinity.cd", "affinity.emu", "affinity.video", and "ss.affinity.vdp2" to specify CPU thread affinity masks for the CD read threads, 270 main emulation thread, video blitting thread, and Saturn VDP2 rendering thread, respectively. Setting thread affinities properly can improve 271 Saturn emulation performance on a dual-core CPU with hyperthreading. 272 273 Cleaned up multithreading code and API. 274 275November 10, 2019: 276 Removed "using namespace Mednafen;" from types.h, and related changes. 277 278October 25, 2019: 279 SNES-Faust: Ignore frameskip if interlace mode is enabled, to avoid feeding uninitialized data into the deinterlacer which leads to a crash. 280 281September 18, 2019: 282 Implemented workaround in OwlResampler_neon.inc for a C++ parsing bug in gcc 9.x. 283 284September 13, 2019: 285 Apple2: Renamed(with backwards-compatibility aliases) video mode "rgb_alt1" to "rgb_alt" and "rgb_alt2" to "rgb_alt_tfr", and added new video mode "rgb_tfr". 286 287 Apple2: Added support for 32-color custom palettes(will automatically enable a text fringe reduction RGB mode if used). 288 289-- 1.23.0-UNSTABLE: -- 290 291August 26, 2019: 292 Apple2: Added support for an RGB-style video mode, selectable with the new setting "apple2.video.mode". 293 294 SS: Added "Shunsai" to the internal database of games to use the data cache read bypass kludge with, to fix various graphical glitches. 295 296August 25, 2019: 297 Expanded and harmonized the accepted value ranges for settings "sfspeed" and "ffspeed" to 0.25 through 15, for greater versatility. 298 299 NGP: Added very incomplete emulation of BIOS system call "VECT_FLASHERS", per tip from stellarporter. Fixes eventual hang in "The Last Blade". 300 301 NGP: Fixed TLCS-900H new IFF calculation when taking an interrupt, per tip from trinemark. Fixes broken voice playback in 302 "Densetsu no Ogre Battle Gaiden". 303 304 NGP: Fixed potential division by zero in the TLCS-900H MINC* and MDEC* instructions emulation(the emulation of the instructions is still almost certainly wrong, 305 though), per tip from byuu. 306 307August 24, 2019: 308 PCE: Changed the Super CD-ROM^2 memory identification signature to match a Duo instead of a PCE with a system card, to fix compatibility 309 issues with some US Super CD-ROM^2 games when using a US system card image, per tip from elmer. 310 311August 22, 2019: 312 SS: Added "Ronde" to the internal database of games to use the data cache read bypass kludge with, to fix missing graphics 313 on the title screen and main menu. 314 315August 20, 2019: 316 SS: Added "Thunder Force Gold Pack 1" to the internal database of games to use the data cache read bypass kludge with, 317 to fix explosion graphic glitches in "Thunder Force III". 318 319 SS: Fixed a bug that could cause erroneous VDP1 framebuffer erasure when the lower Y coordinate for the erase window was too large. 320 321August 12, 2019: 322 SS: Added "Thunder Force Gold Pack 2" to the internal database of games to use the data cache read bypass kludge with, 323 to fix quasi-random hangs when pausing the game in "Thunder Force AC". 324 325 SS: Corrected the value the SCU DMA mode registers are initialized to on reset. 326 327June 18, 2019: 328 SS: Added "Formula Grand Prix - Team Unei Simulation" to the internal database of games to use the data cache read bypass kludge with, 329 to fix a hang after the title screen. 330 331 SS: Added "Virtual Mahjong" to the internal database of games to use the data cache read bypass kludge with, to fix graphical glitches on the character 332 select screen. 333 334June 16, 2019: 335 SS: Slowed down SCU DMA from SDRAM/SH-2 bus slightly, though I'm not sure what is the origin of the measured overhead/slowdown on a Saturn. 336 Fixes FMV flickering in "Lunar". 337 338 SS: Added partial emulation(CS0 and CS1, SH-2 non-DMA accesses and SCU DMA accesses) of the timing effects of the SCU A-bus configuration registers. 339 340 SS: Added "Tech Saturn 1997.6" to the internal database of games for which 1MiB RAM cart emulation is enabled, for its "Groove on Fight" demo. 341 342 SS: Implemented a crude simulation of the VDP1 command execution slowdown that occurs when an SH-2 CPU writes to VDP1 RAM or registers, activated 343 via the horrible hacks mechanism; fixes text flickering in "Arcade's Greatest Hits", most rescue text flickering in "Burning Rangers"(at least on the first stage), 344 graphical glitches in "Whizz", and some of the graphical glitches in "All-Star Baseball 97". 345 346 SS: Added a horrible hack to fix the hang in "Fighters Megamix" that occurred after the intro FMV played(or was interrupted). 347 348 SS: Added a horrible hack to fix the hang at the end of disc 1 of "Grandia". 349 350 SS: Added a per-game horrible hacks mechanism. 351 352 SS: Added "Albert Odyssey" to the internal database of games to use full cache emulation with, to fix battle text truncation. 353 354 SS: Added "Die Hard Trilogy", "GeGeGe no Kitarou", "Nobunaga no Yabou Shouseiroku", "Space Jam" to the internal database of games to use full 355 cache emulation with, to fix hangs/crashes. 356 357 SS: Added "Gex" and "Slam 'n Jam 96" to the internal database of games to use full cache emulation with, to fix minor FMV glitches. 358 359 SS: Added "Policenauts" to the internal database of games to use full cache emulation with, to fix screen flickering on disc 2. 360 361 SS: Full cache emulation(enabled via database) now also enables emulation of SH-2 WB/EX pipeline stalls. 362 363 SS: Tweaked the kludgey CPU instruction read/write penalty during SH-2 DMA to be higher in some circumstances; fixes major graphical glitches in the 364 later stages of "Shienryu" when on arcade mode. 365 366 SS: Added "Dragon Force II" to the internal database of games to use the data cache read bypass kludge with, to fix major game logic errors 367 during battles. 368 369March 15, 2019: 370 SNES-Faust: Added CX4, SuperFX, and SA-1 emulation. 371 372 SNES-Faust: Made various changes to try to improve game compatibility. 373 374-- 1.22.2: -- 375 376April 23, 2019: 377 PSX: Fixed a regression introduced in 1.22.0-UNSTABLE that broke a few PS1 games(e.g. SimCity 2000 and Rise 2). 378 379 Fixed issues with inline functions in the QuickLZ code that could cause linker errors when compiling with optimizations disabled. 380 381April 14, 2019: 382 Apple2: Added basic WOZ 2.0 disk image support. 383 384April 13, 2019: 385 NGP: Fixed a sequence point rule violation that could cause "Gals' Fighters" to malfunction when Mednafen was compiled with clang, 386 per tip from stellarporter. 387 388 SS: Added the European release of "Theme Park" to the internal database of games to use the data cache read bypass kludge with, 389 to fix a crash/hang during the intro FMV. 390 391 Lynx: Fixed an old heap buffer overflow bug that could be triggered if the emulated game set up registers and RAM in a 392 certain way. 393 394March 18, 2019: 395 PCE: Fixed an old bug(looks like from around a decade ago) in the HES playback code; it caused periodic high IRQ latency, 396 which resulted in timer IRQ-driven DDA playback sounding rougher than it should have. 397 398-- 1.22.1: -- 399 400January 27, 2019: 401 Changed the default sound device for the OpenBSD sound driver from "/dev/audio" to "/dev/audio0". 402 403January 26, 2019: 404 Semaphores are now implemented with condition variables and mutexes when compiling against a POSIX threads implementation without sem_timedwait(). 405 406January 23, 2019: 407 PC-FX: Replaced old RAINBOW IDCT code with newly-written code. 408 409January 20, 2019: 410 Some hotkeys in the debugger's memory editor weren't being ignored properly when in text entry mode; fixed. (Regression introduced in 1.21.0-UNSTABLE) 411 412January 1, 2019: 413 Apple2: Corrected minimum allowed value for the "apple2.video.mono_lumafilter" setting(was -2 when it should have been -3). 414 415 SS: Corrected line-scroll handling in double-density interlaced mode with non-zero LSS; fixes broken background graphics effect in Dural's stage in "Virtua Fighter 2". 416 417 SS: Added "Linkle Liver Story" to the internal database of games to use the data cache read bypass kludge with, to fix a crash/hang when going to the world map. 418 419-- 1.22.0-UNSTABLE: -- 420 421December 11, 2018: 422 SS: Added support for directly loading <= 1MiB bootable cart ROM images, with the expected file extension being "ss", for debugging and testing 423 purposes. 424 425December 2, 2018: 426 SS: Added "Fighting Vipers" to the internal database of games to use the data cache read bypass kludge with, to fix the problem of the 427 computer-controlled opponent sometimes losing the will to not be a statue. 428 429December 1, 2018: 430 PSX: Memory cards are now backed up on startup(maximum number of backup copies kept for each memory card is 5). 431 432November 30, 2018: 433 PCE: Increased CD read startup delay per tip from dshadoff. Fixes ADPCM voice playback issues in "Downtown Nekketsu Monogatari" when text 434 speed is set to fast. 435 436 MD: Fixed a few errors in the internal automatic multitap database, per tip from clobber. 437 438 SS: Added setting "ss.cart.auto_default". 439 440 NES: Removed apparently erroneous iNES header correction database entry for "Dragon Quest II" that was breaking the game. 441 442November 6, 2018: 443 VB: Added the ability to toggle the state of the low battery sensor bit; configure the device on virtual input port 2(e.g. ALT+SHIFT+2) to assign a 444 key/button to this function. 445 446November 4, 2018: 447 PSX: Added a pseudorandom component to Pause command timing to address loading-related hangs in "Colony Wars - Vengeance (Europe)" 448 and "Army Men - Air Attack (Europe)". 449 450 PSX: Generate a seek error if the tray is opened while the CD drive is not stopped; fixes broken disc switching in "Arc the Lad III". 451 452November 3, 2018: 453 PSX: Improved emulation of the behavior of CDC command 0x0A per tests on a PS1; fixes hang in "Goryuujin Electro". 454 455November 2, 2018: 456 PSX: Don't set the autopause track test value unless autopause is enabled; fixes missing music in "Pitball". 457 458 PSX: Delay first CD-DA report after playback begins, per tests on a PS1; fixes missing music in "Roswell Conspiracies - Aliens, Myths & Legends". 459 460October 31, 2018: 461 PSX: Improved timing of CDC command 0x0A per tests on a PS1; fixes missing music and hangs in "Grind Session". 462 463 PSX: Altered seek and pause timing and behavior per tests on a PS1; fixes hangs in "Incredible Crisis", "Ballerburg - Castle Chaos", "Transformers - Beast Wars Transmetals", 464 and "Simple 1500 Series Vol. 057 - The Maze". 465 466October 28, 2018: 467 The settings management code will now throw an exception if a floating-point setting is NaN. 468 469 Fixed a crash that occurred when "debugger.autostepmode" was set to "1" and a game was loaded for a system for which debugger functionality was not implemented. 470 471 NativeVFS, FileStream, and GZFileStream methods taking a path will now throw an error when the path contains a null character. 472 473October 23, 2018: 474 SNES-Faust: Added recognition of files with "fig" and "swc" file extensions as SNES ROM images. 475 476October 9, 2018: 477 Altered the variants of MDFN_rtrim(), MDFN_ltrim(), MDFN_trim(), MDFN_zapctrlchars(), MDFN_strazlower(), MDFN_strazupper(), and UTF8_sanitize() 478 that operate on a mutable std::string to take a pointer to the std::string instead of a non-const reference, and added variants that take a const std::string 479 reference and return a std::string result. 480 481October 8, 2018: 482 Dropped support for "game set" hashes used to change the naming of save state and save game files. The feature was mostly broken by changes made years ago, 483 and is redundant now with M3U support. Save game files for multi-disc PC-FX games created in previous versions of Mednafen will need to be renamed to be 484 seen by this and newer versions of Mednafen. Other files, including save states, should generally be unaffected, unless the user has changed filesys.fname_* 485 settings to use the %F specifier where they wouldn't by default. 486 487 Removed usage of the deprecated "register" keyword in some old code. 488 489October 7, 2018: 490 Adjusted placement of MDFN_FASTCALL and NO_INLINE to fix some compilation errors with MSVC. 491 492 In addition to nonvolatile memory backup files as before, any missing directories in the file path for input-recording movies, save states, screen snapshots, and 493 nonvolatile memory files are now created as necessary, to increase the versatility of the filesys.fname_* settings. 494 495October 6, 2018: 496 Implemented partial virtual filesystem support via classes VirtualFS, NativeVFS, and ZIPReader. 497 498 Emulation modules' loading of files referenced from the main file being loaded is now done through its associated VFS. This does create a 499 small backwards-compatibility issue with PSF-family(PSF, SSF, GSF, etc.) files, in that previously a ZIP'd PSF-family file that referenced 500 a library file would have the referenced file loaded from the directory containing the ZIP file, but now will 501 have it loaded from within the same ZIP file. 502 503October 4, 2018: 504 NGP: Replaced min/max macros with usage of std::min/std::max. 505 506September 30, 2018: 507 Modified usage of std::swap in OwlResampler.cpp to not explicitly(and unnecessarily) specify the template argument, to fix a compilation error on MSVC. 508 509 Reworked FileStream.cpp to fix some issues causing errors on MSVC. 510 511 GBA: Fixed a regression introduced in 0.9.47 that partially broke compatibility with save states created in previous versions(< 0.9.47), while 512 preserving compatibility for save states created in versions between and including 0.9.47 and 1.21.3. 513 514September 29, 2018: 515 SNES-Faust: Added RAM cheat support(main WRAM only for now). 516 517 SNES-Faust: Added emulation of PPU-area open bus/bus read latches; fixes missing sprites in the water stage of "Mario's Time Machine". 518 519 SNES-Faust: Corrected H/V latch reading to use two separate high/low byte toggles. 520 521September 24, 2018: 522 SNES-Faust: Made minor changes to the CPU emulation core to not require computed goto support in the compiler. 523 524September 23, 2018: 525 Added "blend" and "blend_rg" deinterlacers. 526 527 Moved multithreading management code into the core. 528 529 Encapsulated most(ish) core Mednafen code in the "Mednafen" namespace. 530 531 Slightly improved the quality of audio output by SwiftResampler when running at the higher quality settings. 532 533September 22, 2018: 534 Moved NES audio resampler so it can be used by any emulation module, and renamed it to "SwiftResampler". 535 536 Added an SSE intrinsics-utilizing MAC loop to OwlResampler as a fallback(for the inline assembly) when compiling with MSVC. 537 538 Added an SSE2 intrinsics-utilizing MAC loop to SwiftResampler as a fallback(for the inline assembly) when compiling with MSVC. 539 540September 21, 2018: 541 Wrote new Kaiser-windowed sinc generation code, and modified OwlResampler and the NES resampler to use it. It shouldn't have any particularly noticeable end-user 542 effects, other than slightly different startup performance(assuming no mistakes were made :p). 543 544September 11, 2018: 545 SS: Emulated input devices' internal states were not being reset on virtual power toggle; fixed. 546 547September 5, 2018: 548 SS: Reorganized SCSP DSP emulation code to make the lifetime of variables clearer, for a possible x86_64 dynarec in the future. 549 550August 30, 2018: 551 Modified SHA-256 hashing code to allow for piecemeal hashing of data, instead of requiring the hash to be generated from one contiguous 552 chunk of memory. 553 554August 8, 2018: 555 PSX: Fixed a startup crash that could occur with a malformed or corrupted SYSTEM.CNF file. 556 557July 31, 2018: 558 Replaced MD5 hashing code with newly-written code. 559 560July 29, 2018: 561 Replaced SDL threading code with new code that uses pthreads directly. 562 563July 28, 2018: 564 Replaced Q subchannel CRC16 calculation code from cdrdao with newly-written code. 565 566July 24, 2018: 567 gzip-compressed ROM/disk image files are now recognized by file extension instead of header magic. 568 569June 13, 2018: 570 SS: Fixed an emulation inaccuracy with the handling of the SH-2 "mac.l" instruction when saturation is enabled, per tests on a SS. 571 572-- 1.21.3: -- 573 574April 29, 2018: 575 SNES: Fixed an off-by-1 bug in the PPU code that would cause writing past the end of the OAM tile list array. 576 577April 24, 2018: 578 SS: Added "House of the Dead (Japan)" to internal database of games to use the data cache read 579 bypass kludge with, to fix a game crash on the gun calibration screen. 580 581 SS: Added "Virtua Fighter Kids (Java Tea Original)" and "World Series Baseball" to internal database of games to use the data cache read 582 bypass kludge with, to fix gameplay glitches. 583 584April 22, 2018: 585 Removed some unnecessary memory allocations in the old settings to argument parsing glue code. 586 587 Fixed a crash bug with 2xSaI-family scalers during initialization(regression introduced in 1.21.0-UNSTABLE). 588 589 Create the Mednafen base directory(e.g. ~/.mednafen) before opening the lockfile to fix a startup error when the directory does not already exist(regression 590 introduced in 1.21.0-UNSTABLE). 591 592April 21, 2018: 593 SS: Added kludge to fix layer offset problem in "Alien Trilogy". 594 595 SS: Added "WipEout" to internal database of games to use the data cache read bypass kludge with, to fix a hang that occurred when trying to exit gameplay 596 back to the main menu. 597 598-- 1.21.2: -- 599 600April 2, 2018: 601 Updated bundled copy of Tremor to address a security vulnerability. 602 603 SS: Improved emulation of SCU DSP DMA to program RAM, per tests on a SS(still nowhere near perfect, the way it's implemented on hardware is kind of 604 horrible, but it should work ok if games use it how it's meant to be used); fixes graphical glitches in "Shining Force III - Scenario 2", and perhaps 605 in the other "Shining Force III" games as well. 606 607 SS: Flush the prefetched SCU DSP instruction when PC is set via PPAF, instead of when END/ENDI executes or when execution is forcibly stopped, per tests on a SS. 608 609 SS: Disallow SCU DSP LOP from being written in a looped single instruction unless it's the final iteration, per tests on a SS. 610 611 SS: Allow SCU DSP LOP to underflow to 0xFFF with LPS and BTM, per tests on a SS. 612 613-- 1.21.1: -- 614 615March 9, 2018: 616 Enabling the automatic save state loading/saving feature will no longer cause an error to be outputted on game load if the save state does not exist. 617 618March 3, 2018: 619 Added support for compiling and linking with external LZO instead of the bundled miniLZO. 620 621 A CD image loading hint will now be appended to the ROM image too large error message in certain circumstances. 622 623February 25, 2018: 624 PC-FX: Added a missing variable to save states. 625 626 (Re)Added backwards-compatibility "video.driver" setting value aliases. 627 628February 24, 2018: 629 NES: Misc minor fixes for a few bootleg mappers. 630 631 NES: Added missing data to VS Unisystem save states. 632 633 NES: Added missing variable to mapper 64 save states. 634 635 NES: Added missing save state support to the mapper 22 code. 636 637 NES: Fixed improper handling of an MMC1 variable in save states. 638 639February 22, 2018: 640 Fixed handling of the "osd.state_display_time" setting to allow a value of "0" to work as expected. 641 642-- 1.21.0-UNSTABLE: -- 643 644February 19, 2018: 645 An attempt to run an instance of Mednafen while another instance is already running with the same base directory is now blocked during startup, via 646 a lock file; note that this check occurs after stdout and stderr are potentially redirected to stdout.txt and stderr.txt on Windows. 647 648February 15, 2018: 649 Changed the default value of setting "video.driver" from "opengl" to "default", removed the old "0" and "1" backwards-compatibility value aliases, 650 renamed the "sdl" driver to "softfb"(without backwards-compat aliases), and made it so the setting's value will be reset to "default" after 651 automatically importing settings from "mednafen-09x.cfg". 652 653 On Windows, no longer exit on ALT+F4 while input is grabbed. 654 655 Added settings "fps.autoenable", "fps.position", "fps.textcolor", and "fps.bgcolor". 656 657February 11, 2018: 658 Removed reliance on malloc(), realloc(), and calloc() setting errno to ENOMEM on failure, since it's not the case on Windows XP, and possibly other 659 platforms/operating systems too. 660 661February 9, 2018: 662 ZIP files are now recognized by file extension instead of by magic(wizards). 663 664 Replaced old minizip code with newly-written ZIP archive reading code. 665 666 Replaced MDFN_PrintError() and MDFN_DispMessage() with MDFN_Notify(). 667 668February 6, 2018: 669 Use versionsort() instead of alphasort() when scanning for js* joystick devices on Linux. 670 671February 1, 2018: 672 Added settings "fps.scale" and "fps.font". 673 674January 31, 2018: 675 On Windows, in-memory conversion of M3U and CUE files to UTF-8 will be attempted if they lack a UTF-8 BOM and contain byte sequences that are not 676 valid UTF-8. 677 678 On Windows, path/filename settings loaded from the old mednafen-09x.cfg(before being saved to mednafen.cfg on exit) will now be converted to UTF-8. 679 680January 29, 2018: 681 Added support for pasting text into the cheat and netplay consoles. 682 683January 28, 2018: 684 SS: Added Japanese keyboard emulation. 685 686 SS: Improved VDP2 window Y coordinate evaluation emulation; fixes at least one background layer graphical glitch 687 in "Radiant Silvergun"(at the start of stage 2C), and the graphical glitch near the end of the intro in "Snatcher". 688 689January 20, 2018: 690 Altered calculations involving *.xscale(fs)/*.yscale(fs) settings to be more predictable given floating point nuances; any user using non-integer scaling values 691 for these settings may need to adjust them to get the same result as in previous versions of Mednafen, however. 692 693 Added setting "video.fs.display". 694 695January 18, 2018: 696 SDL2(2.0.5+) is now used and required. 697 698 Removed the "overlay" video driver. 699 700 On Windows, error messages during startup will now be displayed in a popup message box. 701 702 On Windows, Mednafen will now output text to a console if it's started from a console(e.g. cmd.exe or Cygwin), and if not, write 703 to stdout.txt and stderr.txt like before. 704 705 On Windows, Mednafen now uses Unicode variants of CRT and Win32 functions; this may require the user to convert their CUE sheets to UTF-8 if filenames use 706 exotic(e.g. not directly typable on a standard US-layout keyboard) characters. 707 708 For key bindings relating to the debugger and cheat management interface, the Right ALT key modifier will no longer be respected(only the Left ALT has 709 any effect now), for internationalization reasons. 710 711 The configuration file is back to "mednafen.cfg" instead of "mednafen-09x.cfg". If a 0.8.x "mednafen.cfg" is in the way, it will be renamed. If "mednafen.cfg" 712 does not exist, or is from an old version of Mednafen, settings will initially be loaded from "mednafen-09x.cfg", but still saved to "mednafen.cfg" on exit(and 713 loaded from "mednafen.cfg" from that point on). 714 715 Reworked the input mapping setting format to be more human-readable(and editable). Details are in the documentation, in the "Advanced Usage" section. Old 716 input mappings will be translated internally, except for keyboard mappings, due to incompatibilities between how SDL 1.2 and 2 handle keyboards. 717 718 Added support for mapping joystick axes and buttons, mouse buttons, and keyboard keys to emulated mouse device relative motion for testing purposes(via 719 manually editing the configuration file, as the in-emulator configuration process currently won't create such mappings). 720 721 Added support for digital button input mappings that mix AND, ANDNOT, and OR-style operations together(previously it was either just AND or OR); refer to the 722 documentation for more details. Note that the in-emulator configuration process won't create complex mappings that mix different boolean operations, 723 but you can map combinations using simpler logic in-emulator, and then edit the configuration file to adjust the boolean operations used. 724 725January 15, 2018: 726 SS: Fixed a bug that caused a crash if an error occurred early in the process of loading a game. 727 728 Updated the configure script to disable gcc's mitigations for Spectre, in the event distributions configure their compilers to enable them by default. 729 730 Stopped (erroneously) memset()'ing some MDFN_PixelFormat objects. 731 732January 12, 2018: 733 Cleaned up the handling and reduced the size of axis-related inputs as communicated from the driver-side code to core Mednafen. 734 735 PCE_FAST: Fixed fubared mouse emulation. 736 737December 28, 2017: 738 Replaced usage of strcasecmp() and strncasecmp() with MDFN_strazicmp(), for consistent behavior across locales. 739 740 Added MDFN_strazlower(), MDFN_strazupper(), MDFN_memazicmp(), and MDFN_strazicmp() functions. 741 742December 14, 2017: 743 SS: Fixed a logic error in the BIOS sanity check code that caused it to throw a less helpful error message than intended in certain circumstances, and 744 made the error messages related to BIOS file misconfiguration more verbose(and hopefully more helpful...). 745 746December 6, 2017: 747 Fixed broken cheat file saving on MS Windows. 748 749November 12, 2017: 750 Changed how some multidimensional arrays and arrays of structs are accessed, to try to avoid behavior that's probably undefined and may be a problem 751 in the future. 752 753 PC-FX: Fixed integer overflows that caused fatal division by zero when Mednafen's cheat functionality was used(a regression introduced around 0.9.39). 754 755 SS: Stuck SCU DMA table arrays in a struct to avoid unspecified behavior in the SCU save state code. 756 757-- 0.9.48: -- 758 759September 16, 2017: 760 Set cheat's default endianness to that preferred by the system being emulated when manually adding a cheat that's not 761 a cheat device code nor the result of a cheat search. 762 763September 15, 2017: 764 SS: Fixed SCU DSP DMA from B-bus; fixes the periodic loud popping in Grandia's FMV. 765 766September 12, 2017: 767 SS: Added a hack/kludge to allow bypassing of data cache on reads(such that the timing benefits of partial cache emulation are preserved, without cache 768 coherency problems that partial cache emulation sometimes leads to with poorly programmed games), and added an internal database to enable it on select games; 769 fixes graphical glitches and/or hangs in "Area 51 (USA and Europe)", "Clockwork Knight 2 (USA)", "DeJig - Lassen Art Collection", "Father Christmas", 770 "Golden Axe The Duel", "Sega Saturn Choice Cuts", "Spot Goes to Hollywood (USA and Japan)", "Street Fighter Zero", "Street Fighter Zero 3", 771 "Super Puzzle Fighter II Turbo", and "Virtual Volleyball". 772 773 SS: Full cache emulation is now enabled for "Whizz"(by using an internal database), to resolve(or at least reduce) quasi-random hanging issues during startup. 774 775September 11, 2017: 776 SS: Corrected an inaccuracy with CDB play repeat handling; fixes hang when trying to resume a suspended game in "Tactics Ogre". 777 778 SS: Initialize VDP1 clipping and local coordinate registers only on power-on, and not on reset. 779 780September 7, 2017: 781 SS: Fixed side-effect inaccuracies in the CDB Put Sector Data, Copy Sector Data, and Move Sector Data command emulation. 782 783September 6, 2017: 784 Added configure option "--with-external-trio", for distribution packagers. 785 786 SS: Added partial emulation of SH-2 external bus open bus behavior; fixes messed up colors in "Discworld 2". 787 788September 4, 2017: 789 SS: Improved CDB Initialize command emulation; fixes crash in "Tenchi Muyou! Ryououki Gokuraku" when it tries to play an opening movie during startup. 790 791August 28, 2017: 792 SS: Made CD seek overhead calculation less completely wrong; fixes graphics corruption in intro of "Batman Forever", and fixes hang in "Jung Rhythm" when 793 trying to retry a failed stage. 794 795-- 0.9.47: -- 796 797August 25, 2017: 798 Lynx, MD, NGP, SMS: Added a few missing variables to save states. 799 800August 24, 2017: 801 SS: Added save state support. 802 803 Revamped save state helper macros and functions, to allow save-stating of variables in arrays of structs to be simpler. 804 805August 22, 2017: 806 SS: Fixed BCR1 write protect, and added stub emulation of the other BSC registers. 807 808 SS: Added incomplete stub Action Replay 4M Plus emulation(for experimentation); proper Action Replay support would require SH-2 UBC emulation, and that 809 may be too costly performance wise. 810 811August 21, 2017: 812 SS: Implemented very rough approximation of bus timing side effects when master SH-2 DMA is active(accurate handling of bus priorities and sharing would increase 813 CPU requirements noticeably, but it may ultimately be necessary as a database-driven option for some stubborn games in the future). Fixes startup hangs in 814 "Device Reign", "Real Sound", "Resident Evil", "SD Gundam G Century S", "Super Tempo", "Tennis Arena", "Tilk", "Yuukyuu Gensoukyoku", 815 "Yuukyuu Gensoukyoku 2nd Album", "Yuukyuu Gensoukyoku ensemble", "Yuukyuu Gensoukyoku ensemble 2", "Yuukyuu no Kobako Official Collection", and "Zero4 Champ". 816 817-- 0.9.46: -- 818 819August 10, 2017: 820 Compile with explicit -fstrict-aliasing, for distributions/OSes that have configured gcc to not enable strict aliasing at -O2(and possibly other levels). 821 822 Fixed a bug that could, under certain conditions, cause emulator OSD elements to not be updated in the time after entering frame advance mode 823 and before a frame advance. 824 825August 7, 2017: 826 Use a sorted std::vector instead of std::multimap to store current settings, to reduce memory usage. 827 828August 6, 2017: 829 SS: Added ss.input.port*.3dpad.mode.defpos settings to control the default position of the digital/analog mode switch. 830 831August 5, 2017: 832 Allow addresses above FFFF to be entered as the logical watch address in the debugger. 833 834August 4, 2017: 835 SS: Added kludge to fix layer offset problem in "Daytona USA CCE". 836 837 NES: The functionality controlled by setting "nes.fnscan" now recognizes "(F)" and "(France)" as PAL. 838 839 NES: Added support for iNES mapper 40. 840 841July 11, 2017: 842 Utilize _byteswap_*() functions in endian.h when compiling with Microsoft's C++ compiler. 843 844June 22, 2017: 845 Fixed a couple of minor issues(log header formatting, and skipped logging of first instruction in step mode) with the debugger's undocumented trace log feature. 846 847 NES: Corrected the period of PAL noise channel frequency setting 0x1. 848 849June 21, 2017: 850 NES: Fixed a few square wave sound channel emulation bugs(wrong phase for duty setting 3, and failing to clock the period counter when the channel is silenced). 851 852-- 0.9.45.1: -- 853 854June 5, 2017: 855 SNES: Fixed an instance of possibly-undefined behavior. 856 857 Silenced dumb warning spam relating to endian.h emitted by newer versions of gcc. 858 859June 4, 2017: 860 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 861 the meaning of a macro field during development); may also fix garbled audio when using the new OpenBSD sound driver with certain sound cards. 862 863-- 0.9.45: -- 864 865May 29, 2017: 866 Tweaked netplay sound buffer underrun kludge code. 867 868 The netplay server host and port being connected to are now printed to the netplay console at the beginning of a connection attempt. 869 870 Netplay connection attempts to servers are now non-blocking. 871 872May 25, 2017: 873 SS: Synchronize end of SMPC clock change commands to beginning of vsync instead of beginning of vblank, per tests on a SS. 874 875May 23, 2017: 876 SS: Reworked how the VDP2 rendering thread waits, to make Saturn emulation usable with the default OpenBSD kernel. 877 878 SS: Added emulation of the light gun("Stunner"/"Virtua Gun"). 879 880April 28, 2017: 881 #include'd many commonly-used C and C++ standard library headers in types.h(and removed redundant #include statements from various header and source files), to 882 reduce the probability of portability problems(due to neglecting to explicitly include a header file) when different standard C/C++ libraries 883 behave differently in regards to what header files include what other header files. 884 885 Added a sound output driver for OpenBSD's /dev/audio. 886 887 Reworked the sound output format conversion code to be more versatile, 888 889April 25, 2017: 890 NES: Wrote new "Barcode Battler II" emulation code to replace the old "Barcode World" code, based on quick testing with actual hardware(albeit the English version). 891 892April 24, 2017: 893 SSFPlay: Added save state support. 894 895-- 0.9.44.1: -- 896 897April 21, 2017: 898 MD: Added a missing MDFN_FASTCALL, the absence of which broke 32-bit x86 builds(either at link time or run time). 899 900-- 0.9.44: -- 901 902April 19, 2017: 903 PSX: Restructured the GPU emulation code and data a bit to get a minor performance boost. 904 905April 18, 2017: 906 VB, PCE, WonderSwan, MD, GBA: Use fastcall calling convention(on 32-bit x86) in a few (more) places where it makes sense. 907 908April 16, 2017: 909 SNES-Faust: Added setting "snes_faust.correct_aspect", default value of "1". 910 911 SNES-Faust: Added PAL support. 912 913April 14, 2017: 914 SNES-Faust: Made minor optimizations to the BG rendering code. 915 916April 9, 2017: 917 Added command-line option "-which_medium", to specify which CD to start with when using multi-CD M3U sets. 918 919April 5, 2017: 920 SNES: Fixed emulator hang when saving state in "Panic Bomber W". 921 922April 3, 2017: 923 Added some simple scripts to cross-compile and package Mednafen for Windows. 924 925 Added Windows cross-compiler toolchain setup notes. 926 927 32-bit Windows builds are now compiled with -march=i686 instead of -march=i586(shouldn't affect compatibility for official builds, since the toolchain 928 and libraries were already effectively being compiled with -march=i686, which was not intended, but since nobody apparently complained... ;p). 929 930March 25, 2017: 931 VB: Added support for custom palettes. 932 933 VB: Reworked how LED on-state duration is translated into RGB values and added setting "vb.ledonscale"; the default value of "vb.ledonscale" is 934 set such that the overall brightness will be lower than in previous versions of Mednafen, to reduce white crush, but the user can set it 935 to a value of "1.9921875" to approximate the old brightness level. 936 937March 20, 2017: 938 SNES: Made a couple of SDD1 registers readable; fixes "Tractor Beam" spell graphical glitches in "Star Ocean"(thanks to orbea). 939 940March 17, 2017: 941 SS: Added support for a 16MiB RAM cart mapped into the A-bus CS1 area(for "Heart of Darkness" and homebrew). 942 943March 15, 2017: 944 WonderSwan: Removed setting "wswan.rotateinput", and added a new device("gamepadraa") that can be selected on virtual input port 1 to 945 automatically rotate inputs when the display is rotated. 946 947March 14, 2017: 948 Reworked text drawing to not use an excessive number of potentially-large VLAs. 949 950 Moved statements with important side effects outside of assert()s in settings.cpp. 951 952 Replaced ancient Unicode conversion code with newly-developed code. 953 954March 7, 2017: 955 SS: Prioritize SMPC command execution over VBlank handler execution, per (limited) tests on a SS. Fixes broken input in "Primal Rage"(a 0.9.43 regression). 956 957-- 0.9.43: -- 958 959February 24, 2017: 960 Reworked how input grabbing is handled. The new way uses only one key combo(CTRL+SHIFT+Menu), and will adapt its behavior based on any keyboards 961 being selected on any virtual input ports or not(refer to the documentation for full details). A new setting is added, "command.toggle_grab", and 962 two settings were removed, "command.toggle_grab_input" and "command.toggle_cidisable". 963 964 Emulated keyboard(FKB, Tsushin, Saturn) key state is now only updated when input grabbing is toggled on. 965 966February 22, 2017: 967 SS: Fixed SMPC read handling of an empty input port. 968 969 SS: Implemented emulation of SMPC 0-byte port read mode. 970 971 PSX: Reduced rumble latency by 1 frame. 972 973February 20, 2017: 974 Reworked how keyboard key state is handled, to prevent extremely short button presses from being lost(like what can happen with the Pause key, or 975 other keys when slow-forwarding is active). 976 977 SS: Added 101-key US keyboard emulation. 978 979February 17, 2017: 980 SS: Allow SMPC commands to be dual-issued; fixes hang in "F1 Challenge", and hangs/missing sound in "Magic Knight Rayearth". 981 982 SS: Added emulation of the 6-Player Adaptor(multitap). 983 984February 15, 2017: 985 SS: Added emulation of the Mission Stick and Dual Mission Sticks. 986 987February 13, 2017: 988 SS: Added emulation of the steering wheel("Arcade Racer"), for use with "Virtua Racing", "High Velocity - Mountain Racing Challenge", 989 "The Need for Speed", and other Saturn racing games that apparently lack 3D pad support. 990 991-- 0.9.42: -- 992 993February 7, 2017: 994 SS: Ignore lower bit of VDP1 sprite draw command texture base address when drawing using color mode 5, per tests on a SS; fixes some of the 995 graphical glitches in "All-Star Baseball 97". 996 997February 6, 2017: 998 SS: Ignore writes to VDP1 registers via SCU DMA under certain conditions to approximate what happens on a SS; fixes hang in "GunBlaze-S". 999 1000 SS: Fixed handling of RSTCSR WOVF clearing, per tests on a SS. Also changed the semantics of RSTCSRM a bit to simplify things, might want to change 1001 WTCSRM, FTCSRM, etc. semantics too in the future for consistency... 1002 1003 SS: Fixed handling of WTCSR OVF clearing, per tests on a SS. 1004 1005 Updated tremor to revision 19427. 1006 1007 Updated libogg to version 1.3.2. 1008 1009 Fixed a bug that caused a crash if the user tried to select(via CTRL+SHIFT+[n]) a device on a non-existent virtual input port. 1010 1011February 5, 2017: 1012 SNES-Faust: Added multitap support. 1013 1014February 3, 2017: 1015 SS: Fixed a bug in the handling of M68K level 7 interrupts; fixes missing sound in "Arcade's Greatest Hits". 1016 1017February 1, 2017: 1018 SS: Suspend VDP1 command processing while an SCU DMA from SDRAM to VDP1 VRAM is active, to approximate how a SS behaves. Fixes FMV tearing 1019 in "Johnny Bazookatone", and fubared graphics in "Virtua Cop" and "Virtua Cop 2". 1020 1021January 31, 2017: 1022 SS: Fixed handling of clearing FTCSR bits, per tests on a SS. 1023 1024January 30, 2017: 1025 SS: Improved instruction timing(though still far from perfect); fixes speed problems in "Pocket Fighter", reduces the size of the flickering 1026 area in "Lunar"'s FMV, and fixes the crash that occurs immediately after gameplay starts in "Virtua Fighter" and "Virtua Fighter Remix". 1027 1028January 26, 2017: 1029 NES: Added support for iNES mapper 190. 1030 1031January 25, 2017: 1032 SS: Clear SCU internal pending interrupt bit upon the SCU's acceptance of the IRQ to send to the SH-2, instead of when the SH-2 fetches the vector, per 1033 tests on a SS. 1034 1035-- 0.9.41: -- 1036 1037January 21, 2017: 1038 SS: Implemented disc change IRQ on disc eject. 1039 1040January 20, 2017: 1041 Replaced usage of trio_snprintf() to a fixed-size buffer for path construction in general.cpp with manual concatenation of std::string strings. 1042 1043January 18, 2017: 1044 Use _beginthreadex() instead of CreateThread() on Windows, to avoid a small memory leak. 1045 1046 Now explicitly use 64-bit walltime functions on 32-bit Windows builds. 1047 1048January 17, 2017: 1049 PCE, PCE_FAST: Added a missing sound emulation variable to save states. 1050 1051January 16, 2017: 1052 SNES: Added setting "snes.h_blend", default value of "0", that when set to "1" will enable a horizontal blend/blur filter. 1053 1054January 15, 2017: 1055 PCE: Improved SuperGrafx window handling in 10MHz dot clock modes. 1056 1057 GBA: Modified RTC emulation to not use standard C library walltime functions during emulation. 1058 1059 Wrapped various time functions, and dropped the dependencies on SDL time functions, in Time.cpp/Time.h. 1060 1061January 14, 2017: 1062 WonderSwan: Fixed off-by-1 bugs in window coordinate evaluation, per tip from trap15. 1063 1064 WonderSwan: Fixed copyright notice headers to not allow distribution under versions of the GPL other than version 2(an oversight from 1065 back when the Cygne code was added to Mednafen). 1066 1067 WonderSwan: Applied sound and DMA emulation fixes from trap15; fixes rain sound effect in "Star Hearts". The changes did necessitate lowering 1068 the overall WonderSwan sound emulation volume a bit to prevent excessive clipping, however. 1069 1070January 12, 2017: 1071 SS: Fixed a logic error in the VDP2 rendering code; fixes battle scenes in "Grandia". 1072 1073January 10, 2017: 1074 SS: Removed a few bad entries in the internal region-correction database that were breaking the Korean releases of some games. 1075 1076January 9, 2017: 1077 PCE, PCE_FAST: Added support for auto-enabling SuperGrafx emulation with CDs when a mode 1 data track has the 16-byte magic 1078 "4D 65 64 6E 61 66 65 6E 74 AB 90 19 42 62 7D E6" at offset 0x86A(assuming 2048 bytes per sector), for homebrew and translations. 1079 1080January 7, 2017: 1081 SS: Added emulation of the SCSP 18-bit DAC enable bit; fixes low volume problem in "Daytona USA". 1082 1083 SS: Fixed some bugs that broke emulation on big-endian platforms. 1084 1085January 5, 2017: 1086 Fixed an off-by-1 memory corruption bug in the debugger's memory editor relative bytestring search code. 1087 1088 VB: Finally commented out some debug printf()s. 1089 1090January 1, 2017: 1091 Cleaned up code that passes video data from the game thread to the main thread, and replaced some volatile usage with atomics. 1092 1093December 31, 2016: 1094 Fixed a large memory leak that occurred when saving screenshots with SHIFT+F9. 1095 1096 VB: Fixed a regression introduced in 0.9.39.2 that caused transient sound/note distortion on save state load. 1097 1098December 27, 2016: 1099 Moved TCP/IP networking code into the core of Mednafen, and added support for non-blocking connects, so the Saturn emulation module can eventually use 1100 it for modem emulation. 1101 1102December 25, 2016: 1103 Modified configure script to (hopefully) compile in the Saturn emulation module when building for PPC64 and AArch64 architectures(in addition to x86_64). 1104 1105December 21, 2016: 1106 Allow emulated digital button mappings to be used in AND mode(like command keys configured with SHIFT+F2) if the user manually 1107 prefixes the "/&&\ " magic string to the mapping setting string in the configuration file. Can be useful with emulated switches and mode toggle buttons, 1108 but the in-emulator input configuration process will need to be revamped before enabling this mode for a mapping can be done in a sane and 1109 more user-friendly manner. 1110 1111 Rewrote round_up_pow2() in math_ops.h to use MDFN_log2, which in turn uses MDFN_lzcount*(), since the major CPUs that Mednafen is going 1112 to run on should have dedicated instructions to (at least indirectly) count leading zeroes. Also changed the semantics to return 0 on overflow instead of 1. 1113 1114December 20, 2016: 1115 SS: Now use leading-zero counting function from math_ops.h in the VDP2 rendering code, instead of using inline assembly. 1116 1117 Reorganized the leading/trailing bit counting functions in math_ops.h, added 32-bit and 64-bit trailing-bit counting functions, and added faster 1118 variants where passing a 0 results in an undefined result. 1119 1120December 19, 2016: 1121 Print out the game key used after a connection is established with netplay, when the game key is not empty. 1122 1123 SMS: Added settings "sms.slstart", "sms.slend", "sms.slstartp", and "sms.slendp". 1124 1125 Added some checks to help prevent a black screen when the scanlines effect is enabled via a <system>.scanlines setting and the effective Y scale is 1126 too small(by forcing negative-value behavior in the case of interlaced video, or temporarily disabling the effect otherwise). 1127 1128December 18, 2016: 1129 PSX: The functionality controlled by the "psx.input.analog_mode_ct" setting no longer interferes with netplay. 1130 1131 PSX: Added "psx.input.analog_mode_ct.compare" setting to control the combination of buttons used when the functionality controlled by the 1132 "psx.input.analog_mode_ct" setting is enabled. 1133 1134 Modified build system to use $(localedir) instead of $(datadir)/locale for LOCALEDIR define. 1135 1136 Updated miniLZO to version 2.09. 1137 1138December 14, 2016: 1139 SS: Added setting "ss.h_blend", default value of "0", that when set to "1" will enable a horizontal blend/blur filter(with a much noticeable effect on the 1140 Saturn video modes with a higher horizontal resolution). 1141 1142December 10, 2016: 1143 SS: Added setting "ss.h_overscan", default value of "1", to allow the user to show less of the screen on the left and right sides by setting it to "0". 1144 1145December 9, 2016: 1146 SS: Added setting "ss.correct_aspect", default value of "1", to allow the user to disable aspect ratio correction(not recommended, but whatever~). 1147 1148 Added simple TV CRT-approximating OpenGL shader, "goat". 1149 1150December 8, 2016: 1151 Renamed settings "*.pixshader" to "*.shader". 1152 1153December 7, 2016: 1154 Check for and use -no-pie instead of just -nopie in the configure script, to fix build failures on at least one platform. 1155 1156December 6, 2016: 1157 Fixed half-source-pixel image offset bug in the "autoip", "ipxnoty", and "ipynotx" pixel shaders. 1158 1159 Fixed altivec.h header detection regression in 0.9.39. 1160 1161October 7, 2016: 1162 Fixed a bug that caused input movie recording to produce broken recordings when done during netplay with an emulation module 1163 that uses mid-frame sync functionality. 1164 1165-- 0.9.39.2: -- 1166 1167September 19, 2016: 1168 SMS: Sanitize some previously-missed variables in the save state loading code. 1169 1170September 18, 2016: 1171 MD: Fixed a bug that caused some YM2612 state to not be restored properly on save state load. 1172 1173 MD, SMS, NGP: Fixed an old Z80 emulation bug with interrupt handling. 1174 1175 Make an index of save state sections on save state load, to detect sections in a save state that are unused by the state loading code(for debugging). 1176 1177 MD, PCE, PCE_FAST: Sanitize some previously-missed variables in the save state loading code. 1178 1179September 16, 2016: 1180 SS: Added PAL support. 1181 1182 SS: Fixed vertical positioning brokenness with custom "ss.slstart" setting values with interlaced video. 1183 1184September 15, 2016: 1185 PC-FX, WonderSwan, NES, VB, PSX: Sanitize some previously-missed variables in the save state loading code. 1186 1187 Fixed a use-after-free bug in the SDL sound output driver. 1188 1189 NGP: Fixed several off-by-1 bugs in the address to ROM data translation function. 1190 1191September 11, 2016: 1192 Removed nonsensical unused frame advance loop in drivers/main.cpp leftover from 0.5.x. 1193 1194 PCE_FAST: Fixed a bug that could cause a crash with large "pce_fast.ocmultiplier" setting values when running CD games. 1195 1196September 10, 2016: 1197 PCE_FAST: Skip 512-byte copier header if detected when loading a ROM image. 1198 1199 PCE_FAST: Made some minor optimizations. 1200 1201 PCE, PSX, PCE_FAST: Avoid UB by biasing uintptr_t values instead of pointers directly in the CPU core. 1202 1203September 1, 2016: 1204 GB: Corrected the layer names used with the layer toggling feature. 1205 1206August 26, 2016: 1207 SS: Fixed a potential problem with SH-2 DMA event rescheduling when bus lock is held, that probably wouldn't ever happen in practice. 1208 1209 NES: Fixed several instances of missing initialization of on-cart WRAM. 1210 1211August 24, 2016: 1212 SS: Marked more functions with MDFN_COLD hint, and marked a few functions to be forcibly-inlined where it makes sense. 1213 1214August 23, 2016: 1215 SNES: Fixed an issue causing a compilation error on Mac OS X. 1216 1217-- 0.9.39.1: -- 1218 1219August 22, 2016: 1220 SS: Settings "ss.dbg_mask" and "ss.dbg_exe_cdpath", and the functionality they control, are no longer available unless Mednafen has been compiled with 1221 "MDFN_SS_DEV_BUILD" defined(such as with -DMDFN_SS_DEV_BUILD=1 in CPPFLAGS env var passed to configure). 1222 1223 SS: Replaced some instances of case ranges with more portable constructs. 1224 1225August 20, 2016: 1226 SS: Run VDP1 vblank erase at end of vblank, so we know how much time we have and thus how many entries in the framebuffer we'll be able 1227 to erase. Currently, the available time calculations are generous, allowing for a bit more erase than what's possible on a Saturn, but we can tighten 1228 it up in the future once it's fairly certain there aren't any more event scheduling accuracy issues. Fixes FMV subtitle text in "Panzer Dragoon". 1229 1230 SS: Fixed a bug that caused VDP2 frames to be short by 1 to 3 CPU cycles. 1231 1232 SS: Reschedule the SH-2 DMA event handler as necessary to prevent it from running when the SH-2 bus is locked. 1233 1234 SS: Force the SH-2 DMA and SCU DMA event handlers to be rescheduled to SH7095_mem_timestamp time when necessary. 1235 1236 SS: Check for pending events right before calling VDP1, VDP2, SMPC, and SCU regs read/write handlers, which may then call their own event update 1237 functions. 1238 1239August 17, 2016: 1240 Fixed an old bug that could cause a startup crash on Windows systems without XInput DLLs installed(e.g. some Windows XP systems). 1241 1242 NES: Fixed a very old bug triggered when disabling(via CTRL+1) the background layer, that would cause sprite pixels to also be visually disabled too under certain 1243 circumstances. 1244 1245August 16, 2016: 1246 MD, PC-FX: Fixed several instances of left-shifting negative values. 1247 1248August 15, 2016: 1249 SS: Fixed a compilation error when compiling with the debugger disabled("--disable-debugger" passed to configure). 1250 1251 Added configure options "--with-external-mpcdec" and "--with-external-tremor", for distribution packagers. 1252 1253 SS, SNES-Faust: Fixed a few issues causing compilation errors on clang. 1254 1255 SS: Tweaked how seek command pause works; fixes a lockup issue in "Astal". 1256 1257August 11, 2016: 1258 WonderSwan: Fixed a bad usage of "char" without an unsigned/signed qualifier. 1259 1260 SS: Slow down SCU DMA to VDP2 VRAM under certain conditions. 1261 1262August 10, 2016: 1263 SS: Adjusted VDP1 polygon and line draw commands to behave as if SPD=1, ECD=1 when color mode >= 6; fixes missing graphics problem in "Hi-Octane". 1264 1265August 8, 2016: 1266 SS: Reworked SCU DMA's timekeeping and scheduling code to be more accurate; reduces the size of the flickering section of the FMV in "Lunar". 1267 1268 SS: Fixed handling of CPU<->SMPC open bus. 1269 1270August 7, 2016: 1271 Relaxed the CloneCD Q subchannel sanity checks to allow a track number of 0xAA(leadout). 1272 1273August 6, 2016: 1274 SS: Implemented kludgy(incomplete) support for quasi-illegal window X start position values; fixes ground layer issues in the forest stage of 1275 Panzer Dragoon 2. 1276 1277-- 0.9.39-UNSTABLE: -- 1278 1279August 4, 2016: 1280 Put "official" -mtune and -march build flags for Windows targets into configure.ac. 1281 1282July 27, 2016: 1283 The version is now displayed in the upper right-hand corner of the F1 help screen. 1284 1285June 28, 2016: 1286 PSX: Modified GTE emulation to inline instruction-handling functions, to not unroll large loops, and to use MDFN_lzcount32() for LZCS/LZCR register 1287 calculation. 1288 1289June 27, 2016: 1290 SNES: Modified libco to use __attribute__((section(".text"))) on the libco swap function data arrays, instead of calling 1291 mprotect()/VirtualProtect(). 1292 1293June 24, 2016: 1294 PSX: Rearranged CPU structure layout to improve performance a little on ARM CPUs. 1295 1296June 20, 2016: 1297 PSX: Don't specially compile the code with -mmx -msse -msse2 on 32-bit x86, to avoid potential ODR violations. 1298 1299June 19, 2016: 1300 NES: Added ARM NEON support to the resampler. 1301 1302June 18, 2016: 1303 NES: Enabled SSE2 support in the resampler, though only enabled(through rough heuristics) when likely to have a performance benefit over MMX. 1304 1305June 17, 2016: 1306 NES: Made resampler's coefficient memory layout more optimal. 1307 1308 PCE, PC-FX: Added ARM NEON support to the resampler(though it's only compiled in when the compiler is setup to use NEON, such as by passing -mfpu=neon). 1309 1310June 16, 2016: 1311 PCE, PC-FX: Added AVX support to the resampler. 1312 1313 PCE, PC-FX: Made resampler's coefficient memory layout more optimal. 1314 1315June 14, 2016: 1316 PCE: Allocate HuC6280 objects statically instead of dynamically, and removed a layer of indirection for the event handler 1317 pointer. 1318 1319 PCE: Moved HuC6280 CPU emulator back into the "pce" directory, since no other emulated systems use it and there are no plans 1320 for emulating any such systems(and if there were, new, cleaner HuC6280 emulation code should probably be written). 1321 1322June 13, 2016: 1323 PSX: Enabled CDC periodic-report maximum level calculation code that was written a while back, to fix a 1324 lockup in "Fantastic Pinball Kyutenkai". 1325 1326 Added setting "netplay.console.lines". 1327 1328 When a console is scrolled, a green indicator arrow will now be drawn in the lower right corner. 1329 1330 Scrolling in the console(netplay, cheat) is now done in visible line units, rather than in internal line units. 1331 1332June 12, 2016: 1333 Removed setting "netplay.smallfont", and added settings "netplay.console.scale" and "netplay.console.font". 1334 1335 Somewhat revamped the layout of the debugger's memory editor. 1336 1337 Removed 4x5 font(it's too small to be of much real use), and added 6x9 and 6x12 fonts(mostly for debugger use). 1338 1339 Code points outside the BMP are no longer drawn as being truncated to 16-bits. 1340 1341 In the text drawing routines, a character missing from the chosen font is now drawn as the Unicode replacement character instead 1342 of a question mark. 1343 1344June 11, 2016: 1345 Made some minor visual and positioning tweaks to the debugger's memory editor. 1346 1347 Revamped the text drawing routines to not take naked pointers, instead taking an MDFN_Surface*, optionally an MDFN_Rect for specifying 1348 a clipping rectangle, and x and y positions within the surface. 1349 1350June 10, 2016: 1351 Replaced MDFN_FastU32MemsetM8() with a set of MDFN_FastArraySet() functions, which don't require minimum alignments beyond natural alignment, but 1352 will perform faster with them. 1353 1354June 9, 2016: 1355 PSX: Brought MDEC emulation decode timing closer to the timing of a PS1. 1356 1357 VB: Replaced endian-handling functions local to vip.cpp with new code in endian.h derived from code written for Saturn emulation. 1358 1359June 8, 2016: 1360 Fixed long-broken MDFN_en24msb() function. 1361 1362June 7, 2016: 1363 Fixed a bug that could cause a crash if a gzip-compressed file whose uncompressed size is 0 bytes is loaded. 1364 1365June 6, 2016: 1366 SNES: Updated libco to the copy included with higan v098, for x86_64 Windows fixes and ARM support. 1367 1368June 4, 2016: 1369 Added support for CUE sheet "INDEX" directives for indexes 2-99. 1370 1371May 31, 2016: 1372 NES: Extended the mapper 184 emulation to support "Fantasy Zone"'s board. 1373 1374May 30, 2016: 1375 Replaced various redundant C-string-utilizing file path decomposition functions/code with usage of the newer MDFN_GetFilePathComponents(). 1376 1377May 29, 2016: 1378 Replaced usage of MDFN_calloc*()/MDFN_malloc*()/MDFN_free() with new/delete. 1379 1380 Replaced MDFN_IsFIROPSafe() with MDFN_CheckFIROPSafe(), which throws an exception instead of relying on the caller to do it. 1381 1382May 5, 2016: 1383 SNES: Removed unused disassembler code. 1384 1385 Fixed code causing a compilation error on gcc 6. 1386 1387April 10, 2016: 1388 Cleaned up cheat code a little, and added support for RAM cheats to be applied via function call instead of through direct data pointer access. 1389 1390March 29, 2016: 1391 MD, NGP, PC-FX: Encapsulated code in namespaces. 1392 1393March 28, 2016: 1394 NES: Implemented kludge to fix a minor Zelda 2 title screen glitch, a status bar glitch in Burai Fighter, and scrolling in the second stage of The Young Indiana 1395 Jones Chronicles. 1396 1397October 23, 2015: 1398 PSX: Reworked how branch delay slots are handled to be simpler and slightly more efficient. 1399 1400October 12, 2015: 1401 PSX: Improved emulation of the instruction cache management features of the PS1's CPU core; probably won't affect any games, but could be of 1402 use in homebrew. 1403 1404-- 0.9.38.7: -- 1405 1406September 30, 2015: 1407 Fixed several malformed trio_sscanf() format strings in regards to field width, that could cause stack buffer overflows in certain cases. 1408 1409September 29, 2015: 1410 PSX: Added skeleton BCzF/BCzT instruction emulation, and fixed handling of illegal CP0 instructions. 1411 1412September 25, 2015: 1413 PSX: Added emulation of CPU exception-handling bad address register. 1414 1415 PSX: Implemented emulation of the Coprocessor Error field in the CAUSE register. 1416 1417 PSX: Added emulation of CPU exception-handling branch target register. 1418 1419 PSX: Fixed handling of CAUSE bits 30 and 31 when an exception occurs immediately after a branch instruction is executed. 1420 1421 PSX: Fixed link address calculation for JAL, JALR, and B*AL instructions when they're executed in a branch delay slot. 1422 1423 PSX: Corrected emulation of the quasi-illegal mirrors of the BGEZ*/BLTZ* type instructions. 1424 1425 PSX: Added emulation of a pipeline quirk that occurs with back-to-back load instructions to the same register(previously only emulated with LWL and LWR). 1426 1427September 22, 2015: 1428 Fixed a bug in the debugger's disassembler that could break disassembly when a disassembled instruction wraps around the end of the CPU's program address 1429 space to the beginning. 1430 1431September 18, 2015: 1432 PCE: Removed experimental and unfinished hypothetical subtitle hardware emulation which had a few security-related problems. 1433 1434September 16, 2015: 1435 MD: Fixed registration of main RAM in the cheat engine to be mirrored properly. 1436 1437 PCE: Fixed a bug that caused the debugger's disassembly and memory view to show a wrong value for the HES bootstrap register 1438 at $1D00. 1439 1440 PCE: Fixed a bug that sometimes caused the "TIMV" register in the debugger to display "FFFFFFFF" instead of "FF". 1441 1442 The date and time of the compilation of qtrecord.cpp are no longer written to recorded QuickTime movie files, to solve 1443 a minor privacy issue and a build reproducibility issue. 1444 1445 PSX: Rewrote parts of the timer emulation code to fix several issues; fixes wrong music playback speed problem 1446 in "RPG Tsukuru 4". 1447 1448-- 0.9.38.6: -- 1449 1450August 9, 2015: 1451 PSX: Fixed a bug in the calculation of time taken by some GPU commands while in interlaced mode; fixes graphical glitches in 1452 "Mr. Driller G". 1453 1454 PCE, PCE_FAST: Added more delay to CD Read command's returning of sector data, to fix a lockup in "Mirai Shonen Conan", 1455 and a stuck note problem in "4 in 1 Super CD". 1456 1457-- 0.9.38.5: -- 1458 1459June 26, 2015: 1460 PSX: Generate a seek error when trying to read audio sectors(when the appropriate Mode bit isn't set), and generate a bad command error 1461 when executing ReadN/ReadS with a non-PS1 disc. Fixes a lockup in "Vib Ribbon" when trying to play with audio CDs. 1462 1463June 20, 2015: 1464 Altered SHA-1 and SHA-256 test code to work around a preprocessor-related bug in gcc. 1465 1466 NES: Fixed a mapper 19 sound emulation bug; fixes music issues in the Japanese release of "Rolling Thunder". 1467 1468 PSX: Replaced a GPU debug puts() with code that respects the psx.dbg_level setting. 1469 1470June 18, 2015: 1471 PC-FX: Corrected handling of width/height of 0xA for KING BG1-3, per tests on a PC-FX. Fixes a graphical glitch in "Sakuraigar Mode" in 1472 "Tyoushin Heiki Zeroigar". 1473 1474May 5, 2015: 1475 PSX: Added some debug messages to the memory card emulation code, outputted when setting psx.dbg_level is set to certain values. 1476 1477April 29, 2015: 1478 PCE, PCE_FAST: Corrected decimal-mode ADC and SBC behavior(especially for "illegal" input values), per tests on a HuC6280. 1479 1480April 22, 2015: 1481 Added a test to tests.cpp for gcc bug #60196(triggered with non-default optimization flags). 1482 1483April 19, 2015: 1484 Added a missing dependency statement to configure.ac, whose absence broke compilation with --disable-pce --enable-pcfx 1485 1486April 16, 2015: 1487 WonderSwan: Removed erroneous constraints that were preventing opposing X* and Y* buttons from being pressed simultaneously, and changed the 1488 names of the the X* and Y* buttons used during input configuration, per tip from trap15. 1489 1490-- 0.9.38.4: -- 1491 1492April 12, 2015: 1493 PC-FX: Reorganized the debugger's register view to be slightly more space-efficient horizontally. 1494 1495 NES: Migrated the rest of the *GetRegister() and *SetRegister() debugger functions over to the newer-style interface. 1496 1497 PC-FX: Migrated the rest of the *GetRegister() and *SetRegister() debugger functions over to the newer-style interface. 1498 1499April 11, 2015: 1500 PC-FX: Migrated debugger functions PCFXDBG_GetRegister() and PCFXDBG_SetRegister() over to the newer-style interface that takes integer IDs instead 1501 of std::string. 1502 1503 VB: Migrated debugger functions VBDBG_GetRegister() and VBDBG_SetRegister() over to the newer-style interface that takes integer IDs instead 1504 of std::string. 1505 1506 WonderSwan: Migrated debugger functions WSwan_GfxGetRegister() and WSwan_GfxSetRegister() over to the newer-style interface that takes integer IDs instead 1507 of std::string. 1508 1509 PC-FX: Added support for setting breakpoints on writes to specific VDC registers, by setting an Aux Write Breakpoint on an 1510 address ranging from A0000-A001F(VDC-A) or B0000-B001F(VDC-B). 1511 1512April 10, 2015: 1513 Debugger: Relaxed most maximum string length restrictions on user-inputted addresses(to allow for lazily leaving an excessive number of 0s at the 1514 beginning of an address, for example). 1515 1516 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 1517 view can now be activated by pressing the "G" key(in addition to "ENTER"). 1518 1519April 9, 2015: 1520 NES: Added sprite RAM to the debugger's memory editor. 1521 1522 NES: Fixed some issues with the debugger's graphics/tileset viewer. 1523 1524April 8, 2015: 1525 PSX: Improved GPU texture cache emulation accuracy per tests on a PS1; fixes graphical glitches in the menus of "Tigershark". 1526 1527April 5, 2015: 1528 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 1529 ranging from 20000-2001f(hexadecimal). 1530 1531April 4, 2015: 1532 Avoid left-shifting negative values in hw_sound/pce_psg/pce_psg.cpp 1533 1534 Added a couple more tests regarding left shift of signed integers to tests.cpp. 1535 1536April 2, 2015: 1537 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 1538 main one. 1539 1540 Debugger: Fixed a rounding issue that could cause insufficient disassembly lines with some *.debugger.disfontsize setting values. 1541 1542 PSX: Hooked up writing(editing) in the debugger's memory editor for "CPU Main RAM". 1543 1544March 29, 2015: 1545 PCE: Removed old leftover debug puts() in HuC6280 emulation code. 1546 1547 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. 1548 1549 NES: Fixed highpass filter coefficient calculation. 1550 1551 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 1552 selected for a port. 1553 1554March 23, 2015: 1555 NES: Fixed a minor sound emulation bug. 1556 1557March 15, 2015: 1558 GBA: Fixed several instances of left-shifting negative values in thumb.cpp. 1559 1560 PC-FX, VB: Fixed an instance of left-shifting uint64 by 64 in the FPU emulation code. 1561 1562March 14, 2015: 1563 GBA: Fixed a few instances of technically undefined behavior(shifting 32-bit int by >= 32, and left-shifting negative values) in arm.cpp. 1564 1565March 11, 2015: 1566 Reworked a test in tests.cpp to better reflect the requirements of certain undefined behavior some code still (unfortunately) relies on, to avoid 1567 triggering an assert() during startup when compiled with llvm/clang 3.6. 1568 1569March 6, 2015: 1570 PCE: Fixed a major VRAM DMA emulation regression introduced around version 0.9.16-WIP, that breaks some homebrew software. 1571 1572 NES: Altered mapper 185 emulation to fix "Bird Week", "B-Wings", "Sansuu 1 Nen", "Sansuu 2 Nen", "Sansuu 3 Nen", and "Seicross (version 2)". 1573 1574 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 1575 (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 1576 regarded as a comment), is now used in addition to the game ID. 1577 1578-- 0.9.38.3: -- 1579 1580March 4, 2015: 1581 NES: Fixed mapper 69 IRQ acknowledge behavior, per tip from tepples. 1582 1583February 24, 2015: 1584 MD: Fixed an out-of-bounds array access in the 68K emulation code. 1585 1586 Avoid passing NULL to memcpy() in netplay.cpp. 1587 1588 MD: Fixed some code doing misaligned memory writes in vdp.cpp. 1589 1590February 23, 2015: 1591 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 1592 Windows under certain conditions. 1593 1594February 22, 2015: 1595 PSX: Tweaked non-logical CD seek emulation to fix lockups in some versions of "Tomb Raider". 1596 1597February 17, 2015: 1598 PSX: Fixed Justifier and GunCon x position being off when setting "psx.h_overscan" is set to "0". 1599 1600-- 0.9.38.2: -- 1601 1602February 15, 2015: 1603 PSX: Fixed some miscellaneous minor issues in the triangle rasterization code. 1604 1605 PSX: Fixed a GPU timing regression introduced around version 0.9.37; fixes a disappearing graphics glitch in "Tobal No.1". 1606 1607-- 0.9.38.1: -- 1608 1609February 11, 2015: 1610 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 1611 "Legend of Zelda" game hack. 1612 1613February 9, 2015: 1614 Allow interrupting the virtual device input configuration process(it was broken in 0.9.38-UNSTABLE); though of course interrupting it will still 1615 leave the configuration in a broken state(but that's not a regression ;)). 1616 1617 PSX: Fixed a bug that was causing a segfault on loading a PSF/EXE file(a regression introduced in 0.9.38-UNSTABLE). 1618 1619February 8, 2015: 1620 Clear override settings on game close(for the benefit of forks/ports). 1621 1622-- 0.9.38-UNSTABLE: -- 1623 1624February 5, 2015: 1625 Lynx: Added support for custom palettes. 1626 1627January 31, 2015: 1628 Split cdrom/audioreader.cpp into multiple files. 1629 1630January 29, 2015: 1631 Dropped physical CD support. 1632 1633 Throw an error, rather than crashing, in the CUE sheet reader if a track is missing. 1634 1635 Throw an error in the CUE sheet reader if an M:S:F time contains a component out of range. 1636 1637 Implemented rudimentary support for CD-i discs (images), but no actual CD-i emulation, of course(yet :p). 1638 1639January 27, 2015: 1640 PSX: Added support for reading (synthesized) CD sector data located at MSF 00:00:00 through 00:01:74. 1641 1642 Fixed completely broken synthesis of pregap data(mode 1/mode 2) sectors with CUE+whatever. 1643 1644 PSX: Refactored leadout track sector data synthesis handling into the core CD reading code. 1645 1646January 26, 2015: 1647 PSX: Host system file/disk access time is now partially masked by emulated seek time when using CD images(except TOC+BIN with 1648 embedded subchannel data), which should reduce the probability of sound buffer underruns when 1649 running with "cd.image_memcache" set to "0"(the default). 1650 1651 The CloneCD format reader now always caches the subchannel file data in memory on load, regardless of the "cd.image_memcache" setting's value. 1652 1653 Added setting "osd.message_display_time". 1654 1655 Added undocumented setting "srwautoenable". 1656 1657January 25, 2015: 1658 PSX: Fixed a problem that broke building after passing --disable-debugger to the configure script. 1659 1660January 24, 2015: 1661 PCE_FAST, VB: Now dynamically-allocate the Blip_Buffer objects, and made very minor tangentially-related optimizations to the sound emulation code. 1662 1663 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 1664 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 1665 changes could conceivably cause regressions, as the modified code was very old and convoluted. 1666 1667January 18, 2015: 1668 PSX: Improved some Read*/SeekL versus status bits versus GetLocL semantics, to fix a lockup in "Harukanaru Toki no Naka de - Banjou Yuugi". 1669 1670 PSX: SetLoc CDC command now generates an error on invalid arguments, per tests on a PS1. 1671 1672January 17, 2015: 1673 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 1674 "Disney's Pooh's Party Game: In Search of the Treasure". 1675 1676 PSX: Fixed some issues with emulation of CDC command GetTD, per tests on a PS1. 1677 1678 PSX: Improved CDC result FIFO emulation accuracy; fixes a startup lockup in the Japanese version of "CyberSled". 1679 1680 PSX: Fixed a line-drawing regression from a Dec 28 change. 1681 1682 PSX: Fixed a few minor bugs in the GPU RAM write and read commands, per tests on a PS1. 1683 1684January 15, 2015: 1685 PSX: Tweaked CDC SeekL timing to fix a random lockup problem in Wing Commander 3. 1686 1687January 14, 2015: 1688 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 1689 status message it displays and to prevent activating certain combinations of input grabbing/command key disabling that can be confusing to deactivate. 1690 1691January 13, 2015: 1692 PSX: Fixed some problems with multitap emulation that were preventing DualShock functionality(such as rumble) from working properly when the 1693 emulated DualShock was behind an emulated multitap. 1694 1695January 11, 2015: 1696 PSX: Allow dithering on non-gradient lines(instead of only on gradient-colored lines), per tests on a PS1. 1697 1698January 10, 2015: 1699 PSX: Fixed an off-by-1 saturation/clamping related bug in the RTPS/RTPT emulation code. 1700 1701January 9, 2015: 1702 PSX: Improved emulation of the GPU info/VRAM read latches, per tests on a PS1. 1703 1704 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 1705 disabling, though). 1706 1707 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). 1708 1709January 1, 2015: 1710 PSX: Removed most of the event system pedantic sanity checks(and associated computational/cache overhead), as they've long outlived 1711 their usefulness. 1712 1713December 29, 2014: 1714 No longer ignore settings in configuration files when the value is empty. 1715 1716December 28, 2014: 1717 CDPLAY: Increased output volume by 3.5dB. 1718 1719 Added support for per-game configuration override files. 1720 1721 PSX: Fixed a minor line drawing bug, per tests on a PS1. 1722 1723December 27, 2014: 1724 PSX: Fixed a few instances of left-shifting a negative value, and signed integer overflow. 1725 1726December 26, 2014: 1727 PSX: Replaced SimpleFIFO usage in GPU and MDEC emulation with a new FastFIFO class. 1728 1729December 25, 2014: 1730 PSX: Altered an emulation loop exit condition to not be based on psx.slstart* and psx.slend* settings(to fix a potential 1731 desynchronization issue with netplay and input-recording movies). 1732 1733 Removed VLA usage in qtrecord.cpp. 1734 1735December 24, 2014: 1736 PSX: Tweaked the region detection heuristics to support a hacky Russian translation of Tomb Raider 1. 1737 1738 Added MDFN_lzcount32() inline function to math_ops.h to replace direct usage of __builtin_clz() in psx/cpu.cpp. 1739 1740 PSX, PC-FX, VB: Added alternative to computed-goto in the CPU emulation cores, for crazy people who want to compile (parts of) Mednafen 1741 with MSVC. 1742 1743December 23, 2014: 1744 PSX: Fixed a bug that could cause a significant mischeduling of timer/root-counter 1's IRQ event under certain conditions. 1745 1746 PSX: Brought MDEC decode timing closer to what it is on a PS1; fixes stuttering issue in the early FMV-background sequence 1747 in in Parasite Eve II. 1748 1749December 21, 2014: 1750 Replaced usage of case-range and VLAs with non-GNUish alternatives in: 1751 cdrom/CDAccess_CCD.cpp 1752 cdrom/CDAccess_Physical.cpp 1753 gb/gb.cpp 1754 general.cpp 1755 lynx/system.cpp 1756 md/input/megamouse.cpp 1757 md/system.cpp 1758 nes/input.cpp 1759 netplay.cpp 1760 pce/subhw.cpp 1761 pce/vce_sync.inc 1762 pcfx/debug.cpp 1763 psx/cpu.cpp 1764 psx/spu.cpp 1765 psx/input/memcard.cpp 1766 settings.cpp 1767 vb/debug.cpp 1768 wswan/v30mz.cpp 1769 1770-- 0.9.37.1: -- 1771 1772December 19, 2014: 1773 Fixed some issues causing compilation errors on gcc 4.7.x. 1774 1775 Conditionalize the compilation of shared hardware emulation components(such as 68K, Z80, YM2612, etc. emulators) based on what emulation modules 1776 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 1777 symbols won't include the common specific hardware emulation components. 1778 1779 Fixed some code causing compiler errors with clang 3.4.0. 1780 1781 Fixed broken loading of save states made with 0.9.37+ on big-endian platforms(0.9.37 regression). 1782 1783 fflush() before fstat() on the underlying file descriptor in FileStream::size() if the stream is open for writing. 1784 1785December 18, 2014: 1786 Added zlib type-size sanity tests to tests.cpp 1787 1788 _LARGEFILE64_SOURCE and _LARGEFILE_SOURCE are now defined to "1" in config.h, for zlib purposes. 1789 1790December 17, 2014: 1791 PSX: Avoid undefined behavior(that wasn't currently causing any problems) in the CPU core. 1792 1793December 16, 2014: 1794 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 1795 been an issue in the future. 1796 1797 GB: Load GBC custom palette from "gbc.pal", not "gb.pal"(0.9.37 regression). 1798 1799-- 0.9.37-UNSTABLE: -- 1800 1801December 15, 2014: 1802 MD: Added EA 4-Way Play multitap emulation, based on information from Charles MacDonald. 1803 1804 MD: Fixed Team Player save states(sub ports weren't getting unique section names). 1805 1806December 14, 2014: 1807 MD: Rewrote the Mega Mouse emulation code so it actually works. 1808 1809 NGP: Added a couple of missing sound chip emulation variables to save states. 1810 1811 MD: Fixed some issues with the new multitap support code, including removing Hyper Dunk/Double Dribble from the internal database due to issues 1812 the game has with multitap in some game modes. 1813 1814 PSX: Fixed a potentially-nasty sizeof()-related bug in frontio.cpp. 1815 1816 PSX: Tweaked Justifier lightgun emulation to fix problems with occasional extremely wrong positioning in "Elemental Gearbolt". 1817 1818December 13, 2014: 1819 PSX: Reworked how overscan is hidden when the psx.h_overscan setting is set to 0 to not cause netplay desync with lightguns 1820 if different players have that setting configured differently. 1821 1822 MD: Added emulation of Sega's Team Player multitap. 1823 1824 MD: Added default key to button assignments for the emulated 6-button gamepad on virtual port 1. 1825 1826December 12, 2014: 1827 PSX: Fixed SPU audio mixing so that reverb output respects the main volume control, and to correct output precision/ranges/clamping, per tests on a PS1. 1828 Fixes excessive reverb volume in some parts of "WipEout", and likely other games as well. 1829 Mednafen's PS1 emulation audio output is also now about 3.5dB louder than before, while still maintaing a 2.5dB headroom. 1830 1831 PSX: Greatly simplified the reverb address wrapping logic, per tests on a PS1. 1832 1833December 11, 2014: 1834 Various const char* to const std::string& changes. 1835 1836 Added additional MDFN_GetSetting* inline functions that take a const std::string reference instead of a const char*, and call .c_str() internally, 1837 to cut down on .c_str() usage elsewhere. 1838 1839 Added setting "filesys.state_comp_level". 1840 1841 Removed setting "filesys.disablesavegz". 1842 1843 GB, GBA, MD, VB, SNES, WonderSwan: Save-game memory files are no longer written gzip-compressed. 1844 1845 GBA: Removed support for loading EEPROM from the save-game memory file with "sav" extension(last produced by Mednafen version 0.8.1). 1846 1847 PSX: Made minor precision-related changes to the SPU reverb algorithm code, per tests on a PS1. 1848 1849December 10, 2014: 1850 PSX: Added emulation of unaligned access to the registers controlling the front input/output ports(and no longer triggers an assert() when/if it 1851 happens). 1852 1853 PSX: Fixed broken emulation of an esoteric CDC feature, that could lead to an assert() being triggered under specific circumstances. Fixes 1854 the "Rockman 8" intro FMV(previously, Mednafen would abort out right after the end of the FMV if it was allowed to play all the way through). 1855 1856December 9, 2014: 1857 Reinitialize some input info vectors properly in drivers/input.cpp on emulated device change(so we don't get hilariously bad messages about 1858 analog mode being enabled on a lightgun ;)). 1859 1860 PSX: Added setting psx.h_overscan, default value of "1", that when set to "0" will hide most of the horizontal overscan area(area to the left and 1861 right sides of the screen); useful for games like "Captain Commando" that have garbage in that area. 1862 1863 PSX: Adjusted horizontal positioning of image so that the different pixel clock modes will have the correct relative horizontal positioning(within a +/-1 1864 pixel tolerance in some cases, due to performance considerations and rounding issues in Mednafen), per tests on a PS1. 1865 1866 PSX: Use two small LUTs instead of one gigantic LUT for 15-bit RGB -> 24/32-bit RGB conversion. 1867 1868 PSX: Split the GPU primitive rendering code into several standalone source code files, to be easier on the compiler and enable more effective 1869 parallel building of the source code. 1870 1871 PSX: Added preliminary emulation of GPU texture cache; (mostly) fixes the flickering graphics problem in the map screen of "Tactics Ogre", and fixes the 1872 heat engine effect in "F1 2000". 1873 1874December 8, 2014: 1875 PSX: Reworked various aspects of triangle rasterization to be more accurate, per PS1 tests(though some of the triangle setup code is a bit convoluted now 1876 and should probably be simplified/rewritten somehow). 1877 1878December 7, 2014: 1879 PSX: Added emulation of GPU CLUT cache. 1880 1881December 6, 2014: 1882 Print a warning message about portability if an untrusted file include path(such as from a CUE sheet) contains an 8-bit non-ASCII character. 1883 1884 Fixed a regression that occurred since 0.9.36.x that caused Mednafen to abort out when rotating the screen(via ALT+O) with an emulated system 1885 other than Lynx and WonderSwan. 1886 1887 PSX: Now differentiate between Reset(triggered with F10) and Powering-On(triggered with F11) events, so the former will no longer reset 1888 input device state(relevant with controllers with persistent long-lived internal state like the DualShock). 1889 1890December 5, 2014: 1891 PSX: Fixed some precision-related bugs in the triangle rendering code; fixes the flickering-characters issue that occurs at several locations 1892 in "Final Fantasy 8". Unfortunately, this fix does increase CPU usage a bit more that I would like, and it's going to be tricky to optimize the difference 1893 away. 1894 1895December 4, 2014: 1896 PSX: Made a minor change to the GPU polygon blitting code with negligible performance impacts, but shaves a few hundred KB off the compiled code size. 1897 1898 PSX: Reworked how the GPU saturation LUTs are implemented to prevent undefined behavior. 1899 1900 Lynx: Hooked up(and cleaned up) support for loading homebrew RAM image dumps(such as available at http://handy.sourceforge.net/homebrew.zip and 1901 http://pdroms.de/files/atarilynx/chopper ) 1902 1903 NGP: Fixed a couple of shadowed-variable warnings in T6W28_Apu.cpp. 1904 1905December 3, 2014: 1906 Added new class ZLInflateFilter, to be used for stream-based decompression in the PSF file loading code. 1907 1908 MDFNFILE is now a thin container on top of a Stream-derived object(MemoryStream or FileStream; GZFileStream is not suitable for direct use since we 1909 still have to use Stream::size() in a few places). 1910 1911 MDFNGI::Load() no longer uses return type to signal an error. 1912 1913 Reworked the emulation modules' file loading code to be stream-oriented, rather than an amalgamation of memory-mapped semantics and stream 1914 semantics. 1915 1916 NES: Utilize exceptions to handle errors during file loading and initialization. 1917 1918December 1, 2014: 1919 Merged(finally) FileWrapper into FileStream. 1920 1921November 30, 2014: 1922 Fixed handling/mapping of rumble, status, and switch input bits during netplay. The current semantics of input device switch state in regards to netplay 1923 save states is still less than ideal, and could be considered a regression from 0.9.36. 1924 1925November 28, 2014: 1926 Fixed a rumble-related crashing bug(due to careless use of a pointer into a vector that was later resized) introduced in changes yesterday. 1927 1928 VB: Corrected the value that the timer reload register is initialized with on reset. 1929 1930 "--large-address-aware" is now passed to the linker when building the Windows build, so that the 32-bit build can use more address space(and RAM), which 1931 reduces the probability of running out when state rewinding and/or CD image memory caching is enabled. 1932 1933 PSX: Avoid left-shifting negative values(which is technically undefined behavior, though I'm hopeful compiler developers aren't foolish enough that this 1934 will ever be a real issue) in gte.cpp, spu.cpp, and gpu_polygon.inc. There are still instances left in dma.cpp, mdec.cpp, and gpu_line.inc, however. 1935 1936 Compile with -fwrapv instead of -fno-strict-overflow, as the latter has numerous issues. 1937 1938November 27, 2014: 1939 No longer compile with -Winline, it's causing spurious warnings due to design decisions, and if something really should be inlined we use the INLINE 1940 macro anyway(which evaluates to include __attribute__((always_inline))). 1941 1942 Current emulated device raw input state is now saved in save states, so that persistent data like switch state isn't lost. 1943 1944 Input device input/button descriptors(of type InputDeviceInputInfoStruct) are now packed into IDIISG(derived from std::vector) instead of being plain 1945 C-style arrays, to facilitate, in the future, fixing design flaws and possibly adding neat new functionality. 1946 1947November 26, 2014: 1948 NES: Added some missing MMC5 variables to save states. 1949 1950 NES: Allow save states to be saved and loaded while in the Game Genie code entry screen. 1951 1952November 25, 2014: 1953 Use shiny new C++11 std::exception_ptr to better handle deferred errors/exceptions in the save state loading code, instead of just using naked 1954 error message C-string pointers. 1955 1956 No longer clear the state-present indicator to 0 when a save state load fails(since it could have led to confusion and the accidental overwriting of a state 1957 that is good in a different context). 1958 1959 PSX: Changed the hashing algorithm used on the BIOS ROM image data(for the database and save states) from SHA-1 to SHA-256. 1960 1961November 24, 2014: 1962 PSX: Save the SHA-1 hash of the BIOS in save states, and on load compare the value recorded with the actual current value, and error out the 1963 state loading process if they mismatch(to prevent loading a save state created while running under a different BIOS, which can cause insidiously 1964 subtle problems). 1965 1966 PSX: Implemented a rudimentary internal BIOS database, and now error-out when using a bad BIOS, or a BIOS from the wrong region. 1967 1968 PCE, PC-FX: Fixed the garbled-sound-while-state-rewinding problem. 1969 1970 PCE: Fixed a frame mid-sync regression from around 0.9.33 that broke "Takeda Shingen". 1971 1972 Implemented new netplay commands "/list" and "/gamekey". 1973 1974 Replaced UTF8* in favor of plain char* in various places where it's still used. 1975 1976November 21, 2014: 1977 PSX: Changed DualShock analog mode status display to use new IDIT_STATUS input/output type, instead of directly calling MDFN_DispMessage(). 1978 1979 PCE_FAST: Changed 6-button mode toggle to use new IDIT_SWITCH input type, instead of IDIT_BUTTON coupled with internal state toggling and MDFN_DispMessage(). 1980 1981November 15, 2014: 1982 Fixed virtual analog button input support(e.g. for DualShock analog sticks), broken in an August 4th change. 1983 1984November 9, 2014: 1985 WonderSwan: Added partial emulation(just enough to get it to work) of the WonderWitch's flash ROM, so that the WonderWitch firmware 1986 will boot now, and can be used with the "wswan.excomm" and "wswan.excomm.path" settings/functionality. 1987 1988November 5, 2014: 1989 Added support for automatic loading and usage of redump.org "SBI" files when loading CUE sheets; the files should have the same base filename 1990 as the CUE sheet, and the file extension case should match the case of the corresponding character in the CUE sheet filename file extension. 1991 Example: 1992 "Super Bandicoot Luigi (Moon, Niflheim, Australia).CuE" -> "Super Bandicoot Luigi (Moon, Niflheim, Australia).SbI" 1993 1994 PSX: Fixed half-implemented broken implementation of CDC command 0x00; fixes lockups in the European PAL releases of "Spyro 2" and 1995 "Spyro - Year of the Dragon". 1996 1997November 4, 2014: 1998 PCE_FAST, PC-FX: Fixed some mostly-benign violations of strict aliasing. 1999 2000 MD: C68k code is compiled as C++ now, and fixed the flawed approach at circumventing strict aliasing. 2001 2002 Replaced MDFN_ALIGN() with C++11 alignas(). 2003 2004 Revamped masmem.h and endian.h, merging functionality into endian.h, and fixed "MultiAccessSizeMem" to actually work properly(the previous 2005 code constructs it used violated strict aliasing, due to a misunderstanding of how gcc handles type punning via unions). "MultiAccessSizeMem" may 2006 be phased out now, since its original intended purpose no longer requires it. 2007 2008November 2, 2014: 2009 NES: Partially encapsulated the code in namespace MDFN_IEN_NES to reduce global namespace pollution(in regards to object file linking). 2010 2011 NES: Use fastcall calling convention for high-call-frequency performance-critical functions when compiling for 32-bit x86. 2012 2013 PSX: Implemented preliminary support for multiplicand value-dependent MULT/MULTU instruction timing. 2014 2015 Added more compiler sanity/bug tests to tests.cpp. 2016 2017 On startup, now print out version information regarding the MinGW-W64 runtime and libiconv, if applicable. 2018 2019October 30, 2014: 2020 Use poll() instead of select() in the POSIX sockets netplay code, to keep netplay from breaking in some quasi-pathological 2021 real-world Mednafen usage scenarios. 2022 2023October 20, 2014: 2024 NES: Fixed a minor issue that could break compiling after --disable-nls was passed to the configure script. 2025 2026 PSX: Reworked disc detection and region detection heuristics to pick up more homebrew PS1 games, and to make better decisions 2027 on what region of the PS1 to emulate for heterogenous disc sets and for titles(e.g. homebrew) that don't follow Sony 2028 conventions in regards to ISO-9660 system area contents and ISO-9660 filesystem layout. 2029 2030September 10, 2014: 2031 PSX: Generate an AdEL exception when trying to fetch an instruction and PC is mis-misaligned. 2032 2033 PCE: No longer attempt to load a custom palette after loading an NSF file. 2034 2035 NES: No longer attempt to load a custom palette after loading an NSF file. 2036 2037September 8, 2014: 2038 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 2039 exotic(other than left, center, and right) physical mouse buttons to virtual buttons. 2040 2041 PSX: Made changes to avoid signed overflow and left shift of signed variables in the CPU core JUST BECAUSE. 2042 2043 Fixed several violations of C/C++ sequence point rules in relation to call order in expressions 2044 of functions with side effects, that could lead to undefined/wrong behavior with certain types of compiler optimizations 2045 and features(e.g. PC-FX emulation was broken on gcc 4.9.x with -fsanitize=undefined -std=gnu++11). 2046 2047August 27, 2014: 2048 NES: Handle missing input-related save state sections on load more gracefully. 2049 2050 NES: Automatically enable emulation of the Famicom 4-player adapter for the "Nekketsu Koukou Dodgeball-bu" game. 2051 2052August 24, 2014: 2053 SNES: Fixed usage of wrong form of std::unique_ptr in the save state code. 2054 2055August 23, 2014: 2056 Made minor optimizations to the music format(NSF, HES, PSF, etc.) waveform visualization code. 2057 2058 Removed unused selective blur code, as the algorithm is too simplistic to really be useful in Mednafen. Though on a similar subject, it may be interesting 2059 to look into SA-DCT again for PS1 and PC-FX FMV-filtering purposes, but that's an exercise for another day. 2060 2061 Cleaned up and refactored a bit of code in drivers/*. 2062 2063August 20, 2014: 2064 Changed a few uses MDFN_malloc/MDFN_calloc to MDFN_malloc_T/MDFN_calloc_T, where appropriate. 2065 2066August 19, 2014: 2067 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 2068 for a prolonged period of time). 2069 2070August 17, 2014: 2071 GB, GBA: Fixed broken save state structure definitions for saving/loading GB APU state. This fix will cause save state backwards incompatibility issues 2072 (for states created with Mednafen < 0.9.37) on big-endian platforms. 2073 2074 Save state variable data is now saved in native-endian form for performance reasons(and it fixes a bug introduced from the earlier save state refactoring 2075 that could cause state corruption if a state save failed when running on a big-endian platform), repurposing the most-significant bit of the total length 2076 field of the header to signal if the data is big-endian or not. 2077 2078August 16, 2014: 2079 NES: Custom palette loading with PAL emulation now loads from file "nes-pal.pal" instead of file "nes.pal"(NTSC custom palette). 2080 2081 GB, NES, PCE_FAST: Implemented internal support for palettized 8bpp output when the palette color components have a precision of less than 8 bits. 2082 2083August 13, 2014: 2084 PSX: Implemented a very rough simulation of complex, borderline-unstable CDC behavior that "Bedlam" and "Rise 2" rely on(fixes corrupt graphics 2085 problems in those two games). 2086 2087August 12, 2014: 2088 Lynx: Fixed a minor stereo sound emulation issue thanks to a patch from "sage". 2089 2090 SMS, GG: Added support for custom palettes. 2091 2092 NES: Added support for custom palettes with 512 colors(for de-emphasis bits colors). 2093 2094 Refactored custom palette loading code out of emulation modules and into Mednafen's core. 2095 2096August 8, 2014: 2097 PCE, PCE_FAST, PC-FX: Fixed a bug that could cause a crash if the emulated CD lid/tray is closed with no disc when loading a pre-0.9.37 save state. 2098 2099August 5, 2014: 2100 Hardcode enabling of DirectSound and WASAPI in configure.ac for mingw builds, rather than enabling it only if the relevant header files 2101 are found; this will help ensure that any unofficial Windows builds of Mednafen in the future will not be silently broken/lacking in important features. 2102 2103August 4, 2014: 2104 The input port state data memory is no longer zeroed-out in bulk in the driver-side input code on emulated devices input updating, instead being cleared 2105 as needed by each input; this change is to faciliate implementing switches in a more proper and flexible way in the future than they're handled now. 2106 2107 Changed the types of the arguments to MDFNI_SetInput() and MDFNGI::SetInput to be more sensible. 2108 2109 Added dummy enum(= 0) to GameMediumTypes to fix a bug introduced from the July 31 GameType change. 2110 2111 WonderSwan: Add strict checking for proper save game memory file size on game load(NOTE: this will cause problems for Dicing Knight 2112 and Judgment Silversword save game memory files written with Mednafen versions prior to 0.9.36). 2113 2114August 3, 2014: 2115 PCE, PCE_FAST: Fixed bug(from sloppy handling of errors) that caused battery-backed save game file destruction 2116 if an error(e.g. missing CD BIOS, memory allocation failure, etc.) occurred during game load and initialization. 2117 2118August 2, 2014: 2119 PCE: Added missing(oops) code to load MCGenjin non-volatile memory from disk on game load, and no longer compress MCGenjin non-volatile memory 2120 files on disk(in gzip format). 2121 2122 PCE, PCE_FAST, PC-FX: Add strict checking for proper save game memory file size on game load. 2123 2124August 1, 2014: 2125 Removed unused MDFNGI::soundrate. 2126 2127 PSX: Reworked InputDevice::ReadNV() to reduce overhead in the memory card saving code. 2128 2129July 31, 2014: 2130 Begin phasing out usage of MDFNGI::GameType 2131 2132July 30, 2014: 2133 GBA: No longer compile with -fno-unit-at-a-time as it's no longer the 2000s. ;) 2134 2135 Implemented a new, more flexible abstraction for removable media changing during runtime, and updated the NES, PCE, PC-FX, PCE_FAST, and 2136 PSX modules to use it. 2137 2138 Removed mostly-unnecessary gcc command-line arguments that control inlining decision parameters from the build system. 2139 2140July 27, 2014: 2141 Removed the recently-added state load error recovery code, as it's not worth the overhead and increased code complexity, especially considering the 2142 deferred error and optional-section changes from today. 2143 2144 Fixed save state loading code to not read past the end of the state while searching for sections(which is important now that we made some guarantees 2145 and implications about how the stream passed in is utilized). 2146 2147 PC-FX, MD: Mark input device state sections as optional to prevent the new state code from erroring out completely when a section is missing(as will 2148 happen when loading a state saved when a different device was selected). 2149 2150 PSX: Restructured save state generation to be hierarchical(in relation to multitaps). 2151 2152 Reworked MDFNSS_StateAction() to not throw exceptions, instead marking deferred error state, to avoid potential security issues under low memory 2153 conditions(due to state variables being loaded without the emulation module-specific sanitizing code being run). 2154 2155July 26, 2014: 2156 Made use of "override" specifier in a few places. 2157 2158 On save state load(outside of the state rewinding code path), a temporary save state is now created before the load is attempted. If the load 2159 fails, the temporary save state is loaded. 2160 2161 Now compile QuickLZ with -fno-strict-aliasing to avoid potential future trouble, since it does violate strict aliasing in at least a few places. 2162 2163July 25, 2014: 2164 Fixed broken utility get_BE<>() template function in Stream. 2165 2166 Moved gzip-reading-into-memory algorithm(exponentially increasing read() sizes along with allocated memory) from MDFNFILE to MemoryStream. 2167 2168 Moved mmap() functionality from MDFNFILE(file.cpp) to FileWrapper/FileStream. 2169 2170 Moved IPS patching code out of file.cpp, and made the code patch a Stream instead of raw memory directly(which causes 2171 a slight drop in efficiency, but it shouldn't be a problem). 2172 2173 GB, PCE_FAST: Utilize GZFileStream, and properly error out if there's a fatal error(other than file not found) 2174 during save game loading. 2175 2176July 24, 2014: 2177 Changed how missing section errors are handled; an exception is now thrown when loading a save state and a section is missing, unless 2178 MDFNSS_StateAction() was called with optional == true. 2179 2180 Utilize GZFileStream instead of direct zlib gz*() usage in the game/ROM image file loading code. 2181 2182July 23, 2014: 2183 Re-implemented support for state-rewinding during movie recording, and added support for doing it during playback. Though trying to rewind across 2184 a movie state-change(in the sense of recording/playing started or stopped) will cause the rewinder to error out, as should be expected. 2185 2186 Input-recording movies are no longer written/read gzip-compressed(just plain file access), and the format is now slightly different as well. 2187 2188 In the fast(state-rewinding) state loading/saving code, align the stream's position to a 16-byte boundary before writing large(>=65536 bytes) variables, 2189 to ostensibly improve memory copy performance. 2190 2191 Save and verify(on load) section names and small canaries in state-rewinding save states, to help prevent save game corruption in case something 2192 goes horribly wrong(such as from a severe (de)compressor or compression filter bug). 2193 2194July 22, 2014: 2195 Utilize strongly-typed enum for GZFileStream open modes, to prevent accidental usage of FileStream open modes. 2196 2197July 21, 2014(accumulated changelog for several days): 2198 2199 Fixed some subtle bugs in MemoryStream. 2200 2201 Removed "srwcompressor" setting; only "quicklz", the default of the removed setting, is available and used now for state rewinding. 2202 2203 Refactored and rewrote state rewinding code, with some optimizations over the old code for systems with large save states(PC-FX, PS1). 2204 2205 Simplified and cleaned up some of the core save state functions. 2206 2207 Adapted core save state code to take a Stream(though the save state code does require fast seeking during saving and loading, so that rules out 2208 passing in a GZFileStream directly), and to utilize exceptions to signal error conditions(except for missing sections, that still needs to be worked 2209 out). 2210 2211 Made changes to the build system to require and enable C++11(-std=gnu++11). 2212 2213 SNES, PSX: Reverse sound data before resampling when state-rewinding, to fix the sound crackling. 2214 2215 PSX: Fixed a bug that caused a crash when trying to use save states during PSF playback/PS-EXE execution. 2216 2217 NES: Save NSF playback variables in save states(though save states made during NSF playback are still missing expansion chip state data). 2218 2219 WonderSwan: Resolved a few compiler warnings. 2220 2221 WonderSwan: Save/Load relevant WSR playback state in save states during WSR playback. 2222 2223 PCE, PC-FX, SMS, SNES, VB, WonderSwan: Utilize GZFileStream, and properly error out if there's a fatal error(other than file not found) 2224 during save game loading. 2225 2226 Wrote GZFileStream class, derived from Stream, as a wrapper around gzFile. 2227 2228July 17, 2014: 2229 NGP: Added proper error handling(using exceptions) to the FLASH loading and saving code 2230 2231July 16, 2014: 2232 NGP: Initialize XIX, XIY, and XIZ to match what the BIOS leaves them as(as observed via MESS' debugger), and removed the ROM patches/hacks 2233 for "Puyo Pop". 2234 2235 NGP: Utilize exceptions in the ROM image loading and initialization code. 2236 2237 NGP: Fixed some endian-related issues in regards to reflecting bits of the ROM header to RAM during initialization. 2238 2239 NGP: Initialize VRAM differently to partially reflect the state the BIOS leaves it in, and removed the "Metal Slug - 2nd Mission" ROM patch/hack 2240 (thanks to "FluBBa" for the tip on what the game was doing/relied on). 2241 2242 NGP: Fixed a potentially-exploitable overflow bug in the FLASH dirty block list code. 2243 2244July 15, 2014: 2245 Added a truncate() method to the Stream class and derived classes. 2246 2247July 13, 2014: 2248 SMS: Made use of exceptions in the file loading and system initialization code paths. 2249 2250July 11, 2014: 2251 SNES: Removed unused(in this fork) header and build files. 2252 2253 SNES: Removed nonfunctional stubish(in this old version of bsnes) ST011 and ST018 emulation code. 2254 2255 SNES: Removed SGB emulation code that was never properly hooked up in Mednafen. 2256 2257 SNES: Removed unsupported and untested(in Mednafen) 21fx emulation code. 2258 2259 SNES: Made minor structural optimizations to the S-CPU and SuperFX emulation code. 2260 2261July 10, 2014: 2262 SNES: Made minor structural optimizations to the S-DSP emulation code. 2263 2264July 8, 2014: 2265 VB: Made (better) use of exceptions in the ROM image loading and initialization code. 2266 2267 NES: Made use of MODE_WRITE_INPLACE to write nonvolatile (saved game) memory to disk. 2268 2269July 7, 2014: 2270 PSX: Made use of MODE_WRITE_INPLACE to write memory cards to disk, to slightly reduce the probability of unrecoverable memory card destruction/corruption 2271 under certain pathological system conditions(though in the future we should probably change it to use a temporary filename and rename(), at least on 2272 POSIX-compliant systems). 2273 2274 Added a new file open mode to FileWrapper(and FileStream) named "MODE_WRITE_INPLACE", that is like "MODE_WRITE"(and "wb" with fopen()), EXCEPT that 2275 it won't truncate the file if it already exists. 2276 2277July 4, 2014: 2278 PSX: Fixed a longstanding bug(and removed the associated kludge) in the DMA IRQ emulation, per tests on a PS1. 2279 2280 Added missing relevant copyright statement to pce_psg.cpp and pce_psg.h(since the origin of the skeleton code, TGEmu, isn't 2281 listed in the documentation anywhere). 2282 2283 Cleaned up a few #include statements(#include "mednafen/XXX.h" to #include <mednafen/XXX.h>). 2284 2285June 30, 2014: 2286 PSX: Made optimizations to the SPU reverb resampling code. 2287 2288 PSX: Added emulation of an SPU quirk/bug regarding its handling of ADPCM blocks with a shift value greater than 12, per tests on a PS1. 2289 It's unlikely any commercially-released games use such shift values, though. 2290 2291June 28, 2014: 2292 PSX: Replaced 128KiB GTE division reciprocal table with a 257-byte table and Newton-Raphson reciprocal calculation code. 2293 2294-- 0.9.36.2: -- 2295 2296June 25, 2014: 2297 SNES: Save extra input device state in save states that the bsnes core fails to save. 2298 2299 Removed computationally-expensive and unnecessary(it's already done in the state load code path) duplicate-variable check debug code 2300 in the save state saving code. 2301 2302 SNES: Hooked up Super Scope emulation. 2303 2304June 24, 2014: 2305 PCE_FAST: Removed debug puts() in VPC mixing inner loop, and added compiler hints to some of the rendering and mixing loops. 2306 2307 Fixed an ancient regression introduced around version 0.9.16-WIP. Said regression caused the file extension of the save state used by the auto save 2308 state save/load feature(setting "autosave") to be the same as the extension used for the currently selected save state slot, effectively overwriting that 2309 save state slot on exit. 2310 2311 Added setting "video.disable_composition", to allow the user to override Mednafen's default behavior of disabling desktop composition on 2312 Windows Vista and Windows 7. 2313 2314June 23, 2014: 2315 MD: Fixed a 68K emulation regression introduced in 0.9.34, that broke save game loading in "Sonic the Hedgehog 3", 2316 and possibly broke other games in subtle ways. 2317 2318 MD: Fixed prototype for cart mapper 16-bit write function. 2319 2320 MD: Cleaned up debug printf()s. 2321 2322 PSX, PCE, MD, CDPLAY: Resolved a few compiler warnings. 2323 2324 PC-FX: Fixed an old bug that, when coupled with changes made in 0.9.35, caused low-volume crackling in the CD-DA sound output. 2325 2326-- 0.9.36.1: -- 2327 2328June 22, 2014: 2329 Fixed a bug that could cause an assert() to trigger under certain circumstances when the scale2x/scale3x/scale4x special scaler is used with 2330 SNES emulation. 2331 2332 PSX: Fixed a major SPU emulation regression in 0.9.36 that completely broke sample playback on a channel when the playback rate 2333 was set near the maximum. 2334 2335 PSX: Fixed noise emulation playback frequency calculation(particularly for the lowest noise playback frequencies), per tests on a PS1. 2336 It's unlikely to have any audible effect on games, though. 2337 2338-- 0.9.36: -- 2339 2340June 17, 2014: 2341 PSX: Rewrote SPU ADPCM decoding code per tests on a PS1; fixes the early voice cutoff problem in "Thousand Arms", and possibly some other 2342 games as well. Seems to fix the post-battle quasi-random lockup problem in the Japanese version of Tales of Destiny. 2343 2344June 15, 2014: 2345 WonderSwan: Added experimental, undocumented support for interfacing with trap15's WonderFence program, which provides MobileWonderGate emulation; 2346 controlled via settings "wswan.excomm" and "wswan.excomm.path". This support is currently only available on UN*X-like platforms. 2347 2348 WonderSwan: Added SRAM size calculation for the raw header value of 0x05(used by MobileWonderGate). 2349 2350 WonderSwan: Corrected the SRAM size calculation for the raw header value of 0x04(used by Dicing Knight and Judgement Silversword). 2351 2352 WonderSwan: Rewrote RTC emulation code to avoid runtime use of C library time functions(fixing potential desync issues when using netplay and input-recording 2353 movies), and fixed the time initialization code to reflect the current local time instead of UTC. 2354 2355June 14, 2014: 2356 PSX: Implemented experimental support for save states. 2357 2358 PSX: Rewrote MDEC execution loop; the MDEC emulation model still is far from perfect, though. Fixes the lockup during the intro FMV of 2359 a corrupt copy of "Dragon Knight 4" that's floating around the Internet. 2360 2361June 10, 2014: 2362 Ripped out incomplete "snes_perf" emulation module, and ripped out the unimplemented PC emulation stub module. 2363 2364June 9, 2014: 2365 PSX: Improvements to SPU volume sweep emulation accuracy per tests on a PS1. Fixes sound/music wonkiness in "WipEout 3". 2366 2367June 6, 2014: 2368 PSX: Minor improvements to MDEC YCbCr to RGB color conversion accuracy, per tests on a PS1. 2369 2370-- 0.9.35.1: -- 2371 2372June 5, 2014: 2373 PSX: Improved accuracy of the GPU framebuffer rectangle copy command(0x80) per tests on a PS1; fixes graphical glitches in the 2374 water effect of stage 4 of "Einhander". 2375 2376-- 0.9.35: -- 2377 2378May 31, 2014: 2379 Use a semaphore to allow for tighter emulation-thread->video-thread blit timing granularity. 2380 2381May 29, 2014: 2382 PC-FX: Battery-backed save game memory is now saved to a file during runtime if the memory contents have changed, rather than only 2383 saved on exit as before. 2384 2385 NES: Fixed unusably-broken emulation of iNES mapper 80's internal battery-backed save-game RAM(used by "Minelvation Saga", "Mirai Shinwa Jarvas", and 2386 "Taito Grand Prix"). 2387 2388 NES: Implemented battery-backed save game support for iNES mapper 69(for the two or so games that need it). 2389 2390 NES: Fixed multiple major issues with the iNES mapper 69 save state code. 2391 2392 NES: Added missing PowerPad default button assignments. 2393 2394 NES: Fixed how Mahjong, Family Trainer, and PowerPad input device code reads input data, to fix brokenness on big-endian platforms, and to prevent 2395 (mostly benign) buffer overflows. 2396 2397 NES: Fixed some buffer overflow issues in the "Barcode World" barcode reader input device emulation code. 2398 2399 NES: Changed how save state loading works so that failure to load one section will not abort loading, but signal a deferred error(most useful 2400 with missing input device sections). 2401 2402May 28, 2014: 2403 Fixed some careless unsafe instances of "-2147483648" added since 0.9.34.1. 2404 2405 PSX: Draw lightgun crosshairs in a separate pass to the lightgun color/brightness evaluation logic, so that crosshairs from a lightgun on a lower port 2406 won't mess up the color evaluation logic of a lightgun on a higher port. 2407 2408 PSX: Refactored the lightgun crosshair drawing code to reduce code duplication, and made some changes to the drawing algorithm to increase 2409 visibility(and make the crosshairs not lopsided anymore). 2410 2411 Pack IDIT_X_AXIS and IDIT_Y_AXIS input types in 2 bytes, 1-byte-aligned, instead of 4 bytes, 4-byte-aligned. 2412 2413 NES: Fixed some minor issues with the lightgun coordinate translation calculations(hopefully for the last time :p). 2414 2415 PSX: Fixed a bug in the Guncon and Justifier emulation code that resulted in memory corruption when the crosshairs were 2416 positioned near the upper left corner of the screen. 2417 2418 NES: Fixed a bug in the iNES mapper 71 code that was causing Mednafen to crash when trying to play "Dreamworld Pogie". 2419 2420May 27, 2014: 2421 NES: Made some improvements to the new X24C01P/X24C02P EEPROM emulation code, though it's still a bit messy. 2422 2423May 26, 2014: 2424 NES: Added support for iNES mapper 159. 2425 2426 NES: Added emulation of mapper 16's EEPROM. 2427 2428 NES: Fixed a bug that was causing some of the Bandai Datach games to have corrupt graphics. 2429 2430 NES: Reworked how the Zapper crosshairs are drawn to fix the problem of them being drawn at the wrong position 2431 if "nes.clipsides" is set to "1"(and to render with 8bpp and 16bpp video output, and to update properly in respect 2432 to MDFN_MidLineUpdate(); though neither is currently used by Mednafen per-se, they are useful for ports). 2433 2434 NES: Fixed a design flaw that could easily cause desync during netplay with an emulated Zapper if different clients' video settings 2435 are different. 2436 2437May 25, 2014: 2438 Cleaned up some of the netplay code to increase maintainability. 2439 2440May 24, 2014: 2441 Changed how the Linux joystick code de-initializes joysticks when rumble has been used, to try to minimize the 2442 probability of a kernel panic due to buggy(race conditions) Linux kernel drivers. 2443 2444 PSX: Added emulation of GPU IRQs. 2445 2446 PSX: Implemented support for GPU command number mirrors. 2447 2448May 23, 2014: 2449 NES: Added SSE2 code to the sound resampler, but currently disabled(#if 0'd out) as it will probably perform 2450 worse than the MMX version on a large number of CPU models. 2451 2452 NES: Made some general minor optimizations to the sound resampling code. 2453 2454 NES: Add "memory" to the clobber list of the sound resampler's MMX inline assembly MAC loop code. 2455 2456May 22, 2014: 2457 PSX: Improved accuracy of GPU line drawing algorithm. 2458 2459 WonderSwan: Improved noise(sound) emulation(thanks to trap15). 2460 2461May 20, 2014: 2462 PSX: Optimized(reduced memory usage) layout of the GPU command table. 2463 2464May 19, 2014: 2465 Added gcc format string check attributes to the applicable trio function prototypes, and fixed a few minor problems the 2466 checks uncovered. 2467 2468 Fixed a compilation error when compiling without the debugger(--disable-debugger passed to the configure script). 2469 2470 PSX: Fixed a glitch/bug in the triangle rasterization code that was causing some textured rectangular quads to have incorrect 2471 distortion of the texture(see "I" of "OPTIONS" in the Twisted Metal 2 title screen). 2472 2473May 18, 2014: 2474 Implemented MDFND_WaitCondTimeout() (currently unused by anything, though). 2475 2476May 14, 2014: 2477 Make the "wasapish"(WASAPI shared-mode) sound driver the default sound driver for where it's available(Windows Vista and newer). 2478 2479May 13, 2014: 2480 PCE, PC-FX: Implemented CD-DA de-emphasis filter support(though the filter is a rough approximation). 2481 2482 PCE, PC-FX: Optimized CD-DA filtering code, and implemented an SSE2 version of the oversampling filter code, to partially 2483 mask the performance hit that the oversampling filter causes. 2484 2485May 12, 2014: 2486 PCE, PCFX: Loosened output resampling filter design constraints so that the resampler doesn't take excessive amounts of 2487 CPU time with higher(96KHz+) output rates(made feasible by implementing CD-DA oversampling). 2488 2489 PCE, PC-FX: CD-DA is now run through a 2x oversampling filter(this does have a minor performance penalty to it though, sadly). 2490 2491-- 0.9.34.1: -- 2492 2493May 11, 2014: 2494 Fixed a bug in the sound format conversion code that caused garbled audio when using the new shared-mode WASAPI driver 2495 with a sound device configured with more than 2 speakers. 2496 2497-- 0.9.34: -- 2498 2499May 10, 2014: 2500 CDPLAY: Optimized the visualization code. 2501 2502 Added a new shared-mode WASAPI sound driver named "wasapish". 2503 2504 For consistency, the "wasapi" and "sdl" sound drivers no longer subtract the overhead latency from the desired buffer size 2505 when calculating the size of the buffer to use. 2506 2507 Changed the default value of setting "sound.buffer_time" to "0", to enable usage of partially-new code that calculates a buffer 2508 size automatically based on emulated system characteristics and the sound driver in use. 2509 2510May 8, 2014: 2511 GB: Fixed tilt sensor emulation that was broken in the May 6 IDIT_BUTTON_ANALOG packing change. 2512 2513 Updated the embedded copy of libmpcdec to the latest SVN copy; fixes problems with playback of older SV7 format files(with 2514 the CD emulation code). 2515 2516 Wrote threading code to target Win32 APIs directly, rather than rely on SDL's threading support, for the Windows build. 2517 2518May 7, 2014: 2519 GBA, NES: Resolved some compiler warnings. 2520 2521 No longer compile with -mstackrealign for the Windows build, instead using "__attribute__((force_align_arg_pointer))" where 2522 appropriate(e.g. Win32 and SDL callbacks). 2523 2524 Updated the cheat console-interface code to use a condition variable instead of sleep-waiting. 2525 2526 Remove an erroneous extra mutex unlock around a driver-side message queue. 2527 2528May 6, 2014: 2529 Pack "IDIT_BUTTON_ANALOG" and "IDIT_RUMBLE" type input device data more tightly(only aligning to a byte-boundary now, 2530 and packing as 16-bits rather than 32-bits). 2531 2532 Calculate and send a device type number for each emulated port with the netplay login data(the data is not used currently by 2533 mednafen-server, but will be in the future). 2534 2535May 5, 2014: 2536 Reworked the multithreaded CD reading code to use condition variables, rather than repeatedly unlocking, sleeping, and 2537 locking mutexes. This should help with performance a bit, and will prevent a lot of unnecessary CPU/CPU core wakeups, especially 2538 after loading multiple disc images with M3U files(since a read thread is created for each disc image, at least when CD image 2539 memcaching is disabled, the default). 2540 2541 Moved common parts of the MDFNI_Load and MDFNI_LoadCD functions into a separate function to reduce code duplication. 2542 2543 Emulation modules' LoadCD functions all now throw exceptions on error, so changed the function pointer prototype to remove 2544 the return type(void all the way!). 2545 2546May 4, 2014: 2547 PCE, PCE_FAST, PC-FX, MD: Make better use of exceptions(and handle some that were not handled properly before) in the game 2548 loading and initialization code paths. 2549 2550 Emulation modules' Load and LoadCD functions may now throw exceptions upwards instead of calling MDFN_PrintError() and 2551 returning 0. 2552 2553 Reworked IPS parsing and applying code to use exceptions, and Stream instead of stdio file access. 2554 2555 Reworked MDFNFILE to use exceptions to signal errors on file loading(the memory-stream functions provided primarily for the NES 2556 module's use still don't throw exceptions, however). 2557 2558 Lynx: Removed undocumented(and largely pointless) support for loading a gzip or ZIP-compressed "lynxboot.img" firmware file. 2559 2560 GB: Made game loading code more resilient to avoid leaking memory if an error occurs during game load. 2561 2562 Added a gcc format string check attribute to an MDFN_Error constructor, and fixed a few minor format string problems this 2563 checking exposed. 2564 2565May 3, 2014: 2566 GBA: Reworked save file type parsing code to use FileStream instead of stdio. 2567 2568 GBA: Sanitize a few variables in the flash memory save state loading code to prevent malicious save states blah blah blah. 2569 2570 GBA: Added masks to array access in the EEPROM emulation code to prevent malicious save states from corrupting the heap. 2571 2572 GBA: EEPROM file loading code now errors out if there's an error opening or reading the file(but not if the error is that it 2573 simply does not exist), or the file is of an unexpected/incorrect size. 2574 2575May 2, 2014: 2576 NES: The filename scanning to select region/video standard(NTSC or PAL), controlled via the "nes.fnscan" setting, now 2577 uses the filename and path stored in the ZIP file(when loading a NES game from a ZIP file) rather than the name of the ZIP file 2578 itself. Additionally, the filename scanning feature no longer is affected by strings in the file extension(though I doubt this 2579 will affect anyone, as you'd have to be pretty deranged to name a NES game file like that). 2580 2581May 1, 2014: 2582 PSX: Made CD-DA playback position report code more correct and resilient in regards to Q subchannel checksum errors. 2583 2584April 30, 2014: 2585 PSX: Added settings to allow for scaling the analog stick axis values, to work around the issue of different logical ranges of 2586 motion for PS1 DualShock and Dual Analog controllers versus more modern PC-compatible gamepads. 2587 2588April 29, 2014: 2589 Added logic to gracefully fall back to other fullscreen stretch modes if the current fullscreen resolution is too low to support the 2590 stretch mode selected. 2591 2592April 28, 2014: 2593 Added support for mapping joystick axes to lightgun screen coordinates; however, the configuration must be done manually 2594 by editing the configuration file. (Additionally, the translation will not function properly if the software-rotation 2595 feature(via ALT+O) is used.) 2596 Example: 2597 psx.input.port2.guncon.x_axis joystick 630f0eab74165481 00008000 2598 psx.input.port2.guncon.y_axis joystick 630f0eab74165481 00008001 2599 Alternate coordinate translation for fullscreen mode, intended for physical modern lightgun and pointer devices: 2600 psx.input.port2.guncon.x_axis joystick 630f0eab74165481 00048000 2601 psx.input.port2.guncon.y_axis joystick 630f0eab74165481 00048001 2602 2603April 27, 2014: 2604 GB: Cleaned up the memory-mapper code, fixing a few bugs that allowed some games(like "Best of the Best Championship Karate") 2605 to cause Mednafen itself to crash. 2606 2607 GB: Fixed MBC7 support(it's been broken in Mednafen for a loooong time). 2608 2609 GB: Disabled the broken simulation of HDMA overhead that seemed to be doing more harm than good; fixes problems with 2610 unstable framerates and inaccurate slowdown on some GBC games(such as "Shantae"). 2611 2612 MD, NGP, WonderSwan: Fixed potential memory leaks(memory was not really leaked due to how Mednafen is currently structured, 2613 but they could have become problematic leaks in the future). 2614 2615 Merge clamp.h into math_ops.h. 2616 2617 More #include statement changes in emulation module sources to use #include <mednafen/BLAH> style instead of #include "../BLAH". 2618 2619April 26, 2014: 2620 Fixed a bug that was causing the output image to be distorted when rotation(via ALT+O) was used in conjunction with 2621 a *.videoip setting value of "x" or "y". 2622 2623 Added a test/demo module to help work out bugs in the video processing code paths. 2624 2625April 25, 2014: 2626 Reworked the build system and numerous source code and header files to allow for less sloppiness with -I include paths. 2627 2628 GB: Statically-allocate a 320-byte graphics buffer instead of malloc()'ing it. 2629 2630April 24, 2014: 2631 Fixed a problem with the configure script so it will (hopefully) no longer error out when cross-compiling. 2632 2633 MD: memset() line buffer padding areas to prevent sprite rendering from reading from uninitialized memory. 2634 2635 MD: Fixed violations of strict aliasing in the 68K CPU core. 2636 2637 PC-FX, VB: Replaced SoftFloat, used in FPU emulation, with newly-written-while-sleep-deprived code. It's possible this may 2638 cause regressions, since floating-point stuff is rather hairy... 2639 2640 Fixed an ancient bug that made iterative multibyte-value cheat searches extremely unreliable. 2641 2642 Fixed a bug that broke the output image when displaying a source image with multiple horizontal resolutions at a specific 2643 rotation angle(selected via ALT+O). 2644 2645 Added support for negative <system>.scanlines setting values, which will change scanline behavior and size to overlay/obscure 2646 the previous field's line data if "video.deinterlacer" is set to "weave". 2647 2648 Added setting "video.deinterlacer", default value of "weave". 2649 2650 NES: Align a temporary line buffer array to prevent the possibility of a CPU fault and/or poor performance on non-x86 platforms. 2651 2652 Simplified handling of muli-horizontal-resolution frames by changing "LineWidths"'s type from MDFN_Rect(representing 2653 x offset and width) to a simple int32(representing just width). 2654 2655April 23, 2014: 2656 GB: Added support for custom palettes that specify BGP, OBP0, and OBP1 colors independently. 2657 2658April 18, 2014: 2659 PC-FX, VB: Corrected the debugger's disassembly of the 5-bit sign-extended immediate form of "mov" 2660 (the disassembler was failing to sign-extend). 2661 2662-- 0.9.33.3: -- 2663 2664April 16, 2014: 2665 Reworked the FPS calculation algorithm to produce more accurate FPS values. 2666 2667 Added a manifest file that's embedded into the Windows executable, to ensure that noxious DPI virtualization and scaling available 2668 on Windows Vista and newer will not be used with Mednafen. 2669 2670 Added code to disable DWM composition when running on pre-Windows 8 systems, to ensure better performance and less 2671 video juddering. (Sadly, it's not possible to disable desktop composition in this manner on Windows 8 and later) 2672 2673 PCE, PCE_FAST: Added a missing ADPCM playback variable to save states; fixes the problem of severe ADPCM sound 2674 distortion when loading save states that are saved during ADPCM playback(especially noticeable with the state rewinding feature). 2675 2676April 15, 2014: 2677 Modified MDFN_RemoveControlChars() to not kill non-7-bit-ASCII text. 2678 2679April 12, 2014: 2680 Misc minor code cleanups and fixes for some compiler warnings. 2681 2682April 11, 2014: 2683 NES: Fixed broken emulation of board "UNL-Sachen-8259B"(used in the game "Silver Eagle"). 2684 2685April 10, 2014: 2686 Fixed the with-drop-shadow internal text drawing routine to not draw horizontally one pixel beyond the specified maximum width 2687 in some circumstances. 2688 2689April 9, 2014: 2690 SNES: Altered a code construct to hopefully resolve a reported compiler error with clang. 2691 2692 Error out of save state loading when the version specified in the save state is invalid. 2693 2694 Call SDL_WM_SetIcon() before SDL_SetVideoMode(), to fix the problem of the missing Mednafen icon on some platforms/window 2695 managers. 2696 2697 Fixed a minor integer overflow issue in the core PSF loading code. 2698 2699 NES: Fixed some problems in the ROM image file loading code, including a potential heap overflow vulnerability. 2700 2701-- 0.9.33.2: -- 2702 2703March 24, 2014: 2704 PSX: Fixed a small MDEC emulation bug; fixes the hang during startup in "SimCity 2000". 2705 2706March 17, 2014: 2707 The order of evaluation of the frame advance and run normal command keys/hotkeys is now based on whether or not we're 2708 currently in frame advance mode, to allow for the derivation of a single-press pause/unpause key(effected by the user mapping both 2709 functions to a single key). 2710 2711March 15, 2014: 2712 Renamed the log2 LUT array in the mpcdec code to avoid shadowing the math library function log2(). 2713 2714 NES: Fixed the problem of the VS Unisystem DIP switch position display(accessed via the "F6" key) being invisible. 2715 2716 PCE: Fixed broken MCGenjin support. 2717 2718March 13, 2014: 2719 CDPLAY: Tweaked visualization code to reduce memory and CPU usage. 2720 2721March 11, 2014: 2722 Lynx: Minor code cleanups. 2723 2724-- 0.9.33.1: -- 2725 2726March 8, 2014: 2727 Fixed compiler errors when compiling without the debugger. 2728 2729 Fixed a couple of memory leaks. 2730 2731 PSX: Made better use of exceptions in the loading and initialization code paths(and avoid leaking memory if a part of the 2732 process fails). 2733 2734 PSX: Protect against sound buffer overflow without causing a call to abort() so that using save states(when they're added) 2735 or power toggling/resetting in the debugger while in step mode is safer. 2736 2737 PSX: Output of debug messages to stdout and stderr is now controlled via the "psx.dbg_level" setting, whose default 2738 value of "0" disables almost all debug messages. Set the setting to "3" to obtain roughly the same output as previous 2739 versions of Mednafen. 2740 2741March 1, 2014: 2742 Modified the simple interpolation pixel shader code to avoid using the GLSL 1.3 function "round()", for better compatibility 2743 with some OpenGL implementations. 2744 2745-- 0.9.33: -- 2746 2747February 25, 2014: 2748 PSX: Reworked CD-XA ADPCM playback buffering and sector buffering per tests on a PS1; fixes the problem of cut-off voices 2749 in some games("Breath of Fire 4" for example), and *should* increase the playability of some games like "Um Jammer Lammy". 2750 Also, these changes seem to have somehow fixed the corrupted boss graphics in the first boss fight in "Captain Commando". 2751 2752 PSX: Refactored sector reading code, and added support for reading from the leadout area(the data is synthesized, though). 2753 2754February 15, 2014: 2755 Implemented simple dithering in the 16-bit->8-bit sound sample conversion code. 2756 2757 Added checks for legacy DOS device filenames to the untrusted file include path checking code used for Win32 and DOS. 2758 2759February 11, 2014: 2760 Added support for "FOUR_CHANNEL_AUDIO", "TWO_CHANNEL_AUDIO", "COPY", "NO COPY", "PRE_EMPHASIS", and "NO PRE_EMPHASIS" directives 2761 in the cdrdao TOC-format file parsing and Q subchannel synthesis code. 2762 2763 PC-FX, VB: Fixed V810 "mul" instruction overflow flag calculation per tests on a PC-FX. 2764 2765February 2, 2014: 2766 PSX: Added settings "psx.slstart", "psx.slstartp", "psx.slend", and "psx.slendp" to control the vertical positioning and viewable 2767 area(more useful with PAL). 2768 2769 NES: If the value of the nes.slstart? setting is larger than the value of the nes.slend? setting, swap the values when 2770 calculating the surface rectangle. 2771 2772 Rewrote the simple interpolation pixel shader code(for "ipsharper", "ipxnoty", "autoipsharper", etc.) to fix problems 2773 with the autoip* shaders sometimes causing diagonal distortion lines in some scenarios. 2774 2775February 1, 2014: 2776 Fixed a bug that caused major graphics corruption when rotation(ALT+O) is used with a multiple-horizontal-resolution source 2777 image(emulation modules that can produce such an image include pce, pce_fast, pcfx, psx, and snes). 2778 2779 Fixed a bug in the SDL soft stretching with rotation code path that effectively caused the source surface rectangle Y offset to be 2780 ignored(with varying effects from emulation module to emulation module). 2781 2782 GBA: Implemented support for 16bpp video output format. 2783 2784 GBA: Implemented usage of MDFN_MidLineUpdate(). 2785 2786January 29, 2014: 2787 GB, NES, PCE_FAST, SNES: Implemented usage of MDFN_MidLineUpdate() call to allow for 0 video frame latency in some environments 2788 in the future(though this is not going to be possible for the VB module due to how it renders); and, we still need to figure out 2789 the semantics of handling interlaced video this way. 2790 2791January 24, 2014: 2792 Replaced some usage of snprintf() with trio_snprintf(). 2793 2794 Replaced some usage of round(...) with floor(0.5 + ...) where appropriate, to work with the non-C99-compliant libc distributed 2795 with the last stable DJGPP release; however, we didn't have too many uses of round(), but it may make sense in the future to 2796 just insert our own custom round() function instead to preserve code clarity. (Note that floor(0.5 + ...) does not always give 2797 the same result as round(), as it rounds negative midway points(-0.5,-1.5, etc.) differently). 2798 2799January 23, 2014: 2800 Made some changes to the build system to support a DOS port. 2801 2802January 18, 2014: 2803 VB: Moved initialization of some variables from the VSU emulation class destructor to the constructor(must have been asleep 2804 or something when that code first went in); fixes audio "pop" that could sometimes be heard on VB emulation startup. 2805 2806January 17, 2014: 2807 Use XInputGetStateEx() instead of XInputGetState(), if available, to allow for usage of the XBox 360 controller 2808 guide button within Mednafen on MS Windows. 2809 2810January 13, 2014: 2811 In the TOC file reading code, set disc type based on CD_DA/CD_ROM/CD_ROM_XA string. 2812 2813 In the CUE sheet reading code, if any tracks are MODE2, assume the disc type is 0x20(CD-XA). 2814 2815January 5, 2014: 2816 PSX: Moved CD-XA ADPCM resampling code from spu.cpp to cdc.cpp. 2817 2818 PSX: CD-XA ADPCM audio is now resampled using the proper(ish) impulse responses, as observed from running CD-R-eating-nom-nom-nom 2819 tests on a PS1(this improves CD-XA ADPCM quality a bit compared to what it was in previous versions of Mednafen). 2820 2821 PSX: Don't play CD-XA ADPCM sectors if the "realtime" bit in the subheader isn't set to 1(per an 2822 unintentional test on a PS1). 2823 2824January 1, 2014: 2825 Synchronize raw input mapping structures to setting strings when an emulated input device configuration is finished/interrupted, 2826 instead of unconditionally on exit or emulated device change, to prevent pollution of the primary settings file 2827 when using per-module settings override files(though in that context it doesn't make much sense to override the emulated 2828 input device mappings that way, but we're going to add per-game settings override support eventually). 2829 2830 Allow for overriding the "video.glvsync" setting and command key input mappings via the per-module settings override files. 2831 2832December 31, 2013: 2833 Added support for per-module settings overrides(specified via placing settings in files named such as "nes.cfg", "pce.cfg", 2834 "pce_fast.cfg", etc.). The settings override files will be considered read-only, and should not alter the contents of the primary 2835 settings file unless an in-emulator configuration process occurs that builds on the current effective setting value. 2836 2837 PCE, PCE_FAST: Don't generate a command error if a track number too high is specified via CD commands 0xD8 and/or 0xD9; instead, 2838 treat it as if the leadout track was specified. I'm not certain if this is correct behavior as per the actual system, but 2839 that'll have to wait until I'm able to run some tests. Fixes a startup lockup in "Star Mobile". 2840 2841December 22, 2013: 2842 PC-FX: CD-DA impulse volume is now adjusted based on the current CD-DA playback rate. 2843 2844 PCE, PC-FX: Recalculated the CD-DA impulse phase adjustment convolution table to fix a tiny quality issue. 2845 2846December 18, 2013: 2847 PC-FX: Implemented ADPCM phase-correction filtering(related to the Dec. 1 resampling changes), and modified the ADPCM volume 2848 handling code to not throw away so much ADPCM output sample precision. 2849 2850December 1, 2013: 2851 PCE: Changed default value of "pce.psgrevision" from "huc6280a" to "match"; this causes revision "huc6280" to be used for 2852 non-SuperGrafx games, and "huc6280a" to be used for SuperGrafx games and HES playback(since SuperGrafx emulation is forcibly 2853 enabled during HES playback). 2854 2855 PCE, PC-FX: Implemented new sound resampling and filtering code(actually we did this in November, but it's been a definite 2856 work-in-progress since then, and still is to a degree); benefits include better frequency response(especially for CD-DA), 2857 and more flexible filtering options(code-wise, for the future). 2858 Downsides include increased CPU utilization, and the output sound rate has a degree of error. 2859 Minimum CPU usage(and quality) with the new resampling code can be achieved with the following setting values: 2860 pce.resamp_quality 0 2861 pce.resamp_rate_error 0.0000350 2862 pcfx.resamp_quality 0 2863 pcfx.resamp_rate_error 0.0000350 2864 2865 Maximum CPU usage(and quality, though arguably overkill) can be achieved with: 2866 pce.resamp_quality 5 2867 pce.resamp_rate_error 0.0000001 2868 pcfx.resamp_quality 5 2869 pcfx.resamp_rate_error 0.0000001 2870 2871 2872 PCE: Removed support for the "enhanced" PSG revision(previously selectable by pce.psgrevision setting), as it had 2873 negligible benefits, caused problems with at least one game, and made the PSG emulation code slightly more complex. 2874 2875 PCE: Added setting "pce.adpcmextraprec", default value of 0, that when enabled will do the same thing that the PCE_FAST module 2876 is now hardcoded to do with ADPCM predictor precision. 2877 2878 PCE_FAST: Reduced Blip_Buffer attenuation of upper frequencies with CD-DA playback, and also to a lesser degree PSG sound. 2879 2880 PCE_FAST: Removed stubish Tsushin Booster code; the regular "PCE" module's better for emulating Tsushin Tool anyway, as it 2881 includes keyboard emulation. 2882 2883 PCE_FAST: Output full 12-bit ADPCM predictor instead of truncating it to 10-bits, for less whining in ADPCM sounds; since we're 2884 targetting PCE_FAST more for compatibility and subjective quality than outright accuracy per-se. 2885 2886 PCE_FAST: Utilizing some macro-magic, only use computed goto on compilers known to support it. 2887 2888 PCE_FAST: PSG revision changed to HuC6280A instead of "Enhanced". 2889 2890November 24, 2013: 2891 Reduced the maximum supported sound output rate from 1048576Hz to a much more reasonable 192000Hz(significantly eases proper 2892 sound processing algorithm design and testing). 2893 2894November 16, 2013: 2895 PCE_FAST: Fixed a potential crash after a garbage/corrupted ROM image is loaded. 2896 2897November 12, 2013: 2898 Reworked the debugger UI code to fix various thread safety issues by running it(drawing, and input processing) in the 2899 game/emulation thread instead of the main/video blit thread. 2900 2901November 9, 2013: 2902 PCE: During HES playback initialization, the second emulated VDC's registers are now initialized properly so that the 2903 emulation event system isn't overtaxed(which drove up CPU usage considerably during HES playback). It may be prudent 2904 to look into implementing an optimization(based on VDC CR and DCR IRQ enable bits) in the HuC6270 emulation code so that a 2905 similar issue doesn't occur when the user has set "pce.forcesgx" to "1" and is emulating a non-SuperGrafx game; however, this 2906 could have a performance PENALTY for SuperGrafx games due to the required need to recalculate events on every VDC write(unless 2907 we're smart and only recalculate when the IRQ enable bits change?). 2908 2909November 7, 2013: 2910 Reworked settings string->floating-point conversion code to not use ancient(and apparently buggy) code from glibc, and 2911 instead rely on the system's libc(which is ostensibly less buggy!); also changed some of the NES setting structure entries so 2912 that the default values and minimum/maximum values have the same number of places after the decimal point to forestall 2913 any future similar problems with libc strtod(). 2914 2915November 3, 2013: 2916 PSX: Implemented forced synchronization before calling debugger interface core hook. 2917 2918 Changed debugger CPU core hook semantics so that the core emulation code will only call the driver-side debugger interface 2919 code when absolutely necessary(which will allow for proper emulator core forced synchronization when in step mode 2920 without killing performance, which is a prerequisite for the register view, save states, and reset/power to work properly in 2921 step mode; actually implementing said forced synchronization will have to be done carefully on a core-by-core basis, though, 2922 in addition to other changes to make major machine state changes work reliably when in step mode). 2923 2924November 1, 2013: 2925 PCE_FAST: Changed CD-DA Blip_Synth treble parameter so that the upper parts of the CD-DA frequency spectrum aren't attenuated 2926 so much. 2927 2928 PCE_FAST: Removed PC-FX-specific code from the CD drive emulation code. 2929 2930 PCE_FAST: Forked PSG, CD interface unit, and CD drive emulation code so that it's no longer shared with the regular PCE and 2931 PC-FX(for CD drive) modules. 2932 2933October 25, 2013: 2934 SNES: Added support for Game Genie codes. 2935 2936 SNES: Simplified(and hackified gloriously!) and reduced memory usage of SuperFX memory mapping code. 2937 2938October 22, 2013: 2939 A name(used in the window title bar) for loaded CD games will now be extracted from the filepath, as was already done for 2940 cart-based games. 2941 2942October 21, 2013: 2943 Reworked cheat loading and saving code to use FileStream. 2944 2945 Renamed Stream::printf to Stream::print_format to avoid head-desking. 2946 2947 GBA, PCE, PCE_FAST: Rewrote custom palette loading code to use FileStream, and removed the undocumented gzip'd custom palette 2948 support in the process. 2949 2950October 20, 2013: 2951 PSX: Added limited support for entering "GameShark" cheats in the cheat interface(not every code type is supported), and some 2952 cheats may not work properly anyway due to differences in the timing of RAM patching in Mednafen vs on a actual GameShark. 2953 2954 Cheat support: 2955 The cheat interface's cheat list now displays less information overall, but is better structured. 2956 2957 Fixed broken cheat conditions when condition unit size is greater than 4 bytes(due to a missing typecast). 2958 2959 The interface for adding and modifying a cheat now exposes more of the core cheat engine functionality. 2960 2961 Added support for RAM copy and RAM repeat/fill type cheats to the cheat engine. 2962 2963October 18, 2013: 2964 NES: Added support for entering "Pro Action Rocky" cheats in the cheat interface. 2965 2966 GB: Added support for entering "GameShark" cheats in the cheat interface. 2967 2968 Refactored NES and GameBoy Game Genie decoding code from the Mednafen core into the NES and GameBoy cores respectively. 2969 2970 Made some changes to the cheat interface: 2971 Cheat text size is now larger with higher resolutions(though the size increase is a bit too granular). 2972 2973 When asking to add a new cheat, the default will now be 'Y' instead of 'N'. 2974 2975 System-specific cheat format adding support(e.g. Game Genie) has been moved to the main menu. 2976 2977 When adding a system-specific cheat(e.g. Game Genie), the code is now asked for before the name, and the default 2978 for the name is set to the code text. 2979 2980October 10, 2013: 2981 Lynx: Added emulation of Lynx 2 stereo audio registers, based on patches submitted by "sage". 2982 2983October 8, 2013: 2984 Added a very simple double-precision floating-point range test to tests.cpp. 2985 2986October 1, 2013: 2987 PC-FX: Changed the default value of setting "pcfx.rainbow.chromaip" from "1" to "0". 2988 2989 When reading the TOC from a physical CD with the READ TOC command, now use response format 0010b instead of response format 2990 0000b so that we can get the disc type field stored in the TOC. 2991 2992September 29, 2013: 2993 Fixed a bug that was causing the CD reading code to get confused about whether a disc(or drive dray) was inserted or ejected 2994 when the insert/eject MMC command failed, and updated the documentation in regards to physical discs and multiple CD games. 2995 2996 Added more verbose error messages when errors with libcdio occur in regards to reading a physical CD. 2997 2998September 27, 2013: 2999 PSX: Improved DualShock emulation accuracy per tests on a DualShock; rumble now works in "Final Fantasy 8", and possibly 3000 other games where rumble was previously non-working. 3001 3002 Reworked how joystick/gamepad rumble is handled on Linux, to perform better and hopefully not cause kernel panics 3003 anymore(or at least not so often as the old code did). 3004 3005September 25, 2013: 3006 CDPLAY: More Q subchannel information is now displayed. 3007 3008 PSX: Removed an unnecessary and borked memset() statement from mdec.cpp. 3009 3010 Compile with "-fno-aggressive-loop-optimizations", if the option is detected to be supported by the compiler. I don't 3011 particularly trust that new optimization in gcc 4.8.x. 3012 3013September 22, 2013: 3014 SNES: Eliminated bsnes' internal framebuffer, and added a scanline render callback into the Mednafen interface code. 3015 3016 SNES: Reduced size of sound resampling buffer. 3017 3018-- 0.9.32-WIP: -- 3019 3020September 12, 2013: 3021 PSX: Reworked GPU interlacing and double-height mode emulation code a bit; fixes lockups in "iS: Internal Section" and 3022 "The Next Tetris". 3023 3024-- 0.9.31-WIP: -- 3025 3026September 4, 2013: 3027 PSX: Separated the memory map peeking functionality(for the debugger) from the main memory read/write handler, as previous 3028 timing changes broke peeking functionality, and the peeking code was making the read/write handler too complicated and hard 3029 to read. 3030 3031 When in the debugger's step mode, blit the previous valid frame, instead of trying to blit an incomplete frame(which 3032 was buggy and prone to various modes of failure). In the future, blitting incomplete frames may be re-added as a "feature", 3033 but it will require work and guarantees in the emulation modules to make sure it works properly. 3034 3035 Slightly refactored code that passes around video buffers(in the driver-side code) to be a bit cleaner and more clear as 3036 to what it does. 3037 3038September 3, 2013: 3039 PSX: Slow down CDC DMA a bit, but nowhere near how long it is on an actual PS1(that will have to wait for further tests so 3040 we don't overshoot the time required). Fixes broken music in the intro movie in "Legend of Mana" (a regression from the 3041 DMA changes on Aug 13). 3042 3043September 2, 2013: 3044 PSX: Various multitap changes: 3045 Improved multitap emulation, so that multitap will work properly with the "Tales of <XXX>" games. 3046 3047 Reworked how Mednafen's virtual port numbers are assigned to emulated PS1 and multitap ports(see the documentation 3048 for details on the new mapping), so multitap is not so user-unfriendly and will work better with netplay when 3049 save states are finally implemented. Note that if you have used Mednafen's PS1 multitap emulation before for more than 3050 2-player support, this change will cause your multitap-connected configured controllers to be a bit jumbled up in 3051 regards to controller order. 3052 3053 Renamed the "psx.input.port1.multitap" and "psx.input.port2.multitap" settings to "psx.input.pport1.multitap" and 3054 "psx.input.pport2.multitap", respectively. 3055 3056August 29, 2013: 3057 Changed the semantics of the experimental "-remote" command-line argument such that it now takes a value, that is used as 3058 a "key" of sorts to differentiate between debug garbage written to stdout and properly-formatted messages. Example: 3059 mednafen -remote gAsafYghGb50gAKSFskIAMARANDOMSTRINGRAWRGH SomeGame.pce 3060 ...and the frontend would use something like: 3061 char *good_line = strstr(line_buffer, "gAsafYghGb50gAKSFskIAMARANDOMSTRINGRAWRGH"); 3062 ...and also changed where the "remote" initialization occurs, so that startup messages will be properly 3063 formatted. 3064 3065 Fixed a double-free bug in file.cpp that could be triggered if an error occurred while reading a non-compressed file 3066 into memory. 3067 3068 Refactored handling of physical CD loading: 3069 Removed physical CD device detection heuristics from the normal game file loading path. This means you 3070 can't do something like "mednafen /dev/sr0" to load a physical CD anymore. 3071 3072 Deprecated -loadcd. 3073 3074 Added new command-line option "-physcd". It takes no arguments, makes it so that the typically-required "filename" 3075 argument is optional, and treats the "filename" argument as the device name. Examples of syntax: 3076 3077 mednafen -physcd 3078 mednafen -physcd /dev/sr0 3079 mednafen -physcd \\.\E: 3080 mednafen -force_module pce_fast -physcd 3081 3082August 28, 2013: 3083 Added experimental support for CloneCD-format disc images, based on my own observations and nocash notes. 3084 3085August 27, 2013: 3086 Fixed minor line-reading logic errors(we were discarding the last line read if it ended because of a stream EOF) with settings 3087 file and CUE/TOC file reading(with CUE/TOC file reading, it's a regression introduced on Aug 23) by changing the semantics of 3088 Stream::get_line() 3089 3090August 25, 2013: 3091 VB: Return a known good value on reads from the VIP version control register. 3092 3093 VB: Tweaked noise generation algorithm a bit per VB dev observations from PVB forum members. 3094 3095August 23, 2013: 3096 Reworked the CUE and TOC CD image loading code to use FileStream instead of FileWrapper, to remove the 512-byte line length limit, 3097 and to fix a bug that was causing multiple copies of the sector data file to be loaded into memory with multi-track TOC images 3098 when "cd.image_memcache" is set to 1. 3099 3100August 18, 2013: 3101 PSX: With MDEC, added emulation of quantization multiplier quirks per tests on a PS1, reversed the order of the 1D-IDCTs 3102 to match what was observed occurring on the PS1, and improved command word parsing. The overall MDEC emulation model is 3103 still far from what it should be, though(not that commercially-released games really care), not to mention that the IDCT 3104 and colorspace conversion algorithms are still off in some test cases(looks to be precision and saturation related). 3105 (nocash notes were useful in devising tests, and for improving command word parsing) 3106 3107August 13, 2013: 3108 PSX: Slow down one type of DMA to the GPU, and add a cycle penalty to CPU memory reads when they occur during this type of DMA 3109 (almost fixes the glitchy "Sony Computer Entertainment" logo at the start of FF7). 3110 3111August 11, 2013: 3112 Made conditional cheats work on all emulation modules where cheat support is implemented(previously, they were limited 3113 to NES and PCE). 3114 3115 PSX: Fixed improper vertical screen offset in non-interlaced mode caused by the August 9 internal GPU field toggle change. 3116 Though come to think of it, maybe it's not so improper after all, but emulating that way does introduce practical problems, 3117 and I doubt any PS1 games will be switching between interlaced and non-interlaced modes every 16ms... 3118 3119August 10, 2013: 3120 PSX: MDEC 2D IDCT is now done via multiple 1D IDCTs, reducing computational complexity(and CPU usage). 3121 3122 PSX: Return data with all bits set on reads from the PIO memory area when it's not in use(for PSFs or whatnot); fixes game 3123 lockup in "Tetris with Cardcaptor Sakura". 3124 3125August 9, 2013: 3126 PSX: Corrected value of internal GPU field toggle when in non-interlaced mode; fixes "Toobin" in "Arcade Party Pak"(but 3127 I don't know why...) 3128 3129 PSX: Don't flush the DMA sector data buffer on Read* command start; fixes a lockup that occurred after a while in the 3130 course selection screen of "Crash Team Racing". 3131 3132August 8, 2013: 3133 PSX: Made some optimizations to the new memory load pipeline stall emulation code. 3134 3135 PSX: Improved CDC emulation model in regards to command argument FIFO handling, per tests and nocash notes. 3136 3137August 6, 2013: 3138 PSX: Brought pad/memcard serial I/O timing closer to that of an actual PS1; made practical(IE games don't flip out) by the 3139 aforementioned mess of a solution for pipeline stalls. 3140 3141 PSX: Implemented hackish, ugly, kludgish, abominational, horrible, terrible, and just downright bad pipeline stall 3142 emulation for divides, multiplies, and loads from memory. 3143 3144August 3, 2013: 3145 Lynx: Added 16bpp video output format support. 3146 3147 Added 8bpp and 16bpp video format support to the deinterlacing code. 3148 3149 MD: Added 16bpp video output format support. 3150 3151 Encapsulated mostly-platform-independent OpenGL blitting and shader code into classes. 3152 3153August 2, 2013: 3154 In the deinterlacer code, if the current field surface pixel format does not equal the field history surface pixel format, 3155 convert the field history surface to the current pixel format. Fixes minor graphical glitches in some circumstances when using 3156 the "overlay" "video.driver" setting. 3157 3158July 31, 2013: 3159 Fixed a few minor issues in Stereo_Buffer. 3160 3161 GB: Made minor optimizations to graphics rendering code. 3162 3163 GB: Added support for 8bpp and 16bpp video output formats(color gamut is heavily degraded in CGB games when rendering for 8bpp, 3164 though). 3165 3166-- 0.9.29-WIP: -- 3167 3168July 26, 2013: 3169 Manually replaced m4/iconv.m4 with the copy from the latest gettext, and modified it slightly, to fix build errors on 3170 some non-glibc-utilizing platforms(e.g. my Win32 toolchain setup). 3171 3172 Fixed a bug that broke(sometimes crashing Mednafen) displaying of long lines in the console viewport(cheats, netplay). 3173 3174July 24, 2013: 3175 SNES: Fixed a couple of bugs that could cause memory corruption when a corrupted/bad save state is loaded. (Bad save states being 3176 loaded can still cause the emulator to lock up or trigger an assert(), and that's probably never going to be fixed, at least 3177 with the SNES emulation core). 3178 3179July 22, 2013: 3180 SNES: Implemented code for more aggressive frameskipping, but currently disabled pending further contemplation. 3181 3182 Removed some unused files from the SNES emulation code tree. 3183 3184July 17, 2013: 3185 SNES: Changed hires blending algorithm, and only blend when in pseudo-hires mode(which is "cheating" a bit, but is ultimately 3186 the best solution I've found to blend/blur what needs to be while preserving pixel clarity). 3187 3188July 15, 2013: 3189 SNES: Implemented partial frameskipping support(won't affect emulation from the view of the emulated program/game, and it is disabled 3190 when interlacing is enabled). 3191 3192 SNES: Changed it so the Mednafen core does deinterlacing, instead of the bsnes core; improves performance slightly when games 3193 are in interlaced mode. 3194 3195July 14, 2013: 3196 WASAPI: Prevent complete Mednafen lockup when a device invalidation error occurs after successful initialization. 3197 3198 WASAPI: Fixed sample format conversion/volume issues with > 16-bit formats. 3199 3200July 13, 2013: 3201 SNES: Smashed some PPU emulation files together just 'cause. 3202 3203 SNES: Made minor structural optimizations to S-SMP emulation. 3204 3205July 12, 2013: 3206 SNES: Made minor structural(shouldn't affect emulation accuracy) optimizations to SuperFX emulation. 3207 3208July 11, 2013: 3209 Added support for additional formats and rates to the new, experimental WASAPI exclusive-mode driver; fixes audio output on my 3210 Echo Mia MIDI sound card. 3211 3212May 28, 2013: 3213 CDPLAY: Added boolean setting "cdplay.visualization", default value of "1", to allow disabling of the CPU-intensive 3214 simplistic waveform visualization effect. 3215 3216 CDPLAY: Reduced horizontal and vertical resolutions to 60% of their previous values, to reduce CPU usage. 3217 3218April 20, 2013: 3219 Fixed a typo-bug that would cause Mednafen to crash when, in addition to the host, the port was specified via the 3220 /server command in the netplay console. 3221 3222April 3, 2013: 3223 Lynx: Fixed an audio bug(or alternatively, replaced with kludges ;)) that was breaking the "mwahahaha" audio from the spiderthing in Gates of Zendocon, per a bug 3224 report and code patch from "sage". 3225 3226 The "autoip" and "autoipsharper" pixel shaders weren't working properly when the screen was rotated(such as via ALT+O); fixed. 3227 3228March 23, 2013: 3229 PSX: Changed Read* and Play CD command processing, and added support for playing CD-DA via the Read* commands coupled with 3230 bit0 of the mode set via SetMode; fixes music resumption after pause issue in "Mortal Kombat Trilogy". 3231 3232March 19, 2013: 3233 Rearranged the psg_channel struct in pce_psg.h a bit to potentially allow for tiny performance improvements on some 3234 architectures. 3235 3236 PCE_FAST: Made a few micro-optimizations to the BG rendering code. 3237 3238March 17, 2013: 3239 PCE_FAST: Added a runtime check for "cmov" instruction availability on 32-bit x86, and an alternate VDC BG/SPR mixing function 3240 that avoids using it when it's not available. Fixes an illegal instruction-related crash on older 3241 non-Intel CPUs(like AMD K6-III+), and Intel CPUs older than Pentium Pro(though I doubt that even a 233MHz Pentium MMX is fast enough to 3242 run it fullspeed anyway). 3243 3244 Added a compiler version check to avoid utilization of "fastcall" calling convention when compiling with a version of 3245 gcc older than 4.1.0, as the older versions of gcc have code generation bugs relating to fastcall/regparm(though I'm not 3246 sure if Mednafen will even compile at all with those older versions...). 3247 3248 Repositioned the FPS display position when in SDL software rendering mode such that it won't cause a potentially 3249 expensive backbuffer clear operation for every frame which would compromise the accuracy/usefulness of the FPS display. 3250 3251 Fixed some bugs with the SDL software rendering mode fallback used when the "opengl" vdriver is selected but OpenGL initialization 3252 failed(doubled-buffered video wasn't being specified in this fallback case, which led to massive screen flickering when an OSD 3253 element was active). 3254 3255March 14, 2013: 3256 Added a configure script option to build without fancy software scalers(hq2x, 2xsai, scale2x, and the like). 3257 3258 Replaced ancient rectangle drawing code with newer, slightly different code! 3259 3260February 24, 2013: 3261 Renamed edc_lec_check_correct() to edc_lec_check_and_correct(). 3262 3263February 19, 2013: 3264 SNES: Use higher-quality, but more CPU-intensive(and slightly higher latency, on the order of about 1ms), speex resampler 3265 instead of Fir_Resampler. 3266 3267 PC-FX: Save-game RAM is no longer stored compressed. 3268 3269 PCE, PCE_FAST: BRAM save-game RAM is no longer stored compressed. 3270 3271 Optimized special scalers slightly by not initializing dynamically allocated memory for pixel data, since it's overwritten in 3272 totality by the special scalers anyway. 3273 3274 Added a parameter to MDFN_Surface()'s constructor to allow the creation of a surface without initializing its pixel 3275 data to zero. 3276 3277 Added a kludge to try to clear all OpenGL backbuffers(when necessary) when an OpenGL implementation with forced 3278 triple-buffering is used. 3279 3280 Changed code so that the video backbuffer won't be needlessly cleared due to OSD presence if the OSD is only 3281 displayed in portions of the screen that are overwritten each frame anyway during normal emulated video blitting. 3282 3283February 18, 2013: 3284 When recording a QuickTime movie and the sound output rate is greater than 64000Hz, resample the audio stream written 3285 to the QuickTime file to 64000Hz, as the QuickTime format has issues with sound rates greater than 65535Hz. 3286 3287February 14, 2013: 3288 Removed MDFND_KillThread(). 3289 3290 Worked around x87 excess-precision problems that were causing nonsensical error messages to be printed in some circumstances 3291 when parsing the settings file. I'm so tempted to just compile with -mfpmath=sse when compiling for 32-bit x86... 3292 3293 Fixed broken error messages printed out when an error occurs when loading the settings file. 3294 3295 SexyAL: 3296 Changed DirectSound buffer writing algorithm to write up to an extra ~30ms of sound data beyond the 3297 effective buffer size on sound writes, and then synchronize(IE wait) to the effective buffer size 3298 after the data is written, to slightly reduce the chance of sound buffer underruns and sound glitches on a loaded 3299 system. 3300 3301 Changed DirectSound buffer underrun handling to better preserve the flow of emulated time. 3302 3303 Use a dynamically-allocated buffer sized to fit 25ms of output-device-format audio as the sound conversion target 3304 buffer, rather than a statically-allocated fixed-size buffer that could only fit a very small amount of audio data 3305 (time-wise) at higher output sample rates. 3306 3307 Added channel deinterleaving into the main audio format conversion code, and removed the driver-specific deinterleaving 3308 code from the "ALSA" and "JACK" driver code. 3309 3310 Fixed a potential buffer overrun bug when converting 1-channel audio from one sample format to another(it's unlikely to 3311 have triggered a crash though, due to the size of the sound buffers used and doing the conversion in chunks). 3312 3313 Added logic to the "SDL" and "JACK" output driver code so that the internal software buffers won't overflow if a 3314 large amount of data is passed to it at once(which wouldn't have happened anyway, since there's protection code 3315 in the SexyAL core to prevent that, but that protection code is in need of removal or updating). 3316 3317January 27, 2013: 3318 Added a floating-point-related compiler code generation bug test to tests.cpp. 3319 3320January 20, 2013: 3321 Changed endian detection in tremor header files to hopefully fix a compilation problem on Haiku. 3322 3323January 19, 2013: 3324 SNES: Renamed some functions to fix a compilation problem on "ALT Linux". 3325 3326 MD: Fixed broken default key assignments for emulated 3-button gamepads(for the A, B, and C buttons). 3327 3328-- 0.9.28-WIP: -- 3329 3330January 13, 2013: 3331 PSX: Corrected lcm_width and lcm_height emulation module structure values(affects QuickTime movie recording). 3332 3333 Fixed a bug in the netplay sound buffer underrun mitigation code that was causing it to only write 1/2 the data it should 3334 be writing when the emulated system has stereo sound output. 3335 3336 Make netplay text line command processing only able to make the netplay text area visible or refresh its visibility, and not 3337 able to hide it; fixes a problem of the netplay text area disappearing before the command response text 3338 (like the disconnect message after /quit) can be seen. 3339 3340 Un-documented Musepack support for ripped CD images as the feature doesn't get much testing, and the support will eventually 3341 be removed(someday ;)). 3342 3343 Removed some ancient unused members of a debugger-related address space data structure. 3344 3345 Fixed a major bug in the CD image audio decoding code that broke repeated playback of 3346 CD audio tracks that are encoded in files handled by libsndfile(e.g. FLAC, WAV), although it may not have affected all 3347 formats, the problem was noted to occur with FLAC at least. 3348 (The bug is a regression apparently introduced in 0.9.25-WIP) 3349 3350January 12, 2013: 3351 PCE_FAST: Fixed some problems with the 8bpp palette generation routine. 3352 3353 Don't compile with -ffast-math anymore, as it was noted to mess up the NES sound resampler code when 3354 __attribute__((cold)) was used on the filter class constructor, to the extent that it was clearly audible. 3355 3356January 10, 2013: 3357 Don't needlessly clear the software video buffers to black when changing video modes; fixes the problem of the screen going 3358 black when in frame advance mode and toggling fullscreen. 3359 3360January 8, 2013: 3361 Fixed a crash(due to a buffer overflow) in Mednafen's test CD-DA player when sound is disabled. 3362 3363 Fixed recording of QuickTime movies when sound is disabled(it was producing unplayably broken QuickTime files before). 3364 3365 PSX: Added a pseudorandom component to command processing and seek timing, to prevent a lockup in "Legend of Dragoon". 3366 3367January 6, 2013: 3368 NES, PCE_FAST: Made limited use of MDFN_COLD. 3369 3370 Added "MDFN_COLD" define, expanding to "__attribute__((cold))" on sufficiently-recent versions of gcc. 3371 3372 NES, PCE_FAST: Implemented 8-bit rendering internally(for ports, not used by Mednafen proper), using static(in the sense 3373 that the palettes won't change while emulation is in progress) palettes. The limitations of palettized 8bpp don't 3374 really affect the NES too much in practice, except for at least one homebrew demo. The PC Engine, on the other hand, is 3375 a different story... 3376 3377January 5, 2013: 3378 PC-FX, VB, PSX: Fixed debugger trace log PC address recording. 3379 3380 VB: Corrected (lack of) disassembly of "di" and "ei" instructions. 3381 3382 PC-FX: Fixed broken VDC-A/VDC-B VRAM read/write aux debugger breakpoint support. 3383 3384 PC-FX: Fixed debugger's graphics viewer weirdness when viewing transparent KING BG pixels(by forcing them to black). 3385 3386 PC-FX: Fixed totally broken VDC VRAM debugger memory editor functionality 3387 3388January 4, 2013: 3389 Only rebuild and re-run the 68K core generator program when necessary, hopefully fixing one big problem when doing 3390 a pure cross-compiled build. 3391 3392January 3, 2013: 3393 Added "SABR"( http://board.byuu.org/viewtopic.php?f=3&t=3416 ) pixel shader, as an option for the *.pixshader settings. 3394 3395December 24, 2012: 3396 Added "WYSIWYG"-style(except for the "overlay" video.driver) scaled, filtered, maimed, diced, and so forth screen snapshots, 3397 taken with the SHIFT+F9 key 3398 3399 Marked "Insert/Eject disk/disc" key function assigned to key F8 as being "dangerous" and subject to the delay specified by 3400 the "ckdelay" setting, since many games respond very poorly to the disk/disc being ejected in the middle of a disc/disk 3401 operation. 3402 3403December 23, 2012: 3404 Simplified(less multithreaded message moving madness) and moved some driver-side netplay code into the Mednafen core. 3405 3406-- 0.9.27-WIP: -- 3407 3408December 20, 2012: 3409 Removed some old unused code from the memory debugger. 3410 3411 PSX: The debugger's disassembler will now pull instructions from the instruction cache, if it's valid(and fall back 3412 to the memory map data if it's not). 3413 3414 NES: Fixed a bug in the FDS state loading routine that could cause sound issues(wrong volume of FDS sound channel). 3415 3416 NES: Replaced a floating-point filter used when expansion sound is in use with a 64-bit fixed-point integer math filter, 3417 to fix a problem of massive performance degradation in some circumstances(probably due to denormals). 3418 3419 NES: Fixed a bug that was causing a crash when Game Genie emulation was enabled while trying to emulate an FDS game. 3420 3421 Don't make use of errno in FileWrapper::read when handling an unexpected EOF. 3422 3423 NES, SNES: Replaced usage of stdio file access with FileStream usage. 3424 3425December 19, 2012: 3426 Fixed a startup multithreading race condition with QuickTime and WAV file recording. 3427 3428 PC-FX: Resolved a few compiler warnings. 3429 3430 Replaced usage of stdio file access with FileStream usage in: 3431 Memory debugger. 3432 NGP FLASH memory saving/loading routines. 3433 3434December 17, 2012: 3435 NES: Added setting "nes.correct_aspect". 3436 3437 Attempt to open a Linux (joystick) event device read-only if opening it for read+write fails, so at least some of the 3438 enhanced functionality will be available on Linux distributions with partially broken device permissions. 3439 3440December 16, 2012: 3441 PSX: Run EXE-loading MIPS binary code from a cacheable segment so it doesn't take so long to run. 3442 3443December 15, 2012: 3444 SNES: Changed frame/system synchronization point logic, to reduce input latency by 1 video frame(~17ms). 3445 3446 SNES: The setting "snes.correct_aspect" setting now supports the unique PAL aspect ratio with PAL games(rather than just correcting the 3447 aspect ratio per NTSC as before) 3448 3449 SNES: Fixed a bug that was causing distorted vertical scaling with PAL games. 3450 3451December 12, 2012: 3452 PSX: Improved CDC "ID" command emulation, fixes a problem with music in "WipEout 3". 3453 3454 PSX: Changed how end-of-disc is handled while CD-DA is playing, per tests on a PS1; fixes a major problem with 3455 "Wu-Tang - Shaolin Style" during its startup. 3456 3457December 11, 2012: 3458 PSX: Added a kludge to the CDC logical seek emulation code to fix the problem of missing music in "Gran Turismo 1". 3459 3460 PSX: More DMA emulation revising. 3461 3462December 10, 2012: 3463 PSX: Force DMA channel 6's channel control register bit1 to 1, per tests on a PS1. 3464 3465December 9, 2012: 3466 PSX: Added use of MDFN_LIKELY() and MDFN_UNLIKELY() to the CPU core. 3467 3468 Added MDFN_LIKELY() and MDFN_UNLIKELY() macros to provide crude branch prediction hints to the compiler. 3469 3470 PSX: Improved DMA controller emulation, per tests on a PS1 and nocash documentation. Fixes major problems with "Final Fantasy 7", 3471 "Final Fantasy 9", "Chrono Cross", "Legacy of Kain - Soul Reaver", and "Dragon Quest 7". 3472 3473December 8, 2012: 3474 PSX: Added preliminary instruction cache emulation, fixes problems with "Formula One 99", "Formula One 2000", and "Formula One 2001". 3475 3476 PSX: Corrected the value in the CPU product ID register. 3477 3478December 5, 2012: 3479 PSX: Improved GPU info control port command emulation, per tests on a PS1. 3480 3481 PSX: Reset more GPU state on software(via control port) reset, per tests on a PS1. 3482 3483December 2, 2012: 3484 PSX: Initialize NTSC vertical and horizontal GPU display timings properly on software reset(via the GPU control port), 3485 per tests on a PS1(the horizontal timings might not be 100% correct, but they probably are). 3486 3487 PSX: Increased the amount of NTSC horizontal overscan shown. 3488 3489 PSX: Revamped GPU vertical display timing model, per tests on a PS1(the old model was Quite Wrong), and made the visible 3490 vertical 240-pixel "viewport" match standard PS1 NTSC game vertical timings. 3491 3492 PSX: Ignore lower bit of the GPU framebuffer X readout coordinate, per tests on a PS1. 3493 3494 Made CUE sheet parser slightly stricter. 3495 3496 Added setting, "cd.image_memcache", default value of "0", that when enabled will cause any referenced data files in CUE and 3497 TOC sheets to be loaded entirely into memory on startup, and cause the non-multithreaded CD reader interface to be used 3498 rather than the reader interface that uses an additional thread, for that emulated CD. 3499 3500November 16, 2012: 3501 Replaced various instances of "__attribute__((unused))" with MDFN_NOWARN_UNUSED, a macro defined in types.h. 3502 3503 Removed nonutilized file "git-virtb.h". 3504 3505November 13, 2012: 3506 PCE_FAST: Comment out a debug print statement in the CPU emulation core. 3507 3508 PCE_FAST: Fixed a heap overflow bug when loading excessively large ROM images. 3509 3510November 6, 2012: 3511 Fixed a compiler warning in the Linux joystick code that could hypothetically be treated as an error by some compiler(configurations). 3512 3513 In the Linux joystick code, Directly include <linux/input.h> instead of relying on it being included by <linux/joystick.h>. 3514 3515November 5, 2012: 3516 Removed internal input button data encoding method "IDIT_BUTTON_BYTE", as the sole user of it(Family Keyboard) has been changed 3517 to not use it, and it is wasteful(especially with netplay). 3518 3519 NES: Simplified Family Keyboard emulation, and compacted the key state. 3520 3521 NES: Removed unused members from emulated input device definition structures. 3522 3523November 4, 2012: 3524 Don't error out if the corresponding evdev to a jsdev device can't be opened, and instead rely 3525 on legacy jsdev functionality only, as Mednafen versions prior to 0.9.25-WIP would. 3526 3527November 3, 2012: 3528 The "SDL" audio driver/output method now respects the "sound.period_time" setting. 3529 3530November 2, 2012: 3531 PCE: Fixed a rather obvious major problem with the (incomplete/preliminary) MCGenjin emulation code. 3532 3533 Added missing sizeof(RAWINPUTDEVICELIST) parameter to a GetRawInputDeviceList() call in the Win32 DirectX joystick code. It's 3534 probably not strictly necessary now when viewed in context, but may be in the future if Microsoft does something weird, which Microsoft 3535 tends to do, so better safe than sorry. Thanks to zeromus for pointing it out. 3536 3537October 28, 2012: 3538 Fixed typos that broke compilation without internal CJK fonts. Thanks to zeromus for pointing it out. 3539 3540October 25, 2012: 3541 VB: Completely removed the deprecated and disabled code for support for ".bin" file extension. 3542 3543 NES: Added support for iNES mapper 37. 3544 3545October 24, 2012: 3546 NES: Changed filter parameters for a "nes.soundq" setting of "-2", increasing the computational complexity slightly, so that 3547 games like "Solstice" and "Mega Man 2" don't sound like whining messes. 3548 3549October 19, 2012: 3550 Cleaned up TODO file a bit, migrating some of the useful data into the general documentation. 3551 3552 PCE_FAST: Brought aspect ratio correction in line with the "pce" module(which is about what it should be). 3553 3554-- 0.9.26-WIP: -- 3555 3556October 13, 2012: 3557 PSX: Handle non-word-aligned timer port reads and writes, rather than triggering an assert(). Also, a warning message is 3558 now printed if a game tries to read from timer open bus space, rather than an assert() being triggered. 3559 3560 More C++11 warning fixes. 3561 3562October 12, 2012: 3563 NES: Added emulation of iNES mapper 101. 3564 3565October 11, 2012: 3566 PSX: Added a "Dance Pad" emulated device, that uses mostly the same code as the "Gamepad" device, but doesn't provide 3567 access to the shoulder buttons, and allows for opposing D-pad directions to be pressed simultaneously. 3568 3569 PSX: Improved emulation of bit15 of the SPU control register; fixes problems with "Dance Dance Revolution", 3570 "Medal of Honor", "Madden NFL 2003", "Fuuraiki", and "The Misadventures of Tron Bonne". 3571 3572October 10, 2012: 3573 PSX: Fixed a bug that could cause an emulator crash if the game crashed and tried to execute code in the last 64KiB of the 3574 CPU logical address space. 3575 3576-- 0.9.25-WIP: -- 3577 3578October 9, 2012: 3579 Fixed a problem of usage of uninitialized memory in a startup function in drivers/input.cpp. 3580 3581October 8, 2012: 3582 PSX: Tweaked GunCon hit detection, to improve menu behavior in games like "Point Blank 2". 3583 3584 PSX: Reduced the penalty time required to resume from a Pause state to the best-case observed times(for 1x and 2x) on a PS1; 3585 more accurate modeling will need to take into account the time passed since the Pause command among other things(TODO for 3586 the future maybe, though the relationship between time passed and time to resume from a Pause state is a bit...wonky). 3587 3588 PSX: Pause command completion time is now more accurate, per tests on a PS1. 3589 3590October 7, 2012: 3591 PSX: Changed conditions under which "GetLocL" fails, per limited tests on a PS1. Fixed a game-breaking lockup in "Star Ixiom". 3592 3593 PSX: Added CDC "Standby" command and status emulation, fixes a game-breaking lockup in "Philosoma". 3594 3595October 6, 2012: 3596 PSX: Don't run DMA channel 1 unless there really is data available from the MDEC; fixes partially-broken FMV in "Rayman". 3597 3598October 5, 2012: 3599 PSX: DMA, and GPU FIFO emulation tweaks, to fix a regression in "Legacy of Kain - Soul Reaver"(the game does something fairly 3600 unique; it has a transfer length of 0x10 in some linked-list headers). 3601 3602 PSX: Increased base cycle usage counts for polygon commands, per tests on a PS1. 3603 3604 PSX: Improved GPU FIFO behavior, based on tests on a PS1. The GPU on an actual PS1 appears(more of a hypothesis than anything, based 3605 on limited data) to have a contention or dependency system with different functional units that have access to the FIFO; the changes 3606 here just simulate some of its less-computationally-expensive characteristics in regards to GPU status bits and 3607 gross/rough timing. 3608 3609September 30, 2012: 3610 Fixed numerous code constructs that caused errors and/or warnings when compiling for the C++11 standard. 3611 3612September 29, 2012: 3613 PSX: Improved reliability of the Konami Justifier simulated offscreen shot process. 3614 3615 PSX: More event handling tweaks. 3616 3617September 28, 2012: 3618 PSX: Added experimental emulation of the DREAD Konami Justifier. This light gun makes tears of pain flow in a torrent. 3619 3620 PSX: Added partial emulation of some esoteric timer features, though what was added is probably not totally correct. 3621 3622 PSX: Altered the global event system to use a sorted doubly-linked list, to allow for more precise timing of events 3623 in relation of one sub-device/chip to another. 3624 3625September 27, 2012: 3626 Added code to allow CD image file data to be entirely loaded into memory, though the code is not used as such at current. 3627 3628 SNES: Added boolean setting "snes.correct_aspect", default value of "0"(preserving previous behavior). 3629 3630 PSX: Added additional heuristics for determining game region; fixes misdetection of the region for the North American release 3631 of "Wing Commander IV". 3632 3633September 25, 2012: 3634 PSX: Tweaked GunCon x coordinate scaling. 3635 3636 Changed absolute mouse x and y coordinate passing from driver->core to be in 1.15.16 fixed point format(previously 3637 simple integers), to avoid excess precision loss when scaling the coordinates from viewport dimensions 3638 to nominal_width and nominal_height. 3639 3640September 24, 2012: 3641 PSX: Added preliminary GunCon emulation. 3642 3643 Genesis: Adjusted aspect ratio slightly. 3644 3645 PSX: Adjusted NTSC aspect ratio slightly. 3646 3647 PSX: Reduced internal frame buffer width by 1/4(reduces memory usage). 3648 3649 PSX: When playing a PSF, virtual input(gamepad, etc.) devices are no longer emulated as being connected. 3650 3651 The CUE sheet reader will now seek past a UTF-8 BOM at the beginning of a CUE sheet if present(and print an error/warning 3652 message). 3653 3654 Fixed resource leakage issue when CUE/TOC sheet loading aborts due to an error. 3655 3656September 20, 2012: 3657 Removed the rawer parts of a half-baked idea implemented long ago in the virtual input device abstraction structures, and 3658 removed some extremely poorly-scaling-with-increased-emulated-system-count-and-emulated-device-count code that said 3659 half-baked functionality required, shaving a considerable amount off Mednafen's startup time 3660 (though probably not really noticeable on faster CPUs). 3661 3662 Modified settings loading and saving code to use new FileStream functionality. 3663 3664September 18, 2012: 3665 Modified the CD image reading and "AudioReader" code(used for reading MS WAV/Vorbis/MusePack/etc) to operate on a 3666 "Stream" object instead of using stdio functions on "FILE", in regards to files used for track data. This allows MemoryStream 3667 to be used very easily to preload the track file data into memory, which may be put to use in the future. 3668 3669 Implemented FileStream, derived from Stream, as a quick wrapper around FileWrapper(HAH). 3670 3671September 15, 2012: 3672 Map SDL hats to buttons instead of axes in the new joystick interface abstraction code, to prevent loss of information. 3673 3674September 8, 2012: 3675 Entered more information into the possible values enum struct for the *.debugger.disfontsize setting(s) so that the possible values 3676 will be in the autogenerated documentation. 3677 3678September 7, 2012: 3679 Added a const char* "Description" member to the "InputDeviceInfoStruct", and did some minor internal plumbing so it will be propagated to the 3680 automatically-generated documentation if non-NULL. (For the possibility of more verbose emulated input device information for the 3681 *.input.port* settings in the documentation) 3682 3683September 6, 2012: 3684 Increased size of line buffer used in settings file reading. 3685 3686 Changed input configuration evaluation code to allow multiple physical mappings to a single emulated analog button/axis to work properly(it is 3687 somewhat useful for neGcon emulation). 3688 3689 PSX: Added neGcon emulation. 3690 3691September 5, 2012: 3692 Added setting "input.joystick.global_focus". 3693 3694 Renamed settings: 3695 autofirefreq -> input.autofirefreq 3696 analogthreshold -> input.joystick.axis_threshold 3697 ckdelay -> input.ckdelay 3698 3699September 3, 2012: 3700 PSX: Don't mask the address specified by the memcard write command, but instead signal an error condition if the address is invalid, per 3701 tests on a PS1. 3702 3703September 1, 2012: 3704 Reduced memory usage of internal runtime text rendering data structures by about 2.4MB for 64-bit builds, and about 0.8MB for 32-bit builds. 3705 3706August 31, 2012: 3707 Only destroy and recreate the emulated device and device state on the port being altered with CTRL+SHIFT+[n], rather than all ports, to 3708 avoid usability problems with more complex input devices(like on the PS1 for instance). 3709 3710 Fixed a longstanding bug that caused input configuration data to be lost if you changed the device on a port with CTRL+SHIFT+[n] after 3711 configuring input without an emulator exit in-between. 3712 3713August somethingth, 2012: 3714 PSX: Added DualShock emulation, complete with Analog mode toggle button emulation. 3715 3716 Revamped physical joystick/gamepad support: 3717 Added native code targeting DirectInput(5.0) and XInput on MS Windows, and jsdev and evdev on Linux. 3718 3719 Added support for rumble on Linux and XInput devices on MS Windows. 3720 3721 Refactored and recoded much of the joystick input configuration handling code. 3722 3723 Added kludgey support for handling physical joystick analog buttons in the input configuration process without it freaking out: 3724 Note: The process described below should NOT be necessary if you're using an XBox 360/XInput controller under MS Windows. If 3725 you're using such a controller under a different operating system, or using a non-XBox 360/non-XInput controller, and it has 3726 analog buttons, then you should perform the process as described below. 3727 3728 Also note that the process is only necessary when you're configuring inputs, and not during "normal" gameplay/usage. 3729 3730 Twirl all sticks and D-pads and press all analog buttons on any physical gamepads/joysticks with analog buttons you want 3731 to use in the input configuration process, then press F3. Then, configure input as normal. The detected analog buttons 3732 will be recognized during input configuration until Mednafen exits; if you exit Mednafen and restart, and want to configure 3733 input devices again, you'll need to repeat the twirling-pressing-F3 process again). 3734 3735August 12, 2012: 3736 Fixed a bug that was causing the FPS display to be missing if the "overlay" video driver was used in combination with PC Engine emulation. 3737 3738 Removed the last vestiges of the driver-side handling of the long since removed/replaced PC-FX multi-resolution-frame multi-layer alpha 3739 blending method. 3740 3741August 11, 2012: 3742 Added setting "osd.alpha_blend", default value of "1", that controls enabling of OSD alpha-channel blending. Set it to "0" for 3743 a speedup when using the "sdl" video.driver. 3744 3745 Software("sdl" video driver) render fixes/improvements: 3746 Improved precision and rounding behavior with the fixed-point math used for scanline effects and non-integer scaling. 3747 3748 Implemented alpha blending for all OSD elements except the FPS display. 3749 3750 Added support for the scanlines effect when the screen is rotated(via ALT+O). 3751 3752 Fixed a bug that caused an enabled scanline effect to be missing when a special scaler(hq2x, hq3x, scale2x, etc) is used 3753 and no post-special-scaler scaling is necessary. 3754 3755August 10, 2012: 3756 Implemented minor optimizations to the "sdl" "video.driver" scanlines effect code. 3757 3758 Changed a ton of driver-side OSD rendering code to use MDFN_Surface instead of SDL_Surface. 3759 3760August 1, 2012: 3761 Fixed port numbering(from 0-based to 1-based) in the error message display after trying to configure buttons for a nonexistent virtual device/port. 3762 3763June 14, 2012: 3764 Added a non-threaded alternative implementation of CDIF(currently unused, but will be useful if we ever target an OS without multithreading 3765 capabilities). 3766 3767July 13, 2012: 3768 Lynx: Made reporting of errors during game load to be more verbose. 3769 3770 GB: Error out if a ROM image to be loaded is less than 512 bytes in size. 3771 3772 GB: Don't use TestMagic() in Load(), and don't return -1. (So that -force_module gb will work as expected) 3773 3774-- 0.9.24-WIP: -- 3775 3776July 12, 2012: 3777 Only use "AI_ADDRCONFIG" flag with getaddrinfo() hints if it's available; fixes a compilation error on OpenBSD. 3778 3779 Disallow manual save states with "snes" module during netplay, since the bsnes save state code alters the current state on save state, 3780 which would cause desynchs, or annoyances and extra bandwidth usage to work around the issue, in a netplay environment. 3781 3782July 9, 2012: 3783 Netplay: 3784 Removed setting "netplay.merge", since similar functionality can be obtained by issuing one or more of the newly-added commands. 3785 3786 Added /take, /dupe, and /drop commands. 3787 3788July 8, 2012: 3789 PSX: Implemented CD-XA playback current file and channel matching(per very limited tests on a real PS1), fixes broken speech in 3790 "Yarudora Series Vol.1 - Double Cast". 3791 3792 Netplay: 3793 BSD/POSIX: Only use MSG_NOSIGNAL if it is defined; fixes compilation issue on Mac OS X. And don't use MSG_NOSIGNAL 3794 for recv(), only send(). 3795 3796 BSD/POSIX: Use socket option "SO_NOSIGPIPE", if available. 3797 3798 Handle a recv() return value of zero properly(or at least semi-properly :b), to prevent a lockup in certain situations. 3799 3800 Added player /swap command(requires mednafen-server 0.5.0). 3801 3802July 6, 2012: 3803 SMS: Added "Power Strike II" to the internal game database, to force PAL mode, per suggestion from "megadriver". 3804 3805-- 0.9.23-WIP: -- 3806 3807July 5, 2012: 3808 PSX: Fixed a very small memory leak in frontio.cpp. 3809 3810 Updated internal copy of miniLZO from version 2.01 to version 2.06. 3811 3812July 4, 2012: 3813 SNES: Removed some debug printf()'s that got left in the code from the work a few days ago. 3814 3815 Networking: 3816 Don't pass a NULL pointer to the WSAIoctl() output length count pointer argument. 3817 3818 More verbose error reporting with Winsock2 network code. 3819 3820 Break out of the name resolution loop so that we don't erroneously connect() multiple times. 3821 3822 Fixed some socket leaks on error bugs. 3823 3824 PSX: Use only one 9-bit SPU RAM write address offset counter for voices 1 and 3, and CD-audio writing to SPU RAM, and never reset it during 3825 runtime(sans reset/power condition, of course); fixes audio glitches with the guitar sounds in "Um Jammer Lammy". 3826 3827July 3, 2012: 3828 Wrote netplay code directly targeting BSD/POSIX and Winsock2 APIs, and removed SDL_net support. This change also brings support 3829 for IPv6. 3830 3831July 2, 2012: 3832 /server and /connect no longer accept "[HOST]:[PORT]" form, only "[HOST] [PORT]". 3833 3834 /server and/or /connect with no arguments in the netplay console will now connect to the server as specified by "netplay.host" instead 3835 of trying to connect to an empty string and trashing the "netplay.host" setting in the process. 3836 3837July 1, 2012: 3838 Fixed various internal problems with the netplay user interface code(memory leaks, using free()'d memory, definite multithreading unsafety, 3839 /quit not working properly, trying to access the network when the connection is closed, etc.). 3840 3841June 30, 2012: 3842 Further disable state rewinding functionality during netplay. 3843 3844 SNES: Backported(sort of) a fix to the serializer code that was breaking 64-bit integer restoring. 3845 3846June 29, 2012: 3847 SNES: Change various instances of "if(scheduler.sync == Scheduler::SyncAll)" to "while(scheduler.sync == Scheduler::SyncAll)" in the 3848 bsnes code, for better save state behavior. 3849 3850 SNES: Run S-SMP more tightly in sync with S-CPU, to further reduce frame timing jitter. 3851 3852June 27, 2012: 3853 Updated netplay protocol to increase the maximum number of allowed controllers per game from 8 to 16. 3854 3855June 26, 2012: 3856 Changed save-state header magic from the 16-bytes MEDNAFENSVESTATE to the 8-bytes MDFNSVST, to make room for a 64-bit creation 3857 timestamp(which will be used in the future). 3858 The old header magic is still recognized, for backwards compatibility. 3859 3860June 25, 2012: 3861 Cleaned up and remove VLA usage from core netplay code. 3862 3863June 24, 2012: 3864 NES: Fixed an annoying old compiler warning in "ines.cpp". 3865 3866 SNES: Disable some warnings to keep compilation of the bsnes code from spamming the screen with warnings. 3867 3868 SNES: Implemented kludges to prevent sound clicks and scratchiness when state rewinding functionality is enabled(but it's still plenty 3869 scratchy when actually rewinding ;)). A more proper fix does not seem possible, due to the way bsnes works. 3870 3871 SNES: Modified bsnes core to prevent S-SMP(and S-DSP) from running as far ahead of the CPU as it did before, to reduce timing jitter. 3872 This change has a small negative speed impact. 3873 3874June 23, 2012: 3875 Tidied up netplay join/leave messages. 3876 3877May 30, 2012: 3878 Fall back to nearest-neighbor scaling when blitting a screen image segment with a height less than 2(or less than 4, for scale4x); fixes an 3879 assert-triggered "crash" when using scale2x with PSX emulation(and possibly Genesis and PC Engine emulation with some games, as well). 3880 3881May 29, 2012: 3882 PSX: Fixed a stupid bug in the FB fill GPU command; the height iteration variable was being tested in respect to drawability(interlace mode, 3883 dfe, etc.), rather than the actual destination Y coordinate into GPU RAM. Fixes major graphical problems with "Dead or Alive". 3884 3885May 28, 2012: 3886 PSX: Altered data structures to avoid instantiating a templated struct with 0-size arrays. 3887 3888May 26, 2012: 3889 PSX: The Pause CDC command will "complete" much, much faster now if the drive is already paused. Fixes the lack of music after pausing 3890 and unpausing in "Dead or Alive". 3891 3892 PSX: Corrected GPU line draw command coordinate precision handling, in regards to x,y drawing offset, per tests on a PS1; fixes a 3893 flickering line issue in "Triple Play 97". 3894 3895May 25, 2012: 3896 PC-FX: QuickTime movie recording will now (indirectly) take the "pcfx.high_dotclock_width" setting into account, to reduce the 3897 size of the raw recorded image data when the setting is set to "256". (Note that this setting should still not be changed from the default 3898 of "1024", unless you understand the graphical degradation smaller setting values will cause in some games.) 3899 3900 MD: Fixed a bug that was causing the QuickTime movie recording code to instantly crash right after emulator startup with MD/Genesis emulation. 3901 3902May 24, 2012: 3903 PCE_FAST: Some 32-bit x86 inline assembly was listing "rbp" in the clobber list, when it should have been listing "ebp". Fixed. 3904 3905May 23, 2012: 3906 PSX: Improved the emulation accuracy of GPU texture windows(and made the texture window code much simpler), per tests on a PS1. 3907 3908May 23, 2012: 3909 PSX: Mask sprite width and height for custom/variable-sized GPU sprites against 1023 and 511, respectively, per tests on a PS1. 3910 3911-- 0.9.22-WIP: -- 3912 3913May 8, 2012: 3914 PC-FX: Increased the minimum allowable value for the "pcfx.cdspeed" setting from "1" to "2". 3915 3916 Replaced internal module graphics layer toggling code with absolute graphics layer enable mask setting code. 3917 3918May 5, 2012: 3919 NGP: Reduced the size of the noise channel LFSR from 16-bits to 15-bits, per mic_'s suggestion(and test program and recorded sound sample). 3920 3921May 4, 2012: 3922 Fixed broken support for "CTRL" modifier when configuring command keys/hotkeys(this doesn't affect hardcoded default key assignments, 3923 or manual configuration file changes to use the ctrl modifier, both of which already worked fine, it's just the in-Mednafen configuration 3924 process that was broken in regards to the CTRL modifier key). 3925 3926May 2, 2012: 3927 PSX: Fixed SPU handling of voice pitches > 0x3FFF; fixes broken sound effects in "Tales of Phantasia", and likely other games 3928 as well. Thanks to "sparklewind" for bringing the bug to my attention, and recording sound samples of the sound effects from a PS1. 3929 3930April 30, 2012: 3931 MD: Reworked YM2612 LFO PM/FM emulation based on notes from Nemesis. Changed the LFO AM waveform start phase so 3932 that the first "sample" is 0; though the waveform probably needs to be changed from sine to triangle. Corrected(I hope. :b) LFO AM depth 3933 setting 0x1 shift factor. 3934 3935April 29, 2012: 3936 PSX: Increased CD audio buffering slightly, and flush buffers on Pause, to reduce the number of voice audio glitches in "Tales of Destiny 2". 3937 3938April 28, 2012: 3939 PSX: Began adding save state support. 3940 3941 Fixed a regression in the deinterlacer code, from the April 20 fix, that was causing the first entry in a valid line widths array 3942 to be trashed. 3943 3944April 26, 2012: 3945 NGP: Got rid of various truncations of CPU cycle counts to 8-bits(they're still ultimately truncated to 8-bit, but only in one place now, so 3946 that it can easily be removed in the future when the CPU timing mess is resolved). 3947 3948 PCE: Added direct BRAM editing capability to the debugger's memory editor. 3949 3950 PCE: Fixed broken direct main RAM viewing and editing in the debugger's memory editor. 3951 3952April 23, 2012: 3953 MD: Added support for region overrides in the internal database(though no entries that override region are present yet). 3954 3955 MD: Changed supported region(as indicated by the game's embedded header) preference order to prefer domestic NTSC over overseas PAL. 3956 3957 MD: Removed an erroneously superfluous interrupt pending check in the 68K emulator core(which should have been removed a long time ago, 3958 since it is apparently a leftover of the original C68K timing model). 3959 3960April 21, 2012: 3961 MD: The upper 8 and lower 8 horizontal lines on the screen are now rendered as the border color in 224 height mode; fixes graphical glitches 3962 in "Micro Machines", possibly other games. 3963 3964 MD: Corrected VDP vblank flag set and clear time, fixes sprite glitches in X-Men 2. 3965 3966April 20, 2012: 3967 Fixed a bug in the system-independent deinterlacing code that was causing graphical glitches with Genesis interlaced mode under 3968 certain conditions 3969 3970 MD: Reset-button-triggered reset no longer resets VDP state, fixes major graphical corruption with Bonkers after such a reset. 3971 3972April 19, 2012: 3973 MD: If the YM2612 channel "algorithm" has changed, start the attack phase on the next key on from maximum attenuation, to ostensibly 3974 fix a broken sound effect in Ecco the Dolphin 2(Tides of Time), per the Gens EG implementation; this needs to be tested on an actual 3975 Genesis, which will have to wait until I'm able to obtain a Genesis flash cart. 3976 3977April 18, 2012: 3978 MD: Fixed the YM2612 save state code to work again(after the recent changes broke it); however, the recent changes have broken 3979 save state compatibility with save states from 0.9.21-WIP and earlier, and that isn't going to be "fixed". 3980 3981 MD: Fixed a major problem with the new EG implementation that was causing significant timbre and volume issues, due to an erroneous 3982 assumption(from PS1 emulation work) of how the attack phase entry works(thanks to a terse old forum post from Steve Snake 3983 for clarifying the issue). 3984 3985April 16, 2012: 3986 MD: Tweaked the sin and exp table algorithms to more or less match those described at https://docs.google.com/View?docid=dd8kqn9f_13cqjkf4gp 3987 (different chip, but at least the logsin table is supposed to be the same as the YM2612). The LFO tables still need to be worked on, though. 3988 3989 MD: Fixed a bug(relating to ADSR phase skipping) in the new EG code that caused some broken music in Flashback. 3990 3991April 15, 2012: 3992 MD: Fixed CSM support(untested) in YM2612 emulator. 3993 3994 MD: Rewrote YM2612 emulator EG portion, based on information from Nemesis and MAME/Genesis Plus GX. (CSM support was broken in the process, and will 3995 need to be fixed, along with some other code cleanups) 3996 3997 MD: Simulated FIFO bits in the status register were only being set(to 1), and never cleared. Fixed. (Mega Turrican actually checks the 3998 FIFO full bit, unlike many other games). 3999 4000April 14, 2012: 4001 MD: Updated Z80 core to latest FUSE SVN revision(though it required heavy modification for inclusion in Mednafen, so it's possible 4002 something Z80-emulation-related could have broken in the process); the update fixes some undocumented flag results, and changes/fixes timing 4003 for some instructions. 4004 4005 MD: Implemented very crude VDP FIFO timing simulation, fixes issues with "Soldiers of Fortune" and "Fatal Rewind". 4006 4007 MD: Removed old, questionable YM2612 hack, fixes some missing sound effects in "Williams Arcade's Greatest Hits". 4008 4009April 13, 2012: 4010 MD: Changed VDP line timing based on information in Genesis Plus GX, "Bram Stoker's Dracula" is now playable. 4011 4012 MD: Reset(via F10 button) will now reset less state than power off/on "reset", to allow "X-Men" to progress to the final level. 4013 4014 MD: Revamped 68K emulator timing, for more versatility and better timing granularity(exact timing not so much, at least not yet...) at the cost of 4015 increased CPU usage. 4016 4017 MD: Fixed a bug in the VDP DMA fill and VDP DMA VRAM copy timing calculations, fixes graphical glitches in a few games. 4018 4019 MD: Applied Yabause revision 1972 C68K timing fix patch. 4020 4021April 11, 2012: 4022 MD: Fixed a few(but there are many left :() YM2612 emulator bugs, based on information at http://gendev.spritesmind.net/forum/viewtopic.php?t=386 4023 4024April 10, 2012: 4025 PSX: Unmapped entries in the CPU emulator's fast instruction fetch memory map are now filled with a pointer to a dummy page, to prevent 4026 a game's crash from crashing Mednafen as a whole. 4027 4028 PSX: Removed unused partially-implemented CPU trampoline code and data, to reduce RAM usage and clean up code a bit(it was originally 4029 to ensure stability with a PC-as-a-pointer style CPU optimization, but that optimization was never implemented due to being in conflict 4030 with branch delay slot emulation). 4031 4032April 9, 2012: 4033 PSX: Added main RAM mirror addresses to the fast instruction fetch memory map. 4034 4035 PSX: Added various coprocessor-related instructions to the disassembler. 4036 4037 Added logical AND mode command key functionality(where all buttons/keys configured to the command are required to be in a pressed state 4038 simultaneously for the command to occur), on a per-command basis(commands can be configured in this mode with SHIFT+F2). 4039 4040April 8, 2012: 4041 Fixed transposed memset() value and length arguments in cdromif.cpp, thanks to skitt for the notice. 4042 4043 PSX: Fixed triangle coordinate precision in relation to draw offset based on more tests, fixes flickering graphical glitches on the 4044 right side of the screen in "Quake II", probably other games as well. 4045 4046April 7, 2012: 4047 PSX: Added L3 and R3 button emulation for emulated Dual Analog gamepads. 4048 4049-- 0.9.21-WIP: -- 4050 4051March 30, 2012: 4052 Updated the internal copy of libmpcdec to r475(which supports SV8, whereas the version in Mednafen previously only supported up to 4053 SV7), and updated the CD audio file reading code to use the new API, fixing a few problems(with variable initialization, and seeking) 4054 in the process. 4055 4056 SNES, PSX: Moved cleanup/deallocation code into a separate Cleanup() function, and call Cleanup() instead of CloseGame() in case of 4057 error during file loading, to prevent nonvolatile saved memory deletion in case of error. 4058 4059 SNES: 8MiB of memory is now allocated for the ROM image buffer passed to bsnes, regardless of actual ROM image size, to work 4060 around potential design flaws in the bsnes cart loading code to prevent emulator crashes with malformed or corrupted ROM images. 4061 4062 SNES: Added an 8MiB limit maximum ROM image size limit. 4063 4064March 29, 2012: 4065 Updated the internal copy of tremor to SVN revision 18222, and imported and merged in libogg 1.3.0, since SVN tremor 4066 no longer has its own libogg implementation(and hasn't for some time apparently!). 4067 4068 PSX: Added draw time penalty for texturing on polygons. 4069 4070 SNES: Began adding SNSF support. 4071 4072 SNES: Added default mouse button assignments to emulated mice, and default key assignments to the emulated gamepad on the first 4073 port. 4074 4075March 28, 2012: 4076 Fixed a big bug in the CUE sheet parser that caused wrong track addresses/LBAs with multi-data/bin-file CD rips where the pregap 4077 data is included in the binary image via "INDEX 00/INDEX 01" directives in the CUE sheet(which is a common form for PSX CD rips). 4078 4079 PSX: Added draw time penalty for goraud/gradient polygon shading. 4080 4081 PSX: Reduced draw time penalty for having transparency enabled, and added a draw time penalty for mask evaluation, per a quick, 4082 noncomprehensive test on a PS1(more thorough testing in the future is warranted) on a flat-shaded triangle. 4083 4084 PSX: Reduced triangle coordinate integer component precision, and reduced the maximum allowed triangle height to 512; fixes some graphical 4085 glitches in "Fighting Force 2". 4086 4087 PSX: Added SPU RAM editing(as opposed to simply viewing, as before) capability to the debugger. 4088 4089 PSX: Noise mode being enabled on a voice will now suppress ADPCM block flags effecting an ADSR release, per tests on a PS1. 4090 4091March 27, 2012: 4092 PSX: Revamped SPU IRQ to fix lockups in "Eithea". Tests need to be run on a PS1 to make sure the fix is correct, but the fix is derived 4093 from plausible hypothetical behavior. 4094 4095 PSX: Added emulation of some bits of the SPU status "register" at 0x1F801DAE. 4096 4097March 21, 2012: 4098 PSX: Brought SPU DMA timing closer to what it is on actual PS1 in game usage cases(more accurate timing than this will require significantly 4099 more SPU emulation work). This should fix sound glitches in the "Legend of Mana" FMV sequences. 4100 4101March 20, 2012: 4102 PSX: Reverse OT clear DMA is now emulated as halting the CPU, per tests on a PS1(though further tests are needed, the DMA controller 4103 "halting" is likely more complex than simply halting the CPU unconditionally while the DMA runs; and even in a C program, the 4104 halting effect does not occur immediately, but is slightly delayed, which is not emulated). 4105 4106 PSX: Improved CDC DMA timing slightly. 4107 4108 PSX: Bit 28 of a channel control register is now cleared on DMA completion of that channel, per tests on a PS1. 4109 4110March 19, 2012: 4111 PSX: Mute/Demute is now implemented for CD-XA playback as well as CD-DA playback. 4112 4113 PSX: SPU control register bit14(mask 0x4000, the mute bit) no longer affects CD audio output, per a test on a PS1. 4114 4115March 4, 2012: 4116 PSX: Added emulation of SPU registers available at [0x1F801E00, 0x1F801E80). 4117 4118February 29, 2012: 4119 NGP, VB, GBA: Implemented minor optimizations for when running on PowerPC. 4120 4121February 28, 2012: 4122 PSX: Added support for running on big-endian hosts, and added PowerPC-specific optimizations(AltiVec IDCT for MDEC, 4123 and load/store byte-reverse instructions via inline assembly for memory accesses). A 1.42GHz PowerMac G4 system 4124 is more than fast enough to play PSFs(especially with the idle loop detection speed hack added earlier), but is much 4125 too slow to play games at full speed. 4126 4127February 18, 2012: 4128 NES: Fixed Famicom Arkanoid controller emulation, thanks to raz0red for reporting that it was completely borked. 4129 4130February 16, 2012: 4131 Fixed a compilation problem with gcc 4.7-prerelease, reported by belegdol. 4132 4133Feburary 11, 2012: 4134 PSX: Fixed a mnemonic typo in the disassembler for "sltu", thanks to zeromus for reporting it. 4135 4136February 6, 2012: 4137 PSX: Altered DMA abort behavior to try to prevent lockups in some games. 4138 4139February 5, 2012: 4140 PSX: Fixed a potential buffer overflow crash when playing a PSF if the PSF tries to enable GPU video output. 4141 4142 PSX: Added a simple idle loop detection speed hack to the CPU core, used only during PSF playback. 4143 4144 PSX: Removed the InBDSlot variable, rolling its functionality into an interpretation of the lower 2 bits of the "new_PC_mask" 4145 variable. 4146 4147February 3, 2012: 4148 Fixed a spelling error in a 3D mode setting in vb/vb.cpp 4149 4150 Added some missing typecasts in src/file.cpp. 4151 4152January 31, 2012: 4153 Fixed a bug in the interpolation pixel shaders code that could cause a shader compilation error on some 4154 OpenGL implementations. 4155 4156-- 0.9.19-WIP: -- 4157 4158January 28, 2012: 4159 Added workaround for questionable header changes with libcdio 0.83 and newer. 4160 4161January 25, 2012: 4162 Fixed "x" and "y" <system>.videoip settings not working properly with screen rotation(though the fix is a bit 4163 convoluted, in the future it may make sense to completely re-evaluate how destination rectangles and rotation 4164 are done). 4165 4166 Re-added "ipxnotysharper", "ipynotxsharper", and "ipsharper" pixel shader settings. 4167 4168 Fixed interpolation-pixel-shader algorithm texture coordinate evaluation. 4169 4170January 24, 2012: 4171 Re-added "ipxnoty" and "ipynotx" pixel shader settings, to compensate for the removal of the extended videoip settings. 4172 4173 Fixed "x" and "y" <system>.videoip settings to work properly in full-screen mode. 4174 4175 PSX: Added default mouse button assignments for emulated mice. 4176 4177 PC-FX: Fixed a crash when selecting the "RAINBOW" layer in the debugger's graphics viewer. (Note that viewing 4178 the RAINBOW layer via this manner is still not supported; IE there's just empty space when the layer is selected in the 4179 graphics viewer). 4180 4181January 23, 2012: 4182 WonderSwan: Fixed a reset initialization bug(due to a design flaw) that was partially corrupting internal and 4183 external EEPROM. 4184 4185 PSX: Added emulation of LWL and LWR load delays, and emulation of LWL and LWR diversion of the register writeback 4186 stage of a previous instruction's delayed load. 4187 4188January 22, 2012: 4189 libcdio version information is now printed out on startup. 4190 4191January 21, 2012: 4192 PSX: Added mouse emulation. 4193 4194 Changed how physical mouse events are processed, removing a potential thread-safety issue with some SDL functions, 4195 and ensuring that a very quick mouse button press and release registers as pressed for at least 1 frame, as far 4196 as command processing and virtual input device emulation go. 4197 4198January 20, 2012: 4199 PSX: Added default keyboard button assignments for emulated digital gamepad 1. 4200 4201 PSX: Worked on multitap emulation some more. 4202 4203 PSX: Corrected gamepad and memcard emulation, to only respond when the first communication byte is 0x01 or 0x81 4204 respectively, rather than masking the byte with 0x81 and then testing, which is apparently incorrect based on 4205 real system testing. 4206 4207January 19, 2012: 4208 PSX: Began adding multitap emulation. 4209 4210 Fixed broken emulated input device selection command keys for ports 6, 7, and 8 4211 4212January 18, 2012: 4213 PSX: Front port I/O changes: 4214 Masked values written to control and mode registers to match tests on a real PS1. 4215 4216 Corrected RxD bit status when no device is driving it(was 0, should be 1). 4217 4218 Added emulation of DSR status bit to reads from the status register(though DSR emulation is totally kludgy 4219 at the moment, need to fix it up in the future). 4220 4221 Added emulation of interrupt status bit to reads from the status register. 4222 4223 Added emulation of memory card insertion detection bit, that is apparently set when the memory card receives 4224 power after being off, and is cleared by issuing a (successful?) write. 4225 4226 Attempted memory card block reads from beyond the end of the memory card will now fail as tested(granted 4227 not extensively tested for multiple beyond-end address values) on a real PS1. 4228 4229 The high byte of the read address specified in the memory card read command will now be echoed back in 4230 the following byte sent back to the PS1, as per tests on the real PS1(previously in Mednafen, that byte was 4231 just being sent as 0x00). 4232 4233 The receive buffer byte is now duplicated across all bytes of multi-byte reads of the data port address, 4234 as on a real PS1. 4235 4236 Began adding analog gamepad support; though, the current front port SIO device interface is a bit clunky, 4237 so probably no more emulated devices will be added until that can be improved. 4238 4239 PSX: Removed asserts on MFC0 from a debug register; a warning message will still be printed if a debug register 4240 is written with MTC0, however. 4241 4242 Fixed a bug that could cause an assert() to be thrown with small effective y-scale values on certain types of 4243 multires video frames, thanks to Speedvicio for reporting it. 4244 4245January 17, 2012: 4246 PSX emulation module compilation is now enabled by default in the configure script. 4247 4248 PC-FX: Fixed a lack of updating a cached copy of the debugger-editable KING register "ADPCMCTRL" on edit. 4249 4250 Added a rudimentary test in the configure script to determine if "-fno-strict-overflow" or "-fwrapv" should be used 4251 (in regards to gcc 4.2.x generating bad code for -fno-strict-overflow). 4252 4253 Updated list of gettext translateable source code files. 4254 4255January 16, 2012: 4256 PSX: Fixed emulation of bit7 of SPU control register, it actually appears to control the reverb algorithm writing 4257 into the reverb work area, rather than setting the inputs to 0 as it was emulated before. Fixes music corruption 4258 in "The Roots" demo, music playback in "Vib-Ribbon", and possibly minor sound glitches in other games as well. 4259 4260 PSX: CD audio data is now written to SPU RAM without SPU output CD volume being applied, fixes course generation 4261 in "Vib-Ribbon". 4262 4263 Implemented support for mapping command keys(hotkeys) to mouse buttons; it was partially implemented before, 4264 in that the command key configuration process allowed you to select mouse buttons for a command key, but the 4265 mouse buttons had no effect in actually triggering the command. 4266 4267January 15, 2012: 4268 GB: Added GB system type selection via "gb.system_type" setting. Sound emulation nuances have 4269 changed from the previous default, such that DMG games will select emulation of the DMG sound hardware whereas 4270 before they selected CGB sound hardware. To achieve the previous behavior, set the "gb.system_type" setting to "cgb", 4271 though note that in a future version this setting may change color and palette selection as well. 4272 4273January 13, 2012: 4274 Corrected a wrong argument type in an error reporting function in drivers/shader.cpp, which should fix compilation 4275 issues with certain OpenGL implementations. 4276 4277 PSX: Removed erroneous coordinate check in line-drawing code that was preventing 1-pixel-long lines from 4278 being drawn, and fixed a divide-by-zero issue that removing the check caused. 4279 4280 Port cache is now cleared on game close; has no practical effect on stock Mednafen, but needed for ports 4281 that allow for more than one game loading per instance, to prevent problems with netplay and state rewinding. 4282 4283 PSX: Refined GPU status port bit28 emulation, per tests run on a 4284 real system(it's a bit weird and inconsistent). 4285 4286 PSX: GPU polylines now require at least one line segment(two vertices) to 4287 be specified before the termination code is honored, per tests on 4288 a real system. 4289 4290January 12, 2012: 4291 PSX: Fixed a problem with shaded polyline end code evaluation, fixes startup lockup in "Codename: Tenka". 4292 4293 PSX: Fixed GPU flipped sprite drawing, the starting coordinates were being set incorrectly as 4294 to how a real GPU apparently works(and how a real GPU apparently works is kind of wonky compared 4295 to sprite flipping on older consoles!). 4296 4297 PSX: Sprites are no longer dithered, per test results run on the real thing(though only with commands 4298 0x64 through 0x67, it's possible that the others couuuuld be different, more tests will be run). Fixes 4299 the motion-blurred running scene in the beginning of "Silent Hill". 4300 4301January 11, 2012: 4302 PSX: Improved GPU FB Read, FB Write, FB Copy, and FB Fill command emulation(particularly coordinate and 4303 size masking; and doing mask bit handling for FB Copy, which fixes FF8 battle transitions), based on tests 4304 run on a real system. 4305 4306January 8, 2012: 4307 PSX: Fixed IRQ idle and FIFO room bits, fixes graphical update issues with "The Roots" demo. 4308 4309 PSX: Made OT clear DMA occur over time instead of instantly. 4310 4311 Fixed a deinterlacer bug that would cause a stale field to be displayed for the first interlaced frame after a 4312 period of non-interlaced frames. 4313 4314January 6, 2012: 4315 More build information is displayed on startup. 4316 4317 Fixed a memory leak in the internal message display code. 4318 4319January 5, 2012: 4320 Improved PAL region game support, and added rough region autodetection, with a BIOS filename setting for each supported 4321 region. 4322 4323January 4, 2012: 4324 Fixed multiple issues with the signal handler. 4325 4326January 3, 2012: 4327 Fixed temporal blur memory allocation that could lead to crashes with emulated systems that support 4328 interlaced video, it was only allocating for a fixed height of 256 when it should have been using the fb_height 4329 member of MDFNGameInfo. 4330 4331 Fixed problems with the configure script that caused user-supplied CPPFLAGS to be ignored. 4332 4333 The Win32 build is now compiled with gcc 4.5.4 20111030(prerelease), and compiled with gcc option "-mstackrealign". 4334 4335December 30, 2011: 4336 PSX: Added emulation of coprocessor->CPU transfer delay slots, fixes 4337 graphical glitches in "Tekken 2". 4338 4339 PSX: Fixed bug that was causing timer overflow flag to be set when it shouldn't be(when in target mode). 4340 4341 PSX: GPU CLUT offset wrapping fixed(fixes "Next Tetris"). 4342 4343 PSX: Return interlaced mode field in bit 13 of GPU status port reads. 4344 4345 PSX: Miscellaneous GPU emulation improvements relating to coordinate precision. 4346 4347 PSX: Revamped GPU, SPU, and MDEC DMA, (and GPU command buffering), to run over time instead of all at once. 4348 4349December 29, 2011: 4350 Lynx: Fixed EVERON detection emulation, and emulated a hardware bug regarding SCB data reading, the latter of which 4351 fixes a graphical glitch in "Joust". Thanks to sage and LX.NET for information and patches. 4352 4353December 21, 2011: 4354 PSX: Fixed a typo in the return value calculation for control command 0x10, fixes graphical glitches in 4355 "Xenogears". 4356 4357December 19, 2011: 4358 PSX: Added backing variables/memory for memory accesses to 0x1f801000-0x1f801023, though their actual functionality isn't 4359 emulated yet. 4360 4361 PSX: Added dummy SIO(rear serial port) emulation to fix a divide-by-zero crash in Wipeout. 4362 4363 PSX: Altered ReadN and ReadS semantics, fixes a lockup in Suikoden II. 4364 4365 PSX: CD sector error correction will no longer be attempted on mode 2 form 2 sectors, fixes data corruption and lockup 4366 issues with "Final Fantasy Tactics", "SaGa Frontier", and perhaps others. 4367 4368December 18, 2011: 4369 PSX: Fixed a problem with line drawing gradient shading, fixes some glitches with lighting effects 4370 in "Quake II", "Need for Speed III", and probably other glitches in other games as well. 4371 4372 PSX: Altered Mem->GPU DMA completion calculation to take into account the GPU's FIFO, though the FIFO simulation 4373 is rather crude; fixes various games that were flickering messes. 4374 4375 PSX: Fixed FB write coordinate and size masking to not be braindead(it didn't allow 1024 width or 512 height, 4376 which obviously broke games). 4377 4378December 17, 2011: 4379 PSX: Improved emulation of SPU control register bit 15, fixes sound effects and music glitches in "Viewpoint", "Mat 4380 Hoffman's Pro BMX", and likely other games as well(though "Hydro Thunder" still seems to have issues with 4381 garbage sound). 4382 4383 PSX: Improved emulation of SPU control register bit 14. 4384 4385December 16, 2011: 4386 SMS: Began work on fixing H-counter behavior. 4387 4388December 15, 2011: 4389 PSX: Masked FB write coordinates and widths to the bare minimum; not sure if this is totally correct(need to run 4390 tests on the real thing), but it fixes a startup lockup in "Crash Team Racing". 4391 4392 Revamped internal CD direct reading abstraction, and made several user-visible changes: 4393 Removed "cdrom.lec_eval" setting; it complicated internal design, and was a bad decision in the sense 4394 that it could promote distributing patches or CD rips that would likely not work properly when burned to 4395 an actual disc. 4396 4397 Added more proper support for multi-disc CD games; see the CD-emulation section in the documentation 4398 for further details. 4399 4400 Dropped support for physical CD drives that don't support MMC commands, don't support raw sector reading, 4401 and/or don't support raw subchannel reading. 4402 4403December 7, 2011: 4404 Added experimental support for enabling linear interpolation on one axis only(via the <system>.videoip setting), 4405 that doesn't require FBOs or pixel shaders. 4406 4407December 4, 2011: 4408 PSX: Corrected time of FB Y readout offset lower bit versus field bit setting, fixes startup freeze in 4409 "X-Men: Mutant Academy". 4410 4411 PSX: Made SPU IRQ emulation slightly more accurate. 4412 4413December 3, 2011: 4414 PSX: Added a kludge to prevent the GPU from returning busy status on status port reads after DMA to the GPU 4415 finishes its simulated run time, to fix major problems with the battles in "Valkyrie Profile". 4416 TODO: This kludge will be removed when more accurate DMA emulation is in place in the future. 4417 4418 PSX: Reduced triangle vertex x,y coordinate integer precision, fixes missing level graphics in "Tony Hawk's 4419 Pro Skater 2". 4420 4421December 2, 2011: 4422 PSX: Improved mask bit emulation, fixes text brightness issues in "Dragon Quest 4", and possibly other 4423 graphical issues in other games as well. 4424 4425 Swapped the lines the scanlines effect is applied to, and removed the OpenGL texture offset hack used when scanlines 4426 were enabled. 4427 4428December 1, 2011: 4429 PSX: Improved display FB Y readout position emulation, and added support for line skipping and "dfe" functionality 4430 when drawing in interlaced mode(it's likely not 100% correct, though). 4431 4432November 29, 2011: 4433 Added emulation of the VDP quirk present in the Japanese SMS VDP to fix the graphical glitches in the Japanese 4434 version of "Ys"; however, the quirk will only be emulated when the "sms.territory" setting is set to "domestic". 4435 4436November 28, 2011: 4437 Replaced the various <system>.pixshader ip* settings with "autoip" and "autoipsharper", and rewrote 4438 the underlying "sharper" interpolation algorithm to produce more visually-pleasing results. There is some loss of 4439 potential functionality with this change, but hopefully the gained functionality will greatly offset the loss in 4440 practice. 4441 4442November 25, 2011: 4443 SMS: Reduced FM volume to prevent some kind of overflow clicking in Blip_Buffer(TODO: investigate where 4444 exactly it was happening). 4445 4446November 17, 2011: 4447 Fixed some code causing compiler warnings in: 4448 psx/dis.cpp 4449 pcfx/king.cpp 4450 pcfx/fxscsi.cpp 4451 pce_fast/vdc.cpp 4452 pce/vce_sync.inc 4453 nes/boards/emu2413.cpp 4454 nes/ntsc/nes_ntsc.cpp 4455 md/debug.cpp 4456 md/cd/cdc_cdd.cpp 4457 4458November 15, 2011: 4459 Fixed the broken scanline effect when the screen is rotated when using the OpenGL video output driver. 4460 4461November 13, 2011: 4462 Genesis: Fixed left/right gamepad default key assignments, they were backwards for some reason. 4463 4464 Changed the default values for <system>.xres and <system>.yres to "0", which will cause Mednafen to use 4465 the same resolution as the desktop video mode. 4466 4467 Changed the default values for <system>.xscalefs and <system>.yscalefs to "1", and changed the default value 4468 for <system>.stretch from "0"(disabled) to "aspect_mult2". 4469 4470 Revamped the quick help(via F1) screen, removing the annoying partial opacity and changing colors and layout 4471 slightly. 4472 4473 Remapped the screen rotation button from "F8" to "ALT + O", enabled screen rotation for all emulated systems, 4474 and renamed the "command.rotatescreen" setting to "command.rotate_screen". 4475 4476November 12, 2011: 4477 Began adding support for emulated analog buttons/axes to the core and driver code(to be used in the future 4478 for additional PSX input device support). 4479 4480November 11, 2011: 4481 Implemented a workaround for compiling the unzip code with Gentoo's messed up zlib header files. 4482 4483November 10, 2011: 4484 NES: Corrected multiple problems with mouse coordinate translation for Zapper, Space Shadow Gun, Oeka Kids Tablet, 4485 and Arkanoid controller emulation, especially with non-default video settings. 4486 4487November 9, 2011: 4488 Altered "video.glvsync" semantics slightly, such that a setting of "0"(vsync disabled) will override video card 4489 system driver settings in the same way that a setting of "1" will. (In short, it makes disabling vsync via this 4490 setting more reliable) 4491 4492November 8, 2011: 4493 Added new video stretch modes "aspect_int" and "aspect_mult2". 4494 4495 WonderSwan: Implemented experimental setting "wswan.language"; it's only known to affect one game. 4496 4497November 7, 2011: 4498 PSX: Made SPU execution slaved to the CDC, to prevent potential edge-case synchronization issues for audio streaming. 4499 4500 PSX: Implemented rudimentary CD-XA playback. 4501 4502 PSX: Implemented GetLocL CD command. 4503 4504October 30, 2011: 4505 PSX: Implemented more of MDEC, to the point where the video in FMV sequences is working to a degree. 4506 4507October 27, 2011: 4508 NES: Improved iNES mapper 69 expansion sound emulation accuracy(volume interpretation and channel frequencies 4509 were off). 4510 4511October 26, 2011: 4512 PSX: Fixed a bug that caused crashing when emulator sound output was disabled. 4513 4514 PSX: Fixed missing initialization of a local variable in a GTE emulation function(very curiously, gcc 4.4 optimized it 4515 as if it were initialized to zero, and didn't even print a warning about an uninitialized variable being used, but 4516 the lack of initialization DID cause a warning and broke the code with gcc 4.6). 4517 4518October 25, 2011: 4519 PSX: More GTE fixes. 4520 4521October 19, 2011: 4522 PSX: Altered GPU triangle rendering to fix the little problem of 4523 invisible walls in "Doom". 4524 4525October 18, 2011: 4526 PSX: Corrected GTE MVMA when mx is 3(it has very strange behavior). 4527 4528October 17, 2011: 4529 PSX: Improved CPU branch delay slot emulation, fixes a few graphical glitches in "Threads of Fate". 4530 4531 PSX: Improved GTE flag emulation, and support for MVMA with the far color vector. 4532 4533October 15, 2011: 4534 Fixed a bug that caused crackling and increased CPU usage when using certain non-integer fast/slow-forward speed 4535 multipliers. 4536 4537October 13, 2011: 4538 GBA: Added GSF-related file extensions to known file extensions list. 4539 4540 PSX: Added PSF-related file extensions to known file extensions list. 4541 4542 PSX: Disabled memory card emulation when a PSF is loaded. 4543 4544October 12, 2011: 4545 CDPLAY, SNES, PSX: Changed several large statically-allocated arrays to be dynamically-allocated to reduce 4546 memory usage when those emulation modules aren't being used. 4547 4548 Increased the maximum supported sound output rate to 1048576 Hz, JUST BECAUSE. 4549 4550 GB: Fixed loading of custom per-game palettes. 4551 4552October 10, 2011: 4553 Changed setting and code constraints to increase the maximum supported sound output rate from 48KHz to 192KHz. 4554 4555 NES: Altered the resampler to work for output rates higher than 48KHz. 4556 4557 Modified Blip_Buffer to use 64-bit types for time-keeping and calculation instead of 32-bit, and extended 4558 the precision of the fractional component of the output-to-input rate ratio from 20 bits to 32-bits. This 4559 change to 64-bit types also has the effect for allowing for very large buffer sizes with very high 4560 output rates. However, if you're using a custom video mode with a refresh rate tuned to minimize juddering 4561 and frameskipping, you will need to adjust/recalculate those modes for all emulation modules 4562 *other* than "nes", "psx", and "snes". 4563 4564October 8, 2011: 4565 NES: Fixed a bug in the MMC5 split-screen emulation that caused a garbage scanline in the intro sequence 4566 of "Uchuu Keibitai SDF". 4567 4568 NES: Fixed MMC5 32K PRG switching mode. 4569 4570September 29, 2011: 4571 Fixed a file descriptor leak in the gzip loading code, and removed usage of dup(). 4572 4573 Maximum ROM image size is now enforced in the gzip loading code. 4574 4575September 25, 2011: 4576 GBA: Fixed an endian-related bug in the sound emulation code. 4577 4578September 22, 2011: 4579 Changed an erroneous memcpy() of an object to an assignment in the MDFN_Surface constructor. 4580 4581 SMS: Removed an unecessary memset() that sometimes tried to memset() a NULL pointer. 4582 4583September 5, 2011: 4584 PSX: Changed coordinate precision in the GPU sprite drawing code so that the level in "Skullmonkeys" 4585 doesn't disappear when your character goes far enough to the right. 4586 4587September 4, 2011: 4588 PSX: Added memory card support. 4589 4590 PSX: Reworked SIO(for front ports) code, fixes problems with controllers acting totally wonky on some games. 4591 4592August 29, 2011: 4593 NES: Fixed potential(in ports) memory leaks in the Game Genie emulation code. 4594 4595August 28, 2011: 4596 PCE, PCE_FAST: Fixed an Arcade Card emulation bug that made Garou Densetsu 2 virtually unplayably difficult. 4597 4598August 25, 2011: 4599 Added a "close()" method to FileWrapper, and modified the QuickTime and WAV recording code to make use of it. 4600 4601August 24, 2011: 4602 GBA: Encapsulated in a namespace. 4603 4604 GB: Encapsulated in a namespace. 4605 4606 GB: Added a few minor missing variables to save states. 4607 4608 PCE, PCE_FAST, PC-FX: Fixed potential memory leak(in ports) in the SCSI CD emulation code. 4609 4610 NES: Fixed potential memory leaks(in ports) in the FDS and PPU emulation code. 4611 4612August 23, 2011: 4613 PC-FX: Fixed a potential memory leak in the RAINBOW emulation code, again currently only relevant to ports of Mednafen. 4614 4615 Refactored and reorganized physical CD and image reading code, and moved utility-type functions, types, and 4616 enums into their own namespace, with somewhat more consistent naming, and removal of redundant functions and macros. 4617 4618 Fixed a crash when "cdrom.lec_eval" is "0" and a physical data CD is loaded. 4619 4620 Fixed potential(in ports of Mednafen) memory leaks in the CD-ROM emulation code. 4621 4622August 20, 2011: 4623 PCE, PCE_FAST: Fixed potential memory leaks(in ports of Mednafen, not Mednafen as-is) in HES player code. 4624 4625August 18, 2011: 4626 WonderSwan: Fixed an issue in the debugger's disassembly code that had the potential to cause the 4627 compiler's linker to error out in certain situations. 4628 4629 NGP: Fixed a memory map initialization bug(won't affect Mednafen as it is currently, but may affect ports that 4630 load more than one game without restarting Mednafen). Thanks to raz0red for pointing it out. 4631 4632August 13, 2011: 4633 Fixed(again) waveform Y coordinate saturation in the music player. 4634 4635-- 0.9.18-WIP: -- 4636 4637August 11, 2011: 4638 SexyAL: Added support for reversed-byte-order(relative to CPU endianness) sample formats to the ALSA driver; this 4639 will allow for better support for non-native soundcards(such as a little-endian sample format "PC" soundcard plugged 4640 into an old PowerPC Mac big-endian system running Linux). 4641 4642 SNES: Added support for custom palettes. 4643 4644 GB: Added support for custom palettes. 4645 4646August 9, 2011: 4647 The "P" subchannel is now simulated along with the Q subchannel in the CD read functions. This shouldn't have any 4648 effect on emulation now, as the P subchannel data isn't used by any system emulation code in Mednafen, but it may 4649 be used in the future. 4650 4651 Improved accuracy of simulated Q subchannel data for pregap areas, in the 4652 CD read functions. 4653 4654August 8, 2011: 4655 Added path checks to files referenced in CUE sheets and PSF files, controlled(enabled/disabled) via the 4656 setting "filesys.untrusted_fip_check". 4657 4658 Added untested support for the "POSTGAP" directive in CUE sheets. 4659 4660 Added support for specifying absolute file paths in PSF files and CUE/TOC files. 4661 4662August 7, 2011: 4663 When loading a state, if the recorded variable/datum size is not equal to the expected size of the variable, 4664 it will be treated as missing and not loaded. 4665 4666 Removed redundant function "CDIF_GetTrackStartPositionLBA()". 4667 4668 Removed mostly-redundant, and inconsistent across disc images and physical discs, functions 4669 "cdrfile_get_track_sec_count()" and "CDIF_GetTrackSectorCount()". 4670 4671 GB: Fixed coarse instruction timing and flag behavior for several instructions, based on blargg's CPU tests and 4672 on code in the VBA-M SVN repository. 4673 4674 Fixed a file descriptor leak in the save state preview code, that could cause file descriptor exhaustion 4675 if multiple save states are used extensively in one session. Thanks to raz0red for reporting the bug. 4676 4677August 5, 2011: 4678 SNES: Implemented RAM cheats and cheat search via the common interface. 4679 4680 WonderSwan: Cart save RAM is now available to the cheat engine code(it was supposed to be before, but the code 4681 was passing the pointer before it was initialized). 4682 4683 Genesis: Updated EEPROM code to newer code from Genesis Plus GX, and fixed most of the EEPROM database entries 4684 that were previously broken in Mednafen. 4685 4686August 4, 2011: 4687 Genesis: Refactored and tweaked input device emulation a bit to fix input unresponsiveness issues in 4688 "Samurai Spirits/"Samurai Shodown". 4689 4690August 3, 2011: 4691 Genesis: Revamped 6-button gamepad emulation, and made it actually work. 4692 4693August 1, 2011: 4694 Fixed a lack of mutex locks in the debugger's memory viewer when editing memory, that could cause crashes or wrong 4695 behavior in certain cases. 4696 4697 Began work on supporting comments in the disassembled code in the debugger. 4698 4699July 29, 2011: 4700 Genesis: Made H-counter reading less completely wrong, but it's likely still mostly wrong(added a TODO entry 4701 for fixing it). 4702 4703 WonderSwan: Fixed(made considerably less broken at least!) debugger's fubar branch 4704 history(it only took a few years, I guess no one used the WonderSwan debugger much :b). 4705 4706July 28, 2011: 4707 WonderSwan: Cleaned up debugger code a bit. 4708 4709 WonderSwan: Encapsulated in a namespace. 4710 4711 The music player interface's waveform display will now saturate the Y coordinate to the screen boundaries 4712 rather than forcing it to the middle of the screen(not sure why it was doing that before, doesn't make much sense). 4713 4714 NES: Tweaked the audio resampling algorithms a bit to prevent degraded audio quality on high-amplitude input 4715 samples. 4716 4717 NES: Corrected audio resampler filter setup debug printfs to use more-correct labels, and added more information. 4718 4719 NES: Added AltiVec support to the audio resampler. 4720 4721July 27, 2011: 4722 Internal text renderer now truncates text with pixel granularity rather than glyph granularity. 4723 4724July 26, 2011: 4725 NES: Reduced fb_height from 256 to 240. 4726 4727 GBA: Changed "gba.bios" setting to use Mednafen's firmware path construction semantics rather than specifying a 4728 path used directly. 4729 4730 GBA: The "gba.bios" setting is now ignored when playing a GSF, fixing GSF playback with a real BIOS ROM 4731 image is used. 4732 4733July 25, 2011: 4734 PCE_FAST: Changed x86 inline assembly to manually push and pop rbx/ebx, rather than listing it in the clobber list, 4735 to work around pedanticness in compilers in certain cases. 4736 4737 Added a test to make sure "char" type is signed to "tests.cpp". 4738 4739 Added a quick and dirty signed overflow test to "tests.cpp". 4740 4741July 18, 2011: 4742 Lynx: ROM image headers are now read out field-by-field rather than memcpy()'ing into a packed struct. 4743 4744July 16, 2011: 4745 Genesis: A loaded file with an extension of "md" will now be treated as a Sega Genesis/Megadrive game. 4746 4747July 8, 2011: 4748 WonderSwan: Added "Code Segment", "Stack Segment", "Data Segment", and "Extra Segment" logical address spaces 4749 to the debugger's memory editor. 4750 4751July 5, 2011: 4752 Added highlighting to the instruction disassembly for the instruction that PC is pointing to, to avoid confusion 4753 when the disassembly cursor is moved off in step mode from the current PC. 4754 4755 Debugger disassembly will now be forcibly resynchronized to PC, in addition to the current disassembly cursor 4756 address(currently, only the latter was synched). 4757 4758 PCE: Revamped branch history to show the old PC in addition to the new PC, not to add an entry when a conditional 4759 branch isn't taken, to show reset and IRQ events/"branches", and to show branch count when repeatedly branching to 4760 the same target from the same source with no other branches in-between. These changes necessitated reducing the 4761 number of entries in the branch history from 32 to 24. 4762 T = timer, 1 = IRQ1, 2 = IRQ2, R = reset. 4763 4764 Increased the available area for branch history display in the debugger. 4765 4766 Halved the size(and number of bytes displayed) of the memory watch section in the debugger when the disassembly 4767 list is selected(and offseted the watch address by -0x80 when the register list is selected). 4768 4769Jun 26, 2011: 4770 Replaced the old CPU flag testing code with newer code from libavutil from ffmpeg. 4771 4772 Restructured architecture detection code in configure.ac. 4773 4774Jun 19, 2011: 4775 Fixed a minor(it's unlikely to have noticeably affected any commercial games) LFO emulation bug in the HuC6280 sound 4776 core emulation code, reported by "mic_". 4777 4778Jun 13, 2011: 4779 GBA: GSF playback now uses new PSF loading code developed for the PS1 emulation module. 4780 4781 Changed the music player overlay to use std::string instead of C-strings. 4782 4783Jun 7, 2011: 4784 Fixed a lack of variable initialization in the WAV recording code, which could cause WAV recordings to have an 4785 erroneous value in a size field in the header. 4786 4787Jun 5, 2011: 4788 PC-FX, VB: Implemented a minor CPU optimization that could cause regressions. TODO: Test games. 4789 4790Jun 2, 2011: 4791 Changed "INLINE" #define in the SoftFloat target definition file from "extern inline" to "static inline" to resolve 4792 issues user "mziab" reported with gcc 4.6.0. 4793 4794May 30, 2011: 4795 NGP: Fixed the "ngp.language" setting to work properly with the non-numeric setting values("english" and "japanese") 4796 (previously it was always Japanese language selection for both strings). 4797 4798May 28, 2011: 4799 Genesis: Fixed a bug in the 68K emulation core that caused major problems in some games("Instruments of Power", 4800 "The Lost Vikings", perhaps others) when running on big-endian platforms. 4801 4802May 20, 2011: 4803 PCE: Loading Games Express CD games will now automatically load the Games Express CD Card BIOS; BIOS filename 4804 is specified by the new "pce.gecdbios" setting, default value of "gecard.pce". 4805 4806 PCE: Added Games Express CD game detection based on CRC32s for the remaining handful of games that the previous 4807 method didn't detect. 4808 4809May 18, 2011: 4810 Tweaked CD simulated read ahead to read farther ahead, but incrementally instead of all at once as before. 4811 4812April 28, 2011: 4813 SNES: Fixed PAL video output size, and frame rate when using netplay. 4814 4815April 27, 2011: 4816 SexyAL: Rewrote the channel and format conversion code, now allowing for output channel count up to 8; and, 4817 tweaked the ALSA code to work with devices that only support > 2(but code is limited to <= 8) channels. 4818 (The Audigy 2's "p16v" sub-device in ALSA can now be used directly by Mednafen) 4819 4820April 23, 2011: 4821 Fixed a crash on exit when one audio file(FLAC, WAV, Vorbis, etc.) is used for multiple tracks in a CUE sheet. 4822 4823April 17, 2011: 4824 NES, PCE: Fixed relative branch target address 16-bit wrapping in the debugger's disassembler. 4825 4826 PCE: Added "SET" instruction to the debugger's disassembler(can't believe it's been missing all this time). 4827 4828April 15, 2011: 4829 Fixed "--disable-vb" option to ./configure, thanks to Rakashazi for reporting the bug. 4830 4831April 8, 2011: 4832 PC-FX: Fixed debugger's timer register text, and hooked up sound chip register setting in the debugger. 4833 4834 PCE: Altered VDC line timing to fix raster effects in "Camp California" and "Shape Shifter". The changed way probably 4835 still isn't right, but it's something commercial games are unlikely to rely on anyway(except in maybe those 4836 hidden "four-screen" modes), and the previous way WAS breaking commercial games. 4837 4838 PCE: Fixed a timing bug in the maximum VDC wait state calculation code(wasn't taking into account VCE-controlled 4839 events like hsync and vsync changing state). 4840 4841April 5, 2011: 4842 VB: Fixed register 30 state during and after *bsu instructions. Thanks to blitter for pointing the bug out 4843 and submitting a patch. 4844 4845 PCE: Improved ADPCM emulation based on more tests run on the real system. Fixes a lockup bug in "Hyper Wars". 4846 (The changes made have the potential to cause regressions, however, if any are found please report them) 4847 4848Mar 7, 2011: 4849 Hackish fix for problems with CUE/BIN disc images(particularly bad with multiple BIN style images) that contain 4850 "INDEX 00" statements in the CUE sheet. (Problems ranging from incorrect Q subchannel data for the pregap 4851 to wrong track start LBAs) 4852 4853February 12, 2011: 4854 PC-FX, MD: Factored the deinterlacing code out of the individual emulation modules and into the core Mednafen code. 4855 4856 PCE: Adjusted ADPCM emulation slightly, fixes massive A/V sync problems with "Sherlock Holmes". 4857 4858January 29, 2011: 4859 NGP: Masked NGP BIOS syscall code properly, thanks to SANiK for pointing it out. 4860 4861 MD: Changed line timings so vertical refresh rates are the same in both 256 and 320-wide modes. 4862 4863 PCE: Fixed a Seiya Monogatari ADPCM-related lockup, thanks to Rakashazi for pointing the problem out. 4864 4865January 15, 2011: 4866 Began adding PlayStation 1 emulation. 4867 4868January 5, 2011: 4869 Fixed "volatile" placement on several pointer declarations. 4870 4871-- 0.9.16-WIP: -- 4872 4873December 31, 2010: 4874 PCE: Re-enabled the VDC wait-state-limiting kludge, with some tweaks, to prevent hypothetical emulator crashes. 4875 4876 PCE: Added a FIFO to buffer the CD subchannel data. Fixes CD+G playback, which was broken when VRAM access wait stating 4877 was implemented. 4878 4879 Adjusted a few setting descriptive texts, for the automatically-generated documentation. 4880 4881December 29, 2010: 4882 Added setting aliases, allowing old setting names to be used in the settings file(though the new setting name 4883 will be saved back to the setting file, not the old name) and on the command line. Currently, 4884 settings renamed since December 15, 2010 have old setting name aliases. (Note: This of course doesn't apply to 4885 the numerous removed settings since 0.9.15). 4886 4887 Renamed settings: 4888 frameskip -> video.frameskip 4889 glvsync -> video.glvsync (Might want to rename this to video.opengl.vsync or video.driver.opengl.vsync in the future) 4890 fs -> video.fs 4891 vdriver -> video.driver 4892 4893 4894December 26, 2010: 4895 Added "gama" atom to recorded QuickTime files. 4896 4897 Added setting "qtrecord.vcodec", and added support for the QuickTime PNG codec. Possible values for this setting 4898 are "raw", "cscd", and "png", with the default being "cscd". 4899 4900 Added "ftyp" atom writing to the beginning of QuickTime files created. 4901 4902 Class-ified PNG writing code, and fixed a bug from when the filesys.fname_* settings were added that broke 4903 screen snapshots. 4904 4905 Wrote new MS WAV file recording code to replace the old code that relied on libsndfile. This allows sound recording 4906 to function even when Mednafen is compiled without libsndfile. 4907 4908December 25, 2010: 4909 Fixed various problems with the QuickTime writing code. VLC and the official Apple QuickTime player can now 4910 play the files Mednafen produces(though not necessarily the video component in the Apple QuickTime player). 4911 4912 open() in the FileWrapper class is now passed with flag O_BINARY if it's defined. Fixes QT recording 4913 on MS Windows. 4914 4915 Creation and modification timestamps in QuickTime files produced are now filled with the time of recording start, 4916 rather than being left at 0. 4917 4918 Adjusted the QuickTime matrix calculation used for aspect ratio correction. 4919 4920 Added settings "qtrecord.w_double_threshold" and "qtrecord.h_double_threshold". Users on slower systems, or 4921 those who are transcoding via full-featured software after recording, may want to set these to 0. 4922 4923December 24, 2010: 4924 4925 Mednafen is now compiled with largefile support enabled on 32-bit platforms(Win32 kind of included, its largefile 4926 support is...DIFFERENT), though it is currently only necessary for QuickTime movie recording. 4927 4928 Added experimental QuickTime movie recording support via the -qtrecord command-line switch. Video data 4929 is encoded via the CamStudio codec(this may cause problems for Apple's QuickTime player software, as this 4930 codec is typically not used in QuickTime containers AFAIK), audio data is raw. A few auxillary atoms 4931 were left out, and may or may not need to be implemented in the future. 4932 MPlayer, ffmpeg, and Youtube seem to be able to handle the files produced, though MPlayer has occasional 4933 random A/V sync issues(at least for me). The version of VLC I have installed can play the video, but aspect 4934 ratio correction and audio playback are broken. 4935 4936 Removed the custom MMM-format recording and playback. 4937 4938 Added lcm_width and lcm_height members to the MDFNGI struct, to aid in video recording(and perhaps other uses 4939 in the future). 4940 4941December 19, 2010: 4942 Added "%%" specifier to filesys.fname_* parser. 4943 4944 Fixed a couple of deadlock bugs in the signal handler, though the probability of them having been encountered 4945 during normal Mednafen use is very low. 4946 4947 sigaction() will now be used instead of signal(), if available. 4948 4949 Fixed strerror_r() usage(AGAIN, hopefully corectly this time) on non-glibc platforms. 4950 4951December 18, 2010: 4952 Renamed settings: 4953 nethost -> netplay.host 4954 netport -> netplay.port 4955 netpassword -> netplay.password 4956 netlocalplayers -> netplay.localplayers 4957 netnick -> netplay.nick 4958 netgamekey -> netplay.gamekey 4959 netmerge -> netplay.merge 4960 netsmallfont -> netplay.smallfont 4961 4962 Updated QuickLZ from 1.2.0 to 1.3.1. (1.4.1 seems to have some kind of a performance regression, at least how it's used in Mednafen), 4963 and changed the default value for the "srwcompressor" setting from "minilzo" to "quicklz". 4964 4965December 17, 2010: 4966 Renamed settings: 4967 sounddriver -> sound.driver 4968 sounddevice -> sound.device 4969 soundrate -> sound.rate 4970 soundvol -> sound.volume 4971 soundbufsize -> sound.buffer_time 4972 4973 Added filesys.fname_movie, filesys.fname_state, filesys.fname_sav, and filesys.fname_snap settings. These settings 4974 contain a format string, and through manipulation of this format string, the previous functionality of 4975 "dfmd5", filesys.*_samedir, and "snapname" settings can be obtained. For example, remove the "%M" specifier 4976 to simulate setting the "dfmd5" setting to 0. Available specifiers: 4977 4978 %b - Mednafen base directory (no trailing slash) 4979 %z - Path separator 4980 %d - Loaded file base directory("/games/nintendo/megaman.nes" -> "/games/nintendo") 4981 %f - File base("/games/nintendo/megaman.nes" -> "megaman") 4982 %F - Same as %f, but replaced with emulation module's short name with recognized multi-CD CD sets. 4983 %m - MD5 hash of the currently loaded game. 4984 %M - Empty for first evaluation per full path construction, then filled with the game's 4985 MD5 hash(or the game set's MD5 hash ID for multi-CD CD sets) followed by a period. 4986 %e - Loaded file extension("/games/nintendo/megaman.nes" -> ".nes") 4987 %s - Current emulation module's short name. 4988 %p - Special parameter(usually a number/numeric counter). 4989 %x - Default extension for the file type the path will be used for(extension is WITHOUT the period). 4990 %X - A merging of %p and %x(replaces the last character of %x with %p). 4991 If the constructed path is relative, it will be appended to the Mednafen base directory and value of the 4992 filesys.*_path settings automatically. If the constructed path is absolute, this appending will not occur. 4993 4994 Removed setting dfmd5. 4995 4996December 16, 2010: 4997 Removed the filesys.*_samedir settings, as they're largely unnecessary, can cause file corruption in certain 4998 cases, and generally cause filesystem clutter. 4999 5000 Removed the "snapname" setting(it's now hardcoded-on, effectively), and altered the snapshot naming template to 5001 produce filenames that will be sorted correctly when in a list(IE in a file browser). 5002 5003 NES: Added hashes of alternate VS SMB and VS The Goonies ROM images into the internal VS Unisystem database. 5004 5005 NES: Cleaned up palette-handling code, and updated the VS System palettes. 5006 5007December 15, 2010: 5008 NES: Added rudimentary bus conflict emulation to mapper 3, to fix corrupt graphics in Cybernoid. 5009 5010 Removed the "pce.colormap", "pce_fast.colormap", "nes.cpalette", and "gba.colormap" settings. Custom palettes 5011 will automatically be loaded if they're named "pce.pal", "pce_fast.pal", "nes.pal", and "gba.pal" respectively, 5012 under the "palettes" directory under the Mednafen base directory. All of these systems can now use custom per-game 5013 palettes by name a palette file as <FileBase>.pal or <FileBase>.<MD5 Hash>.pal, IE "Mega Man 4.pal" or 5014 "Mega Man 4.db45eb9413964295adb8d1da961807cc.pal". Using the form that includes the MD5 hash is preferred, to 5015 prevent conflicts between games on different systems with the same filenames, and conflicts with the custom palette 5016 for all games on an emulated system. 5017 5018 Renamed path_snap, path_sav, path_state, path_movie, path_cheat, path_palette, path_firmware to filesys.path_*, 5019 changed the interpretation of the path so that if the path is relative, it is relative to the Mednafen base directory, 5020 and filled in the default values for these settings as the Mednafen default directories("sav", "mcs", "mcm", 5021 "snaps", etc.). 5022 5023 Changed the directory used for custom NES palettes from "gameinfo" to "palettes", since that was the only thing the 5024 directory was being used for. 5025 5026 Changed MDFN_Thread and MDFN_Mutex structs to forward declarations. 5027 5028December 13, 2010: 5029 Fixed a rather insidious bug with the 64-bit little-endian decoding function(bug was due to a misunderstanding of 5030 implicit type promotion rules). This fixes some (potential) issues with MMM playback, and RTC clock corruption 5031 when loading the GameBoy MBC3 mapper's RTC data from a sav file. 5032 5033 Added MasterClock and MasterCycles fields to the MMM format. This change is incompatible with previously-recorded 5034 MMM movies. 5035 5036 Added MasterCycles setting on the remaining systems. 5037 5038December 12, 2010: 5039 PCE: Implemented mid-frame synching and input updating(at this point, it only happens twice per frame, IE only once 5040 "in the middle"), although it can be extended to more points very easily in the future if the need should arise. 5041 This should reduce input latency by up to 8ms in cases not improved by the previous change(below), 5042 and allows "Takeda Shingen" to be playable. Mid-frame sync required a lot of code refactoring and kludging, Mednafen 5043 was definitely not designed nor written with this feature in mind, so it's possible some things may be broken now 5044 when using the PCE module/emulation; for example, rewinding while movie recording is active might corrupt the movie. 5045 Also, mid-frame syncing isn't done while netplay is active, so "Takeda Shingen" will remain unplayable in netplay. 5046 5047 PCE: Altered frame end timing slightly to reduce input lag on some games by 1 frame. 5048 5049 SNES: Reduced input latency by 1 frame(~16.67ms). 5050 5051 If the MEDNAFEN_HOME environment variable is either unset or empty, and the HOME environment variable is unset, 5052 and getuid() and getpwuid() are available, the home directory used in consructing Mednafen's base directory will now be 5053 obtained from the system password file via getpwuid(). 5054 5055 Rewrote most of the speed throttling and frameskip determination code to be cleaner, and made a few minor tweaks 5056 to the algorithms. 5057 5058December 9, 2010: 5059 Being in the input configuration process will now disable all emulated device input during the process, and until 300ms 5060 after it ends. 5061 5062December 8, 2010: 5063 PCE: Rewrote the HES VDC initialization HuC6280 assembly code to work correctly with the new VDC emulation 5064 accuracy improvements. 5065 5066 Fixed a bug that would prevent exiting if physical CD-ROM reading hung, and the exit key was assigned 5067 to a joystick button or a mouse button. 5068 5069 Fixed an old kludge/bug that caused keyboard input latency for emulated devices(IE not command keys) to be 5070 1 frame(16.7 ms usually) higher than it should have been. 5071 5072 PCE: Improved VRAM DMA emulation accuracy, improved wait state emulation accuracy, added kludgy emulation of a 5073 CPU VRAM-access dead zone tied to HSYNC(fixes "Star Breaker" locking up when leaving a town), and improved VDC 5074 horizontal timing register emulation. 5075 5076-- 0.9.15-WIP: -- 5077 5078November 12, 2010: 5079 SNES: Reworked a floating-point compare to work correctly with x87 FPU math on gcc(and probably most 32-bit x86 5080 compilers). TODO: Audit code to find and correct any other instances of similar problematic floating-point code. 5081 5082November 11, 2010: 5083 MasterCycles field of EmulateSpecStruct is now assigned in more emulated systems. 5084 5085November 10, 2010: 5086 Genesis: Converted the "md.region" and "md.reported_region" settings to enum types, to allow for automatic document 5087 generation for the various values for these settings. 5088 5089 Genesis: Fixed various issues that were preventing emulation from working properly on big-endian systems. 5090 5091 SNES: Updated the PowerPC code in libco with "blargg_libco_ppc64-5". 5092 5093November 9, 2010: 5094 VB: Fixed an endian-related bug with joystick input state decoding. 5095 5096 VB: Made the VIP emulation code big-endian-compatible. 5097 5098 VB, PC-FX: Made the V810 core's "fast" mode work on big-endian platforms. 5099 5100 Genesis: Fixed a major problem with illegal instruction handling; executing a long string of illegal instructions 5101 will no longer lock up Mednafen. Thanks to Zombie for pointing out the lockup problem. 5102 5103November 8, 2010: 5104 5105 Fixed(hopefully) OpenGL pixel shader initialization error detection. 5106 5107 Fixed "supereagle" special scaler crashing when the source surface was large. 5108 5109 VB: Added setting "vb.sidebyside.separation", which controls the number of pixels between the L/R view(pixel count is 5110 pre-scaling by xscale(fs)), with a default value of 0. Previously, the effective separation for the sidebyside 5111 was 16, so if you want to replicate the behavior of previous versions, set this setting's value to 16. 5112 5113November 7, 2010: 5114 NGP, SMS, NES: const-ified some const data. 5115 5116 NGP, PC-FX, NES, WonderSwan: Fixed various initialization issues(they're not a problem now, but it's done for future-proofing). 5117 5118 WonderSwan: Fixed internal EEPROM initialization to not persist across game loadings(this doesn't apply to Mednafen... 5119 yet ;)). TODO: Evaluate removing persistence across power events. 5120 5121 MDFND_DestroyMutex() now actually frees the memory for the mutex wrapper. 5122 5123 Fixed a few initialization and deinitialization bugs in cdrom/cdromif.cpp (thanks to Rakashazi for pointing them out) 5124 5125-- 0.9.14-WIP: -- 5126 5127November 6, 2010: 5128 Corrected the last updated dates in the auto-generated documentation files. 5129 5130 VB: Uncommented out important save state code that was commented out for debugging purposes(and was accidentally left 5131 that way). 5132 5133-- 0.9.13-WIP: -- 5134November 5, 2010: 5135 PCE: The timestamp displayed in the debugger is now counted from when a virtual power off->on occurred, rather 5136 than the start of the Mednafen video frame. However, the displayed value wrap when it reaches 2^32 due to limitations 5137 in the debugger code(TODO: fix in the future). 5138 5139 PCE: Fixed default mouse L/R button assignments(they were reversed). (You'll need to delete the Mednafen configuration 5140 file for the new defaults to take effect, or reconfigure the mouse in Mednafen, with the correct L/R button 5141 assignment) 5142 5143 PCE: Fixed a bug that caused the debugger to corrupt Arcade Card state in certain common situations while the debugger 5144 was open or breakpoints were enabled. 5145 5146 PCE, PCE_FAST: Reworked and fixed the ADPCM code to closer match a real system(based on hardware tests). Previously, 5147 ADPCM playback IRQ generation was sooooo wrong. These changes finally fix the broken battle voices in "Langrisser", 5148 yay. 5149 5150October 17, 2010: 5151 Fixed 2xSaI family filters to not crash; the 2xSaI filter source image data is now from a temporary video buffer 5152 created from the original source video buffer, but with padding on all sides to handle 2xSaI's lack of source 5153 video buffer coordinate bounds checking. 5154 5155October 14, 2010: 5156 Re-disabled physical CD unreadable sector testing code, as it causes too long of a delay at startup. A 5157 different solution will need to be found. 5158 5159October 4, 2010: 5160 PCE: Optimized debugger PC and opcode breakpoint testing during emulation. 5161 5162October 3, 2010: 5163 PCE: Fixed CD register reads with side effects when the debugger is open, and changed PCE_InDebug from bool to uint32, 5164 to allow for ++/-- pairs instead of = true, = false, to handle potential recursion. 5165 5166September 30, 2010: 5167 PCE_FAST: Fixed a emulator crash in the case that a game didn't initialize MPRs properly. 5168 5169 PCE_FAST: Made a small optimization to the HuC6280 core. 5170 5171 PCE_FAST: Rewrote a bit of HES playback code so it works at a lower-level, allowing the removal/privatization of some 5172 HuC6280 state setting functions. 5173 5174September 29, 2010: 5175 PCE_FAST: Fixed a reversed-tile issue with BG drawing on big-endian platforms(thanks to Rakashazi for pointing it out). 5176 5177 PCE_FAST: Added 16bpp rendering support. 5178 5179 NES: Added 16bpp rendering support. 5180 5181 Added 16bpp support to MDFN_Surface and MDFN_PixelFormat. However, most internal components in Mednafen currently 5182 can't handle 16bpp, emulation modules included. 5183 5184September 25, 2010: 5185 Altered the text for the "sound" setting to better match what it actually does. 5186 5187September 19, 2010: 5188 The destination blit rectangle in the video output code now has the lowermost bits of the X and Y coordinates cleared, 5189 as a quick kludge to fix potential issues with the VB emulation's "hli" and "vli" video modes. A cleaner 5190 solution may be prudent in the future. 5191 5192 VB: Added setting "vb.liprescale". 5193 5194 Optimized the "hli" video mode drawing code slightly. 5195 5196September 18, 2010: 5197 VB: Added setting "vb.3dreverse". 5198 5199 VB: Renamed "pbarrier" 3dmode to "vli". 5200 5201 VB: Added 3dmode "hli". 5202 5203September 16, 2010: 5204 When -force_module is used with an unknown/invalid system, Mednafen will print an error stating so, rather 5205 than stating that the file format is unrecognized. If the system is recognized, but the system only supports CDs 5206 and the file being loaded is not a CD image, a message will be printed to that effect. 5207 5208September 13, 2010: 5209 PCE_FAST: HDS is now used in calculating the screen viewable area position, fixing the "Final Blaster" intro 5210 sequence. 5211 5212September 12, 2010: 5213 Fixed a significant memory leak in the video output code(the leak would increase every time fullscreen is toggled 5214 while Mednafen is running). 5215 5216 PCE_FAST: Fixed a benign(in Mednafen as it is now) memory leak. 5217 5218 PCE_FAST, PCE: IsSGX variable is now explicitly initialized to 0 correctly. 5219 5220 Updated the AX_CFLAGS_GCC_OPTION autoconf macro. 5221 5222 PCE_FAST: Renamed various identifiers in the HuC6280 emulator code to avoid conflicting with C reserved identifier 5223 conventions. 5224 5225 PCE_FAST: Removed unused VDC debug code. 5226 5227 NES: An error while attempting to open the file specified by setting "nes.cpalette" will no longer cause Mednafen 5228 to crash. 5229 5230 SCSI CD: 5231 Refactoring and code cleanups. 5232 5233 Added various command error condition checks, and corrected various error codes(NEC uses a few 5234 nonstandard ASC values). (INCOMPLETE) 5235 5236 Specific command fixes for PCE CD: 5237 Command 0xD8: If the command is executed with the same address as when it was previously executed, 5238 and the previous execution was < 190ms ago, then the new execution 5239 is ignored(this occurs regardless if the previous command was ignored). This is more 5240 of a kludge than a proper fix, and it is intended to fix the silent CD-DA problem 5241 with "Steam Heart's". 5242 5243 Specific command fixes for PC-FX: 5244 MODE SENSE and MODE SELECT: 5245 Added support for block descriptor(incomplete), and the DBD bit for MODE SENSE. 5246 Added support for all the mode pages present on a PC-FX(though most don't actually do anything 5247 in emulation yet, as I do not know their function or their function is irrelevant at the current 5248 level of CD emulation accuracy). 5249 5250 Command 0x25: Corrected returned data when PMI bit is set. 5251 Command 0x42: Fixed the relative address returned when the address results are expressed as LBA. 5252 Command 0xD8: Proper support for play bit. 5253 Command 0xD9: Improved play mode evaluation, and play mode 0x1 is no longer erroneously 5254 interpreted as loop mode(only 0x4 is). 5255 Command 0xDD: The control/adr field is now returned in the data. 5256 Command 0xDE: Added emulation of returned data mode 0x03(there was a dummy stub before, to get the PhotoCD 5257 player to work). 5258 5259September 11, 2010: 5260 Changed hqxx's sole supported pixel format to match the new OpenGL texture pixel format used(in the future, changing 5261 its hardcoded pixel format based on an #ifdef MSB_FIRST may be warranted). 5262 5263 WonderSwan: Re-enabled(and fixed) debugger's graphics viewer. 5264 5265 PCE_FAST: Reduced fb_height from 256 to 242. 5266 5267September 10, 2010: 5268 If Mednafen is running with an OpenGL implementation of OpenGL >= 1.2, and is on an x86 or x86_64 platform, 5269 it will now upload texture data in GL_BGRA GL_UNSIGNED_INT_8_8_8_8_REV format rather than GL_RGBA GL_UNSIGNED_BYTE. 5270 This may need to be tweaked for older video cards. Would it have killed the OpenGL developers to have 5271 included a means of querying the fastest formats for texture uploading? 5272 5273September 8, 2010: 5274 todo: make sure tblur works right with surface->pitch32 != gameinfo->fb_width and player 5275 5276 Converted MDFNGI pitch(in bytes) to fb_width(in pixels). 5277 5278 Fixes for incorrectly using MDFNGameInfo->fb_width instead of the surface's pitch: 5279 gb 5280 gba 5281 lynx(was hardcoded) 5282 nes 5283 ngp 5284 pce_fast(was hardcoded) 5285 player 5286 wswan 5287 mmrecord.cpp 5288 tblur.cpp 5289 5290 Reduction of fb_width to minimum acceptible for the module(the driver-side can still round up to a power of 2 when 5291 creating the MDFN_Surface, of course): 5292 gb 5293 gba 5294 lynx 5295 ngp 5296 pce_fast(required a bit of work in vdc.cpp to eliminate non-visible-area surface rendering) 5297 vb 5298 wswan 5299 5300 5301September 5, 2010: 5302 PC-FX: Implemented an optimization to the FX VCE layer mixing priority evaluation code, that will also allow further 5303 optimization in the future. 5304 5305September 4, 2010: 5306 NES: Replaced "femms" inline assembly generated when compiling for x86_64 with "emms", as not all x86_64 5307 processors are made by AMD. 5308 5309August 24, 2010: 5310 PC-FX: Track numbers in READ TOC(10) are now returned in hex instead of BCD(fixes BIOS handling of discs 5311 with a large number of tracks; no PC-FX games are like this, but it may be useful for playing audio CDs or audio 5312 portions of PCE CD). The bug was present in 0.8.x, but due to a design decision/bug elsewhere, it didn't 5313 cause the BIOS to be unable to play the CD-DA tracks. 5314 5315August 22, 2010: 5316 Re-enabled raw MMC command usage for reading physical discs(it had been disabled for debugging purposes). 5317 5318 PC-FX: A PhotoCD disc will now automatically be detected as being handled by the PC-FX module. 5319 5320 L-EC correction code is now called external to cdromfile.cpp, and with PC-FX/PCE CD emulation, will generate 5321 a SCSI error if it fails. 5322 5323August 20, 2010: 5324 SNES: Applied a patch from Jonas Quinn to fix a Cx4 emulation bug. 5325 5326 VB: Mednafen will no longer automatically recognize files with the ".bin" extension as Virtual Boy games, 5327 as the extension conflicts with Sega Genesis/Megadrive. If you have any such files, they will need to be renamed 5328 to have an extension of ".vb" or ".vboy". 5329 5330 VB: Files with the extension ".vboy" are now automatically recognized as Virtual Boy games. 5331 5332 VB: Altered timer emulation to fix digital sound and voice playback in "Virtual Bowling". The change has the 5333 possibility of causing regressions with other games, but none were detected in very quick and not thorough testing. 5334 5335August 14, 2010: 5336 Cleaned up git.h slightly. 5337 5338-- 0.9.12-WIP: -- 5339August 13, 2010: 5340 Updated internal copy of "libmpcdec" library from 1.2.5 to 1.2.6. 5341 5342 Updated internal copy of "trio" library to 1.14(I believe the previous version was a pull from CVS between the 1.10 5343 and 1.11 releases). 5344 5345August 12, 2010: 5346 PCE_FAST: Added setting "pce.correct_aspect", default value of 1. When disabled(value of 0), no aspect correction 5347 will take place(other than in the 10MHz dot clock mode to halve its width), and overscan color will be used to 5348 fill in the empty space when in 5MHz/10MHz dot clock modes. 5349 5350 PCE_FAST: Corrected aspect ratio when playing HES files. 5351 5352 PC-FX, VB: Fixed CPU operand order for FPU subops in the disassembler. 5353 5354 VB: Hooked up more debugger functionality. 5355 5356 PC-FX, VB: Fixed V810 read/write breakpoints in "fast" V810 emulation mode. 5357 5358August 9, 2010: 5359 Mednafen's now compiled with -Wempty-body and -Wignored-qualifiers. 5360 5361 NES: Removed a typoed semicolon in sound.cpp. 5362 5363August 8, 2010: 5364 Added "math.h" header order inclusion check to "types.h", and fixed a few instances of incorrect #include order. 5365 5366 Fixed C68K code generator dependency when building on/for a platform that has an extension for executables(AKA MS Windows). 5367 5368 Fixed a structure initialization problem in the input setting generation code that could cause crashing under 5369 certain circumstances. 5370 5371 Fixed Makefile.am to actually link against SDL(somehow it was working anyway on Linux, probably through 5372 an indirect linkage through SDL_net). 5373 5374August 5, 2010: 5375 Debugger settings *.debugger.disfontsize and *.debugger.memcharenc are now automatically generated, the latter based on the system's DebuggerInfoStruct. 5376 5377 Renamed *.debugger.memcharset settings to *.debugger.memcharenc 5378 5379 PC-FX: Added settings "pcfx.input.port1.multitap" and "pcfx.input.port2.multitap". These settings shouldn't be enabled by average users. 5380 5381August 4, 2010: 5382 PC-FX: Added RAINBOW buffer data to save states. 5383 5384 Added a variable to save states whose absence was breaking save states made in the middle of a CD-ROM transfer. 5385 5386 Switched to using the internal copy of Tremor to decode Ogg Vorbis files during CD emulation preferentially over libsndfile, as libsndfile has 5387 an unacceptably slow seek implementation for Ogg Vorbis. 5388 5389August 3, 2010: 5390 PC-FX: Added emulation of the 2 gamepad switches. 5391 5392 Fixed a bug that caused a crash if input type of "none" was selected for a virtual input port. 5393 5394 Input device state is now saved in save states(missing a call before). 5395 5396 Fixed mouse emulation(previously, cursor movement was totally broken). 5397 5398 Disabled various debug printf statements. 5399 5400 Removed "bios.fastboot" setting and the HuEXE loading code(both of which have been broken for a while). The fastboot code likely 5401 won't return(it'd be better as an external patch to the BIOS ROM image), and the HuEXE loading may return when PIO emulation is added(requiring 5402 the use of the PC-FXGA BIOS most likely). 5403 5404August 2, 2010: 5405 PC-FX: Fixed the horizontal position of the VDC layers vs KING BG and RAINBOW layers when VDC is in 7MHz dot clock mode. 5406 5407 PC-FX: Disabled a few unknown memory address read/write debug printf()s. 5408 5409August 1, 2010: 5410 PC-FX: Writing 0 to D0 of KING register 0x40 while a RAINBOW transfer is in process will now abort it. Fixes background flickering in "Tonari 5411 no Princess Rolfee". 5412 5413 PC-FX, VB: Values written to system registers EIPSW, FEPSW, EIPC, and FEPC by instruction "ldsr" are now masked properly. 5414 5415 PC-FX: Added emulation of the TIMER TIREQ bit. 5416 5417 PC-FX: Interrupt controller level/priority register writes are now ignored unless all 7 bits in the interrupt mask register are set. This matches 5418 tests done on a real system(done by writing the priority registers, and then reading back the values; wouldn't catch the case of there being shadow 5419 registers, however, given that this ignoring behavior is documented in the hardware documentation, this seems highly unlikely). This *finally* fixes 5420 the PC-FX BIOS PhotoCD player! 5421 5422 PC-FX: Fixed interrupt controller register value masks. 5423 5424July 31, 2010: 5425 PCE: Removed a (mostly benign) debug addition left in the extended SF2 mapper size calculation code. 5426 5427July 30, 2010: 5428 NES: Removed/Disabled some debug(not debugger :b) code. 5429 5430 NES: Fixed the FDS written-disk shadow copy code. Previously, the FDS loading code was updating the MD5 hash improperly, causing 5431 the filename of the shadow copy to be different when it was written than it was when a shadow copy was to be opened. 5432 5433 NES: Altered FDS IRQ emulation to fix "Druid". 5434 5435 NES: Fixed a bug that caused the entire file pathname to be evaluated when determining system type, now only the filename is examined. 5436 5437 NES: Added strings "(Europe)", "(Germany)", "(USA)", and "(Japan)" to the filename scanning code for system determination. 5438 5439 NES: Prettified the NES filter.cpp debug printf()s a little. 5440 5441 PCE: Fixed HES player screen dimensions. 5442 5443 PCE: Removed debug printf on bad opcode execution. 5444 5445 PCE: HES playback code now initializes the VDC horizontal and vertical timing registers before calling the song initialization routine. Interestingly, 5446 this seems to have broken the Cosmic Fantasy IV HES, but that it even sort-of worked in the first place was probably a fluke given the quality of the rip... 5447 5448 PCE: Altered HuC6270 reset code to reset the horizontal and vertical timing registers to 0(which is closer to the real system than setting them to 0xFF, but 5449 real reset values are unknown, though they might just be 0). 5450 5451 PCE: When in LFO(FM) mode, excessive playback frequency for channel 0(carrier) is handled more gracefully(but still not "correct", 5452 as it would be too CPU intensive). 5453 5454 PCE: Rolled the LFO counter into the normal channel counter. On a real system, the LFO counter(pre-divider) and the normal channel counter may be 5455 resetable independently, however, rolling them into one shouldn't cause any audible differences and simplifies the code(and fixes a bug due to how 5456 it was implemented before in that if the modulator channel's volume was in the audible range, the waveform would have been distorted for larger LFO pre-divider 5457 reload values). 5458 5459July 25, 2010: 5460 Fixed Ogg Vorbis playback when libsndfile doesn't support it(I'd accidentally inverted the ov_open() success test during the change to AudioReader()). 5461 5462 PCE: PSG channel numbering in the debugger's memory editor is now from 0 instead of 1. 5463 5464July 24, 2010: 5465 Fixed libsndfile linkage with mingw32 target(it was broken when we added --with(out)-libsndfile configure option). 5466 5467July 22, 2010: 5468 PCE: The 2MiB of arcade card RAM is now defined as an array that's allocated along with the ArcadeCard object, rather than a pointer that's manually 5469 allocated off the heap. 5470 5471 PCE: Added support for HES files that load data into banks 0x80-0x87. 5472 5473 PCE: Fixed HES controls(song increment/decrement) to not lose responsiveness if the frame is being skipped. 5474 5475July 21, 2010: 5476 PCE: Added a setting to select the PSG revision, "pce.psgrevision". 5477 5478 PCE, PCE_FAST, PC-FX: Added revision selection functionality(only supporting HuC6280 and HuC6280A revisions currently) to the PSG emulation code, and 5479 altered the volume table slightly to mimic the PCE's actual volume reduction limits. Also, hooked up the PSG register setting code for the debugger. 5480 5481July 17, 2010: 5482 PCE: Fixed inconsistencies in how an emulated "power toggle" affects timestamps, correcting a failed assert in the CD-ROM emulation code if the user 5483 tries to reset/power in the debugger under certain conditions. (TODO: Make similar fixes to PC-FX emulation code) 5484 5485 PCE, PCE_FAST, PC-FX: Revamped and refactored PCE PSG core code to implement new details obtained through tests on a real SuperGrafx(HuC6280A) 5486 and on a PC Engine(HuC6280). However, the emulation is closer to the HuC6280A revision. It may be necessary in the future to run tests on a PC-FX 5487 to determine what differences, if any, are in its PSG core vs the HuC6280A's sound core. 5488 5489July 10, 2010: 5490 PC-FX, PCE: SCSI CD-ROM emulation code cleanup and minor tweaks. 5491 5492July 7, 2010: 5493 PCE: Improved mouse emulation greatly; previously, emulation of two buttons was missing. The two newly-emulated buttons "Select" and "Run" are mapped to 5494 keyboard keys "Tab" and "Enter" by default. However, the L/R mapping may be backwards, and there are still problems with using the mouse with at least 5495 one game("Lemmings"). 5496 5497July 5, 2010: 5498 Fixed a temporal blur code bug that was causing an unblurred section of the screen on PCE games. 5499 5500 Renamed the <system>.vblur* settings to <system>.tblur* (for temporal blur) to reduce confusion. 5501 5502July 3, 2010: 5503 PCE: Adjusted DMA timing again to fix an extremely long delay at the beginning of Takeda Shingen(TODO: make sure the delay doesn't exist on a real PCE). 5504 5505 The core CD reading functions now always put CD-DA data in the buffer in little-endian form. 5506 5507 Separated and refactored the audio format decoding code out of cdromfile.cpp into audioreader.cpp 5508 5509July 2, 2010: 5510 PCE_FAST: Scrapped the old arcade card code in favor of the modularized code from the "pce" emulation module. 5511 5512 PCE: Moved arcade_card.* to hw_misc/arcade_card/arcade_card.*, and made its save state section names more verbose. 5513 5514July 1, 2010: 5515 PCE_FAST: Corrected the aspect ratio. 5516 5517 PCE_FAST: Scrapped the old PSG code in favor of the new modularized PSG code already being used by the regular "pce" module. 5518 5519June 27, 2010: 5520 PCE: Fixed PRAM poking in the debugger to not allow unused bits to be set. 5521 5522June 26, 2010: 5523 GBA: Including a line containing "rtc" in the save-game "type" file(refer to the GBA module documentation) will now enable realtime clock emulation for 5524 that game. 5525 5526June 22, 2010: 5527 SNES: Hooked up backup memory loading. 5528 5529 Fixed the "autosave" option to work instead of causing a crash on exit. 5530 5531June 21, 2010: 5532 The IPS patch loading code now checks for file read errors, and is no longer tolerant of IPS patches that end without an "EOF" patch/chunk header. 5533 5534 Removed support for automatically patching with compressed IPS patches, as it causes a problem with at least one patch that has semi-hidden 5535 PKZIP-format data in it that was confusing the file loader. 5536 5537June 20, 2010: 5538 SNES: Hooked up multitap and mouse input emulation code(you'll need to manually enable multitap by setting "snes.input.port2.multitap" to "1" 5539 because it can cause problems if it's enabled by default. 5540 5541 SNES: Updated to bsnes v0.59(for SA-1 and SuperFX save state support). 5542 5543June 17, 2010: 5544 NES: Added cart WRAM to mapper 18 emulation to fix "Jajamaru Gekimaden". 5545 5546 PCE: Altered VRAM-to-VRAM DMA operation to fix Ankoku Densetsu/Legendary Axe II(and without breaking Langrisser), though stage 5 in LAII/AD may still 5547 randomly have graphics corruption in certain conditions. 5548 5549June 11, 2010: 5550 PC-FX: Fixed a bug that caused only half of the VDC BG tiles to be displayed in the debugger's graphics viewer. 5551 5552 Fixed segfault on 0-entry setting enum lists. 5553 5554 Wrote some simple PHP scripts to automatically generate portions of the individual emulation module documentation based on templates and the 5555 settings definition file produced by -dump_settings_def. 5556 5557 Added a command-line option "-dump_settings_def", which will dump definition data for all possible settings in Mednafen. 5558 5559June 8, 2010: 5560 PCE: Adjusted VDC VDW start timing to fix vibrating screen in World Court Tennis. 5561 5562June 7, 2010: 5563 PCE: Fixed "pce.h_overscan" setting to actually work right. 5564 5565 PCE: Fixed screenshot width. 5566 5567June 6, 2010: 5568 Finally got rid of the old FSettings global, moving SndRate to SoundRate of EmulateSpecStruct. 5569 5570 Video frames are now recorded before temporal blur effect is applied(rationale: external movie encoders will have a wider variety of filters, whose 5571 quality and parameters are not constrained by being able to run in realtime). 5572 5573June 5, 2010: 5574 CDPLAY: Fixed a crash if playback when past the last audio track, and the last audio track was not the last track of the disc. 5575 5576 PCE: Added more missing data to save states. 5577 5578June 2, 2010 5579 PCE: Altered vblank IRQ start timing to fix occasional massively-glitchy frames in Street Fighter II. 5580 5581 PCE: Fixed a bug that could cause a crash(due to an incorrect parameter to memcpy()) if trying to load a large ROM image(>= 2MiB) that was 5582 not padded to the Street Fighter II mapper size. 5583 5584 PCE: Fixed missing intialization of many VDC variables on reset. 5585 5586 PCE: Added support for a hypothetical extended Street Fighter II mapper. 5587 5588June 1, 2010: 5589 Revamped CD-ROM system determination code. 5590 5591 PCE: Altered VDC BXR/BYR latch timing again to fix Seiya Monogatari, and probably breaking another game in exchange though. :/ 5592 5593 PC-FX: Fixed a problem caused by V810 optimization changes that broke CD ROM emulation in save states. 5594 5595 Fixed loading of game cheats when loading a CD game(PCE CD, PC-FX). 5596 5597May 31, 2010: 5598 PCE: Added a few missing variables to save states. 5599 5600May 29, 2010: 5601 5602 Fixed a bug that could cause crashing on invalid save states(or with a state variable name >= 128 chars in length). 5603 5604 NES: Added a few missing sound variables to save states, and added a missing CPU state variable to save states that could cause netplay 5605 desync(unlikely, but still possible). 5606 5607 PCE_FAST: Fixed broken frameskip behavior in regards to sprite overflow IRQs(which caused netplay desyncs). 5608 5609 PCE_FAST: Added missing variables to save states(whose absence caused netplay desyncs). 5610 5611May 26, 2010: 5612 Made an optimization to the V810 emulation code in order to improve performance on RISC CPUs(TODO: Make sure this didn't break anything). 5613 5614 Fixed compiling when the configure script was passed "--disable-debugger". 5615 5616May 25, 2010: 5617 Added support for compiling without libcdio and without libsndfile, by passing --without-libcdio and --without-libsndfile to the configure script, 5618 respectively. Compiling without either is not recommended for general use of course, but may be of use to porters(especially compiling without libcdio). 5619 5620May 23, 2010: 5621 Lynx: Fixed a few pieces of poorly-formed(and possibly undefined) code in the UART emulation code. 5622 5623 Fixed an incorrect object creation bug in cdrom/pcecd.cpp 5624 5625 SMS: Fixed a couple of strict aliasing violations. 5626 5627 GBA: Fixed code causing gcc to issue warnings(listed here in the ChangeLog in the case I broke something, I'll know what did it) in the BIOS emulation code. 5628 5629May 22, 2010: 5630 Moved MDFN_Rect typedef from types.h to video.h. 5631 5632 Removed an extraneous semicolon after an if statement in the V810 save state code. 5633 5634 Fixed a few code constructs causing compiler warnings. 5635 5636 Added various macros(to force no inlining, force arbitrary alignment, etc.) to allow for an easier time getting the code to compile on 5637 non-gcc-compatible compilers. 5638 5639May 21, 2010: 5640 NES: Fixed a bug that could cause Mednafen to crash if the game crashed or intentionally executed off the end of the 16-bit address space without an immediate 5641 absolute branch afterwards. 5642 5643 VB: Hooked up settings "vb.disable_parallax", "vb.default_color", "vb.anaglyph.preset", "vb.anaglyph.lcolor", "vb.anaglyph.rcolor", and "vb.input.instant_read_hack" 5644 to a SettingChanged() notification function so that those settings can be changed during emulation runtime. "vb.cpu_emulation" and "vb.3dmode" 5645 are not hooked up, and can not be due to current Mednafen architectural limitations(and even if those weren't present, "vb.cpu_emulation" would still 5646 require a virtual power toggle). 5647 5648May 15, 2010: 5649 Began work on expanding the information in the setting definition structures, so that the documentation on settings can eventually be mostly auto-generated. 5650 5651 Altered the help screen accessible via command-line option "-help" to not display any settings. There are far too many settings to list all at once. 5652 Perhaps we'll add additional command-line options in the future to list settings according to a simple filter. 5653 5654May 14, 2010: 5655 PC-FX: Added setting "pcfx.disable_bram". Only set this to 1 if you know what you're doing, as it's enabling an illegal/broken state. 5656 5657 PCE: Added setting "pce.disable_bram_cd" and "pce.disable_bram_hucard". Only set "pce.disable_bram_cd" to 1 if you know what you're doing, as it's enabling 5658 an illegal/broken state. pce.disable_bram_hucard is more useful, as it will make HuCard game run as if they're on a plain-Jane PC Engine/TurboGrafx without 5659 CD-style backup memory. 5660 5661May 13, 2010: 5662 NES: Moved read/write handler installation from the Power function to the Init function for input emulation, PPU emulation, and VS Unisystem emulation. 5663 5664 NES: Corrected the power-up state(values) of internal RAM. 5665 5666 NES: Fixed mapper 99 emulation(hopefully, I'm unable to test it currently). 5667 5668 Fixed #include order(for config.h, basically) in many files. 5669 5670May 7, 2010: 5671 Added a new fullscreen stretch mode that preserves the aspect ratio(at least in the same way that keeping xscalefs == yscalefs does), courtesy of donb04. 5672 5673May 6, 2010: 5674 NES: Fixed PPU rendering code to use the real pitch of the output surface, rather than the requested pitch as specified in the MDFNGameInfo struct. 5675 This should fix garbled video with "overlay" vdriver in some circumstances. 5676 5677 NES: Fixed clear color during PPU startup/reset, such that the screen will no longer be briefly green after a reset using the "overlay" vdriver. 5678 5679 NES: Added a (slow) kludge so that the output image is not totally wrong when NTSC blitter is enabled while using the "overlay" vdriver. 5680 5681April 30, 2010: 5682 Altered the strerror_r() implementation detection preprocessor code to hopefully work correctly on non-GNU platforms. 5683 5684April 29, 2010: 5685 GBA: Fixed a small bug that totally broke GSF loading. 5686 5687 PCE_FAST: Added padding to memory mapped into the HuC6280 virtual address space to avoid potential emulator crashes if a game crashes. 5688 5689 VB: Implemented more of the debugger. 5690 5691April 27, 2010: 5692 Added 2xSaI, Super 2xSai, and Super Eagle scaling filters courtesy of a code submission from "donb04". 5693 5694 Fixed fatal bugs in the IPS patching code(the bugs were introduced from the refactoring of the file loading code). 5695 5696 Genesis: Removed various debug calls to exit() so that games crashing should no longer cause Mednafen to crash/exit. 5697 5698 Genesis: Fixed interlaced mode to not be totally broken. 5699 5700April 23, 2010: 5701 VB: Fixed brightness calculation bug that resulted in very dark images instead of completely black images. 5702 5703April 12, 2010: 5704 SMS: Encapsulated in a namespace. 5705 5706 SMS: Added missing state to save states to fix netplay and movie desynchs. 5707 5708April 11, 2010: 5709 VB: Null-terminated the anaglyph preset list. 5710 5711April 11, 2010: 5712 VB: Changed nominal width in pbarrier 3dmode to 768. 5713 5714 Removed stale build files. 5715 5716April 7, 2010: 5717 Removed unused PulseAudio option from configure.ac. 5718 5719 Genesis: Encapsulated more code in a namespace. 5720 5721April 6, 2010: 5722 PCE_FAST: Changed "inc" instructions to the equivalent "add" forms in inline assembly for better performance. 5723 5724April 5, 2010: 5725 Replaced MDFN_FastU32MemsetM8() with code that doesn't violate strict aliasing(at least when an array with 32-bit elements is passed...which 5726 is not exactly the case in every place it's called), and with inline assembly for x86 and x86_64. 5727 5728April 4, 2010: 5729 VB: Fixed graphics output when "vdriver" is set to "overlay", and "vb.3dmode" is set to "anaglyph". 5730 5731 Fixed command-line argument "-force_module" handling. 5732 5733 PC-FX: Renamed setting "pcfx.adpcm.restrict_range" to "pcfx.adpcm.emulate_buggy_codec", since it now does more than effectively restrict the range, 5734 thanks to David Michel's analysis of an official PC-FX ADPCM encoder. 5735 5736April 3, 2010: 5737 Settings are now sorted before being saved to disk. 5738 5739 Invalid/Unknown settings are now saved back to the configuration file on exit rather than being discarded. 5740 5741 PCE: Fixed input port definitions so that Tsushin Keyboard can only be enabled on input port 1(which reduces the number of input mapping settings 5742 automatically generated by about 400). 5743 5744 PCE: Multitap emulation is now automatically disabled when Tsushin Keyboard is selected on input port 1(TODO: document this fact). 5745 5746 NES: Fixed a few memory leaks in filter.cpp. 5747 5748March 30, 2010: 5749 VB: Added a hack, enabled by default, that will return the current pad state when reading from SDR, rather than the latched state, to reduce latency 5750 by 20milliseconds in some games. Perhaps remove this option when everyone has 240Hz monitors and we don't have much emulator and PC-caused latency. ;) 5751 5752 VB: Fixed input automatic reading code to read 16 bits, not 32. Stupid typos. 5753 5754 VB: Changed VB_SetEvent() to take the timestamp of the next event, rather than the number of cycles until the next event. The input code was erroneously 5755 calling it with a timestamp before this change, so this change should fix potential input lag issues. 5756 5757March 29, 2010: 5758 Factored some cheat management function calls out of individual emulation module code. 5759 5760March 26, 2010: 5761 Added support for "enum" setting type. 5762 5763 Added support for recognizing integer settings expressed as hexadecimal, with a 0x prefix. 5764 5765March 19, 2010: 5766 PCE: Added (untested) emulation of Arcade Card register 0x1AE5, based on information from FluBBa. 5767 5768 PC-FX, VB: Fixed "DIV" and "DIVU" instruction emulation when the destination register is "r30". 5769 5770March 18, 2010: 5771 VB: Began adding Virtual Boy emulation. 5772 5773March 17, 2010(FIXME/TODO these changelogs): 5774 Reorganized sufficiently-abstracted chip hardware emulation into directories hw_cpu, hw_sound, and hw_video. 5775 5776 PC-FX: Fixed V810system register "PIR" value. 5777 5778 5779March 16, 2010: 5780 PC-FX: Scrapped the old PC-FX-specific VDC code, in favor of the new abstracted VDC code originally written for the new more accurate 5781 PC Engine emulation. 5782 5783 Removed KING KRAM mode masks(they were pretty much disabled, anyway, and only served to bloat the code). 5784 5785 Moved the KRAM arrays to the end of the king_t struct, so that commonly-used variables don't require 1MB+ offsets. 5786 5787 Added page setting cache pointers to speed up rainbow and DMA operations slightly. 5788 5789 The V810 event handler and memory+IO read/write functions are now accessed via pointers(small speed penalty, unfortunately). 5790 5791 Minor V810 optimizations. 5792 5793 FINALLY fixed the ADPCM decoding algorithm for the most part(I'm still unsure about loss of precision in interpolation mode, though), 5794 removing that ugly hack that ran a DC-bias removal filter on the ADPCM predictors themselves. However, it turns out PC-FX games 5795 are somewhat glitchy, so the following settings have been added(implemented as hacks that can improve sound quality over that 5796 of an actual PC-FX): 5797 pcfx.adpcm.restrict_range (Default: Disabled) 5798 Hack that restrict ADPCM predictor to 50% normal range. Can improve sound in some games whose ADPCM was encoded 5799 improperly(for example, in Miraculum FMV), but will make sound worse in other games(for example, Nirgends). 5800 5801 pcfx.adpcm.suppress_channel_reset_clicks (Default: Enabled) 5802 Hack to suppress clicks caused by forced channel resets. This will MURDER those nasty clicks that occur 5803 when games reset the ADPCM predictor values when they are off-center. It shouldn't harm anything(except in 5804 pathological cases, and even then, only minimally), thus it is enabled by default. However, people developing 5805 new code for the PC-FX may wish to disable it for testing their programs. 5806 5807 5808March 7, 2010: 5809 PC-FX, PCE CD: Fixed SCSI commands 0xD8 and 0xD9 to work properly when passed a track value of last_track + 1(leadout in this cae). 5810 5811 PC-FX: V810 event handling revamp. 5812 5813March 5, 2010: 5814 PC-FX: Added untested V810 bitstring search instructions. 5815 5816 PC-FX: Fixed the FPU precision degradation flag when an overflow exception occurred(it was never being set, even in cases where it should have). 5817 5818 PC-FX: Fixed CY and S flags when an FPU overflow exception occurred(they were erroneously being set in EIPSW, due to V810_Exp() being 5819 called before SetFlag()). 5820 5821March 4, 2010: 5822 PC-FX: The result of an FPU operation that overflows is now written to the output register(instead of discarded). Additionally, to get the correct 5823 value on overflows required hacking the SoftFloat code to "wrap" the exponent on overflows, instead of transforming the value into an infinity. 5824 5825March 3, 2010: 5826 PC-FX: Fixed the value returned on reads from the "PIR" V810 system register. 5827 5828 PC-FX: Fixed the exception generated when an invalid FP instruction is executed. 5829 5830 PC-FX: Scrapped most of the old V810 FPU emulation code, and switched from glibc's FPU emulation code to using "SoftFloat". SoftFloat has a well-defined 5831 interface(even if it does pollute the namespace with globals :b), documentation, and has a license that will allow the V810 code to eventually be 5832 backported to RealityBoy. The new V810 emulation code also has much more accurate FPU flag calculation and exception handling. 5833 5834February 27, 2010: 5835 PC-FX: Fixed TRNC.SW and CVT.SW to set the FIV flag instead of the FRO flag in the event the result is too large to fit in an integer 5836 register. 5837 5838 PC-FX: Fixed unused variable warnings in the V810 emulator. 5839 5840 PC-FX: Fixed lastop variable in V810 emulation code after a bitstring instruction is executed. Fixed bitstring handling so that the emulator 5841 won't malfunction if an unhandled/illegal bitstring instruction is executed. 5842 5843 5844February 15, 2010: 5845 PCE: Reworked HES playback code to be lower-level. 5846 5847 PCE_FAST: Copied more CPU state to local variables in the execution loop. 5848 5849 PCE_FAST: Added a "Page1" pointer that ZP and stack accessess now go through, instead of directly to RAM(for the case the game changes 5850 what RAM is mapped into $2000-$3FFF). Note that this doesn't have any write protection mechanism, so if a game maps in ROM and then writes to ZP 5851 or stack, the ROM data will be trashed. FIXME. 5852 5853February 10, 2010: 5854 PCE: Added VCE and VPC registers to the debugger. 5855 5856February 8, 2010: 5857 PCE_FAST: Optimized the SuperGrafx VPC mixing code a bit. 5858 5859February 5, 2010: 5860 PCE_FAST: Refactored the HuC6280 cycle counting code to reduce CPU usage, and made a simple event system to reduce CPU usage further by 5861 factoring timer updates out of the per-instruction execution loop. 5862 5863 PCE_FAST: Increased the maximum overclock value accepted to "100", for testing purposes. TODO: Decrease this to a sane value 5864 (or not, if 100 will work correctly even with PCE CD emulation) for 0.9.0 final. 5865 5866January 27, 2010: 5867 PCE: Removed a bit of preprocessor abuse in the HuC6280 CPU core, and altered the HuC6280 CPU core emulator to not have dependencies on the main PC Engine 5868 emulation code. 5869 5870 PCE: Fixed CPU reset while in step mode(and a few other related problems) by altering the semantics of the debugger step mode with a pending IRQ. 5871 (TODO: This needs to be documented in detail later when my thoughts are more collected) 5872 5873January 25, 2010: 5874 Fixed a bug that would cause the emulator to crash if any opcode breakpoints triggered when the debugger screen was disabled and no other 5875 breakpoints were active. 5876 5877January 24, 2010: 5878 PCE: Encapsulated HuC6280 emulation in a class, and fixed(mostly) the debugger-related code. 5879 5880January 22, 2010: 5881 5882 Changed save state format to save variable/array names somewhat like PASCAL strings in the file(maximum 255 bytes per name), instead of a fixed-width 5883 field. 5884 5885 On save state loading, each of the section definition arrays are now parsed and copied into a std::map, before the data in each section is 5886 loaded, changing variable name search algorithmic complexity in the actual loading code from O(n^2) to O(log n)(ignoring any overhead that loading 5887 into the std::map incurs). 5888 5889January 20, 2010: 5890 5891 Fixed a couple of remotely-exploitable(if connected to a malicious server) stack manipulation bugs in the network play code. 5892 5893January 18, 2010: 5894 5895 PCE: Removed settings "pce.ocmultiplier" and "pce.cdspeed", as they break games and cause code obfuscation(especially the overclocking option). 5896 They will still be available in the PCE_FAST module, though(with no plans to remove them from it). 5897 5898 PCE: Fixed the SF2 bank mask value to prevent invalid memory accesses. 5899 5900 PCE: Altered multitap emulation slightly to fix input in "Strip Fighter". 5901 5902 PCE: Fixed a bug that was causing CPU cycles to be lost as far as the VCE is concerned due to failing to synchronize the VCE emulation before 5903 the timestamp was reset. 5904 5905 PCE: Fixed a similar bug with lost cycles in timer emulation. (TODO: Maybe refactor the forced synchronization code so that it's all in one 5906 spot instead of scattered about). 5907 5908 PCE: Reverted VDC wait states to multiples of the 7MHz CPU clock instead of the 21MHz master clock, as after thinking about it more, I highly 5909 doubt the wait states are done with 21MHz granularity. 5910 5911January 17, 2010: 5912 5913 PCE: Altered VRAM DMA so that it will only run outside of VDW(or inside if in burst mode), and only when SAT DMA is not in progress. Fixes 5914 status bar glitches in Langrisser. 5915 5916 PCE: Removed VRAM DMA running shadow variables to fix "Fushigi no Yume no Alice"(setting SOUR to the value of DMA_SOUR, LENR to the value of DMA_LENR, etc. 5917 works too, but I prefer the solution that uses the least number of extra registers/variables; to see which way is correct, though, we would 5918 need to try to write LENR/SOUR/DESR while VRAM DMA is in progress on a real PC Engine). 5919 5920 PCE: Adjusted horizontal line timing slightly to fix a broken scanline in Aoi Blink. 5921 5922 PCE: Removed various debug print statements. 5923 5924 PCE: Dot clock mode changes will now reset the VCE's clock divider. This is done, in combination with 5925 VDC wait states being in 21MHz master cycles, to synchronize the VDC with the CPU when in 7MHz dot clock(and not possibly be in an unsynchronized state 5926 dependent on when the dot clock change occurred). This may not be what happens on the real system, but it *shouldn't* hurt anything(commercial 5927 games at least), and it should make it easier to get scanline timing right for emulating raster effects without glitches when in 7MHz dot clock. 5928 5929 PCE: VDC wait states are now done in terms of 21MHz master cycles(TODO: confirm this is how it is on a real PCE or not). 5930 5931January 16, 2010: 5932 5933 PCE: Added a lot of missing VDC variables to save states. 5934 5935 PCE: Adjusted horizontal line timing slightly to fix a jittery problem with Shin Megami Tensei. 5936 5937January 15, 2010: 5938 5939 PCE: Fixed arcade card state loading(it wasn't saving and loading the ACRAMUsed variable, causing the actual RAM contents to not be loaded 5940 unless the arcade card RAM was written to before the state was loaded). 5941 5942 PCE: Fixed the end of VRAM DMA code to actually commit any pending reads/writes(fixes an assert() failure in Crest of Wolf). 5943 5944January 14, 2010: 5945 PCE: Added a semi-hack to fix VRAM and screen corruption in Asuka 120%'s split-resolution screen. 5946 5947January 10, 2010: 5948 5949 PCE: Mostly figured out the Tsushin Keyboard layout, and mapped the best keys on a standard western "Windows key"-style keyboard I could think of 5950 to the emulated keyboard. It turns out the keyboard is very similar to later(?) PC-88 keyboards(I used source code from "M88 - PC8801 Series Emulator" 5951 as a guide to some of the more exotic keys I was having trouble with). 5952 5953January 9, 2010: 5954 5955 PCE_FAST: Fixed CD BIOS loader to look in the "firmware" directory with non-absolute paths. 5956 5957 PCE_FAST: Changed the default setting for "pce_fast.cdbios" from a warning string to "syscard3.pce". 5958 5959 PCE_FAST: Fixed CD emulation crash. 5960 5961January 8, 2010: 5962 5963 Added very basic support for threading functions on the driver side(which right now are just basic wrappers around SDL's threading support). This 5964 was done to get the SDL dependency out of the new multi-threaded CD-ROM reading code. 5965 5966January 7, 2010: 5967 5968 PCE: Fixed graphics rendering to use the actual pitch of the MDFN_Surface, instead of the hard-coded requested pitch/framebuffer width in 5969 EmulatedPCE. 5970 5971 Fixed a compilation problem with MINGW in src/cdrom/lec.h 5972 5973 SNES, MMPlay, PCE_FAST: Fixed sound emulation to use driver-side supplied buffer. 5974 5975 PCE, PC-FX: lastts is now initialized in the PCE_PSG constructor. 5976 5977 WonderSwan: EEPROM is now initialized to 0 on startup(it wasn't being initialized at all before). 5978 5979 Fixed a bug in the overlay blitting code that was causing graphics corruption on some PCE games(it was essentially assuming the source width was always 5980 a multiple of 2). This bug made apparent another bug(reading beyond the source rect width, and possibly beyond the buffer in the worst-case. FIXME.). 5981 5982 Overloaded the Open() method of the MDFNFILE class to allow for passing a "std::string" type for the path argument. 5983 5984 PCE: Fixed the base path used in CD BIOS loading. 5985 5986 PCE: Fixed loading of CD BIOS ROM images with 512-byte headers(broken in the HuCLoadCD->HuCLoad merge). 5987 5988 SNES: Fixed compilation with (at least old) mingw32. byuu will include the fix in future bsnes. 5989 5990 Fixed link order of libintl and libiconv. 5991 5992 Fixed the include dir for config.h in intl/Makefile.in 5993 5994January 6, 2010: 5995 Moved the "<sysname>.forcemono" setting functionality out of individual emulator modules, into the core Mednafen code. The new way will be slightly 5996 less efficient, but only when the user changes the setting from the default of 0, and most users PROBABLY won't do this. The benefit is simplification 5997 of sound emulation in the emulation modules. 5998 (This definitely breaks/changes the music format player's waveform visualization, which we might want to fix in the future) 5999 6000 PCE: Merged HuCLoadCD() into HuCLoad(). 6001 6002 PCE, PC-FX: Abstracted the core PCE PSG code in a class. The PCE and PC-FX PSG emulation now use this class(but not pce_fast, at least not yet...). 6003 6004 PCE: Fixed CD sound emulation(broken in the PCE PSG refactoring). 6005 6006 PCE: Stuffed arcade card emulation into a class. 6007 6008 SMS: Fixed YM2413 detection(though I'm not sure it's 100% correct, games that can use it actually do use it now). 6009 6010 SMS: Fixed an output overflow bug in the YM2413 emulation code. 6011 6012 SNES: 15-bit SNES RGB to the host system video format now uses a 32768-entry uint32 LUT, instead of calling the output surface's MakeColor() method 6013 for every pixel(which was especially slow in YCbCr mode). 6014 6015 SNES: Updated to BSNES v058. 6016 6017January 5, 2010: 6018 Added a "slow-forwarding" feature. It's like FAST forwarding, but you go SLOWER. Which kind of goes without saying, but I felt like saying it anyway. 6019 It is controlled via the new settings "sftoggle" and "sfspeed", which behave similarly to "fftoggle" and "ffspeed", except that "sfspeed" can be 6020 set to < 1 values(the actual range is 0.25 <= value <= 1). Fast-forwarding is activated by the backslash key(I first thought about using SHIFT+BACKQUOTE, 6021 but that would probably make Mednafen worse on foreign keyboards, and we don't need any more of that...)...though this will probably break on some 6022 Frussiranistanadengia keyboard somewhere. 6023 If fast-forwarding and slow-forwarding are activated simultaneously(YOU MONSTER), the fast-forwarding speed multiplier will have precedence over the 6024 slow-forwarding multiplier. 6025 ...and since we recently moved to resampling the audio post-emulation-module-...emulation, slow-forwarding won't bring inaudible frequencies down 6026 to the audible frequency range(since they were already filtered out). This has both good and bad sides, but probably mostly good(so no non-tubular sounds 6027 caused by games "silencing" sound channels by setting their playback rates extremely high will be heard). 6028 6029 GB: Fixed a bug(still many left) in the external RAM handling code, fixing an 6030 emulator crash with "Wizards & Warriors - Chapter X". (I think! TODO: confirm) 6031 6032 Added support for "lurkers" on the network play server. Previous versions of Mednafen don't lack support for this per se, but there 6033 would be cosmetic issues with status messages printed to the internal console. 6034 6035 Lynx, GBA, PC-FX, MD, SMS: Fixed sound emulation to use the driver-side allocated buffer. 6036 6037January 4, 2010: 6038 6039 PC-FX: Added more checks to error conditions during fast booting, and cleaned up and added a few error messages. 6040 6041 MDFND_PrintError() and MDFN_Message() will now lock a mutex around access to stdout, instead of queueing the messages to be sent to stdout in the 6042 main thread. This is what I should have done in the first place... (This change fixes, among other things, dropped status/error messages 6043 when CD-ROM loading fails). 6044 6045 SMS: Fixed video output, broken during the transition to MDFN_Surface. 6046 6047January 3, 2010: 6048 PCE: Fixed broken Soldier Blade title screen by altering the conditions of when D6 is set(TODO: alter/rename VDC_IS_BSY). 6049 6050 Finished implementing priorities for emulation modules when loading a game. The priorities are, from highest to lowest: 6051 External_high 6052 Internal_high (All modules but pce_fast are currently set to this) 6053 External_low 6054 Internal low (pce_fast is set to this) 6055 6056 Added <sysname>.enable settings(type boolean, default value of 1) for all emulation modules. Setting the setting for an emulation module to 0 6057 will cause that module to not be considered when trying to determine which module to load the game with(it will still be used if explicitly 6058 specified via -force_module or -loadcd). 6059 6060 Added TestMagic() to Lynx, NES, GG, SMS, SNES. 6061 6062 Removed SetSoundVolume() from the emulation modules, it's handled in the core code now, but the emulation modules can handle it themselves 6063 if speed is critically important. 6064 6065 Removed SetSoundMultiplier() from the emulation modules, sound is now resampled in the main core if fast-forwarding is in effect. However, 6066 there still is a provision to handle it in the emulation modules if speed is critically important. 6067 6068 The sound buffer emulation modules write to is now allocated on the driver side, but Mednafen still supports the old method of having the sound 6069 buffer allocated in emulation modules. Currently, the following modules have been converted to the new system: 6070 GameBoy 6071 Neo Geo Pocket 6072 NES 6073 WonderSwan 6074 6075January 2, 2010: 6076 Updated the documentation to reflect the additions and changes made between 0.8.5 and 0.8.D. 6077 6078 GBA: Fixed a bug that would cause data corruption and the loaded game to crash whenever a state was 6079 saved(but the state itself, and loading it, was fine) on a big-endian platform. 6080 6081 NES: Removed support for sound quality setting "-3". It's too low-quality(Solstice sounds awful) and is unlikely to give a significant % performance 6082 boost over quality -2. 6083 6084December 31, 2009: 6085 Replaced more instances of usage of strerror() and "%m" in format strings with usage of the ErrnoHolder class. 6086 6087 Lynx: The boot ROM is now loaded through MDFNFILE instead of stdio f*(). 6088 6089 PC-FX: ROM BIOS and FX-SCSI ROM are now loaded through MDFNFILE instead of stdio f*(). 6090 6091 Lynx: Fixed a bug in the cart loader code that would cause a crash if the ROM bank size was larger than the actual data available in the 6092 file(as is the case with some homebrew programs). Thanks to "Wookie" for the patch. 6093 6094 GB: Fixed colors when "vdriver" is set to "overlay". 6095 6096 Fixed strerror_r() usage in error.cpp/error.h 6097 6098 SexyAL: Fixed a bug affecting the return value from RawCanWrite() in the ALSA driver. The returned value was typically too 6099 small by a factor of 4. The effects of this bug included potential long periods of garbled sound 6100 during netplay. 6101 6102 Fixed the return value from RawCanWrite() in the JACK driver. It was being clamped to a value 6103 that was too small by a factor of 4; however, the clamp value was already excessively large in a way 6104 that this bug would should have only been triggered if the "soundbufsize" setting was excessively large. 6105 The effects of this bug would be similar to the ALSA RawCanWrite() bug. 6106 6107 The ALSA and OSS drivers will now try to set audio output to 2 channels if the source data only has 1 channel, and 16-bit signed if the 6108 source data is 8-bit(automatic conversion is done). This is done to allow for lower period/fragment sizes, as, in ALSA's internals at least, 6109 the minimum period sizes are expressed in bytes, not sound frames. 6110 6111 The ALSA and OSS drivers will now try to set lower period/fragment sizes than previous versions of Mednafen did. With default settings, for 6112 ALSA, the new period/fragment size is 50% of what it was before, and for OSS, 25%. Also, there's a new setting to override 6113 the SexyAL's driver's preferred period/fragment sizes, named "sound.period_time"(default value of 0: no override). 6114 The period/fragment size is expressed in microseconds. If the new, lower fragment sizes cause problems, the setting can be changed to "2666" 6115 to approximate the fragment size selection in previous versions of Mednafen when using ALSA output, and "5333" when using OSS output. 6116 6117 Added a workaround to the OSS driver for a bug in ALSA(and hence, ALSA's in-kernel OSS emulation) that could cause the emulator to run far 6118 too fast for a short period of time if a buffer underflow occurred. 6119 6120 The ALSA's driver's RawCanWrite() method now(finally) uses snd_pcm_avail_update() instead of snd_pcm_delay(). 6121 This should improve performance and frameskipping behavior when the ALSA output is not routed directly to a physical device, such as the case with 6122 PulseAudio(though PulseAudio is still not recommended :b). 6123 6124 If an invalid "sounddriver" is selected, Mednafen will now print an error message and not initialize sound 6125 instead of silently selecting the default sound driver. 6126 6127 SexyAL: Altered the argument order of SexiALI_Convert() to make more sense. 6128 6129 Fixed the broken conversion code used when the frame count passed to Write() is greater than 2048. 6130 6131 Fixed a bug/design flaw in the SexyAL SDL sound driver that can cause a crash during program 6132 deinitialization. 6133 6134 Added support for "float" output format to the ALSA driver. 6135 6136 The ALSA driver will now try all formats that SexyAL's conversion code supports if the desired 6137 format is not supported by the output device, rather that simply erroring out as before. 6138 6139 Added support for converting to 24-bit and 32-bit PCM output formats from the source format(which 6140 is still fixed to signed 16-bit). 6141 6142 The driver function RawCanWrite() is now passed a pointer to a uint32_t, which it sets to the number 6143 of bytes that can be written without blocking, rather than returning the value directly, so that 6144 the return value can be used as a success/failure indicator. 6145 6146 The driver function RawWrite(), and the "user" function Write(), will now return 1 on success, 0 on 6147 (fatal) error, rather than returning the amount of data written. 6148 6149 The OSS driver was testing the return value of open() incorrectly. Fixed. 6150 6151 SexyAL is now compiled as C++(but doesn't use many C++ features yet), which necessitated 6152 adding several explicit casts in various code, and fixing some inconsistent function prototypes and 6153 declarations. 6154 6155 JACK: Fixed a stereo playback crashing problem(a loop count was being calculated incorrectly). 6156 6157 JACK: Switched to using jack_client_open() instead of the deprecated jack_client_new(). 6158 6159 JACK: The "sounddevice" setting is now used, to specify the JACK server to connect to. 6160 6161 JACK: Fixed a possible race condition in RawCanWrite(). 6162 6163 JACK, SDL: Changed the inter-thread ringbuffer setup to be less likely to underrun, while not hurting 6164 latency. 6165 6166 JACK, SDL: Additional playback position precision is now obtained by using 6167 jack_get_time()/SDL_GetTicks(). This will improve Mednafen's performance with larger fragment sizes 6168 with these drivers, but smaller fragment sizes are still preferred for latency-to-underrun-occurrence-ratio 6169 reasons. 6170 6171 Renamed the "byteorder" field of SexyAL_format to "revbyteorder", and changed it to a boolean type, 6172 to avoid confusion over what it actually represents. 6173 6174December 30, 2009: 6175 Altered autogen.sh to force updates(copy to Mednafen's source dir) of automake standard files. 6176 6177 Added usage of the AM_SILENT_RULES macro to the autoconf script, allowing pretty compile output via: 6178 ./configure --enable-silent-rules 6179 or 6180 make V=0 6181 6182 PCE: Fixed the BRAM initialization(it was wrong, and generated from when Mednafen erroneously emulated 8KiB of BRAM). 6183 Fixes lockups in "Sorcerian". 6184 Note that if you have any existing save states or battery-backed RAM files for "Sorcerian" in "sav" or "mcs" under 6185 Mednafen's base directory from when you attempted to run "Sorcerian", you will need to delete them 6186 for this fix to have any effect. 6187 6188 Fixed: 6189 joystick.cpp:141: warning: format ‘%016llx’ expects type ‘long long unsigned int’, but argument 4 has type ‘uint64’ 6190 6191 6192November 30, 2009: 6193 Fixed some PC-FX interlaced compile errors(resulting from an earlier effort to fix 0-width source rect blits 6194 6195 due to not verifying that the variables for the previous field contained valid data). 6196 6197 Fixed a minor typo in NGPGFX_CLASS::reset() 6198 6199 GB: Fixed initialization of "HRAM" on virtual power toggle/reset. 6200 6201 SMS: Fixed the input and reset emulation when the territory was 6202 set to "domestic"(Japan) and FM emulation was enabled; the emulated system was erroneously 6203 being treated as a Game Gear in a few places when those conditions were met. 6204 6205 6206 6207November 8, 2009: 6208 Reran ./autogen.sh, under Ubuntu 9.10 6209 6210 Reverted drivers/opengl.cpp and drivers/opengl.h to pre-PBO experimentation copies. 6211 6212 Fixed incorrect(and excessively complex, old code nearby) usage of MDFNI_DispMessage() in drivers/input.cpp in 6213 the input configuration process. 6214 6215 Removed archaic and unused(but still being compiled!) files drivers/config.cpp and drivers/config.h. 6216 6217 Fixed cases of file I/O return values being ignored in: 6218 mempatcher.cpp 6219 mmmreader.cpp (not complete) 6220 6221 Fixed some strict-aliasing-conflicting code in nes/ppu/ppu.cpp, and somewhat ambiguous parentheses. 6222 TODO: Clean it up more. 6223 6224 Reverted PC-FX KING/FXVCE rendering/mixing code to pre-black-bias-optimization attempt. It was convoluting the 6225 code too much. 6226 6227 6228Before(some of these changes listed below are seriously out of order from when they occurred, development was kind of chaotic and haphazard): 6229 6230 Altered the netplay protocol, adding "INTEGRITY", "SERVERTEXT", and "ECHO" commands. Added "/ping" and "/integrity" commands to the netplay 6231 text console. 6232 6233 CD emulation: 6234 Added new multi-threaded CD image and physical drive reading code, with a small readahead buffer. 6235 This new code will also allow sector read hints to be given, which should alleviate 6236 emulation freezes once we emulate CD seek delays in cdrom/scsicd.cpp. 6237 6238 Simplified the base CD reading code, to always fetch 2352+96 bytes of data. 6239 6240 Physical CD reads will now read semi-"raw" data(2352 bytes per sector regardless of sector type), 6241 along with 96 bytes of subchannel data per sector. 6242 6243 extra commands(WIP) 6244 6245 requires_medium 6246 6247 Added "ErrnoHolder" class, to be instantiated immediately after a function that modifies errno(passed "errno" as the constructor argument). 6248 It holds the errno value in a safe place(so future calls to any printf or whatever functions won't change it), and it has a StrError() function, 6249 which is essentially a wrapper that will use strerror_r(), or if not available, strerror(), and return a const char * pointer to a buffer 6250 internal to the ErrnoHolder class. 6251 6252 6253 PC-FX: (August 30, 2009) Fixed stupid ASC value bug in DoPAUSERESUME that broke PC-FX CDDA player 6254 6255 PC-FX, PCE: (August 30, 2009) Fixed stupid CD-DA playback volume bug 6256 6257 PC-FX: Fixed ADPCM IRQ handling(fixes random lockups in Sparkling Feather during the initial period of FMVs). 6258 6259 NES: Changed DMC IRQ emulation to fix "Apple Town Story". 6260 6261 NES: Greatly improved FDS sound emulation(thanks to Disch's document, and VirtuaNES source code). 6262 6263 The framebuffer that emulation modules render to is now abstracted behind the "MDFN_Surface" class, instead of having naked pointers and 6264 various video format global variables out the wazoo. Adding the "overlay" output driver/method necessitated this change, too. 6265 6266 Added support for SDL Y'CbCr overlays(USUALLY hardware accelerated). Enabling this video output method can be achieved by setting the "vdriver" 6267 setting to "overlay". This is a very experimental video output method, it may not work properly on all operating systems and video cards. 6268 6269 Added a special case faster 5x scaler for the "SDL soft" video driver. 6270 6271 Added a faster generic integer scaler for the "SDL soft" video driver. 6272 6273 PCE: Added the ability to load a custom colormap(palette) by setting "pce.colormap" to the path of the colormap 6274 file. The colormap consists of either 512 or 1024 RGB triplets, 8-bits per color component, 6275 in the order R,G,B,R,G,B,R,G,B,... . 6276 It is recommended that the colormap provide all 1024 entries(the first 512 entries are for normal mode, 6277 the second 512 entries are for grayscale/strip-colorburst mode). If it doesn't, Mednafen will calculate 6278 the grayscale colors using a formula similar to that used with the real VCE, but with more precision. 6279 The colormap may be disabled by setting the "pce.colormap" setting to an empty string, or 0. Command-line 6280 examples: 6281 mednafen -pce.colormap /path/to/blueblue.cmap /yarr/pirate/booty.pce [Enable] 6282 6283 mednafen -pce.colormap 0 /some/where/over/the/rainbow/islands.cue [Disable] 6284 6285 Added a (convoluted) compiler bug test to tests.cpp, to guard against buggy gcc versions when 6286 compiling with -fno-strict-overflow with optimizations enabled. 6287 6288 Added "frameskip" setting to disable internal frameskip for speed testing(because we invariably forget 6289 to disable manual frameskip disabling code changes after we're done running tests). 6290 6291 Fixed a crashing problem when entering an invalid menu choice("0") in the cheat interface. Thanks to 6292 tsenart for reporting the bug. 6293 6294 Fixed several instances of mismatches between format strings and passed argument types, which could cause 6295 nonsensical information to be printed on big-endian platforms, and perhaps some little-endian platforms as well. 6296 6297 Fixed the minimum field-width specifier on the statements that print the loaded game's CRC32 in several 6298 places. 6299 6300 Added the "format(...)" function attribute to the MDFN_DispMessage(), MDFN_PrintError(), and MDFN_printf() 6301 function prototypes to catch format string errors. 6302 6303 Changed the INLINE define to always force an inline with gcc(contrast with 0.8.x, where we introduced 6304 a new ALWAYS_INLINE in addition to INLINE). 6305 ...and added a blip_inline that does the same for Blip_Buffer. 6306 ...and changed various "inline" statements to INLINE and blip_inline, where appropriate. 6307 TODO: Audit our INLINE statements to make sure we're using them only in speed-critical code and with 6308 smallish functions. Looking at Lynx and NES code here especially... 6309 6310 NES: Fixed an intialization bug in mapper 193. 6311 6312 NGP: Fixed an unaligned memory access bug in the memory r/w handlers, causing crashes on platforms 6313 that do not support unaligned memory accesses. 6314 6315 Removed erroneous dependency on CD-ROM emulation when WonderSwan emulation is enabled in the configure script. 6316 6317 The included Tremor is now compiled with "-fvisibility=hidden" to work around a dynamic symbol collision 6318 problem with libsndfile(BUT, -fvisibility is only available in gcc 4.0 and newer). 6319 This solution may not be correct... 6320 6321 Updated Tremor to the latest SVN version. 6322 6323 Upped the minimum playback rate to 22050 Hz, from 8192 Hz. The lower rates aren't tested very often, 6324 and the sound resampling code works very poorly at such low rates(not to mention sound quality in general is 6325 going to be pretty bad at such low rates anyway). 6326 6327 Added sanity checks to the first track number and total track count returned from libcdio, to prevent 6328 a crash in Mednafen if the libcdio driver fails and returns nonsensical values. 6329 6330 Removed unused file sms/state.h. 6331 6332 Fixed a very-old bug that caused joystick unique ID collisions if more than 2 of the same "type" of physical 6333 joystick were available. 6334 6335 Mednafen is now compiled with -fsigned-char, to prevent any potential problems on systems with an "unsigned" char 6336 type as default. 6337 6338 Reworked the setting code to use a multimap with a 32-bit key(CRC32 of the setting name) instead of a vector 6339 that was iterated over(TODO: Sort settings written to the configuration file). 6340 6341 PC-FX: Adjusted the range of the I/O map mirror access range in the memory map, and added emulation of reads from it. 6342 6343 PC-FX: Refactored the KING BG drawing code, adding support for BG0 subscreen. Fixes problems with 6344 "Angelique Special". (We'll add a simple hack/very limited subscreen code to 0.8.x to fix this problem) 6345 6346 PCE, PC-FX: Fixed the emulation of SCSI command 0xDE, mode 0x1. The value returned was too small by 6347 2 seconds. 6348 6349 PCE, PC-FX: Fixed the sector count for the last track(which influences the leadout track start position/total 6350 sector count) in multi-track CUE/BIN CDROM images. 6351 6352 PC-FX: Greatly improved the KING->RAINBOW block transfer logic(previously a hacky buggy mess). 6353 Fixes some minor glitches in Zenki. 6354 6355 Fixed several problems in file.cpp, including buggy and overly-complicated MDFN_read*le() functions, 6356 and a problem with the const-ness of the return value of strrchr() with gcc 4.4. 6357 6358 PC-FX: Fixed the exception code set when an FPU divide-by-zero occurs(previously, it was being set to the 6359 integer divide-by-zero exception code). 6360 6361 PC-FX: Fixed the handler address called when a TRAP instruction is executed. 6362 6363 PC-FX: Added boolean setting "pcfx.rainbow.chromaip", default enabled, that controls whether or not 6364 the chroma channel of the RAINBOW chip's YUV output(usually used when decoding still full-color or moving images) 6365 should be interpolated bilinearly. Turning it off will make the output image appear blockier and slightly 6366 less blurry, and closer to what a real PC-FX displays. For a good example of its effect, look at the scrolling 6367 red letters in "Kishin Douji Zenki" with it on, and then with it off. 6368 6369 GBA: An error loading the custom colormap file is now treated as fatal. 6370 6371 Increased the maximum X scale and Y scale sanity check value from 20 to 50. 6372 6373 Fixed an off-by-one error in the software SDL graphics rotation code(used for Lynx and WonderSwan). 6374 6375 SexyAL: The return values of ALSA functions are now treated as errors only if they're less than 0, rather 6376 than non-zero as before. Thanks to R.L. for pointing this out. 6377 6378 The default "nethost" setting is now "fobby.net" instead of "mednafen.com". The latter was allowed to 6379 expire and lost to domain squatters some time ago. Domain squatters cause desires to commit grievous face-stabbing. 6380 However, the netplay server on "fobby.net" is not guaranteed to be up. :p 6381 6382 Fixed the rectangle calculation for screen rotation with Lynx and WonderSwan to use X scale and Y scale 6383 values appropriately(they were reversed before; also, assuming square pixels on your monitor ;)). 6384 Rotation still poses a problem in fullscreen with the default settings, however. 6385 6386 Added new entries to "InputDeviceInputInfoStruct" concerning rotated inputs, and removed the Lynx and WonderSwan 6387 partially-specific rotation code in drivers/input.cpp 6388 6389 WonderSwan: Fixed a bug that made it impossible to push a direction on one D-pad while the opposing direction 6390 was being pressed on the other D-pad. 6391 6392 fflush(stdout) is now called after printing status messages or errors(may be nominally slower, but should 6393 provide more information if something goes kaka on some platforms). 6394 TODO: Synchronous error messages and status messages from the game thread, rather than asynchronous. 6395 6396 Z80(SMS, NGP, MD): Ported the following changes from the FUSE SVN repository: 6397 Unhalt on NMI (thanks, Simon Owen). 6398 6399 Changed how firmware is located. Firmware is now searched in several locations, in this order: 6400 MEDNAFEN_BASE_PATH/firmware/SYSTEM_SPECIFIC_FIRMWARE_FILENAME_SETTING 6401 MEDNAFEN_BASE_PATH/SYSTEM_SPECIFIC_FIRMWARE_FILENAME_SETTING (for backwards compatibility) 6402 ...or, if SYSTEM_SPECIFIC_blahblahblah has been set to an absolute path by the user, it will only search 6403 there. Also, the firmware path override "path_firmware" setting has been added. Note that setting "path_firmware" 6404 to a non-default value will cause Mednafen to only try to open SYSTEM_SPECIFIC_FIRMWARE_FILENAME_SETTING in 6405 that path, it won't look anywhere else. 6406 TODO: Document all this in the primary documentation. 6407 6408 Fixed a race condition that could cause rapid oscillation between fullscreen and windowed when trying to 6409 toggle it. 6410 ...and fixed a race condition that could cause oscillations when rotating the screen with Lynx and WonderSwan 6411 emulation. 6412 6413 Changed the name of the mednafen configuration file to "mednafen-09x.cfg", to prevent conflicts with 0.8.x 6414 and older(when going back and forth). 6415 6416 NES: Renamed the misnamed Famicom input device "Quiz King Buzzers" to the correct name, "Party Tap". 6417 6418 Fixed a bug when creating an SDL source surface, whose negative effects(clipping rightmost columns) could be 6419 triggered when the "sdl" vdriver setting was used with certain xscale and yscale settings that would 6420 cause a 1:1 pixel copy operation. 6421 6422 PCE: Altered the Street Fighter 2 autodetection code to be data-agnostic. The SF2 mapper will now be enabled for 6423 any ROM images 2MiB and over in size. 6424 6425 Fixed string constant-to-(char *) problems in drivers/cheat.cpp 6426 6427 PC-FX: Fixed bugs in "Play Audio Track Index" and "Read Subchannel" MMC commands, fixing the totally broken 6428 cinematic sequences in "Boundary Gate". There may still be bugs in these commands that don't cause any known 6429 problems with games, so I will need to run tests on a real system. 6430 6431 PCE: Fixed ST0, ST1, and ST2 instruction timings(they were too low by 1 cycle). 6432 6433 (Autoconf/automake cleanups and fixes) 6434 6435 NES: Fixed "Time Lord" by altering the PPU startup sequence timing. 6436 6437 Netplay (New commands, WIP) 6438 6439 PC-FX: Chroma keying is now disabled in the 7.16MHz dot-clock mode(the problem that making this change 6440 caused with Nirgends before was apparently a bug in the handling of RAINBOW's non-endless scroll mode, 6441 which was fixed during optimizations). 6442 6443 PC-FX: Made various optimizations: 6444 Altered how chip linebuffer transparencies are expressed. They are now expressed simply by the pixel 6445 being 0(along with layer number reorganization, the layer number in the upper bits of the internal 6446 pixel prevents a YUV-triplet of "0" erroneously being interpreted as transparent). 6447 6448 Reworked the VDC layer mixing code to be simpler, and have separate optimized(if the compiler works 6449 properly :b) versions for the 4 different VDC 240-color-mode-enable settings. 6450 6451 Rewrote pieces of the RAINBOW Huffman decoder to use LUTs. 6452 6453 Rewrote the RAINBOW chroma-key evaluation code on suggestion of Exophase, and added several 6454 special-case faster versions for common simple chroma-key settings. 6455 6456 PC-FX: Modified the ADPCM play back code to use linear interpolation, with respect for the enable bits 6457 in the control register, and to use the OKI/Dialogic ADPCM decoder class originally written for 6458 PCE CD ADPCM emulation. 6459 6460 NES: Cleaned up the iNES loading code a bit, and added support for WRAM on a few mappers that nominally shouldn't 6461 have WRAM, enabled if the battery-backed bit is set in the iNES header. Fixes "Family BASIC", and probably 6462 a few bootleg games as well. 6463 6464 Added configure script option "--enable-altivec/--disable-altivec (default: enabled)" for compiling on 6465 PowerPC architectures where AltiVec is not supported, or causes problems. 6466 6467 Fixed a call to putenv(), to pass a static character array initialized to a string constant instead of a string 6468 constant directly. 6469 6470 SMS: Removed the old unused Z80 emulator code from when SMS Plus was assimilated. 6471 6472 NES: Added support for mapper 163(TODO). 6473 6474 NES: Added support for mapper 241. 6475 6476 PCE, PC-FX: Improved LFO emulation again, fixing vibratto effects in the intro of "Hanii in the Sky". 6477 6478 Debugger: Fixed a bug in the trace log code. It would cause the emulator to lock up if the user pressed 6479 Enter/Return in the prompt popup without any text in the input field. 6480 6481 Fixed a few argument descriptions(invoked with the -help command-line switch) that weren't properly gettextized. 6482 6483 TODO-itemize? Added Sega Genesis emulation: 6484 Based on cgfm2's Genesis Plus. 6485 Uses YM2612 emulator from Gens 6486 Uses Stef's C68k emulator(still needs more bug fixes for "The Lost Vikings"). 6487 Uses blargg's Sms_Apu. 6488 Some code based on/imported from Genesis Plus GX. 6489 6490 PCE: Revamped input emulation: 6491 Individual devices(exluding multitap) are now in their own classes. 6492 Added incomplete emulation of the Tsushin Keyboard. 6493 Added setting "pce.input.multitap" to allow for disabling the multitap(enabled by default). 6494 6495 Fixed a few deprecated const string to char* conversions in: 6496 v810_cpuD.cpp:188: warning: deprecated conversion from string constant to ‘char*’ 6497 romdb.cpp:21: warning: deprecated conversion from string constant to ‘char*’ 6498 6499 (More driver interface changes) 6500 6501 GB: Corrected a lack of address masking in most of the cart RAM emulation code. Fixes a few Chinese GameBoy 6502 Color games. 6503 6504 GBA: Fixed a buffer overflow in the ROM image loading code. 6505 6506 NES: (Re?)-added support for mapper 240(it was erroneously listed in the documentation as being supported...). 6507 6508 PC-FX: Several variables related to subchannel reading weren't being saved in save states. Fixed. (This fixes 6509 save states made within the BIOS' CD-DA player) 6510 6511 Changed default key assignments for d-pads on emulated input devices from WASZ style to WASD. 6512 6513 Altered the save state format and file extensions. Save states made from previous versions of Mednafen will obviously be 6514 completely incompatible with this version. (Support for older save states may be readded later...) 6515 6516 Added setting "osd.state_display_time", to control the length of time, in milliseconds, the save state/movie 6517 screen is displayed after selecting a save state or movie. 6518 6519 Added a save state function to the base Z80 emulation code(since the Z80 emulation is now used in 3 places). 6520 6521 Added <string.h> to the global include list in mednafen.h. 6522 6523 Moved the multi-byte single-variable decoding/encoding functions from endian.cpp to endian.h as inline functions. 6524 6525 PC-FX: Emulated gamepad button presses weren't being decoded from the driver-side data correctly(causing problems on big-endian 6526 platforms). Fixed. 6527 6528 SMS: SMS pause and 2-player support were erroneously commented out. Fixed. 6529 6530 NES: Fixed CNROM emulation initialization bug. 6531 6532 PCE: Added the VDC register select register to the debugger. 6533 6534 PCE: Reads from the timer count register the cycle it is set to reload after expiring will now return 0x7F. Fixes "Battle Royale". 6535 6536 PCE: Rewrote arcade card emulation based on information from David Shadoff, and a tip from Exophase. The ADPCM sound effects 6537 in Garou Densetsu II work correctly now. 6538 6539 PCE: ADPCM: Combined the two dividers into one. 6540 6541 Rewrote the ADPCM nybble decoder. 6542 6543 Fixed an off-by-one-nybble playback bug. 6544 6545 Altered how the read and write addresses are set. Fixes the Super CD version of "Tengai Makyou Ziria", and 6546 "CD Mahjong Bishoujo Chuushinha". 6547 6548 6549 PCE, PC-FX: Improved PSG LFO emulation. 6550 6551 PC-FX: Disassembly of the "nop" instruction will no longer show the virtually meaningless operand. 6552 6553 PC-FX: Fixed alignment and prettified the disassembly of LDSR and STSR instructions. 6554 6555 Added boolean setting "debugger.autostepmode" that, when set to 1, will cause Mednafen to automatically start 6556 the debugger in step mode after a game is loaded(only if Mednafen has a debugger for the emulated system, of course). 6557 6558 The most recently-saved save state slot will now be colored differently when selecting a save state slot. 6559 Increased the brightness of non-empty save state slots. 6560 Empty save state slots are now black instead of being partially transparent. 6561 6562 PCE: Fixed emulation of a few VDC vertical timing registers when in SuperGrafx mode(this change shouldn't affect the released 6563 commercial SuperGrafx games at all, but it will fix a few graphical emulation problems when trying to play normal PCE games 6564 in SuperGrafx mode). 6565 6566 PCE: ADPCM software reset was erroneously also resetting the playback frequency. Fixed. (Fixes ADPCM voices in Gulliver Boy) 6567 6568 Added magic testing functions to the MDFNGI structure. 6569 6570 Added known file extensions to the MDFNGI structure. 6571 6572 PC-FX: KING BG and CG offset registers are now emulated as 8-bit instead of 9-bit. This shouldn't affect emulation at 6573 all(these registers were write-only to the game code, and the background rendering code already 6574 effectively masked these to 8-bits when rendering), but it will fix potential confusion when using the debugger's register 6575 viewer. 6576 Also, did the same to the soundbox ADPCMControl register(limiting it to 6-bits, in this case). 6577 6578 PC-FX: Improved the logging of the ROM font system call in the debugger, to also include the callee address and the size of the 6579 glyph being requested. 6580 6581 PCE: Fixed disassembly of the JMP $(AAAA, X) instruction. 6582 6583 GBA: Fixed a startup crashing bug on big-endian platforms. 6584 6585 Removed unnecessary indirection of sound buffer variables in EmulateSpecStruct. 6586 6587 Changed many instances of *printf() and *scanf() to their trio equivalents. 6588 6589 Changed instances of fprintf() in mempatcher.cpp to trio_fprintf() to work around major issues with pre-C99 standard C libraries. 6590 6591 WonderSwan: Added rudimentary support for playing back WSR(ripped WonderSwan music) files. 6592 6593 Cleaned global header files. 6594 6595 NES: Replaced the old FIR+Blip_Buffer resampler with an experimental new, all-in-one, polyphase resampler, written with some code and help 6596 from blargg. Two new settings were added to control its characteristics: 6597 nes.soundq - An arbitrary sound quality setting, default of 0. Higher values will increase sound quality(decreasing 6598 passband width and increasing stopband attenuation), while lower values will decrease sound quality. The maximum is 3, 6599 and the minimum is -3. Going below sound quality -1 is not recommended 6600 6601 nes.sound_rate_error - The error tolerance of the polyphase resampler's output rate versus the real output rate. 6602 Lower values will cause the resampler's output rate to come closer to the real output rate, at 6603 the cost of more memory usage(and possibly cache thrashing), while higher values will do the opposite. 6604 The default is 0.00005. The range is 0.0000001(most accurate) to 0.01(least accurate, will likely 6605 cause sound to sound out of tune). 6606 Changing this setting is not recommended for normal usage, though it may make sense to set it 6607 to its minimum value if you are recording Mednafen's sound output. 6608 6609 The setting <system>.scanlines now takes the opacity of scanlines directly, in percent(range 0-100), instead of the old totally-fubar 6610 formula. 6611 WARNING: THIS CHANGE BREAKS BACKWARDS COMPATIBILITY FOR THIS SETTING IN EXISTING CONFIGURATION FILES AND ANY FRONTENDS OR SCRIPTS. 6612 6613 GBA: Cleaned up a few benign shadowed-variables. 6614 6615 GBA: DMA registers were being saved as 32-bit arrays instead of 16-bit arrays in save states, potentially causing memory 6616 corruption, and broken save states on big endian platforms. Fixed. 6617 6618 Abused C++ function overloading to force the SFARRAY16, SFARRAY32, etc. macros in state.h to force a compiler error if they 6619 are passed arrays of an unknown/invalid type. Updated GBA, Lynx, NES... to not save invalid types(usually with a typecast to 6620 the appropriate type, for union'd types). 6621 6622 Added support in state.cpp and state.h for saving/loading bool types properly. 6623 6624 Removed the hackish "bool8" type. 6625 6626 Changed instances of manual SFORMAT structure creation in a lot of old system emulation code to use the SF* macros instead. 6627 6628 GB, GBA: Upgraded Gb_Apu and replaced Gba_Apu(a Mednafen-specific hacked-up ancient version of Gb_Apu) to a newer version 6629 provided by blargg, that includes builtin support for GBA's legacy sound channels. This change breaks save states for GB and GBA 6630 created in previous versions of Mednafen(though this shouldn't happen again, at least not for updates to the sound code). 6631 6632 Added a "fullname" member to the MDFNGI struct. 6633 6634 PCE CD, PC-FX: Fixed display of CDROM data tracks in the debugger's memory viewer(it was broken sometime between 0.8.2 and 0.8.4). 6635 6636 GBA: The Load() function was returning a largeish integer, instead of 1, after successfully loading a ROM image. Fixed. 6637 6638 Removed the "fb" variable from the MDFNGI struct. 6639 6640 Renamed "width" and "height" in the MDFNGI struct to "nominal_width" and "nominal_height", fixed NES and PCE emulation code to set nominal_height 6641 correctly, and modified save state code to use these variables for generating and displaying save state previews(TODO: rewrite 6642 save state preview resize code to resize vertically when DisplayRect.h != nominal_height, though this should never occur at the moment, 6643 it may if we add support for systems with selectable interlaced video modes). 6644 6645 Removed the save state preview width variable from the MDFNGI struct. 6646 6647 Added an fb_height member to the MDFNGI struct. 6648 6649 Fixed header include order in the JACK audio driver. 6650 6651 GB: Corrected loading/saving of MBC3 time values in save files(this will cause incompatibility with MBC3 RTC save games created in previous 6652 versions of Mednafen, unless they were created running on a 64-bit little-endian system). 6653 6654 GB: The setting "filesys.disablesavegz" will now affect GameBoy save files. 6655 6656 MDFN_DumpToFile() now checks for errors in fclose(). 6657 6658 Added preliminary movie(audio+video) recording support to a custom format. A secondary 6659 66600.8.6: 6661 PCE: Removed a statement, that was used for debugging, that broke PC Engine multiplayer support in 0.8.5. (I'm not sure 6662 how it got there in the first place...). 6663 66640.8.5: 6665 6666 Fixed a crashing bug when loading an uncompressed file and using the automatic IPS-patching feature when mmap() is available. 6667 6668 PCE, PC-FX: All SCSI CDROM commands are now logged in the debugger's log viewer(when logging is enabled, of course). 6669 6670 Added group support to the debugger's log viewer. 6671 6672 PC-FX: Renamed the type of BIOS ROM font calls in the debugger's log viewer from "BIOS" to "ROMFONT". 6673 6674 PC-FX: BIOS filesystem syscall(for backup memory access) calls are now logged in the debugger's log viewer. 6675 6676 PC-FX: Added internal backup memory and external backup memory address spaces to the debugger's memory editor. 6677 6678 PC-FX: In the 263-line mode, line 262 is now reported as being during blanking time(as on a real PC-FX). Fixes the annoying transparency layer 6679 flickering and other weird graphical glitches in Der Langrisser FX. 6680 6681 Added setting "filesys.disablesavegz", to disable gzip compression when saving save states and backup memory. 6682 (In the case of backup memory, disabling gzip compression isn't supported for GB yet) 6683 66840.8.4: 6685 6686 PC-FX: Some RAINBOW registers weren't being reset on emulated system reset. Fixed. 6687 6688 PC-FX: Added dummy support for the external bus reset register. 6689 6690 PC-FX: Altered the way garbage data is handled by RAINBOW to fix a graphics bug in the Tengai Makyu options screen. 6691 6692 PC-FX: Reworked a large part of the KING SCSI emulation code, and parts of the CDROM device emulation code. Previously non-working-at-all games 6693 "Battle Heat" and "Tengai Makyu" work now. 6694 The non-anime game mode in "Tyoushin Heiki Zeroigar" works now. "Der Langrisser FX" no longer locks up if you skip the intro movie. 6695 "Yuna FX" no longer locks up in one of the intro movies. 6696 These changes will cause some save state incompatibilities with previous versions of Mednafen. 6697 (Some of the SCSI changes also affect the PCE CDROM emulation, which may also result in save-state incompatibility issues, particularly if 6698 the save state occurred during a CDROM data transfer operation.) 6699 6700 PC-FX: Added setting "pcfx.cdspeed". If you want to change this, read the documentation first! 6701 6702 Cleaned up the video deinitialization code slightly, and fixed a few bugs in the OpenGL deinitialization code. 6703 6704 PC-FX: Reads from the dummy KING register 0x07 will now return 0xFF, per the devkit docs. 6705 6706 PC-FX: Reads from KING register 0x0B will now return the "DMA end" bit in D0 set correctly(at least, according to the developer docs). 6707 6708 Fixed a compilation error after running configure with --disable-nes. 6709 6710 PC-FX: Reads from I/O port 0xFC0 will *now* return the current timer counter value. The switch statement mask value was wrong... 6711 6712 Removed the warning in the documentation about error correction of raw data track rips, as Mednafen will now perform simple correction 6713 using the EDC and L-EC data(since 0.8.4-rc3). This could conceivably cause problems with naive hacks/translations/patches that neglect to update 6714 the EDC and L-EC data, so it can be disabled by setting the setting "cdrom.lec_eval" to 0. 6715 L-EC correction is based off code from dvdisaster(http://dvdisaster.net/). 6716 6717 PCE, PC-FX: Removed some debug printf()'s that were left in 0.8.4-rc3 by mistake. 6718 67190.8.4-rc3: 6720 6721 PCE: Added preliminary(it works, but the code needs to be cleaned) ADPCM support for HES rips. 6722 6723 PCE: Interrupts will be enabled with a CLI after a HES' init routine is called, to fix rips that neglect to do it themselves. 6724 6725 PCE: Added support for HES rips that try to write data where it really shouldn't be written(some CD-ROM game rips do this), though a warning 6726 will be printed the first time this occurs after loading. 6727 6728 PCE: Added sanity checks to the HES loader to prevent crashes if invalid data is present. 6729 6730 PCE: Reads from the I/O port will now return D7 as clear when emulating a PCE CD game. 6731 6732 PCE: ADPCM RAM is now reset(to 0) on emulated PCE reset. 6733 6734 PCE: Sprites trying to pull tile data from $8000-FFFF of VRAM will now be invisible(probably not correct, but trying to emulate indeterminate 6735 effects is too difficult :b). Fixes a minor sprite garbage issue in Camp California. 6736 6737 PCE, PC-FX: Fixed VRAM DMA source/dest increment/decrement bits(the source and dest were flipped). Fixes a problem with Fushigi no Yume no Alice. 6738 6739 Moved some code in the source root directory to appropriate subdirectories. 6740 6741 Added setting <system>.debugger.disfontsize, valid settings being "xsmall", "small"(default), "medium", and "large", to control the font 6742 size used to draw the disassembly text. Note that there may be overlap with other parts of the debugger at font sizes larger than the default. 6743 6744 Refactored a few address space and register group debugger support functions out of individual system code. 6745 6746 Fixed various low-impact memory leaks. 6747 6748 The version of Mednafen last run is now stored in the configuration file as a comment(this will be necessary for changes in 0.8.5 or later 6749 that will involve proper escaping/unescaping and quoting of strings, to prevent problems with extra whitespace added by manually editing 6750 the configuration file). 6751 6752 Fixed state rewinding on big-endian machines, and removed some unnecessary operations from the state rewinding code path. 6753 6754 Mednafen will now refuse to try to load ROM images larger than 64MiB, as a sanity check. 6755 6756 mmap() and madvise() will now be used to load ROM images, assuming they're available(UN*X only, generally). 6757 6758 Errors during automatic IPS patching are now fatal. 6759 6760 Sped up loading gzip'ed ROM images. 6761 6762 Removed a global variable from the NES emulation code that had invaded state.cpp. Though, this makes the error message when trying to use 6763 save states with authentic Game Genie emulation very unhelpful... 6764 6765 GBA: Added support for loading a real GBA BIOS ROM image, using the setting "gba.bios". 6766 6767 GBA: Added the ability to specify the backup memory type for games by creating a file with the same name as the ROM image, 6768 with the extension replaced with "type", in the "sav" directory under the Mednafen base directory. 6769 Example: SexyPlumbers.gba -> SexyPlumbers.type 6770 6771 One or more of the following strings(on separate lines) may appear in the file: 6772 sram 6773 flash 6774 eeprom 6775 sensor 6776 6777 Additionally, the flash size can be specified by specifying the size(real size, or divided by 1024) after the type, like "flash 128" or 6778 "flash 131072". 6779 6780 PCE: Improved noise LFSR and volume emulation, thanks to cgfm2 for the detailed information. 6781 67820.8.4-rc2: 6783 6784 Added meaningful descriptions to the command.* settings. 6785 6786 PC-FX: Added an experimental feature to use mmap() to create a virtual 32-bit address space to speed up V810 instruction reads. 6787 Enable by setting "pcfx.use_mmap" to 1. Of course, it won't work on 32-bit CPUs! Please read the documentation, there are caveats! 6788 6789 PC-FX: Removed some redundant logic in the KING BG 8x1 drawing functions. 6790 6791 PC-FX: FX VCE and VDC port access are now emulated as 16-bit, as in the real PC-FX, instead of 8-bit. 6792 6793 PC-FX: Altered the debugger's memory peek and disassembly functions to not read the emulated memory map in the 0x80000000-0xEFFFFFFF region. 6794 (Reading those addresses can cause side effects, and this is a temporary workaround) 6795 6796 PC-FX: Changed the V810 memory read handlers to read RAM faster than BIOS ROM. This will probably increase host CPU usage while in the BIOS 6797 loading screen, but decrease it in the actual game. 6798 6799 PC-FX: Altered the V810 opcode fetch logic to do 16-bit reads instead of 32-bit, fixing potential crash issues 6800 when Mednafen is run on CPUs that don't support unaligned memory accesses. 6801 6802 PC-FX: Factored-out a few address masks in the memory read and write handlers. 6803 6804 PC-FX: Replaced most of the V810 signed-variable bit-size converting code that uses conditional branches to code that uses 2 shifts, 6805 taking advantage of modern 2's-complement CPU's arithmetic right-shift capabilities. It reduces generated machine code size slightly, 6806 and should provide a slight speed boost as well. 6807 6808 PC-FX: Optimized V810 address mode decoding by removing an unnecessary conditional jump. 6809 6810 Added an important warning to the documentation regarding Mednafen's ripped CD image support: 6811 6812 Mednafen does *not* correct bit errors in the user data of "raw" data track rips. It is strongly recommended to use 6813 "cooked" data track rips(2048 bytes/sector for mode 1, not counting any subchannel data) with Mednafen. 6814 6815 PC-FX: Improved exception handling, and added untested emulation of the TRAP instruction. 6816 6817 Debugger: Rewrote the memory load and dump functions to be faster, and also to fix a bug in the load function that would 6818 trash memory if the user tried to load more data than the specified file contained. 6819 6820 Debugger: Using the Goto function will no longer cause memory edit mode to be exited. 6821 6822 Debugger: Fixed a bug that occurred when entering a prompt(goto, change charset, etc.) while in editing mode, that caused 6823 keyboard focus to be misdirected. 6824 6825 SexyAL: The ALSA driver will try to set smaller period sizes when lower playback rates are used. 6826 6827 GBA: Changed the heuristics used to detect SRAM/Flash usage, though they're still not perfect...if a game tries to use flash 6828 memory improperly, it could be detected as using SRAM instead, or silently corrupt parts of flash memory... 6829 6830 GB: Fixed sound register initialization on reset, fixes missing sound in A Boy and His Blob 6831 6832 GB: Slightly increased the contrast of GBC colors. 6833 6834 GB: Reworked blitting of mono GB colors for future features. 6835 6836 GB: Removed a redeclaration of a variable in the same scope in a function in gfx.cpp. 6837 6838 Debugger: Fixed PCE VRAM breakpoints to work with block memory transfer instructions. 6839 6840 Debugger: Fixed parsing of single-address breakpoints after range breakpoints. 6841 6842 Mednafen will now print out SDL version information when it starts. 6843 6844 (The Win32 build will now be distributed with SDL 1.2.12) 6845 6846 Debugger: Fixed -/+ opacity adjustment to not be done when entering text(such as in a dialog). 6847 6848 Debugger: Fixed null termination of the ASCII string buffer displayed in the memory watch section. 6849 6850 PCE, PC-FX: Fixed the frequency of the highest-frequency noise generation register setting, hopefully! 6851 6852 PCE, PC-FX: Changed the LFSR to 16-bit, and to use a maximized tap configuration, to make the noise sound a bit closer to a real 6853 PC Engine's(at least, in my opinion! It still sounds slightly more bassy than a real PC Engine, but that might be due to filters 6854 on the PC Engine's sound output...). 6855 6856 Non-power-of-2-sized-textures will not be used when a pixel shader is selected and enabled, to prevent a severe graphical corruption 6857 regression introduced in 0.8.3-beta. I'm not sure if it's a problem with Mednafen's pixel shaders or the graphics card... 6858 6859 SMS: Fixed soft reset. 6860 6861 SexyAL: Removed smallc.c, and modified the OSS driver to use snprintf() instead of the single function smallc.c provided. 6862 6863 SexyAL: "sexyal.h" is now included before all other header files. 6864 6865 SexyAL: Revamped parts of the ALSA driver to fix reported lockup issues under certain conditions. 6866 68670.8.4-rc1: 6868 6869 Added preliminary support for inputting text directly into the selected address space in the debugger's memory editor. 6870 6871 Moved the temporal video blurring code in mednafen.cpp to vblur.cpp 6872 6873 Added settings "filesys.snap_samedir", "filesys.sav_samedir", "filesys.state_samedir", and "filesys.movie_samedir", default 0, that when 6874 set to 1, will read/write the respective files from/to the same directory the game was loaded from. If you want 6875 to use these, PLEASE read the documentation first, there are caveats! 6876 6877 PCE CD, PC-FX: Added support for MS WAV file offsets and lengths in TOC files. 6878 6879 PCE CD, PC-FX: Fixed a bug that caused CD-DA playback to be off by one sector(the first sector specified was being skipped). 6880 6881 Began work to allow settings to be temporarily overridden during netplay and movie playback. 6882 6883 PCE, PC-FX: Added settings "pce.disable_softreset" and "pcfx.disable_softreset", default 0, which when set to 1 will disable 6884 simultaneous pressing of RUN and SEL. The current implementation kind of abuses the driver-side code that disallows opposing diagonal buttons 6885 being pressed at the same time, so if we ever change that (undocumented) feature to go with the last-pressed direction rather than 6886 clearing both, the description of these settings in the documentation will need to be updated. 6887 6888 PCE CD, PC-FX: Read operations and CD-DA playback will now be stopped when the RST signal is asserted(fixes soft reset issues on PCE CD 6889 games). 6890 68910.8.3-beta: 6892 6893 Fixed an OpenGL function typedef in drivers/opengl.h. 6894 6895 PC-FX: Writes and reads to the KING and FXVCE chips "mapped" in parts of 0xA0000000 through 0xBFFFFFFF will now go through the respective 6896 data port write handlers, instead of directly to KRAM or palette RAM. 6897 6898 If non-power-of-2-sized OpenGL textures are not available, and bilinear interpolation or a pixel shader is enabled, and the emulated 6899 system resolution changes(such as on the PCE), two lines of black pixels will be written to the texture buffer to prevent the display 6900 of multi-colored garbage at borders, though the right+bottom borders will still be slightly darker than they should be... 6901 6902 PC-FX: Added support for VDC data port writes via writes to 0xB4000000-0xB7FFFFFF and 0xB8000000-0xBBFFFFFF in the V810's 6903 memory map. Fixes major graphical problems in "Super Power League FX". 6904 6905 Updated the srwcompressor description in mednafen.cfg. 6906 6907 PC-FX: KING BG1-3 scroll registers are now emulated as 10-bit instead of 11-bit(BG0's are still 11-bit), and BG1-3 virtual 6908 screen size is now limited to 512x512(BG0 is still 1024x1024), per the official developer documents. 6909 6910 Non-power-of-2-sized OpenGL textures will now be used if the "GL_ARB_texture_non_power_of_two" extension is detected. 6911 6912 Fixed a bug that sometimes would cause black screens when using the "sdl"(non-default) video driver(SDL surface per-pixel alpha blending 6913 was enabled when it shouldn't have been). 6914 6915 PCE: Fixed a line clearing bug when BG is disabled that was causing some minor graphical garbage on some games that 6916 use multiple horizontal resolutions per frame. 6917 6918 Changed some nonsensical #ifdef statements that were intended to always evaluate as false with "#if 0". 6919 6920 Renamed SYSTEM_CLOCK to System_Clock in scsicd.cpp to work around a potential macro conflict on OSX. 6921 6922 PC-FX: Added partial support for NEC's "scan" SCSI command, used in the BIOS' CD-DA player screen. 6923 6924 PC-FX, PCE CD: Revamped parts of the subchannel emulation code. The PC-FX BIOS CD player screen's time display works now. Also, an important 6925 note regarding cdrdao "TOC" files and "RW_RAW" subchannel data was added to the documentation. 6926 6927 PC-FX: Fixed a bug in the KING BG0 scrolling+rotation code for 16-color and 4-color backgrounds with BATs that was causing graphical 6928 corruption in the PC-FX BIOS CD player screen. 6929 6930 Fixed a compilation error when --disable-debugger was passed to the configure script. 6931 69320.8.2-beta: 6933 6934 Added blargg's experimental blz compressor, for use with state rewinding(change the setting "srwcompressor" to use it). 6935 (This was added a while back, after 0.8.1, but I forgot to document it) 6936 6937 SMS,GG: Added missing default key configurations. 6938 6939 PC-FX: Added untested emulation of scaling+rotation in 4-color KING BG mode. 6940 6941 PC-FX: Added emulation of scaling+rotation in 16-color KING BG mode. Fixes a problem with the background in the last stage of Zenki. 6942 6943 PCE: Added VRAM size constants to the beginning of vdc.cpp, and modified the code to use them, to allow a certain crazy person to compile 6944 a custom version of Mednafen which emulates extra VDC VRAM. 6945 6946 PCE: Removed 0xEB as SBC immediate in the disassembler(it was left over from the 6502 disassembler). 6947 6948 Changed setting type of setting "vdriver" to a string, with possible values "opengl" and "sdl"(and "0" and "1" for backwards compatibility, 6949 of course). 6950 6951 PCE: Set the default char set in the debugger's memory viewer to shift_jis. 6952 6953 PCE: Fixed a missing #include <iconv.h> in debug.cpp. 6954 69552007-6-17: 6956 6957 PC-FX: Improved VCE<->VDC<->KING scanline timing to fix a lockup issue in Anime Freak Vol 4(polling the FX VCE raster counter register 6958 vs VDC VBlank IRQs). Unforunately, this change has caused some 1-line graphical glitches in games that do "raster effects". This 6959 may be solved once/if V810 emulation has accurate cycle counts, which would require emulating instruction cache and prefetch logic. -_-; 6960 6961 Fixed branch traces display in the debugger, it was broken to only display half of them twice sometime since 0.8.1. 6962 6963 PC-FX: Optimized RAINBOW JPEG-like decoding by using a static implementation of bit fetching functions(instead of a class). 6964 6965 PC-FX: Added untested emulation of the CAXI V810 instruction. 6966 6967 PC-FX: The RAINBOW transfer block count register is now emulated as being 5-bits instead of 16-bits, fixes screen issues(blue blue!) 6968 after defeating the snake monster in Zenki. 6969 6970 PC-FX: If a KING BG is set to BAT+CG mode, but is missing a BAT fetch microprogram, it will now be drawn in CG mode(previously, the BAT 6971 data was simply being forced to 0, which was wrong). It's confirmed on a real system. Fixes missing graphics in "Tonari Princess no Rolfee". 6972 6973 PC-FX: Fixed transparency testing with 16M color KING backgrounds(only 1 Y component of every 2 pixels was being checked, now 6974 both are checked). 6975 6976 PC-FX: Implemented back cellophane support. Fixes fadeouts in "Lunatic Dawn", fadeins in "Team Innocent", and screen darkening issues 6977 during dialogue in "Last Imperial Prince"(and also exposes a bug that LIP probably has on a real system too, wherein CCR isn't reset 6978 to black after the dialogue is over, leaving the upper and lower parts of the screen outside the play area slightly dark greenish). 6979 The hindmost color when mixing the layers is now set to palette entry #0, except when all layers are disabled(set to black), 6980 or front cellophane(set to black) or back cellophane(set to value in CCR) is enabled. 6981 6982 PC-FX: Added emulation of the expansion backup RAM. While not particularly necessary since Mednafen already emulated backup memory 6983 separately for each game, it does give a few extra save slots to some games(such as Miraculum ^_^). 6984 6985 Added opacity control(-/+) to the debugger. 6986 6987 Added an always-on zero page view to the CPU debugger for NES and PC Engine. 6988 6989 Reduced the size of the game thread event queue to a somewhat saner size, and added extra buffering so that its mutex is only locked for 6990 a minimal amount of time to eliminate the chances of deadlock with this mutex. 6991 6992 GBA: Fixed a bug that caused only half of the legacy wave sound channel's sample data to be saved. 6993 6994 GB: Updated to Gb_Snd_Emu 0.1.5, fixes hanging note problems on some games, and cleaned up the sound save state code. 6995 69962007-5-30: 6997 6998 Added preliminary Sega Master System and Game Gear emulation based off of SMS Plus. 6999 7000 Factored the remaining state rewinding code out of the individual systems' code. 7001 7002 Fixed a minor visual bug when using state rewinding(also with save states, but it's not really visible) with the NTSC blitter. 7003 7004 Simplified how state rewind requests are passed to the emulation code, and fixed a small bug when using state rewinding with 7005 frame advance(now, a rewind will only occur if the state rewind button is held down while the frame advance button is pushed). 7006 7007 Changed a local variable name in selblur.cpp to fix compilation on OS/X(and maybe PPC in general?), thanks to Matt Beaumont 7008 for pointing out the conflict with a definition in altivec.h. 7009 7010 PCE: Fixed cycle counts for BRA and BSR(they were 1 too high). 7011 7012 PC-FX: Reads from I/O port 0xFC0 now return the current timer counter value. 7013 7014 Parameters to MDFNI_Emulate() and the internal system Emulate() functions are now passed through a structure, to allow 7015 for easier future expansion. 7016 7017 PCE, PC-FX: Fixed audio track reading from physical CDs on big-endian platforms. 7018 7019 NES: Fixed a bug that caused an emulator crash if Game Genie-style cheats were enabled at the same time as authentic Game Genie 7020 emulation was enabled. 7021 7022 Added setting "srwframes", which controls the number of save states to keep when state rewinding is enabled. 7023 7024 Debugger: Fixed a bug that caused a crash if a PC breakpoint was triggered while the debugger screen was disabled. 7025 7026 Added an experimental logging feature to the debugger, currently only used by the PC-FX emulation code, to log CD-ROM read commands 7027 and calls to the PC-FX BIOS' glyph bitmap address function, both of which should be quite helpful in translation work... 7028 7029 PCE, PC-FX: Moved the mouse sensitivity adjustments to the driver side to fix mouse emulation with network play and movies 7030 when using non-default pce.mouse_sensitivity/pcfx.mouse_sensitivity settings. 7031 7032 Added a few more entries to the in-emulator help screen. 7033 7034 PC-FX: Increased the keyport latch delay, and added emulation of the PC-FX mouse. 7035 7036 PC-FX: The keyport data ready flag is now reset only on low reads from the keyport data registers. 7037 7038 PCE: Fixed disassembly of the BSR instruction. 7039 7040 NGP: Fixed Z80 emulation cycle counts(they were far too low), and fixed emulation of the EI delay. 7041 7042 GB: Reworked various things, including Z80 interrupt and HALT emulation. GameBoy emulation will be a bit more CPU intensive now, 7043 and save states from older versions won't work with this version(sorry!). These changes could easily break some games, but...at least 7044 "A Boy and His Blob" works now! 7045 7046 GBA: Changed the file type detection code to reduce the chance of false positives. 7047 7048 PCE: Files with the extension "sgx" will now be treated as raw SuperGrafx ROM image files(AKA SuperGrafx emulation will be enabled). 7049 7050 NES: Refactored the file type detection code, so that emulation data structures and memory won't be initialized unless it's 7051 a recognized file type. 7052 7053 NES: NSF(but not NSFE) game/album name, artist, and copyright strings are now trimmed of leading and trailing whitespace. 7054 7055 Added MDFN_trim(), MDFN_rtrim(), and MDFN_ltrim() functions. 7056 7057 WonderSwan: Fixed a buffer overflow bug in the sprite drawing code. 7058 7059 GBA: Flash and SRAM save games are now stored gzip-compressed. 7060 7061 PCE: Fixed raw bytes display of relative branch instructions in the disassembler. 7062 7063 PC-FX: Added CD-ROM data tracks to the memory debugger/viewer, read-only, however. 7064 7065 The selected character set in the memory debugger/viewer will now be saved for that emulated system when exiting. 7066 7067 Fixed text search in the memory debugger/viewer(iconv() was being called before the variables passed to it were initialized, oopsie). 7068 7069 Simplified the scrolling code in the memory debugger/viewer, the line containing the cursor will now always be centered vertically 7070 on the screen. 7071 7072 PCE: Fixed an ambiguous if() statement in huc.cpp in the BRAM emulation code. 7073 7074 GB: Fixed a semi-ambiguous boolean math statement in the cpu emulation code. 7075 7076 Fixed an ambiguous else statement in the throttling code in drivers/main.cpp 7077 7078 NGP: Neo Geo Pocket emulation code is now compiled with -fno-strict-aliasing to work around issues in the TLCS-900h code. 7079 7080 GBA: Removed unused ELF code. 7081 7082 Fixed some implicit conversions of const char * to char *. (stupid putenv() prototype grumble mumble) 7083 7084 <stdlib.h> is now included in "mednafen.h", added notes to README about system header files automatically included, 7085 and removed inclusions of such header files in source code files that include mednafen.h(most do, and should). This change 7086 was brought about by gcc 4.3...it may not be the best way in regards to compile-performance wise, but it is more convenient 7087 and safer than #include'ing the system headers manually(and forgetting to >_>). 7088 7089 Modified instances of "Makefile.am" to stop including the top directory in the include search path, and removed the symlink of 7090 config.h to include/config.h, and fixed the references to "config.h" in intl/Makefile.in. 7091 7092 PCE: Made hes.cpp use MDFN_de32lsb() and MDFN_de16lsb() from endian.cpp. 7093 7094 PCE: Changed some instances of free() to MDFN_free(). 7095 7096 GBA: Un-inlined the CPUWriteMemory() function. 7097 7098 GBA: Rewrote parts of the save-game(flash, eeprom, sram) code to make more sense! EEPROM data is now stored with a file extension "eep". 7099 7100 71010.8.1: 7102 7103 PC-FX: Added more registers/SetRegister() support to the debugger. 7104 7105 Trying to edit a register in a debugger register groups with a NULL SetRegister method will no longer crash Mednafen. 7106 7107 NES: Fixed a misnamed save state variable in the FME-7 code. 7108 7109 Mednafen will now be compiled with "-fno-strict-overflow" if the C compiler supports that option, for the upcoming gcc 4.2 release, 7110 as I'm not sure this optimization is safe with Mednafen's code(it may be, but better safe than somewhat sorry!). 7111 7112 PCE CD, PC-FX: Added partial support for cdrdao "TOC" files, including support for rips with subchannel data, but it must be in the "RW_RAW" 7113 format. Ripped CD+G CDs can be played back this way in the PCE CD and PC-FX BIOS CD players. 7114 71150.8.0-beta: 7116 7117 PC-FX: Improved VDC chain/256-color mode emulation. 7118 7119 PC-FX: Altered FXVCE->VDC vsync emulation. 7120 7121 PC-FX: Revamped RAINBOW code, adding support for JPEG-like encoded content, thanks to David Michel's help. 7122 7123 WonderSwan: Fixed a bug in the debugger(HAH) regarding the display of HBTimerPeriod and VBTimerPeriod(they were erroneously listed as 1-byte 7124 variables, when they should've been listed as 2-byte variables, which caused the values to wrap around to the other side of the screen if they 7125 were >= 0x100). 7126 7127 GBA: Structurized free-floating various variables...there shouldn't be any regressions, aside from save state incompatibility, unless 7128 typos were made(if so, please tell me!). 7129 7130 PC-FX: Added support for scrolling/rotation in 64K color mode. 7131 7132 PC-FX: The KING data structure(including KRAM) is now dynamically allocated. 7133 7134 GB, GBA: The memory for the color map/filter is now dynamically allocated. 7135 7136 PC-FX: Changed the size of the emulated X tile coordinate register when drawing KING BG, affecting in-range calculation when in 7137 non-endless scroll mode. Fixes missing eyes and mouths and other craziness in cutscenes in Chip Chan Kick. 7138 7139 PC-FX: Fixed playback of the last 4 samples of an ADPCM playback sequence, fixes crazy volume problems in "Team Innocent". 7140 7141 PCE: VDC chip data structures(including emulated VRAM) are now dynamically allocated. 7142 7143 NES: FDS and several mappers' larger data structures are now dynamically allocated. 7144 7145 NES: NSF write handler info structure is now dynamically allocated, which should reduce memory usage by 1 or 2 MiB(depending on the platform) 7146 on other games/files. 7147 7148 PCE: CDROM-related memory is now dynamically allocated, which should reduce Mednafen's memory usage for non PCE-CD games 7149 by at least 2.25MiB. 7150 7151 PCE: Added untested support for the Tsushin Booster's expansion RAM 7152 7153 Replaced the hard-coded file extension tests when loading from a ZIP archive in MDFN_fopen() with code that tests extensions passed as 7154 a double-NULL-terminated(each entry is single-NULL-terminated) string to MDFN_fopen(). 7155 7156 Added QuickLZ to the codebase, and added the setting "srwcompressor" to specify which compressor to use for staterewinding, 7157 "minilzo" or "quicklz", with "minilzo" as the default. QuickLZ can be considerably faster at compression than MiniLZO, though QuickLZ is written 7158 with x86 and x86_64 CPUs in mind, and performance will likely suffer on other platforms, and its compression ratio isn't as good 7159 as MiniLZO(which itself isn't that great!). 7160 7161 PCE: Added the settings "pce.adpcmvolume", "pce.cddavolume", and "pce.cdpsgvolume", for people who like music more than sound effects, or 7162 vice-versa for some weirdos! ;) 7163 7164 PCE: Burst mode will now be tested for when the VDC would enter the active display area. 7165 7166 PCE: Altered the relative volume of CDDA vs PSG vs ADPCM with CDROM games, based on tests done on a real system. 7167 7168 PCE: ADPCM no longer uses saturated addition for the current output value, instead just wrapping(like apparently occurs on a real system). 7169 7170 PCE: Scrapped the old SCSI CDROM code, it now uses code that was previously PC-FX only(and was abstracted to be used for both). 7171 The Game Express CDROM card image now works, including Game Express CD games(at least Hi-Leg Fantasy ;)). John Madden Duo CD Football 7172 works. Steam Hearts plays stage music now. 3x3 Eyes doesn't seem to have desynchronized audio anymore during cutscenes... 7173 7174 Updated libmpcdec to 1.2.5(I think it was 1.2.2 previously...). 7175 7176 PC-FX: Added VRAM and FXVCE palette RAM to the debugger's memory editor. 7177 7178 PCE,PC-FX: Fixed CUE+BIN pregap handling, it was totally borked before. 7179 7180 PC-FX: Improved byte writes to KING I/O ports, fixes graphics problems in First Kiss Monogatari and Pia Carrot He Youkoso 7181 7182 PC-FX: Changed how reads/writes from/to KING registers 0x09 and 0x0A are handled. 7183 7184 PC-FX: All writes to 0x80000000-0x80000FFF are now translated to I/O port writes. 7185 7186 PC-FX: Reads from "unmapped" areas in the V810's memory address space will now return 0xFF(or 0xFFFF, or 0xFFFFFFFF). 7187 This fixes a lockup that could occur 7188 in Power Dolls FX...the game seems to be trying to use 4MiB of RAM when there's only 2MiB of RAM in a PC-FX! 7189 Also, while this is probably the correct value to return for unmapped areas < 16MiB, it's not correct for at least some higher addresses... 7190 more tests are called for, but we can't just dump the entire 4GiB address space...can we? 7191 7192 PC-FX: D4 of reads from KING register 0x05 will now be set if a SCSI CD interrupt is pending. 7193 7194 PC-FX: Fixed READ TOC SCSI command emulation. The starting track field is no longer treated as BCD. Silly me... Fixes 7195 "Power Dolls FX" ADPCM sounds, and probably other games that have data tracks numbered 10 or above... 7196 7197 PC-FX: D0 of reads from the KING DMA status registers is now the only bit returned. 7198 7199 PC-FX: D0 of writes to the KING SCSI DMA length register is now ignored. 7200 7201 PC-FX: Started work on initial support for for KING's 1M KRAM chip mode...I need to run tests! 7202 7203 PC-FX: Reads from KING register/port 0x05 will now return the ATN and ACK SCSI status bits. 7204 7205 PC-FX: Reads from KING register/port 0x04 will now return the SCSI status bits. 7206 7207 PC-FX: Changed reads to KING registers/ports 0x01, 0x02, and 0x03 to return the last values written to those registers, rather 7208 than setting the bits returned corresponding to the current SCSI status bits. 7209 7210 PC-FX: Improved keyport emulation, fixes Can Can Bunny Extra DX title-screen "lockup". 7211 7212 PC-FX: Added support for negative KRAM increment values on read/write(king register 0xE). 7213 7214 PC-FX: Fixed the SCSI bits returned on port $600 reads: D17 now returns SEL status, and D23 now returns RST status(instead of ATN). 7215 7216 PCE: Block memory transfer instructions are now emulated at 6 cycles per byte transfered(+extra if VDC is accessed) instead of 5, to 7217 match tests done by malducci. This does break Wonder Momo, unfortunately... 7218 7219 Moved the Q-subchannel simulation code to the general CD-ROM reading interfaces, and made PC Engine CD and PC-FX CD emulation both use it. 7220 Also, the code will now set the index data field to index 0 for pregap areas, but...this is only possible when using disc images, due 7221 to libcdio(or CD-ROM in general) limitations. :( 7222 Ideally, on a physical disc, we would read the Q subchannel data directly, but...I'm not sure that all drives can read and return this 7223 data, and using libcdio's direct MMC functions results in much much more latency(probably because it bypasses the OS's caching 7224 of CDROM data), which would require an extra CDROM reader thread, which does its own caching and prefetch, in Mednafen. Maybe later! 7225 7226 PC-FX: Fixed cmpf.s emulation, fixes lockups in "Pachio Kun FX". 7227 7228 PC-FX: Added a tidy structure to contain SCSI command numbers, CDB lengths, and function pointers. 7229 7230 PC-FX: Added support for SCSI command 0x08(READ6), which "Mahjong Gokuu Tenjiku" uses. 7231 7232 PC-FX: Removed most of the 32-bit I/O and memory read/write functions, which are now handled by calling the 16-bit functions twice. 7233 7234 PC-FX: Modified the KING background rendering code to only draw to one buffer, instead of multiple buffers that are later mixed, 7235 to improve speed slightly. 7236 7237 PC-FX: The raster counter returned on reads from FX-VCE now returns correct(I hope...at least according to a simple test I did on a real PC-FX!) 7238 values in vblank. 7239 7240 PC-FX: SCDI CD interrupts on end of CD-DA track playback are now emulated. 7241 7242 PC-FX: SCSI CD "Test unit ready" command now expects to receive 6 data bytes total(1+5) instead of 1. 7243 I'm not sure if this is correct with the PC-FX, but it matches the SCSI specs, so I'll keep it this way until shown otherwise. 7244 7245 PC-FX: A17 of the effective KING BG CG and BAT addresses are now fixed to the CG and BAT offset settings, respectively, during rendering. 7246 7247 PC-FX: Added support for non-endless-scroll in BG0 rotation mode. Fixes the title screen flipping effect for 7248 Last Imperial Prince. 7249 7250 PC-FX: When a VDC layer has the same VCE priority as a KING BG layer, the VDC layer will now be shown on top. I don't know if this is correct... 7251 but it does fix a problem with disappearing sprites when leaving the airship in Miraculum. 7252 7253 PC-FX: Added KING BG0 scaling/rotation support, but only for 8bpp backgrounds(direct or indirect) in endless scroll mode for now... 7254 Fixes graphics in Miraculum(yay!) and Konpeki no Kantai. 7255 7256 PC-FX: Fixed direct CG mode width mask, corrects graphics bugs in "Boundary Gate" and others. 7257 7258 PC-FX: Added partial microprogram emulation, fixes junk graphics in Megami Paradise II. 7259 7260 PC-FX: Combined the different KING background non-endless/endless and direct/indirect rendering codepaths. This will make it 7261 a bit slower, but much more maintainable and...changeable! 7262 7263 SexyAL: Added support for sound cards that don't support interleaved stereo samples...probably. 7264 7265 Changed the font glyph cache to use an array of pointers instead of 2-dimensional array. This reduces resident memory 7266 usage considerably, even on systems with 64-bit pointers. 7267 7268 Readded the old 6x13 and 12x13 fonts for future usage in the debugger. 7269 7270 Fixed the documentation to list the controls for configuring virtual devices as ALT+SHIFT+1, ALT+SHIFT+2, etc. instead of ALT+1. 7271 Oops. 7272 7273 PC-FX: Made fairly invasive minor optimizations/refactoring to the cellophane code... 7274 I *have* tested it, and hopefully it won't break anything that worked before! 7275 7276 PC-FX: Fixed a clipping bug in KING BG non-endless scrolling mode in regards to X scroll wrapping. Fixes the disappearing boss problem in 7277 Stage 2 of Tyoushin Heiki Zeroigar! 7278 7279 PCE: The soft reset function(F10 key by default) no longer soft-resets the PCE, as such a button doesn't exist on a real unit, and 7280 could cause problems with some games, so it causes a hard reset(the same as the F11 key) now. 7281 7282 PCE: Added PSG registers to the debugger. 7283 7284 Enclosed many strings in _() or gettext_noop() for translation purposes. 7285 7286 Altered po/Makefile.in.in to pass "-N" to msgmerge, to disable fuzzy string matching. Fuzzy strings are braindead I say! 7287 7288 Reworked MDFN_malloc(), it now takes a purpose, and on error, will print out the number of bytes attempted to be allocated, 7289 the purpose of the allocation, and the file and line number in which the allocation was attempted(through macro magic!). 7290 7291 PC-FX: Changed the 7.16MHz dot-clock emulation mode to use an internal layer 1024-pixels wide(the least-common multiple of the 7292 2 different screen resolutions that are mixed by the video chip), rather than having 2 different 7293 layers that are merged by the video code(which causes problems on edges). This new method is much slower, unfortunately... 7294 The overlay code that supported this in the driver code and the interfaces have also been removed, as it is not used, and will not be used. 7295 ADDITIONALLY, a setting "pcfx.high_dotclock_width" has been added. The default is, of course, 1024, but other accepted values 7296 are 341 and 256, though I REALLY don't recommend using 256, as it will cause dropped pixels, whereas 341 will only cause somewhat 7297 distorted pixels horizontally. The advantage of using 341 over the default of 1024 is SPEED, and bilinear interpolation(if enabled) will 7298 work much better as well. 7299 7300 PC-FX: Fixed major problems when using more than one breakpoint of a type(read, write, etc.); it also occurred with the PCE debugger, 7301 but only with Aux breakpoints. 7302 7303 PC-FX: Fixed the VDC state restore code to properly recache all the tiles, instead of half of them! 7304 7305 GB, GBA: Fixed a few duplicate and misnamed variables in the save state structures. 7306 7307 PCE, PC-FX: Fixed a misnamed variable in the VDC save state structures. 7308 7309 Lynx: Removed a duplicate variable in the CPU save state structure. 7310 7311 PC-FX: Save states are now named so that they can be shared among CDs in recognized multi-disc sets(previously only .sav games were). 7312 This is intended to emulate "hot-swapping" as far as the game is concerned(though you will need to exit the emulator and load the second 7313 disc, so it isn't truly hot-swap ;)). 7314 When a game requests you to change the disc, the procedure is: 7315 Eject virtual disc(F8 key). 7316 Save state. 7317 Exit emulator. 7318 Load emulator with second CD. 7319 Load state. 7320 Wait for the game to load it. :b 7321 7322 PC-FX: Implemented virtual CD insert/eject, via the F8 key. 7323 7324 PC-FX: Added dummy handling of SCSI command 0x01(rezero unit), Doukyusei II no longer aborts the emulator. 7325 7326 PC-FX: Fixed bitstring instructions to fetch from the proper source address, fixes major graphics corruption bugs in "Anime Freak FX Vol. 4" 7327 and probably some other games as well. 7328 7329 PC-FX: Fixed RAINBOW decoding to not begin block decoding until a 0xFF is discovered in the bytestream. Fixes some graphical problems 7330 in "Ojousama Sousama". 7331 7332 PC-FX: Fixed the CD-DA playback speed calculation to match with tests I performed on my own PC-FX with a pure sine wave(interestingly, 7333 there was some really weird frequency aliasing at +10% playback speed on a real PC-FX...). 7334 7335 WonderSwan: Refactored the SRAM and external EEPROM code, and added support for larger SRAM sizes(Dicing Knight works now!). 7336 7337 PCE: Extended the Sherlock Holmes 1 hack to Sherlock Holmes 2 as well. 7338 7339 The address displayed in the "Cursor position" field in the memory viewer/debugger is now masked properly. 7340 7341 PC-FX: Fixed the ADPCM lowpass filter rolloff frequency calculation(forgot to divide by 2!). 7342 7343 PC-FX: Changed priority handling of KING background for priorities 5-7, though I don't know if the new way is correct... fixes 7344 a graphical bug in "Power Dolls FX". 7345 7346 PC-FX: The ADPCM volume control registers are now emulated as logarithmic, instead of linear. 7347 7348 PC-FX: Modified 256-color VDC sprite and bg palette index calculation, to fix color problems in the 3/4 view of Ojousama Sousamou. 7349 7350 PC-FX: Altered ADPCM address emulation so that the "active" play address is 17 bits instead of 18 bits, fixes problems in several 7351 games(Anime Freak FX Vol. 1, Tenchi Muyo! FX), hopefully it doesn't cause any new ones. ;) 7352 7353 PC-FX: Added support for KING bitstring writes and reads, and changed maximum BGn screen dimension setting from 0x9 to 0xA. "Boundary Gate" works 7354 much much better now due to these changes. 7355 7356 7357 NES: 7358 NULL-terminated the debugger's list of MMC1 registers, which was apparently forgotten earlier. Oops. 7359 7360 Added MMC3 registers to the debugger. 7361 7362 Added the current scanline(read-only) to the debugger's list of registers. 7363 73640.7.2: 7365 7366 NES: Added MMC1 registers to the NES debugger. 7367 7368 Various cleanups(removing dead code and header declarations). 7369 7370 Added settings "vblur.accum", enables motion blur accumulation mode, and "vblur.accum.amount". 7371 7372 Added setting "vblur", when enabled, will (motion) blur adjacent video frames 50/50. 7373 7374 Added WonderSwan emulation, based on Cygne, but greatly improved, and with a debugger. 7375 7376 Modified the time base adjustment code used when sound is disabled to fix fast-forwarding when sound is disabled. 7377 7378 "Fixed" a few instances of mostly harmless variable shadowing. 7379 7380 Mednafen is now compiled with -Wshadow. 7381 7382 Modified the save state preview rescaling code to properly(with interpolation instead of nearest-neighbor) rescale PCE games that use the 7383 512pixel-width mode, or in other words... the rescaling code will now work where (fb_width / state_preview_width) <= 2 whereas previously 7384 it only worked properly where (fb_width / state_preview_width) < 2. 7385 7386 Errors saving save states are now propagated and reported. 7387 7388 NGP: Files with an extension of "npc" are now also treated as Neo Geo Pocket ROM images. 7389 7390 PC-FX: Added setting "pcfx.nospritelimit". 7391 7392 Removed the memory dump and graphics memory dump functionality from the main debugger. The new memory editor provides the same 7393 or higher level of functionality. 7394 7395 Added a new memory editor to the debugger interface, accessible by pressing ALT + 3 in the debugger. 7396 7397 PCE: Added support for reduced-bit-depth background mode. 7398 7399 If the ALSA driver code is unable to set stereo or mono sound, it will try mono or stereo sound instead, respectively. 7400 7401 PCE: PSG waveform RAM will now only be updated if the channel is turned off. 7402 7403 glFinish() will no longer be called every frame in the OpenGL code, which should improve performance(if it causes problems, like 7404 tearing where there wasn't any before or decreased performance, please file a bug report!). 7405 7406 If the "glvsync" setting is 1(the default), and the environment variable "__GL_SYNC_TO_VBLANK" is not set at all(either 0 or any value), 7407 then it will be set to "1". This has the effect of forcing vblank synchronization when running under Linux with 7408 NVidia's drivers. 7409 7410 Fixed configure script option "--disable-jack". 7411 7412 Lynx: Screen rotation now works in non-OpenGL mode(SDL+framebuffer), sans scanlines support. 7413 7414 Lynx: Screen rotation now also rotates input sanely, as it did in 0.6.x and earlier versions. 7415 7416 Fixed a fatal compilation error in the ALSA driver with ALSA versions < 1.0.9. 7417 7418 Fixed a fatal compilation error on GCC < 3.4 in the PC-FX code. 7419 7420 Added code to detect the maximum OpenGL texture size, and reworked the OSD code to use tiled drawing if a particular OSD surface is too 7421 large to fit in a single texture. This is particularly relevant to users of old Voodoo cards. Note that tiled drawing isn't supported for the 7422 main game framebuffer, so video cards with severe texture size limitations will still have problems with PC Engine and PC-FX games that use 7423 higher resolution modes. 7424 7425 The help screen, debugger, and cheat search interface now use their own surfaces instead of the generic OSD surface. 7426 7427 Fixed(hopefully) OSD-clearing in SDL blit mode("-vdriver 1"). 7428 7429 Removed the option "doublebuf". It is kind of an archaic leftover from when Mednafen did only one blit 7430 per frame(and had the OSD written to the game's virtual framebuffer). Double buffering must always be enabled, 7431 or else screen corruption may occur. Also, as a note, double buffering does not imply synchronizing to vblank, though 7432 this does occur in some situations. 7433 ***NOTE: Please check your scripts and frontends and remove any "-doublebuf" arguments! *** 7434 74350.7.1: 7436 Began work on an experimental stdio interface, see drivers/remote.cpp if you are a frontend author and can read C code, though 7437 it is disabled for now. :) 7438 Documentation for it will be written when it is closer to completion. 7439 7440 Switched to trio_snprintf() from snprintf() in the input configuration code, this should fix problems under Windows(and any 7441 other OS with a lame snprintf() implementation) with joystick button configurations not saving properly. 7442 7443 Fixed parsing of the "sounddevice" setting(it was erroneously being compared to the long, 7444 descriptive name of the driver instead of the short name). 7445 7446 PC-FX: More changes. 7447 74480.7.0: *** Network play with this release requires Mednafen Server >= 0.3.0 *** 7449 7450 PCE: Fixed a timer reload bug. 7451 7452 Added the following configure script options: 7453 --enable-debugger build with internal debugger [default=yes] 7454 --enable-cjk-fonts build with internal CJK(Chinese, Japanese, Korean) 7455 fonts [default=yes] 7456 --enable-gb build with GameBoy emulation [default=yes] 7457 --enable-gba build with GameBoy Advance emulation [default=yes] 7458 --enable-lynx build with Atari Lynx emulation [default=yes] 7459 --enable-nes build with Nintendo Entertainment System emulation 7460 [default=yes] 7461 --enable-ngp build with Neo Geo Pocket emulation [default=yes] 7462 --enable-pce build with PC Engine(TurboGrafx 16) emulation 7463 [default=yes] 7464 --enable-pcfx build with PC-FX emulation [default=yes] 7465 7466 Moved the save states display and info text message display to blit directly to the framebuffer, rather 7467 than to the general OSD layer(which is now only used for cheat console and debugger). 7468 7469 Reworked the network play console interface to be more...usable. It takes up much less space, is centered at the bottom of the screen, 7470 the "t" button now activates text input, pressing "Enter" exits netplay console mode, and it will automatically pop 7471 up(though without user input possible, unless you press "t" while it's up) for 2.5 seconds when a new message is received. 7472 7473 Added support for all possible input devices to be used with network play. 7474 7475 Command-line arguments can now be prefixed with either "-" or "--". 7476 7477 Fixed "--help/-help" parsing from command-line. 7478 7479 PC-FX: Increased emulation accuracy, most games still don't work correctly, if at all. 7480 7481 PCE: Fixed VRAM->VRAM DMA when destination writes occur outside of VRAM space(they're now ignored). Fixes "Ruin - Kami no Isan". 7482 7483 OpenGL page flips will now try(it doesn't seem to work with nvidia's binary driver under Linux, so use "nvidia-settings" utility instead) 7484 to be synchronized to vertical retrace/blanking period if Mednafen is compiled against SDL >= 1.2.10, 7485 controllable by the setting "glvsync", enabled by default. 7486 7487 The "sounddriver" setting is now honored. Values you can try are "default", "oss", "alsa", "dsound", and "jack". 7488 7489 Added support for JACK and ALSA sound output, ALSA sound output is now preferred over OSS. 7490 7491 Mednafen will now exit properly if it receives a not-fatal signal, such as SIGTERM or SIGINT. 7492 7493 NES: Fixed noise and DMC playback frequencies with PAL emulation. Thanks to blargg for the information. 7494 7495 Due to internal changes, and wanting to clean up code, save states created in versions older than 0.6.0 are no longer supported(if you have any 7496 old save states you absolutely must have, load them in 0.6.5 and save them, then load them in 0.7.0). 7497 7498 Added keys to increment(though a predefined list of possible devices) the currently selected device on an 7499 input port(CTRL+SHIFT+1 through CTRL+SHIFT+5); note that this WILL change the setting for this port saved in the configuration file. 7500 7501 PCE: Added mouse support(use "-pce.input1 mouse"). To use it properly in windowed mode, you will need to press the "Scroll Lock" 7502 key. 7503 7504 PCE: Added 6-button pad support. By default, the "M" key will switch between 2-button and 6-button modes(this is necessary 7505 because most non-supporting games will break horribly in 6-button mode, which happens on a real system as well). 7506 7507 Revamped much of the internal input device handling. Important user-visible changes: 7508 Button configuration order is slightly different, with the rapid-fire instances of buttons immediately coming 7509 after normal instances of the buttons. 7510 7511 More buttons can now be configured for rapid-fire. 7512 7513 A virtually unlimited number(instead of 4 in previous versions) of physical buttons may now be assigned to a 7514 virtual button or command. 7515 7516 Input button settings are now saved in the text-format mednafen.cfg file. 7517 7518 Famicom input devices that were previously not configurable, such as the Family Keyboard, now are; however, 7519 it would be unwieldy to configure the Family Keyboard using the in-emulator configuration process, so edit 7520 the configuration file instead. 7521 7522 The NES Zapper and other devices that are emulated using the mouse can now have their buttons configured. 7523 7524 The setting to manually set an input device on the Famicom expansion port has changed from "nes.fcexp" to 7525 "nes.input5". 7526 7527 Gameboy and Gameboy Advance pad button configurations are now independent of each other. 7528 7529 Save states and movies can't be accessed during HES/NSF/GSF playback anymore(does this hurt anyone?). 7530 7531 Button configuration hotkey functions are now mapped to ALT+SHIFT+1 through ALT+SHIFT+5(for input ports 1-5) instead of F3, F4, and various 7532 convoluted combinations of F3 and F4 with CTRL and SHIFT. 7533 7534 The NSF/HES/GSF player graphical code now all use the same resolution and video settings("player.*"). 7535 7536 Replaced the internal fixed-width 6x13 and 12x13 fonts with 9x18 and 18x18 fonts, respectively, and increased the general OSD layer 7537 size to 384x336 from 256x224(which has a side effect of allowing more detailed save state previews for NES and PCE). 7538 The new fonts provide about 10,000 more glyphs(for a total of about 32,000 glyphs), mostly for east-Asian languages(I think this MIGHT be 7539 slightly overkill, but, eh...*flees*). 7540 7541 PCE: The timer counter was being updated one instruction too late. Fixed. (This problem probably didn't affect 7542 any games, but it could have resulted in confusion while using the debugger.) 7543 7544 Remapped the state rewind key to ALT+S, and added a new help screen triggered by pressing "F1". 7545 7546 PCE: The disassembler was missing opcode 0x3A, DEC. Fixed. 7547 7548 NES: A few sound variables weren't being saved in the VRC6 and FME7 sound code. Fixed. 7549 7550 PCE: Fixed disassembler decoding of ZP indirect addressing mode. 7551 7552 NES: Fixed unofficial opcode 0xE2 cycle timing. 7553 75540.6.5: 7555 7556 PCE: Made a small optimization to HuC6280 emulation by caching the CPU speed shift-left cycle count adjust value. 7557 7558 Removed an old kludge for Win32 that worked around an SDL problem in which the window position would be off-screen when 7559 switching from fullscreen to windowed mode, as I think the problem is fixed in SDL 1.2.10. 7560 7561 Reworked the signal handling code to be included if HAVE_SIGNAL is defined instead of if WIN32 is not defined, and added #ifdefs around 7562 each possible signal(as some platforms don't provide #define's for some signals). 7563 7564 PCE: Added setting "pce.cdspeed" to set a CD-ROM data transfer speed multiplier. PLEASE READ THE DOCUMENTATION FOR CAVEATS. 7565 7566 PCE: Fixed CD-DA and ADPCM fadeout speed when setting the "pce.ocmultiplier" setting to a value other than 1. 7567 7568 Cleaned up the multi-res blitting code in drivers/video.cpp to not cause crazy compiler warnings(and not be crazy in general!). 7569 7570 PCE: Fixed the ADPCM playback rate formula(the result was off by about 0.27%), thanks to Charles MacDonald for detailed information. 7571 7572 Began work on implementing several OpenGL pixel shaders, which will be finished in a later release. 7573 7574 Mednafen no longers directly links to the OpenGL library, instead it uses SDL's OpenGL library loading and function address functions. 7575 7576 Reverted back to pow() and cos() from powl() and cosl() in Blip_Buffer.cpp, due to some platforms not having long double types per se, 7577 and adjusted the code activated by setting "pce.adpcmlp" to call Blip_Synth::treble_eq() with a "treble" value of a lower magnitude, which 7578 might result in a slight difference in the ADPCM frequency spectrum produced when "pce.adpcmlp" is enabled. 7579 7580 Fixed "Value increased" cheat search method(it was acting the same as "Value decreased", oops -_-). 7581 7582 Changed the usage of fix-sized filename component arrays in general.cpp with string objects. 7583 7584 MDFN_printf() and MDFN_PrintError() now use trio_vaprintf() instead of trio_vsnprintf(). 7585 7586 NES: Added setting "nes.n106bs", which when set, will enable less-accurate, but better sounding, Namco 106(mapper 19) sound emulation. 7587 7588 NES: Fixed save states for mapper 69 games(mirroring and prg bank setup wasn't being saved and restored). 7589 7590 NES: Added support for multiple expansion sound chips used simultaneously in NSFs, including limiting the address space they 7591 will respond to when multiple expansion sound chips are used(to prevent collisions between VRC6 and VRC7's address space, for example). 7592 7593 PCE: Fixed CD-DA playback speed when setting the "pce.ocmultiplier" setting to a value other than 1. 7594 7595 NGP: Changed the default full-screen video settings, so that the scaled image size is no longer larger than the 7596 display area(oops -_-). 7597 7598 NES: Added support for UNIF board "UNL-603-5052"(thanks to CaH4e3). 7599 7600 NES: Fixed mapper 115, "Thunderbolt 2" now works(thanks to CaH4e3). 7601 7602 NGP: Sound emulation now respects global sound volume setting "soundvol". 7603 7604 NGP: Added missing setting "ngp.forcemono". 7605 7606 PCE: Physical CDROM device names will now be printed on Mac OS/X on startup again. Physical CDROM access seems to work, 7607 but the DarwinPorts libcdio 0.75 package appears to be horribly broken, so please remove it and install 7608 libcdio 0.77(or higher) from its source code. 7609 7610 NGP: Fixed a few major problems with NGP emulation on big-endian platforms(such as PPC OS/X). 7611 76120.6.4: 7613 7614 Added somewhat experimental Neo Geo Pocket(Color) emulation based off code from NeoPop, heavily modified. 7615 7616 GB: Fixed frame rate when sound is disabled. 7617 7618 Added →, ←, ↑, and ↓ characters to the Lynx, GB, GBA, and PC Engine directional button names used for button configuration, to match the NES button 7619 names. 7620 7621 PCE: Added setting "pce.adpcmlp", default value 0, that when enabled, will cause Mednafen to apply a lowpass filter to ADPCM sound output 7622 with a rolloff frequency dependent on the current ADPCM playback frequency. This makes ADPCM voices sound less "harsh", however, the downside 7623 is that it will cause many ADPCM sound effects to sound a bit muffled. 7624 7625 PCE: Moved the OpenGL screen clearing code into the FlipOpenGL() function to fix a problem with some PCE games that use 7626 multiple resolutions per frame having a partially corrupted screen when the OSD was up. 7627 7628 PCE: Fixed save state loading with save states created during a CDROM data transfer. 7629 7630 Fixed a bug that was causing flickering OSD remnants to remain onscreen in fullscreen mode if the OSD was drawn outside of 7631 the game screen area. 7632 7633 Fixed a bug in the resizing code for save state previews that was causing save state previews for the NES, GB, GBA, and Lynx to look absolutely 7634 horrible. 7635 7636 Assigned the two keys "-"(not the numpad instance) and "=" to functions "decrement selected save state slot" and "increment selected 7637 save state slot", respectively. 7638 7639 Removed the checks preventing save state usage when playing NSFs, since save states may be useful with NSFs in some circumstances. 7640 7641 Added a new setting "ckdelay", which controls the length of time, in milliseconds, that a button/key corresponding to a 7642 "dangerous" command like power, reset, exit, load state, etc. must be pressed before the command is executed. The default value is 0. 7643 7644 Input mapping configuration is now saved after argument parsing if there is no game to be loaded, allowing a command like 7645 "mednafen -inputcfg pcegamepad1" to work properly. 7646 7647 The message "Configuration finished." will now be displayed when button mapping for the selected input device is complete when 7648 using the in-game configuration process. 7649 7650 PCE: Fixed a bug in the debugger involving disassembling block memory transfer instructions(effectively, the length was being 7651 fetched 1 byte too early). 7652 76530.6.3: 7654 7655 SexyAL: Fixed buffer write memcpy() optimization to also check to make sure the input and output byte orders are the same. 7656 7657 PCE: Added setting "pce.forcemono" to force monophonic sound output. 7658 7659 Added setting "analogthreshold", which is the threshold for detecting a "button" press on analog axis, in percent. The default 7660 value is 75(%). 7661 7662 Worked around a very odd "bug" in gcc that involved muddling of local-scope structure definitions among different object files( 7663 the structure previously named "BPOINT" in both NES and PCE emulation code), which led to breakpoints with NES emulation being 7664 totally fubared. 7665 7666 Added graphics memory dumping capabilities to the debugger. 7667 7668 PCE, NES: Save states and powers/resets in debugger step mode SHOULD work properly now. 7669 7670 Fixed a potential deadlock when exiting. 7671 7672 Various debugger fixes. I lost the ChangeLog, sorry. -_- 7673 76740.6.2: 7675 7676 PCE: Physical CDROM device names will no longer be printed on Mac OS/X on startup, due to the code crashing badly(rather than goodly!). 7677 7678 OpenGL texture heights are now rounded up to the nearest power of 2(texture widths already had this rounding in previous versions), 7679 which should fix special scalers on video output devices that don't support non-power-of-2 textures(IE most video cards and Mac boxen). 7680 7681 PCE: The libcdio sector reading functions are now checked for return values < 0 as errors, rather than != 0, to fix 7682 problems under Linux and possibly many other OSes where the return value is something like 2048(the number of bytes read, presumably). 7683 7684 PCE: Fixed a bug with disassembling block memory transfer instructions on < 64-bit systems(I had forgot to type-cast a variable 7685 to uint64 before left-shifting it past 32-bits). 7686 7687 PCE: Added the implied form of INC to the disassembler. 7688 7689 NES: Removed the PRG mask constraint for UNROM/mapper 2, introduced in version 0.2.0, to fix the Japanese "Maniac Mansion" and possibly 7690 other games. 7691 7692 PCE: Fixed debugger write breakpoints. The code had a logical error in it, with the end effect of preventing stack writes in the IRQ 7693 sequence, causing games to crash. 7694 76950.6.1: 7696 7697 PCE: The HuC6280 disassembler now gives @ZP hints for BBR and BBS instructions. 7698 7699 NES: Increased the effectiveness of frame-skipping. 7700 7701 Removed unnecessary sound buffer copying if the source format == device format in SexyAL, which is true most of the time. 7702 7703 Fixed a bug that was causing a crash in the cheat interface when trying to list cheats, under Win32. 7704 7705 Fixed a bug in the settings loading code that forced the user to resort to manual creation of ~/.mednafen/mednafen.cfg on 7706 some operating systems(*BSD, OS/X). 7707 It was being caused by 'errno' being modified between the attempt to open the settings file, and the test 'if(errno == ENOENT)'. 7708 7709 Silent sound will now be outputted when in step mode in the debugger. Windows users' ears rejoice! 7710 7711 Added a strtod() replacement that recognizes both "." and "," as valid radix characters, regardless of the current 7712 locale, and modified settings.cpp to use it. 7713 7714 Lynx: Removed some unused code. 7715 77160.6.0: 7717 The internal sound format has been changed to 16-bit from floating-point to improve performance, 7718 especially on processors without FPUs. There should be no perceptual nor measurable 7719 loss in sound quality. 7720 7721 Removed fidlib from the source code tree, as it is no longer used. 7722 7723 Lynx: Switched over to Blip_Buffer's lowpass("treble") capabilities from fidlib. 7724 7725 PCE, NES: Added a debugger of DOOOOOM. 7726 7727 PCE: Altered timer emulation slightly. 7728 7729 PCE: It is now possible to load CDs simply by specifying the CUE file, or device, as you would with a ROM image, like so: 7730 mednafen /dev/cdrom 7731 mednafen /home/sauron/games/Ys/Ys.cue 7732 7733 Added MusePack CD-DA playback(IE audio tracks encoded as MPC data) support. 7734 7735 Added legal information to the end of the documentation, though it's likely incomplete. 7736 7737 Switched over to using an internal copy of the "Tremor" decoder, and dropped dependencies on the ogg and vorbis 7738 external libraries. 7739 7740 The CD-DA reading function now provides sound data as 16-bit signed samples in the endian format native to the 7741 host platform. 7742 7743 PCE: Changed two often-used CDROM timing variables from int64 to int32 to try to improve performance slightly on non-64-bit platforms. 7744 7745 PCE: Added a hack that changes subtle CDROM unit behaviour when the game "Sherlock Holmes" is loaded, so that the aforementioned game 7746 will work. In general, I really, really 7747 dislike hacks of this nature, but I think it's justified until I have a better understanding of the (complex) PCE CD 7748 functioning. 7749 7750 PCE: Lowered CDROM data transfer rate, and removed the kludgey one-time delay in the sector reading function. 7751 7752 PCE: Altered ADPCM write delay to be inversely proportional to the playback frequency selected. 7753 7754 GB, GBA and Lynx save-state previews are now saved at native resolution, instead of scaling down to 1/4 of the native resolution. 7755 7756 NES: Fixed a mapper 96 initialization problem. 7757 7758 NES: Implemented blargg's NTSC graphics filtering code(version 0.2.0). 7759 7760 The setting "sounddevice" will now select which filesystem entry(like "/dev/dsp" or "/dev/adsp") to open when using the OSS output driver. 7761 7762 NES: Changed the internal sound channels high-frequency mixing buffer to 16-bit, from 32-bit, to try to increase performance 7763 on cache-starved processors. 7764 7765 Added a simple, non-ideal(it increases CPU usage measureably because it dirties the OSD surface and causes it to be redrawn) 7766 FPS display, toggled with SHIFT+F1. 7767 7768 PCE: Added "hes" and "pce" to the file extensions looked for in ZIP archives in the file loader. 7769 7770 NES: Added support for iNES mapper 38. 7771 7772 Lynx: The lowpass filter can now be optionally disabled by modifying the "lynx.lowpass" setting. 7773 7774 ROM sizes, MD5 hashes, and CRC32 checksums are now printed out for all systems emulated 7775 by Mednafen. 7776 7777 Rearranged the file loader detector to attempt to load the file as a GBA game last, since the GBA cart-detection 7778 code *could* give false positives if the game isn't a GBA game. 7779 7780 PCE: The 2KiB of BRAM is no longer mirrored across the 8KiB segment 0xF7, fixing "RAM is full" problems 7781 with Exile 2. 7782 7783 PCE: Fixed MD5 hash calculation for CD data tracks. 7784 7785 Added settings "gb.forcemono" and "gba.forcemono". 7786 7787 Lynx: Cleaned up the code. 7788 7789 The MD5 hash is now calculated for GBA and Lynx games, and the correct MD5 hash is now used in filenames 7790 (the nibbles in each byte were swapped previously). 7791 ***NOTE*** 7792 Save states and save games created in previous versions of Mednafen will have different filenames than the current version. 7793 To do a quick-and-dirty fix, simply remove the MD5 hash component from the filename as such: 7794 rename somegame.7e74d04f2d147f03061d447310b109ec.sav somegame.sav 7795 7796 Changed autofire behavior to have the button set on half the frames in the autofire period, rather than just one frame. 7797 7798 NES: Changed the background clear color to light blue(from black) when the background is disabled by the user, and 7799 fixed background and sprite disabling by the user to not lock up some games that depend on sprite hits. 7800 7801 GBA: Updates from VBA's CVS: 7802 - bios.cpp : corrected a bug in registerRamReset. 7803 - gba.cpp/gbainline.h : corrected the mirroring of Vram. 7804 - gba.cpp : changed slightly the emulation of gbasavetype. 7805 - RTC.cpp : vba now ignores rtc command 0x64. 7806 7807 GBA: Reduced input latency by one frame. 7808 7809 PCE: Reworked the frame/scanline counter loop to run NMI first, and then draw the active frame area, to reduce input 7810 latency by one frame. Most games keep the vblank starting line outside of the TV's visible display area, but a few(like Dracula X) 7811 have vblank occurring on a scanline that the VDC is still outputting a signal to the TV for. If a game alters its overscan color regularly, 7812 and vblank is set to occur rather early, there might be a slight tearing effect at the bottom of the screen. Note that this is a very minor 7813 problem, and is more than offset by the reduced input latency, though I thought I should mention it so I won't go crazy in the 7814 future trying to debug the oddball game. ;) 7815 Note that this change may cause compatibility problems with PCE save states created in older versions of Mednafen. 7816 7817 NES: Fixed several PPU sprite RAM and VRAM read and write operations to pass blargg's tests. 7818 7819 NES: Altered how the color to be blitted is decided when screen rendering is disabled to fix blargg's 410 color demo. 7820 7821 Fixed scanlines to be aligned correctly(scanline darkening over the pixels that are interpolated between rows) when bilinear interpolation is 7822 used, at least on my nvidia card. 7823 7824 Floating-point/real number settings are now validated and checked to be in range. 7825 7826 PCE: Rewrote SuperGrafx VPC priority evaluation code to work correctly with http://pcedev.net/demos/Sgx3b.zip which was tested 7827 on real hardware. 7828 7829 Simplified the OpenGL blitting code. 7830 78310.5.2: 7832 Modified the PCE code to only include header files that are needed. 7833 7834 Fixed a memory leak in the state saving code. 7835 7836 PCE: Closing HES music files will no longer produce battery-backed RAM files. x_x 7837 7838 Fixed a memory leak in the state loading code. 7839 7840 Reduced memory slightly in the text rendering code by using all the bits available in the array(instead of the lower bit of each byte) 7841 that tells if a glyph is available or not. 7842 7843 Modified the internal message display code to allocate and free space for the message being displayed, rather 7844 than using a rather small static array. 7845 7846 PCE: Fixed a small bug that would cause 1/75 second or less of the old CDDA track to play when switching to a new CDDA track. 7847 7848 PCE: Changed how reads from $0000 are handled, and made vblank occur slightly later in the frame, to fix Valis 1. 7849 7850 PCE: The CD reset function of $1804 now clears more variables, fixing problems with lockups when using the START+SELECT 7851 soft reset in the middle of a data read. 7852 7853 Finally fixed the endian conversion code so that save states(and netplay) are compatible between big-endian and 7854 little-endian systems. 7855 **NOTE** Save states created in previous versions of Mednafen on big endian platforms(such as OS/X PPC) 7856 will no longer work in this version. 7857 7858 Removed the tech documentation from the source code distribution. 7859 7860 Truncated the ChangeLog to the first Nintencer release. 7861 78620.5.1: 7863 Fixed a crashy bug with hq2x, hq3x, and hq4x when using big-endian systems, or when the "vdriver" setting is set to "1". 7864 78650.5.0: 7866 Added a frame-advance feature. Press ALT+A to enter frame-advance mode, and subsequently to advance frames, and ALT+R 7867 to exit frame-advance mode. 7868 7869 The current machine state is now saved at the end of movies, to allow for the future implementation 7870 of the seamless continuation of an already recorded movie. 7871 7872 PCE: When loading from a physical disc, auxillary data(save states, movies, etc.) prefixes should now always be "cdrom", 7873 rather than "cdrom" for the default device and the given name for other devices, because this(previous) behavior 7874 caused problems under Win32(where colons couldn't be used in filenames). 7875 7876 NES: Fixed FDS sound output(it was technically outputting before, but the volume was so low as to be inaudible). 7877 7878 NES: The disk system BIOS can now be in iNES format. 7879 7880 NES: The Game Genie and FDS ROM image loaders can now load the ROM image from a gzip or zip compressed file. 7881 7882 Revised the documentation to remove misleading statements(that applied to FCE Ultra) and add some missing information. 7883 7884 Updated the command-line section of the documentation with warnings and notes regarding settings, network play, 7885 and movies. 7886 7887 PCE: Fixed more bugs with CD reading when sound is disabled. 7888 7889 Loading a save state while recording a movie will now embed that save state in the movie file. 7890 7891 PCE: Save state previews are now generated with correct horizontal linear interpolation, fixing icky 7892 blockiness. 7893 7894 NES: It's now possible to record movies with any virtual input devices(like the Zapper), though the nes.input1, 7895 nes.input2, and nes.fcexp settings must be set the same as they were at recording time, before playback. 7896 7897 NES: All currently used expansion input devices are now saved in save states(before only gamepad data was saved). 7898 7899 Added a network play setting to merge all local input into one virtual remote input(via inclusive OR on the 7900 server), to allow for those UTTERLY SILLY games that support multiple players on one gamepad/joystick. 7901 7902 Worked around an SDL bug(or feature? :b) that was causing events to be processed by SDL 7903 instead of Mednafen when SDL_JoystickEventState() is called. 7904 7905 Scrapped the old movie format from FCE Ultra, and replaced it with a simplified version 7906 that simply writes the joystick inputs to the movie file stream each frame, and 7907 lets zlib handle the compression and encoding. This is incompatible with the old 7908 format, sorry. 7909 7910 Movies are now stored in the right directory finally(mcm vs mcs). 7911 7912 Rewrote most of the on-screen display code to work with a separate 256x224 buffer that is scaled and blitted 7913 independently of the main game's video output buffer. Note that if you have OpenGL disabled(via "-vdriver 1"), 7914 the overlay will not be scaled. 7915 7916 PCE: Added support for multiple resolutions per frame, as used in such games as "Asuka 120%" 7917 and "Ryuuko no Ken". 7918 7919 PCE: Adjusted the internal resolution(and outputted aspect ratio) slightly when using the ~7MHz dot-clock. 7920 7921 PCE: Added movie recording support. 7922 7923 PCE: Adjusted ADPCM volume. 7924 7925 PCE: Fixed left overscan clearing and disabled background lines clearing. 7926 7927 The trio code is no longer compiled with -ffast-math. 7928 7929 Removed netplay divider support(it didn't really work all that well anyway), and removed it from the server as well. 7930 7931 PCE: Changes to the IRQ masking register are now delayed by one instruction, thanks to D. Michel 7932 for the information. 7933 7934 Status messages are now displayed for 2.5 seconds, rather than 180 frames. 7935 7936 Changed save state display timing from frames to seconds, and set it to display for 2 seconds 7937 after a number is pressed(previously it was around 3). 7938 7939 Added the following settings: nes.ggrom, path_snap, path_sav, path_state, path_movie, path_cheat, path_palette. 7940 7941 Changed the data types of "bool" variables that are saved in save states to uint8, to address more 7942 cross-platform save-state compatibility issues. 7943 7944 Fixed a problem with save states on big-endian platforms(was dividing by sizeof(uint32) instead of sizeof(uint16) 7945 in a few places). 7946 7947 Fixed hq2x, hq3x, and hq4x filters on big-endian platforms. 7948 7949 PCE: Pushing the virtual reset or power button during CD reads will no longer cause the emulator to fail on 7950 subsequent reads(a few variables weren't being reset properly). 7951 79520.4.9: 7953 7954 GB/GBA: Added configurable rapid fire buttons for virtual buttons A and B. 7955 7956 NES: Disabling the background now works properly(it no longer also disables sprites!). 7957 7958 PCE: Disabling background layers now replaces that layer with an obnoxious green color that shouldn't be used by any games, 7959 to make sprite ripping easier. 7960 7961 Added settings "fftoggle" and "ffnosound", to make the fast-forwarding button a toggle switch, and to silence 7962 sound during fast-forwarding, respectively. 7963 7964 PCE: CDDA playback interrupt and looping enabled flags are now reset properly, fixing a lockup that occurs when facing a boss 7965 in Valis 2, and possibly other games. 7966 79670.4.8: 7968 PCE: Loading a physical CD will now print out a list of available devices. 7969 7970 NES: Blip_Buffer's highpass filtering capabilities(for DC-offset removal) are now used instead of a custom function. 7971 7972 Modified the included libintl so that it will compile on Mac OS/X. 7973 7974 The "trio" subdirectory should(I can't test it) now be compiled with -mieee on Alpha architectures, 7975 fixing a compilation error. 7976 7977 NES: Fixed long-standing graphical problems with some sprites in (Mike Tyson's) Punch-Out. 7978 7979 Removed "#include <samplerate.h>" from cdromif.cpp and cdromfile.cpp, since I forgot to in 0.4.6. 7980 79810.4.7: 7982 Fixed the NES PPC AltiVec resampling code by properly aligning an output array. 7983 7984 Fixed NES sound emulation on 32-bit platforms(omitting the buffer size to Blip_Buffer::set_sample_rate() 7985 was causing an assert to go off on <64-bit platforms). 7986 79870.4.6: 7988 7989 Dropped the libsamplerate dependency. 7990 7991 NES: Replaced the resampling code from the intermediate frequency after FIR resample with Blip_Buffer. The only 7992 audible effect seems to be a slight lowpass filter effect. 7993 7994 PCE: Integrated the CDDA playback code into the main PCE CDROM emulation code by using Blip_Buffer. 7995 7996 PCE: Removed the compressor and cddaquality settings. 7997 7998 Updated the Russian PO file, mostly to remove or fix grossly incorrect "fuzzy" entries. 7999 Added an incomplete Spanish(Spain) PO file. 8000 8001 PCE: If a data sector read from a physical disc fails, it will be reattempted continuously until it succeeds, 8002 or the user presses the exit key(F12 by default). (note that this may appear to lock up Mednafen, but the 8003 exit key will still work) 8004 This *should* fix problems with physical PCE CDs under Mac OS/X and MS Windows. 8005 8006 Merged trio(http://daniel.haxx.se/projects/trio/) into Mednafen to fix format-string problems 8007 on non-glibc systems(MS Windows for example!). 8008 8009 GB: Modified the APU emulation code to silence a gcc warning. 8010 8011 PCE, Lynx, GB, GBA: Doubled the size of the Blip_Buffer phase offset table for slightly higher sound quality. 8012 8013 PCE: Fixed ADPCM playback code for when sound is disabled(it was ultimately causing a crash in earlier versions). 8014 8015 Converted the MD5 functions to a class. 8016 8017 Fixed(hopefully) compilation on non-Apple PowerPC systems. 8018 8019 Fixed save-state support for saving/loading arrays of 16-bit and 32-bit variables(the hints were already there, 8020 but the code to handle the hints was nonexistant). Note that this change will cause incompatibilities between old save states and 8021 this version on big-endian platforms. 8022 8023 Removed the included "m4" directory, updated autogen.sh, and reran it to regenerate aclocal.m4 with 8024 newer(and fixed on AMD64) versions of the gettext autoconf scripts. 8025 See: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=349845 8026 80270.4.5: 8028 drivers/opengl.cpp now includes the GL header files AFTER the header file that eventually loads config.h is included to fix 8029 compilation on Mac OS X. 8030 8031 Redefined SFEND from { 0 } to { 0, 0, 0}, and fixed older code to use the SFEND macro, to fix crashing on OSX and possibly 8032 other platforms when saving or loading states. 8033 8034 Reduced SDL's buffer size when using the SDL sound driver(used on MacOSX). 8035 8036 Restructured and merged some of the sections in the autoconf script. Note to future self: I noted that it seems if 8037 the first instance of PKG_CHECK_MODULES() is in a statement that doesn't evaluate, any other PKG_CHECK_MODULES() 8038 statements will fail. I don't know if this is a bug in autoconf, or a misunderstanding on my part. 8039 8040 Removed the largely unused ESD sound driver from compilation, as it is mostly unsuitable for use in Mednafen. 8041 Also removed the jack driver, as it was unfinished, and couldn't be used anyway. 8042 8043 PCE: Fixed CD-DA playback from "WAV" audio files on big-endian platforms. 8044 8045 Fixed a compilation problem on big-endian CPUs by adding appropriate type-casts in psf.cpp. 8046 80470.4.4: 8048 Modified the GBA code to not use many INLINEd functions in arm.cpp. This greatly reduces 8049 RAM and CPU usage during compilation, and should have only a negligible impact on performance(and might 8050 even improve performance on cache-starved systems). 8051 8052 Fixed a compilation problem on non-x86 and non-PPC platforms in the NES emulation code. 8053 80540.4.3: (Note: PCE CD save states created in previous versions will not work very well with this release) 8055 8056 Fixed a compilation problem in cdromif.cpp regarding NULL on *BSD platforms by including <string.h>. 8057 8058 Lynx: Fixed the constructor and destructor declarations of the C65C02 class, which should fix a reported 8059 compilation error with gcc 4.1. 8060 8061 GBA: Added a few missing variables to save states. 8062 8063 GB: Lines during which time the screen is turned off are now cleared(fixes flickering problems at the 8064 start of games, and during transitory blank screens). 8065 8066 Fixed the SDL_net.h include statement in drivers/netplay.cpp. 8067 8068 PCE: Fixed a bug with CUE+BIN sector size handling with regards to pregaps. CUE+BIN is still 8069 officially unsupported. :B 8070 8071 PCE: Noise is now rendered at blip_med_quality. 8072 8073 PCE: Removed the code that checks to make sure the audio sector to play is non-zero. Fixes "Crazy Hospital". 8074 8075 Changed the maximum supported playback rate from 96KHz to 48KHz, to be able to safely extend the temporal precision 8076 of Blip_Buffer further. 8077 Note that this shouldn't be considered a regression, as there are virtuall no benefits to using a sample rate 8078 above 48KHz in Mednafen(though there may be benefits in other applications). 8079 *************** 8080 ***BIG NOTE:*** 8081 *************** 8082 If you previously set the playback rate above 48KHz, you will have to manually edit the text configuration 8083 file(~/.mednafen/mednafen.cfg) to bring the value in range. This is necessary because of a limitation in the setting 8084 validation code. 8085 8086 8087 Updated to Blip_Buffer 0.4.0, which offers improved sound quality over previous versions: 8088 - Improved sound quality by rewriting library to use 32-bit internal sample 8089 buffer, higher phase resolution, and a properly windowed filter kernel. Current 8090 user code should work without changes. 8091 8092 PCE: When sprites and background are both disabled, and the VDC is not in burst mode, the scanline is now filled with color 0x000 from the palette 8093 rather than 0x100. This fixes the "Hurry Up" water effect in the CD game "Rainbow Islands". 8094 8095 PCE: Fixed the CD-DA amplitude calculating(used the BIOS' CD-DA player interface). 8096 8097 PCE: Altered VDC line timing slightly. 8098 8099 PCE: ADPCM frequency is no longer reset on ADPCM reset, fixes Gulliver Boy's dialogue voices during 8100 gameplay. 8101 8102 PCE: Fixed reading from nonexistant audio sectors(by memset()'ing the audio buffer to zero). 8103 8104 PCE: Implemented sector reading delays, games that use FMV like Gulliver Boy work much better now. It's not implemented 100% correctly, 8105 and requires a small CPU hack to disable IRQs during a timing-sensitive period of emulation. I don't like hacks, but...it's still better 8106 than the giant hack of reading all the sectors at once, which was how it used to be. 8107 8108 PCE: Implemented ADPCM read and write delay. "Record of Lodoss War" no longer locks up at the title screen. 8109 8110 PCE: Opcode and operand data reads from VDC register 0x1 will now return 0x40, which fixes 8111 Dragon Slayer 2. I doubt this is correct, but it shouldn't break any other game. 8112 8113 PCE: CUE+BIN audio playback no longer locks up the emulator, but CUE+BIN is still 8114 officially unsupported. 8115 81160.4.2: 8117 Fixed sprite hit emulation, fixes problems with VS Duck Hunt and VS Hogan's Alley 8118 that have existed since Nintencer. 8119 8120 Modified VS Unisystem light gun emulation slightly to be more accurate. 8121 8122 Fixed the in-emulator sound(nsf,gsf,hes) player's waveform visualization, 8123 broken in 0.4.1. 8124 81250.4.1: 8126 8127 Joysticks initialization is now slightly more verbose. 8128 8129 Fixed hash calculation in the joystick code, and added a workaround for hash 8130 collisions(which would occur if two extremely similar joysticks are used on 8131 the same system). 8132 8133 Video initialization is now more verbose. 8134 8135 The -<system>.special command-line arguments for selecting a special scaler now 8136 take the short name of the scaler, which is found in the documentation, instead of 8137 arbitrarily-chosen numbers. However, out of the goodness of my cold, black heart, 8138 arbitrarily-chosen numbers may still be used, though it should be considered deprecated. 8139 Example: 8140 -nes.special 1 (deprecated, but works, selecting hq2x) 8141 -nes.special hq2x (good!) 8142 -nes.special wombat (bad!) 8143 8144 libsndfile is now used for WAVE recording(instead of the old ugly code). 8145 8146 Altered the internal floating-point format used to represent audio data by changing 8147 the range to -1.0<=sample<=1.0(previously it was 0.0<=sample<=1.0). 8148 8149 NES: Fixed a 1-byte overflow bug in the Barcode World input device emulation 8150 code by changing a strcpy() to a memcpy(). 8151 8152 Added a "-help" command-line option, which prints out command-line arguments 8153 and parameters. 8154 8155 Fixed the configuration file loading code to exit the emulator if 8156 invalid data is in the configuration file, instead of just ignoring it 8157 and the rest of the entries, thus trashing the configuration file on exit. 8158 8159 Changed the default xscale and yscale settings for Lynx to 4. 8160 8161 Physical mouse buttons can now be assigned to virtual buttons. 8162 8163 The width and height of the state preview are now saved in save states, fixing a problem with broken 8164 save states if the -nes.clipsides option is used, and possibly in other situations(note that this 8165 won't fix the problem in old save states, only new ones). 8166 8167 Fixed a garbage(OSD stuff) problem in screen snapshots and save states when they are done after a frame 8168 that has been skipped(the solution is to delay the snapshot/save state until the next frame, which is 8169 set to not be skip). 8170 8171 Fixed a typo that broke the hq3x effect(it had weird graphical glitches). 8172 8173 Modified more settings to use the new plain-text configuration file format. 8174 81750.4.0: 8176 Various minor code changes I forgot to document. I hope none of them are of the Mednafen-exploding 8177 variety. ;) 8178 8179 Added support for saving and loading settings in a plain-text file format, and moved many 8180 settings to use this code. This file is named "mednafen.cfg" in the Mednafen base directory(whereas 8181 the old binary configuration file is still named "mednafen03x.cfg"). 8182 8183 NES: Merged RDoPCM() into RDoNoise(), reducing CPU usage slightly. 8184 8185 NES: Removed the pedantically high-quality sound mode, and reduced the filter order for downsampling 8186 from 512 to 256, with a larger transition band and smaller passband, creating a somewhat subtle low-pass filter 8187 effect on the audible portion of the signal, and decreasing CPU usage. 8188 8189 NES: Made optimizations to the CPU and PPU emulation code. 8190 8191 PCE: Added -pce.forcesgx, -pce.ocmultiplier, -pce.nospritelimit, -pce.cdbios, -pce.cddaquality, and -pce.compressor 8192 command-line options 8193 8194 PCE: Sound(excluding CDDA in CD emulation mode) is now passed through an audio volume compressor. 8195 8196 NES: Zero-page and stack memory accesses now go through the normal read-write function pointer system. 8197 This will increase CPU usage slightly, but it's important for future plans(readding cheat support, 8198 and an enhanced sound system through OggVorbis and WAV files). 8199 8200 Updated to Blip_Buffer and Blip_Synth 0.3.6b1. 8201 8202 Added special gcc options to configure.ac to get gcc to actually inline many functions 8203 that are specified to be inlined. Sometimes I wonder if gcc developers are sane... 8204 8205 NES: Fixed a weird typo(with apparently no effect) in the B2005() function in ppu/ppu.cpp 8206 8207 Fixed scanlines effect when using a special scaler. 8208 8209 Lynx: Optimized the sound rendering code slightly. 8210 8211 PCE: Added PCE CD emulation. 8212 8213 NES: Fixed the AMD64 MMX sound downsampling assembly code. This bug fix fixes staticy sounds and other problems 8214 with NES audio on AMD64 platforms(only in 64-bit mode, of course :)). 8215 8216 Removed MDFND_UTF8fopen() and MDFND_UTF8gzopen(), since they weren't really doing anything useful, and 8217 the same functionality could be provided more easily with some kind of wrapper library, if it's needed 8218 in the future. 8219 8220 Updated the ZIP-file handling code with the newest version available, 1.01e. 8221 8222 GBA: Updated most of the GBA emulation code with newer code from VBA's CVS repositoy. 8223 8224 MDFN_FastU32MemsetM8() no longer tries to use floating-point data types, which was causing very bizarre problems on x86_64 8225 targets when compiled with gcc 4.0, and was probably an illegal thing to do anyway, as far as 8226 portability is concerned(or maybe gcc 4.0's autovectorizer is broken). 8227 This fixes problems with many GBA games when Mednafen is compiled with gcc 4.0. 8228 8229 Added code to check for SDL_net in configure.ac and error out if it's not found, instead of blindly 8230 trying to compile. 8231 8232 A negative result for the JACK test in configure.ac will now print the result "no". 8233 8234 Removed the argument to AM_GNU_GETTEXT in configure.ac, effectively setting it to "no-libtool". This will 8235 force a static library to be made when necessary, instead of a shared library, which should fix problems 8236 some people have been having with missing shared library error messages(libintl.so.3 and libintl.dll, for example). 8237 82380.3.7 8239 Modified the OpenGL code to use glTexSubImage2D() instead of glTexImage2D() every frame, resulting in a slight 8240 performance increase. 8241 8242 Modified the OpenGL code to use smaller texture sizes with most PC Engine games(at least those 8243 that run at a width of 256 pixels; exceptions include Aoi Blink, R-Type 1 and 2, Yo Bros., and others). 8244 8245 Lynx: Moved CMikie::Update() and C65C02::Update() into c65c02.cpp and mikie.cpp, respectively. 8246 8247 Fixed pointer-to-integer type casting that was causing compiler errors under Ubuntu Linux AMD64. 8248 8249 Modified a lot of code to work around/fix various compiler warnings. 8250 8251 Fixed a few typos in the documentation. 8252 82530.3.6: 8254 8255 NES: Fixed a bug with the VRC6 sound emulation which was causing heap corruption and one sound channel to not work. The bug apparently came up 8256 between Nintencer 0.1.1 and Mednafen 0.2.0. Why didn't anyone tell me... -_- 8257 8258 PCE: Made significant optimizations to CPU emulation. The code's a bit messier now, but I'll clean it up if/when 0.4.0 is released. 8259 8260 NES: Removed the high-level frameskipping code, since frameskipping is automatically used now, and it could easily break some games. 8261 8262 Removed the "-frameskip" command-line option, as it should not be needed anymore. 8263 8264 Unified a lot of the driver-side frame-skipping code. 8265 8266 Fixed a startup bug(MainThreadID was being used before it was set) that was causing the "Starting Mednafen x.x.x" line to be lost. 8267 8268 Slightly restructured the "features" and "command line" sections of the documentation. 8269 8270 PCE: Pressing the "Power" key now resets the internal RAM. 8271 8272 All: Altered the shared music player interface, decreasing the brightness of the text, and adding pseudo-shadows. 8273 8274 PCE: Added simple HES playback code. 8275 8276 PCE: Altered noise emulation slightly, Ninja Ryukenden(and probably other games)'s music sounds more accurate now. 8277 8278 Fixed alignment of the save state preview and selection box when emulating the PC Engine. 8279 8280 The status line text and the save state selection message are now drawn with black shadows, to make reading easier. 8281 8282 Changed the text status line background darkening shape to a rectangle on the NES, and fixed it to display correctly 8283 with PC Engine emulation. 8284 82850.3.5: 8286 Added code to allow for writing to SDL framebuffers directly, without using OpenGL, controlled with the command-line option "-vdriver". 8287 -vdriver 0 = OpenGL 8288 -vdriver 1 = SDL framebuffer(bilinear interpolation and Lynx screen rotation are not available). 8289 8290 Lynx: Disabled the crude(as in, non-working) stereo sound support, and added a low-pass filter to make the sound sound much closer to what 8291 comes out of a real Lynx. 8292 8293 PCE: Adjusted the visible horizontal display area, and overscan, in the 7 and 10MHz dot clock modes. 8294 8295 PCE: Expanded the visible vertical display area by 8 pixels(4 on top, 4 on bottom). 8296 8297 PCE: Altered VDC timing agaaaain. 8298 8299 PCE: Block memory transfers now take 5 cycles(read, write, alter source, alter dest, decrement length?) per byte transferred instead of 6. Fixes 8300 "Wonder Momo". 8301 8302 PCE: Altered HuC6280 instruction timing slightly(removed the tests for indirect indexed and indexed indirect addressing modes to use extra CPU cycles). 8303 8304 PCE: Corrected a timer emulation bug, fixes "Dragon Egg"'s tempo. 8305 8306 PCE: Increased the number of cpu cycles per scanline from 454 to 455, based on tests I performed. 8307 8308 GB/GBC: A sound enable register is now initialized properly on reset, fixing at least one unlicensed game. 8309 8310 Lynx: Disabled the superclipping code, as it's buggy(causes bad sprite clipping and invisible mountains(OHNOS) in Steel Talons) 8311 and doesn't appear to be necessary. 8312 8313 The mouse cursor is now hidden. 8314 83150.3.4: 8316 Added command-line option "-autofirefreq" for setting the frequency of the configured auto-fire buttons 8317 when playing NES and PC Engine games. 8318 8319 PCE: Fixed Street Fighter 2 HuCard emulation. 8320 8321 PCE: Modified PSG waveform writing/DDA emulation, fixes "Fire Pro Wrestling - Combination Tag". 8322 8323 PCE: Modified TRB and TSB emulation. Fixes "Toy Shop Boys". 8324 8325 PCE: Implemented VRAM-VRAM DMA direction control bits. 8326 8327 PCE: Altered VDC timing, fixing a few games, making a few games more bouncy. ;) 83280.3.3: 8329 8330 PCE: Fixed sprite clipping on the left side of the screen. 8331 8332 PCE: The emulated RCR register is now masked with 0x3FF when being set. Fixes Niko Niko Pun. 8333 8334 PCE: Several CPU cycles are now emulated between setting the in-vblank flag and the vblank IRQ occurring. This works around an issue that would otherwise 8335 require timing granularity as small as one cpu cycle. Interestingly, this same type of problem occurs with NES emulation. 8336 8337 PCE: Altered the display rectangle calculation code to take into effect screen areas that may be hidden 8338 on many television sets(and some games were designed with the assumption that these areas WOULD be hidden). 8339 8340 PCE: Modified noise emulation...again. :b 8341 8342 PCE: Modified LFO emulation, fixes major sound problems in "Bull Fight". 8343 8344 PCE: The sprite DMA completion IRQ now occurs earlier(probably a few cycles too early now, but oh well). Fixes some graphical issues 8345 in "Bull Fight". 8346 8347 PCE: Sprite bit plane selection is now emulated to a degree. Fixes "Fighting Run". 8348 8349 PCE: Very high-frequency(and probably inaudible) sounds are no longer played, because Blip_Synth 8350 can't handle them well. Fixes "Bouken Danshaku Don" and others. 8351 83520.3.2: 8353 8354 GB: CGB-specific emulated RAM is no longer saved in save-states. 8355 8356 GB: Fixed a bug in sound sweep emulation. 8357 8358 GBC: The palette is now saved in save states. This fixes a major problem with save states with most GBC 8359 games... 8360 8361 Fixed the SF*N() save state macros to not put quotes around names in 8362 save state files, and added a workaround for compatibility with old save states. This 8363 is an embarrassing bug. :b 8364 8365 PCE: Made major optimizations to the VDC emulation code. 8366 8367 PCE: Rewrote the PSG emulation to use Blip_Synth and Blip_Buffer. 8368 8369 PCE: Altered the noise channel emulation frequency calculation and LFSR emulation. I'm still not sure 8370 if it's correct. 8371 8372 Increased the minimum sound rate supported from 8192 to 22050. I don't test low rates very often, 8373 and there may be loss-of-precision issues with such low rates. 8374 83750.3.1: 8376 Fixed a bug that existed since 0.2.0 that was causing a null-pointer deference in stat(). 8377 Interesting, glibc silently ignored the error, but the error caused crashing under Windows. 8378 8379 PCE: The HuC6280 timer latch is now loaded with an appropriate value on reset. Fixes 8380 "Double Dungeons". 8381 8382 PCE: Added generic PC Engine save RAM emulation. 8383 83840.3.0 8385 Added PC Engine and SuperGrafx emulation. 8386 8387 Save states are now compressed and encapsulated in gzip-format files. 8388 8389 NES: Fixed display rectangle setting code that was causing screenshots from PAL games 8390 to be cut off at the top and bottom. 8391 8392 NES: Added an iNES header correction entry for "Gauntlet 2", to clear the four-screen bit. 8393 8394 NES: Added support for configuring NES gamepads 3 and 4 from within the emulator(during emulation), mapped 8395 to key combinations "F4" and "Shift + F4", respectively. 8396 8397 Fixed virtual input device configuration from the command-line(it was segfaulting before because 8398 the code was dereferencing a null pointer). 8399 84000.2.2: 8401 8402 Fixed a few problems with '#ifdef's when compiling on an MSB-first platform, though 8403 I still haven't tested Mednafen on such a platform... 8404 8405 NES: Fixed a nasty bug in the iNES loading code(the list of known bad ROM images wasn't 8406 terminated with a NULL entry) that could cause segmentation faults on startup in 8407 some situations. 8408 8409 NES: A slightly faster version of the sprite priority handling+blitting code is now compiled when 8410 a 64-bit CPU is "detected" by: 8411 #if (SIZEOF_LONG == 8) 8412 (is this the correct way to determine whether or not the cpu has native 64-bit 8413 integer support? I know it works ok on x86 and x86_64, but what about SPARCs? :b) 8414 8415 NES: Rewrote portions of the sprite rendering and priority comparison code to use simpler 8416 logic. 8417 84180.2.1: 8419 GBA: Converted the DMA registers into arrays, rather than having them as a gazillion different 8420 variables. 8421 8422 GBA: Replaced the if() alpha-blending clamping mechanism with a simple LUT. 8423 8424 GBA: Removed some apparently unnecessary if() statements in the graphics rendering code. 8425 8426 GBA: Made a few experimental optimizations to the graphics rendering code( >> 24 changed to & 0xFF000000 in 8427 some of the priority comparison code). 8428 8429 GBA: Played around with some optimizations in the "gfxDrawTextScreen" function. 8430 8431 GBA: Restructured the CPU emulation code, so I don't have to recompile one giant file when 8432 I make a small change(and so it doesn't use totally obscene amounts of RAM during compilation). 8433 8434 GBA: The sound flushing routine was returning and setting the wrong values, totally breaking the speed-throttling 8435 code. Fixed. 8436 8437 GB: Slightly increased the video contrast and brightness of the original GameBoy's emulation. 8438 8439 GBA: Extended the BLIP buffer size, fixing a startup emulator crash with "Midway's Greatest Arcade Hits", and 8440 possibly other games. 8441 8442 Updated the documentation with better explanations in a few areas, and fixed a few errors. 8443 84440.2.0: 8445 (Sorry, I lost track of changes, but... 0.2.0 is kind of like an entirely new emulator! :b) 8446 84470.1.1: 8448 SDL_QUIT events are now handled properly. 8449 8450 Increased the default fast-forward speed to 4x. 8451 8452 Fast-forwarding will now invoke the emulation frame-skip code, to achieve much higher 8453 fast-forwarding speeds. Fast-forwarding with frame skipping code may break some games, 8454 but I haven't encountered any yet... 8455 8456 Jitter correction is now done when configuring virtual input devices and command keys, and 8457 the button pressed is on a physical joystick/gamepad. This is particularly necessary for 8458 some(all?) analog joysticks connected via the ancient gameport interface on the PC, at least 8459 under Windows 98 ;). 8460 8461 Various code cleanups and subtle usability fixes. 8462 8463 The "cheats" subdirectory under the Mednafen base directory is now created on startup(broken in 0.1.0). 8464 8465 Fixed sound code used when expansion channels are used and the internal pre-downsample target format 8466 is floating-point. 8467 8468 Added error condition checks and more verbose error messages to various pieces of code. 8469 8470 Implemented a modified version of the old PPU rendering code that is used when it is 8471 safe to do so. This helps to offset the increased CPU requirements of the new code. 8472 8473 The command-line option "-nothrottle" works again. 8474 8475 Joysticks are now configured by a unique hash id, instead of by index number. This should 8476 help if people install or uninstall joysticks. It has not been tested, but the code structure 8477 was copied from the old Win32 port of FCE Ultra, so it should work. 8478 Note that this change will break old button configurations in the configuration file from 0.1.0. 8479 8480 Fixed mapper 19's(Namco 106) expansion sound. It now actually outputs sound(broken in 0.1.0)! 8481 8482 Rewrote large parts of the PPU rendering code to be more accurate, and slower. :/ 8483 This fixes Final Fantasy's "orb lighting" effect, and Micro Machines' title screen, 8484 among others. 8485 8486 Reads from $2004 will now return something meaningful to the games "Bee 52" and 8487 "Micro Machines"(it returned nothing meaningful before, so it shouldn't break anything). 8488 This, combined with the correct background palette selection used when sprites and background are 8489 disabled, fixes some graphical issues in Micro Machines and Bee 52. 8490 8491 Internal text rendering will now truncate strings that are too long to fit on the screen 8492 (an issue with NSFEs and song titles...). Is there a better, sane way to deal with this? 8493 8494 Added support for loading NSFE files, and made changes to the NSF player to display 8495 more information if it's available. 8496 8497 file.cpp: The FCEU_f* wrapper functions will now always load the entire file 8498 into memory on FCEU_fopen(). I hope people don't do something silly like trying 8499 to load a 1GB file of garbage. ;) 8500 I might add mmap() capabilities in the future. 8501 8502 Reworked the UNIF/FDS/iNES/NSF file loading code. 8503 8504 Removed the "en" translation from the po directory, since it was a bit...redundant 8505 or silly. If you did a "make install" with 0.1.0, you should run a command like: 8506 rm /usr/local/share/locale/en/LC_MESSAGES/mednafen.mo 8507 8508 Fixed a compile-time error in general.cpp when the asprintf() emulation function is used. 8509 8510 Replaced the SDL WM icon with a scaled image of the Mednafen Beetle. 8511 8512 Fixed the Super24-in-1 bootleg cart board emulation by removing a line of silly debug(?) code. 8513 8514 Added FCEU_indent() function, for use with FCEU(I)_printf(), to automatically set indentation 8515 for newlines, rather than having it in the format strings directly. This should make strings in the 8516 gettext catalogs more manageable. 8517 8518 config.h is now used instead of passing gobs of defines on the command-line to g++/gcc. 8519 8520 Added code and an MDFNI_* interface to set the sound speed multiplier from the driver code, and 8521 modified the driver code to use it. This is MUCH better than the method used in 0.1.0, which 8522 was just telling FCE Ultra to reinitialize sound at a different rate whenever fast forwarding 8523 started and stopped(which caused clicking). 8524 8525 The sprite hit flag will no longer be set if the sprite hit would occur on pixel column 255, which matches 8526 behavior on the NES. 8527 85280.1.0: 8529 Miscellaneous things I've forgotten about. 8530 8531 Command-keys and virtual input devices are now configurable while a game is running. 8532 8533 gettext is now used to provide message lookup services. 8534 8535 Implemented crude Unicode rendering of internal in-game text messages, and several fixed-width fonts 8536 covering most western languages, Japanese, Chinese, and Korean. 8537 8538 Added 2xSaI, Super2xSaI, and SuperEagle video filters, and reordered the integer->filter mappings(used on the command line). 8539 Should I parse for a string instead of an integer on the command-line? 8540 8541 Converted Mednafen to compile with GCC's C++ compiler, though no advanced C++ features are used 8542 yet. 8543 8544 Fixed mapper 165 emulation with code from CaH4e3. 8545 8546 VS Unisystem and Famicom Disk System commands are now saved in recorded movies. 8547 8548 Video blits and special effects are now done in a thread separate from the game emulation and sound output thread. 8549 8550 Command keys are now user-configurably(wow, it happened before the 22nd century!). 8551 8552 Fixed emulation of MMC5's $5130 register. 8553 8554 Fixed sound sweeping emulation; thanks to blargg. 8555 8556 Corrected the behavior of mapper 144 to match what the hardware does regarding bus conflicts. 8557 8558 Removed the low quality sound emulation code, and replaced the old high-quality sound emulation filter code with newer code that 8559 can output to arbitrary rates and uses SIMD instructions if available. 8560 8561 Fixed a rather stupid bug that could break loading of certain non-bankswitched NSFs. 8562