📄 changes.txt
字号:
- 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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -