Next Generation Emulation banner
1 - 20 of 32 Posts

· dr emulator (madmax)
248 Posts
Discussion Starter · #1 · (Edited)
news View attachment 207675

bsnes v067 released
I apologize, bsnes v066 had a small error in the source that resulted in the PPU not synchronizing properly to the CPU. This bug was not exposed in the images I use to test releases. I have also updated the cheat code database, which is maintained by mightymo.
bsnes v067 available here

from bsnes v066

Major features in this release are: serial controller emulation, a brand new scheduler that supports multiple simultaneous coprocessors, and accuracy improvements.

The serial controller is something devised by blargg. With the proper voltage adjustments (5v-9v), it is possible to wire an SNES controller to a serial port, which can then be used for bidirectional communication between the SNES, and (usually, but not only) a PC. The support in bsnes was added so that such programs could be debugged and ran from within an emulator, and not just on real hardware.

The scheduler rewrite was meant to allow the combination of coprocessors. It was specifically meant to allow the serial controller thread to run alongside the SuperFX and SA-1 coprocessor threads, but it also allows fun things like MSU1 support in SuperFX and SA-1 games, and even creating dev cartridges that utilize both the SuperFX and SA-1 at the same time. The one thing not yet allowed is running multiple instances of the exact same coprocessor at the same time, as this is due to design constraints favoring code inlining.

There are two important accuracy updates. The first is that when PAL video mode is used without being in overscan mode, black bars are shown. Emulators have always shown this black bar at the bottom of the screen, but this is actually incorrect. resxto took pictures from his PAL TV that shows the image is in fact vertically centered in the screen. bsnes has been updated to reflect this.
Also interesting is that I have backported some code from the dot-based PPU renderer. In the game Uniracers, it writes to OAM during Hblank, and expects the write to go to a specific address. In previous releases, that address was hard-coded to go to the required memory location. But the way the hardware really works is that the write goes to the extended attribute address for the last sprite that the PPU fetched, as the PPU is still asserting the OAM address bus. Now, due to the precision limitations, I was not able to also port timing access during the active display period. However, this is sufficient to at least remove the last global hack from the older, speed-focused scanline renderer.

older news
bsnes v064 released + Mednafen netplay support-----------------------------------------------------------------------------2010-04-14
A thank you to everyone who helped test the RC to ensure stability. I've uploaded the official v064 release to Google Code.

The most important change in this release is the cycle-based PPU renderer; but due to performance reasons the scanline-based renderer remains the default in the Windows binary. If you want to try out the cycle-based renderer, you will need to compile from source for now.

Another major change is the introduction of libsnes, which allows one to build bsnes as a shared library that can be used from other programming languages. It is intended both to create a regression testing framework, and to provide API stability for the various projects that use the bsnes core. While I can't guarantee the API to libsnes won't change, I will properly revision it and do everything I can to avoid changing it if possible.

[ Download ] [ Discuss ]

Netplay Support
Mednafen has added the bsnes core, which most significantly means that its client/server-netplay module can be used with it, thus giving you bsnes+netplay. You can try out the WIP for this here: Mednafen 0.9.0 WIP
download here

byuu's homepage here

slghtly older news
bsnes v064 Release Candidate 1 released-----------------------------------------2010-04-12

I'm posting a release candidate for v064, for which I am looking for beta testers. If you would like to help out, please give it a try and report any bugs or regressions on the forum. If all goes well, this will be posted as v064 official shortly.

Note that you will need the Qt run-times from bsnes v063 official to use this. Also, this build does not use the new cycle-based PPU. Official builds are going to continue using the scanline-based renderer. This build should be about 10% faster than v063 was, which should lower the system requirements further.
byuu's homepage here

bsnes v064 Release Candidate 1

older news
bsnes v063.10 Technical Preview released---------------2010-04-07

