Help What's the difference between low level and high level emulation?

I guess high level is more CPU consumption? I dunno i only emulate 8-16 bit games.
 
I heard about it but could somebody summarise it a bit for me because I'm confused.
Are you referring to high end rigs? Are you someone who emulates on consoles rather than PCs? If so, that’s a bit out of my expertise but here’s my own two cents:
  • low end would be most 2D consoles
  • Low-to-mid would be the above plus low end polygon systems like 5th gen consoles and psp
  • Mid range would be around ps2 and dolphin
  • Mid to high would partially include 7th gen consoles
  • High is debatable because ps3 emulation is only taxing because ps3 core itself is complicated, there’s a great video on it I advise watching
  • Hope this helps ?
 
Basically it boils down to.
Low Level - Aims for high accuracy and fidelity to the original hardware, often requiring detailed knowledge of the hardware architecture.

High Level - Typically faster than low-level emulation because it avoids the need to simulate hardware in detail; it can take shortcuts based on the software logic.
 
i thought this thread said something completely different, but what it means is how closely it matches the original code. For example, an emulator might use an OpenGL or Vulkan rendered instead of the system's own rendering system. This means that it will run faster, since your pc doesnt have to translate the code and render within the limitations of the console, however, this will lead to some inaccuracies, which might show as weird looking polygons or weird looking lighting.
 
Answers on here feel very vague.

The first emulators you will get usually are low-level, these are literally looking up the instruction sets, finding opcodes, and then doing lookups. Depending on the complexity of the instruction set can make for....... very hard to read code.

So typically brackets [ ] is memory access, and a switch case is used to match an exact number/ID and then run code accordingly. So you'd get:
C:
char memory[]; //loaded or filled out later.
int ip; //instruction pointer
switch(memory[ip]){
   case 0: //add instruction
   case 1: //sub instruction
   case 2: //jump instruction
   default: //catchall, usually undocumented or unsupported
}

You then simulate the changes from each instruction call 1:1.

Higher level emulation like JIT literally will recompile. It may do the first pass similar to above, but then write to a block of memory the equivalent instructions in native code making a second pass on the code lightning fast.

The differences being to emulate via interpretation is usually about 200x slower than hardware, while recompiling or other more recent methods may be say 5x slower.

As for games using GPU's, the emulator acts as a pass-through and interprets, then rebuilds the calls to call to DirectX/Vulkcan/OpenGL letting it wash it's hands of those details rather than fully emulating the video half as well.

edit: Upon further reflection, the c/switch case example is probably considered interpretation rather than low-level in terms of how it's emulated. I was considering the complexity of making the emulation and how it worked vs faster more advanced methods.
 
Last edited by a moderator:
If I understood correctly low level would be next to what FPGA aims to reproduce. For example, music from the emulator being reproduced with accurate synths having the same behaviour than the real hardware. High level in this scenario would be to just use samples recorded from the real thing, to gain some performance.
 
Low level i assume means closter to hardware, and high level means it needs an inturprator.... Wait am i thinking of programming?
 
Low level i assume means closter to hardware, and high level means it needs an inturprator.... Wait am i thinking of programming?

Close... With programming you have:

BareMetal: Assembly, powerful, fast, exactly what you want.... and you're on your own.

Low-level: Simple instruction set but nothing happens outside what you give it. C is a good example because most instructions translate close to 1:1, you just let the assembler determine the exact opcodes.

High-Level: More complex features operation overloading, instantiation, auto memory allocation and garbage collection, etc.

Interpreted: Simpler languages but may offer some more complex features. BASIC being a classic. Curiously BASIC would bytecode compile the lines as you typed them and then run them from the bytecode. Regardless you can't run the program without the interpreter. AHK, Python and a ton of others fall in this camp.
 
Beware: There have been no replies in this thread for 90 days.
Keep that in mind when expecting a reply from the people on it,
You can also start a new thread instead. This is just a heads-up, bumping is allowed in this forum.

Users who are viewing this thread

Connect with us

Support this Site

RGT relies on you to stay afloat. Help covering the site costs and get some pretty Level 7 perks too.

Featured Video

Latest Threads

Streets Of Rage Remake Vs Streets Of Rage 4

Personally I prefer Remake but would love to know everyones opinions here.
Read more

Ayrton Senna racing game from 1992

Ayrton Senna got his own racing game in 1992 called Ayrton Senna's Super Monaco GP II on the...
Read more

Memory Cards

Memory cards rocked!
I mean they didn’t, but they KINDA did! I always thought it was a cool...
Read more

What's the best pre installed Wii channel?

(some channels aren't included even if they have a channel on the menu because they require the...
Read more

TPS Camera Hack for Star Ocean: Till the End of Time

I always wished the game had a TPS camera, this wish grew stronger and stronger and after...
Read more

Online statistics

Members online
174
Guests online
225
Total visitors
399

Forum statistics

Threads
10,275
Messages
254,943
Members
818,938
Latest member
ghostdpx

Advertisers

Back
Top