#

## ZSNES Linux v1.42

# Readme

ZSNES is a Super Nintendo Entertainment System emulator written entirely in assembly and C. Using cutting edge SNES emulation, ZSNES is easily comparable to other leading SNES emulators, such as Snes9x, SNEeSe, and Super Sleuth.
Special thanks to the Snes9x team for all of their help and also for the excellent SNES emulator they have developed. We wish them the very best of luck!

## What's New

- Linux Only:
- - DESDDIR support. [theoddone33]

- All Ports:
- - Corrected output of BRR decode for invalid ange 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]

## Previous Updates

v1.41

- Linux Only:
- - 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]

- 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]

v1.40

- Linux Only:
- - 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 64bit 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]

- 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]

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

## Disclaimer

The ZSNES development team, including all developers and contributers, is in no way responsible for any damage caused by the use of this software. Please read the license for more details. In addition, ZSNES may not be distributed with ROM images.

## System Requirements

- - 200MHz processor (500MHz recommended)
- - 32MB of RAM (64MB recommended; more if SDL is compiled to use X)
- - 3D graphics accelerator required (nVidia GeForce 2 or equivalent recommended)
- - SDL v1.20 or higher required

## Things To Know

- - You can use both keyboard and joystick for player 1 or 2 with some configuration adjustments. Refer to the FAQ for details.
- - Several special chip emulation routines have unknown bugs to them.
- - SuperFX can be slow because it is an extra 10/20mhz CPU that has to be emulated as well as the SNES emulation.
- - Screen Snapshot, Snapshot Format, and FPS Counter are available through a menu by pressing F1 during emulation.
- - Screen Snapshot can save in PCX format (8bit color), bitmap format (65536 colors), or PNG format (32bit ARGB color).
- - FPS Counter currently only works when auto frame rate is on.
- - To use the cheat function, be sure to have the ROM which you want to patch loaded already.
- - If the cheat codes do not work, chances are that you are either using a different version of the ROM that was originally used to create them or the codes are converted incorrectly from other code formats.
- - There are still many bugs left in ZSNES, so don't expect it to run all your favorite games.
- - SNES Mouse support is still missing some features, such as speed settings.
- - Pressing the Fast Forward key is equivalent to running ZSNES using -f 9.
- - If ZSNES doesn't work for you, then don't use it. Use Snes9x, SNEeSe, or Super Sleuth instead! In fact, even if you use ZSNES, use those emulators too!

## Current Progress

- The following are implemented:
- - Complete 65816 instruction set
- - SRAM support
- - LoROM and HiROM support
- - SlowROM and FastROM support
- - Full DMA support
- - HIRQ/VIRQ/NMI Interrupts
- - Support for most SNES file formats
- - Multi file format support (.1,.2,.3,A.,B.,C.)
- - Interleaved format support
- - PAL/NTSC timing support

- The following are implemented in the new graphics engine 8bit:
- - Combination of line by line and tile based graphics engine
- - Graphic modes 0,1,2,3,4,5,6,7
- - 8x8, 16x16, 32x32, and 64x64 sprite support (flipped in all directions)
- - 8x8 and 16x16 tiles
- - 32x32,64x32,32x64,64x64 tile modes
- - Full HDMA effects for wavy backgrounds, interesting mode 7 effects, etc.
- - Mode 7 rotating and scaling effects
- - BG priorities
- - Sprite priorities
- - Add/sub of back area
- - Mosaic effects
- - Offset per tile mode (mode 2/vertical only, mode 4)
- - High res 512 resolution and 448/478 vertical resolution
- - Windowing effects
- - High res mode 7 (only in 640x480x256 video mode/disable Eagle/Scanlines)

- The following are implemented in the old graphics engine:
- - Line by line based 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 HDMA effects for wavy backgrounds, interesting mode 7 effects, etc.
- - Mode 7 rotating and scaling effects
- - Single and dual windowing routines
- - BG priorities
- - Sprite priorities
- - Add/sub of back area
- - 16bit graphics support
- - Offset per tile mode (mode 2/vertical only)
- - High res 512 horizontal resolution (missing in 16x16)