bsnes v063.10 Technical Preview released---------------2010-04-07
With this release, the final last-generation holdout, the scanline-based PPU renderer, has been replaced with a true, accurate, cycle-level PPU that renders one dot at a time. Finally, this fulfills the greatest milestone remaining in the SNES emulation scene. With every processor emulated at the lowest possible level, SNES emulation finally rivals the accuracy levels that NES emulators have offered for years.

Now, please do understand that this release is not a beta, nor is it even an alpha. It is simply a preview of things to come, and as such you can consider it a pre-alpha. There are many caveats at this time.

First, it is very slow. More than twice as slow as v063 official. There have been absolutely no optimizations whatsoever to the new dot-based renderer. I do expect to be able to speed this up significantly in future releases.

Second, this may lock up on Windows Vista and later for unknown reasons. I haven't had a chance to look into it; so stick with Windows XP or Linux for now.

Third, save states are not supported yet. If you try and use them anyway, bad things will happen.

Fourth, and most importantly, this isn't 100% bit-perfect by any stretch of the imagination. Off the top of my head, memory is accessed far too often, the OAM and CGRAM address lines are not controlled by the S-PPU during active display, none of the various glitches are supported, and the OAM renderer does not pre-cache the next scanline's sprites, it happens on the same line for now.

I will obviously be doing my best to improve the accuracy of the aforementioned things. But even with those missing, this is still leaps and bounds above a pure scanline-based renderer. It essentially provides 682 times the parallelism. It is enough to finally properly emulate the shadow effect in Air Strike Patrol, and it finally eliminates the "PPU Hclock render position" hack once and for all.

Lastly, you'll need the DLLs from v063 official. I didn't bother to include them this time.

byuu's homepage here

cutting edge releases here

bsnes_v063r10.tar.bz2 (2010-04-07) here

even older news
BSNES v063 released

Time for another (hopefully) stable release. The changelog has all updates since the last stable release.

Most notably, this release features substantial accuracy improvements all around. Almost all of them represent brand new findings never before seen in any SNES emulator.


fixed off-by-one buffer size issue in S-PPU RTO calculations [PiCiJi]
added XML parser
added XML-based memory mapping system
moved header-based memory mapping code into snesreader library
added some linker flags for Fedora [belegdol]
added cheat code database; with codes for over 1,500 games [mightymo]
fixed a bug where S-CPU IRQs were being tested one cycle early on direct page indexed read opcodes
added global cheat system enable/disable checkbox to cheat code editor
fixed bug in overflow calculation of S-CPU ADC and SBC opcodes in BCD mode [blargg]
emulated the S-CPU ALU MUL and DIV hardware delays with partial result calculation steps [blargg]
controller port read now returns real-time results of B button when strobe latch is raised
major improvements to emulation of the S-SMP TEST register [blargg, byuu]
fixed DSP2 memory map [Overload]
"Apply Patch" checkbox will now scan UPS patch folder if one is set in the paths section
fixed S-CPU TSC negative flag calculation in emulation mode [address]
added "make uninstall" command to Makefile for Linux users
S-CPU (H)DMA now updates the S-CPU MDR; fixes a freeze in Speedy Gonzales - Stage 6-1
very substantial code cleanups and optimizations as a result of moving from C++98 to C++0x

download here

byuu's homepage here

oldest news click spoiler

bsnes v060 released 2010-02-08

This is a long-term stable release. A full changelog will be available at the forum link below later in the day. Also, please note that I have merged all of the various distributions into two packages. The Windows binary package now contains both the profile-optimized (fast) build, and the debugger build. The source code package now contains sources for bsnes, snesreader, snesfilter and supergameboy.
v0.060 of the bsnes emulator here

rockmanforte has some updated news here about bsnes's intermediate releases

meanwhile in other news

snesfilter v009 released 2010-01-14

