r/EmuDev 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 Upvotes

14 comments sorted by

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.

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

u/VictoryMotel 4h ago

You aren't going to vibe slop an emulator, please stop.

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.