Man, that's an old article now, heh.
In case it's not clear from the article, I only really promote accuracy for developers and enthusiasts with fast PCs (if you have the power, may as well use it to avoid a bug you may not know about.)
> I have my Steam Big Picture mode set up so I can select individual emulator games from it that starts in full screen and I can close them usually with a hotkey from my iPhone with MobileMouse
If you go to %appdata%\higan\settings.cfg you can set Video::StartFullScreen for that. It's not a GUI option because if someone doesn't know what key is bound to exit full screen, they'd have trouble closing the emulator.
Go to Settings->Configuration->Hotkeys and you can bind a key to exit with.
> I didn't even know Bsnes had changed it's name, learn something new everyday.
higan is the name of the multi-emulator UI. The SNES emulation is called bsnes.
Much like how Mednafen uses FCE Ultra for the NES.
> its the last version before byuu went crazy and started screwing around with the file system. higan takes apart roms and leaves behind the bits on your pc, bsnes doesn't.
If that surprised you, then you've never paid attention to my goals from the very beginning.
This would have been there from day one, but I had to buy every SNES game ever made, and dump them properly myself, to get full memory map information. And I raised money and paid a guy $3000 to dump the firmware out of the SNES coprocessor chips. This resulted in extra files, a single ROM image wasn't enough. So I put the files into folders now that I have all that mapping and extra firmware data.
It's the same thing MAME/MESS does, but I put the files into a library so that my emulator doesn't require a way to write save files back into ZIP archives, and the core doesn't have to extract compressed data.
If you're throwing a fit that it eats up a whole ~3GB for the entire SNES library (and only then if you actually load and play all 4,000 unique images dumped. For most, it'd eat up maybe 100MB for all the games they actually play), then well ... yeah. Sorry, you're out of luck there.
> It's not very intuitive to use though, so a lot of people stuck with earlier versions.
With the latest version, choose "Load->Import Game" and you can pick any old .smc, .nes, .zip, etc file and it'll do the conversion for you and start playing. Use only that option to load games, and you can pretend all the new library stuff doesn't exist, if you want.
> ...Is Speedy Gonzales: Los Gatos Bandidos still unbeatable in every emulator other than higan?
At this time, yes. But trust me when I say you aren't missing much.
> I remember people had loads of issues with SMRPG freezing as well.
ZSNES v1.51 (from Jan. 2007) completely broke SA-1 emulation, used by SMRPG, etc.
They work in ZSNES v1.42, which a lot of people still use.
> Love how the project has expanded to include a lot more systems.
Neat, thanks. You're probably the first person who's ever said that.
Most people want it to remain SNES only, but I like having one program to do many systems with the same UI and configuration.
> I think its time for people to know more about this underrated emulator.
SNESGT is:
* closed source
* Windows only
* discontinued
Snes9X v1.54 is more accurate, open source, and runs on practically anything.
> No matter what, you're either going to have to live with dropped audio frames or dropped video frames.
I have pretty sophisticated audiovisual synchronization. For many, bsnes is the only emulator they can get perfect sync on. But it's a pain to configure (you have to time your monitor and sound card rates), and it doesn't always work (Aero tends to screw with it.)
But getting absolutely perfect video+audio sync 100% of the time is impossible. These systems run at different refresh and sample rates than our desktops. You can easily sync to one or the other, but syncing to both causes any discrepancies to accumulate over time.
Most emulators silently drop one frame every few seconds. Mine tries to resample audio enough that the relative video to audio refresh rate matches the original system you are emulating, which is a lot more complex, but there will always ultimately be rounding errors. On my system, I can go about 30 minutes between one dropped frame.
> On top of that, all emulators have a lot more input lag than the native hardware itself.
Yes, they all do. In the best case (CRT + serial gamepad, running in DOS), you can push it down to 60ms or so. Worst case (LCD + compositor like Aero + USB gamepad), you will end up with 150ms or so of latency.
> There's been two years worth of beta's since Snes9X 1.53. Dunno how improved it is over 1.53
Snes9x v1.54 uses my audio processor emulation now, it should sound as good as bsnes. But its CPU core isn't cycle-based, so you'll still have issues in a half-dozen obscure games; and its PPU is kind of dated, so there'll be a few small rendering issues, like hires blending details in games like Marvelous and Bishoujo Janshi Suchie-Pie.
> Der Langrisser is unplayable on other emulators? That's news to my much younger self who played the hell out of it on ZSNES many years ago.
Yes. If you don't disable stereo sound, a KON/KOFF timing bug will eventually lock up the audio. For some strange reason, fast-forwarding in ZSNES exacerbates this problem. Just gotta be patient though, the bug was only first reported to their team in 1998.
> Has BSNES improved on the specs requirements at all now that it is "Higan?"
No, it gets infinitesimally slower with each release, as new behaviors are emulated. It almost never gets faster.
> Is there any SNES emulator that runs without input lag?
That's impossible. The lag comes from using a multitasking OS, LCD panels with upscaling/filtering/OSD chips built into them, USB controllers with 50-100ms polling rates, etc. The emulator also adds 16ms of lag to buffer an entire video frame, and 20ms for audio buffering to your sound card.
The input lag you mention is a combination of video/audio and input lag. Your input is accepted before you can hear it or see it due to video and audio lag.
> The ignorance of the emulation community is just sad.
I was too worked up in getting everyone on board.
It's only natural that only enthusiasts care about minute details like the Zelda 3 triforce rotation speed being twice as fast as it should be.
Same way only car enthusiasts care about muscle cars, only audio enthusiasts want FLAC copies instead of MP3s, only movie enthusiasts will demand Blu-Ray instead of Netflix streams, etc.
The costs increase exponentially as the benefits fall exponentially.
> I know that byuu wasn't really writing BSNES with Windows 7/8's DWM in mind, so that could be part of my issue.
I want to add a fullscreen exclusive mode, but I have to target D3D 11 for all the DWM APIs, and MinGW doesn't have headers that can compile D3D 11 apps yet. And it'd also make it impossible to load higan on Windows XP (which stops at D3D 9) if I did that.
> How rendering works on the NES is fucking crazy
What's not to love about loopy_t/v ?
> byuu's failings in these regards were almost completely due to his personality and execution and not because of some grand conspiracy to snub his technical accomplishments.
Eh, Linus Torvalds and Theo de Raadt are opinionated assholes, too, and people love Linux and OpenBSD.
It's more that what I'm doing just isn't that interesting to the majority of casual gamers. It's niche stuff. But yeah, my attitude hasn't been the best either.
> With ZSNES and the other hacky emulators, you're programming to the emulator, not the system.
And the worst part are that there are hundreds of Super Mario World hacks that only run in ZSNES.
When you point out that they won't run in Snes9X or on your flash cart, you're met with derision. Like you're the odd one for expecting an SNES game to run on, you know, an SNES.
> I think that if your project is designed to have an audience, you should make it conform to reasonable standards of the community
I agree. I was quite pissed about things like the Firefox AwesomeBar, Windows Metro, Gnome 3, etc bucking what users wanted. And yes, I've tried to like them all.
Up until three years ago, I added everything people wanted: 7-zip archive loading, multi-ROM archive loading, all of the common software video filters (2xSaI, HQ2x, NTSC, etc), movie recording, pretty much anything requested. It turned into a big mess that I couldn't maintain by myself, and people still complained about it anyway.
So three years ago, I pretty much said, "look, this is no longer a public emulator", which I stand by today. I'm writing this entirely for myself. I'm not going to be a dick and not release it at all, because some people do enjoy it.
But I'm also no longer catering to what people want me to do with it. I'm making something I am proud of, I'm not trying to be the most popular SNES emulator.
> with none of Byuu's awkward ROM silliness.
I do wish people were more open to at least trying new things first.
The status quo is what is silly. We took NES carts, made up a silly 16-byte header that only covered ~80% of how carts actually worked and in weird/vague made-up ways like mapper numbers, and stuck it on top of a file with all the ROMs concatenated into one big blob, then we stuffed that into a ZIP archive. It's so bad, that all the popular NES emulators have internal databases that say "if game checksum == this, then ignore the header because it's wrong, and do this instead." This is considered normal, but only because it's the most popular option.
Do you play your audio CDs inside ZIP archives, and think it's crazy that people might want to put each separate song into a folder? Do you store an entire photo album into a single file with no directory structure? Do you build computer programs from ZIP files full of source code, or do you extract the source first? So why is it okay for video game images to do this? Because you're used to it. Nothing more, nothing less.
Operating systems invented folders for a reason: as a way to store multiple files in a sane manner. Compression like ZIP was meant as a way to distribute files. Safari on OS X actually auto-decompresses any ZIP you download, because you aren't meant to keep files in archives. Notepad doesn't load text files inside ZIPs, Photoshop doesn't load PNGs inside ZIPs, Windows Media Player doesn't load AVIs inside ZIPs. Why should emulators? Moreover, mine *does*, it just extracts it for you when you do.
Your typical emulator will have a "paths" configuration, where you can choose which folder to store your ROMs, your save RAM files, your save states, your cheat codes, your screenshots, your BIOS files, etc etc. Purging a game from your collection, or backing it up, requires going into all of those folders, and finding the file name. Renaming the game means you have to change the filename prefix in all of those paths.
My design puts all files for a certain game into the same folder, with no path configuration necessary. One folder == one virtual "cartridge" == one full game. You can then load and play that folder directly. Just like how OS X applications are actually folders full of files. You can rename the game easily. You can copy it, move it, share it. Whatever.
Instead of:
roms\zelda3.sfc
saves\zelda3.srm
cheats\zelda3.cht
You have:
Legend of Zelda - A Link to the Past.sfc\
-> program.rom
-> save.ram
-> cheats.xml
Basically, you are sorting your game files by file type. I am sorting them by ... well ... games.
This also lets me store a separate XML file to describe the chips and layouts of game PCBs. No need for iNES zaniness, and extending/modifying this doesn't change the game's checksum anymore.
Why is that so crazy, other than "because it's different"?