Ask Slashdot: Understanding the SNES? 157
An anonymous reader writes "As a product of the 90s I grew up loving the classics that kids today know about from Wikipedia and pop-culture references. Games like Super Bomberman, Zelda: A Link to the Past, Donkey Kong Country I and III (II was a sellout, come on) are the foundations of my childhood memories. Now, though, as a fourth-year electrical engineering major, I find myself increasingly impressed by the level of technical difficulty embedded in that 16-bit console. I am trying, now, to find a resource that will take me through the technical design of the SNES (memory layout, processor information, cartridge pin layouts/documentation) to get a better understanding of what I naively enjoyed 15 some years ago. I am reaching out to the vast resources available from the minds of the Slashdot community. Any guide/blog series that you know of that walks through some of the technical aspects of the, preferably, SNES (alternatively, NES/Nintendo 64) console would be much appreciated."
superfamicom.org (Score:5, Informative)
take one apart? (Score:5, Informative)
you're a 4th year EE student, why not just take one apart?
Check out Byuu's stuff from BSNES. (Score:5, Informative)
http://byuu.org/articles/
Byuu is the guy who wrote bsnes, which is a 100% accurate SNES emulator written specifically to emulate it as close to the hardware layer as possible for the sake of preserving the system.
SNES9x source code should help (Score:4, Informative)
The source code to a very good SNES emulator is available here: http://snes9x.ipherswipsite.com/ [ipherswipsite.com]
bsnes, the only 100% accurate emulator (Score:5, Informative)
Even aims for cycle accuracy.
http://byuu.org/bsnes/ [byuu.org]
Re:Zophar.net (Score:5, Informative)
Be careful. A lot of that stuff at Zophar's Domain is way out of date. Much of it is based on speculation or trial-and-error emulator testing or is flatly incorrect.
Start out with the Gameboy. (Score:5, Informative)
Of all systems I looked into, I found the gameboy the easiest to understand. The underlying CPU is quite simple. The LCD display is quite simple to understand, there are not a huge amount of complex registers to understand, and it's not that timing critical. (Unlike the NES, which depends a lot on instruction timing)
Dev manual (Score:2, Informative)
I have programmed an assembler and written my own games for the SNES. I use this manual quite often:
http://www.romhacking.net/documents/226
It's a leaked dev manual. It doesn't have everything, but it's a great resource.
Re:Check out Byuu's stuff from BSNES. (Score:5, Informative)
Also from Byuu: an article at Ars Technica about accuracy in SNES emulation [arstechnica.com].
Re:It's a great design (Score:5, Informative)
If anyone has an NES with the blinkies, you can disable the CIC by snipping one pin [imageshack.us].
vsync is NOT a "needed part of accurate emulation" (Score:4, Informative)
vsync might be nice for the user experience, and I'll be the first to admit that bsnes does not have all of the little user conveniences that some older (faster, less accurate) emulators have.
I personally prefer to still use a many-years-old version of ZSNES for actually playing emulated games.
But in terms of accuracy in its emulation of the SNES hardware, BSNES is unbeatable. Byuu-san was always disgruntled about the lazy approach that other emulator authors were taking, towards accuracy--using known-inaccurate techniques and lots of game-specific hacks to cover up any problems--but several years ago he decided to do something about it, and since then he has emerged as one of the most dedicated and careful (and innovative) of the small group of world-class developers reverse-engineering the behaviour of the SNES. Byuu has made literally dozens of unique findings about tiny, obscure behaviours of the SNES hardware--in many cases even things that *no known game even depends on*, but he spent the time and effort to devise theories and write tests and do experiments in order to get a deeper understanding of what was going on. And then incorporating those findings into BSNES in the clearest and most accurate way possible.
The result of this years of super-human effort, is an emulator (BSNES) that is a lot slower than certain other emulators, but also much more accurate in the precise details. It can run every known SNES game (thousands of them) very accurately, with absolutely NO game-specific hacks in it. Which is an amazing accomplishment, and a valuable resource for others to learn about SNES programming (either emulators or games), and I am positive that someday, BSNES will be a key piece of efforts to preserve the history of SNES games so that future generations can learn about them and play them.
Re:Zophar.net (Score:2, Informative)
Correct - at least one document on Zophar's is wildly inaccurate (I know because I wrote it!)
Re:take one apart? (Score:5, Informative)
The SNES does not have high-speed digital signals. The whole thing is clocked at 3.58MHz. This isn't like trying to probe a SATA connection.
Sorry, poor choice of words. Regardless, he'll need a logic analyzer, and those are a lot less common than oscilloscopes. He could probably find a cheaper one on eBay if he really wants to reverse-engineer the hardware.