- Following are present in 16bit 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

- The following are implemented in the new graphics engine 16bit:
- - All of old graphics engine 16bit
- - Combination of line by line and tile based graphics engine
- - High resolution mode 7
- - High resolution 16x16 tiles for mode 5
- - Full 15bit color transparencies (instead of the previous 13bit speed hack) for improved picture quality (MMX compatible CPUs only)

- The following are present in sound:
- - 16bit digital stereo sound
- - SPC700 Sound CPU
- - DSP Sound Processor
  - - Echo effects
  - - FIR filter
  - - ADSR volume effects
  - - GAIN volume effects
  - - Noise effects
  - - Pitch modulation

- The following are extra features emulated:
- - Super NES Mouse
- - Super NES Super Scope
- - Nintendo Super System (except the menu system)
- - SuperFX chip (still has a bug or 2 left)
- - MultiTap (5 player support)
- - DSP-1 and DSP-2 chips
- - SA-1 chip (not complete)
- - OBC1 chip (still may have bugs)
- - S-DD1 chip
- - BS Sattelaview (not complete)
- - Seta 10 (ST010) chip
- - Sufami Turbo (not complete)
- - SD Gundam G-Next and Same Game expansion packs
- - SPC7110 chip (via decompression packs)

- The following are the features present in ZSNES:
- - Game state save (F2=Save, F3=Select, F4=Load). Warning: A state file takes 260 kbytes of HD space!
- - Movie recording
- - Game Genie, Pro Action Replay, and GoldFinger cheat code support
- - Auto frame rate to give you constant Super Nintendo speed up to 9 frame skips
- - Configuration file support (zsnesl.cfg)
- - 5 player support w/ joystick and gamepad support
- - Netplay

- The following features are missing:
- - Pseudo 512 SNES horizontal resolution (haven't seen any game that uses them yet)
- - Some modes in offset per tile mode
- - Some direct color modes (haven't seen any game that uses them yet)
- - True SPC7110 decompression

- What will not run (or not play properly):
- - Some SuperFX games
- - Some BS Sattelaview games
- - Games with unknown co-processors
- - Games that don't have a valid header
- - Games that hit a severe bug in the 65816/PPU/SPC700/DSP routines
- - Games that require special timing

## ZSNES Default Keys

- Here are the default keys while running the emulator. They can be changed through the GUI, except for F1 and Esc:
- Disable Backgrounds 1, 2, 3, and 4 -- 1, 2, 3, 4
- Disable Sprites -- 5
- Enable All Backgrounds and Sprites -- 6
- Enable SNES Mouse or Super Scope -- 7
- Enable New Graphics Engine -- 8
- Disable Windowing -- 9
- Disable Offset Mode -- 0
- Fast Forward Key -- ~
- F1 Menu -- F1
- Save State -- F2
- Switch State -- F3
- Load State -- F4
- Disable Sound Channel -- F5 - F12
- Quit -- Esc

- Here are the default keys for the game play (unless modified through the GUI):
- Player 1:
  - Directions Up, Down, Left, and Right -- Cursor Keys
  - Buttons A, B, X, and Y -- Keys X, Z, S, and A
  - Buttons L and R -- Keys D and C
  - Buttons Start and Select -- Enter and Right Shift
- Player 2:
  - Directions Up, Down, Left, and Right -- Keys K, M, N, and ,
  - Buttons A, B, X, and Y -- Keys D, X, S, Z
  - Buttons L and R -- Keys F and c
  - Buttons Start and Select -- Left Ctrl and Left Alt

## F1 Menu

- Save Snapshot - Saves a snapshot as either .pcx (8bit), .bmp (16bit), or .png (32bit ARGB).
- Show/Hide FPS - Shows or hides the frame per second display which appears on the bottom-left corner of the screen. This can only be enabled in auto frame rate mode.
- Save SPC Data - Selecting this will search for the beginning of the next song and save the data into a .spc file, which saves it similarly as a .srm file. To capture a song, it is best recommended to initiate this feature approximately 2 seconds before the next song starts. This does have potential to fail though, so don't expect it to work all the time.
- Sound Buffer Dump - This dumps the sound buffer in ZSNES and also filters out any unoccupied space. The sound buffer contains decompressed samples which are written to when ZSNES plays/decodes a sample from sound memory. Because of the way ZSNES buffers the sound data, this can produce inaccurate results.
- Snapshot/Increment Frame - Same as snapshot, but it returns to the F1 menu after a couple of frames. Useful for making animations.
- Increment Frame Only - Does the same as above, except no snapshot is taken.
- Move This Window - Moves the F1 menu to a different location.
- Screen Shot Format - Chooses what format to use for screen shots. Choices are PCX (available only in 8bit color depth mode), BMP (bitmap) and PNG (Portable Network Graphic).

## Configuration File

Almost everything in zsnesl.cfg should now be editable through the GUI. The GUI also has a few more options that are not found in the configuration file, such as more graphic pack directory configurations.

## Cheat Codes

Currently, ZSNES supports Game Genie, Pro Action Replay, and GoldFinger codes.

- Here are the steps to get the codes working:
- 1.) Load the ROM which you want to patch.
- 2.) Exit to the GUI and enter the code of your choice in the cheat menu.
- 3.) After that, you may have to reset the game to get the cheat code to work. Sometimes, it is not necessary. You also may have to click on the FIX button.
- NOTE: Some cheat codes are meant to be for different versions of the game. If a cheat code doesn't work and there is one for both Game Genie and Pro Action Replay, try them both.

