mirror of https://github.com/snes9xgit/snes9x.git
2597 lines
155 KiB
Plaintext
2597 lines
155 KiB
Plaintext
Snes9x 1.56
|
|
- Increased the speed of SA1 emulation to match hardware (BearOso)
|
|
more closely.
|
|
- Changed the location where we poll input to potentially (Brunnis, BearOso)
|
|
reduce lag.
|
|
- Fixed the interlace fields being swapped after skipping (BearOso)
|
|
frames.
|
|
- More updates for BS-X support. (LuigiBlood)
|
|
- Updated xBRZ to version 1.6. (zenju, OV2)
|
|
- Added a DMA timing hack for rpgone's Koryu no Mimi (OV2)
|
|
translation.
|
|
- Updated HDMA to not update indirect addresses until after (BearOso)
|
|
transfers are completed.
|
|
- Improved cheats support. This stores cheats in a human- (BearOso, OV2)
|
|
readable and editable format as gamename.bml. Cheats are
|
|
converted from the old format on load. They can be added
|
|
in many different formats, but they will convert to the
|
|
simple address?condition=byte format.
|
|
Also, now included is mightymo's cheat database, and the
|
|
ability to match a game and automatically load cheats
|
|
from it.
|
|
- Don't reset a pending NMI on vblank end. Fixes Super (furrykef)
|
|
Punch-Out.
|
|
- Redo NMI timing. Fixes Secret of Evermore (PAL). (BearOso)
|
|
- Test for transparency before dithering on SuperFX. This (RedGuy(yyy))
|
|
fixes some graphical artifacts in Star Fox.
|
|
- Change some of the SDD1 guesswork mapping. Fixes a Tales (BearOso)
|
|
of Phantasia hack.
|
|
- Return PPU1 MDR for reads of $2137 instead of CPU MDR. (BearOso)
|
|
Fixes Mario's Time Machine graphical glitch.
|
|
- Memset less memory for sprite calculations. (Nebuleon)
|
|
- Don't spuriously update register 14 when running SuperFX. (BearOso)
|
|
Fixes graphical glitches in Doom.
|
|
- Added a SuperFX clock modifier variable. (BearOso)
|
|
- Write CPU MDR during HDMA writes. Fixes Speedy Gonzales. (BearOso)
|
|
- Calculate next IRQ time in advance instead of continously (BearOso)
|
|
checking for it.
|
|
- Fixed wrong tile selection in offset-per-tile mode. (BearOso)
|
|
- Advance the VRAM pointer even if VRAM writes at the time (kps501)
|
|
are invalid.
|
|
- Win32: Added dynamic rate control support for XAudio2 (OV2)
|
|
- Win32: Added different volume level configuration for (OV2)
|
|
regular and turbo speed.
|
|
- Win32: Improve multi-rom loading. (OV2)
|
|
- Win32: Add libpng and zlib dependencies as submodules for (qwertymodo, OV2)
|
|
easier compiling from source.
|
|
- Win32: Fixed icon registration. (OV2)
|
|
- Win32: Better support for running while unfocused. (OV2)
|
|
- Win32: Changed icon. (BearOso)
|
|
- Win32: Report hidpi support. (BearOso)
|
|
- Win32: Added mute hotkey and hotkeys for saving/loading (OV2)
|
|
from file.
|
|
- Win32: Disabled hotplugging in favor of a menu option to (OV2)
|
|
reconfigure joysticks.
|
|
- Win32: Added a reduce input lag option. (BearOso)
|
|
- Win32: Added ability to use GLSLP shaders with OpenGL. (OV2)
|
|
- GTK+: Added dynamic rate control support for audio to (BearOso)
|
|
reduce buffer overflows and underflows.
|
|
- GTK+: Increased SDL requirement to version 2.0. This (BearOso)
|
|
improves joystick compatibility.
|
|
- GTK+: Improved GTK+ 3.0 support and made it the default. (BearOso)
|
|
- GTK+: Added ability to start from a snapshot on the (julien2512)
|
|
command line.
|
|
- GTK+: Added automatic input rate handling. (BearOso)
|
|
- GTK+: Use 16-bit 5-6-5 pixel format for better colors. (BearOso)
|
|
- GTK+: Now disables the compositor in fullscreen mode. (BearOso)
|
|
- GTK+: Changed icon. (BearOso)
|
|
- GTK+: Require libepoxy for OpenGL support. (BearOso)
|
|
- GTK+: Add minimal compatibility with cgp shaders. (BearOso)
|
|
- GTK+: Add full compatibility with GLSLP shaders, with a (BearOso)
|
|
parameters dialog to configure them.
|
|
- Unix: Add xinerama support and window position hints. (Francesco149)
|
|
|
|
Snes9x 1.55
|
|
- Added support for the MSU-1 coprocessor. (qwertymodo)
|
|
- Added support for MSU-1 distribution pack. (qwertymodo)
|
|
- Added support for BS-X Satellaview memory packs and data (LuigiBlood)
|
|
files.
|
|
- Improved BS-X memory mapping accuracy. (LuigiBlood)
|
|
- Fixed APU error causing issues with some games. (byuu, qwertymodo)
|
|
- Added option to ignore patch checksums. (qwertymodo)
|
|
- Fixed build warnings / undefined behavior. (bonimy)
|
|
- Correct pixel placement in hires. (BearOso, OV2)
|
|
- Fixed RAM mapping for Light Fantasy. (hex_usr, BearOso)
|
|
- Added Circuit USA APU timing hack. (BearOso)
|
|
- libretro: Merged some changes from downstream repository. (OV2)
|
|
- GTK+: Allow use of XDG config directory. (BearOso)
|
|
- GTK+: Add 10th save slot. (YamashitaRen)
|
|
- GTK+: Updated Spanish translation. (jristz)
|
|
- Win32: Switched to Studio 2017. (OV2)
|
|
- Win32: Fixed problems when minimized in d3d. (OV2)
|
|
- Win32: Split Patch/Rom directory. (OV2)
|
|
- Win32: Simplified compilation by removing or including
|
|
some dependencies (included CG headers, completely
|
|
removed FMOD and FMOD_EX, moved direct draw to compile
|
|
switch) and reworking solution/configurations. (bonimy, OV2)
|
|
- Win32: Fixed crash with movie dialog (OV2)
|
|
- Win32: Changed hotplugging (OV2)
|
|
|
|
Snes9x 1.54.1
|
|
- GTK+: Properly use --std=c++11 when compiling xBRZ. (BearOso)
|
|
- Win32: Save window position when toggling fullscreen. (OV2)
|
|
- Win32: Do not assign down-left binding to down-right. (OV2)
|
|
|
|
Snes9x 1.54
|
|
- Changed the S-SMP core module to one written by byuu. (byuu, BearOso)
|
|
This has the effect of increased accuracy, fewer
|
|
speed hacks, but also regresses a few speed-hack games.
|
|
- Improved IRQ emulation in several cases. (OV2)
|
|
- Added rewind support. (Themaister, OV2)
|
|
- Included libretro port. (OV2, libretro team)
|
|
- Added bps soft-patching support (OV2)
|
|
- Fixed MMC bank register bit 7, restored 64mbit ExLoRom
|
|
map (FuSoYa)
|
|
- GTK+, Windows: Added xBRZ filter (Zenju, OV2, nmagre)
|
|
- GTK+: Fixed several issues with GTK+3. (BearOso)
|
|
- GTK+: Added extra aspect ratio options. (BearOso)
|
|
- GTK+: Added option to mute sound when using turbo mode. (BearOso)
|
|
- GTK+: Fixed expose handling to reduce overdraw and (BearOso)
|
|
improve performance.
|
|
- GTK+: Updated and universalized Spanish translation. (jristz)
|
|
- Unix: Added Xv support and fixed several bugs. (greg-kennedy)
|
|
- Win32: Added CG meta shader support (OV2, Themaister)
|
|
- Win32: Added support to detect joypad changes (OV2)
|
|
- Win32: Fixed unicode command line parameters,
|
|
Fixed controller command line parameters (OV2)
|
|
- Win32: Added quit hotkey (OV2)
|
|
- Win32: Fixed custom rom dialog (OV2)
|
|
- Win32: Fixed various cheat dialog issues (gocha, OV2)
|
|
- Win32: Added hotkey for fast forward toggling (gocha)
|
|
- Win32: Added drag and drop support for movies (gocha)
|
|
- Win32: Fixed blargg filter for regular width hires (OV2)
|
|
- Win32: Fixed snapshot loading from unicode paths (OV2)
|
|
- Win32: Changed open-with file-association method, should
|
|
no longer change explorer icons for otherwise
|
|
unassociated extensions; removed legacy extensions (OV2)
|
|
|
|
Snes9x 1.53
|
|
|
|
- Rebuilt IRQ handling. (zones)
|
|
- Improved overall timings, now Snes9x can handle events in
|
|
a opcode a little. (zones)
|
|
- Improved screen interlace and sprite interlace supports. (OV2, zones)
|
|
- Fixed Hi-Res pixel plotter. (BearOso, zones, OV2)
|
|
- Fixed C4 for Mega Man X2's "weapon get" screen. (Jonas Quinn)
|
|
- Fixed Super Buster Bros. graphics after reset. (Jonas Quinn)
|
|
- Improved SA-1 support. (zones)
|
|
- Added SA-1 CC2 support. (Jonas Quinn, byuu)
|
|
- Fixed SA-1 NMI override mode. (zones)
|
|
- Fixed Dual Orb 2 sound glitch. (byuu)
|
|
- New APU timing hack, fixes various games that exhibit
|
|
problems with Blargg's SNES_SPC library. (OV2)
|
|
- Fixed the problem that echo buffer breaks IPL ROM. (zones, OV2)
|
|
- Fixed movie snapshot unfreeze inconsistency. (gocha)
|
|
- Faster config file saving. (OV2)
|
|
- Fixed BlockInvalidVRAMAccess config file option.
|
|
(windows port, unix port and gtk legacy config) (Jonas Quinn)
|
|
- Remove POSIX dup and access calls, and rename qword to
|
|
fix compilation with Cell SDK. (BearOso)
|
|
- Fixed PS3 version save state crash by using heap
|
|
allocation for soundsnapshot. (danieldematteis)
|
|
- Fixed crash relating to double-closed descriptor. (BearOso)
|
|
- Removed CPUShutdown speedhack, DisableHDMA and
|
|
DisableIRQ options. (zones)
|
|
- Removed remaining outdated asm code. (zones)
|
|
- JMA 64 bit support. (kode54, Nach, friedrich.goepel)
|
|
- GTK+, Win32, Mac: Added optional Hi-Res blending. (BearOso, OV2, zones)
|
|
- GTK+, Win32: Support for bsnes-style XML shaders. (BearOso, OV2)
|
|
- Win32: Full unicode support. (OV2)
|
|
- Win32: Restored OpenGL mode. (OV2)
|
|
- Win32: x64 version. (OV2)
|
|
- Win32: HLSL shader support. (mudlord)
|
|
- Win32: Win7 jumplist synchronizes with recent roms list. (OV2)
|
|
- Win32: Updated menu structure. (OV2)
|
|
- Win32: Drag&Drop support for ROMs. (gocha, OV2)
|
|
- Win32: Reworked movie-recording with size selection. (gocha, OV2)
|
|
- Win32: Restored SPC save option. (OV2)
|
|
- Win32: Fixed vsync in DirectDraw. (OV2)
|
|
- Win32: Improved window position saving. (OV2)
|
|
- Win32: Restored compile with DEBUGGER. (gocha)
|
|
- Win32: Fixed various edge-case errors and/or possible
|
|
leaks. (Brian Friesen)
|
|
- Win32: Config file option to always center image. (OV2)
|
|
- Win32: Fixed "Turbo Down mode" hotkey assignment. (gocha)
|
|
- Win32: Added and fixed Autofire for D-pad. (gocha)
|
|
- Win32: Fixed aggressive soundsync wait. (OV2)
|
|
- Win32: Added window size presets. (OV2)
|
|
- Mac : Added pause and frame advance functions. (zones)
|
|
- Mac : Now you can choose any folder for saving files. (zones)
|
|
- Mac : Updated Music Box (mostly internally). (zones)
|
|
- Mac : Fixed gliches in open/save dialogs on 10.6. (zones)
|
|
- Mac : Fixed display configuration in windowed mode. (zones)
|
|
- Unix : Fixed segfault and hang-up with -DNOSOUND. (zones)
|
|
- GTK+ : Added ability to set specific folders for SRAM,
|
|
patches, snapshots, etc. (BearOso)
|
|
- GTK+ : Fixed many permissions issues with config folders. (BearOso)
|
|
- GTK+ : Updated compatibility with latest GTK+ and
|
|
GtkBuilder. Added experimental support for GTK+ 3.x. (BearOso)
|
|
- GTK+ : Updated software output to use cairo and added the
|
|
ability to use bilinear-filtering with it. (BearOso)
|
|
- GTK+ : Fixed issues where cheats wouldn't stay enabled. (BearOso)
|
|
- GTK+ : Fixed focus issue when there is no window manager. (BearOso)
|
|
- GTK+ : Fixed X Visual incompatibilities and expose
|
|
problems in the Xv and OpenGL outputs. (BearOso)
|
|
- GTK+ : Fixed vsync with new X Server and NVIDIA drivers. (BearOso)
|
|
- GTK+ : Added "Reduce input lag" option to OpenGL output. (BearOso)
|
|
- GTK+ : Added a visual indication of the expected video
|
|
refresh rate for the currently selected sound input rate. (BearOso)
|
|
|
|
Snes9x 1.52
|
|
- IMPORTANT NOTICE: The structure of savestates (also known
|
|
as snapshots / freeze files) is incompatible with older
|
|
versions! Snes9x 1.52 cannot read the savestates created
|
|
by 1.51 or older. (zones)
|
|
- Highly acculate SPC700 and S-DSP emulation. (Blargg)
|
|
- Replaced APU emulation cores (SPC700 and S-DSP) with
|
|
ones provided by Blargg's SNES_SPC library. This renders
|
|
savestates incompatible with older versions. (BearOso, zones)
|
|
- SPC7110 emulation. (byuu, neviksti)
|
|
- Merged bsnes' SPC7110 emulation code. Note that the .rtc
|
|
file of Far East of Eden Zero is incompatible with older
|
|
versions. (zones)
|
|
- Removed graphics pack support. It's no more necessary. (zones)
|
|
- Replaced S-RTC emulation code with bsnes' one to keep the
|
|
good compatibility of .rtc files between the two
|
|
emulators. As a result, Daikaijuu Monogatari 2 now
|
|
outputs the .rtc file, and its .srm file is incompatible
|
|
with older versions. (zones)
|
|
- Added savestate supports for DSP-2, DSP-4, ST-010 and
|
|
OBC1. (zones)
|
|
- Added UPS support. (byuu)
|
|
- Fixed DSP-4 AI problem. (Jonas Quinn)
|
|
- Fixed invalid memory accesses in C4 and OBC1 codes. (zones)
|
|
- Fixed invalid memory accesses in BSX codes. My mistake. (zones)
|
|
- Fixed the read value of $213e, $4210 and $4211. (zones)
|
|
- Fixed the writing of word values at the memory boundary. (zones)
|
|
- Fixed the bug that the unnecessary SA-1 emulation
|
|
continues once any SA-1 games are launched. (zones)
|
|
- Removed old color blending codes. (zones)
|
|
- Removed too-old Snes96 and ZSNES snapshot support. (zones)
|
|
- Updated command-line options. (zones)
|
|
- Code cleaning. (zones)
|
|
- GTK+ : Added a port of Snes9x to the GTK+ toolkit. (BearOso)
|
|
- Unix : Reconstructed and simplified all the contents.
|
|
Some features have been removed to be simple, and many
|
|
options have changed. GTK+ port is recommended for most
|
|
of Linux users. (zones)
|
|
- Win32: Now uses snes9x.conf to prevent problems with
|
|
modified meaning of settings. (OV2)
|
|
- Win32: Removed broken OpenGL mode. (OV2)
|
|
- Win32: Removed support for 8bit output. (OV2)
|
|
- Win32: Reworked settings dialogues to accomodate the
|
|
new APU core and display settings. (OV2)
|
|
- Win32: Updated defaults to use D3D and XA2 (better
|
|
Vista and Win7 support). (OV2)
|
|
- Win32: Direct3D and XAudio2 support. (OV2)
|
|
- Win32: Added Blargg's ntsc filter (three presets). (OV2)
|
|
- Mac : Fixed corrupted screenshot on Intel Mac. (zones)
|
|
- Mac : Fixed sudden abort in QuickTime movie export on
|
|
Intel Mac. (zones)
|
|
- Mac : Changed sound settings for the new APU core. (zones)
|
|
- Mac : Changed the default folder which Snes9x looks for
|
|
to 'Application Support' folder. (zones)
|
|
- Mac : Changed folder names: 'IPSs' -> 'Patches',
|
|
'BIOSs' -> 'BIOSes'. (zones)
|
|
- Mac : Added Blargg's ntsc filter. (zones)
|
|
- Mac : Internal changes for Leopard and Snow Leopard. (zones)
|
|
|
|
Snes9x 1.51
|
|
- Added DSP1 and SuperFX savestate support. (nitsuja)
|
|
- Added screen state GFX to save states. (optional) (nitsuja)
|
|
- Fixed desync when loading inconsistent state in playback. (nitsuja)
|
|
- When playback reaches a movie's end, recording continues
|
|
instead of the movie suddenly closing. (after recording) (nitsuja)
|
|
- can now record resets and mouse/superscope/justifier(s) (nitsuja)
|
|
- Added same-line-comment support for config files. (nitsuja)
|
|
- input display for all controllers (including peripherals) (nitsuja)
|
|
- Win32: Now uses .cfg file instead of Windows registry. (nitsuja)
|
|
- Win32: open ROM dialog bugfixes and speedup and facelift (nitsuja)
|
|
- Win32: option to use standard file open dialog for ROMs (nitsuja)
|
|
- Win32: maintain aspect ratio and bilinear filter stretch (nitsuja)
|
|
- Win32: optional removal of the dreaded "black bar" (nitsuja)
|
|
- Win32: Added EPX,EPX2,EPX3,HQ2X,HQ3X,TV3X,DM3X filters. (nitsuja)
|
|
- Win32: Added hires support for Interlace and TV Mode. (nitsuja)
|
|
- Win32: text removed from .avi output (optional) (nitsuja)
|
|
- Win32: better directory management, customizeable (nitsuja)
|
|
- Win32: Screenshot support is back. (nitsuja)
|
|
- Win32: Netplay is back (but still not very good). (nitsuja)
|
|
- Win32: Made OpenGL Bi-linear an advanced .cfg option. (nitsuja)
|
|
- Win32: cheat search improvements (address, watch, SuperFX)(nitsuja)
|
|
- Win32: Added non-modal ("active") cheat search option. (nitsuja)
|
|
- Win32: new hotkey-config dialog and configurable hotkeys (nitsuja)
|
|
- Win32: Fixed joystick config in input dialog. (nitsuja)
|
|
- Win32: Fixed hires and extended height .avi output. (nitsuja)
|
|
- Win32: various small GUI improvements (nitsuja)
|
|
- Win32: Netplay fixes. (nitsuja)
|
|
- "Fake Mute" desync workaround option for movies, until
|
|
all ports have deterministic sound. (Bisqwit, nitsuja)
|
|
- Fix for save state blocks > 999999 bytes. (Bisqwit)
|
|
- C4 games now save C4 data in save states. (DeHackEd)
|
|
- Unix: Framework for high-speed seeking. Specify a frame
|
|
number in a movie, and the emulator will run at
|
|
maximum speed to that frame. Untested. (DeHackEd)
|
|
- X11: Support for window exposure. When a window is
|
|
damaged due to overlay, being iconified, etc. it will
|
|
be repainted correctly. (DeHackEd)
|
|
- Unix: parameter: -autodemo <filename> loads a movie for
|
|
playback on startup. Only the x11 code handles this
|
|
right now. (DeHackEd)
|
|
- Unix: parameter: -oldturbo, the turbo button renders all
|
|
frames when fast-forwarding. (DeHackEd)
|
|
- Unix: parameter: -upanddown, override U+D and
|
|
L+R protection. (DeHackEd)
|
|
- Unix: parameter: -mute, currently linux only, blocks out
|
|
audio output from your speakers while still emulating
|
|
sound. Not fully tested. (DeHackEd)
|
|
- Unix: parameter: -maxframes <target> during movie
|
|
playback, snes9x will exit when the target is hit. (DeHackEd)
|
|
- Unix: parameter: -keypress shows to stderr and on-screen
|
|
the currently pressed buttons on joypad 1. (DeHackEd)
|
|
- Unix: Stream dumping (NOT COMPLETE). With -dumpstreams,
|
|
raw video and raw audio are dumped to videostream%d.dat
|
|
and audiostream%d.dat, where %d increments on each CPU
|
|
reset, starting at zero. (DeHackEd)
|
|
- Unix: Non-blocking sound on Linux. It makes seeking nicer.(DeHackEd)
|
|
- Unix: Configurable sound device. (pierredavidbelanger)
|
|
- configure.in now requires a sufficiently new version of
|
|
autoconf. (anomie)
|
|
- Fixed slow versions of branch opcodes. (anomie)
|
|
- Fixed the mosaic offset bug. (anomie)
|
|
- No sorting by priority in C4 command 00 00. MegaMan X2
|
|
can go behind the legs of the intro stage boss. (anomie)
|
|
- New RTO discovery, fixes Super Conflict: The Mideast
|
|
title screen. (anomie, byuu)
|
|
- A 1->0 transition on $2100.7 causes OAM Address Reset. (anomie, byuu)
|
|
- The final HDMA Indirect Address load is only weird
|
|
on the last channel of the scanline.
|
|
Touge Densetsu Saisoku Battle problem solved. (anomie, byuu)
|
|
- Fixed BGnVOFS bug. Only HOFS needs ~&7 update. (byuu)
|
|
- Fixed superfluous VIRQ triggers. (zones)
|
|
- Fixed missing IRQ trigger just after the previous one. (zones)
|
|
- Fixed missing IRQ while writing to $4200. (zones)
|
|
- Fixed IRQ timing after WRAM refresh. (zones)
|
|
- Fixed NMA timing after DMA transfer. (zones)
|
|
- Fixed superfluous auto-joypad-reading. (zones)
|
|
- Fixed missing WRAM refresh during DMA transfer. (zones)
|
|
- Fixed DMA so that HDMA and any HC triggered events can
|
|
run during DMA transfer. (zones)
|
|
- Roughly fixed the case that HDMA and DMA use the same
|
|
channel at the same time. HDMA kills DMA. Thanks byuu. (zones)
|
|
- Changed initial DMA registers values. (zones)
|
|
- Slightly modified APU execute timings. (zones)
|
|
- Fixed APU I/O registers to get/set the proper value. (zones)
|
|
- Blocked invalid VRAM writings, though you can turn off
|
|
this option due to Snes9x's inaccurate timings. (zones)
|
|
- Omitted SPCTOOL, no one uses it. (zones)
|
|
- Added Sufami Turbo support. (zones)
|
|
- Added Same Game add-on cart support. (zones)
|
|
- Fixed HiROM SRAM and DSP1-4 memory maps a little. (zones)
|
|
- Improved mirroring. (Nach, grinvader, byuu)
|
|
- CRC32 on BS dumps now follows uCONSRT standard. (Nach)
|
|
- BS dumps now always run in NTSC mode. (Nach)
|
|
- Unknown regions (generally betas) default to NTSC. (Nach)
|
|
- Now support NSRT headers for setting up controllers. (Nach, nitsuja)
|
|
- Unix: Fixed command line help output. (Nach)
|
|
- Unix: Sound now defaults to 32KHz, Stereo, Interpolation
|
|
so Snes9x finally sounds like a real SNES by default. (Nach)
|
|
- Win32: Saner defaults for movie record. (Nach)
|
|
- Unix: Fixed crashing with mouse or super scope. (Nach)
|
|
- Removed some weird code which was crashing Korean
|
|
League and its varients. (Nach)
|
|
- Win32: Can now compile with MinGW. (Jonas Quinn, Nach)
|
|
- Win32: Can now cross compile Snes9xw. (Nach)
|
|
- Unix: SSnes9x compiles again. (Nach)
|
|
- Win32: ZSNES C4 and SuperFX compiles once again. (Jonas Quinn)
|
|
- Unix: Netplay Fixes. (Nach)
|
|
- Unix: Netplay Improvements. (Fabianx)
|
|
|
|
Snes9x 1.5
|
|
- Pseudo-hires rendering flush, Old 2xsai endian fix (anomie)
|
|
- Added 'oops' auto-snapshot support (anomie)
|
|
- Fixed usage messages (Unix) (anomie)
|
|
- Old split-ROM-in-zip bugfix (anomie)
|
|
- ./configure fix for detecting libpng (anomie)
|
|
- Fix "no PNG support" error message (anomie)
|
|
- Anomie's control remapping patch (anomie)
|
|
- Support for IPS patches in the zip file (anomie)
|
|
- OBC1 savestate fix (Overload)
|
|
- Fix turbo frameskip, X11 keyboard auto-repeat, VRAM reads (anomie)
|
|
- Add some missing ifdefs (UNZIP_SUPPORT and ZLIB),
|
|
from AaronOneal (anomie)
|
|
- Config file for Unix/X11 and Unix/SVGA (anomie)
|
|
- CPU instruction fixes (mostly emulation mode & timing) (anomie)
|
|
- Mode 7 fixes (anomie)
|
|
- Rewrote the renderer. Enjoy! (anomie)
|
|
- Correct-ish memmap boundary testing. (anomie)
|
|
- Add support for saner directory structures under Unix (anomie)
|
|
- Unix: Fixed detection of newer libpng (spotted by vapier) (PBortas)
|
|
- Added 4-point gaussian interpolation and proper envelopes
|
|
many thanks to Brad Martin and TRAC. (zones)
|
|
- Fixed several sound problems. (zones)
|
|
- Fixed the memory access problem in C++ Super FX core. (zones)
|
|
- Speed adjustment of C++ Super FX emulation. (zones)
|
|
- Various timing fixes: NMI, IRQ, WRAM refresh,
|
|
cycles per line, HBlank start, etc.
|
|
Many thanks to byuu for much information. (zones)
|
|
- Removed some game specific hacks. (zones)
|
|
- Added partial Satellaview (BS) emulation. (Dreamer Nom, zones)
|
|
- Added the Katakana font for onscreen messages. (107)
|
|
- Updated JMA to v1 (Nach)
|
|
- Unix: Fixed JMA options in config (Nach)
|
|
- Unix: Removed --with(out)-asmcpu option in config
|
|
because the i386 assembler CPU core is out of date. (zones)
|
|
- Unix: Changed the default settings in config. (zones)
|
|
- Updated porting.html (porting.txt) in sync with 1.5. (zones)
|
|
- Fixed buffer over/under flow due to incorrect logical
|
|
operator in S-RTC code (byuu)
|
|
- Fixed HDMA flags bug. (byuu, anomie)
|
|
- Fixed bugs causing crashing in Unix. (Nach)
|
|
- Ported Snes9x to AMD64. (John Weidman, Nach, zones)
|
|
- Completed DSP-1 code. (Andreas Naive, Overload, Nach)
|
|
- Updated DSP-3 code. (Nach, z80 gaiden)
|
|
- Updated DSP-4 code. (Dreamer Nom, Nach, z80 gaiden)
|
|
- Overhauled BS detection. (Nach)
|
|
- Improved Unix portability. (Nach, zones)
|
|
- Fixed infiniti loop and invalid read bug in
|
|
C++ C4 core. (Nach)
|
|
|
|
|
|
Snes9x 1.43
|
|
- Win32: Disabled Netplay (funkyass)
|
|
- Win32: Various fixes, including ROM dialog (funkyass)
|
|
- Win32: New Input Config Dialog (funkyass)
|
|
- Win32: added .avi output feature (blip)
|
|
- Win32: fixed frame timings >100ms, added frame advance (blip)
|
|
- Rewrote Unfreeze, renamed it S9xUnfreezeFromStream,
|
|
failing to load a freeze file no longer resets emulation (blip)
|
|
- Fixed Unfreeze to restore IPPU.HDMA properly (blip)
|
|
- Rewrote OBC1 code to match the real chip (Overload)
|
|
- More updates the to DSP-1 code, fixes to projection (Overload, Andreas Naive)
|
|
- Unix/X11: Rewrote keyboard setup code (Bisqwit)
|
|
- Added movie recording+rerecording support (blip, Bisqwit)
|
|
- Added -hidemenu CLI switch (funkyass)
|
|
- fixed broken Win32 filters (lantus)
|
|
- Added internal support for emulating the new-style SNES (MKendora)
|
|
- Cleaned up many quirks of the cheat search engine (MKendora, Don Vincenzo)
|
|
- Fix mosaic in hires SNES modes (Tokimeki Memorial) (MKendora, zones)
|
|
- Rewrote Legend's hack, added another game to it (MKendora)
|
|
- Optimized the Open ROM dialog (MKendora)
|
|
- Rewrote the Seta DSP map (The Dumper, MKendora)
|
|
- Began string isolation for the UI, eases translation (funkyass)
|
|
- added -nopatch -nocheat, and -cheat CLI items (MKendora)
|
|
- fixed a UI typo (funkyass)
|
|
- fixed several C core stack ops in emulation mode (MKendora)
|
|
- split emulation mode ops from native mode ops (MKendora)
|
|
- Seta special chip emulation enhancements (Feather, The Dumper, Overload, MKendora)
|
|
- code tweaks to the ST010 (Nach, pagefault)
|
|
- fix some C/asm quirks and HDMA quirks (all my fault) (MKendora)
|
|
- several timing hacks to fix games (lantus)
|
|
- improved checksumming for odd mirrorings (MKendora)
|
|
- Snes9x uses a standard zlib instead of a packaged one (PBortas)
|
|
- Exhaust Heat 2 and regional ports are playable (Feather, The Dumper, Overload, MKendora)
|
|
- Game Doctor dumps that are 24 Mbit are now supported by
|
|
a force option (MKendora, Nach)
|
|
- SuperFx interleave format is now considered deprecated.
|
|
Support will be removed in future versions (Team decision)
|
|
- made SuperFx interleave detection a compile option (MKendora)
|
|
- added memory maps for slotted games (MKendora)
|
|
- fixed a typo in the usage messages (MKendora)
|
|
- fixed the bug that had nuked optimizations (The Dumper)
|
|
- restored full speed optimizations in release builds (funkyass)
|
|
- Added non-speed-hack version of color subtraction. (zones)
|
|
- OpenGL info message font fix (zones)
|
|
- APU timer fix (zones, Nach)
|
|
- Fixed mouse offset in resized X11 window. (PhaethonH)
|
|
- Fixed a (presumably) long-standing bug: Mode 6's BG is
|
|
depth 4, not depth 8! (anomie)
|
|
- Unix: unmap all joystick buttons before applying -joymapX (anomie)
|
|
- Win32: added a define to disable pausing when focus is
|
|
lost, NOPAUSE (funkyass)
|
|
- Win32: Changed the default for Auto-save SRAM to 15 sec (funkyass)
|
|
- Dreamcast: Added SH4 assembler (PBortas, Marcus Comstedt, Per Hedbor)
|
|
- C90 and aclocal 1.8 warning fixes (thanks Ville Skytt) (PBortas)
|
|
- Unix: AMD64 compilation fixes. (PBortas)
|
|
- Added support for NSRT Team's JMA format (Nach, NSRT Team, funkyass)
|
|
- Unix: Loading a zip file on binaries without zip support
|
|
will give an appropriate error message (Nach)
|
|
- Unix: Added install target with proper --prefix handling. (PBortas)
|
|
|
|
|
|
Snes9x 1.42
|
|
- Added 8-bit rendering filters (funkyass)
|
|
- Added Sanity Checks for the Display Dialog (funkyass)
|
|
- New Layout for the Joypad Dialog, (funkyass)
|
|
- Fixed that anoying Joypad dialog bug. Now check to see
|
|
if the axis exists before asking for the info form it (funkyass)
|
|
- Added full POV support. (funkyass)
|
|
- Fixed sram sizes for SuperFx games (Nach, MKendora)
|
|
- Stopped saving sram for games with no battery (Nach, Mkendora)
|
|
- Killed the gray line and slightly optimized Win32 GL (MKendora)
|
|
- stack wrapping fix in C core (MKendora)
|
|
- removed some dead hacks (Oda Nobunaga and Dezaemon) (MKendora)
|
|
- fixed some DMA and HDMA modes (anomie, MKendora)
|
|
- improved HDMA timing (anomie)
|
|
- cleaned up load and deinterleave code (MKendora)
|
|
- removed old UI DLL (MKendora)
|
|
- new cheat dialogs (MKendora)
|
|
- started Unicode preparation in Win32 UI (MKendora)
|
|
- Implement odd sprite sizes, sprite priority rotation. (anomie)
|
|
- RTO code that hopefully works. MK's #define is
|
|
"MK_DEBUG_RTO" to try to debug the RTO code. (anomie)
|
|
- SDD1 decompression support for Linux. Also added a new
|
|
command line option -sdd1-pack. (anomie)
|
|
- Added correct VRAM read logic. #define CORRECT_VRAM_READS
|
|
if you want it. (anomie)
|
|
- removed the non-VAR_CYCLES path (MKendora)
|
|
- changed access timing map to be address-based. (MKendora, anomie)
|
|
- DSP-1 updates (Overload, Andreas Naive)
|
|
- S-DD1 decompression support (Andreas Naive)
|
|
- optimized S-DD1 code (anomie)
|
|
- S-DD1 can use packs or decompression (MKendora)
|
|
- More work on Exhaust Heat 2 (MKendora, Overload, The Dumper)
|
|
- separated ROM detection from file reading (lantus)
|
|
- fixed a mirroring bug in LoROMs (MKendora)
|
|
- cleaned up some mapping issues (MKendora)
|
|
- ST018 games now boot before locking up (Mkendora, Overload)
|
|
- SA-1 state was not completely reset, crashed Marvelous (zones)
|
|
- Removed sample caching. It caused problems, and was not
|
|
noticably faster. (MKendora)
|
|
- Fixed interlace without breaking the displays for MK (anomie)
|
|
- Fixed a PPU OpenBus hack (anomie)
|
|
- Moved SPC7110 and S-DD1 regs to speed up the general case
|
|
of reading the $4xxx registers (MKendora)
|
|
- altered Hi/Lo ROM detection to fix a few misdetects. (MKendora)
|
|
- Implemented RTO flags. With MK's implementation of $213F's
|
|
interlace bit, we now pass the SNES Test Cart's
|
|
Electronics Test (anomie)
|
|
- Fix sprite windowing bug (anomie)
|
|
- Way back in 1.40 MK changed the Windows port to default
|
|
to a plain old joypad instead of the MP5. And then we
|
|
removed the hacks for games that dislike the MP5. So
|
|
we need to change the defaults elsewhere too... (anomie)
|
|
- cleaned up the hacks section somewhat (MKendora)
|
|
- removed some interleave hacks (MKendora)
|
|
- fixed a bug in KartContents (MKendora)
|
|
- transparency fix for Jurassic Park (lantus)
|
|
- A hidden Win32 feature (MKendora)
|
|
- Kludged Mark Davis until I get stable APU timing (MKendora)
|
|
- Win32 renders overscan always, fixes some jumpy games (MKendora, lantus)
|
|
- Fixed an FMOD bug (MKendora)
|
|
- cosmetic tweaks (Everyone)
|
|
- Fixed 2 special chip bugs in the C core (zones)
|
|
- Added some sanity fixes to the C core, fixes MLBPA
|
|
Baseball for C core users (zones)
|
|
- updated zlib source (includes 1.1.4-1 patch) (MKendora)
|
|
- compiler warning fixes (PBortas)
|
|
- Updated the SuperFx asm core (pagefault)
|
|
- Kludged Unix compilation to produce working SuperFx (PBortas)
|
|
with the asm core.
|
|
- Kludged VC to deal with optimization weirdness (MKendora)
|
|
- Hacked Robocop vs. Terminator using Daffy Duck hack. Stops
|
|
flashing. (MKendora)
|
|
- Added some defines to the asm core (MKendora)
|
|
- Added possibility to take screenshots on Unix (PBortas)
|
|
- Initialize the C SuperFx core better (PBortas)
|
|
- Kludge a Japanese golf game until the APU timing is fixed (MKendora)
|
|
|
|
|
|
Snes9x 1.41-1
|
|
|
|
- Oops, in the asm CPU core i was stomping on %eax too
|
|
early, so register $4210 wasn't getting set properly. (anomie)
|
|
|
|
|
|
Snes9x 1.41
|
|
|
|
- Win32 controllers now stay the same between games (MKendora)
|
|
- Win 32 Open ROM dialog fixes (MKendora)
|
|
- Win32 Display dialog fixes (funkyass)
|
|
- Win32 OpenGL ratio tweaking. (Reduces the gray line) (kode54)
|
|
- Fixed Win32 superscope for those having issues (MKendora)
|
|
- Generic accuracy fix in main SUperscope emulation (MKendora)
|
|
- sprite bug fixed (gah! How'd we miss that) (anomie)
|
|
- SPC saving compatibility fix (Caz and zones)
|
|
- Window clipping update (anomie)
|
|
- Mode 7 clipping fix (TRAC)
|
|
- latching fix (anomie)
|
|
- BS BIOS checksum and mapping fix (MKendora)
|
|
- Working Uniracers hack (dma.cpp) (anomie)
|
|
- HDMA Indirect Address fix for Romancing Saga 2 (anomie)
|
|
- Better savestate hack, does it break anything? (anomie)
|
|
- C4 C core fixes. Mostly Trapezoid (thanks Nach),
|
|
some s/short/int16/, some indentation. (anomie)
|
|
- Damn, but the indentation in ppu.cpp was screwed up.
|
|
Killed some dead code too (twas commented forevermore). (anomie)
|
|
- fixed a potential crash in S-DD1 logging (MKendora)
|
|
- Improved accuracy of Hi/LoROM detection (~500 ROM test) (MKendora)
|
|
- Hack for Moryou Senki Madara 2, don't call
|
|
SelectTileRenderer from DrawOBJS if BGMode is 5 or 6. A
|
|
real fix requires at least rewriting SelectTileRenderer,
|
|
or inlining a special version in DrawOBJS. (anomie)
|
|
- DMA traces: add additional address info to reads too. (anomie)
|
|
- Killed the old Borland Joypad dialog (funkyass)
|
|
- Fixed issues with Dezaemon and CT, maybe others (anomie, MKendora)
|
|
- Changed the internal snapshot key from \ to VK_F12 (funkyass)
|
|
Fixes issues with non-US keyboard layouts.
|
|
- Fixed OAM reset to not occur during forced blank. (anomie)
|
|
- Killed some dead OAM reset code that doesn't need saving. (anomie)
|
|
- Unix/X11: Fixed screen jumping. CT enables overscan mid-
|
|
frame for only one frame, and we now update the rendered
|
|
screen height accordingly. Other ports are still broken. (anomie)
|
|
- Unix/X11: Fixed possible TV mode crash. (anomie)
|
|
- Fixed OAM reset timing (beginning of V-Blank rather than
|
|
end) for R-TYPE 3 (J). (anomie)
|
|
- Unix/X11: Fixed OpenGL target (PBortas)
|
|
- Unix/OSS: Fixed big endian sound (PBortas/ernstp)
|
|
- Tweaked the About Dialog so its read-only and no scroll (funkyass)
|
|
|
|
|
|
Snes9x 1.40
|
|
|
|
- cleaned up a sound skipping code issue. Same as the
|
|
RTC issue (lantus)
|
|
- re-fixed the invalid BRR header behavior twice (Lord Nightmare, FatlXception, Mkendora)
|
|
- More BS mapping fixes. (The Dumper, MKendora)
|
|
- Fixed Ranma Bun no 1 - Chonai Gekitou Hen (J) and
|
|
Street Combat (U). Interlace is not supported in the
|
|
non-Hi-res modes, as far as I can tell. (MKendora)
|
|
- Also fixes Maka Maka (J). Frank Yang's report, and
|
|
anomie's code both provided clues to this one.
|
|
- Removed special casing on setting 5c77 version to one.
|
|
This seems to be true for U and J units always. I need
|
|
it checked out on PAL... (neviksti)
|
|
- Using SNEeSe's values for 5c78 and 5A22. Note we know
|
|
that the 5c78 version can also be 1 or 2, instead of 3. (TRAC, neviksti)
|
|
- Added turbo buttons. Credit/blame for the design goes
|
|
to slack, Nave, Gogo, and myself. (MKendora)
|
|
- fixed a bug in turbo (slack, MKendora)
|
|
- Tried merging the behavior of Old $4200 with new $4200 (MKendora)
|
|
- Made $4200's return value match what VSMC Explorer
|
|
showed on Fancia's SNES (MKendora)
|
|
- Fixed a matrix multiplcation bug in ZSNES state loads (MKendora)
|
|
- Fixed Dezaemon and Ys3 mode 7 (lantus)
|
|
- Fixed H-DMA modes 5-7. Thanks to The Dumper for the
|
|
extra motivation needed. GunForce and Genocide 2 work. (The Dumper, MKendora)
|
|
- Fixed BG3 Priority. I'm stupid. anomie had fixed it,
|
|
but lantus fixed it again, because I didn't use it. (anomie, lantus)
|
|
- Added a Star Fox 2 hack, and an interleave skip (The Dumper, lantus, MKendora)
|
|
- Cleared BS setting on load (lantus)
|
|
- Fix for Mode 7 priorities. fixes F-1 Grand Prix (all 3) (anomie)
|
|
- JANJYU GAKUEN 2 needs Multi-tap 5 off. (Frank Yang, MKendora)
|
|
- HONKAKUHA IGO GOSEI: No multi-tap 5, allow mouse (lantus, MKendora)
|
|
- Added a few missed conditional compiles (Nach)
|
|
- disabled multitap 5 by default, added menu to enable (MKendora)
|
|
- special thanks to anomie and lantus. One of them is
|
|
responsible for a bug fix I forgot already. (anomie, lantus)
|
|
- Removed several Multitap5 disable hacks. (MKendora)
|
|
- Added an SPC dumping upgrade from kode54 (kode54)
|
|
- cleaned up some resource leaks (MKendora)
|
|
- I forgot this since 1.39mk, but SPC700 flag fixes (anomie)
|
|
- Mode 7 interpolation screen flip fix (anomie)
|
|
- Updated SPC7110 code a bit, for compatibility (Daniel, anomie)
|
|
- Changed RTC saving. (Byte exact to old format on Win32)
|
|
The submitted patch for "safety" doubled the file size,
|
|
so I had to write it in explicitly little-endian. (MKendora)
|
|
- Removed the old hidden cursor (MKendora)
|
|
- Applied a WAI correction from anomie. (anomie)
|
|
- Added a patch for Pseudo hi-res (anomie)
|
|
- Hacked around Word writes to $7F:FFFF. Thanks to lantus
|
|
and The Dumper for verification. (MKendora)
|
|
- PPC compile fix? and debugger reversion (anomie)
|
|
- Set defaults differently to improve sound quality. (MKendora)
|
|
- Clear Force load settings after Init (lantus)
|
|
- Made menu reset a soft reset. Fixed BL Sound Test & more (CaitSith2)
|
|
- Fixed word writes to block bounds in asm core. (MKendora)
|
|
- redone version of my bounds fix, only this one WORKS! (TRAC)
|
|
- Thanks to TRAC for the AT&T syntax refresher! (TRAC)
|
|
- Fixed screen saver disable (kode54)
|
|
- Fixed OAM and sprite priority in the asm core (anomie)
|
|
- Proper Interlace fix for mid-frame changes (anomie)
|
|
- Fixed OpenGL to accomodate previous patch (MKendora)
|
|
- Ported the "Settings" dialog to VC (MKendora)
|
|
- Fixed ROM Info bugs (_pentium_five, MKendora)
|
|
- Fixed non-stretched interlacing, but it's s.l.o.w. (anomie)
|
|
- Superscope and Mouse need to be enabled by the menu. (MKendora)
|
|
- Fixed HiROM sram reads in asm and C cores (anomie, MKendora)
|
|
- Added Company 48 to the list. Thanks to _pentium_five_ (StatMat)
|
|
- Set Super Drift Out's S-ram correctly. (Snes9xppSE Team)
|
|
- Fixed NTSC timing. Helps ToP Intro greatly (kode54)
|
|
- Added several entries to the company list, from uCON64 (Nach)
|
|
- Lots more companies (StatMat, Nach)
|
|
- Fixed Win32 Superscope support (NT kernel only?) (MKendora)
|
|
- Added ZSNES OBC1 code ported from asm to C (sanmaiwashi)
|
|
- Implemented Justifier emulation (neviksti, MKendora)
|
|
- Fixed Rudora no Hihou's clip window bug (anomie)
|
|
- Fixed Flintstones sprite issue (lantus)
|
|
- Fixed sram mappings for Big Sky Troopers and
|
|
Taikyoku - IGO Goliath. Both map in bank F0 (MKendora)
|
|
- Fixed a possible crash when switching audio settings (MKendora)
|
|
- Added per-pack gfx pack configuration (MKendora)
|
|
- Fixed glitches in DSP-1 games (Flintstones fix) (lantus)
|
|
- Added delay to Superscope latching. Fixes X-Zone. (neviksti, MKendora, zones)
|
|
- Added DSP-2 support (Overload, The Dumper, Lord Nightmare,
|
|
MKendora, neviksti)
|
|
- Fixed Super Bases Loaded 2 (and J/K ports) DSP-1 seems
|
|
to ignore the A15 line in LoROM maps (MKendora)
|
|
- Corrected $4200 again (The Dumper)
|
|
- Corrected $2100, $2102, and $2102 read behavior (anomie)
|
|
- Fixed Cancel on the Sound Options dialog. (MKendora)
|
|
- Fixed the sound options dialog (Thanks, Quattro) (MKendora)
|
|
- updated DSP-1 support to match chip better (Overload, neviksti, The Dumper)
|
|
- added a few Ops to the DSP-4 routine (Nothing plays yet) (neviksti, The Dumper, Overload, MKendora)
|
|
- added screenshot support (anomie, sanmaiwashi)
|
|
- stubbed the ST010 chip in Exhaust Heat 2 (Overload, MKendora)
|
|
- hacked around War 2410's lockup (pagefault, _Demo_, MKendora)
|
|
- updated tests for type 1 ROMs (based on reset vector) (MKendora)
|
|
- Emulation mode CPU fix (The Dumper)
|
|
- Open Bus fixes (anomie)
|
|
- Better Expansion port emulation (anomie)
|
|
- More Open Bus fixes (Overload, anomie)
|
|
- HDMA fixes (fix colors only in Full Throttle Racing) (anomie)
|
|
- Migrated DKJM2 onto the Tales map (MKendora)
|
|
- Tried to remove Dragon Knight 4 hack (LoROM sram fix) (MKendora)
|
|
- Fixed ROM Mirroring for LoROMs (<= 32 Mbit) (MKendora, TRAC)
|
|
- blocked wram to wram DMAs (neviksti)
|
|
- fixed HiROM mirroring, too. Thanks TRAC! (MKendora, TRAC)
|
|
- fixed C core RMW and Push ops to write in the correct
|
|
order, fixes Michael Jordan gfx. (anomie, Overload, MKendora)
|
|
- set RDIO to start as 0xFF, fixes SuperFx games. (anomie, Overload)
|
|
- New connect dialog (funkyass)
|
|
- better conditional compile of FMOD (funkyass)
|
|
- fixed screenshot code when libpng is not used (funkyass)
|
|
- added portability fixes (zones)
|
|
- fixed asm Pushes (anomie)
|
|
- fixed asm LoROM s-ram decode (MKendora)
|
|
- migrated DEZAEMON to standard LoROM map (MKendora)
|
|
- fixed the Madara 2 OpenGL bug (key found in Rudra) (MKendora)
|
|
- fixed asm RMW instructions (MKendora)
|
|
- fixed ADC opcode (The Dumper)
|
|
- added DSP-2 Op09 (The Dumper)
|
|
- updated C4 C code (anomie)
|
|
- updated C4 asm code (Nach)
|
|
- Keep OpenGL in ratio (kode54)
|
|
- Replaced many more Borland dialogs (funkyass, MKendora, Nach)
|
|
- Added CRC32 to displayed ROM Info (Nach, MKendora)
|
|
- Fix cheat support (The Dumper)
|
|
- improved DMA timing (MKendora, Overload, The Dumper)
|
|
- Fixed Mode 7 math, removed Dezaemon, Gaia, Ys 3 hacks (TRAC, MKendora)
|
|
- Mode 7 flip fix (TRAC)
|
|
- Multiple safety and initialization fixes (zones)
|
|
- Platform safety fixes (PBortas)
|
|
- Memmap cleanups (MKendora)
|
|
- More preliminary work on special chips (The Dumper, Overload, MKendora)
|
|
- Added color coding (MKendora)
|
|
- Another HDMA fix (anomie)
|
|
- added another known hack to the hacked games list (Nach)
|
|
- ToP memmap changes (MKendora)
|
|
- Checksum calculation changes (MKendora)
|
|
- Special cased a few games for OAM issues (MKendora)
|
|
- Reverted OAM reset to 1.39 timing (MKendora)
|
|
- Reworked vram wrapping (zones, Mkendora)
|
|
- Fixed $4210 and Super Professional Baseball 2 (Overload, MKendora)
|
|
- Fixed APU RAM init (Overload, MKendora)
|
|
- More support for Exhaust Heat 2 (not playable) (The Dumper, Overload, neviksti)
|
|
- removed some debris from save states (MKendora)
|
|
- fixed? Doom's save state bug (MKendora)
|
|
- simple overdump detection warning (MKendora)
|
|
|
|
|
|
1.39mk3b
|
|
|
|
- Fixed the RTC detection. FINALLY done correctly (lantus, MKendora)
|
|
|
|
|
|
1.39mk3a
|
|
|
|
- neatened up the company table. (MKendora)
|
|
- fixed a mistake in the ROM Info box (MKendora)
|
|
- Added a Calulcated Size field to ROM INfo. (MKendora)
|
|
- Added 3 more companies to the ROM Info table (MKendora)
|
|
- Fixed BS detection (The Dumper)
|
|
- Added a Legend-specific hack to get sound. I remembered
|
|
it being mentioned in the changelog. (Gary Henderson)
|
|
- Unbroke the Star Ocean special cases (Trigger of Time, MKendora)
|
|
- Company 255 is not Hudson-ZFE detects all Hudson games
|
|
without it, except a corrupt dump (StatMat, MKendora)
|
|
- fixed a bug in the redone detection for the SPC7110 (CaitSith2)
|
|
- 44Khz sound should be 44.1Kz. Changed, though you'll
|
|
need to re-set 44.1Khz to make it take effect. Not sure
|
|
if this affects non-Windows ports. (MKendora)
|
|
- Added 32Khz playback (MKendora)
|
|
- Inproved BS ROM mapping (_Demo_, The Dumper, MKendora)
|
|
|
|
|
|
1.39mk3
|
|
|
|
- Honkaku Syogi Fuunji Ryuou (J) fixed (force no multitap) (Frank Yang)
|
|
Also Fixed Super Castles (j).
|
|
Also fixed a bunch more. This dude e-mailed like 100 bugs
|
|
to my hosts, some already fixed in Snes9x1.39mk2, but
|
|
about 7 were clearly multi-tap5.
|
|
- also fixed Dekitate High School. Error was in Japanese (Frank Yang, Tomato)
|
|
- fixed 2 memory leaks (Aaron)
|
|
- Dai Kaiju Monogotari 2 works as a 40 Mbit ROM. (MKendora, The Dumper)
|
|
- Fixed the Flashback bug. Lots of info led to this. (neviksti, MKendora)
|
|
Thanks neviksti, The Dumper, TRAC, and FatlXception
|
|
for clarifying the behavior.
|
|
- Fixed Sailor Moon Fuwa Fuwa Panic 2 to work with (neviksti, MKendora)
|
|
previous fix. It's a total hack, but it should sound
|
|
just like the old Snes9x did. neviksti strikes again!
|
|
- Dirty hack to make 3 games deinterleave properly: (MKendora)
|
|
Wizardry 4, Mark Davis, and Honkakuha Igo Gosei(FX)
|
|
all work as well as the deinterleaved counterparts.
|
|
(The last is a hacked game, and you should get the
|
|
non-FX version)
|
|
- Fixed Seima Jyuden Beasts and Blades. Another Multitap, (Frank Yang)
|
|
but for some reason, the hack requires the C cpu core.
|
|
Thanks to Tomato for taking a stab at the error message,
|
|
as well. It was too vague to be of use, he said. I
|
|
just tried it because it worked on other games.
|
|
- Res Arcana fixed. Another Frank Yang report, another J (Frank Yang, MKendora)
|
|
error, but I can read kana well enough with a table!
|
|
- Removed a Terranigma specific hack. Not sure, but the (anomie)
|
|
new behavior might have fixed Tin-Tin in Tibet's colors.
|
|
- Dirty hack to work around a dirty hack. Both Yoshi's (MKendora)
|
|
Island (E) dumps should work now
|
|
- Added the JumboLoROM memory map, Extends LoROM support (The Dumper, neviksti, MKendora)
|
|
to 48+ Megabits.
|
|
- added an EXTBG fix, since iirc, TRAC is using it as well (anomie)
|
|
Does it actually fix anything?
|
|
- Fixed crash in DSP Op06 (The Dumper)
|
|
- Fixed a GUI error on my part (Trigger of Time)
|
|
- Cleaned up some of the SPC7110 detection/size code. (MKendora)
|
|
- Merged in XBox port changes to SPC7110 code (lantus)
|
|
- Added a call to Memory.Deinit when exiting. (lantus, MKendora)
|
|
- Many memory leaks fixed while chatting with lantus (lantus, MKendora)
|
|
- Fixed that stubborn open/close leak (lantus)
|
|
|
|
|
|
1.39mk2
|
|
|
|
- hacked in Shien's Revenge (anomie)
|
|
- fixed Orge Battle's green lines. (CPU source for DMA) (anomie)
|
|
- Looks interesting, and might apply to other DMA cases?
|
|
- maybe "fixed" DKC's barrels? by treating $2001
|
|
as unmapped. The game worked before with a hack. (MKendora)
|
|
- optimized SPC7110 slightly by removing extra setup work (MKendora)
|
|
- Fixed DBZ 3 (Korean). S. Korea is, in fact, NTSC. (MKendora)
|
|
- Fixed a hard-coded value in the SPC7110 (MKendora)
|
|
- Added a Win port ROM Info dialog (MKendora)
|
|
- some companies aren't in the table I used.
|
|
If you encounter an Unimplemented company,
|
|
report it the the Snes9x development forum, with
|
|
the correct company and the number.
|
|
|
|
|
|
1.39mk
|
|
- SPC7110 support based on Dark Force's docs. (Dark Force, zsKnight,
|
|
The Dumper, MKendora)
|
|
Trust me when I say those guys deserve the credit more
|
|
than me. From what I'm told, Dark Force is the man
|
|
behind most of the reverse engineering, but they all
|
|
did a much harder bunch of work than I did following
|
|
their specs. It's plain and simple that these three
|
|
are the masterminds behind all SPC7110 support.
|
|
|
|
Dark Force for reverse engineering the chip (Extremely tough work!)
|
|
zsKnight for the original core, and probably other things
|
|
The Dumper for dumping the packs and doing hardware tests.
|
|
|
|
Also thanks to CaitSith2 for numerous bug reports
|
|
and a lot of bug fixes.
|
|
|
|
- Theme Park hack removed, fixed via PPU latching (anomie, MKendora, TRAC)
|
|
- WWF Wrestlemania hack removed (anomie, TRAC)
|
|
- Strike Gunner hack fixed (anomie, MKendora, TRAC)
|
|
- FF:MQ text fixed. May help other sprite issues. (TRAC)
|
|
- Umi Hara Kawa Se timing corrected. (anomie)
|
|
- S-DD1 packs load by the same rules as ZSNES (MKendora)
|
|
- SPC7110 code builds in linux (Lord Nightmare, zinx)
|
|
- Added The Dumper's DSP-1 updates (The Dumper)
|
|
- SPC7110 is correctly displayed on load, RTC also noted. (MKendora)
|
|
- Fixed a potential graphics problem (TRAC)
|
|
no known games fixed, but who knows?
|
|
- Fixed Ballz3D (pagefault)
|
|
- Re-fixed Ballz3D, via DSP op 0F (The Dumper)
|
|
- included some of anomie's fixes. Many caused me grief,
|
|
so only Marko's Magic Football is intentionally fixed. (anomie)
|
|
- finished zsnes save support, though I don't know how
|
|
well it will work with SPC7110 games (MKendora)
|
|
- Added a new soundux.cpp again to fix some noise.
|
|
(Fixes the GW "fart track") (Lord Nightmare, info from Anti-Res)
|
|
- Added 3 cache modes for SPC7110 games (MKendora)
|
|
- Added new BRR decoder. Requires sample caching
|
|
and the Anti-Res decoder be disabled. (FatlXception, port by Lord Nightmare)
|
|
- Added CaitSith2's RTC debugger. define RTC_DEBUGGER in
|
|
project settings to enable it. (CaitSith2)
|
|
- SPC7110 per-game cumulative logging (MKendora)
|
|
- other fixes that I've forgotten (sanma iwashi, TRAC, anomie, ????)
|
|
|
|
- "I'm not worthy" thanks to the original SPC7110 crew (DF, zsKnight, and the Dumper)
|
|
- Thanks again to the same people, because they deserve it!
|
|
- thanks to The Dumper, Dejap, TRAC, and all the ZSNES crew for technical assistance
|
|
- Thanks to most of the Snes9x mods for testing (no thanks to you, Raptor ;)
|
|
- and thanks to TRAC and #mkendora for letting me vent at you.
|
|
|
|
1.39
|
|
- Added SDD-1 unknown graphics data logging at the dumper's request. A bit late
|
|
but might help with Street Fighter 2 Alpha's data dumping. Creates a
|
|
romname.dat file in the freeze file folder.
|
|
- Implemented 16-bit texture support for OpenGL modes in Windows and Linux.
|
|
Had to support a new pixel format type to do it - RGB5551 (one bit of alpha)
|
|
which caused me some major problems - black was no longer always pixel value
|
|
zero!
|
|
- Removed the Bump map OpenGL mode from the Windows port (didn't look so good
|
|
anyway and was slow).
|
|
- Added a hidden novelty OpenGL mode (clue: a keyboard shortcut activates it)
|
|
- Reverted back to FMod version 3.20 after reports that version 3.33 broke
|
|
AD3 support.
|
|
- Implemented a better work-around for the broken select system call in the
|
|
Linux kernel - the original work-around was long-winded and stopped working
|
|
when I implemented OpenGL support under Linux.
|
|
- Added the same speed-up hack to the OpenGL code that the Glide code already
|
|
supported. Basically, if your OpenGL implementation supports 16-bit textures
|
|
then OpenGL mode should be as fast, or faster than the 3dfx Glide mode.
|
|
- Hopefully fixed Glide support.
|
|
- Reverted back to the original colour blending code. The newer code, although
|
|
more accurate in most cases, had too many glitches and was slower.
|
|
- Included multiple Japanese games fixes from Iswashi San.
|
|
- Fixed a timing problem caused by a speed up hack that was affecting Top Gear
|
|
300. No the game still isn't playable yet, but I noticed the problem while
|
|
investigating the DSP-4 chip used by the game.
|
|
1.38
|
|
- Added support for Star Ocean and Street Fighter 2 Alpha decompressed graphics
|
|
packs from dejap. Used a binary chop search rather than a linear search to
|
|
locate correct decompressed graphics more quickly - should help emulation
|
|
speed during later stages of the game.
|
|
- Included OpenGL support into the Linux port and speeded up the Windows OpenGL
|
|
implementation slightly. The real speed up would occur if I could figure out
|
|
how/if 16-bit textures are supported in OpenGL because at the moment the
|
|
16-bit software rendered SNES image must be converted to 24-bit before being
|
|
uploaded as a texture...
|
|
- Included the latest ZSNES DSP-1 code. Now Pilotwings, SD Racer and Suzuka 8
|
|
Hours are playable. Aim For The Ace, Super Air Diver 1 & 2 and Syutoko Battle 94
|
|
are also playable, but with bugs. Thanks to zsKnight, _demo_, et al for all
|
|
their hard work.
|
|
- Another Daffy Duck: Marvin Missions screen flicker problem worked around -
|
|
writing to the IRQ enable register shouldn't clear any pending IRQs, but
|
|
Sieken 3 seems to require this or else the game hangs. Special-cased Daffy
|
|
Duck for now.
|
|
- An NMI emulation bug was triggering a Panic Bomberman World game bug,
|
|
crashing it. Basically, if a game enables NMIs after the normal trigger
|
|
point, the NMI should not trigger if the game has already read the NMI clear
|
|
register.
|
|
- Panic Bomberman World requires SPC700 memory to be initialised to zero on
|
|
reset otherwise the game hangs when a tune finishes and another one should
|
|
start.
|
|
- Added mouse pointer auto-hide to the Windows port. Much better than the turn
|
|
the mouse pointer into a black dot method I was using before.
|
|
- Included the latest ZSNES Super FX code. Not sure if it fixes actually fixes
|
|
any games.
|
|
- Added an offset hack for Strike Gunner to get the scrolling ground layer
|
|
to line up correctly - another offset-per-tile bug hacked around for now.
|
|
- Arrr! Left in some debugging code in the last release that prevented all
|
|
games that need the slower SPC700 timing from working. Removed it.
|
|
- Hmm. The broken cut-scenes in Deep Space 9 seem to indicate that I haven't
|
|
got the emulated clock speed of the 65c816 CPU correct yet. And not by a
|
|
little bit - a 9% too slow error. Hacked special timing for the game for now.
|
|
- Added triple-buffering to Windows port - enabling double-buffering actually
|
|
enables triple-buffering if you have enough free video RAM, defaulting to
|
|
double-buffering if you don't.
|
|
- Fixed another crash bug in the interpolated mode 7 code - if no scaling
|
|
was being used (either up or down) and screen repeat was enabled and the
|
|
screen was flipped horizontally, the routine would crash Snes9x. Was causing
|
|
Snes9x to crash during rock monster boss stage of Castlevania 4.
|
|
- Oops. Got the initialisation of the default SNES screen width and height
|
|
round the wrong way - could cause a X Windows System error message on the
|
|
UNIX port after loading a ZSNES freeze file.
|
|
- Included the unofficial Windows port emulation fixes for several games including
|
|
Kentouou World championship and TKO Super Championship.
|
|
- Included Iwashi San's improved Anti Res. sound sample decoding routine and
|
|
updated the C version to match.
|
|
- Included Anti Res. improved sample decompression code he sent me ages ago,
|
|
but for some reason I didn't include. Sorry. This version seems good enough
|
|
to leave enabled all the time.
|
|
1.37
|
|
- Added fix for Captain America's corrupt graphics - a ROM bug causes it to
|
|
read from what I thought should be an unmapped memory area, but it expects
|
|
the value returned to be zero.
|
|
- Added code to support games that switch to the hi-res. SNES screen mode part
|
|
way down the screen while using the 3dfx bi-linear filter mode. The code
|
|
basically has to back out of the speed up hack it was using when the game
|
|
switches resolutions.
|
|
- Fixed support for games that have mixed lo-res. (256x224), medium res.
|
|
(512x224) and hi-res. (512x448) all on the same screen - corrects the display
|
|
of Majin Tensei 2.
|
|
- Added support for games that use sub-screen addition to the back-drop layer
|
|
while displaying hi-res. graphics - something I thought the SNES couldn't do
|
|
but the game Marvelous uses this.
|
|
- Reworked the UNIX/Linux output image handling code: the image doesn't always
|
|
have to be scaled when hi-res. support is enabled, the PutImage operation
|
|
only updates the area of the screen it has to, the SNES image is now always
|
|
centred in the window/full-screen area and if the SNES image changes size
|
|
between frames, the old screen areas are now correctly cleared.
|
|
- Fixed the corrupt graphics problem during the battle scene of Last Bible 3 -
|
|
it requires that previously unknown DMA mode 5 should just act the same as
|
|
DMA mode 1.
|
|
- Fixed a nasty bug when H-IRQs were being reused on the same scanline - a logic
|
|
bug could cause H-DMA processing for that line to be skipped. Was causing
|
|
the bridge and the start banners to be the wrong colours in Top Gear 2.
|
|
- Added Kreed's display processing modes to the Linux port, including his new
|
|
asm version of the Super2xSaI mode and the new software bi-linear filtering
|
|
mode.
|
|
- Think I might have figured out the odd Mode 7 glitch problems the games
|
|
Illusion and Gaia and Chase HQ were having. My original fix was to mod the
|
|
centre X & Y values with 1024, but looks like the true fix is to mod
|
|
X + horizontal offset and Y + vertical offset with 1024 when screen wrapping
|
|
is enabled.
|
|
- Disabled H-DMA'ing into V-RAM via registers 2118/2119. The game Hook
|
|
deliberately does this causing graphic corruption while dialog boxes are
|
|
displayed. Maybe the real SNES disallowed this and it was left in the game by
|
|
mistake? Not sure what effect the game was trying to produce because
|
|
disabling the emulation of this feature doesn't seem to affect the game at
|
|
all, other than stopping the corruption.
|
|
+ Also fixes graphics junk problem on first screen of Bugs Bunny.
|
|
- Added a 'region-free' timing hack for Power Rangers Fight - without it the
|
|
NTSC version was displaying badly glitching graphics; I'd already fixed the
|
|
PAL version.
|
|
- Added true priority-per-pixel mode 7 support (the previous support was just
|
|
a hack to get the colours correct) - level 2 of Contra 3 used this feature.
|
|
- The Japanese, German, French and Spanish version of Illusion of Gaia needs the
|
|
slow SPC700 timing.
|
|
- Deleted the Breath of Fire 2 S-RAM hack for the hacker intro version -
|
|
according to reports it was causing problems for the non-hacked version.
|
|
- Legend, the PAL version, never sets the sound master volume control - Snes9x
|
|
was defaulting this to off, I guess the real SNES must default it to full
|
|
volume; changed Snes9x. The NTSC version of Legend does set the master
|
|
volume level, but sets it to off just after the title screen. Hmm. The -nmv
|
|
command-line switch allows you to hear sound in this version.
|
|
- Panic Bomber World was tripping an SA-1 emulation bug - the WAI instruction
|
|
emulation code was setting the 'waiting for interrupt' flag on the wrong CPU
|
|
causing the main SNES to skip an instruction when the next interrupt occurred.
|
|
- Panic Bomber World, Bomberman 4 and UFO Kamen Yakisoban all need the slower
|
|
SPC700 timing.
|
|
- Oops! The Super Formation Soccer 95 fix was causing Aero 2 to lock up. This
|
|
means I have no no idea what value the DMA in progress register should
|
|
represent. I've hacked it and made it toggle between 0 and $ff on each read
|
|
which gets both games working, for now...
|
|
- The ROM de-interleaving code always assumed the blocks were rearranged based
|
|
on a power of two, but Francois found a copy of Soldiers of Fortune where
|
|
this was not the case. Corrected the code.
|
|
1.36
|
|
- Finally worked out why the menu items weren't being highlighted in several
|
|
ROMs, including Battletoads, U.N. Squadron and All Japan Pro Wrestling.
|
|
Two problems: its seems the SNES does halve the colour value result when
|
|
blending colours when only the fixed colour addition/subtraction is enabled,
|
|
but doesn't halve the result when sub-screen is being blended and its a clear
|
|
part of the sub-screen. The second problem was that I had an optimisation
|
|
that prevented the time consuming colour blending code from being called if
|
|
the colour being added/subtracted was black - adding zero to a number doesn't
|
|
affect the result, but not performing the side-effect of halving the result
|
|
does affect the final value...
|
|
- Super Formation Soccer 95 requires that the DMA enabled register doesn't
|
|
always return zero, otherwise the game locks up.
|
|
- Thanks to several people reporting a screen flickering problem in the
|
|
pseudo 3-d section of Jurassic Park 2 I've fixed a nasty problem in H-IRQ
|
|
handling code which could cause double-triggers or skip IRQs altogether.
|
|
With this fix I can now remove the special hacks for Ninja Warriors Again,
|
|
Chuck Rock and F-1 Grand Prix.
|
|
- More games needing the slow SPC700 timing:
|
|
Zennihon Puroresu 2, Soulblazer and Robotrek.
|
|
- The CPU idle time skipping code was skipping cycles during a software delay
|
|
loop in Itchy and Scratchy, causing screen flicker.
|
|
- Looks like reading the value of register $2137 shouldn't clear a pending
|
|
IRQ - was causing screen flicker on Yoshi's Island.
|
|
- Actraiser 1 & 2 both need the slow SPC700 timing.
|
|
- Terranigma reads a sound channel's current sample output value and waits for
|
|
it to be zero before preceeding. I forgot to always return zero when a
|
|
channel was silent. This mistake was causing the game to lock up.
|
|
+ Itchy and Scratchy and was causing the music to stop and samples to be cut
|
|
short in the Mario Early Years series.
|
|
- Added a hack for Secret of the Evermore - at several points in the game, just
|
|
as the plane is about to land, it reads from unknown registers $4000 and
|
|
$4001 and, if it doesn't get the value its looking for, the game hangs or
|
|
displays corrupt graphics.
|
|
- Silva Saga 2 was accidentally triggering a colour blending hack I put in
|
|
place Kirby Dreamland 3 and Kirby Superstar.
|
|
- The ZSNES freeze-file loading code could leave a file open if the file wasn't
|
|
a valid ZSNES freeze file.
|
|
- Super Punch-out requires certain DMA registers to be updated after the DMA
|
|
completes. Snes9x used to do that, but I must have accidentally left the code
|
|
commented out whilst investigating a different problem in another game.
|
|
1.35
|
|
- Added a recently played game list to the Windows port File menu so you can
|
|
quickly load up your favourite games.
|
|
- Included IPS patching support based on code from Neill Corlett - just rename
|
|
the patch file to match your ROM image name but with a .ips extension and
|
|
copy it into your ROM or freeze-file folder.
|
|
- Added John Weidman's and Darkforce's S-RTC, (Real Time Clock) emulation code.
|
|
The only game that seems to use it is Dai Kaijyu Monogatari II.
|
|
- Included code from Nose000 for games with 128Kbytes of S-RAM. Now
|
|
Sound Novel-Tcool, Thoroughbred Breeder 3, RPG-Tcool 2 and Dezaemon are
|
|
supported.
|
|
- The Windows port now has an option to make the 'turbo speed' button a toggle
|
|
button.
|
|
- The optimised fixed colour addition/subtraction code was ignoring the colour
|
|
window. Thanks to John Weidman for pointing this out.
|
|
- Added mode 7 and hi-res. hack for Dezaemon from Nose000 - the mode 7 hack
|
|
looks interesting (to me); I wonder if some other games would benefit?
|
|
- Both Tales of Phantasia and Star Ocean need custom sound CPU timing. Hmm.
|
|
That's 4 ROMs now, there will be more... That means I still haven't
|
|
discovered all the major SNES timing quirks. :-(
|
|
- Windows port now has an option to save the S-RAM data at any time.
|
|
- Windows port saving SPC dumps now auto-increments the filename.
|
|
- Added work-around for a Super Robot Wars Ex ROM bug - the game was checking
|
|
the wrong PPU register for end of h-blank. The game must have only worked by
|
|
chance rather than by design on a real SNES.
|
|
1.34
|
|
- Corrected the colour addition/subtraction and halve the result code not to
|
|
halve the result when only the fixed colour is used, i.e. the sub-screen is
|
|
clear. Discovered and fixed this awhile ago, but I accidentally reintroduced
|
|
the bug when adding some optimisations a few versions back.
|
|
- Finally cleared the last of the offset per tile background mode bugs. There
|
|
was something odd about the tile at the left-hand edge of the screen that I
|
|
couldn't figure out - well now I have. Yoshi's Island level 6 boss screen,
|
|
Mario RPG mine cart screen and Jim Power title screen now all display
|
|
correctly.
|
|
- Made reading blank areas of the SNES memory map return the middle byte of
|
|
the address - fixes Home Alone which tries to execute code in an empty part
|
|
of its memory map but only works because the real SNES seems to return the
|
|
middle byte of the address - $60 in this case, which corresponds to the
|
|
ReTurn from Subroutine instruction.
|
|
- Added auto-cycle skipping disable for Earth Worm Jim 2 and several other
|
|
games that spool sample data using H-DMA as the sample is being played.
|
|
Improves some sound effects in these games.
|
|
- Fixed joy-pad routines to only report up or left if down or right are also
|
|
pressed respectively. Works around a game bug in Empire Strikes Back in the
|
|
asteroid stage where the game crashes if both left and right are pressed -
|
|
something impossible to do on the original SNES game-pad.
|
|
- Added custom SPC700 timing for Rendering Ranger R2 - the game now works with
|
|
full sound. No idea why it needs custom SPC700 timing.
|
|
- The ROM type detection was broken for Treasure Hunter G and Test Drive 2 -
|
|
fixed the code so type 2 ROMs can be LoROM.
|
|
- Adjusted the main CPU cycles per scan-line from 341 to 342 to give an exact
|
|
match for the timing required for Earth Worm Jim 2. All EWJ2 needs now
|
|
for perfect sound emulation is a method of synchronising the emulation
|
|
speed to the host hardware's sound card playback rate, oh, and a fast CPU!
|
|
The Linux port already has this but seems to be broken because games
|
|
play at double-speed when this option is enabled.
|
|
- Some SPC700 code in Earth Worm Jim 2 seemed to prove that I had guessed the
|
|
clock speed of the SPC700 sound CPU incorrectly - out by almost a factor of
|
|
two, in fact. Changed the relative emulated clock speed of SPC700. Now
|
|
Chrono Trigger doesn't lock up at certain points anymore, the special SPC700
|
|
timing for games written by the Human Software company isn't required and
|
|
you can hear some more of the sound samples in Earth Worm Jim 2, etc.
|
|
- H-IRQ triggering code was broken - if a ROM turned on H-IRQ but later turned
|
|
it off, Snes9x could continued to generate H-IRQs, crashing some games.
|
|
- Added a generic test for Human Entertainment games - they need special
|
|
sound CPU timing to work. Gets Taekwon-Do working.
|
|
- Disabled offset-per-tile mode for Theme Park; the world map screen is corrupt
|
|
with it enabled.
|
|
- Yet more changes to the offset-per-tile backgrounds modes 2 and 4. Added
|
|
64 tile wide screen support for Mario RPG's mine cart ride and fixed multiple
|
|
bugs with the handling of horizontal offset-per-tile used in Chrono Trigger's
|
|
fade in of the space ship.
|
|
- New feature: Snes9x can now load ZSNES freeze state files! Just copy them
|
|
into the freeze file folder and Snes9x will load them when you load a freeze
|
|
file, but only if the corresponding native format Snes9x freeze file doesn't
|
|
exist.
|
|
- Added memory map hack for Batman - Revenge of the Joker: its ROM header block
|
|
is in the wrong location and Snes9x incorrectly detected its ROM type.
|
|
- Fixed an off-by-one-pixel clip window 2 bug when the window was set to clip
|
|
outside the window area; clip window 1 was already correct. Removed the bright
|
|
line bug at the left edge when the combat screen is appearing in Starfox and
|
|
the clip problem when text boxes zoom-out in Yoshi's Island.
|
|
- Jim Power's title screen seems to prove that the per-tile offset data on
|
|
mode 2 isn't ignored for the left most tile as I originally thought.
|
|
Modified the code.
|
|
- The recent timing changes highlighted another problem with Daffy Duck -
|
|
changed IRQ enable register to only clear pending IRQs if one has been pending
|
|
for several microseconds.
|
|
- Speeded up the sprite data register handling slightly.
|
|
- Finally got Aero the AcroBat 2 working, after many hours of investigation,
|
|
spread over several years - literally! Two problems. The SNES doesn't seem
|
|
to consider scan-line line zero to be part of the v-blank period even though
|
|
the line is never drawn and V-IRQs at the start of the scan-line have to be
|
|
delayed until a few microseconds into the line - Traverse: Starlight & Prairie
|
|
required this as well, so I removed the original, Traverse specific hack.
|
|
There's a problem with the in-game music that I'll investigate at a later
|
|
date.
|
|
- The in-game music problem just required ENVX emulation to be switched on,
|
|
off by default on the Linux port, on by default on the Windows port.
|
|
- Fixed the mode 7 corruption problem on the title screen of Chase HQ using the
|
|
same trick as Illusion of Gaia - i.e. mod the mode 7 centre X & Y values with
|
|
1024.
|
|
- Fixed another crash bug in the interpolated mode 7 code - a portion of
|
|
the code was ignoring the screen flip value and the fact that X render
|
|
direction reversed if the screen was flipped horizontally. Was causing a
|
|
crash on the whale boss screen of Kirby Superstar.
|
|
- Mortal Kombat 3 now auto-adjusts emulated cycles per scan-line work-around
|
|
a speech sample being cut short.
|
|
- Added sample data register reading support to the sound DSP - somehow I
|
|
seem to have missed implementing this. Not sure if any ROM actually reads
|
|
the value.
|
|
- Followed Sumire Kinoshita's suggestion and stopped clearing the ENDX flags
|
|
when the value is read, against my better judgement, and it does actually
|
|
improve speech samples in several games. Ooops! The Mortal Kombat series,
|
|
Magical Drop 2 and Metal Combat are the ones I've discovered so far.
|
|
- WWF Arcade now auto-adjusts the cycles per scan-line value to work-around
|
|
a sound sample repeat problem.
|
|
- Hmm. There's something about offset-per-tile mode I don't understand - WWF
|
|
Wrestlemania Arcade is getting corrupt graphics; not sure what effect the
|
|
ROM is trying to produce. Disabled offset-per-tile mode for the game for now.
|
|
- Fixed Street Racer player 1 wobble problem during the soccer game by auto-
|
|
adjusting the cycles per scan-line value slightly.
|
|
- Made Power Rangers Fight auto-adjust emulated cycles per scan-line to work
|
|
around a slight timing problem that causes an NMI to corrupt register
|
|
values that an IRQ handler is trying to update. Without it the scrolling
|
|
back-drop and fighter graphics are corrupt.
|
|
- Illusion of Gaia seems to need the mode 7 centre X & Y values to be mod 1024
|
|
if the screen repeat flag is set. Fixes the island fly-over bug right at
|
|
the end of the intro but breaks a few other games. Hmm. Made it auto-switch
|
|
on for this game only.
|
|
- Added memory map support for Radical Dreamers. Thanks to satellite hut master
|
|
for the information.
|
|
- Made updates to the top bit of the sprite write address register be ignored
|
|
unless the low byte had been written to first. A ROM coding bug in
|
|
James Pond II requires this, otherwise it writes a junk byte value into the
|
|
main character's X position and Robocod wobbles around all over the place.
|
|
- Reverted back to pre 1.31 way of initialising unknown register values -
|
|
Rock and Roll Racing was reading a junk register value and using the value
|
|
to set up DMA, which in turn was causing corruption on the player select
|
|
screen.
|
|
- Added Star Ocean memory map - thanks zsKnight! The original ROM I was testing
|
|
was corrupt, no wonder I couldn't figure out the memory map myself! The game
|
|
still isn't playable, though, due to missing S-DD1 graphics decompression
|
|
(+ encryption?) emulation.
|
|
- Started to dump some compressed data values from Street Fighter 2 Alpha in
|
|
the hope that one day someone will be able to crack the S-DD1's compression
|
|
algorithm.
|
|
1.33a
|
|
- C4 emulation wasn't being automatically enabled for Rockman X2 / X3 - the
|
|
Japanese versions of Megaman X2 / X3.
|
|
- Fixed the Super FX plot table pointer that I accidentally broke while saving
|
|
1Mb of workspace RAM - it was stopping all Super FX games from working.
|
|
1.33
|
|
- Noticed another problem with the CPU_SHUTDOWN code - Chrono Trigger locked
|
|
up during the intro but only when using the asm code CPU core. Found the
|
|
algorithm difference between the code and made the CPU match what the C
|
|
version was doing. Still not sure why it caused a problem in the first place.
|
|
- Changed colour subtraction code to use Lindsey Dubb's newer version he sent
|
|
me some time ago but I 'forgot' to include. I say forgot, but I really put
|
|
off including it because, although it improves most games that use the
|
|
effect, it does result in one or two slight visual glitches.
|
|
- Hacked in zsKnight's C4 emulation asm code - now both Megaman X2 and X3 are
|
|
playable. Still got to complete the reverse engineering of the i386 asm code
|
|
to C so other, non-Intel ports can have C4 emulation.
|
|
- Shuffled the keyboard mapping a bit on the Linux port so now Tab key acts as
|
|
an emulation speed turbo button, `, # and ~ act as superscope turbo and
|
|
/ acts as the superscope pause button.
|
|
- Fixed asm CPU_SHUTDOWN code that I accidentally broke while trying to
|
|
optimise it! Thanks to all the people who noticed Snes9x's frame skipping
|
|
had changed between releases. Frames rates should be improved again for more
|
|
than 50% of games.
|
|
- Re-enabled in-lining of the C SNES memory access routines, improves frame
|
|
rate by one or two on slower machines.
|
|
- Optimised the asm 65c816 addressing mode emulation code a little.
|
|
- Included some code changes making life easier for the Mac porter, John Stiles.
|
|
- Added memory map support for Sufami Turbo using information supplied by
|
|
Nose0000. No idea if it works because I don't have the ROM.
|
|
- Spent a few minutes trying to figure out the Star Ocean memory map so at
|
|
least the sound effects could be heard. But gave up after a couple of hours
|
|
due to laziness. If anyone knows the memory map details, let me know please!
|
|
1.32a
|
|
- The delay loading of the OpenGL DLLs on the Windows port was causing the
|
|
OpenGL initialisation code to fail. Reverted back to normal DDL loading but
|
|
with the side effect that Windows 95 users must visit the Microsoft web site
|
|
and download the OpenGL add-on before Snes9x will work for them.
|
|
- Corrected the OpenGL bump-map display option - my attempt to get the
|
|
bi-linear OpenGL display option to work with Voodoo card's limited texture
|
|
size had broken the bump-map mode.
|
|
1.32
|
|
- Changed the Windows port to delay load the two OpenGL DLLs, so now they're
|
|
only loaded if you switch to OpenGL mode. The original version of Windows 95
|
|
didn't include the OpenGL DDLs, so Snes9x wouldn't even start on that
|
|
platform; now it should.
|
|
- Added yet another sound buffer option to the Windows port - this time the
|
|
block size of sound data to mix. Some DirectSound sound card drivers only
|
|
report the play position moving in steps rather than continuous amounts and
|
|
Snes9x's default mix block size turned out to be smaller than this step
|
|
value on several cards.
|
|
Snes9x couldn't work out out where the true play position was accurately
|
|
enough resulting in broken, noisy sound output.
|
|
- Modified the Windows frame timer code to use semaphores rather than events -
|
|
they should make Snes9x more reliable at not missing frame sync pulses when
|
|
Windows is busy doing background tasks.
|
|
- Added SA-1 shutdown code - basically, Snes9x now stops emulating SA-1 CPU
|
|
instructions when the SA-1 enters an idle loop waiting for the main SNES
|
|
CPU to give it something to do. All SA-1 run much faster and smoother now.
|
|
- Added multi-axis joystick/game controller support to the Windows port and
|
|
tweaked the dead-zone threshold position a little.
|
|
- It looks like the SNES PPU was designed to support 128K of V-RAM but only
|
|
64K was fitted; Snes9x wasn't wrapping all V-RAM address to stay within the
|
|
64K limit causing a corrupt title screen on ReX Ronan - there will be others.
|
|
- Added amend functionality to the Windows Cheat Entry dialog and added extra
|
|
text boxes for direct address and cheat value input rather than only being
|
|
able to type in a Game Genie or Pro-Action Reply code.
|
|
- BS Suttehakkun2 was crashing just before start of play - the ROM was
|
|
performing a junk DMA that was corrupting RAM, crashing the game when it
|
|
went searching for a particular value.
|
|
- F-1 Grand Prix requires IRQ triggering when IRQ scan-line register set to
|
|
current scan line, but Chuck Rock objects. Hmm. Chuck Rock seems to indicate
|
|
the CPU emulation is running too fast, but I can't see where the mistake is.
|
|
Special-cased Chuck Rock for now.
|
|
- Optimised SNES DMA handling slightly - copying data to SNES V-RAM is now
|
|
significantly faster.
|
|
- Windows Cheat search dialog was ignoring data type parameter in various
|
|
places which was causing problems when larger numbers were being searched
|
|
for.
|
|
- Forced unknown PPU register reads to always return 0 - a coding bug in
|
|
Equinox shows that this is required. An earlier fix didn't work.
|
|
- Puya Puya 2 & remix were objecting to an NMI being triggered when enabling
|
|
NMIs after scan-line 226, but Ys 5 seems to require this. Hmm. Added a hack
|
|
to support both games.
|
|
1.31
|
|
- Snes9x DirectSound code modified - the mixing block size is now always 10ms
|
|
for Windows 95/98/2000 and 20ms for NT 4.x, now there should be no need to
|
|
enable Sync Sound when a large sound buffer is required (helps emulation
|
|
speed). The maximum sound buffer length values have been updated to reflect
|
|
the smaller mixing block size.
|
|
- Changed the DirectSound code back to use an offset from the play position
|
|
as the place to write new sample data into the sound buffer - on NT 4.x the
|
|
write position seems to vary randomly rather than being a fixed distance
|
|
in front of the play position as documented. Now I know why I used the play
|
|
position originally!
|
|
- Changed the DirectSound code to fill the sound buffer at the write position
|
|
supplied by DirectSound, rather than just before the current play position -
|
|
should help reduce latency.
|
|
- Added an auto-detect method for interleaved mode 2 Super FX ROM images -
|
|
well, not really auto-detect: if the game crashes and its a Super FX game,
|
|
Snes9x assumes its in interleaved mode 2, de-mangles the ROM image and tries
|
|
to run the game again.
|
|
- Had to update the Snes9x Windows registry version number as the additional
|
|
diagonal settings make old registry settings incompatible.
|
|
- Added diagonal keyboard controls to the Windows port, as requested by
|
|
several users.
|
|
- Changed PPU code to return zero when reading non-existent registers - the
|
|
game Equinox relies on this due to an original game coding bug.
|
|
- Included FMOD sound driver support to Windows port - people experiencing
|
|
broken sound or delayed sound, etc, might want to give it a try.
|
|
- Tales of Phantasia - un-interleaved format ROM memory map changes to match
|
|
odd ZSNES format, now the hacked ROM works.
|
|
- Changed NMI again. Made reading or writing to PPU register 0x4210
|
|
clear NMI pending flag again, without this Super Tennis does not work.
|
|
- Changed NMI timing back to be the same as several versions ago and just
|
|
special cased Cacoma Knight instead - although kept the code to prevent
|
|
the re-triggering of an NNI more than once in the same frame.
|
|
1.30
|
|
- Forgot to force GUI surface to be displayed when some dialogs where popped
|
|
up - problem only happened on full-screen mode with triple or double
|
|
buffering enabled, or when using 3dfx mode. It appeared as if Snes9x had
|
|
locked up, but pressing Esc would pop down the hidden dialog.
|
|
- Added a couple of options to the Settings dialog. Now its possible to
|
|
disable S-RAM auto-save which was causing Snes9x to write to the hard disk
|
|
every 30 seconds on some games, causing the occasional skipped frame.
|
|
- Fixed Reset option which was accidentally broken when Netplay support was
|
|
added.
|
|
- Added support for Dirt Racer - it leaves the Super FX chip running all the
|
|
time, so the default CPU emulation method never allocated any time to other
|
|
CPUs and the emulation seemed to lock up.
|
|
- NMI timing changed again. Now an NMI can only be triggered once per
|
|
frame and enabling an NMI after the normal trigger scan line triggers
|
|
an NMI immediately. This fixes display glitches in Ys 5, Stargate and
|
|
Daffy Duck.
|
|
- Fixed the WAI instruction to only 'wake up' once an actual NMI has
|
|
triggered, rather than just waking up when it should have triggered.
|
|
This fixes Battletoads, broken since version 1.29(ish).
|
|
- Changed NMI again. Made reading or writing to PPU register 0x4210 not
|
|
clear NMI pending flag. Seems to allow all the NMI timing sensitive ROMs
|
|
I had on my list to now work without any special hacks. Illusion of
|
|
Gaia now works again.
|
|
- Another NMI fix - cleared the CPU pending NMI flag at start of frame;
|
|
Battletoads intro was crashing without this. A long DMA was stopping the
|
|
SNES CPU so it couldn't and shouldn't respond to the NMI signal from the PPU.
|
|
- Fixed Netplay problem when game didn't have any S-RAM and Sync Using Reset
|
|
was being used. An error dialog was displayed and the client would disconnect
|
|
from the server.
|
|
1.30b#1
|
|
- The Windows auto-frame skip code was broken - badly. It didn't re-sync a
|
|
timer value with timer events being generated, causing Snes9x to deliberately
|
|
stop and wait for an event when it didn't need to, slowing down the overall
|
|
emulation speed and increasing the number of frames skipped.
|
|
- Improved the Windows cheat search dialog - its now possible to compare
|
|
against a value and more comparison functions are available.
|
|
- Finally worked out why Voodoo 3 support was so buggy in Snes9x - the Voodoo 3
|
|
card generates a WM_DISPLAYCHANGE message when switching to Voodoo mode (the
|
|
Voodoo 1 and 2 cards don't); Snes9x thought that some other application had
|
|
changed the screen depth or resolution and tried to adjust its window to
|
|
match - triggering another WM_DISPLAYCHANGE message. No idea how the code
|
|
worked at all; it must have been only by chance and very dependant on the
|
|
driver version you were using!
|
|
- Implemented Netplay on the Windows port - but its buggy as hell. I seem to
|
|
be having major Windows multi-threading problems. Comments I've seen seem to
|
|
suggest that Windows 95/98 don't implement true multi-threading; hmm...
|
|
- Not happy with the current Netplay, so I scrapped it and tried again;
|
|
the protocol is much improved and not using select to control game timing
|
|
seems to have removed lots of the threading-type problems I was having.
|
|
- Attempted to switch to just using Borland's C++ Builder to build the Windows
|
|
port - and failed, again. Although C++ Builder can build Snes9x from sources,
|
|
it can't then link in the asm CPU cores. I had hoped Borland might have
|
|
fixed this with their latest release - they haven't.
|
|
- Several attempts to get Anti Resonance's super-fast sound CPU and sound DSP
|
|
code working in Snes9x, but all failed. Part of the problem was his code was
|
|
written using TASM and the object files it generated would only work under
|
|
Windows - but all my SNES debugging code was in the Linux port. Anti' fixed
|
|
that, and I then had some success getting his code working, but its just too
|
|
unstable at the moment for a main-stream release.
|
|
- Included an option to use Anti Resonance's alternate sample decoding routine;
|
|
it can approximate the wind and noise sound effects heard in several Square
|
|
Soft games.
|
|
- Thanks to Lindsey Dubb for the mode 7 bi-linear filtering code - it
|
|
generates a nice smooth image when a game scales the screen using the SNES'
|
|
mode 7, but you'll a fast machine if you don't want the frame rate to drop.
|
|
- Thanks again to Lindsey Dubb, he improved the colour addition/subtraction
|
|
subtraction routines - they are just a little slower but now mostly perform
|
|
full 15-bit precision addition and subtraction rather than the previous
|
|
13-bits of precision. Many more colour shades can be seen - look at the
|
|
improved shading on the Mario Kart or F-Zero track for example.
|
|
- Added a reverse stereo option, for people with sound cards that swap the two
|
|
channels.
|
|
- Added a sound config dialog to the Windows port - now you can access extra
|
|
sound options that have always been there, but just no GUI interface to
|
|
access them.
|
|
- Fixed the 32-bit windowed support on the Windows port.
|
|
- Adjusted the NMI timing by a few microseconds to get Metal Warriors working
|
|
again.
|
|
- Added a few more sound playback rate choices. Most modern sound cards allow
|
|
any value to be used from a large range, rather than just a select few, may
|
|
be I ought to add text field so you could just type a value in?
|
|
- Used Factory Setup 4 to build a new installer package for the Windows port -
|
|
just shipping a zip file was confusing novice users and many (mostly AOL
|
|
users) seemed to have an odd program mapped to .zip files, further confusing
|
|
the issue.
|
|
1.29
|
|
- Disabled the SPC700 noise feature simulation used by Chrono Trigger and
|
|
Final Fantasy 3 until I work out why its being triggered by sound effects
|
|
that don't use it.
|
|
- Rewrote/reorganised the DirectX and 3D/fx handling code, now both are never
|
|
enabled at the same time in Snes9X. It might fix the crashing problems some
|
|
Window port users are seeing. Changing between DirectX and Voodoo 3D/fx
|
|
modes now requires Snes9X to be restarted.
|
|
- Tracked down and fixed the Chrono Trigger black screen problem on the Windows
|
|
port: a rogue asm instruction was left in by mistake after some code edits -
|
|
it was only by chance that the code worked on the Linux port.
|
|
- Added some SNES debug options to the Windows port, but disabled by default,
|
|
on the shipped version.
|
|
- Clicking on the column headings in the OpenROM dialog in the Windows port
|
|
now sorts by that column; plus added some slight screen update optimisations.
|
|
- Added an optimisation to graphics rendering: don't add or subtract
|
|
sub-screen from background layers, or clear the sub-screen, if SNES fixed
|
|
colour is black and no background layers are enabled on sub-screen, even if
|
|
ROM tries to enable translucency effects for every background layer.
|
|
Discovered Sonic was doing this, there will be others.
|
|
- Forgot to enable auto S-RAM save on Windows port, oops!
|
|
1.28
|
|
- Warning dialog added to the Windows port - if a ROM is loaded from a
|
|
read-only directory, e.g. a CD, and the freeze file folder is set to be the
|
|
same as the ROM image folder, then a warning is displayed when the game first
|
|
starts.
|
|
- The Windows port now supports 5 joy-pads - Snes9x always did support 5 but
|
|
the Windows port lacked the GUI option to enable and configure it.
|
|
- Added an about dialog to the Windows port.
|
|
- The Windows port now has a simple settings dialog, only one option so far -
|
|
changing the freeze file and S-RAM save directory; much better than having to
|
|
use regedit at least.
|
|
- Added a new cheat search dialog, you can use it to find where games are
|
|
storing life counters, health levels, etc. and then add cheats that stop the
|
|
values from changing.
|
|
- Added a cheat code entry dialog to the Windows port; now Game Genie,
|
|
Pro-Action Replay and Gold Finger codes can be graphically entered and
|
|
edited.
|
|
- Added a master cheat codes on/off toggle, available from the Cheats menu
|
|
on the Windows port.
|
|
- Extended the number of cheats per game from 10 to 75.
|
|
- Changed cheat code to reapply cheat every emulated frame so if RAM is being
|
|
patched the cheat value is continuously applied.
|
|
- Wrote some new cheat search code, the code won't be useful until I get around
|
|
to writing a cheat search dialog.
|
|
- Added automatic cheat code loading and saving using the same file format as
|
|
ZSNES.
|
|
- Rewrote large parts of the Snes9x cheat handling code ready for adding
|
|
cheat dialogs to the Windows port.
|
|
1.27
|
|
- Added a flag to only enable SPC700 noise 'feature' when Chrono Trigger or
|
|
Final Fantasy 3 are loaded - the conditions that I thought were necessary to
|
|
trigger the feature where sometimes being met by other games.
|
|
- Added a simulation of the SPC700 noise 'feature' where some games, notably
|
|
Chrono Trigger and Final Fantasy 3, play samples that deliberately overrun
|
|
outside a 16-bit value, the SPC700 sound DSP then for some reason starts to
|
|
generate a type of noise sound which the games use to generate wind and
|
|
swish type sound effects. Thanks to ZSNES for some of the information.
|
|
- Fixed another sound interpolation problem, thanks to Mikael Bouillot -
|
|
the initial value of the sample byte being played was not being set correctly
|
|
when processing fractional offsets.
|
|
- Added auto S-RAM save option; S-RAM is automatically written to a .srm file
|
|
a few seconds (30 by default) after a ROM writes to it - useful for people
|
|
who were playing games long into to night, only to lose their progress
|
|
after a power cut or machine crash.
|
|
- NMI delay code changed again - the fix for Cacoma Knight was breaking
|
|
Tuff E Nuff; it would seem delaying NMI until the start of h-blank to too
|
|
long, added a cycle counter instead.
|
|
- Fixed yet another clip window bug - clip window was being incorrectly set
|
|
at no range if colour window was enabled but background layer clip window
|
|
was disabled (meaning layer should not be clipped).
|
|
Fixes the sunken ship level on FF5.
|
|
- Worked out (by example) how to add keyboard accelerators to the Windows port,
|
|
now toggling full screen using ALT+Return works.
|
|
- Added mouse-warp to the Windows port so the the cursor doesn't wonder off the
|
|
Window while SNES mouse emulation is enabled.
|
|
- Improved 3dfx support on Windows port - load dialog doesn't drop out of
|
|
bi-linear mode and underlying window zooms to full-screen so its easy to find
|
|
and click on the menu bar with the mouse.
|
|
- Added Mouse and Superscope SNES emulation support to the Windows port, use
|
|
'7' on the keyboard to select.
|
|
- Windows cursor now hidden unless super scope emulation is enabled.
|
|
- Windows port now has command line parsing - cheapo way of adding Game Genie,
|
|
Pro Action Replay cheat codes, disabling sound CPU emulation for the
|
|
corrupt copy of Star Fox 2, etc. Also allows ROM images to be dropped onto
|
|
the Snes9x icon.
|
|
- Cacoma Knight seems to provide proof that Snes9x triggers the SNES
|
|
non-maskable interrupt (NMI) too early. Changed interrupt to trigger at the
|
|
start of the next horizontal blank period. Will have to watch for it
|
|
causing problems for other ROMs.
|
|
- Added a translucency hack - when a ROM tries to create a stipple background
|
|
pattern by enabling pseudo hi-res. and not enabling a background layer on
|
|
one of the screens, Snes9x changes the effect to use transparency effects
|
|
instead (the real SNES can't do transparency effects with pseudo hi-res.
|
|
enabled). Now the water in Kirby 3 is translucent.
|
|
- SA-1 CPU reset bug fixed, now Jumpin' Derby boots and plays but with major
|
|
graphics problems.
|
|
- Fixed nasty asm SA-1 custom hardware read/write bug that was causing the
|
|
course map not to be displayed on Augusta Masters and Pebble Beach.
|
|
- Added SA-1 character conversion DMA support for all SNES depths, now
|
|
Augusta Masters and Pebble Beach work.
|
|
- Merged in minor code changes for Linux running on the Alpha processor. Thanks
|
|
to Sadruddin Rejeb for the changes.
|
|
- Added four more auto-multi-player-adaptor-emulation-off presets based on
|
|
code from Mystagogus.
|
|
- Added DirectX3D output image processing support to the Windows port... and
|
|
removed it again because it causes my desktop machine to lock up. Back to
|
|
the drawing board...
|
|
1.26
|
|
- Fixed memory leak that crept in when SA-1 support was added when loading a
|
|
game freeze file.
|
|
- Added SPC dumping option based on code from Cyber Warrior X that he sent me
|
|
ages ago but I've just found again while looking for something else!
|
|
- Merged in most of the Amiga PPC port source code changes into the main
|
|
source code tree.
|
|
- Keying on a sound channel seems to clear its last-sound-sample-block-just-
|
|
played flag. Chaos Engine/Soldiers of Fortune needs this.
|
|
- Add multi-thread support to the UNIX ports for sound playing - required in
|
|
the Linux port to work around a Sound Blaster Live driver bug and useful if
|
|
you have multiple CPUs in your machine to help spread the emulation workload.
|
|
1.25
|
|
- Added BS 24Mbit ROM memory map, for Derby Stallion 96 and Sound Novel-TCool.
|
|
No idea if it works. Thanks to Nose0000 for the info and code.
|
|
- Corrected unzip code not to loop forever if an encrypted zip file is loaded -
|
|
an error is generated instead.
|
|
- Changed relative SPC700 cycle length for Mortal Kombat 3 to fix sample
|
|
repeat problems - I wish I knew exactly how fast the SPC700 is clocked.
|
|
Maybe I should write a test ROM and run it on a real SNES?
|
|
1.24
|
|
- 3dfx speed hack back again, only disabled when Seiken 3 is loaded.
|
|
- Some minor SA-1 speed ups added - the SA-1 instruction skipping code will
|
|
have to wait until I have more time.
|
|
1.23
|
|
- Corrected a SA-1 reset bug that reset the SA-1 RAM bank pointer back to block
|
|
zero but didn't clear the RAM bank register. Was causing Kirby 3 to crash.
|
|
- Fixed a wave clipping problem with interpolated sound that was causing noise
|
|
on sound output when certain sound samples were played.
|
|
- Fixed a bug in the sync-sound code that could overrun the sound buffer by a
|
|
few bytes causing clicks on the sound output.
|
|
- The sound sample repeat bug that has plagued Snes9x ever since is was called
|
|
Snes96 finally bit the dust - Snes9x continued to play sample loops
|
|
even if the game dynamically updated the sample not to loop. Fixes the
|
|
stutter in the Mortal Kombat series and improves the sound from several games
|
|
that download sound samples in real-time as they are played.
|
|
- Rewrote the code the handled the SPC700's 64 byte shadow RAM area to fix a
|
|
possible sample corruption problem with ROMs that stored samples that
|
|
cross the 64 byte start area.
|
|
- Added code to allow ROMs to change the sample being played the next time the
|
|
channel loops or is keyed on - not sure if it fixes anything but seems more
|
|
correct.
|
|
- Added a zero-frequency fix to the stereo sound mixing code that I'd already
|
|
added to the mono code some time ago.
|
|
- Changed the code to set the end-of-sample flag just before the last block is
|
|
played, rather than just after. Seems to help improve the sound on some
|
|
games.
|
|
- Sound sample start code now doesn't reset the channel's envelope volume level
|
|
to zero before starting the sample - helps reduce the clicks being heard when
|
|
a channel envelope volume level hadn't reached zero before being keyed on
|
|
again.
|
|
- Changed initialisation of sample-end-register to 0 rather than 255 - seems
|
|
more logical now I've thought about it. Not sure if it helps anything.
|
|
1.22
|
|
- Finally fixed the corrupt copy of Donkey Kong Country not working problem -
|
|
Snes9x thought the ROM used the same memory map as Street Fighter Alpha 2.
|
|
- Added explode, un-shrink and un-reduce decompression modes support to the
|
|
unzip code.
|
|
- Fixed offset per tile bug that crept in after me trying to fix the Starfox
|
|
on-tilt bug.
|
|
- Made some fixes to the C Super FX emulation code, enough to get most 'FX
|
|
games playable on the Mac port.
|
|
1.21
|
|
- Finally worked out how character DMA worked on the SA-1 and implemented a
|
|
hacky, slow version, but its enough to get the level up screens displaying
|
|
correctly on Mario RPG.
|
|
- Incorporated ZSNES' new optimised Super FX asm code - had to track down and
|
|
fix a nasty memory overwrite bug in the code first to get it to work.
|
|
- Changed sample mixing code to not automatically wrap offsets to
|
|
keep inside the sound buffer, external port code is now expected to do that.
|
|
Helped me fix a problem in the Windows port that prevented very large sound
|
|
buffers from working, which are required for some badly written sound card
|
|
drivers.
|
|
- Corrected a bug in the SA-1 C code where incorrect processor emulation
|
|
functions where called if the code was compiled with in-lining turned off.
|
|
- Fixed crash bug in Super Mario RPG on the level up screen - forgot to mask
|
|
the enable bit from the RAM bank register. Thanks to Christian Wolf for
|
|
sending me a freeze file which made it easy to find the problem.
|
|
- Fixed a lockup bug in the window clipping code, if the ROM ever turned off
|
|
the sub-screen completely the clipping code would enter an infinite loop.
|
|
Fixes The Cartoon Addams.
|
|
- Made the Daffy Duck NMI fix only enable when Daffy Duck is loaded - fix was
|
|
causing problems for Breath Of Fire 1 and 2.
|
|
1.20
|
|
- Windows port no longer sets DirectSound to exclusive mode, so its now
|
|
possible to hear sound output from Windows apps while Snes9x has focus.
|
|
- Fixed the freeze file loading and saving on the Windows port.
|
|
- More GUI settings are saved in the registry on the Windows port now.
|
|
- Added 3D/FX image scaling/filtering support to the Windows port.
|
|
- Added the TV mode from the Mac/Linux ports to the Windows port.
|
|
- Incorporated Kreed's new output image routines into the Windows port that
|
|
fixes RGB555 display colour problems. Many thanks to Kreed.
|
|
- New auto-frame rate timing code on the Windows port, stops the silly speed
|
|
up problems when the old code tried to 'catch up' after the emulator had
|
|
been paused.
|
|
- Increased the DirectSound secondary buffer length on the Windows port to
|
|
hopefully fix all the static/broken sound output problems some people were
|
|
experiencing.
|
|
- Altered the ZSNES Super FX asm code so the Windows port could use it - all
|
|
previous versions of the Windows port were shipped using the C Super FX
|
|
emulation code which is a lot slower.
|
|
- Implemented interpolated and sync-sound options on the Windows port.
|
|
- Added an image stretch option to the Windows port - stretches the SNES image
|
|
to fill the whole screen or the Window. Looks really good on my TNT card
|
|
since that chips seems to filter the image as it scales it.
|
|
- Implemented Windowed mode on the Windows port.
|
|
- Added special SPC700 cycle timing for Empire Strikes Back.
|
|
- Fixed the missing polygon problem for Super FX games - thanks to zsknight
|
|
for the information.
|
|
- Implemented SA-1 support required for Mario RPG, Kirby Superstar,
|
|
Paradius 3, etc. but since only a good image of Mario RPG exists, I could
|
|
only test that game.
|
|
- Fixed a graphics clip window bug: inverting the area of a clip area that
|
|
only consisted of empty bands should become the full width of the screen;
|
|
Mario Kart's rear-view mirror display needs it.
|
|
- Fixed mode 7 render code to use correct z-buffer when rendering onto the
|
|
sub-screen. Fixes Final Fantasy V title screen.
|
|
- Added horizontal offset per tile support in the offset per tile modes 2
|
|
and 6, and switchable horizontal/vertical offset in mode 4. Fixes Chrono
|
|
Trigger in several places and Mario All Stars title screens.
|
|
- Changed SPC700 relative cycle length to 14, needed for Stunt Car Racer.
|
|
- Enabled immediate triggering of NMI if NMI enable flag set while scan-line
|
|
was on first line of v-blank. Needed to fix a background jitter bug in
|
|
Daffy Duck: The Marvin Missions.
|
|
- Altered ROM load code to ignore corrupt ROM map type byte in ROM header,
|
|
preventing the code erroneously detecting what it thinks are interleaved
|
|
ROMs. Fixes EEK! The cat, Formation Soccer, the corrupt copy of Donkey
|
|
Kong Country, ...
|
|
- Disabled IRQ re-triggering if V-IRQ registers set to the current line. Fixes
|
|
Chuck Rock.
|
|
- Fixed missing sprites in Andre Agassi Tennis - writing to low byte only of
|
|
the sprite write address register seems to also clear the hi-byte.
|
|
1.19
|
|
- Games written by the Japanese software company Human seem to need special
|
|
SPC700 sound CPU timing, so the ROM load and reset routines now check the
|
|
software author company and adjust the CPU cycle length accordingly.
|
|
It gets Clock Tower, Super Fire Pro-wrestling Premium, etc working.
|
|
- Added ROM check sum calculation and testing code - Snes9x can now detect
|
|
pure, corrupt or hacked ROMs.
|
|
- Noticed a fast way to implement the SNES 4096 colour mode, so I implemented
|
|
it. Now the colours in ActRaiser 2 look correct.
|
|
- Corrected a noise frequency error thanks to information from Takehiro.
|
|
- Added a 'start in full screen mode' flag to the Linux port.
|
|
- While debugging the new graphics code I thought of a fast way to implement
|
|
the SNES direct colour mode, tried it out and now the colours in Actraiser 2
|
|
are correct.
|
|
- Blast, forgot about the colour window and fixed colour effects. The separate
|
|
sub-screen is back again, but all the other graphics speed ups are there.
|
|
- Now I've got a z-buffer I keep finding other ways to optimise the SNES
|
|
graphics rendering - no need for a separate sub-screen, no need to clear
|
|
the sub-screen to the fixed colour, no need to waste CPU time on translucency
|
|
effects on hidden pixels, no need to completely clear the main-screen to the
|
|
back drop colour, etc., etc.
|
|
- Implemented a software z-buffer and changed the SNES graphics rendering to
|
|
use it (required change for future 3D card support). Finally fixes the
|
|
sprite-to-sprite priority bug that some games suffer from. Also a big speed
|
|
increasing for some games (10 fps+), others are slight losers.
|
|
- Added code to skip the rendering of completely transparent graphic tiles
|
|
rather than comparing each pixel to see if it is transparent; helps the
|
|
frame rate a bit on some games.
|
|
- Added a fixed for Tetris & Dr. Mario - the game didn't like a multi-player 5
|
|
adaptor plugged in to the real SNES when being played, so turned off the
|
|
adaptor emulation for this game.
|
|
- Added hack for Final Fantasy II - if sync sound isn't on, make attack rate of
|
|
1ms actually 0ms (old v1.16 behaviour). Causes a slight click but its better
|
|
than samples being cut short.
|
|
- Fixed a clip window area invert bug if the colour window was enabled on
|
|
on one window and the other window was being used to clip a background layer.
|
|
Fixes the finial (I hope) display problem with Gun Hazard.
|
|
- Added code to intersect the clip window areas if both a colour window and
|
|
a background layer clip window were enabled at the same time. Required by
|
|
Gun Hazard.
|
|
- Forgot to mark graphic clip windows as needing recomputing when the master
|
|
colour window inside/outside/on/off/main-screen/sub-screen PPU register was
|
|
updated. Was causing display problems for Gun Hazard.
|
|
- Internal H-DMA execution accelerator pointer variables where not always
|
|
being recomputed when started H-DMA part way into a frame. Was causing
|
|
display problems for Gun Hazard.
|
|
- Made H-DMA continue for one extra scan-line to fix a disappearing monster
|
|
problem in Dragon Quest 5. Thanks to Alex Jackson for the bug report.
|
|
- Zoop seems to require volume envelope height reading by the sound CPU to
|
|
always return 0 when the channel is in gain mode.
|
|
- The sound code was ignoring updates to the ADSR volume envelope rates while
|
|
one was in progress. Fixed that and now the bird song at the start of
|
|
Chrono Trigger sounds correct.
|
|
- Had to disable the CPU shutdown code for loops reading the horizontal beam
|
|
position, it was causing problems for Star Fox. Still no polygons though.
|
|
- Oops, sound DSP noise output was broken - accidentally deleted an important
|
|
line while removing debug code ready for the last release.
|
|
- Added initial 3Dfx support to the Linux port - basically using the Voodoo
|
|
card as a bi-linear filtering, scaling blitter. Actually slightly slower than
|
|
TV mode, for non-scrolling images due to poor texture upload speeds to the
|
|
card, but the full-screen feature is nice and the speed doesn't drop as more
|
|
of the screen changes.
|
|
1.18
|
|
- Implemented a sync-sound mode where sound data gets generated in sync with
|
|
SPC700 instructions being executed. Finally the sound Williams Arcade
|
|
classics can be heard. Also helps slight sound timing problems in many other
|
|
games but doesn't fix Mortal Kombat 2 like I thought it would - its
|
|
sound routine programmers must have been on drugs or something!
|
|
- Added interpolated sound - gives low frequency sounds much more bass similar
|
|
to a real SNES especially with the playback rate ramped up to 44KHz.
|
|
- Added on-screen messages as various emulation options are toggled on and off
|
|
using the in-game keys.
|
|
- Fixed a PPU register read bug with the sprite register write position. Thanks
|
|
to Takehiro TOMINAGA for the bug report.
|
|
- Altered the auto-frame skip timing code to only wait and re-sync to the end
|
|
of frame when frames haven't been skipped. Again thanks to Takehiro.
|
|
- Speeded up the colour addition and subtraction code using ideas from
|
|
Takehiro.
|
|
1.17
|
|
- Linux and UNIX sound code now driven directly from signal timer handler
|
|
rather than the timer handler just setting a flag which had to be polled in
|
|
the main emulation code. Slightly faster execution.
|
|
- Fixed the crash bug in the ZSNES Super FX asm code with Vortex - the game's
|
|
polygons still aren't visible though.
|
|
- Implemented bent-line increase and exponential decay and sustain volume
|
|
envelopes - they should match, or at least be very similar to the real SNES
|
|
sound DSP chip now.
|
|
- It would seem ROMs can key on sound channels even if the channel hasn't
|
|
been keyed-off, Pac-In-Time requires it. Changed code to allow it.
|
|
- Quick mod to ZSNES Super FX code to get Winter Gold working - it was already
|
|
working with the C Super FX code.
|
|
- Added emulation of the extra 1/2 scan-line per frame on PAL and NTSC -
|
|
should help improve music speed emulation.
|
|
- Worked around the click sound heard when ROMs use 0 volume envelope attack
|
|
rate.
|
|
- Removed the 'check for IRQ already happened' H-IRQ position register setting
|
|
code - it was causing problems for Ninja Warriors and was not required by
|
|
F1 Grand Prix.
|
|
- Fixed a bug in the new sound code - the sustain part of the
|
|
attack-decay-sustain-release volume envelope was being skipped if the
|
|
sustain level wasn't at 100%. The fix has helped some music notes from
|
|
being cut off early in a few games.
|
|
- Added fix to Pro Action Reply support (again). Thanks to Paul Shoener III for
|
|
the original fix and Gil Pedersen for reminding me to apply it!
|
|
- Finally fixed the Tales of Phantasia 'bum note' problem! The ROM set its
|
|
sample directory to the upper-most page and I forget to code for the hidden
|
|
64 bytes of RAM, that appear when the boot ROM is switched off, when fetching
|
|
sample addresses.
|
|
- Adjusted the relative cycle length between the 65c816 and the SPC700 slightly
|
|
to get Terranigma working again.
|
|
- Oops, the emulated joypads 3 and 4 via the emulated Multi-player 5 interface
|
|
weren't working. Thanks to Steffen Schwenke for the bug report.
|
|
- Optimised the echo sound code - by-passed the the FIR filter code if only
|
|
a pass-through FIR filter was defined by the ROM.
|
|
- Modified V and H-IRQ register changing code to trigger an IRQ immediately if
|
|
V-IRQ is enabled and the scan-lines match and either H-IRQ is not enabled or
|
|
the electron beam position has already gone past the trigger point. Fixes
|
|
the screen flicker in F1 Grand Prix.
|
|
- Modified the priority-per-pixel mode 7 code to use BG#1's clipping data if
|
|
the top bit of the mode 7 pixel is set. Fixes initial track drive-through
|
|
display in F1 Grand Prix.
|
|
- Modified the sprite priority levels for the priority-per-pixel mode 7
|
|
display. Now the car can be seen in F1 Grand Prix.
|
|
- Wrote a sound DSP register recording scheme which 'plays back' the register
|
|
changes in sync with the sound generation code. I'm bit disappointed, it
|
|
only improves the sound in a very few games... Scrapped the code, it actually
|
|
causes more problems than it fixes. Oh, well, another 3 weeks work wasted...
|
|
- Fixed a SPC700 wake up problem for Lufia I - made the SPC700 also wake up
|
|
when the 65c816 read from one of the four comm ports.
|
|
- Included lots of sound code speed ups and sound quality improvements
|
|
from Takehiro TOMINAGA - many thanks go to him.
|
|
1.16
|
|
- Fixed a case where the -forcelorom option didn't work - the case was
|
|
required for Formation Soccer which claims in its ROM header to use the
|
|
same memory map as Super FX ROM, it doesn't.
|
|
- Pulled apart a real SNES using a crowbar (great fun), just to look at what
|
|
speed the SPC700 is actually clocked at for more accurate relative emulation
|
|
speed.
|
|
- Implemented SPC700 cycle counting in the hope the improved timing would fix
|
|
Tales'; no such luck but at least the -ratio option is obsolete now.
|
|
- Implemented executing SPC700 instructions during DMA, fixes BSZelda and
|
|
Goal lock up at start and music pausing briefly when ROMs do lots of DMA,
|
|
usually between game screens.
|
|
- Scrapped the i386 asm SPC700 code - it was the cause of the music not
|
|
restarting after a battle in Chrono Trigger and FF3 and I didn't realise
|
|
because the bug had already occurred in the test freeze-file I had.
|
|
Thanks to John Stiles for pointing out that the Mac port didn't have the
|
|
missing music problem.
|
|
- Fixed RGB subtraction bug on displays with only 5 bits for green, e.g. RGB555
|
|
displays. The GREEN_HI_BIT variable was always set to a value for 6 bit
|
|
green displays.
|
|
- Added the SA-1 memory map, still a long way to go before any SA-1 game will
|
|
run.
|
|
1.15
|
|
- Jumped versions to keep in sync with the DOS port release.
|
|
1.14
|
|
- Improved 8-bit sound generation slightly, but it still sounds very poor
|
|
compared to 16-bit sound.
|
|
1.13
|
|
- Implemented the Tales of Phantasia memory map using the information supplied
|
|
by zsKnight. Had to also implement a de-interleave routine to work around
|
|
a ROM feature and Snes9x CPU instruction fetching implementation detail.
|
|
- Added a frames-per-second on-screen display option.
|
|
- Fixed the final glitch bug with the Mario Kart track display - the byte code
|
|
for the termination of the DSP1 raster command wasn't been recognised.
|
|
- Disabled a NMI/DMA hack for Rise of the Robots, was causing problems for
|
|
Mario Kart and 'Robots wasn't working correctly anyway.
|
|
- Optimised the mode 7 rendering a little.
|
|
- Changed tile rendering code to use offsets into screen buffer rather than
|
|
direct pointers ready for z-buffer implementation.
|
|
1.12
|
|
- Changed V-blank NMI to occur immediately after a WAI instruction, Toy Story
|
|
required this.
|
|
- Fixed reading of H-DMA line counter register, Top Gear 3000 needed this.
|
|
- Ripped off large parts of ZSNES's DSP1 code (with _Demo_'s and zsKnight's
|
|
approval). Now Mario Kart works almost 100%.
|
|
- Added a check to see if a vertical scan-line IRQ register change will cause
|
|
a H-IRQ later on the current scan-line. Pilot Wings needed this.
|
|
- Fixed possible crash bug in clip window code when both windows had two
|
|
spans. Could actually cause Chrono Trigger to crash the emulator.
|
|
- Fixed a lock-up problem with the C Super FX code, Star Fox and executing
|
|
a few 'FX instructions per scan-line (required for Winter Gold).
|
|
1.11
|
|
- Partially fixed the DOS netplay server - the server timer is running too
|
|
slowly and it doesn't deal with disconnects correctly yet.
|
|
- Corrected the sound echo delay - it was varying with the sound playback
|
|
rate chosen by the user - it shouldn't have been.
|
|
- Implemented DOS netplay code - DOS server code still not working though.
|
|
- Removed all floating point calculations from the sound generation code.
|
|
- Fiddled with the pitch modulation code - my guess is the output of a
|
|
channel that is used to modulate the frequency of another channel is
|
|
automatically muted by the SPC700 chip. Just a guess, but the wind from
|
|
FF3 sounds 'better' but far from perfect.
|
|
- Optimised the tile palette index calculation.
|
|
- Optimised the planar to chunky tile conversion code.
|
|
- Fixed X11 port to always scale SNES image if hi-res. only (no interpolation)
|
|
support is enabled.
|
|
- Added zipped ROM image support using Gilles Vollant unzip code and
|
|
some code that Ivar (Lestat) sent me a long time ago.
|
|
- 65c816 asm RTI instruction was destroying the program bank in emulation mode,
|
|
the C code was already correct. Caused C64E to break.
|
|
1.10
|
|
- Finished NetPlay v1 - allows up to five networked machines to play
|
|
multi-player SNES games, one player on each machine.
|
|
- Switchable full-screen mode added to Linux X11 port, some code and ideas
|
|
nicked from Maciej Babinski's original Snes9x XFree86 DGA Linux port, the
|
|
UAE Amiga emulator, plus lots of my own code.
|
|
1.08
|
|
- Bug fixes to C Super FX emulation - now Winter Gold works correctly again.
|
|
1.07
|
|
- More DSP1 work. Mario Kart is now playable! The character projection code
|
|
is still broken so the opponents and obstacles aren't always positioned
|
|
correctly on screen and you keep bumping into them, but I can still keep
|
|
coming first!
|
|
- Started work on NetPlay support.
|
|
- Decreased sound card DMA buffer size on DOS port to improve sound generation
|
|
and sound CPU synchronisation in some games.
|
|
- Included Linux joystick driver patches from Vojtech Pavlik so the port can
|
|
use the new v1.x joystick drivers, again written by Vojtech Pavlik. Allows
|
|
use of Micro$oft Sidewinder pads, NES and SNES pads, PlayStation pads,
|
|
Gamepad Pros, etc.
|
|
- Added halve-the-result colour subtraction.
|
|
1.06
|
|
- Extended code to allow support for multiple 16-bit screen formats,
|
|
switchable at run-time, rather just supporting one, selectable at compile
|
|
time.
|
|
- Added XFree86 DGA Linux port - code from Maciej Babinski.
|
|
- More fixes to the X11 image format conversion and setup code.
|
|
- The asm SetByte routine wasn't wrapping writes to S-RAM correctly, allowing
|
|
some ROMs to think they were running on a copier and put up an error
|
|
screen. Thanks to Nu of #rom for the report.
|
|
- Added 'TV-Mode' support (interpolation and scan-lines) to the DOS and
|
|
UNIX ports from code based on John Stiles work.
|
|
- Added v-sync option to the DOS port.
|
|
- Added fix to Pro Action Reply support, thanks to Paul Shoener III.
|
|
- Added ggi support (untested) to Linux port using patches from
|
|
Alexander Larsson (alla@lysator.liu.se).
|
|
- Added 16 to 24/32 bit image conversion routines to the UNIX X11 code.
|
|
- The SPC700 OR1 instruction was broken. Thanks to Pyrgopolinices for the
|
|
report.
|
|
- DOS port was having trouble splitting and joining path names - caused
|
|
problems when specifying the full path name of a ROM when the ROM image
|
|
was on another drive.
|
|
- If a ROM reset the sound DSP and then turned on echo effects but kept
|
|
the same echo delay setting, then the echo effects could not be heard.
|
|
Thanks to madec@mclink.it for the bug report and freeze file that made it
|
|
easy to find the problem.
|
|
- DOS port was always using stereo sound setting, if sound card
|
|
supported it, regardless of the user preference.
|
|
- Linux port X11 port could crash if window was resized while transparency
|
|
effects were enabled.
|
|
- The colour subtraction accelerator look-up table was slightly wrong, causing
|
|
one bit of red, green blue values to 'spill' into the next field.
|
|
- Allowed colour window to cut a hole in the main-screen and show the sub-
|
|
screen underneath. The effect is used by Illusion of Gaia.
|
|
- Added support for colour subtraction, with the halve-the-result flag
|
|
set.
|
|
- Included DSP1 code from _Demo_. Now you can see the track in Mario Kart and
|
|
the ground in Pilot Wings - still can't play the games though due to other
|
|
missing commands.
|
|
- Added an NMI hack to work around a code bug in Battle Toads: BATTLEMANIACS,
|
|
its only by chance that the game works on a real SNES - And disabled it
|
|
again because it causes problems for Chrono Trigger.
|
|
- A frame skip of zero was actually still skipping one frame. Thanks to
|
|
Marius Fodor for the info.
|
|
- And yet more X-OR window bug fixes - now the effects during some of the more
|
|
'posh' spells look correct in Chrono Trigger.
|
|
- Yet another window area inversion bug - off by one pixel on right-hand edge.
|
|
- Forgot to put dummy start and end points for XOR window combination modes -
|
|
now Uniracers looks correct and Sailor Moon looks like it does on a real
|
|
SNES.
|
|
- Window clip code was using wrong index into a 2-dimensional array when
|
|
the whole of the main or sub-screens were clipped.
|
|
1.05
|
|
- The master volume disable code was looking that the wrong variable!
|
|
- Fixed crash bug in newer sound code if a ROM tried to start a sample
|
|
playing who's data went past the end of SPC700 memory. (Cannon Fodder)
|
|
1.04
|
|
- Fixed DSP1 ROM header detection bug.
|
|
- More DSP1 work; still nothing works, although I know the multiply command
|
|
is correct because I've compared the results against a real DSP1.
|
|
1.03
|
|
- Oops, the multi-player 5 disable code change broke the multi-player 5 being
|
|
the default controller.
|
|
- Implemented the colour window on the main screen - now Zelda's oval zoom
|
|
window displays correctly and Krusty's Super Fun House clips the left-most
|
|
8 pixels as it does on the real SNES.
|
|
- TERRANIGMA didn't like me returning a random value when it attempted to
|
|
read a channel's the current sample byte.
|
|
- Hacked in initial support for mode 7 priority-per-pixel - the priority bit
|
|
doesn't actually change the priority of the pixel but the two games that I
|
|
know of that use the feature look OK. (Winter Extreme Skiing and the
|
|
intro of Tiny Toons Adventures).
|
|
- Colour addition/subtraction code now uses RGB565 rather than RGB555
|
|
calculations - helps a little with the loss of the bottom bit of SNES
|
|
colour data.
|
|
- DSP1 emulation started - nothing works yet.
|
|
1.02
|
|
- Switched to adding back drop colour rather than fixed colour when
|
|
sub-screen addition is enabled but there's nothing on the sub-screen.
|
|
Uniracers seems to need it. - DISABLED it again. Causes problems for
|
|
other ROMs and Uniracers itself on later screens.
|
|
- Fixed XOR window logic combination mode and area inversion code, now
|
|
Uniracers works correctly.
|
|
- Oops, if colour window and half colour addition/subtraction were both
|
|
switched on, area outside colour window was still being halved, it shouldn't.
|
|
Hacky fix at the moment until I implement the correct fix.
|
|
- Fixed several bugs with the mosaic effect and 16x16 tiles and a few
|
|
possible background scroll offset bugs and the mosaic effect.
|
|
- Optimised the sound sample generation code for cases when the SNES
|
|
sample playback frequency was higher than the sound card playback rate.
|
|
- Fixed possible click sound when a sample was first started to be played.
|
|
1.01
|
|
- Corrected scan-line count for PAL games - should be 312 lines verses 262 for
|
|
NTSC. Was causing slow music on PAL games.
|
|
- Added error correction code to the SPC700 timer update code - the
|
|
SPC700 timers are updated using the emulated h-blank handler which is
|
|
called every emulated 63.6 microseconds (15.720KHz) but the SPC700 timers
|
|
need to be updated at multiples of 8KHz, hence the error. Was causing
|
|
music to be played slightly too fast.
|
|
- Switched back to using C SPC700 code - the old SPC700 asm code was lacking
|
|
several optimisations that the C version had. It also had multiple
|
|
speed hack cycle skipping bugs. Plus I hadn't even finished optimising
|
|
all the code from the last time I converted the C compiler output.
|
|
- Optimised SPC700 memory access routines a little.
|
|
- Disabled code that prevented ROMs updating SPC700 timer values while the
|
|
timer was running - it seems like it is allowed, even though docs on the
|
|
'net I've seen say its not.
|
|
1.0
|
|
- Fixed SuperScope support.
|
|
- Added hi-res. option to my DOS port.
|
|
- Fixed 4, 6, and 8 button standard PC joystick support.
|
|
- Changed some types the source code was using BYTE -> uint8, WORD -> uint16,
|
|
DWORD -> uint32 and BOOL -> bool8, types were clashing Windows typedefs
|
|
but sizes didn't always match.
|
|
0.99
|
|
- 8-bit double height and/or width tile rendering was missing every other
|
|
group of 4 pixels - screen pointer advance count was wrong.
|
|
- Asm SPC700 emulation was ignoring the Shutdown flag - the result is its
|
|
not possible to turn off cycle skipping for the SPC700 emulation.
|
|
0.98
|
|
- CPU to ROM address decoding code rewritten - used by Game Genie cheat codes,
|
|
orginal code might have been the cause of some Game Genie codes not working.
|
|
- Started to remove printf calls and replace them with calls to S9xMessage,
|
|
port code can then dicide what to do with message.
|
|
0.97
|
|
- Re-enabled decompressed sample caching, still has a possible click problem
|
|
but the sound code is a lot faster with it enabled. Added command line option
|
|
to disable it if required.
|
|
- Added '7' key support to rotate through available controller options, in
|
|
the order multi-player5, mouse on #1, mouse on #2, superscope,
|
|
standard controller and then back to multi-player5.
|
|
- Hi-res. (512x448) support fixed.
|
|
- Mouse support completed - Lemmings 2 and Mario Paint working a treat.
|
|
- More colour window fixes.
|
|
- Fixed freeze game problem when ZSNES SuperFX code is being used -
|
|
ZSNES 'FX state was not being saved and restored.
|
|
- ZSNES SuperFX asm emulation code plugged in to Snes9x.
|
|
0.96
|
|
- Looks like if the colour window is not enabled at all and the colour
|
|
window selector is defined to only allow colour effects inside the colour
|
|
window, then no effects should be visible.
|
|
- Offset-per-tile rendering code didn't support width 64 screen size, which
|
|
Chrono Trigger used on its title screen.
|
|
- Contra 3 seems to prove that defining the clip window area to be 'outside'
|
|
a window that covers the whole screen is not an area with no range.
|
|
- No it doesn't. It proves that I shouldn't have initialised the right
|
|
window edges to 255! Contra 3 enables clipping windows without first
|
|
defining their range.
|
|
- Debug frame advance feature was being prevented from forcing the next
|
|
frame to be rendered by SyncSpeed which was being called after the
|
|
debugger returned to the main loop.
|
|
- H-DMA code was allowing ROMs to manually start H-DMA during the v-blank
|
|
period, ROMs shouldn't be allowed to do this.
|
|
- Asm code would not push the correct CPU status onto the emulated stack if
|
|
returning from an NMI immediately triggered an IRQ - fixes Mortal Kombat 1
|
|
and War of the Gems.
|
|
- 'd' dump memory debug command was not preserving the CYCLES count.
|
|
- C versions of SNES memory access code had same problem as asm code on the DOS
|
|
port except it didn't cause a crash just ROMs failed to work correctly.
|
|
- Asm i386 code was using signed compares to check for special case memory
|
|
areas - it was causing crash problems on the DOS port which was sometimes
|
|
returning valid address values with the top bit set - i.e. they seemed
|
|
like negative values!
|
|
- Changed event reschedule code to always allow h-blank start events, used to
|
|
disable them during v-blank period.
|
|
- Added code to HDMA when end of visible lines reached.
|
|
- Changed register 4212 code not to always return h-blank when in v-blank.
|
|
- Clipping fixed colour addition to background area was off by one pixel on
|
|
the right-hand edge.
|
|
- HDMA: Finally worked out how the real SNES operates when ROMs manual
|
|
start H-DMA during the frame - ROMs must set up the H-DMA line count
|
|
and address values before H-DMA is started.
|
|
- Fixed the asm code to remove all hard-wired structure offsets - one offset
|
|
into the IPPU structure was wrong in the code because the structure had
|
|
changed size.
|
|
- Added colour window support and allowed graphic window settings to be
|
|
different on the main screen and sub screen, just like a real SNES.
|
|
- SuperFX LJMP instruction had bank and address values swapped.
|
|
- Fixed possible memory overwrite problem because OBJList array was one
|
|
element too short.
|
|
- Added AND multi-graphic window combo support.
|
|
- ROM image memory allocation allocates an extra 32K of RAM, then moves the
|
|
pointer forward by that amount - stops the SuperFX emulation from accessing
|
|
unallocated memory, possibly causing a crash.
|
|
- SuperFX emulation now stores sign and zero flags in separate variables so
|
|
the MERGE instruction can set flags correctly.
|
|
- Added 65c816 instruction skipping to i386 asm code when 65c816 waiting in
|
|
a simple loop for some 'event' to happen e.g. end of frame NMI.
|
|
- Finally fixed the APU instruction skipping problem with the i386 asm
|
|
code when the WAI instruction is used - caused slow music on some ROMs.
|
|
- Offset-per-tile modes don't seem to support screen size - Mario All Stars
|
|
Super Mario 2 requires this on title screen. Doesn't seem to effect
|
|
Tetris Attack or Puzzle Bobble.
|
|
- Changed SNES select and start keys from shift and control to space and
|
|
enter - allows shift-fn key to save game positions without the SNES ROM
|
|
also getting a select joypad button press.
|
|
- Multiplayer5 support for controllers 3+ was broken for ROMs that used
|
|
automatic hardware joypad reading rather than reading joypads serially.
|
|
- ResetPPU was not clearing tile caches and marking OBJ as need recomputing.
|
|
- Cached OBJ positions and sizes were not being recomputed if ROM changed
|
|
global OBJ sizes during frame.
|
|
- Fixed brightness multiplication problem on 16-bit code for green.
|
|
- SPC700 emulation now uses one variable to store ZERO and NEGATIVE flags.
|
|
- SPC700 emulation now only increments PC once at end of instruction.
|
|
- New ROM type and interleaved detection code.
|
|
- Reading sound DSP register ENDX also clears the value. The docs on the
|
|
'net said that only writing to the register cleared its value. Fixes
|
|
sound in Zoop.
|
|
- Fixed mode 4 colour palette problem on background #2 in tile-based graphics
|
|
code.
|
|
- Fixed graphics mode 4, offset-per-tile support. Only one set of offset data
|
|
that is switchable between horizontal and vertical, unlike modes 2 and 6
|
|
which allow separate horizontal and vertical offsets per tile.
|
|
- Modified the APU timer code again, if the timer is enabled, a write to the
|
|
timer target register is only allowed if a value hasn't been written yet.
|
|
Fixed Donkey Kong Country 1 and Earth Worm Jim 1 & 2.
|
|
- Attack rate of 0ms changed from 1ms back to 0ms because of a group of ROMs
|
|
that change from attack mode to decay mode in real-time. Will change back
|
|
when I've added better SPC700 CPU and sound generation sync code.
|
|
- Added support for ROMs set a new sound timer value while the timer is
|
|
enabled (EWJ 1 & 2).
|
|
- Added support for ROMs that read the sound envelope height (MK1, MK2, etc).
|
|
- ROMs writing to the H-DMA enable register during visible scan-lines were
|
|
restarting H-DMA for that frame causing random screen effect corruption.
|
|
- Echo feedback seems to be after the FIR filter, not before as a diagram I've
|
|
seen suggests.
|
|
- Sound pitch modulation added.
|
|
- Memory access routines changed to pass a single 24-bit address rather than
|
|
the previous separate 8-bit bank and 16-bit address parameters.
|
|
0.3
|
|
- Updates to A-Bus address during a frame must not update H-DMA address.
|
|
Fixes Actraiser 2 and Pacman 2.
|
|
- Removed sound volume mangling - with echo support enabled it doesn't seem to
|
|
be required.
|
|
- Attack rate of 0ms changed to 1ms to help prevent click sound with sudden
|
|
start of a sample playing.
|
|
- Sample caching of samples that looped using part of the original sample
|
|
created a click on the sound output. Caching disabled for the moment. Would
|
|
require 512K of cache RAM to fix sample caching.
|
|
- Colour addition/subtraction support added - but still a little buggy in
|
|
places and very slow.
|
|
- 16-bit colour support added.
|
|
- Sustain sound volume was not being set if a sample using ADSR was started
|
|
with both the attack rate and decay rate set to zero - resulted in missing
|
|
sound samples on with some games.
|
|
- Sound echo support added.
|
|
- Sound channel mixing code was not completely clearing a channel's sound
|
|
buffer when a channel finished playing a sample.
|
|
- Sound mixing code rewritten to use one buffer, rather than writing each
|
|
channel into a separate buffer then combining them into one buffer.
|
|
- Memory access routines rewritten to use an 8K block lookup table rather than
|
|
dedicated code for each ROM memory map - it was getting difficult to support
|
|
the new types of SNES ROM memory maps becoming apparent.
|
|
- Sound sample decoding wasn't decoding sound samples correctly if a
|
|
previously cached sample was only partially overwritten by the ROM as
|
|
opposed to being completely replaced.
|
|
- Sound sample decoding wasn't clipping generated sample values correctly.
|
|
- Changed H-DMA to start in the current frame only if enable register is
|
|
written to during v-blank, h-blank or while the screen is blanked.
|
|
- The SPC700 seems to start executing instructions before the 65c816 -
|
|
shorter reset pulse? (NO - forgot the SPC700 executes instructions while DMA
|
|
is taking place).
|
|
- ROMs that reset the H-IRQ position so another IRQ would be triggered on the
|
|
same scan-line where not supported - Super Off-Road: The Baj needs it.
|
|
- $4212 bit 7 needs to go high at the end of h-blank at line 224 not at the
|
|
start of h-blank - Bubsy needs it.
|
|
- Sample decoding routine could write to memory outside sample cache area if
|
|
address of block to decode was greater than $0x10000 - 9.
|
|
- Walking mario can be seen on map screen of MarioWorld - needed sprite
|
|
priority rotation working. ROM sets bit 7 of $2103 then sets rotation in
|
|
$2102. Reset rotation at start of v-blank not at end.
|
|
0.24
|
|
- Fixed reading of DMA register values - now Ms Pacman works.
|
|
- Saved sprite memory address being restored on the wrong scan-line - caused
|
|
corrupt sprites on at least one game (GANBARE GOEMON 2).
|
|
- Screen colour palette not being updated if ROM only wrote to low byte of
|
|
palette register.
|
|
- Possible memory corruption fixed if a ROM tried to write to an invalid
|
|
sprite address via PPU registers.
|
|
- X11 port support quick load and save by pressing function keys to load or
|
|
shift + function keys to save.
|
|
0.23
|
|
- Added option to disable graphic window effects - T2: The Arcade Game doesn't
|
|
seem to like them.
|
|
- Mode 7 "outside screen area" register interpretation fixed - now the
|
|
Actraiser map screen looks a lot better.
|
|
- Old DMA code hack for Battle Toads: Double Dragon removed as it was no
|
|
longer required and it was causing problems for Ys III.
|
|
- Lowered max volume level of 16-bit sound mixing code to help with sound
|
|
clipping problems is lots of SNES sound channels are playing.
|
|
0.22
|
|
- Crash bug fixed in mode 7 graphics windows code
|
|
0.21
|
|
- Fixed a noise channel volume bug - noise waveform was getting clipped.
|
|
- Fixed 24bit X Window System server support on the Solaris port.
|
|
- Sprites in priority level 1 on mode 7 were being drawn incorrectly behind
|
|
graphics screen.
|
|
- BG 3 priority 1 tiles sometimes not drawn dependent on the $2105 bit 3
|
|
setting.
|
|
- Added graphic window support the tile redraw code.
|
|
- Added mosaic support to tile redraw code.
|
|
- Tile redraw code was drawing one line too many on screen-splits.
|
|
- Tile-based redraw code made more intelligent about when a background should
|
|
be displayed or not.
|
|
- Added wrap within bank support to large DMAs just to support Rock 'n' Roll
|
|
racing.
|
|
0.20
|
|
- DMA routines added lots of special cases and removed most calls to GetByte,
|
|
using a pointer instead.
|
|
- Multiple using PPU registers is now only computed when first byte of result
|
|
is actually read.
|
|
- Sound enabled by default if compiled without DEBUGGER defined.
|
|
- Tile redraw method made the default.
|
|
- Fixed CPU_SHUTDOWN so SPC700 continues to execute even if main CPU is
|
|
"skipping" cycles waiting for an event to happen.
|
|
- More command line options added.
|
|
- Default cycles-per-scan-line to execute lowered to 90% from 100%.
|
|
- +/- keys now work even if auto-frame rate adjust was enabled.
|
|
- SPC700 emulation partially rewritten in assembler.
|
|
- Asm 65c816 code change to use same speed up techniques as the C++ code.
|
|
- Minor speed tweaks to the sound decoding and mixing code.
|
|
- C++ SPC700 emulation changed to use same method as 65c816 emulation for
|
|
computing and storing emulated CPU flags.
|
|
- Mode 7 code rewritten and several scrolling offset bugs fixed.
|
|
- Lo-ROM S-RAM memory map bug fixed - now Uniracers works.
|
|
- Multiple speed ups and changes to the tile and line-based redraw code.
|
|
- Tile and line redraw code changed to cache converted tiles between frames.
|
|
- Variable cycle length timing made compile-tile switchable.
|
|
- C++ 65c816 emulation changed to use several opcode jump tables to avoid
|
|
a register size comparison test on most emulated instructions.
|
|
- C++ 65c816 emulation changed how is computes and stores emulated CPU flags.
|
|
- Fixed high frequency sound playback bug - the sample rate calculation was
|
|
blowing the range of an unsigned long.
|
|
- Fixed V-RAM reading so DKC3, Addams Family, Aladdin and Pacman all work.
|
|
- Fixed sound code so ROMs can change from ADSR mode to decrease mode - fixes
|
|
lots of ROMs.
|
|
0.12 released
|
|
- Added dynamic speed regulation.
|
|
- TCALL vector calculation change from n to 15 - n.
|
|
- Fixed crash bug if ROM writes to sound DSP register numbers greater than
|
|
127.
|
|
- Fixed DOS memory locked for interrupt code.
|
|
- Added long name versions of command line switches.
|
|
- Added command line switch for SPC700_SHUTDOWN code and WAI cycle skipping
|
|
code.
|
|
0.1 released
|
|
- All DOS memory is now locked from being swapped.
|
|
- Fixed DOS port keyboard polling code - could get confused if a keyboard
|
|
interrupt happened while keys were being checked.
|
|
- SPC700 ADC instruction never cleared Overflow or Carry flags!
|
|
- Changed selection of playback speeds for Solaris port.
|
|
- Sample caching code was broken - cached samples were never used.
|
|
- Added code speed ups for ROMs that use a lot of DMA to VRAM.
|
|
- More cpu code asm speed up.
|
|
- Fixed 16x16 size tiles on tile-based redraw code.
|
|
- Fixed sound gain-mode increase and decrease volume envelopes.
|
|
- Added code to support ROMs that reuse sprites in the same frame.
|
|
- Fixed processing of negative volume levels.
|
|
- Fixed SPC700 EOR1 instruction.
|
|
- Added SPC700 shutdown code to stop executing SPC700 instructions if in
|
|
a tight loop waiting for a timer or for the 65C816 to respond.
|
|
- DOS playback rate was being forced to 16KHz by Allegro - fixed.
|
|
- Fixed bug in SPC700 MOV1 C,bit, address.
|
|
- Fixed a off-by-one loop sample pointer bug in MixSamples.
|
|
- Added command line flags for cached-tile based drawing and sub-screen
|
|
background layers priority swapping.
|
|
- NOPE, got encoding of the OR1/EOR1,AND1 range of correct originally -
|
|
got duff information from an "SPC700" programmer.
|
|
- More SPC700 fixes: got the encoding of the OR1/EOR1,AND1 range of
|
|
instructions wrong - I guessed wrong originally.
|
|
- Sample looping bug fix on mono sound mixing code.
|
|
- Sound pitch value no-longer clipped to 14 bits - apparently FF3 needs this.
|
|
- Followed Paradox's suggestion and changed graphics code to place sub-screen
|
|
background layers below main-screen background layers. Helps lots of games
|
|
that use sub-screen addition/subtraction - now you don't have to toggle
|
|
background layers on and off so often just to see hidden text, characters,
|
|
or maps, etc. Made it switchable.
|
|
Acts as a good intermediate solution until sub-screen addition/subtraction
|
|
is actually implemented.
|
|
- Modified sound skipper code to return random values when ROM is stuck
|
|
waiting for the SPC700 CPU to respond - helps several ROMs that previously
|
|
don't work with the currently selection of APU skippers.
|
|
- Improved sound mixing code so volume is not attenuated so much, giving
|
|
better results on 8bit sound cards.
|
|
- Changed the frequency at which the joystick polling routine is called - now
|
|
called every-other frame rather than every 3rd frame.
|
|
- Recompiled Linux and DOS ports with the Pentium optimising version of gcc -
|
|
gives a few percent speed increase.
|
|
- Changed V-RAM increment count from 64 to 128 - apparently Final Fantasy 3
|
|
needs this as well.
|
|
- Fixed sprite priority bug with Mode 7 - apparently Final Fantasy 3 needs
|
|
this.
|
|
- Fixed a screen clipping problem with the S-VGA mode.
|
|
- Fixed bug that had crept in with -m 2 S-VGA mode (Linux version).
|
|
- Fixed S-VGA Linux version with sound enabled.
|
|
- The SPC700 ADC (X),(Y) instruction was broken - with all these SPC700 fixes
|
|
now many more ROMs work with sound enabled.
|
|
- The SPC700 Pop PSW instruction was not resetting the direct page location.
|
|
- The SPC700 instruction MOV A,[DP+X] was incorrectly doing a MOV A,DP+X.
|
|
- Got the SPC700 SETx and CLRx instruction encoding swapped around.
|
|
- Fixed #define problem that was stopping DOS snapshot saving from working.
|
|
0.72 released
|
|
- Fixed the DOS filename handling - old Unix code was screwing up with ROM
|
|
filenames that contained backslashes (\) - the ROM would load but S-RAM
|
|
loading and saving would fail and the default filename for snapshots
|
|
wouldn't work.
|
|
- This time really fixed Allegro library keyboard handling (DOS port); it
|
|
was missing key some presses/releases (was stopping Chrono Trigger
|
|
Left + Right + A button combo from working).
|
|
- Added code to automatically remove headers off S-RAM save files with
|
|
512 byte headers.
|
|
- 32Mbit ROMs in interleaved format are now automatically detected and
|
|
converted.
|
|
- Added -ss 3 sound skip method support to the asm version - now NBA Live '96
|
|
works again.
|
|
- Added support for multi-part ROM images.
|
|
0.71 released
|
|
- Made libgz.so statically linked (again) on Linux port - sorry.
|
|
- Made writing to $4200 also clear any pending IRQs. This finally allows
|
|
Battle Toads: Double Dragon, Spawn and Sieken 3 all the work with the same
|
|
IRQ logic (but Sieken 3 still gets stuck in sound download code).
|
|
- Fixed a H-DMA wobble bug - some frames could randomly miss a line of
|
|
H-DMA causing the F-Zero screen to wobble, and slight text character
|
|
corruption on games like DKC3.
|
|
- Interleaved format ROM images are now swapped in-place, without the need
|
|
for a temp 4Mb buffer (saves lots of disk swapping on a 16Mb Windows 95
|
|
machine).
|
|
0.7 released
|
|
- Fixed Allegro library keyboard handling (DOS port); it was missing key
|
|
some presses/releases.
|
|
- DOS port had a different MAX_PATH value which moved the location of the
|
|
SRAM size variable when using the asm CPU emulation core. This, in turn,
|
|
caused the SRAM emulation to fail on the DOS port. Donkey Kong County 2 & 3
|
|
were reporting a ROM copier was connected to the SNES and refused to run.
|
|
- Fixed assembler version of XCE - it was always leaving the carry flag
|
|
clear - caused Killer Instinct and Super Punchout to think a ROM
|
|
copier was fitted to the SNES and they all refused to run.
|
|
- Fixed assembler versions of MVN/MVP - they weren't setting the data bank
|
|
register to the destination bank of the instruction.
|
|
- Fixed joystick detection on MS-DOS port - a single 2 or 4 button joystick in
|
|
port 1 was being ignored if a second joystick was not present in port 2.
|
|
- Fixed an uninitialised variable in graphics code - was causing random
|
|
missing scan lines on Mode 7 screens.
|
|
- Joysticks now scanned every 3rd frame (joystick scanning is slow in the PC).
|
|
- Double-whoops, Metriod 3 had stopped working in v0.6 - fixed it
|
|
(memory map bug).
|
|
- Made bit 6 of $4211 set if v-counter == v-timer-position.
|
|
- Made reading of $4200 read $4212 instead.
|
|
- Adjusted DMA timing to always access ROM memory at slow speed - this seems
|
|
to fix Battle Toads.
|
|
- Added code to automatically clear pending IRQs when the horizontal line
|
|
is no longer equal to the horizontal timer line - this fixes Seiken 3, it
|
|
now just gets stuck in the sound CPU wait code - oh well.
|
|
- Moved NMI back to its original pre-0.65 behaviour, now Puzzle Bobble works.
|
|
- More graphics speed ups - the code to render background tiles with their
|
|
priority bits set is only called if there are actual priority-bit tiles.
|
|
- Changed default frame skip rate from 1 to 2 - its seems most people don't
|
|
bother to read the docs, so I thought I'll help them out a bit!
|
|
- Speeded up Mode 7 graphics on games like F-Zero that rewrite the matrix
|
|
registers on each scan line using H-DMA.
|
|
- Reorganised the graphics code and did a slight speed up - graphics code
|
|
will be the next thing to rewrite in assembler.
|
|
- Rewrote CPU core in assembler for Intel platforms - gives a very noticeable
|
|
speed increase.
|
|
- Fixed several problems with the APU sound CPU emulation - its now getting
|
|
stable enough to try and implement sound.
|
|
- Fixed bug that caused 1 byte of S-RAM to be emulated when ROM didn't
|
|
expect any - it was enough to stop Street Fighter 2 and others from
|
|
working - thanks Lord ESNES.
|
|
- The TXS and TCS instructions shouldn't set the Z and N flags.
|
|
- Looks like MVP/MVN instructions should ignore accumulator size - change
|
|
code to always use all 16 bits and exit with accumulator set to 0xffff.
|
|
- Whoops, accidently left some test code in which was causing the V-BLANK
|
|
flag, bit 8 in register $4212, to be miss-calculated.
|
|
- Fixed palette in mode 0.
|
|
- Speeded up graphics drawing a little by skipping groups of 4 pixels that
|
|
were all transparent.
|
|
0.65 released
|
|
- S-VGA and MS-DOS ports now have a VGA mode command line flag.
|
|
- Improved the fading code - should be much more smooth now.
|
|
- Fixed second joy-pad support and re-mapped keys and joysticks to actually
|
|
make a match between what my docs said and a real SNES (SNES docs I'd
|
|
seen were wrong!).
|
|
- Fixed a bug in Relative Long CPU addressing mode.
|
|
- Ported Snes96 to MS-DOS.
|
|
- Snapshot loading and saving no longer uses external gzip binary.
|
|
- Added support for registers at $21c2 and $21c3.
|
|
- Made reading the software latch for the horizontal and vertical counters also
|
|
clear any pending IRQ.
|
|
- Added sprite priority rotation.
|
|
- Rewrote parts of the graphics routines to fix a sprite-to-sprite priority
|
|
bug.
|
|
- NMI flag changed again - now back to being reset by reading $4210 but
|
|
actual NMI is delayed.
|
|
- Made mode 7 background colour 0 transparent - this fixed several sprite
|
|
priority problems a few games where having.
|
|
- Finally worked out how sprite "Object Name Select" works and emulated it -
|
|
this fixes many (if not all) of the corrupted sprites some games
|
|
experienced.
|
|
- Delayed NMI activation for one instruction to give time for loops that
|
|
wait for bit 7 of $4210 to go high.
|
|
- Special-cased line count of 128 on H-DMA to mean repeat previous data with
|
|
a line count of 128 and not just terminate H-DMA on that channel.
|
|
- APU sound CPU emulation added - just need to debug the thing.
|
|
- Fixed Overflow flag setting in ADC and SBC instructions - it was never
|
|
being set.
|
|
- Rewrote how CPU instructions are fetched and how values are pushed and pulled
|
|
from the stack - it gave a very large increase in emulation speed.
|
|
- H-DMA was being started one scan-line too late.
|
|
- Added CG-RAM reading support.
|
|
- Added "Full Graphic" V-RAM reading.
|
|
- Speeded up C version of CPU emulation quite a bit - could speed it up a
|
|
little more before rewriting in assembler.
|
|
- Fixed bugs in 16x16 tile drawing on 2bit and 8bit deep screens.
|
|
0.6 released
|
|
- Speeded up 16x16 tile background rendering by removing a temp tile buffer
|
|
it was using. The speed up also fixed a vertical scroll bug.
|
|
- Fixed slight window clipping on 16x16 tile backgrounds.
|
|
- Added automatic PAL/NTSC mode switching.
|
|
- Fixed background and sprites so only visible if on main-screen or
|
|
on sub-screen under correct circumstance.
|
|
- Fixed lockup bug in DMA.
|
|
- Stopped NMI flag from being reset by reading $4210 - was causing a couple
|
|
of games to get stuck.
|
|
- Whoops, got horizontal and vertical Mode 7 flip bits around the wrong way!
|
|
- Fixed MIT shared memory pixmap support for X11 version (it was always turned
|
|
off).
|
|
- Fixed minor bug - first sprite in priority group was drawn twice. Didn't
|
|
cause any visual bugs, it just slowed down redrawing a little.
|
|
- Fixed DMA bug - transfer byte count should be 0 after DMA has finished.
|
|
- Fixed a scaling bug if width < height.
|
|
- Interleaved ROM image support added.
|
|
- 16bit and 24bit X11 server support added - with scaling.
|
|
- Added window scaling on X11 version.
|
|
- Partial clip windows added - the only window overlap option implemented at
|
|
the moment is OR, it seems it good enough for all the ROMs I've tested
|
|
it with.
|
|
- Partial Mosaic effect added (pixels only growing vertically).
|
|
- Missing Mode 7 "outside screen area" option added.
|
|
- Fixed mode 7 screen wrap "outside screen area" option.
|
|
- Used new event processing to finally fix H-IRQ so it triggers at the
|
|
correct position on the scan line.
|
|
- New event processing added.
|
|
- Linux version now statically links libgz.so (sorry).
|
|
0.5 released
|
|
- Linux S-VGA version changed from using a 320x240 ModeX screen (slow) to a
|
|
256x256 chunky screen (faster) - thanks to Phillip Ezolt (pe28+@andrew.cmu.edu)
|
|
for information on how to do this.
|
|
- Mode 7 screen flipping added.
|
|
- Included Snes97's CPU emulation code into Snes96. Didn't fix any bugs but
|
|
slowed down the emulation some what and I couldn't compile it optimised
|
|
because it was so large - so I removed it again.
|
|
- Added a few extra features available via the keyboard.
|
|
- Fixed a H-DMA transfer mode - bad documentation.
|
|
- Fixed H-DMA indirect addressing (it was using the wrong CPU memory bank).
|
|
- The Linux slow down bug is my crappy laptop enabling battery saving features !
|
|
- Changed graphics code to perform true line-by-line screen updates.
|
|
- Fixed sprite drawing bugs.
|
|
- Ported Snes97's graphics code to Snes96.
|
|
- Fixed memory map for HiROM save RAM area.
|
|
- Fixed HiROM memory map - now Killer Instinct and Donkey Kong County work !
|
|
- OK the slow down bug is just actually my laptop trying to save battery
|
|
power by slowing the CPU clock!
|
|
- The Linux slow down bug shows itself on DOS emulators running under DOSEMU
|
|
so it must be a kernel problem (or feature).
|
|
- Fixed H-DMA (again) to be complete emulation - all I need now is line-by-line
|
|
screen update...
|
|
- Fixed DMA to not copy too many bytes if byte count was not a multiple of
|
|
the transfer mode quantity (caused corruption on Super Mario World map screen).
|
|
- Changed mapping of keyboard to joy-pad buttons and added additional
|
|
direction keys for joy-pad one so player one's right hand doesn't have to
|
|
obscure player two's keyboard joy-pad buttons.
|
|
- Changed joystick button layout to match SNES if using a 6 button joy-pad.
|
|
- Changed snapshot format so I can easily use libgz on Linux.
|
|
- Added few speed up tweaks that will be lost again when I add line-by-line
|
|
screen update.
|
|
- First visible scan-line changed from 8 to 1 to match with new docs.
|
|
- New SNES information source found; fixed partial H-DMA emulation to include
|
|
indirect addressing support.
|
|
- Snapshot files are now compressed.
|
|
- Compressed ROM images now supported on Linux.
|
|
- Snapshot loading and saving added.
|
|
- Joystick support for Linux added. One 2, 4 or 6 button joystick, or two 2
|
|
button joysticks supported (PC hardware limitation).
|
|
- SVGA full screen support added for Linux. Still has the X11 slow down bug so
|
|
can't blame the X11 server any more! Must be a kernel bug or a very odd
|
|
emulator bug.
|
|
- Added emulation of two joy-pads on the PC/Sun keyboard.
|
|
- Removed -i command line flag as it is no longer used. -h value range has also
|
|
changed: now 1 - 100 (percentage).
|
|
- Actuate cycle counting rather than instruction counting now added including
|
|
fast and slow ROM timing - should give much better timing information when
|
|
line-by-line screen update added.
|
|
- Bug fixed old-style joy-pad access used by some ROMs - Mario All Stars still
|
|
gives problems if enabled and I don't know why; but at least Super Bomberman
|
|
now works !
|
|
- Looks like if both horizontal and vertical IRQ are enabled then IRQ should
|
|
only be triggered once per frame and not once per scan line - looking at the
|
|
IRQ handler of a couple of ROMs seems to confirm this.
|
|
- Added initial cycle counting - not accurate enough for some ROMs though.
|
|
- Finally worked out how the odd VRAM address increments should work but only
|
|
found one ROM, so far, that actually uses it.
|
|
- Debugged the odd slow down problem with the Linux port - it seems to be a
|
|
bug in the X Window System server - starve the X server of keyboard presses
|
|
or mouse clicks or movement and the X server slows down, slowing down the
|
|
emulator with it !
|
|
0.4 released
|
|
- Fixed sprite vertical clipping at top of screen.
|
|
- No need to invert the Mode 7 transformation matrix before use - the
|
|
ROM coder already had to!
|
|
- Fixed Mode 7 scrolling offset when using special effects.
|
|
- Added Mode 7 rotation, enlargement and reduction emulation.
|
|
- DMA shouldn't zero the byte count value after a DMA has completed.
|
|
- Added DMA reading (Addams Family was using it)
|
|
- Fixed V-RAM read function - returned data should lag behind the V-RAM
|
|
address by one byte/word.
|
|
- Added mode 7 graphics only.
|
|
0.3 released
|
|
- Speeded up the main CPU loop a bit.
|
|
- Add more command line options:
|
|
-f <frame skip> (default 1)
|
|
-i <no instructions between polling X> (default 32768)
|
|
-h <number instructions per scan line> (default 45, some games allow a lower
|
|
setting resulting in a increased
|
|
emulated frame rate)
|
|
-t enable CPU tracing
|
|
-ss <sound CPU skip wait method> (default 0, more methods to be added)
|
|
-H disable H-DMA emulation
|
|
-F Force Hi-ROM memory map
|
|
- Modified planar to chunky conversion to use look up tables.
|
|
- But now Mario All Stars won't start. Made emulation of $4016 optional with
|
|
-o command line switch.
|
|
- Thanks to Carlos (calb) of ESNES fame, I've added correct $4016 & $4017
|
|
joy-pad register processing - now several more ROMs will start once a
|
|
button is pressed and can be controlled.
|
|
- DMA wasn't updating DMA registers with the final CPU address used after the
|
|
DMA had completed (caused sprite and background corruption with some ROMs).
|
|
Still suspect another DMA side effect isn't being emulated correctly though.
|
|
- Fixed setting of CPU overflow flag in ADC and SBC instructions in decimal
|
|
mode.
|
|
- Fixed MVP/MVN CPU instructions to leave X and Y values correct at end of
|
|
loop - several more ROMs now work. Still don't know if MVP/MVN instructions
|
|
should ignore the accumulator size flag or not.
|
|
- Rewrote background drawing code - gives a large increase in speed.
|
|
- Flag to only update X Windows colour palette when necessary was missing a
|
|
case - caused some ROMs to start with a black screen.
|
|
- Code to only update background tiles when changed wasn't working so I
|
|
disabled it.
|
|
- CPU WAI instruction needed to trigger on hardware IRQ even when interrupt
|
|
enable flag was false.
|
|
- DMA was not transferring 65536 bytes when byte count was 0.
|
|
- Fixed matrix 16bit x 8bit multiplication (old debug code was causing junk
|
|
value to be returned).
|
|
- Fixed Makefile so version.h header file change recompiles file that shows
|
|
version number in window title.
|
|
- Added more reporting of used but unimplemented missing hardware features to
|
|
debug command.
|
|
- New ROM loading code from Jerremy included, can now cope with ROM images
|
|
with no 512 byte header.
|
|
- Speeded up emulated memory access a little bit.
|
|
0.2 released
|
|
- Added matrix 16bit x 8bit multiplication for Super Off-Road Racer.
|
|
- Added initial H-DMA emulation - visual effects using it will not be seen
|
|
correctly until screen is updated line-by-line rather than the whole screen
|
|
at end-of-frame.
|
|
- Fixed horizontal sprite clipping (vertical clipping still has a problem).
|
|
- Integrated large sprite bug fixes and new background drawing code from
|
|
Jerremy.
|
|
- Fixed large size per-sprite flag; always stayed true after sprite size was
|
|
changed to large.
|
|
- Rewrote the planar to chunky pixel conversion routines (still need more
|
|
work).
|
|
- Made registers $4016 & $4017 always return $ff - lots of ROMs that previously
|
|
wouldn't go beyond the title screen thought old-style joy-pads were
|
|
connected and were waiting for the user to press a button on them.
|
|
- Frame skip rate now set to 1 instead of 5 on my P166 laptop!
|
|
- Fixed NMI v-blank flag being incorrect set, caused some ROMs to lock.
|
|
- X keyboard autorepeat now switched off when emulator has keyboard focus.
|
|
- Added number key options to toggle backgrounds 1 to 4 and objs (sprites) on
|
|
and off.
|
|
- Fixed sprite clipping problems at edge of left hand side of screen.
|
|
- Corrected Hi-ROM memory map (I think) (no I didn't)
|
|
- Fixed most of the sprite-to-sprite priority problems.
|
|
- Added sprite debug command, 'S'.
|
|
- Added a debug command to show what missing hardware features a ROM was using.
|
|
- Added horizontal and vertical beam position IRQ - horizontal always triggers
|
|
at start of line at the moment.
|
|
- Fixed SBC instruction to set carry flag the correct way around.
|
|
Initial release 0.1
|
|
- Ported Windows 95 version of Snes96 to Linux on a PC and Solaris on a
|
|
SparcStation.
|
|
- Corrected work RAM memory map.
|