mirror of
https://github.com/bsnes-emu/bsnes.git
synced 2025-10-05 16:31:59 +02:00
2cc7fe30b41884a183bf5f8033f1763ef7ad8701
2 Commits
Author | SHA1 | Message | Date | |
---|---|---|---|---|
|
2cc7fe30b4 |
Update to bsnes v020 release.
Five months and 43 WIP releases in the making, today I am releasing bsnes v0.020. I'd really like to express my thanks to blargg, for he has written a new S-DSP emulator that is an impressive 32 times more precise than all existing S-DSP emulators. It is now bus-accurate, and should produce bit-perfect sound output to that of a real SNES, excepting very minor, very extreme edge cases. Not only did he do this, he went out of his way to develop a special version exclusively for bsnes to ease licensing concerns and take advantage of bsnes' unique features, notably cothreads. I can't thank him enough. Unfortunately, bsnes has taken a ~10% speed hit over v0.019 by using this new S-DSP emulator, but I must stress the speed hit is entirely due to the way bsnes is implemented. blargg's standalone S-DSP emulator is very, very fast. Anyone is free to take a look at his S-DSP emulator, as he has released it as open source under the LGPL, by visiting his homepage, here. Unfortunately, the new cross-platform UI is not entirely finished. Some sacrifices had to be made to support libui. Specifically, the following features are missing from v0.019, but will hopefully be added back in future releases: - Fullscreen support - Input Configuration panel cannot capture joypad input. Joypad support is still present, but it must be mapped manually through the Advanced panel or through editing bsnes.cfg by hand - The Cheat Code Editor is missing, but cht files can still be used from bsnes v0.019, and created by hand - Sufami Turbo support is not accessible from the UI - The UI on Windows is slightly less polished due to compromises to allow the UI to be readable on Linux. I am sorry for the rough edges listed above, but I wanted to get a new release out, as it has been over five months since the last release, and I really want the world to be able to experience blargg's new S-DSP emulator. Changelog: - Added blargg's new S-DSP emulator, runs at 1.024mhz. Many thanks to blargg for this, as this puts all portions of SNES emulation except for the S-PPU at bus-accuracy - blargg's S-DSP core fixes bugs in both Koushien 2 (J) and Toy Story (U) - Corrected all S-SMP cycle timings to be hardware accurate. Thanks to blargg for creating an amazing test ROM that tested every possible opcode - Corrected S-CPU wai instruction timing, fixes Mortal Kombat II - Reverted HDMA sync emulation once more to fix Breath of Fire II (G) and Secret of Mana (U) - Completely rewrote user interface to use libui, which is a wrapper that allows the same code to produce the same UI on both Windows (through the Win32 API) and Linux (through the GTK+ API) - Corrected $2100.d7 OAM reset behavior, thanks to research from anomie - Massively revamped the Linux port, should compile with no warnings or errors now - Added 64-bit support to libco, tested on FreeBSD/amd64, should work on Linux as well - Revamped makefile with suggestions from Nach - Improved Linux Xv renderer to use the far more common YUY2 format, which should work on most Xorg drivers, allowing hardware accelerated video scaling - Completely rewrote config file system. bsnes.cfg is now saved to user's profile folder on both Windows and Linux, allowing multi-user support - A lot more work has been done behind the scenes, including massive code cleanups and portability improvements You may download the new version on the main bsnes page. |
||
|
6d66b1136d |
Update to bsnes v019r09 release.
Alright, I'm in a semi-good mood. http://byuu.cinnamonpirate.com/files/bsnes_v019_wip9.zip This one uses the old win32 interface, and adds a new feature I'd like people with sound troubles to try out. The config file now contains "audio.latency". Don't mess with "audio.frequency", it won't do you any good and gets overridden by the speed regulation settings for now. The audio.latency is a precise measurement of the millisecond delay between sound being output by a real SNES and hearing that same sound in bsnes. It takes into account the current playback frequency, as well as the three-ring buffering system used by bsnes' audio system. Formula: sample_latency = CURRENT_playback_frequency / 1000 * config_file_latency * 3 (so 32khz + 75ms latency means each ring buffer is 800 samples long). The new formula should make latency sound better (it's consistent now) on fast / slow emulation speed throttling settings as well. I also cut out the fourth ring, since it was redundant. This should make bsnes appear ~25% more responsive to sound with the same buffer latency. As a result, I increased the latency to 75ms (it was at ~45 before). I'd like to know what the lowest good value is that works on 95% of sound cards, so I can use that. I'll let people with cheap sound cards increase their latency setting manually (eventually it will be an option in the GUI). **NOTE:** this version does nothing for triple buffering/vsync/whatever. You must _disable_ triple buffering to try out the latency settings. This version is strictly to test audio playback support. I also added in my audio point resampler. Good god, it sounds terrible. Regardless of the latency setting (either really high or really low), the pitch difference between each audio ring is _extremely_ noticeable. The code is there now in src/ui/audio/dsound.cpp : AudioDS::run_videosync(), if anyone would like to take a look. I'll hold my breath ;) ----- Comparisons against ZSNES at this point are rather silly. Aside from much more flexible timings, it probably has a nice audio resampler, which I don't. If I faked CPU/SMP clock timings, I could get the SNES spitting out 60 frames a second and 32khz audio a second. I'm not going to do that, so I have to figure out how to resample the two. All of my attempts at resampling video _and_ audio have both failed miserably to date. I really only need one of those to work to get smooth video+audio, but both would be nice so the user can decide what's more important to them. I don't care to add 2xSaI. I'm planning on redoing the filter stuff soon to support 32-bit output for Xv, so if someone wants to add 2xSaI support to bsnes after that, I'll add it in. Otherwise, HQ2x is superior and Scale2x looks about the same, yet is way faster. Regarding the IPS thing, exactly. As I said, IPS is a bad format. You can't tell if you need to patch against a headered or unheadered ROM unless you read the documentation that fuckheads like Cowering remove in their ROM sets ("at least it's already prepatched"), or try patching twice to see which one works. UPS will eliminate both of these problems. Readmes will be included inside the patches, and UPS will work regardless if your ROM has a header or not. It will also be reversible. It'll be better in every regard over IPS, so I have no reason to support IPS. Lastly, I don't have any intention of working on fixing DeJap's patch, regardless of where the problem is, as I have no way to run the game on my copier. Maybe when and if the last two serious bugs (Uniracers and Koushien 2) get fixed, I'll take a look at it then. |