Filter: #all #release #emulation #programming #untagged Archive
[byuu.net] Article: Input Latency Reduction2019-10-07 08:39:15
I've posted a new article on my emudev site explaining how bsnes and higan further mitigate input latency. I believe the technique could benefit other emulators as well. I'd be open to hearing your thoughts, thanks!
Read it here.
bsnes v111 released2019-10-05 06:08:28
Update 1: there was a minor issue with the Super Game Boy audio fix when using save states, so I posted v111.1 to address this.
Update 2: and another fix for the accurate PPU renderer, a slight sprite flickering issue in Star Ocean, so v111.2 is up.
Update 3: and one final fix, save state stability improvements when using rewind. It really only affected Tales of Phantasia and Star Ocean, but they're such great games that it was worth the effort. v111.3 is up as a result.
In celebration of reaching zero issues and zero pull requests on GitHub, I'm releasing bsnes v111 today.
- fixed audio crackling in Super Game Boy emulation
- fixed NTSC region detection in Hanguk Pro Yagu
- fixed boot hnaging issue in Kishin Douji Zenki - Tenchi Meidou
- fixed slowdown issue in Mega Man X2 & X3
- added mute hotkey
- added HD mode 7 adjustment hotkeys
- added 18 pixel shaders including AANN, CRT-Royale, XBRz, and more
- added hotfix for The Hurricanes tile glitch during intro (happens on real hardware)
- added hotfix for Magical Drop which can hang after game over in Tokoton mode (happens on real hardware)
- added scanline override for NHL '94
- added fix for enterig folder names into the BrowserDialog filename box
- shrunk the fast PPU's Pixel struct, which gives a 3% performance boost [Alcaro]
- allow SRAM sizes of 2 megabits (for SA-1 homebrew developers)
- improved HDMA timing to fix a slight flickering issue in Full Throttle - All-American Racing
- fixed an issue with bsnes not remembering the user audio frequency setting across runs
- many libretro build improvements [rtretiakov, orbea]
Link #bsnes #snes #emulation #release
bsnes v110 released2019-09-20 11:07:19
Today I'm releasing bsnes v110, which provides stability improvements and bug-fixes over v109.
Also, the downloads are now ZIP files, so that third-party software is not required to open them.
- improved ExLoROM support (fixes Fire Emblem: Thracia 776 fan translation)
- several improvements to the libretro target, including macOS and Android platform support
- fixed an issue where the Alt key wasn't activating the menu on the Windows port
- removed 2160p HD mode 7 setting, due to Direct3D 9.0 texture size limits of 2048x2048
- reverted fresh configuration files to using the safer hardware drivers
- disabled the ASIO driver due to lack of support
- fixed a crashing issue when idling with the snow effect enabled
- added IOKit joypad support for macOS [Sintendo]
- added fast PPU render cycle position override for Firepower 2000's title screen
- ported higan's accurate PPU renderer back to bsnes to add sprite caching for Wolfenstein 3D
Link #bsnes #snes #emulation #release
bsnes v109 Released2019-09-06 10:31:52
I'm happy to release bsnes v109, with a month's work of non-stop polish on top of the previous release.
- greatly improved macOS support, fixing all obvious bugs and adding fullscreen support
- added libretro target [Themaister, rtretiakov]
- much smarter automatic HD mode 7 perspective correction support [DerKoun]
- added CPU and SA-1 overclocking support
- added fast forward speed limiting
- added a new "hotfixes" option to fix critical (deadlocking) bugs that also occur on real hardware (eg for Dirt Racer)
- added options to emulate bugs in ZSNES and older Snes9X releases to increase compatibility:
- "No VRAM blocking" for older fan translations
- "Echo shadow RAM" for older Super Mario World ROM hacks
- "CPU fast math" for older homebrew
- "Entropy: none" technically counts as well, for demoscene software made for SNES copiers
- added dialog for IPS patching to choose whether they were made for headered or unheadered ROMs
- lowered volume during fast forwarding and rewinding to reduce audio distortion
- added option to mute sound during fast forwarding and rewinding
- added an option to deinterlace all SNES games by rendering at 480p (almost no speed hit; highly recommended)
- added multi-monitor support to Windows, Linux, and BSD
- improved pause and frame advance support
- improved mosaic emulation for the fast PPU
- added entropy (randomness) settings; default to no randomness for movie recording (guarantees consistent playback)
- improved MLT_REQ Super Game Boy emulation; fixes Killer Instinct to default to player 1 instead of player 2 [endrift]
- added option to disable video dimming during pausing (useful for screenshots with window decorations)
- redesigned the settings and tools windows to use lists instead of tabs
- redesigned the input and hotkey settings windows to be easier to use and with clearer naming + icons
- added option to make hotkeys combinatorial (eg Ctrl+F) instead of separate (eg F11 or Gamepad L-shoulder)
- restructured the settings menu to be more intuitive
- fixed path selection dialog from sometimes appearing offscreen
- added wildcard search support to the file loading window
- fixed the
- redesigned the thread scheduler to allow enhanced compatibility with SA-1 and SuperFX overclocking
- fixed the pseudo-hires blur emulation support with the accuracy PPU
- removed template integer classes from the fast PPU to make the code more portable
- removed icarus from bsnes and merged the heuristics directly into bsnes itself
- ~5% speedup by optimizing CPU memory accesses and the PPU counters
- fixed an out-of-bounds memory access in the DSP core [Sour]
- enhanced the snow effect with depth-of-field and alpha blending support
- double-clicking a cheat finder result will now add the new cheat code directly
- added "[HLE]" indicator to the title bar when coprocessor HLE is being used
- simplified game titles with multi-carts (eg omit "Super Game Boy +" in SGB mode)
- the emulator now pauses on Windows when navigating the menus
- added SNES support for decoding Game Genie and Pro Action Replay codes
- added Game Boy support for decoding Game Genie and Game Shark codes
- added many more tooltips to explain GUI functionality
- minor speedups to SuperFX and Cx4 emulation (via object locality)
- simplified the mode 7 rendering code for the accurate PPU
- suppress Alt+F4 while in fullscreen mode
- fixed every reported regression caused by the speed optimizations I've been adding recently
You can download the new bsnes release here.
Link #bsnes #emulation #snes #release
bsnes HD Mode 72019-09-03 09:56:17
I merged DerKoun's HD mode 7 auto-perspective correction. This code detects when the option (which is used to perform much better anti-aliasing of HD mode 7 screens) will not work and will disable it for those segments of the screen. What this means is that you can leave the option enabled and ~99% of the time it should just work. You'll get perspective correction where it's supported, and it will disable itself automatically where it's not.
Link #emulation #snes
bsnes Compatibility Options2019-09-02 05:24:10
Back in the late '90s, SNES emulators were not very accurate and cut corners. ROM hacks and fan translations made during this time often ended up being incompatible on real SNES hardware.
As SNES emulation has improved, these older hacks have become broken in modern emulators. In an effort to save these orphaned works, bsnes now features options to emulate the inaccuracies of older emulators.
I strongly advise not enabling these options unless required for compatibility with specific titles, as these options will have adverse effects on licensed SNES software.
A longer-term goal will be to create a database to automatically and selectively enable these hacks only when necessary.
Link #emulation #snes
Konami VRC5 emulation2019-09-01 11:37:03
CaH4e3 and company recently managed to obtain four of the seven Famicom (NES) Konami Q-Tai games, and was able to dump and emulate them.
What makes this so fascinating is that the Q-Tai contains the Konami VRC5 mapper. We've long-since emulated the VRC1-4 and VRC6-7, and now we finally have the last missing piece.
It was too irresistable to not implement. So here's a video demonstration of the latest higan nightly running NHK Gakuen - Space School - Sansu 5 Jen (Jou).
higan Logger2019-08-24 21:53:54
Unfortunately, with higan supporting 24 systems and counting, developing comprehensive debuggers for all of them is all but impossible.
But that doesn't mean we can't do anything. I've started on a new logging system that allows one to trace CPU instructions and log events such as interrupts triggering, DMAs firing, etc.
Something new in higan is loop rolling: instead of printing the same 2-3 instructions thousands of times when waiting on events, the new tracer can optionally roll these instructions up into one set along with a counter.
In the future, I want to extend this further with better trace masking options, more event notification sources, options to control where to output trace log files to, options to include/exclude specific memory regions when tracing, etc.
Certainly it's not as good as a full-fledged debugger, but hopefully it'll prove useful.
bsnes Fast PPU Scanline Timings2019-08-23 15:15:09
An interesting detail with SNES emulation is that a dozen or so games write to the display registers a bit early or a bit late into scanlines, and with a pixel-based renderer, it doesn't end up mattering because the overshoot portion of the scanline was invisible. Think something like a background layer showing status text overlaying another background.
The answer is a pixel-based renderer, but that is of course much slower than a scanline-based renderer.
When it comes to scanline rendering, we have to pick a specific cycle to render at. But there is no universal value that works for all games, so traditionally after years of testing, cycle 512 was determined to be the most compatible location.
But for the few games where this still doesn't work, rather than require this performance penalty for accurate emulation, I've decided to include per-game rendering position information so that every game other than Air Strike Patrol will render 100% correctly out of the box with bsnes.
WonderSwan Auto-Rotation2019-08-22 08:54:06
A new nightly feature is auto screen rotation support for the WonderSwan. The orientation can still be set manually, but this should make it nicer for games that switch between the two during gameplay.
WonderSwan Icon Emulation2019-08-20 01:52:01
Also thanks to furrtek for making them, I've added status icon emulation to the WonderSwan emulation. They can be disabled under the Video node if desired. I also corrected the rotation support, and added an option to switch between the monaural speaker and stereo headphones. There's never really a reason to use the speaker, especially since you lose the HyperVoice channel that's only available for headphones this way, but the option is there in any case for completeness.
WonderSwan boot ROM dumped, courtesy of furrtek!2019-08-18 14:58:09
Courtesy of furrtek, we now have the WonderSwan boot ROM extracted and emulated! furrtek was able to achieve this via clock glitching the original hardware during boot-up and then extracting the ROM via serial. WonderSwan Color is next up.
The reason this is important is not just the boot screen logo. If you hold down the start button during startup, the WonderSwan boots into a settings menu where you can configure your name, birth date, gender, and blood type. For the last one, remember this is Japan. In Japan, blood types are roughly analogous to the west and horoscopes.
Your settings are stored on an internal EEPROM (memory chip), which WonderSwan games can then read back to customize the game for you: pre-filling in your name, providing easter eggs, etc. Some cartridges further provide a real-time clock, which can trigger events on your birthday.
With the boot ROM now dumped and emulated, these settings can now be configured via emulation.
Link #emulation #higan
macOS improvements2019-08-17 15:57:22
I fixed all outstanding GUI bugs I could find in hiro for macOS, and also re-added fullscreen support, so aside from missing joypad support, bsnes should be equally functional on all supported operating systems now.
bsnes-hd beta 92019-08-16 11:14:30
DerKoun released bsnes-hd beta 9, which features some cool new HD windowing and gradient effects. Here's a before-and-after example of the gradient effect. Pretty cool stuff!
Multi-Monitor Support2019-08-15 18:14:39
I added multi-monitor support to higan and bsnes. Not complete yet, long ranty technical breakdown on my Twitter feed if you're interested. But it's coming along ...
bsnes 480p Deinterlacing2019-08-12 14:01:06
A new feature as of bsnes v108.8 is 480p deinterlacing. Rather than render each field of interlaced content separately, bsnes can optionally render both fields, turning 480i content into 480p60 content. Thanks to bsnes' multi-threaded PPU renderer, this incurs less than 3% additional CPU resources when enabled. Below are some before and after demonstrations. I've also posted a video demonstrating this in action here, although the YouTube lossy encoding doesn't quite do the improvement justice.
bsnes Overclocking: Gradius III2019-08-10 04:49:10
Left: bsnes running at 100% speed.
Right: bsnes running at 400% speed.
Link #emulation #video
bsnes Overclocking: Contra III2019-08-10 04:40:59
Left: bsnes running at 100% speed.
Right: bsnes running at 200% speed.
Link #emulation #video
SNES widescreen patches2019-08-08 09:54:46
DerKoun has implemented widescreen support into his bsnes-hd fork. The results when they work are quite stunning, but to fully work, pretty much every game will require manual reprogramming work to handle things like offscreen sprites and loading additional tilemap data.
I'm hoping to find someone interested in producing these ROM hacks. If we can get at least one working patch made for a major SNES title, I will integrate the widescreen support into bsnes official. The idea would be to include the widescreen patches alongside the emulator, so that games could automatically switch to widescreen mode when enabled in the settings.