Spelkontroll  ::  Emulation64  ::  DCEmu.co.ukNetwork Sites:    About  ::  Hosting  ::  Donate 
Home Files Forums Reviews Guides Articles Interviews

Welcome to the Emulation64 Network290 Users Online

 




    Saturday, August 04, 2007
bsnes 0.022 Released


Today marks a milestone for bsnes, and possibly for SNES emulation as a whole. With this new release, bsnes' compatibility has now reached 100.0%, with zero game-specific hacks. With every last commercially released game tested by both FitzRoy and tetsuo55 for at least five minutes each, all known bugs have been resolved.

Now, needless to say, I am referring to the emulation of the base SNES unit. As many SNES cartridges contain additional coprocessors on their PCBs, there are still unplayable titles. So how can I claim compatibility of 100%? Because I don't consider special chips inside game cartridges as part of the base SNES hardware. I realize that many people enjoy these games, and I do actively attempt to emulate as many coprocessors as possible (six are supported thus far). However, coprocessors such as the SuperFX and SA-1 continue to pose very significant challenges.

So, after nearly three years of development, I've finally achieved my primary goal. But it wasn't a complete victory ... I've learned a lot over the years. Emulation accuracy is not black and white -- there are heavy costs to pay and forced tradeoffs to achieve it. I no longer believe there is only one absolute path for emulation, as I did in 2004.

So does this mean bsnes is now perfect? Of course not. There are many technical details that are not emulated correctly. This also does mean that there are no bugs, merely that there are no bugs that we are aware of. While absolute verification of 100% compatibility is obvioulsy impossible, even by actually beating every single game from start to finish, this very well should be the first time any SNES emulator could claim zero known bugs with all known games tested. I very much expect this announcement to entice many new users to begin actively searching for bugs, in an effort to discredit my above claim. My response? Go for it! I would very much appreciate any and all discovered bugs to be posted here, so that they can be verified and addressed.

One major thing that needs to be said, is that there consists of one major hack in all SNES emulators, including bsnes: the use of scanline-based PPU renderers. This necessitates global hacks in all emulators to minimize their inaccuracies. I was going to write up a very long post here, going into specifics, but I've decided an article would be a better place for that. I will hopefully be writing up this article in a few days to post here.

In the meantime, one very important issue does need to be addressed. This version fixes a bug in Uniracers 2-player mode, where the game writes to OAM during active display. Like other PPU global hacks, Uniracers required a special consession. But because this hack only affects one game, it can very fairly be seen as cheating. Suffice to say, bsnes does not contain a game-specific hack, and the change made to fix Uniracers affects all games, but I do still very much consider it to be a hack. The fix I have added is quite literally and honestly more accurate than the behavior of bsnes v0.021. Before, writes to OAM and CGRAM during active display went where a programmer would expect, which would cause bugs when ran on real hardware. Uniracers is the only game known to do this, and it is very dangerous to do so. The writes do go through, but not where one would expect. The access address basically changes as the screen is rendered. With a scanline-based PPU, it is not possible to emulate the individual steppings of the PPU, as there is not enough precision. Further, the entire SNES emulation community has virtually no information on how active display OAM and CGRAM writes work. Now, as Uniracers is the only game known to do this, I had the choice of either intentionally remapping the writes to an arbitrary location, or change it to the address Uniracers expects. Neither would be more accurate than the other, as both are completely wrong from a haradware standpoint. So the decision was to either fix Uniracers and deal with some calling it a game-specific hack, or to leave it broken with absolutely no gain to accuracy. Rather than decide for myself, I asked those who have supported me over the past three years for their opinions. The decision was unanimous to fix Uniracers. You can read the discussion, along with a more technical explanation of the issue, here. I will be addressing this topic in much greater detail in the article I will be writing up shortly.

Changelog:
• Fixed buffer overflow that was manifesting as corrupted tiles in Lemmings 2
• OAM and CGRAM addresses are now invalidated during active display, however the algorithms for how this address invalidation occurs is currently still unknown, so reads/writes are mapped to static addresses for now
• Re-added cheat code editor.
• Windows only: keypresses when main emulation window is not active are ignored once again

bsnes Official Site
bsnes 0.022
 

Featured Content

Spotlight On Refraction
Spotlight interview with the talented developer Refraction who is part of the great PCSX2 development team.


File Releases

ScummVM 0.11.1
ScummVM is a collection of interpreters, capable of emulating several adven ...

NeoRaine 1.0.4
A NeoGeo CD emulator built upon the Raine engine.

clrmamepro 3.109
ClrMamePro is a so-called ROM-manager. If you use M.A.M.E. you know the pro ...

Mednafen 0.8.7
Mednafen is an NTSC and PAL NES and Famicom, GameBoy, GameBoy Color, GameBo ...

SSF 0.09 alpha R2
SSF is a Sega Saturn emulator for the Windows operating system.


Latest Forum Posts

Who wants to help wit ...
Last Reply: Richard42
Replies: 118

Will anyone ever take ...
Last Reply: Viper187666
Replies: 0

Mupen64 0.5 source co ...
Last Reply: Viper187666
Replies: 27

What happened to the ...
Last Reply: Viper187666
Replies: 2

Sin and Punishment, b ...
Last Reply: cerebus5
Replies: 18


Latest Reviews

NDS: Hotel Dusk - Room ...
Created by WhiteX

NDS: Elite Beat Agents
Created by WhiteX

NDS: Castlevania - Por ...
Created by WhiteX

NDS: Final Fantasy 3
Created by WhiteX

NDS: Need for Speed: C ...
Created by WhiteX


Support Guides

Nintendo DS Homebrew.
Created by WhiteX

PSX Plugins: Lewpy's Gl ...
Created by Dark Watcher

PSX Plugins: P.E.Op.S S ...
Created by Dark Watcher

PSXeven
Created by Dark Watcher

Zsnes
Created by Gent


Our Affiliates

AEP-Emu.de
DCEmu.co.uk
DW Console History
EFx2Blogs
EmuHelp.com
N64 Emu Support Centre
NGEmu.com
PSemu.pl
VG-Network.com
VT Emulation.net


11,760,572 Visitors To The Emulation64 Network

Powered by EF-CMS © 2002 - 2006 www.emulation64.com