## Extra Features

To enable SNES Mouse, press 7 once for 1st player and twice for 2nd player.
To enable SNES Super Scope, press 7 three times.
To disable either one, either press 6 or press 7 until you see a disable message onscreen.

- Here are the controls for the Super Scope:
- Fire -- Left mouse button
- Cursor Mode Button -- Right mouse button
- Pause -- Backspace key on keyboard
- Enable/Disable Autofire -- =/+ key on keyboard

ZSNES auto-detects the SuperFX emulation from the header and enables it when found. Also, take note that the SuperFX is an additional 10Mhz(Ver1) or 20Mhz(Ver2) chip which also has to be emulated with the SNES; it will most likely produce a very noticeable slow down in emulation if you don't have a fast computer.
Sometimes, the MultiTap isn't compatible with some games. If that happens, disable MultiTap by going to Config-->Add-Ons and choosing None. You may also need to go to Config-->Options, and enable "Use Player 3/4 as Player 1/2". You could also add an NSRT header to your ROM.
IPS patcher:
Rename your .ips file to the ROM filename with the .ips extension (eg. If your ROM is SD3.smc and your ips is SD3V05.ips, rename SD3V05.ips to SD3.ips) and ZSNES will patch the ROM in realtime without modifying the ROM file's contents. Zipped ROMs are patched according to the unzipped name (eg. Seiken3.zip containing SD3.smc is patched by SD3.ips, not Seiken3.ips). You can also use .ips files that are inside .zip files.

## Bugs

- - 65816 lacks correct timing. Although ZSNES bases the timing on a variable cycle/instruction, it does not deduct correct values (such as 16bit instructions should deduct 1 more cycle than 8bit instructions). 100% cycles of ZSNES isn't 100% cycles of a SNES because of that. This means that a lot of games either won't run or will produce horrible displays. Sometimes, adjusting the % of execution can fix those problems. This is all due to inaccurate documentation used when the ZSNES 65816 core was written. There are no plans on re-writing the 65816 timing yet.
- - Some games sometimes tend to not display things properly because of graphic features that aren't implemented yet.
- - The Sound DSP chip still has its bugs (not many though). Additionally, no one knows the exact timing of the SPC700 chip.

## Contact Information

