Switch 2 Uses Emulation :p

  • Thread starter Thread starter Skeet1983
  • Start date Start date
  • Views Views 14,306
  • Replies Replies 55
  • 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
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?
lmfao.... they do not run on emulation...lmfao... more like they run by "spoofing" the hardware values to that of a switch 1.... the firmware/ecosystem/architecture is the very same though... it just uses updated hardware components... but the cpu is the same... its the same exact broadcomm cpu, only its the updated version and this time all 8 cpu cores are available are wired up and working, compared to the switch 1, which ACTUALLY had 8 cores... only nintendo had broadcomm essentially "shut off" one of the core clusters (the missing 4 cpu cores) and drastically underclock the core clock speeds (from the stock 1.5ghz clear down to the 750mhz range in handheld low power mode, boosting upwards of 1.1-1.2ghz in docked quality mode if running at 1080p 60fps target rate and you have manually overclocked the siwtch 1 with a moddded switch exploit payload/app... unmodded stock switch 1 consoles usually only ever hit 1ghz to maybe 1.1ghz despite being able to be overclocked if modded, higher, because of the thermal throttling profiiles nintendo has built in... thats also why they supposedly essentially shut down the four cpu cores, for thermal constraints.... but i mean phones handle much higher clock speeds (even at that point in time, when the switch 1 was being first developed and created) with less space and higher thermal restrictions than the switch 1 had... and the sad thing is, even if you were to be able to somehow hardware mod and soft mod the 4 shut off cores to be turned back on and included, it wouldn't work because the firmware is compiled and built to only utilize the four cores, even if 8 are available...yes the gpu was technically a bit beefier than other arm64 chips had at that time but it wasnt by THAT much...that tegra chip was actually ALSO used in the nvidia shield pro devices, i believe they still are... they just have less available memory and i believe a slight few less gpu/shader cores.

Anyays the point is, they run on the same system firmware... its just been updated for the switch 2.. there are device checks... thats what determines what the nintendo eshop uses to determine what games to show you and what games to mark as "available". The switch 2 simply spoofs its hardware values to access switch 1 eshop items and games... thats not emulation....lmfao

emulation is real time translation of native code to the host hardware architectures code... and emulation for device types on the same architecture type is still doing trasnlation because its working because people dont know how nintendo or the desired emulation target natively built their code base that works with diff hardware, so they use cross compilation methods (like jit) to turn that code (even though its still arm64 code) into something the unspoorted arm64 hardware can understand and use...

The second sexample i provided is similiar to for example, doing switch emulation on other arm64 android or ios/MacOs devices... technically, these devices still have the best emulation performance and performance per dollar/watt compared to x64 hardware... the performance hits you see is simply due to the fact that nintendo built the switch firmware to support essentially only its tegra/broadcom custom chips. And nivdia's drivers and programming/software isnt made available for the most part.. its closed source... so even though your phonemay be arm64 and spec/wise, way more powerful than the now very dated switch 1 hardware... its not going to run as well or as fast because the switch firmware wasnt built for snapdragon chips or dimensity chips or exynos chips, etc... they dont have built in driver support for it... and code cmpilation uses a different unavailble method, so we have to sitill transalte (emulate) everything in real time to make it work....there just is MUCH less translating to do compared to x64 hardware where essentially the ENITRE things needs ot be translated, not just specific things like drivers, the entire code base needs to be translated from the native arm64v8 base to the x64-x86 architecure base laguage.... which is why you can often find you can play certain titles on a android switch emulator just as well, if not sometimes better, thatthe VASTLY superior x64 hardware available on the market in terms of raw overall pwoer and performance... for example, i often found that in some titles (for example, Arceaus, Sword and Shield and Mario Odyssey for me) i found that i could play these titles on my samsung galaxy s23+ with a Adreno 740 gpu at higher frames and better quality than my desktop pc with 64gb of ddr4 3600 ram, a 16 core ryzen 3950x overclocked to 4.2ghz and a RTX 2060 Super GPU paired with a pcie gen 4 nvme drive.

Technically my pc blows my galaxy s23+ out of the water in term of pure performance/juice. 8 more cores, muhc higher overall core speeds. But the ram and the gpu and the nvme drive is where it really blows away the arm64 phone... essentially, the 2060 super is like 650% of what the adreno 74-0 is... is has like 1000% more cores, has expontentially more available memory/ram/vram (8 GB of dedidcated onboard ram vs like 650-850MB of SHARED cache space available for the adreno integrated gpu.) However, android gpu's render using diff methods than tradtional gpu's do.. they use was called tiling or tile presentation rendering. This allows the gpu to use/consume much less memory/ram and need far fewer cores to do so. But tiling doesnt work with tradtional x64/x86 based gpu's. So we have to again, do a workaround method to translate the code into something that the gpu can use..

But again, however, this is not the case for the new switch 2... You can also think of it kinda like how old armv7 devices worked versus (then) new armv8 devices... older armv7 armhf devices coouldn't run armv8 specific built software (althiouhg back then it was because armv7 was 32bit, armv8 jumoped up to 64 bit...armv9 is still 64 bit though) but armv8 hardware could run both arm64 and armhf software.....You could still download and usually "install arm64v8 stuff on armv7/armhf stuff, it usually just wouldn't run or launch or you would get a "unsupported device" error when trying to run the android app....

Its the same sort of things here... te switch 2 uses armv9 cores ad hardware... the switch 1 is armv8... so the switch 2 can run boith types of software, where the siwtch 1 can only run 1. Tahts not emulation... thats altering static values and has ZERO performance overhead..
 

Site & Scene News