How SNES emulators got a few pixels from complete perfection
arstechnica.com
arstechnica.com
In the off chance anyone is able to help with this, I've set up a Discord channel (#ars) for coordination here: https://discord.gg/Fx7TfKh
Every member of the bsnes-emu project is on said server.
Thanks so much!
You've probably done that already, but I figured it was worth a shot. I'll update if I actually get a response.
I imagine that the official documentation was leaked rather than publicly released. Nintendo wants to make money selling re-releases of classic games, so they are extremely unfriendly towards emulator developers. Just look at the all the propaganda on their corporate website: "The introduction of emulators created to play illegally copied Nintendo software represents the greatest threat to date to the intellectual property rights of video game developers [...] Such emulators have the potential to significantly damage a worldwide entertainment software industry which generates over $15 billion annually, and tens of thousands of jobs." [1]
[0]: https://archive.org/details/SNESDevManual/mode/2up [1]: https://www.nintendo.com/corp/legal.jsp
So Nintendo doesn't have much to lose by letting the few geeks that want perfection for perfection's sake have it.
I think it's not that easy. Not that corporations like Sony are necessarily lacking, but the greatest emulators are works of art, some masterpieces of reverse-engineering.
The truth is that the amount of work and dedication that goes into a great emulator, with all the quirks and ad hoc settings for the whole library... no corporation on Earth can get that within months, it's actually a textbook example of the Mythical Man-Month (you need a few "hotshots" that will give their life for years to reach that level of refinement, you just can't hack it with a team of 10x averages without the heart that goes into it).
And even if you could, it's ridiculous cost versus 'free'.
Sony did the right thing by crediting them explicitely in-GUI. It's a classy move. There's a certain school within Sony that's extremely friendly to open-source, I surmise it's the historical engineering ethos of that company that hasn't entirely left their premises— in some buildings, some labs, the Sony-spirit of old is alive and kicking, e.g. their Sailfish-OS friendly phones (i.e. open-sourced drivers for these models, fully rootable etc).
It can and has been done. Have a look at "Connectix Virtual Game Station"[1]. It's a commercial prodcut that played virtually every PS1 game flawlessly on a 233MHx iMac. I spent thousands of hours playing games on that thing, and glitches were very rare in a huge range of games, even the most demanding like Metal Gear Solid.
Jobs even demoed it on stage.
[1] https://en.wikipedia.org/wiki/Connectix_Virtual_Game_Station
Which is essentially the point of re-releasing that, or selling old Nintendo games on the Wii/Switch market -- easy cash grabs with little overhead effort.
If they give up and give assistance to emulator devs, there's no going back on it.
https://webcache.googleusercontent.com/search?q=cache:B094-P...
>Today, SNES emulation is in a very good place. Barring unusual peripherals that are resistant to emulation (such as a light-sensor based golf club, an exercise bike, or a dial-up modem used to place real-money bets on live horse races in Japan), every officially licensed SNES title is fully playable
I had to look up the 'dial-up modem' reference - apparently it's a Japan-only peripheral called the "Famicom Network System" that did in fact have software available that allowed for bets to be placed on live horse races.
https://en.wikipedia.org/wiki/Family_Computer_Network_System
(There is a note that there were remakes of the horse race betting software for SNES and Dreamcast)
That Wikipedia link says that the Famicom (NES) was in 37% of households. Nintendo only shipped 130,000 modems, a tiny percentage of the total Famicom units sold.
https://segaretro.org/Telebradesco_Residência
https://www.sega-brasil.com.br/Tectoy/Telebradesco_Residenci...
https://www1.folha.uol.com.br/fsp/1995/3/22/dinheiro/26.html
It was a Sega Mega Drive and a PC.
I beg people to use e-fax solutions if they insist on using fax at all, but there are so many damn human macros out there who learned how to do something one way and totally break down if you try to make them do something different.
Annoyingly while most modern fax machines are also network printers and support email in both directions, the majority do not provide any way to configure a mapping so that a user can type in a number like a normal fax machine and the machine will convert it to the required email format for an e-fax service. This would be so easy and solve so many problems.
Similarly you could have some shim code for the online games like the horse race one that talks to some community run server, re-enabling a new kind of net experience.
One could imagine, for instance, connecting an actual USB barcode reader to emulate the Barcode Battler, or providing a text box to hand-type a barcode number.
I don't see anyone actually bothering to simulate the entire horse betting network complete with virtual bank accounts, but if you're really interested, Raphael Assenat reverse engineered quite a bit of the JRA-PAT system for fun here:
https://www.raphnet.net/divers/retro_challenge_2018_09/index...
It's a pretty good read as well!
https://zelda.gamepedia.com/BS_The_Legend_of_Zelda:_Ancient_...
https://en.wikipedia.org/wiki/Satellaview_games_from_The_Leg...
The community is going to get there eventually without their help, but they could probably make it much faster and cheaper to get there.
Doubly so because they sell products which almost certainly benefit from these open source emulation efforts.
That’s interesting, I wonder if that is the case the for the PS1 emulator on the PS3/Vita used for the PlayStation Classics titles
They simply reused pops from the psp, with no major changes, so it still ran on a mips system.
https://www.eurogamer.net/articles/2017-01-18-did-nintendo-d...
The company is extremely micromanaged and pedantic, and this is not the kind of thing that could possibly be overlooked at Nintendo.
> Older versions of the iNES emulator ignored bytes 7-15, and several ROM management tools wrote messages in there. Commonly, these will be filled with "DiskDude!", which results in 64 being added to the mapper number.
Specifically, the "iNES header", originally created by Marat Fayzullin for use with his NES emulator, iNES[1].
If you look at the iNES manual[2], way down at the bottom in the changelog for version 0.7, you can see "Sound support completely rewritten, thanks to Kawase Tomohiro".
If you search the Internet for Kawase Tomohiro, you'll find[3] somebody by that name seems to work for Nintendo as a programmer, and in particular worked on the NES emulator used in 2001's Animal Crossing.
Of course, that's not conclusive evidence, but given the competing claims "Nintendo, a notoriously uptight company, has been downloading pirate ROMs to sell" versus "Nintendo hired a pioneer of NES emulation to work on their emulators, who kept using the tools and formats he was used to", I feel like one is more likely to be true and the other is more likely to get ad impressions.
[1]: https://fms.komkon.org/iNES/
header-bourne SNES malware? Probably not, but one can dream.
Gee. Maybe they should've put it in the form of a haiku? :)
I wish people would point that out more often when there's discussion around backdooring systems to allow for government surveillance. With how quickly keys got out for HDDVD and Blu-ray, there's no reason to thing something similar wouldn't happen with a government backdoor, and that's if it's not for sale on the dark web before it goes public.
Actually refutes your claim that an AES key can itself be covered by copyright.
The given reason to attempt to have it removed was not that copying the key itself violates copyright, but that it was used to circumvent copyright-protection mechanisms.
The existing emulators are more than good enough to be replacements to the commercial offerings (and in most cases, a lot better... e.g. the lookahead rendering).
While what you suggest might be a factor in their actions, I don't think it's an especially good one.
As far as rolling their own emulators, I don't doubt that they do. But I do doubt that they're doing so without researching the existing open source emulators.
Wouldn't it be possible to reverse engineer these emulators? Maybe the official Nintendo SNES emulator has all the right S-PPU1/2 values in it.
What happens today is creators want to strike gold once and then enjoy a lifetime of royalties for themselves and their children. When was the last time something entered the public domain? Probably in the early 20th century. Public domain might as well be a forgotten footnote of history. There's no reason for the public to recognize copyright as legitimate when it's being systematically robbed of its rights.
What if the copyright is owned by a company? I don't know. Do they have to go bankrupt for the 70 year count to start? In any case, they'll probably just lobby for even more extensions before their terms run out anyway.
That was done with the NES too:
What is this emulator doing that causes it to emulate so slowly? Even if it's doing perfect emulation, are modern processors still so slow that they can't emulate a couple 35-year-old processors at something closer to real time?
https://en.wikipedia.org/wiki/Integrated_circuit_layout_desi...
I highly recommend anyone with an interest in games to grab a bunch of ROM packs (including Japanese exclusive games and fan translation hacks) and spend some of your quarantine on the SNES.
They don't need to remaster or remake anything, just release it as is, and I'm sure it would sell well. I would anyway prefer the original with original graphics and soundtrack to a 3D remake or similar.
(Yes, I know this is quite different than having it on the Switch, but I mentioned it in case you have a DS and wasn't aware.)
A few other SNES recommendations from the top of my head:
• EarthBound (aka Mother 2, another popular RPG with fun music. Combat may feel too grindy/frustrating though)
• Super Gussun Oyoyo (Lemmings + Tetris)
• Live A Live (RPG where you play characters from multiple timelines)
• Pop'n TwinBee (shoot-em-up and platformer with very colorful graphics in a pastelly palette)
• Terranigma (RPG spanning multiple eras)
• Treasure of the Rudras (Japan-only RPG with fan translation)
• Bomberman (hilarious couch PvP)
• Pocky & Rocky (cute shoot-em-up with a Japanese folklore theme)
• Yoshi's Island (one of the best platformers)
There were a bunch of other obscure titles with unique gameplay mechanics that I can't recall the names of at the moment. Will have to comb my ROMs folder.
I'd like to get them to play A Link to the Past and Chrono Trigger, but I don't think that they're patient enough. Still, beautiful games with great soundtracks.
Exactly! and even more so with the filters in modern emulators. Along with the funky cool music, many SNES games are easily on par in the looks department with most mobile games, so kids won't be turned off by the first impression or anything.
If you have kids sitting bored at home, consider repurpos an extra/older PC or Mac [0] as a pseudo-console + emulator for the SNES (and other platforms).
Then anyone who has the ability to start converting that to VHDL or any sort of identification of components can start on part of it and contribute to the repo.
With some started, it may be possible for less expert people who have a little bit of VHDL or whatever to contribute to some degree with expert supervision.
I've got retroarch v1.3.6 on Stretch on aarch64. It has crashed with a "file not found" and "bus error" for bsnes. Higan segfaults when I try to run it.
It's a lot, yes. Not practical for these purposes. But there's a reason we don't use 64bit encryption.
64bit encryption is easily brute forced.
If you want to keep it in a table, sure that's 18 exabytes (multiplied by element size in bytes), but that's before compression. I imagine multiply output compresses very well. And that's a lot of RAM. But not anywhere near "heat death of the universe" amounts.
I bet FAANG easily have that much RAM. Each of them.
https://arstechnica.com/gaming/2018/11/sony-using-open-sourc...
I believe the consensus is that the NES classics on GBA were done using an open source emulator. The emulator itself was liberally licensed and I think someone asked the author's thoughts and they were 'ya, that's half the purpose of the license. i don't care'
Or, to put that another way: there's no real difference between a bug introduced by wrapping a game in an imperfect emulator, and a bug introduced during recompilation/porting/remastering of the game. Either way, you now have a new "variant" of the game with its own bugs, but one which is also a canonical, supported release of the game.
Interestingly, sometimes—because of one of these slight variances—the fastest [and so preferred] version of a game to speedrun, is a Nintendo-sanctioned emulated (e.g. Virtual Console) release of the game. It says something important, I think, that these releases of the game aren't automatically shunned by the speedrunning community, the way that runs of the game under an arbitrary emulator on someone's PC would be; but rather are just treated as their own separate category-set, in the same way the speedrunning community differentiates different region releases, or version releases, or port/remaster releases.
Not that that necessarily has anything to do with bugs. Some VC games simply have reduced lag when a lot is loaded, because they throw somewhat more power at the game than the original console could.
One more interesting difference, that you'll see with N64 games specifically (e.g. VC Paper Mario on the Wii) is that the original console will hard-lock in places where the VC version will just keep on truckin' (presumably because it has access to more memory, or the emulator just discards crazy out-of-bounds writes, or because the emulator treats open-bus address reads differently. Something like that.)
Anyway, that means that there are glitches that can be used save time on the VC version, which in some sense don't exist at all on the original version of the game, because they're gated behind a fault that the original hardware can't get past.
You'll see the effect of this in gaming in the forms of e.g.:
• The https://www.no-intro.org project, whose goal is to curate a database of hashes of "canonical ROMs" (i.e. ones that are don't have demoscene "intro" greetz; but also which don't have the extra headers that some copiers add; and, obviously, which aren't bad dumps.)
• The policies of some emulators (e.g. MAME, Higan) to replace, whenever possible, High-Level Emulation code that "works perfectly" (i.e. matches console output on every frame for every known software title!) with Low-Level Emulation, which requires a BIOS/firmware dump of a chip to run. The goal in these types of fixes isn't to run existing games, but rather to make the emulator match the behavior of the hardware for running even novel or previously undiscovered games, such that it can be a useful tool in future conservation efforts, when the original hardware is long gone.
• The file-formats of some emulators (again: MAME, Higan) which keep individually-dumped coprocessor ROMs as separate files in a software title's archive file/folder, each with their own metadata; rather than inventing custom merged-binary file-formats for each system. This both allows future archivists to easily re-verify that individual dumps are correct; to replace bad dumps with better ones without invalidating the hashes for other ROMs that make up the same software title; and, in theory, this provides a (coincidentally machine-executable) schematic of the software-title-as-hardware-system, which could be used to reconstruct it wholesale in a future where all existing hardware was lost.
• The transition from the archivists at Archive.org preferring to see Apple II disk images in raw bit-dump (DSK) file-format, to wanting them as flux-trace (https://applesaucefdc.com/woz/) files, which in turn means that copy-protected games can now be preserved in their original, copy-protected state, rather than first needing to be cracked.
If the publisher modifies the work particularly in a manner devoid of creative intent—such as unintentionally omitting page 527—the modification cannot possibly be considered canonical. Imperfections in an emulator are not the work of the original author and they're certainly not any form of artistic intent.
Many people who stream older console games on twitch seem to use them as well as people who like to play romhacks.
This wasn’t possible for N64 titles until relatively recently[1]. Interestingly, the method of cracking N64’s boot security sounds rather standard when compared to the 3DS and switch glitching[2][3].
1. https://youtu.be/z5uOK0nR934
https://gamesconnection.co.uk/blogs/games-connection/what-is...
In the past, even when the console was still on sale, there were game backup devices.
Dolphin is also nowhere close to the accuracy of emulators like bsnes. There are many games that plain don't boot, mysterious bugs that have resisted debugging for years and years (some game breaking, e.g. if you have too many characters unlocked you cannot finish Fire Emblem Radiant Dawn on Dolphin), etc.
Apart from the latest consoles (the Wii U and the Switch), the worst-emulated Nintendo console is the Nintendo 64, which also had the strangest hardware (RAMBUS RAM, a general-purpose GPU, etc.)
It's called CEN 64 and can be found at https://github.com/n64dev/cen64
Lots of work that still needs to be done but it's quite impressive!
1: Sound was eventually implemented, I don't remember if it was before or after I upgraded to a Pentium though.