# ZSNES v1.51 Documentation

## History

The following is the history of ZSNES, including the changelogs for every official ZSNES release, and other major events. ZSNES was first released on October 14, 1997.

Spanning the releases between version 0.715 and version 0.990, an ASM-only version was offered alongside the normal ASM+C version. Differences between sister C/A releases are marked as appropriate.

Note: All changelogs before v1.40 were copied from their original text source inside the ZSNES official release packages. We edited the old changelogs as little as possible in order to minimize the accidental loss of information. Therefore, you may find spelling mistakes and formatting differences between different versions.

1. v1.51 - January 25, 2007
2. v1.50 - December 22, 2006
3. v1.42 - January 19, 2005
4. v1.41 - January 18, 2005
5. v1.40 - December 25, 2004
6. v1.36 - July 15, 2002
7. v1.35 - June 23, 2002
8. v1.337 - September 30, 2001
9. zsKnight Leaves - July 23, 2001
10. v1.31b - July 3, 2001
11. v1.31 - June 27, 2001
12. v1.30b - June 16, 2001
13. v1.30 - June 13, 2001
14. v1.29 - June 1, 2001
15. v1.28b - May 28, 2001
16. v1.28 - Unknown Release Date
17. v1.26 - May 17, 2001
18. v1.25 - May 15, 2001
19. v1.20b - April 30, 2001
20. Source Code Released - April 2, 2001
21. v1.17b - December 27, 2000
22. v1.17 - December 25, 2000
23. v1.14 - November 27, 2000
24. v1.12 - November 14, 2000
25. v1.11 - November 12, 2000
26. v1.10 - November 7, 2000
27. v1.01 - September 9, 2000
28. v1.000 - September 1, 2000 - First Windows Release
29. v0.991 - May 24, 2000
30. v0.990 - May 24, 2000
31. v0.9891c/a - February 21, 2000
32. v0.989c/a - February 12, 2000
33. v0.988c/a - December 6, 1999
34. v0.987c/a - November 26, 1999
35. v0.986c/a - November 23, 1999
36. v0.985c - November 15, 1999
37. v0.963c/a - September 19, 1999
38. v0.962c/a - September 18, 1999
39. v0.960c - September 17, 1999
40. v0.953c/a - August 4, 1999
41. v0.952c - August 3, 1999
42. v0.951c - August 3, 1999
43. v0.950c - August 2, 1999
44. v0.941c/a - July 18, 1999
45. v0.940c/a - July 18, 1999
46. v0.915c/a - July 7, 1999
47. v0.910c/a - July 6, 1999
48. v0.900c/a - July 4, 1999
49. v0.800a - December 25, 1998
50. v0.800c - December 24, 1998
51. v0.715 - October 29, 1998
52. v0.700 - October 26, 1998
53. v0.635 - September 24, 1998
54. v0.625 - September 18, 1998
55. v0.605 - September 10, 1998
56. v0.601 - September 9, 1998
57. v0.600 - September 9, 1998
58. v0.400 - May 19, 1998
59. v0.393 - April 15, 1998
60. v0.391 - April 13, 1998
61. v0.390 - April 11, 1998
62. v0.305 - February 12, 1998
63. v0.300b - February 10, 1998
64. v0.300 - February 9, 1998
65. v0.297 - January 31, 1998
66. v0.296 - Not Released?
67. v0.295 - January 29, 1998
68. v0.270 - December 25, 1997
69. v0.201b - November 5, 1997
70. v0.201 - November 5, 1997
71. v0.200 - November 4, 1997
72. v0.182 - October 23, 1997
73. v0.180 - October 22, 1997
74. v0.170 - October 16, 1997
75. v0.150 - October 14, 1997 - Initial Release

### v1.51 - January 25, 2007

#### All Ports:

- Rejoice for finally having 224 lines and them being shown properly in all cases. [pagefault]
- IRQ and timing fixes (fixes Chrono Trigger issues, Super Mario World, and others). [pagefault]
- Fixed bug with certain commandline parameters permanently overwriting config file settings. [Nach]
- Fixed bug with loading new ZMVs of a different version. [Nach]
- Loading ZMV with ROM mismatch prints a message. [Nach]
- Movie menu now has tabs and only shows proper options when available. [Deathlike, Nach, grinvader]
- Slight improvement to the Custom Res functionality. [Deathlike, Nach]
- Keep4_3Ratio option now only shows when necessary. [Deathlike]
- PNG files now use extended height in extended height mode. [Nach]
- Pausing, rewinding, and fast fowarding are disabled during movie dumping. [Nach, SamB]
- You can now force a movie dump length shorter or longer than the actual ZMV length. [Nach, Deathlike]
- Fixes for MEncoder check; added LAME check. [Nach]
- Custom dumping with multiple passes implemented. [Nach]
- Fixed some bad memory reads in command-line parser. Thanks grinvader. [Nach]
- Now there's an option to switch to replay mode while recording movies when loading a state and vice versa. [Nach, Deathlike]
- Fixed a bunch of bugs with certain save selection techniques not working right. [Deathlike]
- Fixed gui font overwrite problem after fixing a cheat. The dots should be gone now. [Jonas Quinn]
- You can now select the level of HQ filtering where applicable. [Deathlike]
- Many tweaks made to reduce GUI mem usage on all ports. [Deathlike]
- ZSNES now properly adheres to the command-line when Auto State Save/Load is used. [Deathlike]
- Quick exit key now adheres to Auto State Save/Load. [Deathlike]
- Inc/Dec Gamma toggles actually DO something. Gamma level is now definable in the config file. [Deathlike]
- Fixed bugs with playing back ZMVs of 2+ players at once. [Nach]
- Fix crash if you rewind farther than the game start in Kirby Super Star, Secret of Mana and some other games. [Jonas Quinn]
- Fix crashing if using rewind in a movie before rewind slot is filled. Thanks BoltR. [Nach]
- Readded the smoke effect. [Jonas Quinn]
- Fixed the Winter Gold crash (but not the freeze). [Jonas Quinn]
- Fixed crash in Super Demo World and possibly certain other large games. [Jonas Quinn]
- Fixed loading many old ZSTs. [Jonas Quinn]
- Fixed some bugs with movies which load from power on with SRAM. [Nach]
- Fixed some issues with DSP-4 movies. [Nach]
- Added ability to have game-specific input. Main input is now stored in zinput.cfg. [Nach, Deathlike]
- Added option in Config->Options for Screenshot format. [Deathlike]
- Fix crash on creation of ZMV if save path does not exist. Thanks Maximus. [Nach]
- Logo support for AVI dumping. Set the logo file in zmovie.cfg; it can be gzip'd if you want. [Nach]
- Pick state menu (default - F3) now has wraparound. Praise Pac-Man! [Deathlike]
- Config file cleanup for more understandability. [Deathlike]
- New Don't Save SRAM option. [Deathlike]
- More GUI cleanup and tweaking, also reorganization. [Deathlike]
- Removed the horrible-sounding Mono Surround Sound code. [Deathlike]
- Source cleanup. [Deathlike, Phil^, Nach, grinvader]
- Parsegen now allows one to define inside a PSR file to have it reject arrays from older config files. [Nach]
- Our assembly syntax shortener now is case-insensitive with new case-insensitive string class. [Nach]
- Archopt has updated flags, added GCC 4.2's -march=native support. [Nach]
- Parsegen now has atoui() which should fix reading very large values. [Nach]
- Ported more assembly to C. [Jonas Quinn]
- Misc. bug fixes. [Deathlike, Jonas Quinn, SamB, Nach, grinvader]

#### DOS Port:

- Fixed snapshots key from attempting to take a PNG when it cannot. [Deathlike]
- Removed old DOS debugger at last. [SamB]
- Clock box option now does something in 8-bit modes. [Deathlike]

#### Win Port:

- Updated and improved NTSC filter. [Blargg, pagefault, Deathlike]
- Added 1600x1200 S Full to Windows port for consistency. Fixed details of 1600x1200 S Win. [Deathlike]
- Fixed crash with HQ4x in windowed mode with Hi-Res Mode 7 on. [Deathlike]

#### SDL Port:

- Fixed broken option on Mac OS X; load menu shouldn't crash anymore. Thanks phf. [Nach]
- Made WIP launch message berate users for not using --enable-release if it was an official release. [Nach]
- Added option to define configuration directory. [Aerdan]
- Mac OS X config directory now defaults to Library/Application Support/ZSNES. [Nach]
- Symlink support for matching ROM name to files. [Nach]
- Updated and improved NTSC filter. [Blargg, pagefault, Deathlike]
- More accurate NTSC ratio. [pagefault]
- You can now use libao for sound, compile with --enable-libao, also see zsnes --help for a list of drivers to use. [Nach, Bisqwit, grinvader]
- Unit testing done; off by one errors in audio sample output fixed. Thanks hakonrk and grinvader. [Nach]
- Now supports ~ (home directory) in various places, most notably ROM loading. [Nach]
- Fixed some filtering and video refreshing issues. [Deathlike]
- Fixed Bilinear Filtering on startup. [Deathlike]

### v1.50 - December 22, 2006

#### All Ports:

For this release, we spent much time rewriting, porting, and improving many internal subsystems. ZSNES is a program with over 200,000 lines of source code, and in this release, over 25% of that has been modified; also, around 15% of the assembly has been ported to C. The upcoming list, while large, can't fully describe the amount of work done and the amount of improvements made. Be sure to see the readme to find out how to use all the new features.

##### Subsystem Additions/Updates/Rewrites/Fixes/Improvements

- Ryan C. Gordon's ManyMouse support added. [Nach, pagefault]
  This allows the systems compatible with ManyMouse (Windows XP, Linux via evdev if read permission set, Mac OS X) to handle each mouse plugged into the system separately. So now games with two mouse-using devices can be played with 2 players (or 1 player controlling both) on a single PC.
  Left Handed Mouse Support. [Nach, Deathlike, Jonas Quinn]
  So lefties can have the buttons for a particular mouse swapped if they so desire.
- Rewrote directory handling system. [Nach, Jonas Quinn, grinvader, Deathlike]
  The old system, dubbed "ZFile", only kept track of files in a limited manner allowing for many many bugs. The new system, dubbed "ZPath", now tracks files and paths in a clean systematic manner to eliminate all file/path related bugs that have made previous versions annoying. All file handling code is now done in C and has many functions to make it easier for anyone else to jump right into this bit of development. This also allows for many new features to be written, and we wrote quite a few. A debug system has also been added, making it easy to track file issues regardless of the operation system in question.
- ZMV Rewritten - Movie Support. [Nach, grinvader, ipher]
  Added support for subtitles while playing a ZMV. [Nach]
  Can now load movies via command line parameter. [Nach]
  Added parameter to close ZSNES when movie is closed. [Nach]
  Our movie subsystem - ZMV has been completely rewritten from the ground up. Now features such as rerecording (via states and rewind), appending, mouse recording, Super Scope recording (buggy), chapters, start types, frame count, input compression, among other things are now all supported. Note ZSNES can still load old ZMVs; however, it should be noted that ZMVs are somewhat version reliant and may desync on a version it was not recorded with. Also, most of the new features will not work when using an old ZMV.
- Can now dump ZMVs to AVI and WAV. [Nach, Bisqwit]
  For years, users have requested being able to convert a ZMV to something else; it is now possible.
- Added IPS multipatch support. Goes from IPS, IP0, IP1, IP2, ..., IP9. [Nach]
  So you can have IPS autopatching apply more than one to a game loaded.
  IPS files now loaded from save directory then ROM directory. [Nach]
  Making it easier for a user to auto patch.
  Fixed silly mistake with size adjustment of IPS patches. [Nach]
  So now the very rare broken IPS should work.
- Rewind and ZST code fully merged; rewind should now work where save states do (Fixes rewinding in Super Bomberman games). [grinvader, Nach]
  Can now use 100 save states instead of 10. [Deathlike, Nach, Jonas Quinn]
  SRAM is now stored in save states and can be optionally loaded from them. [grinvader, Nach]
  Can now select how many rewind states you want. [grinvader, Nach, ipher]
  Can now select how much time is in between rewinds. [grinvader, Nach, ipher]
  Our state saving subsystem has been completely rewritten (although another rewrite is planned) to fix many bugs that used to be present. With the ZST and rewind code merged, it also means no more issues where one works but not the other. This is also now all done in C, making it easier to deal with, as well as allowing many new features as listed above.
- Parsegen invented (thanks grinvader, gladius). [Nach]
  Binary and text config files merged into one and heavily updated. [Nach, grinvader, Deathlike]
  We invented a new programming language (PSR), and a compiler for it (parsegen), which allows one to keep track of variables in a simple manner for both developers and end users. Developers can just declare a particular variable to be tracked and forget about it, letting the system manage everything else, making it easy to add as many configuration options as one likes. For the end user, the config file is all in text, making it easy to modify any feature they like or features for advanced users not changeable from within the GUI. It also provides a level of future compatibility so users should normally not have to delete config files between versions. It also allows partial config files, so users can delete certain settings and have them restored to their defaults. All this is possible while maintaining a high level of flexibility.
- Netplay, Modem, IPX code removed. [grinvader, Nach. ipher]
  As much as we hated to, we had to remove all computer-to-computer playing options in order to fix up the other subsystems since the code was spread throughout ZSNES. We hope to reimplement it in future versions and also provide new features.
- Created new macros and greatly eased GUI development and cut down on size of GUI code. [ipher]
  Cleaned up GUI and reorganized it. [ipher, Nach, grinvader, Deathlike, Jonas Quinn]
  Added tab support to the GUI and made good use of it. [grinvader]
  Rewrote the load game menu, it can now handle thousands upon thousands of ROMs at a time. [Nach, grinvader]
  Added a custom font system. [ipher, Deathlike]
  Nach input boxes (video, path) now have a normal blink rate. [Nach]
  Now using our custom GUI should be easier and more straight forward. Almost everywhere you look, you should see a cleaner design, new features, and fewer bugs. See below for more specifics.
- New unified ZSNES loader which is also less buggy. [Nach, grinvader, Deathlike, Jonas Quinn]
  Now command line options are handled in a more efficient manner, as well as making it much easier for us to add more.
- Committed the ZSNES development toolkit. [Nach, grinvader]
  Code is now always in executable sections, fixes NX and many other issues. [Nach]
  Added utility to auto detect best -march option to compile with; SDL port uses it automatically. [Nach, grinvader]
  For various developers, we now added many utilities to make working on ZSNES much easier. Some of these utilities should be built into the assembler but aren't. These new utilities have also allowed us to easily track down several critical bugs and fix them effortlessly. We also have a utility now to aid the person compiling to get the best optimization out of their build, perhaps now allowing them to use HQ4x or other filters that weren't possible before.
- Updated build setups. [grinvader, Nach]
  Added file dependency utility. [Nach]
  All the build setups have been updated to make it easier and more flexible for one to compile ZSNES and encounter fewer bugs along the way. File dependencies can now also be calculated automatically (most notably for SDL), so one updating ZSNES doesn't run into weird issues with only half of a fix being compiled.
- Ported much assembly to C. [grinvader, Deathlike, Nach, Jonas Quinn, theoddone33, pagefault, byuu]
  Removed dead code. [grinvader, Nach, pagefault, Jonas Quinn, Deathlike]
  Lastly on our big rewrite, a lot of old junk went, and many complex and annoying features are now in C, meaning that if you know C, now is a good time to start helping out ZSNES development.

##### Special Chips

