Switch 2 Uses Emulation :p

  • Thread starter Thread starter Skeet1983
  • Start date Start date
  • Views Views 13,176
  • Replies Replies 54
  • Likes Likes 5
Well I'm by no means an expert, but I know that the two SoCs are not binary compatible, so there's definitely going to be some kind of low-level tech going on to keep performance going strong in Switch 1 games.
Right. As far as I know, the CPU is meant to be 100% compatible based on ARM's implementation of architectural profiles back with ARMv7. Switch and Switch 2 are ARMv8, the latter having various extensions. It's mainly the GPU, but it is still one-to-one vs one-to-many.
 
I actually thought DS and GBA games on the 3DS ran emulated, until I was proven wrong, lol.

All other game boys and SNES and NES are emulated though, if I'm not wrong.
 
Oh really. Pity

I've always wondered: If the hacking/modding community gets a hold of a dev kit, would that open up some better homebrews.

I just want a new music player with a visualiser like the PSP/PS3 did.
It depends, but not really - and with Nintendo you *really* don't want that. They are pretty aggressive with the lawyers. You *want* clean room homebrew SDKs as a starting point for a homebrew community.

Also, getting a devkit isn't *that* hard, depending on what exactly you mean by devkit.
Post automatically merged:

I actually thought DS and GBA games on the 3DS ran emulated, until I was proven wrong, lol.

All other game boys and SNES and NES are emulated though, if I'm not wrong.
Well, emulation is a spectrum. And it's worth keeping in mind that the definition is broad and can apply to a number of things. Even hardware implementations.
 
have you been living under a rock? theyve used emulation on every system since at least the n64
Uh no.

The Wii U ran Wii games, and technically even Gamecube, natively within a sandbox. PowerPC processor.

The 3DS ran DS games natively within a sandbox. As the DS did with the GBA. ARM processor.
No Nintendo handheld prior to the 3DS had an official emulator released for it.

The Super Game Boy (before the n64 yes i know) used a Game Boy CPU attached to a SNES cartridge. The Game Boy Player for the Gamecube also did this. Meaning the only officially released emulator on the Gamecube is probably in the Zelda rereleases.

Using a compatibility framework to run the games on backwards compatible hardware is not the same thing as full system emulation.
Therefore, they have not.

As for the implied argument that they were using open source emulators, I doubt they were doing anything like that until the Wii given how buggy early attempts at N64 were and how inaccurate they still are. Nintendo's emulators even today seem to be highly specialized towards specific games they test it with and follow a different pattern of development from the open source projects focused on general accuracy.
 
Last edited by bonkmaykr,
Uh no.

The Wii U ran Wii games, and technically even Gamecube, natively within a sandbox. PowerPC processor.

The 3DS ran DS games natively within a sandbox. As the DS did with the GBA. ARM processor.
No Nintendo handheld prior to the 3DS had an official emulator released for it.

The Super Game Boy (before the n64 yes i know) used a Game Boy CPU attached to a SNES cartridge. The Game Boy Player for the Gamecube also did this. Meaning the only officially released emulator on the Gamecube is probably in the Zelda rereleases.

Using a compatibility framework to run the games on backwards compatible hardware is not the same thing as full system emulation.
Therefore, they have not.

As for the implied argument that they were using open source emulators, I doubt they were doing anything like that until the Wii given how buggy early attempts at N64 were and how inaccurate they still are. Nintendo's emulators even today seem to be highly specialized towards specific games they test it with and follow a different pattern of development from the open source projects focused on general accuracy.
plus the DS, GBA, and GBC never use never used emulators either, so i really don't know where they got that from.

also besides the GCN Zelda rereleases animal crossing also had it with the NES games
 
  • Like
Reactions: bonkmaykr
I was under the impression these were ports
yeah they're emulated, the save file containing the rom (.gci) must be structured in a specific way for it to work, specific strings, byte values, checksum flags, and nintendo's own meta tag data are important for a rom to function in the emulator, it's often hailed as the best official NES emulator due to how close it is to replicating real NES hardware

if it wasn't evident by the abundance of things needed for the ROM to even work but this is more for those trying to inject ROMs into the game that aren't already in, going further on that topic would be a rabbit hole so i'll leave it there.
 
Last edited by ChronoCrossfangirl2002,
  • Like
Reactions: bonkmaykr
That's not exactly how that works. This compatibility layer is designed to specifically run on the Switch 2 hardware.
 
Hi guys. I read an article recently, and found it funny with what Nintendo did with the Switch 2: For Switch 1 games, the article stated that they don't run natively on the Switch 2 due to the Hardware, so the big N had to make their own Emulator inside the Switch 2 to be able to run Switch 1 games. I just found that funny since Nintendo is so against Emulation :P

Your guy's thoughts on this?

Nintendo isnt against Emulation so long as it's them.... and they can resell the classics and milk your wallet more.....
however free emulation that "robs them of money on a 35 year old game" that the goeze donkey Kong country levels of Ape over..
 