The ZSNES homepage is located at : http://www.zsnes.com
If you have any questions about ZSNES, and you have read through this whole documentation to make sure the answer isn't here, then you can post your question at the ZSNES board.
Remember - This board should be mainly used for ZSNES related discussion.
ROM requests (or asking for games, a link to a ROM site, or where to find ROMs/games) are forbidden!!! Be sure to also read the RULES!
If you wish to contact the authors, you may contact them through:
pagefault AT zsnes DOT com
_demo_ AT zsnes DOT com
n-a-c-h AT users.sf DOT net
Remember - No ROM requests please! And don't send any files without permission!
Try not to send a copy of your e-mail to all of us since that will just waste our time. Also, don't expect to get a reply since we are often busy.

## Credits

ZSNES Linux uses GCC, NASM .98, SDL v1.20+, GNU Make, and UPX to compile, link, compress, and execute. Thanks for the work put into these programs.

- Special Thanks to:
- - wnelson; without him, ZSNES would have never existed!
- - Y0SHi for for his excellent SNES docs, his help, and his excellent support!
- - Ashley, Barubary, CyberWarriorX, DCX, DooMStalK, Fanwen, GreenImp, Hucard, Kaiden, PolestaR, Stalphos Knight, Star Creator, TeleKawaru, the people in #ZSNES efnet, and the regulars of the ZSNES message board!
- - All of our beta testers for being a great help!
- - The MAME team; info on 256x256x256 scanlines mode is from the MAME source!

- Also Thanks to:
- - The_Teach of Snes9x for some great info and the nice chats!
- - Trepalium of Snes9x for some great info and help!
- - Gary of Snes9x and Steve Snake of Kega for being the source of info for sound decompression!
- - Gary of Snes9x for being the source of info for TCall/PCall and also for lots of help!
- - MrGrim for his great support!
- - Crono for info on Sound Blaster programming, surround sound, sound interpolation, and other sound stuff!
- - Aquis for the ZSNES logo!
- - Alucard for helping us with an issue in the 65816!
- - Vertigo for making a compatibility list!
- - EFX for being a great supporter and also giving a lot of help and stuff!
- - Zophar for being a great supporter and also maintaining the mirror site!
- - Chris Hickman for redesigning the ZSNES web page!
- - CSoft for hosting our web page!
- - Marius Fodor for the code for Vsync, Sidewinder, Gamepad Pro, and some optimization info!
- - Sardu for some great info and help!
- - Lord ESNES for some great help!
- - Robert Grubbs for the Sidewinder info!
- - Nerlaska for some useful info on optimizing and also for some help!
- - Diskdude for writing SNESkart which we used for the info on cheat codes!
- - DarkForce for some great help!
- - Pharos for some keyboard coding help!
- - Ivar and Gary of the Snes9x team for all their great help, which includes their SuperFX info and code, DSP-1 info, info on interleave formats (HiROM and SuperFX), offset per tile mode, FIR filter, and some insights on SPC700 and HDMA bugs!
- - WolfWings ShadowFlight for help on several issues of NASM!
- - Wildfire for some help!
- - A CoolMan for the algorithm for EAGLE!
- - Neill Corlett for some info on the .ips format and also helping out a lot on improving the sound engine!
- - Kreed (derek-liauw _at_ usa.net) for the 2xSaI and Super Eagle source codes!
- - Markus Oberhumer and Laszlo Molnar for the UPX compression utility.
- - Jean-loup Gailly, Mark Adler, and Gilles Vollant for the unzip routines!
- - kode54 for the low pass filter routines!
- - Andy Goth for some help on the design of the key combination engine!
- - Yamaha of XYZZ (Scott Scriven) for his water effect code.
- - ipher for his contributions and for compiling and releasing CVS builds!
- - grinvader for his dedication and for contributing some small code changes!
- - All those people who contributed by either updating the docs, helping us, supporting us, or reporting bugs!

Also thanks to all those whom we forgot!
Also, good luck to all those who are writing emulators, especially those who are writing SNES emulators, including Snes9x, SNEeSe, and Super Sleuth!
ZSNES Documentation v2.0