- Fixed all remaining bugs with the SPC7110. SPL4 and MDH are working correctly, now. Special thanks to John Weidman and Dark Force for working on reverse engineering. [Jonas Quinn]
- Super FX updates (Starfox 2 now 99% working). [pagefault]
- OBC-1 code ported to C and integrated properly. Metal Combat doesn't have graphical problems anymore (thanks Nach). [Jonas Quinn]
- DSP-1 finished. [The Dumper, Andreas Naive, Nach]
- SA-1 detection updated (Fixed loading of SD F-1 Grand Prix (Sample)). [Nach]
- Partial Seta 11 emulation (thanks anonymous and Jonas Quinn). [Nach]
- DSP-3 support (opcodes RE'd by Overload and Feather). Thanks Jonas Quinn for finding a bug in my glue code. [Nach]
- DSP-4 Support (Top Gear 3000). [Nach, pagefault]
- C4 emulation should be virtually perfect now. [Nach, Jonas Quinn]
- Now got mapping done correctly for dual Sufami Turbo (thanks byuu); now have two sets of SRAM. [Nach, Jonas Quinn]

##### As for everything else, much was done, including a multitude of emulation updates; it is even hard to count how many emulation bugs are no longer present. Several new features were also added.

- Many Mode 7 fixes, also implemented anomie's Matrix formula (Fixed Energy Breakers world map, IOG intro, Battlemanicas Battlecoptor intro). [Jonas Quinn]
- Added some preliminary NMI and IRQ timing. Proper behavior of H-IRQ when V-IRQ is active. Flickering fix in H-IRQ timing. [pagefault]
- Fixes for DMA, HDMA, so we can have the recent improvements without breaking tons of other games. (SSF2, SFA2, FFMQ, TOP, CT, YI, probably others). [pagefault]
- Init DMA values to FF (thanks Overload). [pagefault]
- Fixed windowing issues in Dragon Quest, Star Ocean, Final Fantasy V, Gradius III, and probably other games. [Jonas Quinn, pagefault]
- Fixed transparency issues in several games, including U.N. Squadron, Final Fantasy 3u/6j, and Star Ocean. [Jonas Quinn, pagefault]
- Fixed SRAM Mapping. Ys III, Dezaemon, Tokimeki Memorial, Dragon Knight 4, Fire Emblem - Thracia 776, *should* all work nicely now. [Jonas Quinn, Nach]
- Fixed a special chip SRAM bug. [Nach]
- Fast ROM is now actually set. [Nach]
- Straightened out the 48Mb/64Mb ROM map. [Jonas Quinn, Nach]
- Fixed Uchuu no Kishi Tekkaman Blade. [Jonas Quinn]
- Fixed ENVxbehavior. [pagefault]
- Some fixes regarding WRAM. Some Open Bus. Thanks _Demo_ & byuu. [Nach, pagefault]
- Fixed the source of the Super Turrican crash. It also fixes my current Robotrek game. I pray this doesn't break anything else... [Deathlike]
- Behold true ROM mirroring. If your translation breaks now, fix it. [Nach, grinvader]
- Evened out ROM scoring quite a bit. A bunch of beta ROMs which didn't load before now should. Special thanks to Cowering for the Reset Vector Popular Opcode Check code. [Nach]
- Say goodbye to speedhacks. [pagefault]
- Changed cycles for scanline 0. [pagefault]
- Removed special timing for EHi roms. [Jonas Quinn]
- Fixed game title in SPC files for EHi Roms. [Jonas Quinn]
- Workaround to fix crashing of certain games (Sim City PAL and Super Tetris 2 + Bombliss) on resolution change. [Jonas Quinn]
- Silly DSP code removed; should fix a lot of games (including EWJ2). [pagefault]
- Fixed program counter in RET macro. Dirt Racer now plays with some blinking, making progress :) [pagefault]
- Implemented some RTO (fixes some FF3 issues). [pagefault]
- Many hacks removed (we now have less than a dozen, and we have the least of all the emulators that use hacks). [pagefault, grinvader, Nach, Jonas Quinn]
- Fixed small screen extra line issues (fixes Super Metroid annoying line issue, so now that guy who keeps on coming into the channel annoying us about it can rest in peace). [pagefault, Nach]
- Fixed bug in hi-res mode (for example, Lufia 2 ending). [MaxSt]
- Fix some randomness in the SPC core for now. [pagefault]
- Fixed loading of small ROMs. [Nach]
- Fixed a bug when the background was cleared to a strange color. [pagefault]
- Updated the bg scroll registers; fixes a couple of games (thanks anomie, byuu). [pagefault, grinvader, Jonas Quinn]
- Memory mapping code is now somewhat sane and can be followed. [grinvader, Nach]
- Updated timing. [pagefault]
- Readded corrected noise frequencies. [TRAC]
- SPC RAM cleared properly on soft reset. [pagefault, Nach]
- Fixed some init glitches. [Nach]
- Pass some more tests on the test cart. [pagefault, Jonas Quinn]
- SPC700 init to ffc0. [byuu]
- Proper logic when drawing sprites while subscreen is present; fixes SMRPG characters disappearing when entering buildings. [pagefault]
- Removed the Sound Buffering option because it isn't doing anything. [Jonas Quinn]
- GUI/Exiting SRAM saving only saves if SRAM Check+Save is off or it's on and SRAM has been modified recently without save. [Nach]
- Super Scope buttons are now configurable. [Deathlike]
- srand() is performed once! and always once per z execution. Water effect B now also has a lot more effecting. [Nach]
- Cleaned up GZip reader. GZip reader now also supports transparent reading, namely a regular file with a .gz extension for no apparent reason. [Nach]
- Added "Show Clock Box" and "Show Rom Info On Load" to the Options menu. [Deathlike]
- Fixed some bugs that were discovered with Valgrind. [Nach]
- Changed the default keys for Player 2 to saner defaults. [Deathlike]
- Fixed some memory leaks. [Nach]
- Remove B CPU core. [pagefault]
- No more TURB! [Nach]
- FPS now displayed correctly for large numbers. [grinvader]
- Fixed crash after SuperFX savestates are loaded. [Jonas Quinn]
- No more alpha for PNGs. [Nach, grinvader]
- Removing unused and probably out of date SPCDUMP. [Nach]
- Prevented 'auto state save/load' & 'auto increment state slot' from interacting. Former takes precedence. [grinvader]
- ZSNES will no longer jump back into the GUI randomly if you press F2 / F4 or some other buttons repeatedly. Special thanks to Dan for the clues on how to recreate it. [Jonas Quinn]
- Added 12 hour clock toggle. [pagefault]
- GUI special case horizon fixed (thanks Motley, Dan). [Nach]
- Crammed a "Documentation" button right below the "WWW.ZSNES.COM" button. [ipher, Nach]
- Fixed crash after enabling Sound Interpolation mid-game. Fixed Gaussian always selected bug when MMX Support is disabled. Some options that are only available with MMX enabled are now hidden if MMX is disabled. [Jonas Quinn]
- Fixed Clear2xSaIBuffer to clear the first line, too. [Jonas Quinn]
- Removed off by 1 line fix. [Jonas Quinn]
- Fixed burning effect in executables compiled with GCC. [Jonas Quinn]
- Removed some DOS only code from other ports and vice versa. [Jonas Quinn]
- Added "+ Gamma" and "- Gamma" hotkeys to the Misc Keys menu. [pagefault, ipher]
- Hacks can now be disabled via command line (-dh). [Jonas Quinn]
- Get_Date returns correct year now. [Jonas Quinn]
- SPC filenames are no longer truncated if there is a dot in the filename. [Jonas Quinn]
- Made gui option save config override dontsave option. Fixed bug #13. [Nach]
- Fixed crash when MMX is disabled and 25% scanlines with interpolation is enabled (bug #142). [Jonas Quinn]
- Fixed corrupted graphics when alt-tabbing. [pagefault]
- Can now display battery power status on laptops. [Nach, pagefault, ipher, David Lee Lambert, drizztbsd]
- Stupid (and old) mistake successfully corrected after manual tracking; fixed bug #52, and probably lots of other sound issues upon state load... [grinvader, Jonas Quinn]
- Added new video modes. [Aerdan]
- Fixed vars in bss section that had no space reserved. Fixed bug #18 on bug tracker. [Jonas Quinn]
- ZSNES now decodes shift-jis headers correctly... but the font is still limited to 5x5. [grinvader]
- GCC 4.0 support. [Nach]
- Fixed a jump to not disable ENV when it shouldn't. [Jonas Quinn]
- Optimization to frame draw code, only draw frames that change. [pagefault, Nach]
- Added error message if hard patching fails. [Nach]
- Fixed the exit procedure. [Nach, Jonas Quinn]
- Updated license. [Nach]
- Option to allow Up+Down/Left+Right for speedruns' sake. [grinvader]
- New variable slow down/speed up options. [grinvader. ipher]
- Lower memory usage. [Nach, Jonas Quinn, Deathlike]
- Panic key now resets offset mode and windowing state. [pagefault]
- Primary Buffer option shouldn't be reversed anymore. [Jonas Quinn]
- Added pause and frame increment options (buggy). [Nach, grinvader, ipher]
- Key combos for player 5. [ipher]
- Mode 4 offset change overflow fix in rendering code. [pagefault]
- Fixed crashes related to wrong MMX detection. [Jonas Quinn, Deathlike, hector]
- Major framerate improvement when using new graphics engine. [pagefault]
- JMA: Fixed some bugs in decompression. Improved performance. Lower memory requirements. Support for JMA v1 files. [Nach]
- Changed video change accept key to spacebar. [Nach]
- Added info on load if ROM is patched. [Nach]
- Fixed 100% CPU usage when no game is running. [pagefault]
- ZSNESW can now be compiled in MinGW without any fancy NASM patches. [TRAC, Nach]
- Fixed bugs with SRAM Check+Save option. [grinvader, Nach, Jonas Quinn]
- Initialized many vars which were not. [Nach]
- Added comments so people have more of a clue. [pagefault, grinvader, Nach, ipher]
- Fixed warnings. [Nach, theoddone33, grinvader, Jonas Quinn]
- Configure script fix for Gentoo users, and debug builds now use -O0, because we can. [grinvader]
- Partial scons support [theoddone33, Aerdan, Snarius]
- Added CPU parameter for specific CPU optimizations when compiling for an MS platform. [Nach]
- Added debug build support for MS ports. [Nach]
- Can now compile without JMA support. [Nach]
- Greatly updated, overhauled, and unified documentation. [AspiringSquire, Deathlike, Jipcy, Nach, Noxious Ninja, Richard C., xamenus, and others]

#### DOS Port:

- Fixed sample rate to not be able to select 32000 Hz or bigger rates when they are not available under certain circumstances. [Jonas Quinn]
- 8 bit modes now save images as BMP. [Nach]
- Can now compile without a debugger. [Nach, Jonas Quinn]
- Can choose old or new debugger. [SamB]
- Fixed ROM loading from the command line for DOS when a VESA2 mode is selected. [Jonas Quinn]
- Now runs proper clean up code on exiting. [Nach]
- Updates to input code, now supports more parallel pads. [Deathlike]
- Can now set via command line player 1 and 2 to any input.
- Rewind can now be used. [Nach]
- Quick load menu now shows full internal names, or if LFN, as much as the other ports show. [Nach]

#### Win Port:

- Fixed a really strange crash problem on Windows 2003 systems. [pagefault]
- You can now use gamepad in the background without ZSNES having focus. [pagefault]
- Fixed bugs so ZSNES can be run in VMWare. [pagefault]
- Can pause emulation in the background. [pagefault]
- Fixed black screen after the computer was locked. [Jonas Quinn]
- Fixed inline assembler in winlink.cpp when compiled with optimizations. [Jonas Quinn]
- Added custom video modes. [Deathlike2, Nach]
- Debugger now works in this port. [SamB, pagefault]
- Added KitchenSyncPal and fixed a lot for KitchenSync issues [Deathlike, Poobah]
- Added ForceRefreshRate as a replacement for Force60Hz. I'm sure someone will fail reading the cfg file for help. [Deathlike]
- Added Keep 4:3 ratio as requested a while back by gltamarin. This is useful for laptops/LCDs that use non 4:3 resolutions. [Deathlike]
- Can now set joystick sensitivity. [Deathlike]
- Can now view ROMs by SNES internal name. [Nach, Deathlike]
- Changed default option the Windows port uses due to sanity reasons. Also, a check was added to prevent the black screen (and maybe double vision) issue. A message box will now pop up to tell you what options you have. [Deathlike]
- Disable Screensaver Option now disables all annoying power management stuff. [Deathlike]
- Changed "High Priority Mode" to "Use A Higher Priority" and Above Normal Priority is used on NT. [Deathlike]
- Nach input boxes (video, path) now allow pasting via ctrl+v. [Nach]
- Added NTSC filter. [Blargg, pagefault, ipher]
- Fixed strange sprite priority bugs after switch to window/fullscreen. [Jonas Quinn]

#### SDL Port:

- Fixed bilinear filter in GUI [grinvader]
- Fixed video change freeze problems in port. [Nach]
- Make sound processing use less CPU cycles. [Nach]
- Fixed input responsiveness for controllers 3+. [bssteph]
- Added freedesktop.org file [pagefault]
- Fixed screen refresh for SDL software modes when toggling hq2x. [grinvader]
- Fixed a key repeating bug when changing resolutions. [grinvader]
- Fixed bug where mouse buttons were conflicting, right mouse click by itself on 3+ button mouse. [Nach]
- Updated wheel handling. [Nach]
- Added a Variable OGL mode to center ZSNES output with proper ratio. [NBondoux]
- Added custom video modes. [Deathlike2, Nach]
- New scancode handling system, should fix problems with non US keyboard and Mac OS X. Thanks hector.
- Debugger now works in this port. [SamB]
- Can now set joystick sensitivity. [Nach]
- Added Keep 4:3 ratio as requested a while back by gltamarin. This is useful for laptops/LCDs that use non 4:3 resolutions. [Deathlike]
- Can now view ROMs by SNES internal name. [Nach, Deathlike]
- Hopefully fixed numlock keypad quick select in the F3 menu. [Deathlike]
- Fixed bug when trackballs are present; also cleaned up joystick code a bit. [spoon0042]
- Make stack non executable for ELF. Thanks drizztbsd. [Nach]
- Mac OS X support. [Nach, hector, BRPXQZME]
- Removed dangerous checking of environment variable for user's home path. [Nach]
- Fix compilation on OpenBSD. [pagefault, Nach]
- Added NTSC filter. [Blargg, pagefault, ipher]

### v1.42 - January 19, 2005

#### All Ports:

- Corrected output of BRR decode for invalid range values (>12). [TRAC]
- Fixed sustain level 4 (5/8). [TRAC]
- More window boxes now have borders. [ipher]
- Close zip files properly when IPS is not found in zip (fixes crashing with certain zlibs). [Nach]
- Cleaned up some code. [Nach, ipher, grinvader]
- Ported chip detection to C, improved BS detection. [Nach]
- Ported rewind to C (thanks Nach, TRAC). [grinvader]
- New reminder text. [grinvader, AspiringSquire]
- Rollback of "Improved accuracy of base rates used for ADSR, GAIN, noise, and echo emulation". [ipher]

#### DOS Port:

- Fixed label for Fullscreen/Widescreen options. [ipher]

#### SDL Port:

- DESTDIR support. [theoddone33]

### v1.41 - January 18, 2005

#### All Ports:

- Improved accuracy of base rates used for ADSR, GAIN, noise, and echo emulation. [TRAC]
- Fixed GUI escape stack corruption if .srm file could not be written to. [Nach]
- Stereo settings now obey config file. [Nach]
- Fixed framerate loading from config file. [ipher]
- ZSNES no longer hacks itself in order to access variables; this eliminates a few issues we had. [Nach]
- Source code cleanup. [Nach, ipher]
- Makefile overhaul; ZSNES can now be cross compiled. [Nach, ipher, malcster, SamB]
- Fixed some invalid memory reads. [Nach]
- Ported config file creation/loading to C. [MKendora, Nach]
- Percent of execution now takes h-blank values into consideration. [pagefault]
- Fixed Winter Gold FX crash. [Nach]
- Filtered GUI is now enabled by default. [Nach]
- Save location can now be edited in the GUI. [Nach]
- Added option to enable/disable auto IPS patching. [Nach, ipher]
- Saving last ROM info to rominfo.txt can now be turned off. [ipher, Nach]
- Organized options menu, and split off save related options into its own menu. [ipher]
- Moved Super System DIP switches to the chip configuration menu. [ipher]
- More boxes have borders now! [ipher]
- New one-time user reminder text. [grinvader]
- Updated about box. [Nach, ipher]
- Overhauled toaster support. [Nach]

#### DOS Port:

- Fixed a number of keyboard shortcuts in the GUI. [ipher]

#### Win Port:

- Get_Date() now returns the proper value (it always returned the proper value in DOS). [Nach]
- Correct timing when compiled with MinGW (Special thanks to Jonas Quinn for all his help in getting ZSNESw compiled with MinGW and working). [Nach]
- More informative error messages when some DirectX component fails to load. [Nach]
- Return 0 instead of random value on exit (keeps certain frontends happy). [Nach]
- Fixed keyboard shortcut for "Trap Mouse Cursor". [ipher]
- Changed text in netplay window to be more clear about TCP/UDP. [pagefault]
- Updated ZSNESw compilation instructions in install.txt. [Nach]

#### SDL Port:

- Get_Date() now returns the proper value (it always returned the proper value in DOS). [Nach]
- Fixed a memory leak. [Nach]
- Fixed buffer underflow in sound code when rate was changed several times. [Nach]
- Save files can now be correctly saved in locations other than ~/.zsnes. [Nach]
- Updated video selection menu. (Thanks, Aerdan!) [ipher, Nach]
- 256x224 R Full for is now actually 256x224, not 320x240. (Thanks, Pieter Hulshoff!) [ipher]
- 640x480 ODS Win is now actually 640x480, not 512x448. [ipher]
- Added 1280x1024. [ipher]
- Changed text in netplay window to be more clear about TCP/UDP. [pagefault]
- Homepage button to open browser now appears in about box. [Nach]

### v1.40 - December 25, 2004

#### All Ports:

- Added multiple timing tweaks, fixed various emulation bugs, and many other technical updates, including (but not limited to): SPC core updates (with improved sound decoding), safer memory allocation in certain areas, HIRQ and VIRQ fixes, color add/sub and color bleeding fixes, HDMA improvements, sprite priority and flickering fixes, and a slew of SRAM fixes. Many more games work :D. [pagefault, _Demo_, Nach, TRAC, Overload, theoddone33]
- Overhauled a lot of code, such as checksum calculation and mirroring code. Overhauled and added much better EHi/Hi/Lo ROM code, improved reset vector, and changed much hard coding to variables. Fixed more SRAM bugs than we can count. Made optimizations to complex loading functions, syntax, memory init (Thanks kode54), execution, and initialization code. Also greatly improved PAL/NTSC detection. Also now has much better chip detection and gives more informative chip names. More games which never loaded before now load properly, such as Dai Kaiju Monogatari 2; it now loads and plays great without the Dejap patch. [Nach]
- Cleaned up, overhauled, removed, and ported a lot of code (asm to C). [pagefault, MKendora, Nach]
- Overhauled IO latch behavior, added proper latching behavior and other latch fixes (such as proper latching of bit 7 on $4201), and added proper behavior of RDIO regs. [pagefault]
- Removed many, many hacks. [Nach, pagefault]
- There have been some modifications and reorganizations of the GUI, including new path setup and chip configuration windows and a reorganization of the Game Key window. [pagefault, Nach]
- Updates to the video code, with enhancements of triple buffering, better input support in the video dialog, and other general video code updates and bug fixes, such as a fix for the 60hz mode. [pagefault, MaxSt]
- New extra options are now available in various locations, like the "GUI burning effect", new commandline options, a new quick key to control players 1/2 with 3/4, and smaller message text. Some obsolete ones have been removed. [pagefault]
- Some changes in the Input configuaration: Hitting "Set Keys" is now prevented if controller is set to "None". Also, if no controller is selected, the settings of the individual keys are now locked. [Nach]
- Updated default configuration, in general. For example, stereo sound is now enabled by default at 32khz, with gaussian interpolation. [pagefault]
- Signed saturation fix for gaussian interpolation (Thanks kode54). [pagefault]
- Fixed several Netplay issues. [_Demo_, pagefault, Nach]
- Fixed some of our .zmv movie recording problems. [Nach]
- Fixed a small bug in SPC saving. [pagefault]
- Fixed issues with config file saving. [pagefault, Nach]
- Fixed PNG snapshot filenames and PNG height. [StatMat, Nach]
- Fixed DIP switch 2 on Super System. [pagefault]
- Fixed an auto frameskip issue (Thanks MKendora). [pagefault]
- Fixed rewind when using commandline filename. [StatMat]
- Fixed some issues when loading ROMs via command line. [Nach]
- Removed ROM info that appears when loading via command line. [Nach]
- Added a command-line savestate fix. [StatMat]
- Fixed an annoying savestate bug. [pagefault]
- Super Bases Loaded 2 works better, due to a fix in DSP-1 mapping. [_Demo_]
- Horai Gakuen works better, due to a special fix. [_Demo_]
- Lufia 2 problems are now fixed. [pagefault]
- Emerald Dragon now works - again. [pagefault]
- Many updates on the SPC7110, such as normal timing, special ratio removal, and better pack loading code. [_Demo_, pagefault, Nach]
- Removed SPC7110 logger and S-DD1 test. [grinvader]
- Removed support for interleaved SuperFX ROMs. [Nach]
- Added several improvements and memory map adjustments for more accurate BS emulation. [Nach, pagefault]
- Added call init code for DSP-2,3, and 4. [pagefault]
- Added better support for split ROMs with headers and detecting interleaved ROMs. [Nach]
- Added support for many more ROM extensions. [Nach]
- ROM info now dumped to rominfo.txt on game load. [Nach]
- Added more information lines on ROM load, such as CRC32, video, and bank information. [pagefault, Nach]
- Added support for some NSRT features, such as NSRT header support and support for ROMs using NSRT's JMA compression format. [Nach]
- Zipped ROMs no longer need a temporary directory. [Nach]
- Added better handling of bad files. [_Demo_, Nach]
- Implemented soft IPS patching functionality, with in-zip file support, buffering, and RLE support. [Nach]
- Added a compatibility update to PPU. Passes one more electronics test (Thanks MKendora!). [pagefault]
- Fixed variable types in many locations; ZSNES can now play games without hacking the binary to make code segments writable. [Nach]
- Made ZSNES more HTPC friendly. [pagefault]
- Fixed many compiler warnings, added compiler optimizations, and more compiler fixes and code cleanups. [Nach, MKendora, theoddone33, pagefault, ipher, SamB]
- Unicode support partially supported. Will complete later. [pagefault]
- ZSNES now displays the day it was compiled in the about box. [Nach]
- Updated authors.txt, support.txt, thanks.txt, and todo.txt. [pagefault]

#### DOS Port:

- Fixed cubic spline interpolation. It should actually save the option now! [pagefault]
- Fixed other various DOS sound bugs. [Nach, pagefault]
- Fixed a frameskipping bug. [pagefault]

#### Win Port:

- Updated icon with Windows XP compliancy. [cdbsi]
- Added new disable screensaver code. [pagefault]
- Added a CPU utilization fix. [kode54, pagefault]
- Added 48khz sound support, updated sound code, and fixed sound bugs. [pagefault, Nach, ipher, StatMat]
- Fixed a couple of input bugs, such as one concerning the 5th joystick and another that made the mouse get stuck in an endless loop. [pagefault]
- Removed alternate timer. [pagefault]
- Fixed Netplay freezing bug. [pagefault]
- Many new video features, including (but not limited to): HQ2X, HQ3X, and HQ4X graphic filters, support for hi-res and D modes in 32bpp windowed mode (now default), new aspect ratio code for scaling, and the KitchenSync (usable only via the commandline). [MaxSt, pagefault, Darkfalz]
- Fixes for video code errors, such as those that occured when alt-tabbing in fullscreen, MMX interpolation fixes, and blitter fixes. [pagefault, zsKnight]
- Snapshots are now numbered and use the full ROM file name. [Nach]
- Renamed Windows version to Win32. [pagefault]
- Win32 port can now also be compiled with MinGW (but we won't support it till the next release). [Nach, Jonas Quinn]

#### SDL Port:

- Updated icon. [cdbsi]
- Updated Linux video code to Windows version. [pagefault]
- Fixed problems with nVidia cards. [Diablo-D3]
- Fixed audio problems with broken drivers. [Diablo-D3]
- Added 48khz sound support. [pagefault]
- Updated joystick input support. [theoddone33, Sander]
- Fixed savestate incrementor; this caused some crashes. [pagefault]
- Cleaned up the Linux Autoconfigure [Diablo-D3]
- Added a couple of things for the start of BeOS compatibility. [theoddone33]
- Fixed 16->32bpp LUT related bug. [kode54]
- Added hardcoded alt-enter fullscreen toggle. [theoddone33]
- Added dialog for why the video mode couldn't be set. [theoddone33]
- Added circle buffer patch (savestate fix). [zinx]
- Fixed problem with man page when installing (when man1 directory doesn't exist). [hpsolo]
- Fixed cmd line sound quality. [pagefault]
- Fixed zlib and libpng issues. [theoddone33, pagefault]
- Updated libpng version checking [theoddone33]
- Added -lm to acinclude.m4 so AC_TRY_RUN doesn't return negative on some systems looking for libpng. [theoddone33]
- Overhauled makefile. [theoddone33]
- Fixed install target; -D should not be used. [theoddone33]
- Added the name of the start address to the error message that occurs when mprotect fails. [theoddone33]
- Update config.sub. This allows configuration on 64-bit targets, and requires autogen.sh to be rerun. [theoddone33]
- Added HQ2X filter! [MaxSt, pagefault, zinx]
- Snapshots are now numbered and use the full ROM file name. [Nach]
- Renamed Linux version to SDL. [pagefault]

#### We have also greatly improved support for special hardware in ZSNES v1.40. These require special mention:

- SuperFX core updates:
  - pagefault
- SA-1 core updates:
  - pagefault
- C4 core updates:
  - Research: anomie
  - Main Code: Nach
  - Special thanks to The Dumper and TRAC!
- DSP-1 core updates:
  - Data Retrieval: pagefault, Overload, The Dumper
  - Main Code: pagefault, Overload, The Dumper, neviksti, Andreas Naive, _Demo_
  - Integration: MKendora, Nach
  - Processing Code: pagefault, Nach
- DSP-2 emulation:
  - Data Retrieval: Overload
  - Research: Overload, neviksti, MKendora, The Dumper, CaitSith2
  - Main Code: kentaro-k.21
  - Processing Code: pagefault, kentaro-k.21
  - Special thanks to Lord Nightmare!
- S-DD1 emulation:
  - Data Retrieval: The Dumper, Dark Force, zsKnight, Gary Henderson
  - Research: Andreas Naive
  - Main Code: anomie
  - Processing Code: _Demo_, Nach
  - Special thanks to all the other developers and users who worked on this hard project!
- ST010 emulation:
  - Data Retrieval: The Dumper, MKendora
  - Main Code: The Dumper, Overload, Feather, Nach
  - Processing Code: The Dumper
  - Code Fixes: pagefault
- Sufami Turbo support (preliminary):
  - Nach
- SD Gundam G-Next and Same Game expansion pack support:
  - Nach

### v1.36 - July 15, 2002

- Fixed Gunforce, added invalid HDMA modes. [_Demo_] (Thanks Overload!)
- New BRR decoding method, this should resolve all the sound issues introduced in 1.35 and fix new ones. (Noise simulation isn't used anymore) [_Demo_]
- Fixed another bug with command-line netplay. (Windows only) [pagefault]
- Fixed hang in NBA Live 95 and 96. [_Demo_] (Thanks Overload!)
- Fixed sound not working on first run. (Windows only) [pagefault]
- Fixed some more mode 4 issues in the new gfx engine. [pagefault]
- Added offset mode disable toggle to 8-bit new gfx engine. [pagefault]
- Fixed SPC hang in 90 Minutes European Prime Goal by clearing spcram. [_Demo_]
- Updated fix for Clayfighter to fix some bugs in battle. [_Demo_]
- Fixed crash with certain games. (SDL/*nix only) [theoddone33]
- Added better OBC1 detection. [_Demo_]
- Special hack for Samurai Showdown IRQ problem. [_Demo_]
- Special hack for Kamen Rider menu, requires special latch reading. [_Demo_]
- Special hack for Super Famista 1 & 2 SPC bugs. [_Demo_]
- Fixed some more bugs in video code. (Thanks Perryman for the video table) (Windows only) [pagefault]
- Fixed Digital Devil Story hang by modifying the spc code. You must start a new game for the fix to work. [_Demo_]
- Modified work ram init value to 0x55. (Thanks TRAC)

### v1.35 - June 23, 2002

- Fixed triple buffering corruption on some VESA 2.x video modes, a very nasty bug which accidentally slipped into version 1.337. [stainless] (DOS only)
- Added full scanlines to 320x256x8b Mode-X. Uses the same timings as the 256x256x8b full scanlines, so it may or may not work correctly depending on your video card. [stainless] (DOS only)
- Linked the EAGLE engine to the filtered GUI option and fixed guassian interpolation which has been broken since version 1.71b. [stainless, kode54] (DOS only/all ports)
- Cleaned up the 320x480x8b and 320x240x16b blitters and added MMX support to 320x480x8b for a nice speed increase. [stainless] (DOS only)
- Added 640x400 alternatives to 512x384 video modes for video cards which don't have them. Added a small screen option to the 512x384 and 640x400 video modes with MMX support. Also added a "wide screen" option to 640x400 video modes. [stainless] (DOS only)
- Added a full screen option to the 320x480 video modes, along with a basic interpolation to 320x240x16b and 320x480x16b. Full screen in 320x480x16b has full/25%/50% scanlines and interpolation has full scanlines. [stainless] (DOS only)
- Added experimental 800x600 video modes. Fixed 'n' command-line option to allow toggling of 25%/50% in addition to full, also cleaned up the command-line options message and the config file. Noticed some video modes were way off-centered, fixed that too, should now be perfect. [stainless] (DOS only)
- Fixed printing of MMX enabled message on the GUI background if you checked MMX SUPPORT under CONFIG -> OPTIONS. Also, if you check MMX SUPPORT by using the keyboard shortcut it will now attempt to actually detect MMX before enabling it. :) [stainless, pagefault] (DOS only)
- Command line support in windows port [StatMat]
- Fixed problem when some video modes were not being saved. (Windows only) [pagefault]
- Lots of updates to Linux/SDL version, including sound fixes, video code updates and other misc bugs. [theoddone33, Thorsten Glaser, Wilbern Cobb]
- Fixed gamma in PNG snapshots. [pagefault]
- Added several new goodies to the GUI, which include a force 8-bit sound option (fixes a few cards under WinMe), a second water effect, and an experimental smoke effect. [stainless] (DOS only/all ports)
- Fixed problem with sound getting disabled when running command-line network games. (Windows only) [pagefault]
- Updated video code in Windows port to properly display 239 line modes. (Windows only) [pagefault]
- Commented, unified, and cleaned up the Mode-Q and Mode-X blitters. I did a major overhaul to the DOS video code, I cleaned up and reorganized it alot, and there seem to be no problems as of yet. [stainless, TRAC] (DOS only)
- Fixed a bug in sprite priority rotation. (fix damage in FFMQ) [TRAC]
- Fixed long delay between battles and fixed flickering colours on map in Front Mission. [pagefault]
- Fixed hang when picking up apples in Equinox. [pagefault]
- Fixed keyon bug in DSP code, fixes sounds in Flaskback 3 Language Edition (Thanks neviski) [_Demo_]
- Fixed "disco colours" in NBA Hangtime when the ball drops. [pagefault]
- Fixed an NMI issue with register $4212, fixes hang in Cu-On-Pa, Bubsy and others. [pagefault]
- Fixed a mode 4 bug in the new graphics engine that was causing the title screen in The Lost Vikings to be scrambled. [pagefault]
- Added support for Super System arcade system, set DIP switches in add-on's menu in GUI. Games MUST be zipped in order to load. [pagefault]
- Added special support for Earthworm Jim 2 sound effects. [_Demo_]
- Added hack for Deaetonosama Apareitiban. [_Demo_]
- Fixed super scope position reading. [_Demo_]
- Modified a few timing things. [_Demo_]
- Fixed some 65816 instructions in processor emulation mode. [_Demo_]
- Added special timing for Grand Prix 3. [_Demo_]
- Modified sound decoding another time (helps various noise sounds like DQ6). [_Demo_]
- Modified joypad reading for VS Collection. [_Demo_]
- Special modification for Bahamut Lagoon and Clay Fighter to delay write to the hdma register. (those games need dma delay implemented) [_Demo_]
- Lots of other minor fixes and things we forgot to mention.

### v1.337 - September 30, 2001

This release is dedicated to zsKnight and his family

#### All ports

- Added a customizable key to toggle display of the game clock [pagefault]
- Added support for up to 100 SPC file saves per game [pagefault]
- Added customisable keys to increment and decrement the save state slot [pagefault]
- Added a customisable key to quickly save an SPC file [pagefault]
- Added force NTSC/PAL and force HiROM/LoROM options to GUI [pagefault]
- Added a customisable key to toggle the display of the FPS counter [pagefault]
- Added keyboard shortcuts to video options menu [pagefault]
- Added feature to automatically increment save state slot after each save [pagefault]
- Added new 8-point sound interpolation and two new lowpass filters (requires a fast processor, 8pt interpolation and high quality lowpass requires an MMX processor) [kode54]
- Fixed an annoying bug when the menu selection bar would be floating in thin air (Thanks to EMu LoRd for pointing this out) [pagefault]
- Fixed MMX toggle option, now saved when you restart ZSNES [pagefault]
- Fixed freeze/crash when saving SPC files [pagefault]
- Fixed filtered GUI option with 2xSaI enabled not refreshing the screen [pagefault]
- Fixed graphics when reseting a game with 2xSaI engine on and the FPS counter and/or game clock on [pagefault]
- Fixed Vortex, Clayfighter 2, Mr. Nutz, Tenchi Wo Kurau Sangokushi Gunyuden and others now working again [_Demo_]
- Fixed Umi Hara Kawa Se and Tin Tin in Tibet [_Demo_]
- Fixed LoROM/HiROM detection code, Star Trek: Deep Space Nine and possibly others now working [pagefault]
- Fixed Front Mission: Gun Hazard and Pocky and Rocky, now working again [_Demo_]
- Fixed Neugier and Battle Grand Prix freezing after a certain point in the game. [_Demo_]
- Fixed bug in rom header information and checksum status display, fixes Tales of Phantasia and others [pagefault]
- Fixed Marko's Magical Football copy protection [pagefault]
- Fixed problem with Filtered GUI enabled and parts of game screen would show up in GUI menus [pagefault]
- Fixed frameskip command-line offset [pagefault]
- Fixed Sim Earth, now loads but map is still not visible [_Demo_]
- Fixed crash in Home Alone when starting a new game [_Demo_]
- Fixed sprites in Super James Pond 2 and Kirby Avalanche (Thanks Snes9X for the info) [_Demo_]
- Fixed 256x239 SNES resolution offset in Windows and Linux ports, games that use this resolution should now be displayed properly in these ports [_Demo_]
- Fixed freeze in Accelebrid after a few seconds of gameplay [_Demo_]
- Fixed cursor getting messed up in Windows and Linux ports when using a 16-bit desktop [_Demo_]
- Fixed bugs when switching between fullscreen and windowed modes with fullscreen button in Windows and Linux port [pagefault]
- Fixed Triple Buffering and vsync options so they can't be enabled at the time (Triple buffering includes vsync automatically) [pagefault]
- Fixed sprite layer disappearing when changing screenshot formats or moving the F1 menu [pagefault]
- Fixed a clipping offset bug in the new gfx engine [pagefault]
- Fixed BG3 issue with sub-screens in new graphics engine, fixes gfx in Bahamut Lagoon's intro and lots of other games [pagefault]
- Fixed timing problem in Clock Tower that caused it to freeze randomly in-game, implemented a hack for now [pagefault]
- Fixed Cu-On-Pa freezing when starting a new game (Thanks to Lordtech for the help) [_Demo_]
- Optimised global code base, most people should see a performance increase [pagefault, stainless]
- Moved vsync option from game options menu to video options [pagefault]
- Improved S-DD1 decompressed pack loading and execution, increases performance in S-DD1 decompressed pack games [pagefault]
- Lots of debugger fixes and additions [byuu, bongo]
- Removed disable screensaver text from DOS and Linux ports [pagefault]
- Updated water effect code to using lighting effects [stainless, kode54]
- Improved SPC700 sample processing, fixes sounds in numerous games [_Demo_]
- Disabled H-DMA for Bahamut Lagoon and Mortal Kombat, fixes some gfx problems [pagefault]
- Changed default keyboard layout for player 2 as some keys were overlapping player 1 (Oops!), If you were having problems buying things in FF4 or in other games make sure to change your keys for player 2. [pagefault]
- Cleaned up config file in Windows and Linux ports, removed DOS related comments [pagefault]
- MMX option now checks for a MMX processor when enabling it in the GUI, also no longer crashes on processors without a cpuid when detecting MMX [pagefault, kode54]
- Last netplay IP address used is now saved in Windows and Linux ports [pagefault]
- Reorganized sound menu; removed sound interpolation checkbox and made a new list of different types of interpolation: gaussian (original interpolation with enable interpolation option), cubic spline and 8-point interpolation. Also made a new list of lowpass filters. [pagefault]
- Removed FPU copy from -? option on command line message, since it is no longer supported. Also cleaned up that message in general [stainless]
- FPS at program start option no longer enables FPS display when auto framerate is not enabled [pagefault]
- Updated video interpolation code, now looks better than before [kode54]
- Lots of misc GUI fixes and cosmetic tweaks [pagefault]
- (UPDATE) Added surround sound to Windows and Linux ports, updated filter in DOS port (This was left out of the previous whatsnew file) [kode54]

#### DOS v1.337

- Added grayscale mode toggle to GUI [pagefault]
- Added support for 5 SNES gamepads on LPT1 [ZDrumm]
- Added two new 256 color linear VGA video modes, 256x224 and 256x240 [stainless]
- Added proper gamma correction, now ranges from 0 (1.0) to 15 (~2.0) in 8bpp modes [stainless]
- Fixed Filtered GUI option, now works [pagefault]
- Fixed full scanlines disappearing in some modes [pagefault]
- Fixed a handful of bugs in the joystick code which may cause the joystick not to work if it has a driver installed under Win9x control panel [stainless]
- Fixed date problem in S-RTC games not reporting the proper day of the week [stainless]
- Fixed issue with some sound blaster compatible cards not working properly in the DOS port [kode54]
- Reordered video modes in alphabetical order [stainless]
- Improved SNES pad reading routine, any speed hit now should be minimum when using a snespad adaptor [pagefault]
- Improved interpolation performance [stainless]
- Default keys for player 1 are now the same as Windows and Linux ports [pagefault]
- You can now use / in command line options in addition to the previous - character [stainless]

#### Win v1.06

- Added option to toggle the trap mouse cursor feature which prevents the mouse cursor from leaving the window by accident [pagefault]
- Added 640x480 DS WIN; 1024x768 DR FULL; 1280x960 S/DS WIN, S FULL; 1280x1024 DR/R/DS WIN and FULL resolutions [pagefault]
- Added a more meaningful message when changing to a resolution isn't supported [pagefault]
- Fixed problem with SRAM not being saved when pressing ALT-F4 in game [pagefault]
- Updated icon yet again, looks really nice. [enigMa]
- Fixed possible crash when exiting [pagefault]
- Fixed bug when scrolling in scrollboxes in the GUI would not trap the mouse cursor inside the scrollbox like the DOS port does [pagefault]
- Either alt key can now be used when using the alt-enter combination to switch to fullscreen [pagefault]
- Removed triple buffering option from windowed video modes (it does not work in windowed mode) [pagefault]
- Optimised some Windows port specific code, should give a small speed boost for most people [pagefault]
- Rewrote mouse input code, much more efficient now. [pagefault]
- Reordered video modes in alphabetical order; removed 64x52 and 128x112 resolutions (Thanks to Terrorcide and McGuiver for helping me test this out) [pagefault]
- Improved performance in 32bpp windowed modes [pagefault]
- Rewrote some of the audio code to be much more efficient, also added MMX optimisations [pagefault, kode54]
- When switching to windowed mode from fullscreen, the window position is now remembered [pagefault]
- Removed large sound buffer and exclusive mode option, they shouldn't be needed anymore [pagefault]
- Now uses idle task priority when in GUI and window is not active, should also smooth task swtiching on slower computers [pagefault]
- (UPDATE) Fixed server IP bug when using zbattle.net or command-line options to connect [pagefault]

#### Linux v0.37

- Added autoconf support for easy compiling [Diablo-D3, amit, theoddone33]
- Fixed sound buffering in linux port to improve sound on some cards [Diablo-D3]
- Implemented S-RTC time functions, FEoEZ and other S-RTC games will now report system time in game [pagefault]
- Now supports compiling with gcc 3.0.0 [EvilTypeGuy]

### zsKnight Leaves - July 23, 2001

I'm sorry to say this, but this marks my permanent leave from the ZSNES project, anything related to this, and emulation overall. The reason why is that my dad just passed away today (he died in his sleep, which is strange since he was perfectly healthy yesterday night), so I'm going to have to spend more of my energy devoted to helping my family. My dad is also the main person who provides the finances to the family (since my mom doesn't work), plus I still have about 2 more years to go before I graduate from university, so my immediate future doesn't look that great because with my dad gone, that would mean that I need to put up more responsibility towards taking care of the family instead of studying. But I just hope that everything will go well. Thanks to all you supporters for everything. Sorry for the lack of a proper goodbye though, so I'll probably update once more after I get out of this shock in another day.

- zsKnight

### v1.31b - July 3, 2001

#### All ports

- Fixed Super Punchout, now working [zsKnight, _Demo_]
- Fixed SD Gundam GNext again [_Demo_]
- Final Fantasy Mystic Quest now works again [zsKnight]

#### Win v1.04

- Fixed grayscale toggle [pagefault]
- Updated icon again for black backgrounds [enigMa]

#### Linux v0.31

- Now compiles and runs on QNX6 systems [TheAlien]

### v1.31 - June 27, 2001

#### All ports

- Fixed Mode 4 offset bug (Fixes Bust-A-Move, Puzzle Bobble possibly others) [zsKnight]
- Emerald Dragon is now working [_Demo_]
- Fixed Last Bible 3 DMA problem (Thanks to SNES9x for the info) [_Demo_]
- Fixed Super Robot Was Ex (Thanks again to SNES9x for the help on this) [_Demo_]
- Moved disable SPC emulation option to sound menu where it should be [pagefault]
- Fixed Wizardry 4 and Honkakuha Igo Gosei, interleaved funny [_Demo_]
- SD Gundam GNext no longer crashes ZSNES, and actually is playable now. [_Demo_]
- Spindizzy worlds should work again [_Demo_, zsKnight]
- Dezaemon sprites working now, had to clear OAM address when first address byte is written to [zsKnight]
- Power Rangers the Movie working, was reading from register 2144 [_Demo_]
- King of Rally now working [_Demo_]
- Emerald Dragon working, added a hack to disable ENVx for that game [_Demo_, zsKnight]
- Full Throttle Racing working, fixed a bug with the wai 65816 instruction [_Demo_, zsKnight]
- Renamed black and white mode to grayscale mode [pagefault]
- Got Traverse Starlight and Prairie to go further, but it still freezes after several scenes [zsKnight]
- Mario RPG minecart Mode 2 scene working better now [zsKnight]

#### Win v1.03

- Added disable screensaver feature to disable screen saver while ZSNES is active [pagefault]
- Fixed yet another DirectInput slowdown [pagefault]
- Added joystick POV hat support (Thanks to kode54 for testing and fixing my code) [pagefault, kode54]
- Added error messages and directions if DirectX 8.0 is not installed [kode54]
- Fixed another Windows 2000 freeze on exit bug [pagefault]
- Fixed BSOD when loading roms on some systems [pagefault]
- Hopefully fixed a crash when multiple roms where in a single zip file (only one rom can be loaded per zip file) [pagefault]
- Fixed a possible crash when loading/continuing a game (Thanks to Metus for pointing this out) [pagefault]

#### Linux v0.29

- No changes

### v1.30b - June 16, 2001

#### All ports

- Support for Star Ocean S-DD1 decompressed pack is now enabled. [zsKnight]
- Fixed bug in H-DMA code, fixes Hook and Bugs Bunny and maybe others (Thanks to Gary of Snes9X for help on this) [_Demo_]
- Updated documentation [Matt Kendora]
- Fixed new gfx mode checkbox in options menu [pagefault]

#### Win v1.02

- Added 800x600 DR FULL mode (scroll down to the bottom of the mode list to see it)
- Fixed timing problem in games when 58 seconds was 1 minute in ZSNES [kode54, pagefault]
- Fixed voices in ToP opening and Star Ocean [pagefault]
- Fixed another DirectInput slowdown [pagefault]
- Fixed joystick 5, it should be working now [pagefault]
- Optimised code some more, giving 3-5 FPS boost on most systems [pagefault]

### v1.30 - June 13, 2001

#### All ports

- Bubsy 2 working again [zsKnight]
- Batman: the return of the joker working now [_Demo_]
- Sound Novel T-Cool and Derby Stallion 96 memory mapper added [_Demo_]
- Fixed BRR block header bug (fixes Raiden Densetsu, Chrono Trigger, Gundam Wing: Endless Duel, and a few other games) [_Demo_]
- Updated documentation [Matt Kendora]
- New whatsnew.txt format [pagefault]

#### Win v1.01

- Updated icon [enigMa]
- Added 1280x960 DR, DR FULL modes to Windows port [pagefault]
- Fixed random crash when loading roms in Windows port [pagefault]
- Rewrote resolution switching code [pagefault]
- Window now moves much smoother and faster [pagefault]
- Readded large sound buffer option [pagefault]
- Fixed CPU usage when window was minimized [pagefault]
- Fixed multiple instances when window was minimized [pagefault]

#### Linux v0.29

- OpenGL support [hpsolo]
- Bilinear option (w/ filtered GUI) [hpsolo]
- Fixed video mode descriptions (zsnesl.cfg) [hpsolo]
- Resizable windows [amit]
- Filter options (scanlines, 2xSaI, etc) for OpenGL modes [zinx]
- Many more video modes for OpenGL, including full screen [hpsolo]
- Joystick POV hat support [hpsolo]
- Added support for 5th Joystick [hpsolo]

### v1.29, Win v1.00 - June 1, 2001

- Implemented triple buffering in full screen mode (Huge thanks to whatabubba for his help on this and cleaning up the code) [whatabubba, pagefault]
- Fixed top 8 lines being invisible of FFMQ [zsKnight]
- Optimised DirectDraw code some more giving a 10-15% speed increase [pagefault]
- Fixed black screen when switching windows [pagefault]
- Improved loading and shutdown time [pagefault]
- Rock 'N Roll Racing is working again [zsKnight]
- Fixed Lennus 2's sprites [zsKnight]
- Almost figured out Wizardry 4's rom format. It seems like this game was incorrectly dumped so everything in it is out of order. [zsKnight]
- Final Fight 2 is working again [zsKnight]
- Vsync option now works in triple buffering mode [pagefault]
- Now shows minimize window animation when minimizing [pagefault]
- Fixed mouse pointer under full screen mode [kode54]
- New ZSNES icon in Windows port (Thanks for all your entries) [enigMa]

### v1.28b, Win v0.99 - May 28, 2001

- Added a filtered GUI option to allow graphics engines such as 2xSaI to be used in the GUI [zsKnight]
- Fixed SA-1 save states [zsKnight]
- Fixed Breath of Fire crashing bug when loading [theoddone33]

### v1.28, Win v0.99 - Unknown Release Date

- Added option to allow multiple instances of ZSNES (off by default) [pagefault]
- Fixed Lufia 2 sprite disappearing bug [zsKnight]
- Fixed quick menu crash problem when the entries other than the first one is selected when the load menu is opened [zsKnight]
- Modified SPC700<->65816 timing again to get Hook working [zsKnight]
- Added more keyboard shortcuts to GUI [pagefault]
- Fixed vram read to get Smash Tennis working again [zsKnight]
- Hopefully fixed lockup when exiting Windows port [pagefault]
- Added a spc700 timing hack for Super Final Match Tennis until I re-write the timing engine later (but not anytime soon though) [zsKnight]
- Kinda got Rendering Ranger 2 to go further, but this game seems to use some picky timing, so this will have to wait until I re-write timing in the future. [zsKnight]
- Removed large sound buffer option since it wasn't really useful [pagefault]
- Fixed 16bit access to address $001FFF (or equivalent). Fixes Super Tetris 2+Bombliss. [zsKnight]
- Implemented 128KB sram support. Dezaemon runs now (but it suffers graphics glitches at the moment) [zsKnight]
- Fixed Wordtris (reading from 002100) [zsKnight]
- Fixed reset function in William's Arcade Classics [zsKnight]
- Tuff-E-Nuff works now (another timing hack *sigh* )
- Added exclusive DirectSound mode option [pagefault]
- Fixed corrupt graphics in Rock'n Roll racing (reading from invalid memory) [zsKnight]
- Added alternate timer for people having problems with zsnes running too fast [bootgod,pagefault,zsKnight]
- Fixed corrupt graphics in Captain America (also reading from invalid memory) [zsKnight]
- Implemented latest save state selection in Windows port [pagefault]
- Added v-sync to Windows port (enable in options to use it, should fix most graphical tearing issues) [pagefault]
- Fixed mid-screen OAM updating. Uniracers works in 2 player mode. [zsKnight]
- Combined the new header detection method with the old one, producing a much better method [zsKnight]
- Added SA-1 read/write to BWRAM bitmap mode in the lower banks [zsKnight]
- Fixed "freeze data" text [hpsolo]
- Fixed SA-1 write to BWRAM bitmap mode. It seems like this was the main cause of the level-up screen not working in Mario RPG. [zsKnight]
- Fixed cpu usage when ZSNES is in the background doing nothing [pagefault]
- Re-wrote character conversion 1 for 2bpp, implemented cc1 for 4bpp [zsKnight]
- Fixed vertical high resolution mode for tile priority 1 [zsKnight]
- Fixed Terranigma overworld glitch in the new graphics engine 16bit engine [zsKnight]
- Enabled RTC in Windows port [pagefault]
- Moved the Transparent Message option from the Options to the GUI Optns section. [pagefault]
- Added Trainered rom support [zsKnight]
- Fixed BG4 graphics in certain games (fixes Digital Devil Story) [zsKnight]

### v1.26, Win v0.97 - May 17, 2001

- OBC1 support broke in a recent CVS update. Fixed now. [zsKnight]
- Added full scanlines to the Win/Linux port [zsKnight]
- Added Mouse Wheel switch [zsKnight,pagefault]
- Fixed problem with interpolation/2xSaI/scanlines being saved in the windows port [zsKnight]
- Improved 512 byte header support. This should improve compatibility with some games [zsKnight]
- Added 768x672 and 1024x896 DR, R windowed video modes to Windows port [pagefault]
- Windows port now uses the primary DirectSound buffer [pagefault]
- Modified 65816<->SPC700 timing. I hope this doesn't break anything [zsKnight]
- Fixed a vram read behavior problem (fixed Equinox dungeons) [zsKnight]

### v1.25, Win v0.93 - May 15, 2001

- Fixed cheat menu text when game was not loaded [pagefault]
- Fixed unlabed checkbox in DOS port [pagefault]
- DSP1 - Fixed plane controls in Pilotwings [_Demo_]
- dosintrf.asm - Fixed header detection in the dos port [zsKnight]
- gui.asm - Video mode checking done at initialization [zsKnight]
- Enabled mouse wrap in the Windows and Linux ports [pagefault]
- Fixed full screen mode switch when the user starts ZSNESw before selecting any full screen modes [zsKnight]
- Made default video mode 512x448 windowed in Windows port [pagefault]
- Prevented enter key from affecting gameplay on returning from F1 and F3 menus [zsKnight]
- Added minimize button to the Windows port [pagefault]
- Added always on top option in GUI options menu [pagefault]
- Menu fix for 8bit graphics modes [zsKnight]
- ZSNESW now remembers the window position on your desktop (can be disabled in GUI options) [pagefault]
- Fixed crashing problem with some IPS's in ZIP's [Teuf, zsKnight]
- Ported to DirectX 8.0 which fixed some problems and improved performance (DirectX 8.0 is now required to run ZSNESW) [pagefault]
- DSP1 - Fixed map offset problem in Pilotwings [zsKnight]
- DSP1 - Fixed rings being mysteriously passed problem in Pilotwings [zsKnight]
- Fixed DirectSound crash when a normal priority buffer could not be acquired [pagefault]
- Fixed DirectInput compatibility on some computers [pagefault]
- Optimized DSP1 code for better performance [teuf]
- Added proper full main/sub-screen window clipping in the new gfx 16bit engine (fixed Illusion of Gaia/DKC2 selection screens, etc) [zsKnight]
- Added checksum/header name/chip type header display upon game load [zsKnight]
- Added PNG snapshot support which is selectable in the F1 menu [Matt Kendora]
- Stunt Race FX old graphics engine force fixed [zsKnight]
- Fixed MegamanX copy protection schemes [zsKnight, Matthew Kendora]
- Fixed TopGear 2 PAL version from detecting a PAL system [zsKnight]
- Implemented OBC1 chip (for Metal Combat) [zsKnight]
- Fixed Mode 7 bug in Super Ghouls and Ghosts [zsKnight]
- Added turbo keys for L & R keys [zsKnight]
- OBC1 emulation support. Metal Combat works! [zsKnight]
- You can now customizable the colors to the title bar and window colors. [zsKnight]
- Optimised global code to provide up to a 50% speed increase on it on most processors [pagefault]
- Added black and white mode to Windows and Linux ports [pagefault]
- ZSNESW is now packed with the newest version of UPX [pagefault]
- Cleaned up the cfg files for windows/linux ports [pagefault]
- Fixed command-line crash in the Windows port (Thanks Matt Kendora) [pagefault]
- Save/Load state now displays which state is being loaded [hpsolo]
- Added double buffering support to Linux port [teuf]

### v1.20b, Win v0.88 - April 30, 2001

- Final Fantasy Mystic Quest works again.
- Fixed Empire Strikes Back crashing bug in the millenium falcon sequence (hopefully this will fix some other games too)
- Removed all self-modifying code in ZSNES. This will make ZSNES crash a lot less on certain systems, especially during mode 7 sequences. Thanks Ivar!
- Implemented S-RTC chip, using the system clock as the actual time (The game will make you set the time though, but it will just be replaced with the system time in-game). Thanks to John Weidman and Dark Force for the info on this chip!
- Fixed crashing bug in certain mosaic scenes (eg. FF3 Phantom Forest) in the new graphics engine
- Fixed a nasty crashing/corruption bug in the new graphics engine (both 8bit and 16bit)
- SPC7110 emulation! This is based on the information reverse engineered by the hard working folks at dejap translations, Dark Force and John Weidman.
- Altered HiROM/LoROM detection a bit - Fievel goes West works now
- Open source preparations [teuf]
- In-game clock working for the windows port. [kode54]
- Fixed a memory leak problem in the new graphics engine [TRAC]
- Added Cubic Spline Interpolation [Anti Resonance]
- Fixed a assign/compare size bug in the new graphics engine [TRAC]
- Fixed b flag setting in BRK instruction in 6502 emulation mode [zsKnight]
- Added SPC7110 logger file output to help in the filesize clipping of the SPC7110 data files [zsKnight]
- Fixed a memory leak bug, fixing that nasty Win2K crash bug [Matthew Kendora]
- Fixed key combination release [Maxim]
- Fixed source code warnings/added necessary includes [Maxim]
- Added high priority mode for Windows 2000 users and slower computers (works on Windows 9x as well) [pagefault]
- Added large sound buffer option for people having DirectSound problems. [pagefault]
- Fixed problem with ZSNESW and Opera causing a BSOD. [pagefault]
- Fixed up error reporting for people experiencing problems. [pagefault]
- Improved performance on 3dfx cards by compiling with DirectX 8 SDK. [pagefault]
- Fixed a sound problem with people with messed up config files. [pagefault]
- Fixed FF3 flashing line problem [zsKnight]
- Fixed mysterious sprite disappearing bug in the new graphics engine [zsKnight]
- Reduced noise in ToP opening theme. It works fine in the DOS port, but the windows port still seems to produce some static, probably because of the way how sound is updated in that port. [zsKnight]
- Updated Super 2xSaI and Super Eagle code (should be much faster now on MMX processors) [Kreed, added by pagefault]
- Added gzip support [teuf]
- Added support for ViBRA16 cards [Peter Santing]
- No longer requires zlib.dll file, now statically linked. ZSNESw won't crash anymore if you try to load a .zip file without that dll file. [pagefault]
- Now compiled using an optimising compiler [pagefault]
- Almost a fully re-written DSP-1 emulation engine! [zsKnight, theoddone33, pagefault, teuf]. Also thanks to CrASH_Man for the 3x3 inverse matrix formula.
- Fixed memory leak problem in the windows port during exit [pagefault]
- And more ...

### Source Code Released - April 2, 2001

The ZSNES Sources have finally been released in the CVS repository of the sourceforge page. We also would like to welcome Teuf as a member of the ZSNES team as an assistant coder! He's helped us with quite a lot in the past while, including (but not limited to) setting up the Source Forge page, helping us to write the open source documentation, fixing up the ZSNES sources to not require a custom version of nasm, organizing the sources into directories, modifying the make file, etc. With the sources released, we also hope to release an updated binary soon. Click on the Sourceforge link on the left side of the screen to access the sources. The sources will also be available in a ZIP file for those who don't want to use CVS.

### v1.17b - December 27, 2000

- A nasty bug has crept into the DOS version in the 8-bit video modes, so a fixed version (v1.17b) is released (it has the same filename as v1.17 so just overwrite it).

### v1.17, Win v0.85 - December 25, 2000

- Added slow-down key. You can configure it in Misc -> Game Keys
- Invulnerability bug of the 3rd boss in Demon's Crest in the good checksum roms is fixed through rom mirroring. I also noticed that this fix is the same as what the author of SNEeSe told me before about on some MegamanX1 roms, but I never had that rom so I never added this until now. Guess that rom is also fixed too.
- Changed memory initialization values - Lost Viking 2 works again
- 65816: Fixed WAI instruction timing with HIRQ's. Top Gear 2 - 2 player mode works now
- Improved IRQ re-execution timing precision
- Starfox 2 beta now runs with sound!
- Fixed flickering problem in Starfox 2 beta
- Added Mode 2 16x16 tile offset per tile mode
- (Win32) Improved the timestamps on UDP headers. This should (hopefully) solve those out of sync (where both sides see different things) problems with certain connections (ie. T1/LAN connections) in netplay.
- (Win32) Added a big notice in netplay.txt. For all of you who used netplay and had poor experiences with a ping time of less than 300ms, read it! Also added a more realistic system requirements description for decent netplay in netplay.txt rather than a cpu speed estimate.
- Changed reverse stereo method to become invisible to the sound registers in emulation

### v1.14, Win v0.80 - November 27, 2000

- Fixed configuration files from removing spaces from directory names
- (DOS) Fixed 640x480 vesa2 scanline+interpolation display problem
- (Win32) Improved Windows speed in 32-bit windowed mode. Should give around an 18% speed increase in FPS.
- (Win32) More netplay improvements. Shouldn't be as jumpy when one side lacks input.
- (Win32) Starting netplay will now force the max frameskip to 3 if it is less than it and also force on auto frameskip.
- (Win32) MMX optimised netplay with back buffer enabled.
- (Win32) Fixed load state in netplay to load properly instead of sometimes stalling for no reason
- (DOS) Accidently deleted the code to initialize IPX. Fixed now.
- Fixed a configuration loading problem when loading ZSNES from a different directory.
- (Win32) Attempted to fix those out of sync problems (although I don't know if it's fixed now since those problems rarely happen to me)
- (Win32) Displayed the current filename in the load window for those files with extra long names.
- (Win32) Added nickname support to NetPlay. There's a 9 character nickname size limit.
- (Win32) Added actions to chat (similar to how mIRC works - use /me <action> )
- (Win32) Nicknames can be changed in the windowed chat by typing /nick <new nickname>
- Added a small buffer to the in-game chat to allow up to 5 chat strings displayed at once.
- Local chat strings now appear in that buffer
- Thickened black borders on the 5x5 font
- Extended in-game chat length by around 30 characters
- Fixed up Interpolation

### v1.12, Win v0.74 - November 14, 2000

- (Win32) Hopefully fixed up those green display bugs in scanlines/2xSaI in 1:5:5:5 16bit modes.
- (Win32) Improved lost packet recovery time and reduced the number of lost packet stalls in UDP netplay (should produce more fluid netplay)
- (Win32) Fixed up crashing bug in Tales of Phantasia with a 512 byte header
- Extended filename length of the Quick Menu
- (Win32) Hopefully fixed up the mouse wheel support for certain mice
- Temp .ZIP directory is now cleared if it exists prior to another .ZIP file being loaded.
- (Win32) Improved DirectInput error handling

### v1.11, Win v0.72 - November 12, 2000

- (Win32) ZSNESw won't crash anymore if you don't have a soundcard or if DirectSound fails to initialize.
- (Win32) Fixed a nasty performance bug with certain types of joystick/drivers installed, causing the FPS to be slower for no reason.
- (Win32) Wrote an MMX optimised blitter for 16bit non-D windowed and full screen modes.
- (Win32) Added simple wheel mouse support.

### v1.10, Win v0.70 - November 7, 2000

- Fixed games that turns on the x239 resolution (eg. Chrono Trigger battles) when scanline mode is enabled
- (Win32) Fixed up crashing bugs on extra long filenames with underscores
- (Win32) Hopefully fixed the odd colored interpolation in 1:5:5:5 16bit color settings
- (Win32) Hopefully won't crash anymore when the temporary directory exists prior to unzipping a .zip file
- (Win32) Fixed loading of .zip files with more than 2 '.'s in the filename. Thanks to DCX for helping us troubleshoot this.
- (Win32) Fixed up short filename saveram/save states loading when the long filename has spaces in it.
- Added TCP/IP Support. It is recommended that for playable netplay, you'd have an average ping time of less than 300ms (type ping <ip address> in dos) and that packet loss is minimal for TCP/IP (not UDP). At the moment, you cannot have more than 2 connections. Thanks for all the testers for testing this, especially DooMStalK, GreenImp, and TeleKawaru! Also added back buffer support. This will sacrifice cpu power for netplay to make it much more playable. WARNING: High cpu speed recommendations (~450mhz+). Please see netplay.txt for details.
- Added save states to netplay (just use them like you normally do)
- Save Ram is now defaulted to load/save on the server's side Save Ram are not supported in SA-1/SuperFX games due to their size, but you can use save states instead in that case.
- Increased chat line length in the out-of-game chatbox by a lot
- Partly increased the chat line length in-game
- in-game chat text now stays longer on-screen by 2 seconds
- Added reset in netplay
- Fixed up movie recording feature
- (Win32) Mouse shouldn't get stuck on the left side anymore.
- (Win32) Video mode 3 (256x224FS) shouldn't crash anymore. Thanks to kode54 for his assistance on the above 2 bugfixes.
- (Win32) Fixed the instability bug where the window can sometimes start shaking for no reason and takes away windows resources.
- (Win32) Re-wrote keyboard character input routines
- Fixed up FF2(4)'s music in lower sampling rates
- (Win32) Coded in the UDP protocol as a replacement for TCP/IP. Some network configurations won't work with UDP. However, it is strongly recommended that you use UDP if you can because of the speed increase. In order to disable UDP and use TCP/IP, both sides must de-select UDP.
- (Win32) Added a small multiplayer game list (multi.txt)
- Added an updated Windows FAQ, courtesy of TuxedoMsk of VGNetwork who updated it.
- Added a more user friendly input selection routine (changed Direct Input to Keyb/Joystick and it also auto-sets keyb/Joystick when you set a key)
- Hopefully fixed up the sprite priority problems (eg. FF2/4's damage points)
- (Win32) Added rewind support for up to 8 levels (in 8 second intervals) (NOTE: Windows Port only! - Sorry DOS Port users). In order to activate this, assign a key to the Rewind Key in the Misc -> GameKeys option.
- Note: Netplay plays really nice as long as the net connection is not unstable, both sides have a fast cpu (speed requirements depend on the game), and at least have a 28.8 connection.
- *** PLEASE READ ZSNESW.TXT IF YOU ARE STILL HAVING PROBLEMS WITH THE WINDOWS PORT

### v1.01 - September 9, 2000

- Fixed a problem with offset per tile mode with MMX2 in the new 16bit engine
- Fixed crashing problem in MMX2 (Win port)
- Removed clock option (Win port)
- Disabling the new graphics 16bit engine is now properly saved in the configuration files
- Added the win port version number to the about box (Win port)
- Fixed the % of execution problem in IPX/Modem modes (DOS port)

### v1.000 - September 1, 2000 - First Windows Release

- Implemented C4 emulation :
  - C4 Sprite structure -> OAM conversion routines
  - Sprite Rotate/Scale ability
  - Sprite disintegrate function
  - All in-game used math co-processor functions (hopefully)
  - Both wireframe modes
  - There are still some problems with C4 emulation, but I'd consider them to be quite minor to just leave them there.
  - Thanks to StarCreator for recording a bunch of movies off of the real snes for me to compare!
- Tweaked ADSR a bit
- Decreased envelope when key on is issued while sound is still playing. This fixed static/popping sound bugs that affected many games.
- Added the ability to select the Add-on device (Snes Mouse/Super Scope) from the GUI through the Add-on option in the Config Menu
- Added a hack to allow the mouse to control the cursor in Lethal Enforcers (Press '7' 4 times to activate or select it from the Add-on option in the Config Menu). Unfortunately, this method has problems (ie. mouse moves things that it shouldn't) but it should be good enough, especially for those who asked for this. I doubt this works in LE2, however.
- Added a manual load entry box so that you can type in the filenames/directories manually or type in part of the filename and the GUI will seek to whichever filename contains or closely contains that part
- Pharos coded a water effect, getting help from Scott Scriven's water effect code.
- You can enable/disable the Water Effect and Snow Effect from the GUI Options (MISC Menu in the GUI)
- Implemented Sprite Windowing to the new gfx 8bit engine. This completes all the features that I have planned for that engine.
- Fixed a really nasty stereo bug that caused volume levels/pans to sound completely off on one of the speakers
- Added player 5 as a normal player instead of just being available in modem/ipx play
- Implemented an option to turn in-game messages/fps display to be transparent
- Added a Set Keys feature to the Input Routines in the GUI that allows you to set all of the standard SNES keys all at once instead of clicking on the inputs separately to set them
- Ported the new graphics 8bit engine to 16bit:
  - All the standard snes features from the 8bit engine
  - Works with all 16bit resolution modes/effects
  - Ported high resolution Mode 7
  - Added proper main/sub screen support and windowing support
  - Added all transparencies modes
  - Added Direct Color Mode7
  - 2xSaI and 50/75% scanlines can now co-exist with high resolution modes
  - This is now the default engine for 16bit. Some games won't work well with this engine such as some SuperFX games (eg. Stunt Race FX in the menus). You can switch back to the old graphics engine by pressing the '8' key.
  - Implemented a dual cache system in the tile modes. I don't know how much of a speed increase this gives since my system can already run the old graphics engine at full speed and framerate.
  - Full 15bit transparencies for MMX cpus only.
- High Resolution Mode7 can be toggled on/off in the Video Options. It is disabled by default since this feature requires a fast CPU.
- Added 48khz sound sampling rate
- Tweaked VBlank timing a bit
- Tweaked 65816 CPU cycle execution a bit
- Added Kreed's Super 2xSaI engine. It's written in C, so it requires a really fast cpu to run it.
- Added picture preview to the save states in the F3 window. Newly created save states will contain a small picture in them. Pictures will not appear in old save states, however.

### v0.991 - May 24, 2000

- Disabled 2xSaI/Super Eagle when in the GUI
- Fixed up cheat code search (Got broken in v0.990 during port preparation)

### v0.990 - May 24, 2000

- Added speed hack for Kirby Super Star (US)
- SPC700 (Sound cpu emulation) is now enabled by default whether sound is enabled or not. Emulation will now be slower than normal if you usually run with sound off, but the compatibility is higher. However, you can disable this through the options window in the GUI if speed is of your concern. Also, a few games only run with it disabled so this option may be useful in those cases.
- Decreased cheat code description length by 1 since the last letter was causing some corruption to the next cheat code
- Added an option to raise the pitch level to the pre-v0.989 pitch levels, mainly for non-Creative brand sound cards.
- You can now change the sound settings (Enable Sound, Stereo, Sound Frequency) with immediate effects without re-starting ZSNES. However, there seems to be some problems with stereo switching on SB Live!'s.
- Configuration is now saved whenever you exit the GUI instead of just exiting the program
- Lots of port preparation done on the source.
- Memory/Commandline fix on the C version. A version should not be needed anymore (hopefully)
- The GUI is now using the standard in-game video blitter rather than it own.
- Fixed up SnapShot key in 8bit mode
- Implemented 4-point gaussian interpolation. This is the interpolation used by the actual snes! Many thanks goes to Neill Corlett for his work on finding this info! Of course, this routine takes up an extra cpu load so emulation will slow down a bit if your computer isn't fast enough, but you can always disable interpolation through the sound options.
- Fixed up Pitch Modulation method. Thanks again, Neill!
- Pitch modulation was modulating from the wrong channel. Fixed.
- Tweaked SuperFX timing.
- Added a move window feature to the F1 menu
- Expanded filename length in the GUI display for long filenames by 3, but had to decrease the directory name by 2.
- Added support for % codes in long filenames

### v0.9891c/a - February 21, 2000

- Slightly changed SB16 initialization
- Forgot to remove DSP1 debug code
- Fixed a pitch modulation bug when Voice 0 modulates Voice 1. Thanks to kode54 for this fix!

### v0.989c/a - February 12, 2000

- Fixed some SA-1 sudden slowdowns. This does slow down the overall emulation speed in SA-1 games though.
- All sounds were being played at the wrong pitch (slightly higher than normal. It's now fixed so Zsnes should sound better now. Thanks to kode54 for helping out here!

### v0.988c/a - December 6, 1999

- Added some SA-1 speed hacks (Kirby DX/Parodius 3)
- Implemented SDD-1 MMC. But none of the SDD-1 games run properly yet because of the compression chip.
- Fixed up some slowdown problems in SA-1 games
- Fixed up dirty CPUID fix for Cyrix CPUs so that you don't have to re-run Zsnes twice every time.

### v0.987c/a - November 26, 1999

- Forgot to re-enable pitch modulation after disabling it for debugging purposes.

### v0.986c/a - November 23, 1999

- Re-added Sound Buffering. I was hoping to re-write it, but later found out that it wasn't worth the trouble.
- Fixed some Triple Buffering bugs, but I can't figure out that flicker glitch on NVidia cards
- Added Simulated Triple Buffering for cards without VESA 3.0 Hardware triple buffering. This method does some lose frames, but should be faster than v-sync. This only works on VESA 2.0 modes.
- Fixed up directory sorting to always put ./.. at the top.

### v0.985c - November 15, 1999

- Added some more speedups to the SA-1
- SA-1: Fixed a branch problem with the BRL instruction
- Implemented Save Ram support into netplay. Thanks to The Minder for help testing this!
- Added a hack to get Mario Paint trainered rom with the trainer removed to work with the snes mouse instead of the keyboard/joystick
- Prevented Joystick Keys/Buttons to be selected as the diagonal keys in the GUI
- Fixed some crashing problems with the Modem Mode
- Implemented a key combination editor in the GUI
- Sped up V-Sync
- Fixed an SA-1 memory map bug! Fixes DBZ:HD.
- Added an small speed hack for DBZ:HD
- Implemented SA-1 Super MMC
- Finally, after many, many hours of hacking. Figured out what caused the odd noise sounds! So far, simulated noise is implemented since the true nature of how this noise is produced is unknown so it will sound somewhat off compared to the original sounds. There is also a slight chance that some sounds will become noise incorrectly and vice versa.
- Fixed up Pitch Modulation
- Fixed SNES Mouse/Super Scope support when Pl3/4 as Pl1/2 option is enabled
- ADSR/GAIN overhaul (Sound DSP) :
  - Fixed several GAIN bugs
  - Implemented Increase Bentline/Decrease Exp GAIN modes properly
  - Rewrote Decay/Sustain modes in ADSR
  - Fixed a restarting ADSR bug
- Removed Sound Buffering. I don't think it's worth losing the quality of the sound for a small amount of speed boost.
- Implemented an option to disable the Noise Simulation for those games that aren't working properly because of it
- Implemented Triple Buffering. You can enable this through the Video Options in the GUI. Unfortunately, Triple Buffering won't work with 2xSaI/Super Eagle engine at the moment since they rely on the previous screen for updating nor will it work properly with high resolution games in the old gfx engine. Thanks to GreenImp for patiently helping through testing!
- Implemented Full Screen Interpolation. Only works on MMX CPU's at the moment.
- Implemented Cheat Code Reflector (See Guinotes.txt for details)
- Any proper VESA 2 error messages now doesn't exit the program when in the GUI but instead display the error message in a box and allows the user to continue.
- Thanks to Daniel for lending me his copier which helped me hack the SNES Sound Noise/ADSR stuff!

### v0.963c/a - September 19, 1999

- NOTE : You cannot run DSP1 games, use IPX support, or use .ZIP files in the assembly only version. Use v0.963c for those features. The only time when you should use this version is if v0.963c doesn't work for you.
- Fixed DMA position reader to fix the high sample rate problem in SB-Live! cards. Thanks to ShihTzu for helping us with this!
- Removed SB16 only message under stereo option in commandline help. Shouldn't really be there since v0.600.
- Low Pass Filter is now disabled by default. But you can still enable it through the GUI.
- Implemented an option in the GUI to not allow Zsnes to change the current start-up game path in the configuration. You can access this in Config->Options.
- Joystick calibration values have been reset since there seems to be some problems with it. You may have to re-calibrate your joystick if it doesn't respond correctly.

### v0.962c/a - September 18, 1999

- Exit text now only displays when text mode is 80x25
- Used hardware DMA counter to determine which sound block to write to rather than assuming it always starts at the first one for the sound routines. This should hopefully fix all those nasty sound static problems many people seems to have. Many thanks to Crono for the code and for his help!
- Removed Re-Init Every 30 Second option. Shouldn't be needed anymore
- Added the ability to disable the Low Pass Filter
- Implemented Diagonal Keys
- Implemented some SA-1 speedups

#### A Only:

- NOTE : You cannot run DSP1 games, use IPX support, or use .ZIP files in the assembly only version. Use v0.962c for those features. The only time when you should use this version is if v0.962c doesn't work for you.
- All changes from v0.960c

### v0.960c - September 17, 1999

- Modified header reader a bit
- DSP/SPC700: Modified EndX register usage to fix some compatibility
- DSP/SPC700: Fixed up timing registers
- DSP/SPC700: Fixed a sample looping bug causing many sounds to not sound correctly
- SPC700: Fixed a small bug in TCALL. Not sure if it fixes anything
- Added small optimisations to the MMX video copy routines
- Fixed an adsr -> gain switching bug
- Extended maximum number of cheat codes from 75 to 255
- Altered .spc format again, this time to suit the ID666 format
- Worked a bit on SDD-1 emulation. Don't think we can go any further since we can't seem to figure out the compression algorithm used in that chip.
- DSP/SPC700: Added low-pass filter by kode54. Thanks kode54 for the code! This enhances bass in some games.
- SA-1: Fixed memory map access problems with several stack instructions and d-page instructions
- SA-1: Minor fix to the timing
- SA-1: Fixed a load state problem which causes Zsnes to crash sometimes
- SA-1: Fixed a small problem with the cpu communication register
- SA-1: Added a small speed hack for Kirby 3
- Added some transparency hacks (Kirby3, FF3)
- Added an sram fix hack for Donkey Kong Country 2 trainer version
- GUI now displays a message when SAVE CFG is selected
- Added on-screen messages to the Background/Sound channel toggle keys
- Added the missing video mode descriptions in the .cfg and commandline help

### v0.953c/a - August 4, 1999

- Echo should sound better now
- Restored the old Sound Blaster routines since the new ones seems to create some static in certain computer configurations
- Increased volume intensity of more quiet samples

#### C Only:

- Fixed up crashing bug in pure dos when vesa 2 initialization failed
- Included cwsdpmi.exe with the zsnes archive.

#### A Only:

- NOTE : You cannot run DSP1 games, use IPX support, or use .ZIP files in the assembly only version
- Fixed a small H+V IRQ timing problem
- Fixed some vertical off by 1 line bugs
- Attempting to save over read-only files shouldn't mess up anymore
- Start with newest save option now works with the save directory defined
- Fixed up a crashing bug when a read only file is loaded
- The volume level didn't modify the echo volume. Now fixed.
- Fixed up a display problem in the F1 menu in 256 color mode
- Fixed an echo delay bug
- Hopefully fixed the random beep encounter bug that occurs in some games with sound enabled
- Several sound volume fixes
- Fixed Save Snapshot + Increment frame enter key affecting the game bug
- Added Increment Frame Only option to the F1 menu
- Made some minor changes to the Sound Blaster routines
- Fixed some more sync bugs in .ZMV recording
- Fixed a speed hack bug that occurred from v0.800 to v0.900. Hopefully the speed is better now.
- Slightly improved the sound skipper when sound is disabled
- You can now quickly modify the currently selected cheat code's value by typing a 2 digit hex number in the cheat code enter space
- Added a hack to Chrono Trigger to prevent the screen from flashing before battles
- Fixed a 16-bit mode 7 windowing distortion/crashing bug
- Fixed a read memory leak bug in the 16-bit old gfx engine. Interesting that this bug plagued ZSNES all this time, but its effects didn't show until the recent versions.

### v0.952c - August 3, 1999

- Fixed a small H+V IRQ timing problem
- Fixed the bug which caused HiROM games from not loading properly through the commandline
- Fixed some vertical off by 1 line bugs
- Attempting to save over read-only files shouldn't mess up anymore

### v0.951c - August 3, 1999

- Fixed up the directory changing bugs that plagued v0.950
- Start with newest save option now works with the save directory defined
- Fixed up a crashing bug when a read only file is loaded
- The volume level didn't modify the echo volume. Now fixed.

### v0.950c - August 2, 1999

- Fixed up a pretty nasty .ZIP support bug where .ZIP files from the root directory weren't loaded up properly
- Fixed up a display problem in the F1 menu in 256 color mode
- Fixed an echo delay bug
- Hopefully fixed the random beep encounter bug that occurs in some games with sound enabled
- Several sound volume fixes
- Sorry about those new problems in v0.941c. We traced some of the problems to the dos extender zsnes was using (thanks Maxim- for some help on this!) so we spent some time rewritng the file system so that it would be compatible with other extenders in pure dos.
- Fixed Save Snapshot + Increment frame enter key affecting the game bug
- Added Increment Frame Only option to the F1 menu
- Made some minor changes to the Sound Blaster routines
- Fixed some more sync bugs in .ZMV recording
- Fixed a speed hack bug that occurred from v0.800 to v0.900. Hopefully the speed is better now.
- Slightly improved the sound skipper when sound is disabled
- You can now quickly modify the currently selected cheat code's value by typing a 2 digit hex number in the cheat code enter space
- Added a hack to Chrono Trigger to prevent the screen from flashing before battles
- Fixed a 16-bit mode 7 windowing distortion/crashing bug
- Fixed a read memory leak bug in the 16-bit old gfx engine. Interesting that this bug plagued ZSNES all this time, but its effects didn't show until the recent versions.

### v0.941c/a - July 18, 1999

- Fixed a small newly created timing bug
- Fixed flicker bug in 320x480x65536 video mode during high snes resolution mode

### v0.940c/a - July 18, 1999

- Fixed a major SuperFX bug! Starfox and other SuperFX games now show polygons! Note that the SuperFX still has bugs.
- Fixed an offset per tile mode bug
- Optimised SuperFX plot instruction.
- Implemented a hack to get Winter Gold working. Thanks to Gary Henderson for this fix!
- Fixed a flag setting bug in the XCE instruction (65816).
- Fixed another HIRQ bug
- Seems like a sprite cache bug that was fixed in v0.800 re-appeared in v0.900. Fixed now.
- Fixed an SA-1 arithmetic calculation result timing bug
- Forced the old gfx engine on when running Stunt Race FX since the new gfx engine was having lots of problems in 256 color mode
- Fixed a new gfx 8bit engine mosaic crashing bug with certain games
- Fixed a sprite cache bug in the new gfx engine
- Fixed a DSP envelope bug which was causing some games to not work
- WRAM data is now cleared by 0xFF
- Fixed 320x480x16bit mode when switching from a 256 color mode

### v0.915c/a - July 7, 1999

- NOTE : You cannot run DSP1 games, use IPX support, or use .ZIP files in the assembly only version
- Skipped scanline length check/set in VESA 1.2 routines
- Fixed a 256 color mode 7 slowdown bug that occurred in v0.910c
- Added hi-res mode 7 hack to 320x480x256 video mode
- Implemented 2xSaI engine for ARGB cards. Thanks to Kreed for the updated source!
- 2xSaI was missing a couple lines at the bottom. Now fixed
- A: 320x480 modes can now be selected in the GUI
- properly cleared 320x480x256 video mode
- F3 menu should now be correct during hi-res mode 7

### v0.910c/a - July 6, 1999

- NOTE : You cannot run DSP1 games, use IPX support, or use .ZIP files in the assembly only version
- The bug where enabling auto-cheat load, having an Sram directory, and loading a rom without a .cht file which results in Zsnes changing the loading directory to the sram directory is fixed.
- A: Fixed cheat search engine
- Tweaked HIRQ timing to fix some flickering in some games
- Fixed screen shot capture in ARGB cards in 640x480x65536 mode with scanlines enabled
- Implemented adjustable time interval for the sound reinitialization feature so that it can be set to values other than 30 seconds. It can be modified in zsnes.cfg (ReInitTime)
- Cheat Search 'Add' button now works properly
- Corrected Register 4212h to adjust to the new NMI timing
- Implemented ARGB video mode support to VESA 1.2
- Implemented 320x480x256 and 320x480x65536 video modes
- Fixed a x448 resolution bug when scanlines are enabled
- Prevented those with ARGB videocards from checking 2xSaI or Super Eagle engine for now

### v0.900c/a - July 4, 1999

- NOTE : You cannot run DSP1 games, use IPX support, or use .ZIP files in the assembly only version
- Fixed another sprite priority bug
- A: Fixed an IRQ problem that was caused during the C -> ASM conversion
- HBlank is supposed to be noticed during VBlank
- Fixed an IRQ bug that occured between v0.715 and v0.800
- Fixed a 65816 DPage usage bug that occured between v0.715 and v0.800
- Rewrote 65816 flag handling system.
- Optimised SA-1 emulation
- Optimised the 65816 main loop.
- Implemented Surround Sound. It is defaulted off since it seems to create some bad static in some games. Thanks to Crono for info!
- Wrote Interpolation in MMX. MMX cpu is required.
- Implemented MMX auto-detection for MMX Interpolation and MMX Copy.
- Fixed an 224HDMA line bug, thanks to Gary Henderson!
- Optimised 320x240x16b and 640x480x16b for ARGB cards.
- Removed Snow
- Clock option is now visible to anyone. You can enable the in-game clock through the GUI in Config->Options.
- Altered method of writing to file in Movie Recording mode, hoping that it will fix some problems after recording movies for a long period of time.
- Altered data alignment size in source
- Fixed a VESA2 divide by 0 bug in Banshee cards by checking the scanline length instead of setting it immediately. Thanks to Crono for some help!
- Altered sound echo volume
- Added sound interpolation based on Crono's code. Thanks to Crono for his help!
- Added an option to turn off sound interpolation for speed
- Implemented Pitch Modulation, thanks goes to Gary Henderson for clarification info!
- Implemented an option in the GUI (Config->Options) to allow the Fast Forward key to act as a toggle (disabled by default)
- Fixed a bug that prevented high resolution to sometimes not display in a 16bit video mode
- Fixed a game stalling bug when pressing F3 during games that are sensitive to changes in the ENVX DSP register (Bomberman Series)
- Added a hack for the graphic glitches in Dragon Quest 6
- Fixed up in-game clock in the new gfx 16bit engine
- Fixed a nasty bug in the ADSR engine. It was sometimes using an incorrect decay value, causing the sound to stick instead of fading out
- Slightly fixed ADSR by completely skipping the attack stage when the attack duration is 0
- Fixed a GAIN decrease->increase bug
- Implemented a safe recovery feature for those computers that don't support the CPUID instruction (used for MMX detection). If ZSNES crashes at the very start, just re-run it.
- Fixed a fixed color dual windowing bug in the subscreen which caused transparency to sometimes shift unexpectedly when the background scrolls
- Implemented 50% Scanlines (Lance McKay's idea) and 25% Scanlines (Similar to Snes9x TV-Mode's scanline intensity) in 640x480x65536 video mode. These modes don't work on videocards with an ARGB setting yet.
- Added MMX Support to 50% and 25% Scanlines modes
- Implemented back buffer clear in MMX
- .CHT files now saves to the proper save directory
- Implemented the 2xSaI graphics engine (MMX Only). Many thanks to Kreed for this wonderful engine and source code!
- Implemented Kreed's Super Eagle engine. Note that for both 2xSaI and Super Eagle, you need an MMX processor, enough RAM for the new gfx 16bit engine, and also be in 640x480x65536 video mode.
- Implemented an option to auto-load a .cht file whenever a game is loaded. You can find this option at the bottom of the Cheat Window in the GUI.
- Optimised Non-MMX Interpolation
- Fixed a bug that caused save states to not save correctly after attempting to load a non-existing .cht file
- Added a Quick SnapShot Key. You can set this key in the Misc -> GameKeys menu in the GUI. This key allows you to take a snapshot with just a press of a key.
- C: Implemented .ZIP support. Thanks to Jean-loup Gailly, Mark Adler, and Gilles Vollant for the ZIP routines!
- Fixed a bug where pressing PageUp/PageDown in the cheat window went over by 3 entries.
- Implemented longer cheat descriptions. The cheat window and the .cht file format had to change a bit, however, ZSNES automatically converts any old formats to the new formats when it detects it.
- Allowed the IRQ to be executed more than once on the same line through HIRQ. Fixes the flickering problems of Doom/Offroad Baja.
- NMI now executes at line 225 instead of 224.
- Saving/Loading the state causing the control to stop or skip has been fixed again.
- C: .ZIP files can now be run from the commandline
- Implemented an option for ZSNES to automatically save the save data approx. 5 seconds after it detects writes to it. This will not work for SuperFX or SA-1 special chip games, however. This option is disabled by default and can be enabled through the option window.
- Implemented an option in the sound window to re-initialize the sound card after every 25-30 seconds. Hopefully fixes the problems where the sound gets staticy after a certain amount of time.
- Newest Save Slot will now appear as orange in the Save State Select (F3) window
- Fixed a spc700 <-> 65816 sync bug during movie (.ZMV) playback
- Implemented an option to enable Old Gfx Engine Mode 2 (Accessible through the options window in the GUI). This mode fixes many transparency problems in 16bit modes, but can also create some and is also at times slower than the original engine.
- Implemented 640x480x65536 VESA 1.2 support. Currently supports Full Scanlines and Smallscreen modes. However, it is strongly recommended that you only use VESA 1.2 support if your card cannot support VESA 2.0 (w/ linear framebuffer) since VESA 1.2 runs slower.
- Implemented an option to disable Pitch Modulation
- Sound card is now not re-initialized whenever a state is saved/loaded since some sound cards seems to have problems with it.
- Implemented Single Windowing in the New Gfx 8bit engine, 8x8 and 16x16 tile modes only
- Fixed 64k SRAM support when loaded from the GUI
- Optimised high resolution new gfx modes in 640x480x256
- Fixed the graphic glitches in x488 snes vertical resolution modes in 640x480x256 new gfx mode
- Optimised 640x480x256 Eagle Engine
- Fixed the GUI background display bug in the new gfx engine
- Fixed .SPC capture in the new gfx engine
- Added an option to start with the newest save state when the game is loaded. It can be enabled in Config->Options window in the GUI
- Slightly optimised new gfx 8bit engine
- Fixed several Mode 7 problems in the New Gfx 8bit engine
- Changed DSP1 variables to use double instead of floats for a small speed increase. Thanks to Gary Henderson for this tip!
- Fixed up the Mode 7 slowdown bug when the scale ratio becomes small in most graphics modes
- Optimised some Mode 7 transparency modes
- Implemented EXTBG mode 7 into the newgfx 8bit engine
- Fixed the 'FIX' feature in the cheat menu. Seems like it wasn't writing any value to memory when it was clicked.
- Game Genie codes are now defaulted to the 'FIX'ed mode. Seems like most of the codes needs this.
- Implemented windowing to Mode 7, New Gfx Engine 8bit
- Added support for .SPC v0.2 format
- Added an option in zsnes.cfg to disable configuration saving for those who want to store zsnes.exe in a read-only storage area
- Fixed GameKeys display in the GUI for certain keys (such as the snes parallel adapter keys)
- Implemented hi-res mode 7 (vertical expand only). Currently only works in 640x480x256 newgfx engine (w/ Eagle and Scanlines disabled).
- Fixed an offset per tile mode bug in the new gfx 8bit engine
- Implemented dual windowing modes into the new gfx 8bit engine
- New Gfx 8bit engine is now the default graphics engine in 256 color modes. It still lacks sprite windowing and also has some sprite flicker issues, but it's overall more stable, faster, and has more features. You can still switch back to the old gfx engine by pressing '8'.
- Looks like Pitch Modulation was causing more sound problems than what it's worth. It's now disabled by default, but you can reenable it through the GUI.
- Added auto save/load state feature where ZSNES will automatically loads back the previous state when you last properly exited ZSNES. This feature is disabled by default.
- Compressed the executable using UPX

### v0.800a - December 25, 1998

- Assembly only version.
- Doesn't support DSP1 chip or IPX.
- May fix problems that some people are having with sound.
- NOTE : Only use this if have problems with 0.800c.

### v0.800c - December 24, 1998

- Fixed up sound speeds. Timers were computed incorrectly.
- Fixed a sprite priority bug
- Fixed up a bug that prevented the gui to be disabled
- Fixed up SPC capture
- Fixed a bug when VIRQ is set on the same scanline as NMI
- Implemented an automatic .IPS patcher. Just rename your .IPS file to the rom filename with the .IPS extension and ZSNES will patch the rom realtime without modifying the rom file's contents. Thanks to Neill Corlett for most of the .IPS info!
- Snapshot capture/skip 2 frames option now returns back to the proper menu item
- Fixed a calibration bug with 6/8button joysticks
- Fixed up display in 640x480x8 new gfx engine
- Fixed up hi resolution displays in all 640x480x8b modes
- Fixed up a bug where Mode 7 becomes corrupt after selecting Save CFG from the GUI
- Fixed a memory map bug in lorom DSP1 games
- Fixed a potential DSP1 crashing bug where a negative value is being square rooted
- Hopefully fixed the modem bug when using an IRQ that is bigger than 7
- Fixed up an ADSR bug for games that changes ADSR mid-sample
- Fixed up echo emulation (possibly slowed down emulation)
- Fixed up a sprite caching bug
- Fixed up a DSP1 byte check stall bug
- Implemented a commandline to disable spc700 speed hacks (-7). Might help with some compatibility
- Implemented SA-1 support (most functions emulated)! Unfortunately, it's still buggy. Thanks to the snes9x team for providing info!
- Fixed a bug when selecting drive A/B while a disk is not in the drive caused a long check sequence
- Implemented Keyboard support to most of Option, Sound, and GUI Option configurations in the GUI
- Changed sound init code a bit. Hopefully improves sound card compatibility, but might also ruin it.
- Implemented off by 1 line fix (-9). This may help compatibility and fix some minor graphic glitches, but may also ruin some too.

### v0.715 - October 29, 1998

- Fixed a crashing bug when 16bit back window clipping was using an undefined windowing clip buffer
- Added spc program counter check to the spc stall detection to reduce false alarms
- Tweaked IRQ processing a bit
- ZSNES.CFG and ZGUICFG.DAT are now fixed so that they will use the current directory when the SET CMDLINE detection fails
- Fixed several mode 7 bugs in the new graphic engines
- Implemented an option to save the configuration files in the MISC menu
- Added a shadow to the in-game text displays
- Fixed a bug created in v0.700 where pressing F3 while sound is disabled crashes zsnes
- Fixed up player 4 and player 5 so they now work again
- Fixed up color a bit in the old graphics 16bit engine
- Added gamma control to 16bit old graphics engine
- Fixed a cheat code bug where pressing the down key in the browser overflows by 3 rows
- Fixed up a bug where any memory allocation below 48mbit support crashes
- Added out of memory error when loading a file from the gui
- Fixed a minor off by 1 pixel windowing bug
- Fixed up memory requirements in the readme.txt. It seems like compiling with C takes up 3.0 more megs. It shouldn't though. An asm only version will be release later without dsp1/ipx support unless the reason is figured out.

NOTE : It seems like IPX mode randomly loses packets in certain configurations so IPX isn't recommended to use yet.

### v0.700 - October 26, 1998

- Fixed another offset per tile mode bug
- Fixed up joystick button update rate
- Fixed a bug that caused sound buffer dump option to crash
- Fixed a minor sound initialization bug
- ZSNES now compiles with C code!
- Fully rewritten commandline parser routines
- Partially rewritten SET BLASTER/SET CMDLINE detection
- Implemented partial DSP1 support. Seems to have some precision problems. Thanks to the snes9x team for the info!
- Fixed a mode 7 nonrepeat mode off by 1 tile bug
- Implemented snapshot/increment by 2 frame feature in the F1 menu for those interested in producing animations
- Added variable sound buffer size to reduce static in higher sampling rates
- Changed method of reading the mouse cursor position in the GUI. Hopefully, this fixes those mouse crash problems when zsnes is run in pure dos and sometimes win95.
- Added a commandline to disable palette 0 (back color) modification in 256 color modes
- Implemented Turbo Buttons for buttons A,B,X, and Y. Use the GUI to define those keys
- Added the ability to toggle Turbo Change speed to 30hz instead of 60hz in the Options menu.
- Started C4 chip emulation. Nothing is playable yet.
- Fixed up SET CMDLINE detection. Hopefully, zsnes.cfg and zguicfg.dat will now end up in the correct directory.
- Started Modem Support (direct modem to modem). DOS-Compatible modem required! Thanks to Dark Force for helping out on getting a bug that kept USR's and other modems from working! Also thanks to The Minder for a lot of help testing! Note : Modem mode isn't free of bugs.
- Added in-game chat key to the GUI keys for modem/net support. Currently defaulted to 't'
- Forgot to add EMMS after any MMX routines that seems to cause any FPU instructions to crash
- Fixed an interrupt re-enable bug in the Gamepad Pro code which seems to have eliminated the locking bugs when it's not set on GrIP mode
- Implemented keys to adjust Frame Rate up or down during gameplay. You can define them through the GUI under Gamekeys.
- Implemented keys to slide the volume level up or down during gameplay
- Fixed a small HDMA screw up bug when using Save/Load states which caused the screen to flicker once in many games
- Finally fix up 48mbit mapper support! Many thanks to Dark Force, Mike Gilroy, and Frank Hughes for a lot of help on this!
- Several fixes to register 4211h
- Rewrote IRQ timing handler (not perfect, but better)
- Implemented Fossil Driver support to the modem support.
- Fixed an IRQ reenable bug
- Increased default cycles a bit
- Fixed some major mode 7 rotation bugs
- Added support for uninterleaved 48mbit roms
- Added a FIX option to the cheat code to correct incorrectly converted codes
- Implemented Mode 7 horizontal flip
- Implemented primitive IPX support. It is very primitive at the moment and may not work since it isn't really tested much.
- Optimised some 65816 direct page addressing modes

NOTE : .ZMV (Movie) files recorded under v0.635 has good potential on becoming obsolete in this version because of the timing changes

NOTE : IPX support and Modem support may be buggy since it hasn't been tested on multiple types of connections yet.

### v0.635 - September 24, 1998

- Sidewinder fix options are now swapped since the majority seems to work better with the other sidewinder routine.
- Implemented EXTBG mode7 in 256 color old graphics engine.
- Fixed a DSP Sound bug where some sound effects weren't played in certain games
- Tweaked joystick routines again
- Fixed up a bug where sometimes loading a game after playing another game screws up emulation
- Optimised 640x480x8, 512x384x8, and 512x384x16 video modes
- Implemented EXTBG mode7 in 65536 color old graphics engine.
- Fixed an offset per tile mode range clipping bug
- Fixed up offset per tile mode in new gfx 8bit engine
- Fixed a bug which caused a crash when a state is loaded while playing/recording a movie file
- Optimised new gfx 16bit non-transparency mode
- Implemented SPC700 stall detection/recovery attempt
- Fixed up a new header detection bug in v0.625
- Modified memory allocation routines. Hope this fixes those random crash problems that some people seem to have
- Fixed a sound bug where the song leaks after it ends, sometimes producing an unwanted beep
- Optimised new gfx 16bit transparency modes
- Multiple DSP sound bug fixes
- Implemented transparencies in high res 16x8 tiles
- Implemented a command line to disable the sound DSP (-dd). Use -s and -dd if you want spc700 emulation to be enabled without sound to improve compatibility
- Fixed a bug where joystick support makes the emulation slow
- Had to remove some memory allocated variables and convert them to arrays since they were causing random crashes on specific computers.
- Fixed up pressing save state/load state in game so that it doesn't clear any key presses

### v0.625 - September 18, 1998

- Fixed up a major speed drop bug by just adding some empty space. Most likely a cache/alignment problem.
- Used an older version of wdosx because the new version sometimes crashes during compiling
- Executable is now uncompressed. It's 3 megs, but it provides a much faster start up time.
- Seems like EPACK can only support a maximum of 6 commandlines. Fixed after executable is decompressed
- Fixed a bug where buttons 7 and 8 of 8 button joystick support sticks once pressed
- Swapped button 5/6 and 7/8 in the default joystick configuration for 8 button joysticks
- It seems like 16bit HDMA > 5 was causing problems with some sound cards. It now reroutes back to 8bit DMA like how v0.400 did it.
- Implemented a new offset per tile mode engine into the old graphics engine (mostly transferred from 8bit newgfx engine)
- Implemented Horizontal offset per tile mode in both 8bit and 16 bit old graphics engine (Mode2/8x8 only)
- Implemented Horizontal offset per tile mode in 8bit new graphics engine (Mode2/8x8 only)
- Tweaked sidewinder routines. Hopefully, this will help those who have troubles using sidewinder support
- For those with sidewinder pads who has troubles with the tweaked routines, a 'Sidewinder Fix' option in the GUI is added in the Config/Options menu
- Commandline -i now uninterleaves an incorrectly interleaved rom
- Tweaked GamePad Pro routines. Not exactly sure if this will help those with 2 GPP joysticks though
- Fixed up sticky buttons in the GUI cheat menu when no cheat codes are present
- Fixed a bug where using -1 and -2 in the commandlines didn't activate the joystick movement/buttons
- Fixed an offset per tile mode wrapping bug
- ZSNES will now not crash when zsnes.cfg and zguicfg.dat are write protected files
- Fixed up the GUI when 239 y resolution is used in the game
- Optimised some minor mode 7 routines
- SNES Header display in the GUI now displays the filename for blank headers. This will fail for headers with garbled header names
- Inserted an extra reminder in the cheat menu
- Implemented 239 y-resolution support for .PCX snapshots
- Implemented 239 y-resolution support for .BMP snapshots
- Added multiple .SPC saves (Up to 10 saves only)
- Save State Selection Menu (default F3) now highlights used state boxes in red
- Tweaked 2player/6button/8button joystick routines a bit
- Fixed a cheat code bug where pressing TAB adds an extra character at the end of the address
- Removed the blank line from the .PCX and .BMP snapshots
- Implemented Joystick Calibration for non digital joysticks
- Fixed a bug where parallel port LPT2 player 2 wasn't selectable in v0.605
- Stabilized the joystick code a bit
- Fixed up a cheat code bug where using a PAR code that accesses RAM doesn't freeze when the .cht file is loaded
- Added a small delay to play a note when a key on is issued from the sound DSP. Not sure if this fixes anything though
- Fixed some sound compatibility problems when RESET is used
- Implemented Movie Record/Playback support. Read GUINotes.txt for details.
- Added a small detection for long filenames and prevented users from selecting it when it isn't detected
- Fixed a bug where max frame skip didn't save
- Fix a timing bug where running a game off the gui ran 1 less line in the 65816 than running off the commandline
- Implemented FPS at start option in the Config/Options menu
- Fixed a bug in the newgfx16bit engine where 8bpp tiles displayed incorrectly
- Reduced the filesize by 1200k through many changes in the code (filesize is now 2.0 megs)
- Fixed some VIRQ bugs that caused certain games to crash
- Added DMA area execution for IRET
- Added a 'Bugs Section' in the readme.txt
- Show all extensions is now disabled when snes header view is selected in the GUI
- Implemented partial Direct Color mode in Mode 7 (no transparencies yet, only works in 16bit old gfx engine)
- Improved header detection a bit
- Fixed up a sprite bug in games which changes the address in the middle of the screen

### v0.605 - September 10, 1998

- Fixed up a FPS display bug when switching between auto frame rate and manual frame rate in the GUI
- Cheat Codes can now be toggled ON/OFF by double clicking on them
- Tab key now switches from the Cheat Code enter box to the Description box
- Fixed a Save State/Load State bug in the menu where it saved in the load directory instead of the save directory
- Implemented 8button joystick support (Not tested)
- Implemented an option in the .cfg file to enable reversed stereo sound (ReverseStereo)
- Implemented an option in the .cfg file to share Player 1 and Player 2 controls with Player 3 and Player 4's controls. This option allows you to use 2 devices (Joystick and Keyboard) for both player 1 and player 2, but this also disables MultiTap support. (Pl34to12Share)
- Added Reverse Stereo to the GUI under config/sound
- Added Player 3, Player 4 to use as Player 1, Player 2 in the GUI under config/options
- Compiled under a new version of wdosx. Hope this doesn't cause any problems

### v0.601 - September 9, 1998

- Fixed up a sound card deinit bug that sometimes caused ZSNES to crash in certain sound cards
- Disabled Autoinit mode when a low sampling rate is used in 8bit sound. Probabily was also causing problems in some cards

Note : The offset per tile mode in the 16bit oldgfx engine seems to randomly crash sometimes for an unknown reason. If 16bit mode crashes for you and 8bit doesn't, press the '0' key in 16bit mode to disable that mode.

### v0.600 - September 9, 1998

*** ADDED A NEW MEMBER TO THE ZSNES TEAM! ***

Welcome Pharos to the team, his role is currently a coding assitant. So far, he helped us objectize the zsnes source code which greatly helped in the compile time, provided assembly help, and helped us prepare on linking C code to zsnes (not completely there yet).

Note : It is strongly recommended to not use the 16-bit new graphics engine yet because of bugs and speed concerns. It is enabled only in 320x240x65536 for those who are interested.

- Added partial 65816 execution in the DMA registers (doesn't seem to fix mucht due to some other problem) Thanks to Alucard for this info! This also slowed down emulation a bit.
- Implemented sprite priority correction into the new graphics engine
- Implemented mosaic into the new graphics engine
- Implemented true 512 horizontal resolution into new graphics engine (both 16x8 and 16x16 tile modes)
- Implemented interlaced 448 vertical resolution into new graphics engine
- Implemented offset per tile mode into the new graphics engine (Mode 2/Vertical only). More accurate compared to the old graphics engine. (seems to be a bug where the game gets very slow sometimes though)
- Started 16-bit new graphics engine
- Implemented sprite priority correction in 16bit new gfx engine
- Implemented palette raster effects in 16bit new gfx engine
- Fixed a minor bg enable/disable bug in the new gfx engine
- Multiple SPC700 bug fixes. More games run now!
- Implemented SPCPlay sound engine into zsnes :
  - Echo & FIR Filter Support (Slowed down emulation, but gives better sound) Thanks to feenix65 for info on FIR Filter!
  - Volume fixes
  - Rewrote ADSR/GAIN engine
  - Added Adjustable Volume through the commandline and zsnes.cfg
  - 16000 and 32000 extra sampling rates
  - Many other bug fixes
- Fixed a minor HDMA bug
- Fixed an old style joystick read bug that prevented the joypad from functioning in certain games
- Several optimisations on Echo & FIR Filter
- Several Sound DSP Fixes
- Temporarily fixed a V-latch bug in some games that don't update the display at every frame
- Add/Removed some game hacks for compatibility
- Modified Song Start Search in .spc capture. Should be much better now.
- Fixed a sprite window clipping bug where it was used when it's not supposed to be.
- Modified memory allocation technique in zsnes. This should now eliminate some random crash errors. Thanks to Y0SHi for this info!
- -c now does full screen instead of small screen in 640x480 modes. For small screen, use -cc
- Fixed a back area 1/2 addition bug which caused the background to be sometimes darker than usual
- Fixed a mode 7 transparency bug
- Added 8-bit stereo sound and 8-bit sound high speed mode support (high speed mode support is just the implementation of 8bit 44100khz or 22050khz stereo) Thanks to Crono for a lot of help on this!
- Fixed up sound blaster deinit code. Thanks again to Crono!
- Wrote an entirely new GUI :
  - Mouse driven GUI/Menu Based
  - Full Keyboard Support in all the Quick (Arrow Menu), Load, and Cheat menu items
  - Ability to display load names under 8.3 filename format, snes header name, and win95 long filenames
  - Support for Save State, Load State, and Select State through menu items
  - Quick Load Menu (Arrow menu) which allows you to quickly load the last 10 games loaded
  - Ability to Freeze or Clear the Quick Load Menu
  - An Options menu which allows you to configure settings such as video mode, sound settings, frame skip, etc.
  - Added the ability to customize the game keys such as the save state key, misc toggles, etc.
  - Ability to use those keys as joystick buttons
  - Customizeable background palette displacement
  - Several minor GUI customization features
  - Ability to quickly exit/enter the GUI with the right mouse button (Disabled by default)
  - Ability to Enter Game Genie, Pro Action Replay, or Game Finger Cheat Codes
  - Ability to browse the cheat codes and Toggle or Remove the codes
  - Ability to Save/Load Cheat Codes (saves them as .CHT files in the same directory as the .SRM/.ZST files)
  - Ability to Select Input Devices for each joypad
  - Ability to Define Keys/Button configuration for each joypad
  - Joypad can now move in the GUI (disabled by default)
  - Added some future reserve menus (Netplay, Cheat Search Engine). But they are NOT implemented in zsnes yet.
- Fixed a bug when clearing the screen in 640x480x65536
- Implemented full add, half add, full subtract, and half subtract into the new 16bit graphics engine. Not sure why, but some transparency modes are actually slower than the old engine. Most likely flushing the cache a lot somewhere.
- Implemented background transparencies into new 16bit graphics engine (implemented incorrectly at the moment. Some transparency modes also is slower than the old graphics engine, but that will change in the future)
- Implemented fixed color transparencies (very incorrect because of lack of windowing)
- Fixed a minor bug in the fast forward routines
- Rewrote most of the 65816 speed hack. It should now be a lot more friendly with games (reduced graphic glitches/increased compatibility).
- Fixed a bug in Mode7 with Windowing and Transparency enabled
- Allowed 16bit HDMA sound blaster values less than 5 to be used. Not exactly sure if this works though.
- Implemented Mouse Disable Command Line (-j)
- Rewrote Input Device Routines (Keyboard, Joystick, SNES Mouse, and Super Scope Handlers)
- Added GamePad Pro Support (Don't know if it works on a standard GrIP system though). Thanks to Marius Fodor for the code!
- Added Snes Parallel Port Support for both LPT1 and LPT2. Thanks to Karl for the code!
- Added MultiTap (Multiplayer 5) Support! (Only up to 4 players at the moment though)
- Joystick Port 209h support
- Fixed an overflow caching bug in the new gfx engine where a few games run very slow
- Added some C -> ASM converted DSP1 functions. Some functions were unable to convert properly so no DSP1 games are playable until the actual C code is in
- Executable is now compressed using epack
- Implemented sprite transparency into the 16-bit new graphics engine
- Implemented mode7 transparency into the 16-bit new graphics engine
- Higher memory requirements (Sorry, but this is unavoidable as long as ZSNES keeps expanding)
- Implemented Echo Disable in the zsnes.cfg for those who want some extra speed in return for lost sound quality
- A bunch of other fixes that we forgot to list

### v0.400 - May 19, 1998

- Fixed a dual windowing bug in mode 7 in 65536 color mode
- Re-added FPU Copy due to a demand
- Implemented MMX Copy. Use -om to enable. Thanks to Angels Holocaust for this info!
- Fixed a bug when writing to .bmp files
- Added (buggy) SuperFX support (9.5MB memory required). Special thanks to the snes9x team for all the info and help!
- Fixed up sprite windowing. Should hopefully be correct now
- Added a commandline to show all file extensions through the GUI. Use -sa to enable.
- Added Noise to the Sound DSP
- Added a Fast Forward key. Use the Tilde Key (~) located at the top-left of your keyboard.
- Added Sprite Priority Correction
- Fixed a tile caching bug that caused some tile corruption
- Fixed a 65816 bug in XCE on the x flag. Thanks to ]SiMKiN[ for this!
- Implemented Interleaved format and a simple auto detection. In case autodetect fails, use -i. Thanks to feenix65 for this info!
- Improved header detection. Should now work better with demos and games with weird filesizes
- Added a new graphics engine in 256 color mode. It should be much faster in areas that don't use mode 7, but lacks a lot of features such as windowing, mosaic, and sprite priorities so it is disabled by default. It can be enabled by pressing 8 during gameplay. (~40-100% faster)
- Optimised Mode 7 in 256 color mode
- Implemented dual windowing to color window clipping
- Fixed several color window clipping bugs
- Added full resolution screenshot capture in 640x480x65536 mode. To activate while in that mode, hold backspace and press F1
- Fixed several transparency bugs
- Added NewGfx to zsnes.cfg which determines if the new graphics engine is enabled at start
- Added CopyMethod to zsnes.cfg which can default the copy method as either fpu copy or mmx copy
- Allowed systems with 5.5MB of RAM free to load 2mbit roms
- Fixed sidewinder support when sound is set at a high sampling rate. Thanks to Marius Fodor for the source!

### v0.393 - April 15, 1998

- Whoops! Forgot to remove the debug variables in v0.391
- Fixed another sprite clipping bug
- Fixed clipping in Mode7 16-bit mode
- Removed FPU Copy since it didn't seem to speed up emulation
- Added .USA and .JAP rom extension into the GUI
- Added Save SPC Data which saves the contents of the SPC700/DSP of the beginning of the next song (Future Reserved)
- Add Sound Buffer Dump which dumps the decompressed sound buffer as raw pcm. This can become quite inaccurate due to the way how zsnes stores its decompressed sounds.
- Added MenuItem Sound Buffer Dump into the F1 Menu
- Added MenuItem Save SPC Data into the F1 Menu
- Added a key to disable offset mode. Press 0 key to activate/deactivate
- Added small screen support in 640x480VESA2 modes. This mode should be much faster for those who use 640x480. Use the -c commandline to enable this when in 640x480.
- Added an option for centered small screen. Use the -cc commandline.
- Fixed up 320x240x65536 support for ARGB cards again. It now should be working. (No, seriously!)
- Removed some static from the sound.

### v0.391 - April 13, 1998

- Fixed a bug in DMA from v0.390
- Fixed some sprite windowing clipping bugs
- Fixed an OAM overflow bug. Thanks to DJRob for some help on this!
- Fixed a save state bug where running a game off the commandline and having a save directory specified prevented more than 1 save state
- Fixed a transparency bug from v0.390

### v0.390 - April 11, 1998

- Fixed a bug which caused 320x240x65536 to display incorrectly on video cards with an 16-bit ARGB setting
- Fixed a minor screen add/sub bug
- Fixed a minor sprite priority bug
- Fixed a BG3 priority bug in BG Mode 0
- Fixed a color window addition bug
- Fixed a minor VIRQ enable bug
- Swapped The Cursor Button and Autofire Switch in Super Scope
- Fixed a joystick read timing bug
- Sound volume register returned an invalid value. Now fixed.
- Added some dword alignment to some variables. Thanks to Marius Fodor for this info!
- Implemented 64k sram files
- Implemented Sprite VRAM address changing in the middle of the screen. Should fix some games such as Lufia 2
- Added some hacks to get some games working better
- DSP : Fixed a divide by 0 bug when key on is set without any sound variables initialized
- Increased default cycles executed in FastROM.
- Added ZSNES.FAQ . Read this if you have troubles!
- Added a key to disable/enable Windowing. Press 9 to activate this.
- Implemented EAGLE algorithm in 640x480x256 video mode. Use -y to enable. Thanks to A CoolMan for the algorithm! Later on, we'll implement his code which has MMX acceleration!
- Implemented FPU copy. Use -o to enable. Used only when copying buffer to video in 320x240 vesa2 modes.
- Re-wrote Windowing routines for speed and expandability
- Added Dual Windowing on BGs in all logic modes
- Added Dual Windowing on Sprites
- Added some minor stuff to the header displayer
- Added partial offset per tile mode. (Mode 2/Vertical/8x8). Thanks to the feenix65 for some help on this! Implementation still a bit buggy.
- Sorry, but memory requirements had to increase by a bit.
- Fixed a tile graphics wrapping bug
- Clean up and optimised 16-bit graphics code
- Fixed up a display bug when switching from 239 to 224 y resolution
- Optimised some video processing code. Thanks to Crash_Man for the help!
- Minor optimisations to the 65816
- Improved color intensity in the back area
- Fixed a sram directory bug where the save state didn't save in the save directory when the game is specified from the command line
- Fixed a keyboard bug when left-shift is selected as a key. Thanks to Pharos for help on this!
- Some DMA speedups
- Some optimisations to OAM/VRAM write
- Sorry, but SuperFX emulation is disabled for this public version.

### v0.305 - February 12, 1998

- Fixed a snes ppu multiplication bug. Thanks to Lord Esnes!
- Hopefully fixed 6-button joystick support.
- Fixed a little memory overflow bug which caused some games to not work
- Forgot to clear NMI wait substitute variables when another game is loaded from the GUI
- Changed sound processing engine back to v0.297. If for any reason you want to go back to v0.300 sound engine, use -x as a command line
- Added Cursor Mode Button to the Super Scope. Never thought it was necessary until recently. Use the =/+ key.

### v0.300b - February 10, 1998

- Fixed a bug that causes sidewinder support to crash.

### v0.300 - February 9, 1998

- Fixed a 65816 wrapping bug
- Added Super Scope Emulation! (Press 7 beyond mouse)
- Some minor touches to the GUI
- Manually calculated RGB bit lengths when using 16-bit modes
- Fixed another bug when loading 48mbit images from the GUI
- Sped up the execution loop when sound is enabled
- Implemented NMI wait substitute for speed
- Added some extra vesa2 routines to help some video cards with ARGB format of 1:5:5:5, however interpolation won't work for those at the moment. Thanks to Dark Force for helping out on this one!
- Implemented 512x384 VESA2 resolution for both 8 and 16 bit
- Implemented Sound Mute and Reset
- Implemented Joystick Remapping. Edit ZSNES.CFG to access this.
- Fixed and sped up 6 button joystick support
- Fixed 2 2-button joystick support
- Hopefully fixed 2 sidewinder support
- Fixed an overflow sound bug

### v0.297 - January 31, 1998

- Fixed a bug when loading 48mbit images from the GUI
- Fixed some crashing bugs by just adding some zero space. Very weird bug!

### v0.296 - Not Released?

- Fixed up Cheat Menu in 16-bit color mode
- Changed SPC700 skipper back since it was causing problems in certain games
- Added Multiple Snapshot files
- Fixed a minor loading bug
- Fixed 16-bit color full add/sub conversion table when video is in BGR format
- Fixed some fixed color screen add/sub bugs
- Supported .SWC format in the GUI

### v0.295 - January 29, 1998

- Compiled under a newer version of WDOSX. This should help fix some VESA 2 problems.
- Fixed multiple SPC700 bugs
- Added a command line to force either NTSC (-t) or PAL (-u) timing
- Added a command line to force 8-bit sound on (-8)
- Zsnes.cfg is now loaded from the directory where zsnes.exe is located
- Zsnes.cfg now re-writes itself when zsnes exits
- Reduced zsnes.exe filesize
- The IRQ's are now more stable. This should help fix some crashing/rebooting problems under dos. Thanks to Sardu for some help on this!
- Fixed some VRAM accessing bugs
- Several fixes to the sound DSP
- Optimised SPC700 a bit
- Implemented primitive Mode 5, 512 horizontal resolution. To get full potential of this mode, use 640x480 resolutions except for interpolated/nonscanline mode.
- Improved 65816 <-> SPC700 communication
- Slightly improved sound skipper
- Fixed a directory changing bug
- Implemented Scanlines for 640x480x256 video mode
- Added a temporary command line to enable sound compression buffering (-Q)
- Added a extra menu which pops out when you press F1
- Added snapshot feature. Press F1 and select Save Snapshot ZSNES saves 256 color under image.pcx and 65536 under image.bmp.
- Added FPS feature. At the moment, it only works when auto frame rate is used.
- 65816 bugfix : x flag is supposed be used in MVN/MVP
- Fixed up color addition/subtraction clipping a bit
- Added Scanlines, Interpolation, Enterskip, and Force 8-bit sound in zsnes.cfg
- GUI now saves the loading directory
- Added a separate save directory feature in zsnes.cfg.
- SPC700 bugfix : fixed mem.bit addressing mode. Thanks to Phoenix for this info!
- Fix up a bug where more memory was cleared than needed in 256 color video memory processing
- Optimised video memory clearing in 65536 color mode
- Minor optimisations to the 65816/SPC700
- Implemented Mode 7 Tile #0 Repetition
- Rewrote most of the Mode 7 routines for speed
- Fixed a 65536 color Mode 7 bug where the background wasn't cleared properly
- Added Pro Action Replay, Gold Finger,and Game Genie cheat code support
- Optimised Memory/Register accessing routines
- Used a newer version of Sidewinder driver. Should fix some problems and also support 2 sidewinder pads (not tested yet). Thanks Robert! Also, thanks to Sardu for helping to get it to work right!
- Whoops! 256 Color palette was set when GUI is exited in 16-bit mode. Hopefully fixed now.
- Added the ability to Clear/Disable/Enable cheat codes through the menu.
- Optimised Graphics Decompression Routines. Thanks to Nerlaska for this info!
- A Bunch of other Minor Bugs Fixed.

### v0.270 - December 25, 1997

- Properly cleared memory when loaded off of the GUI
- Implemented realtime adsr/gain switch. Special thanks to Sardu for help on this!
- Fixed up a VESA 2 error message
- Temporarily disabled Sound Compress buffering till we can get the bugs out.
- Volume fixes to the sound DSP
- Fixed up > 16mbit LoROM support
- Added partial 48mbit ROM support (no games seems to work yet + 9MB mem required)
- Fixed a SRAM Memory Map Bug
- Fixed a bug in old style joystick read
- Disabled sram save using tilde key. Instead, enter/exit the GUI since it also saves the sram.
- Added panic key which turns back on all sound channels and backgrounds. Press 6 to activate this.
- Added snes mouse support! Use 7 to switch between keyboard and mouse. Thanks to Y0SHi for info on this!
- Panic key now turns off mouse when mouse is enabled
- Fixed a minor IRQ bug
- Fixed a HDMA bug. Thanks to Lord Esnes for help on this!
- Fixed a timing bug. Thanks to TaNdRuM for help on this!
- Fixed up some Fixed color add/sub bugs
- Implemented OBJ Name Base Select. Thanks to Y0SHi for info!
- Windowing was off by 1 pixel. Now fixed.
- Fixed Screen Add/Sub on back area
- Added support for 4 and 6 button joysticks
- Added support for sidewinder joypads
- Fixed a VESA 2.0 bug. It should be more compatible now.
- Implemented Interpolation for 640x480x65536 mode. Use -Y to enable.
- Modified sound mixing code a bit
- Added GUI disable in zsnes.cfg. Add this if you want to disable the GUI GUIDisable = 1
- Implemented Directory Changing in the GUI
- Fixed a bug where it crashed when loading some ROMs
- Fixed an ADSR sustain bug. Thanks to Trepalium for help on this!

### v0.201b - November 5, 1997

- Fixed up Save State Selection bug

### v0.201 - November 5, 1997

- Fixed up PAL/NTSC detection when GUI is used
- GUI now doesn't enter load when no files are found. Thanks to ScanT for reporting this!
- Sped up execution loop a bit
- Fixed up a major save state conversion bug. Old save states should work better now.

### v0.200 - November 4, 1997

- Reg$2137 was calculating the horizontal position incorrectly
- Fixed up a looping bug in sound DSP. Thanks to EFX for some help on this!
- Added Key to dump SRAM to Harddisk (tilde key, ~) during game
- Fixed up gain sound effects
- Fixed a couple of SPC timer bugs
- Added Stereo Sound! (Use -Z)
- Added some precision to the DSP (this seemed to have slowed emulation down)
- Changed Real Time State Save Format. However, ZSNES will automatically convert from an older format. Some problems may come up because of the many changes in the dsp.
- Fixed up a sprite ordering bug. Thanks to Y0SHi!
- Added Scanlines (Use -N) Only available for 256x256/640x480x65536
- Adjusted SPC timers
- Fixed up BG Mode 0 display
- Fixed up a bug that crashes when hirom sram is accessed
- Fixed up a VIRQ bug
- Added a simple, yet effective dsp timer wait substitute. Seems to make many games run much faster with sound!
- Fixed VRAM increment bug. Special thanks to Trepalium for this info!
- Fixed up multiple SPC bugs
- Player 2 was still reading the joystick even though keyboard was selected. This is now fixed.
- Added VSync (-w). Thanks to Marius Fodor for the code! Please use -f 0 when using this.
- Added a very simple GUI. Currently, it only loads, reset, and quit. Also, load cannot change the current directory.
- Added -m to disable the GUI
- Added Stereo to zsnes.cfg. Add this if you want to enable stereo : Stereo = 1

### v0.182 - October 23, 1997

- Small fix to a priority in bg4 drawing
- Added TCALL and PCALL. Special Thanks to Gary of Snes9X!
- Enabled the debugger (use the -d command line)

### v0.180 - October 22, 1997

- Move the whats new stuff to readme.txt
- Forgot to remove the end of string marker so the new vesa modes didn't show in the previous version help
- Fixed minor SNES PPU DMA bug
- lowered volume again
- Fixed a vesa 2 bug issue. Nothing major
- Removed PCALL/TCALL. If anyone knows the implementation of these instructions, please tell us. Also, we will not accept any requests to put these back on unless the info the found. Thanks.
- Modified SPC700 cycle timing.
- Added code that properly deinits sound blaster auto-init mode
- Moved sound blaster interrupt code a bit
- Added Gamma Correction (use -g # in the command line)
- Added what the default keys are in the readme.txt (We should have done this in the first release. Oh well =) )
- Added a new command line that can modify the % of clock cycles executed. ZSNES currently is modified so that 100% runs as many games as possible so it is strongly recommended that you do not set this. But to modify this, use -p # in the command line.
- Hopefully fixed up sprite BG layering priorities and background priorities to the correct way. Thanks to Y0SHi for this info!
- Fixed up key ordering in zsnes.cfg. Thanks to Michael and Aquis for reporting this! If zsnes.cfg already exists, change the button order to : B, Y, A, X, L, R
- Fixed up set blaster detection.
- SPC700 : Fixed up a minor flag setting bug in pop psw

### v0.170 - October 16, 1997

- Fixed crashing bug when 8000Hz sound is selected (divide by 0 problem)
- Forgot to add code to support Sound Blaster irqs greater than 7
- Changed 65816 timing a bit. (should help compatibility a bit)
- Fixed a bug in 65816 stack routines. Special Thanks to Alucard for reporting this!
- Somewhat modified sound decompression routines
- Somewhat sped up Mode 7
- Fixed a minor screen add/sub bug in non-repeating mode 7
- Added increment by 8 vram access registers
- Video Modes should now clear the screen when init
- ZSNES now automatically creates a default .cfg file when one is missing
- Forgot to implement save/load state messages in 16-bit. It's there now.
- Added a new command line : -b. This disables sound compression buffering. There is a noticeable slowdown, but this should reduce static.
- Added sound compression buffering disable in the .cfg file. If you have an old .cfg file already, manually add this string at the end if you want to disable sound buffering : SoundBufDisable = 1
- Added 640x480 modes for both 8 and 16 bit. VESA2 is still required and these modes are much slower too. This seems to still not work on various video cards. There's probabily a bug in VESA2 detection.
- Fixed a sprite layering bug.
- Reduced sound volume to prevent overflows. This seems to make the sound better, but the pitch calculations are still incorrect due to SPC bugs.
- Fixed a screen sub bug. Thanks to Barubary!

### v0.150 - Initial Release - October 14, 1997

#### The following are implemented :

- complete 65816 instruction set (bugs still left)
- SRAM support
- LoROM and HiROM support
- SlowROM and FastROM support
- Line by line graphics engine
- Graphic Modes 0,1,2,3,4,5,6,7
- 8x8, 16x16, 32x32 and 64x64 sprite support (flipped in all directions)
- Mosaic effects
- 8x8 and 16x16 tiles
- 32x32,64x32,32x64,64x64 tile modes
- Full DMA support
- Full HDMA effects for wavy backgrounds, interesting mode 7 effects, etc.
- Mode 7 rotating and scaling effects
- Single Windowing Routines
- BG priorities (still needs some work)
- Sprite Priorities (still needs some work)
- Add/sub of back area
- HIRQ/VIRQ/NMI Interrupts
- Support for most snes file formats
- Multi file format support (.1,.2,.3,A.,B.,C.)
- 16-bit graphics support
- PAL timing support

#### The following are present in sound :

- 16bit digital sound
- SPC700 Sound CPU (bugs still left)
- DSP Sound Processor
  - ADSR volume effects
  - GAIN volume effects

#### Following are present in 16-bit graphics mode :

- Palette changing in the middle of a screen
- Screen Addition (full and half)
- Screen Subtraction (full)
- Fixed Color Addition/Subtraction
- Window clipping for Fixed Color (still needs work)

#### The following are the features present in ZSNES :

- Game State Save (F2=Save, F3=Select, F4=Load). Warning : A state file takes 200 kbytes of HD space!
- Auto frame rate to give you constant Super Nintendo speed up to 12 frame skips
- configuration file support (zsnes.cfg)
- 2 player support w/ Joystick and Gamepad support

#### The following features are missing :

- DSP features such as noise, echo, and pitch modulation
- Mode 7 horizontal flip and color repetition
- Screen Subtraction (half)
- Interleaved ROM formats
- A few VRAM accessing modes
- Dual Windowing support (not sure if it's worth implementing this)

#### The following will probabily never be implemented (but who knows...) :

- 512 snes horizontal resolution
- 448/480 snes vertical Interlaced resolution
- Raster Effects (Scrolling location change in the middle of a horizontal line. There might be a way to get through some of this)
- EXTBG mode for mode 7 (I don't know any games that uses this)

#### What will not run :

- Super FX games such as Star Fox, Yoshi's Island, etc.
- DSP games such as Mario Kart, Pilotwings, etc.
- Games with other special chips such as Megaman X2 and X3
- Games that have a unique sound checking routine (if sound is disabled)
- Games which doesn't have a valid header (use -L or -H to get it working)
- Games that hit a severe bug in the 65816/PPU/SPC700/DSP routines
- Games that require special timing