What the Switch 2 is using for backwards compatibility is almost certainly Nvidia's Unified Driver Architecture. Also known as UDA.

Before the UDA every GPU needed specific drivers. It was not like it is now where you download one package for most/all GPUs. You had to get a specific driver package from the vendor, for that specific model of GPU. This is the pre nVidia/early nVidia days of Voodoo, ATI, Riva, etc.

The UDA uses a number of methods to make drivers universal among multiple models/vendors/generations. Including a Hardware Abstraction Layer(HAL), Unified Instruction Set, and more. This not really emulation. This is using translations layers. But also more. The two components I mentioned are the ones we'll get into.

Quick sidenote: CUDA(as in CUDA cores) stands for Compute Unified Device Architecture. It was a huge advance in parallel processing. This is what allows stuff like Folding At Home, etc. We don't need to get deep into that though.

Something important to understand is how integrally the UDA is a core part of Nvidia's hardware and driver architecture. I don't think it could be removed if they wanted to for some reason. Nintendo using Nvidia Hardware has given them a unique advantage when it comes to backwards compatibility when it comes to consoles. The UDA allows Nintendo to break the traditional paradigms of console backwards compatibility.

In the past each hardware generation for a console used such highly customized hardware that this kind of backwards compatibility was not possible until now. As consoles become more like PCs, backwards compatibility will overall become easier. As an example the Wii U used customized PowerPC architecture(almost no one uses it anymore.) This is why you can't have Wii U backwards compatibility on the OG Switch. (AMD does have their own version of the UDA. Consoles made with AMD hardware have been too highly customized until the most recent generations to make backwards compatibility as easy)

With the Switch to Switch 2 they're both on Nvidia's Tegra/ARM architecture. With Nvidia's UDA, because it's core part of how Nvidia does these things. This means that backwards compatibility is a lot easier. Although not necessarily automatic. How easy it is and so on has a lot of "it depends" going on.

Now let's get into some of how the HAL and Unified Instruction Set I mentioned previously work.

The Unified Instruction Set is more or less what it sounds like. This of course makes things easier in general. Even several generations apart, the Switch 1 and 2 will use many of the same instructions. But not all of them will be the same. This is where translation layers and the HAL come into play.

The Hardware Abstraction Layer is different from something like Proton/WINE,* and also similar. Proton/WINE operate at a software level. The HAL is at the hardware level. This allows instructions that aren't native to that hardware to be translated into something the hardware can understand.
*WINE stands for "Wine Is Not an Emulator." Proton is based on WINE.

A lot of why games may need some patching to run fully properly on Switch 2 can be variable. Most of it overall comes down to software for the OG Switch was coded and optimized for the Switch 1, with Switch 1 specific tools. This is where we get into "it depends" kind of stuff. It's fairly likely that there will some common causes of issues with backwards compatibility in Switch games. It could be a specific call/instruction that has a bug/issue on the Switch 2 only as an example.

In contrast, PC Games are made with tools already geared towards a wide variety of hardware. Even then there are often issues with PC Games tied to specific GPUs/drivers/etc that require patches. PCs and PC Games are not free from issues with backwards/forwards compatibility. PC is simply a different paradigm that we don't think about the same way as gaming consoles.

Something that was mentioned early on in Switch 2 backwards compatibility discussions is that the driver package is part of the software when it comes to Switch games. This could be part of why some games need some extra patching. Of which that patch could possibly be more or less equivalent to a driver update. Although the HAL is meant to handle stuff like this, there are limits of course.

Another issue scenario that I'll speculate at is the whacky vsync buffering used in some games. TotK and Echoes of Wisdom are prime examples. What happens is the framerate tries to lock to 15/40/45/60 depending on what it's closest to. The trouble happens when the framerate fluctuates close the point where it switches which one it locks to. With a VRR display that supports 120hz you at the very least want to turn that vsync behavior off.(Mods for emulation that turned that vsync buffering thing off are common in games where it an issue.)

This is already a long enough mini essay so I'll wrap this up with a TL;DR style summary:

The Nvidia UDA has been around since the early 2000's and is taken for granted/forgotten about. Overall consoles are more like PCs which overall enables easier backwards compatibility. On top of that Nintendo has a unique advantage in sticking with Nvidia hardware, specifically the Tegra ARM SoC's. Because of the UDA, most of the serious and difficult work is already done by NVidia when it comes to backwards compatibility. This breaks the traditional paradigms of gaming consoles.

This not emulation, and more than a translation layer like WINE/Proton. There are multiple components at work. The Hardware Abstraction Layer and Unified Instruction Set are only 2 of them. The UDA is integral at all levels, it's in the hardware and drivers. It does have limits, and even on PC it's not perfect. It makes backwards much compatibility easier than it has been in the past for consoles. Although not automatic or flawless, it depends.
 
  • Like
Reactions: branchus

Site & Scene News

Popular threads in this forum