What's new

New Emulation concept for N64

matthew

Member
Not sure if this is the right place to discuss such things.

However I was thinking about how the Wii gets very good N64 emulation by emulating each game individually as channels.

So I was thinking maybe if an N64 Emulator was made MAME style where each Arcade or in this case if each Game was a seperate driver you could get 100% compatability with good frame rates.

I mean there's not many games on the N64 and I think this idea may be the way forward for N64 Gaming not just on the Wii but generally as some games just do not work correctly when played through an N64 Emulator

Reminds me of the Nes Mappers thing while some games shared mappers others needed special ones.

Any thoughts on this would be most appreciated any expert just let me know if I'm barking up the wrong tree :)
 

Toasty

Sony battery
Loading specific plugins based on the game being run is a planned feature of PJ64 1.7, IIRC.
 
OP
M

matthew

Member
Not exactly what I'm saying but plugins are not the same as a driver as they only make graphics better and not the core emulation such as they would in Mame
 

Agozer

16-bit Corpse | Moderator
In MAME, each game is not a separate driver. Each arcade system is.

I guess what you are trying to say here is that someone make an N64 emulator that doesn't use plugins, similar to what pSX does in the PlayStation emulation field. MESS already tries to do what you want, although with rather poor results.

The main problem with N64 lies in the fact that the hardware itself is complicated - made even more complicated by its use of microcodes, resulting in some games are are not playable in one way or another. What's the point of trying to find new ways of coding an emulator if you can't fully understand the complexities of the hardware you are trying to emulate?

I driver-based approach certainly wouldn't change anything, as seen in MESS.
 
Last edited:

Cyberman

Moderator
Moderator
Not exactly what I'm saying but plugins are not the same as a driver as they only make graphics better and not the core emulation such as they would in Mame
So essentially you want to make a specific set of emulation code on a per game basis?
Hmmm there is a lot going on inside an emulator. Dynamic recompilation gives a moderate performance enhancement. Not as great as a static recompilation however the later is much more difficult to make work (especially since a number of 'bad' programming practices were used in the N64 the most annoying is self modifying code).
Essentially a plugin is DLL that adheres to the Dynamic Rec/interpretor Engines API.
A good example of a game that requires a specific set of code to function is Conkers Bad Fur Day.
I suggest poking around with PJ64 1.6 source to give you ideas and test things out (or 1964). Getting it to compile is the first hurdle. MuOpen if you are into linux. Mess around with it a bit by looking at what is going on and breaking stuff (or modifying it specifically to run one particular game REALLY well).
Try some things out that way.

The idea isn't bad but there are numerous ways to do things. Some better than others.

Cyb
 

Allnatural

New member
Moderator
Any thoughts on this would be most appreciated any expert just let me know if I'm barking up the wrong tree :)
N64 emulators that use HLE (which, except for MooglyGuy's driver, is all of them) essentially work as you've described already.

A pure LLE approach is ideal. If you can emulate the hardware down to the last register all games will work perfectly as a result. Not easy of course, nor would it be particularly fast on current computers...
 
Last edited:
OP
M

matthew

Member
So essentially you want to make a specific set of emulation code on a per game basis?


Yes you got it a per game emulation code.
Same as the wii does per channel as my guess is that the wii isn't capable of doing a full on emulator that will work as perfectly as say the snes9xgx emulator.

I'm sure most emulation code would simply be copied as a lot of games would work similarly if not the same. However per game emulation would bring about a way to work on specific games that cause us a problem.

I'm not a coder btw I was just bringing my idea to the forefront as I wasn't sure if anyone had thought of this. As I see most emulator authors tend to emulate the hardware itself.

I've read through the thread and what I'm suggesting isn't the same as MAME I just used that concept to give an example.


N64 emulators that use HLE (which, except for MooglyGuy's driver, is all of them) essentially work as you've described already.

A pure LLE approach is ideal. If you can emulate the hardware down to the last register all games will work perfectly as a result. Not easy of course, nor would it be particularly fast on current computers...


Hmm I wasn't aware that they do already work as I suggested.

I was thinking that the LLE approach put emulation into a per game basis could solve a lot of problems with speed ?
 

Allnatural

New member
Moderator
Hmm I wasn't aware that they do already work as I suggested.

I was thinking that the LLE approach put emulation into a per game basis could solve a lot of problems with speed ?
I'm not a coder either, but I suspect most N64 emulators use a lot of per-game hacks and kludges already. Nintendo, obviously, has more resources at its disposal, not to mention the financial incentive, to get specific games working as well as possible.

LLE is (almost?) always going to be slower. Think bsnes. Byuu's approach is highly accurate, and as a result highly compatible, but the system requirements are crazy (compared to other SNES emulators).
 
OP
M

matthew

Member
I'm not a coder either, but I suspect most N64 emulators use a lot of per-game hacks and kludges already. Nintendo, obviously, has more resources at its disposal, not to mention the financial incentive, to get specific games working as well as possible.

LLE is (almost?) always going to be slower. Think bsnes. Byuu's approach is highly accurate, and as a result highly compatible, but the system requirements are crazy (compared to other SNES emulators).

So what you think of HLE per game ?

Would there be a high chance of near perfection if this method was employed compared to the standard way per hardware ?
 

Allnatural

New member
Moderator
So what you think of HLE per game ?

Would there be a high chance of near perfection if this method was employed compared to the standard way per hardware ?
Maybe, depending on your definition of "perfection." If I understand you correctly, you think it would be best if the authors focus on each game individually, using whatever hacks necessary to get each one working properly. That could work, but there were a lot of games released for the system. Even assuming that many shared engines (which would streamline the work I suppose) this piecemeal approach hardly seems efficient compared to emulating the hardware as accurately as possible, which, as I mentioned earlier, would make most (if not all) games work perfectly anyway.
 
OP
M

matthew

Member
Maybe, depending on your definition of "perfection." If I understand you correctly, you think it would be best if the authors focus on each game individually, using whatever hacks necessary to get each one working properly. That could work, but there were a lot of games released for the system. Even assuming that many shared engines (which would streamline the work I suppose) this piecemeal approach hardly seems efficient compared to emulating the hardware as accurately as possible, which, as I mentioned earlier, would make most (if not all) games work perfectly anyway.

I guess so if of course there was only one person working on the emulator but what if there was more than one person working on per game ?

I mean from what I've seen theres not as many N64 games as there are games for other systems of the era like Sega Saturn / PS1.

Also you could optimise per game if the game was running slowly.
This applies more to the wii than PC's as PC's these days are monsters compared to days of old
 

Cyberman

Moderator
Moderator
Well there are many ways to do things. Perhaps 'training' the emulator while it's running the game could help? IE each game is a bit toward the unique side. They use different sets of programmed code sets for the RDP for there operation. By creating an information set based on what the emulator tested for the game while it ran under a more LLE mode it can use such data to decide how to best run the game.
Currently most of this has been empirically derived. It would be nicer if one could automatically do so.

Cyb
 

Top