Filter: #all #release #emulation #programming #untagged
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.
Link #bsnes #snes #emulation #release
Hi, I've created a video where I demonstrate my method of cleaning game cartridges.
If you enjoy the video, please be sure to like and subscribe, it would help me a lot. Thank you very much! ^-^
Yeah, we're doing this again. Third time's the charm?
Unlike previous incantations of the forum, this time the board has no general discussion. I don't want to moderate communities anymore.
The board is instead focused on development. Essentially, GitHub issue trackers are a terrible way to manage compatibility lists and have nuanced discussions. And I'm comfortable with forums, so rather than write my own issue tracker with account registrations, that's what I'm going to use. I am of course accepting bugs there for both higan and bsnes, and I'll migrate game issues to the forum myself.
Anyone is free to sign up, but again I want to stress that I have no intentions of moderating. If it's not kept on-topic, I'll be removing posts/accounts. If you're still interested, then I look forward to seeing you there, thanks!
Forum link: byuu's board
I've started a new website, byuu.net, for hosting emulator development resources. The focus for this site is to provide articles and resources to help aspiring emulator developers with the kinds of topics not found in your usual 'how to write an emulator' tutorials. Deep-dives into things like accurately emulating different types of displays (CRTs and non-backlit handhelds) on modern PC monitors, removing DC offsets and PSG aliasing from audio streams, creating robust thread schedulers and priority event queues, etc. The goal is to write this in a way that's approachable for people who aren't experts with topics like digital signal processing and such, to help grow new emulator projects into best-in-class emulators, and also to shed light on areas that are in need of more outside attention in the hopes of attracting new interest in this field. If nothing else, for those who for some reason enjoy my technical writing, it'll be a sort of mini-tutorial on my process of software development.
I'm also hoping to build a library of links to PDF datasheets and similar documents that are traditionally rather scattered around the internet.
So far I have two articles hosted there, color emulation and CPU ALU flag emulation. I'll probably be posting a new article once a week or so on average.
I've chosen to set this up under a different domain because I want to keep byuu.org as my personal website for my own projects and opinion articles, and I wanted a different website design that was more "article-focused", and byuu.org has historically not had the best track record when it comes to content longevity (*cough site rewrites*), which is something I can more easily avoid by keeping the two sites completely separate from one another.
Thanks for reading, and I hope the new site will prove interesting to some folks!
The first new official version of the beat (BPS) file patching tool has been released.
Compared to the previous generation of beat patchers, the new beat tool implements suffix arrays to perform much faster delta scanning. Patches that would take 1-2 minutes before now take 1-2 seconds to create. As always, patch application is as fast as ever, taking less than a second per 100MB.
All major operating systems are supported, and you can download the source code and Windows binary on the beat download page.
I will be adding more features to beat, as well as establishing a Git project for it, in the near future.
Link #beat #release
I'm happy to release bsnes v109, with a month's work of non-stop polish on top of the previous release.
You can download the new bsnes release here.
Link #bsnes #emulation #snes #release
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
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
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).
I've added an RSS feed for posts to the byuu.org frontpage.
You can access it here.
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.
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.
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.
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.
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
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.
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!
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 ...