This version modifies the HQ2x filter to take advantage of multi-core processors using OpenMP. On my dual-core E8400 at stock speeds, I get 177fps with no filter at all, and I get 123fps with HQ2x. Yes, it's a very intensive filter; and it's been meticulously optimized by both blargg and myself. By using HQ2x+OpenMP, the framerate increses to 143fps. Similarly, a quad core would easily double that again to something like 155-160fps.

This really isn't a huge deal for HQ2x, as any dual core system is probably already fast enough to reach fullspeed. But it will serve a very useful purpose upon adding HQ3x, HQ4x and the Phosphor3x and Phosphor5x filters in the future. As well as any other filters that really consume a lot of processing power.
byuu has released another update to his brilliant snes emulator

bringing it to version 0.59

bsnes v0.059 released-------------------------------------------------------------2010-01-06
This is mostly a polishing release. There's lots of nice little improvements over the last release, so it should be well worth the update.

◦fixed a bug in the save state manager that was allowing saves for unsupported special chips
◦added save state support for SuperFX games
◦added save state support for SA-1 games
◦the "Apply UPS" checkbox actually works now; allows bypassing of patching prior to ROM loading
◦ROM loader will display internal ROM title and header info for uncompressed files ending in ".sfc"
◦added Shift JIS to UTF-8 conversion for internal ROM titles
◦"open-folder" concept now requires folders to end in ".sfc" to avoid false positives
◦shrunk all GUI buttons and right-aligned them, as some of them were ridiculously long before
◦rewrote settings and tools windows to be driven via tabs instead of lists; this saves a lot of screen space
◦rewrote input mapping system to use a tree view instead of the confusing combo box hierarchy; hopefully more people will find the user interface GUI hotkey remapping section now
◦added support to map modifiers as individual keys (eg you can map the shift key to the SNES select button)
◦rewrote the cheat code editor, it behaves exactly like the state manager now; there are 128 pre-defined slots, and it is easy to clear any or all of them
◦the cheat file will auto erase itself upon exit if all codes and descriptions have been erased
◦fixed title bar game name ordering; was "bsnes v058 - Game Name", is now "Game Name - bsnes v059"
◦fixed a bug where pressing escape inside the main window's menus would cause the program to quit
◦Windows: worked around QTBUG-7188 to fix the multi-file archive loading dialog; it was not updating properly before
◦Linux: added full-API PulseAudio driver with synchronization and latency control [RedDwarf]
◦Linux: fixed a crashing bug involving OpenGL and glXSwapIntervalEXT()
◦Linux: X-Video driver texture now resizes dynamically to support > 1024x1024 for any future filters to use
◦Debugger: single-stepping instructions now updates all windows marked to "auto update"
◦Debugger: fixed execute breakpoints, they were disassembling at the wrong offset
◦Debugger: S-CPU bus breakpoints now mirror WRAM $7e:0000-1fff to $00-3f|80-bf:0000-1fff
◦Debugger: fixed a rendering issue when stepping through hires games
◦Debugger: added property system; can now view internal register states of all S-CPU and S-PPU registers (S-SMP and S-DSP coming soon)
◦Debugger: added CGRAM palette viewer
◦Debugger: added OAM sprite viewer (no graphical output yet)
◦Debugger: added options window -- so far only to control output of memory / execution usage tables
◦Debugger: updated usage and memory export file names to start with the loaded cartridge name
◦Source: cleaned Utility class, split some of the functionality out to Cartridge class
◦Source: greatly simplified SNES::Cheat class, SNES::Cartridge class; etc
A note to Windows Vista and Windows 7 users: there is still an open bug in Qt 4.6.0 that causes menus attached to popup buttons to initially appear invisible. See QTBUG-6645 for reference. As it is a bug with Qt itself, there is nothing I can do about it but wait patiently. You can work around this by pressing the tab key after you click the button. This affects the options buttons on the file load dialog, and on the input settings window.

Also, mudlord has submitted an updated Direct3D driver that adds HLSL pixel shader support. It was too close to get into this release, I'd like some time to test it. But hopefully it will get in by v060, or at the very worst, v061. Many, many thanks to mudlord for the awesome work :D
v0.059 of the bsnes emulator here

