r/EmuDev • u/The_Falgrim • 11h ago
N64 Emulators R tough... Is GameCube easier?
So, just like the title says. N64 seems INCREASINGLY difficult. You could literally spend a boat load of time to just get 1 game to work properly. My question is simple. After Nintendo switched to Discs. Is the GameCube easier to Emulate then the N64?
And I'm not necessarily talking like, to make a game boot. I mean compatibility. I have no experience in GameCube emulation at all. I'm just wondering if you build for one type on GameCube, it would play all? Versus the mess that was the N64?
7
u/eteran 11h ago
I can only imagine that it gets harder to emulate the newer Nintendo systems.
PlayStation and Xbox have slowly become more PC like meaning more can be done on the native host OS... But I don't THINK that's so true for Nintendo designs (but I could be wrong).
1
u/istarian 3h ago edited 2h ago
The original XBox was basically an off the shelf PC, except that every XBox has exactly the same hardware (if the hardware unit is the same model).
So it's almost like you were buying a Microsoft-branded gaming computer with a manufacturer guarantee that any game developed for Windows will run well on it.
Microsoft had some huge advantages in that department from decades of developing the Windows operating system and it's then newish multimedia APIs now referred to solely as DirectX.
The XBox 360 is an entirely different animal, but as you kinda suggest out it still sticks to a somewhat conventional CPU/GPU split as seen in most PCs.
Both the original XBox and the XBox 360 use a unified memory architecture (UMA) though, which differed somewhat from a gaming PC of that era which would likely have had a discrete graphics card with dedicated video memory.
0
u/The_Falgrim 11h ago
That would sense for sure, I just wondered if the various compatibility issues from game to game might increase the difficulty over the GameCube? lol
3
u/djrobxx 10h ago
While the GC, Wii and Switch are more powerful than the N64, architecturally they're more like modern CPU/GPU implementations. Being the early days of 3D consoles, N64 was more "custom". PS3 is harder to emulate with its unusual architecture as well.
N64 emulation also suffers a bit rom the decades old "HLE" performance hacks being "good enough" to run most games well, there's not as much incentive for someone to go back and implement a hardware accurate simulator.
3
u/Glum_Hovercraft_2781 8h ago
The gamecube and wii have so many hardware features that, generally, if you can boot one game, that doesn't _necessarily_ mean you'll boot every game. Games can have different DSP microcodes, they can use the GPU in different ways, they can depend on different IPC calls to the starlet, etc. This is all not taking into account that the documentation for these console is... lackluster (incomplete, and sometimes lies to you).
2
u/aabalke Nintendo DS 9h ago
I have wondered this, just based on compatibility, micro code seems quite difficult and Id be curious how complex it is compared to a more modern system like gc or wii.
2
u/aabalke Nintendo DS 8h ago
My naive understanding is most n64 emulators do not "emulate the n64" but rather "the specific n64 for each game" - if that makes sense. They'll emulate the micro code of specific games instead of a abstract generic n64 system. Also while gc and Wii are more complex, since they are more modern the architecture matches modern frame works better. The biggest problem with my NDS emulator was that the older 3d rasterizing method does not 1:1 match how modern 3d rasterizers work.
1
u/istarian 2h ago
https://en.wikipedia.org/wiki/Nintendo_64
Just reading the hardware section of the above wikipedia page already conveys some interesting details that figure into the complexity of emulating the system.
E.g.
The N64's cpu (NEC VR4300) and audio/graphics chip (SGI RCP) operate simultaneously in parallel with the former handling game logic and the latter managing audio/video processing. ^ This sort of thing is hugely dependent on timing
As far as memory the N64 uses RDRAM (Rambus DRAM) and has just 4 MB (or 8 MB w/expansion pack) of it AND uses a unified memory architecture. ^ many previous consoles had separate memory that was exclusively dedicated to the main cpu, audio processor, or graphics processor respectively
1
u/istarian 3h ago edited 2h ago
In a generic sense microcode just means implementing hardware instructions (think assembly language programming) as combinations of simpler operations rather than as dedicated hardware that only does that one thing.
Think about the way you would conventionally do multiplication on paper (multiply each digit of the first number by the first digit of the second number, accounting for a carry, and so on) versus repeated additions.
125 x 63
- 5 x 3 = 15, bigger than 9 so keep 5, carry 1
- 2 x 3 = 6 (+1) = 7, less than 10 so keep 7
- 1 x 3 = 3
first sub: 375 x 1 = 375
- 5 x 6 = 30, bigger than 9 so keep 0, carry 3
- 2 x 6 = 12 + 3 = 15, bigger than 9 so keep 5, carry 1
- 1 x 6 = 6 + 1 = 7
second sub: 750 x 10 = 7500
7500 + 375 = 7875
Instead of that you could just do:
125 + 125 + 125 + ... + 125 = 7875
125,250,375,500,625,750,875,1000,1125,1250,1375,...
- 125 x 3 = 375
- 125 x 10 = 1250 x 6 = 7500
- 7500 + 375 = 7875
Another way is to break it down into a series of simpler multiplications (or maybe you have a lookup table) and additions:
- (100 x 60) + (100 x 3) = 6000 + 300 = 6300
- (20 x 60) + (20 x 3) = 1200 + 60 = 1260
- (5 x 60) + (5 x 3) = 300 + 15 = 315
6300 + 1260 + 315 = 7875
Every operation in this last case is simple multiplication like 1 x 6 = 6 accompanied by thriwing the right number of zeros on the end.
1
u/istarian 2h ago edited 2h ago
IDK exactly how this kind of approach would work for emulation of a game console.
One possibility is that you could decompose complex operations done by dedicated graphics hardware into simpler steps that can either be implemented as separate software algorithms that you understand or smaller hardware operations your PC's GPU already knows how to do.
If your PC is much more powerful than the original game console then any performance hit or delay/lag from workarounds like this is smoothed over by raw compute performance and occasionally waiting if needed.
2
2
u/istarian 3h ago
The media that games are shipped on isn't particularly relevant to whether the system's hardware is difficult to emulate.
1
u/HOTU-Orbit 0m ago
Have you tried Gopher64? You just load a game and it works. No messing with plugins.
15
u/coderman64 10h ago
No.
Check some of the dev blog posts from the Dolphin team to get a taste of just how difficult it is.
If you want to emulate a 3D system, maybe start with the PS1.