9 ms·
Project-Nested: An NES Emulator Running on the SNES
- torgoguys 5y agoI haven't tried this, but there is so much awesomeness in this idea. I wonder how many layers down one could pull off in the Nintendo line, even if you had to skip generations. For example could one do a Wii emulating GameCube emulating a SNES (skipping N64 as presumably too hard), emulating a NES.
- simcop2387 5y ago> Wii emulating GameCube No need for this, it's natively supported and runs game cube games (and with the right setup, GC homebrew)
- j1elo 5y agoThis is because largely speaking, the Wii is the same hardware than the GameCube (but with improved speed). That's why the Dophin emulator, originally a GC emu, was able to extend easily to also cover the Wii.
- xerox13ster 5y agoHi friend, it's same as, different than.
- monocasa 5y agoArguably the Wii is emulating parts of the GameCube. I was pretty sure that certain MMIO banks on the GameCube were being emulated by starlet rather than having hardware blocks like the GameCube probably did. That's how custom MIOS hacks floating around the internet allow for USB controllers and mass storage from GameCube games.
- torgoguys 5y agoRight. That's why I didn't skip that generation in my example. My hunch was that as a general rule for those earlier generations that it's not possible to emulate the immediately previous generation unless there was special support, but maybe you could go back 2 generations. This project being an exception. That's what lead to the Wii -> GameCube (similar hardware) -> [not N64] SNES -> NES (demonstrated by this project) example. Heck, if console manufacturers kept two separate branches "every other generation" emulation (odd/even generations) and then made sure each console generation had extra hardware to play the immediately prior generation's games (as some sometimes do), then every generation could play every other generation. That would be nice for players, but maybe not nice for the companies though.
- hnlmorg 5y agoThe Wii already runs GC games (even centres the GC's miniature DVDs if they're loaded into the Wii's slot off centre), and supports GC controllers and GC memory cards. https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse3.mm.bing.net%2Fth%3Fid%3DOIP.xoemq7W5iY2P3pfPsSiBQwHaEm%26pid%3DApi&f=1 https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2F...
- pezezin 5y agoThe GameCube could emulate the N64, that's how games like Ocarina of Time were brought to the GameCube. Remember that the first N64 emulator, UltraHLE, was released in 1999 and could run on a computer less powerful than the GameCube: https://en.wikipedia.org/wiki/UltraHLE https://en.wikipedia.org/wiki/UltraHLE
- azinman2 5y agoThe readme is quite light on details. What is the performance? What’s the snes emulator.. is it this as well? Could this run on the real thing given it sounds .exe driven?
- hypertele-Xii 5y agoYes it runs on stock hardware. Near full performance.
- CyberRabbi 5y agoVery cool and something that has been in demand for many years. Ideally this would be bundled into the SD2SNES firmware so you could load NES roms onto the SNES. https://sd2snes.de https://sd2snes.de (it’s open source as well)
- raldi 5y agoThe reverse is also possible: https://youtube.com/v/ar9WRwCiSr0?t=17m https://youtube.com/v/ar9WRwCiSr0?t=17m
- derefr 5y agoI saw this mentioned by a YouTuber, who went on to say that many people believe that the SNES was originally intended to be backward-compatible with the NES. IMHO that's not quite right — there's a lot of simple things Nintendo could have done to make the SNES a lot more backward-compatible with the NES, that would have had to have been done right at the beginning (and so stuck around as additional evidence of this), just as the few places that do line up (e.g. controller read-out + MMIO address) were certainly done right at the beginning. Instead, I think what Nintendo was imagining, was that — as long as the NES and SNES were still both "alive" in the market concurrently — then companies would want to concurrently release both NES and SNES versions of their games. And, with some careful planning, development studios would be able to have a single 6502 macro-assembler codebase that compiled to either a NES or SNES target. Developers could either add MMIO address pokes / JSRs inside #ifdef-like macro structures; or just write two subroutines, one for NES and one for SNES, and then compile-time branch to determine which would get compiled in. This makes sense of where the NES and SNES line up in compatibility, and where they diverge: they line up where there's an obvious way to support both consoles with one block of instructions; they diverge where developers would have to write separate subroutines to support the different hardware anyway, so instruction-level / memory-map-level compatibility isn't so crucial. This seems so obviously "possible" (though definitely challenging!) that I've always wondered whether there are any games that are actual examples of this — where the game came out at the same time in both NES/FC and SNES/SFC releases, and binary analysis reveals that the majority of the game's engine code is shared between the two, with differences mostly in the subroutines/coroutines composing the "graphics engine", and in the static data. ————— On a separate note, I feel like it would be even simpler — and a lot more performant! — to ahead-of-time recompile a NES game to run on the SNES. The NES doesn't tend to do tricks with dynamic runtime code generation, so NES games are good candidates for being statically analyzed and transpiled. (And the SNES has such a similar architecture, that even those dynamic runtime tricks might map cleanly onto the SNES, too.)
- neuronexmachina 5y agoI'm also curious about how what architectural similarities there might've been between NES/SNES and Gameboy, since there were quite a few common releases.
- TillE 5y agoPretty cool, but it definitely can't quite keep up. Just tried the Legend of Zelda, and it lags with flickering horizontal lines (not drawing fast enough?) on both snes9x and original hardware (via FXPAK Pro).
- einr 5y agoJust to put the achievement into perspective, this is code written for a console with a 1.79 MHz 6502 running on a 3.58 MHz 65816 (a 6502 with 16-bit capabilities crudely bolted on) -- that it even runs anywhere close to native speed and with so relatively few bugs is a monumental achievement considering that even though the SNES will run 6502 code, the audio and graphics hardware, etc., are entirely different between the consoles and have to be emulated.
- dehrmann 5y agoI think my microcontroller class used a variant of the 68HC08. I didn't realize it's a cousin of the NES chip.
- ionwake 5y agoNo sure if this is the right place to ask, but are there any retro emulator setups which allow you to play 2 player games over the internet? Ive heard something maybe possible with retroarch but Im surprised there is no pi zero with an easy multiplayer setup yet ( for instance to play 2 player Mario Tennis on the Gameboy )
- hauxir 5y agosnes.party :)
- s_m_t 5y agoYes, but you need very good latency to the other player for it to work well. The typical setup is to use something like parsec where one person hosts the emulator and streams audio/video and the other person sends keyboard commands. You can add a small delay to the host to even things out but to properly account for latency is a major reverse engineering project which afaik off the top of my head has only been done for super smash bros melee
- jogu 5y agoYes, look into retroarch netplay. They have a rollback netplay implementation that works great from my experience.
- jsd1982 5y agoNot a general solution, but there are communities where we play ALttP in various multiplayer modes: https://discord.gg/AVQ2yKd https://discord.gg/AVQ2yKd https://discord.gg/rJ9n6rJb https://discord.gg/rJ9n6rJb
- poglet 5y agoretroarch netplay worked very well for me. Hosted a game on one PC, it appeared in the online game browser, joined it from the 2nd PC. In addition, it's very easy to have your rom inside the retroarch folder, then send the whole folder to another person / computer. That way there is no confusion about rom versions, in addition you can pre-configure the controls if the person you're sending the folder to isn't as tech savy.
- andrewmcwatters 5y agoSpent at least three years of development, but couldn't be bothered to spend 15 minutes to write up how any living soul would use it without downloading and compiling the project to see help text from the .exe.
- capableweb 5y agoIt's almost like the author of this project didn't spend 3 years on this for you, but for themselves...
- andrewmcwatters 5y agoIt's almost like the author published it on GitHub, where people expect a modicum of explanation as to how to get started with something. Weird. Wild.
- postalrat 5y agoDo people really expect that?
- anonydsfsfs 5y agoWhy would people expect such a thing from a personal project?
- syspec 5y agoI put everything on GitHub, with no expectation of ever releasing things, finishing them, or anyone using them. Epeople put things on GitHub because it's free and useful
- undershirt 5y agoIt converts an NES rom to an SNES rom. Here are the instructions from the source[1]: Step 1, click "Open Nes" and select a game. Step 2, (optional) select or create a profile. Step 3, click "Save Snes", a file will be created in the same folder as your Nes game. Step 4, play on Snes hardware or Snes emulator. Step 5, (Optional) click "Load SRM" and select the SRM file(s) generated by the Nes emulator, feedback will be saved to the profile so the game can run faster after repeating steps 1-4. [1]:https://github.com/Myself086/Project-Nested/blob/fc108119/Project%20Nested/Form1.resx#L121 https://github.com/Myself086/Project-Nested/blob/fc108119/Pr...
- deleted 5y ago[deleted]