byuu's homepage here

older version news

bsnes v0.058 ------------------------------------------------------------------released 2009-12-09
We've tested the latest release on at least a dozen computers now, all seems to be in order for a release.

◦added 21fx support
◦added movie recording and playback support
◦added rewind support (enable under Settings->Configuration->Advanced, use backspace key to rewind)
◦added speedup (fast forward) and slowdown key bindings
◦audio no longer stutters on Windows when moving or resizing the main window
◦co-processors can now specify their own clock rates instead of sharing the S-CPU clock rate
◦Super Game Boy 2 now runs at the correct hardware speed, and not 2.4% faster like the Super Game Boy 1 does
◦added Vsync support to the Windows OpenGL driver (Intel graphics drivers do not support this option, because their engineers are lazy)
◦OpenGL driver no longer re-initializes when changing video synchronization, helps pixel shaders
◦refactored user interface compilation; now split into several object files, auto-generated MOC files placed under src/obj/
◦worked around a bug in the PulseAudio sound server that was causing the ALSA output driver to lock up [BearOso]
◦rewrote and simplified the save state manager, it is no longer a part of the core
◦S-DD1 and SPC7110 can now access up to 256MB via their MMCs
◦re-added background and OAM layer toggling under the tools dialog
◦added config file options to adjust emulation speed levels (config.system.speed*)
◦added snesreader, snesfilter and supergameboy support to the OS X port
◦added a really neat pixel shader that can perform point scaling to non-even multiples, eg it looks great even with aspect correction [Fes]
◦upgraded to Qt 4.6.0 official
Debugger changelog:
◦added memory export and import to the memory editor
◦added bus usage analyzer: logs opcodes, memory reads, memory writes and M/X states to usage.bin file
◦added disassembler that can trace both forward and backward from the current execution address
◦extended read/write breakpoints to the S-SMP
◦re-added trace masking option
Errata: there is one known bug in Qt 4.6.0 that affects the Windows port: menus attached to buttons show up as invisible on Windows Vista and above. I only use this on the file load dialog options button, and only to toggle the information pane on and off. Given that this is less severe than the bugs in the beta versions, I've upgraded anyway. I'll submit a bug report to the Qt team for this shortly. Also, my sincerest thanks to Bradley Hughes from the Qt development team for quickly fixing this show-stopper bug that greatly affected performance in bsnes v056.

New pages: I've added a new page to the navigation menu to explain 21fx, and I've also added a bsnes compilation guide on the main bsnes page. Please check those out for more information.

v0.058 of the bsnes emulator here

byuu's homepage here

news on version 0.057

bsnes v0.057----------------------------------------------------------------------released 2009-11-22
I'm really sorry about this, but a major issue snuck into v056. It was caused by a bug in the newly released Qt 4.6.0 RC1. Whenever one moved the mouse cursor over the main window in the Windows port, the frame rate was immediately cut in half, which effectively ruined Mouse, Super Scope and Justifier support. As for how this could happen, well ... I'm ... really at a loss for words about this.

This release does not change the source code at all except to increment the version number, and it is built against Qt 4.6.0 beta 1 instead of 4.6.0 release candidate 1 as v055 was.

I will file an official bug complaint and post a link to it here during next week. Again, my apologies for any inconvenience. I incorrectly assumed it would be safe to update to RC1, and didn't spot the bug in time

News update----------------------------------------------------------------------------2009-11-24

Release changes, movie support, credits
To try and prevent the need for bugfix releases, starting with v058 the final release will be distributed only to testers for a period of roughly 72 hours. If no issues are spotted, I'll then release that binary. Otherwise, I'll fix any issues and possibly reset the timer. As a single developer working on a part-time hobby, that's about the best I can do.

I've added movie playback and recording support. You can record from any position in-game, as it saves the current state before starting to record. There are no tool-assisted speedrun functions added at this time. I'm not sure if it's best to put these inside bsnes, or if they belong in a fork. It would have to be the latter if the changes are too intense to the core, so ... we'll see how things go I guess.

Lastly, I mistakenly attributed the HDRTV pixel shader to guest(r). That was written by SimoneT. guest(r) created the HQ2x shader, and Pete created the Scale2x shader. krom was responsible for the initial GLSL support, and mudlord has recently added Direct3D HLSL, which may make it into a future release if we can address some issues with d3dx. Also, thanks again to tukuyomi for hosting the bsnes releases.

news update --------------------------------------------------------------------------------21/12/09
Save state improvements and other things

I've finally gotten around to updating the core to allow serialization of complex co-processor threading. With that, I've added save state support for SuperFX and SA-1 games. So at this point, only the following chips lack save state support: BS-X, DSP-3, DSP-4, ST-0011, ST-0018. Given that none of those are fully emulated, it shouldn't be too much of an inconvenience.

In other news, I wanted to clarify that the current 21fx emulation interface should be considered a prototype. I don't advise anyone to attempt a project with it, unless they are willing to update it once the hardware is ready.

Speaking of the hardware: right now, we're looking into using a cartridge pass-through due to difficulty in locating a suitable 28-pin edge connector for a base unit. neviksti, vladitx and Exophase have been helping with the layout planning, and Matthew Callis generously offered to help fund the project if needed. Between the two of us, we should be able to push as much as ~$3,000 or so if need be. So money wise, we're looking very good. At this point, we're just trying to determine the best MCU and CPLD to use for the project.

Lastly, the debugger is still being enhanced. Lots of bug fixes, lots of new stuff. I finally feel it's complete enough to replace all other debuggers I've had to use in the past. Which is quite nice considering no other debugger runs on Linux (my native operating system) or OS X.

v0.057 of the bsnes emulator here

v0.058 of the bsnes emulator here

v0.059 of the bsnes emulator here

v0.060 of the bsnes emulator here

v0.063 of the bsnes emulator here

v0.064 of the bsnes emulator here

byuu's homepage here

check back for updates
enjoy :thumb:

· No$gba Philosopher
553 Posts
This is a first...

Does NES games run with shaders??

· Banned
35,081 Posts
mudlord made contributions to this build iirc.

· Registered
10,973 Posts
Thanks to everyone involved!


· Registered
10,973 Posts
Ok downloaded and updated the version, thank you!

· dr emulator (madmax)
248 Posts
Discussion Starter · #10 ·
I had to bump to v057, which is nothing but a downgrade to the Qt toolkit version because of a major bug in Qt. Sorry about that.

krom was responsible for the GLSL code. mudlord has mentioned he wants to work on HLSL support, I'll be happy to merge his changes if he likes :)
page updated ;):thumb:
although i have to ask is it just super scope games that are affected or the whole emulator?

· work haunts me, but I'm running faster!
263 Posts

· work haunts me, but I'm running faster!
263 Posts
Oh crap, how embarrassing. As per my PM, certainly. I'll fix the archive the next time I get the chance. I'm very sorry to misrepresent the author, this was a copy-paste mistake.
No problems, here my contribution... the BumpMAP shader, funny with some games.

· dr emulator (madmax)
248 Posts
Discussion Starter · #16 · (Edited)

bsnes v0.058 released to testers
I've seeded the next release to testers, so if all goes well, look for the next official release here very shortly.
byu's homepage


· dr emulator (madmax)
248 Posts
Discussion Starter · #17 ·
byu has released another update to his briliant emulator bringing it upto version 0.058

see top of page for list of changes

v0.058 of the bsnes emulator here

have fun :D

· Registered
10,973 Posts
Again thanks and kudos to everyone involved. I downloaded and installed it.
1 - 20 of 32 Posts
This is an older thread, you may not receive a response, and could be reviving an old thread. Please consider creating a new thread.