shoober420 Wrote:Only HLE emulation allows enhancements. A true LLE emulator will emulate the hardware exactly, allowing no enhancements. Just because an HLE emulator uses LLE emulation on certain things doesn't make it a LLE emulator. Which means there are surely more HLE emulators then LLE ones.
Then by your definition, there probably are no "LLE emulators" whatsoever in existence. Most now feature save-states, screenshots, fullscreen (or just scaling filters, even nearest neighbor), and other enhancements absent in the original hardware, even Higan and Xebra. Of course every emulator ever made ("HLE emulators") would outnumber a category so exclusive that it has no members ("LLE emulators").
However, you're certainly misusing the terms HLE and LLE as they apply to handheld and console emulators. Both refer to "how" an emulator tries to reproduce certain functionality. Those terms do not exclude what features the emulator can and cannot do in addition to emulating hardware. Each only restricts "how" an emulator goes about achieving what the original hardware did. It doesn't boil down to "HLE is not accurate" and "LLE is accurate". Depending on the nature of the emulated component, you can get 1:1 results the same as real hardware would with HLE.
Take the GB BIOS again. All of the memory locations, CPU registers, etc, all have specific values that the BIOS changes. We can HLE the BIOS exactly and get the same output as an LLE approach or an actual GB. The same applies to a GB CPU instruction known as the Decimal Adjust Accumulator (DAA). There are actually a limited number of possible results that the instruction will return, and it's possible to know every single combination before even running the instruction. VBA-M uses a lookup table filled with pre-calculated results, and it can get the correct results every time for any given input. This is a prime example of HLE (at least in VBA-M) at work; a real GB's CPU does the math everytime it runs the DAA instruction. Nevertheless, HLE in this case can directly match LLE or real hardware; you shouldn't think of HLE or LLE strictly in terms of accuracy. Although by its nature, LLE tends to be more accurate than HLE, you can't say that HLE is unable to be accurate.
shoober420 Wrote:Even though 2D emulators use LLE for graphics, most use HLE for the CPU amongst other things.
High-level emulation involves taking shortcuts to achieve the same effect as real hardware. The DAA instruction was just one example, but it's rare to get a chance to HLE any parts of the CPU. This is due to the fact that HLE relies on mimicking the large-scale behavior of hardware. The large-scale behavior of a CPU is to run specific programs. To HLE that, you'd necessarily have to know the large-scale behavior of the program (e.g. ROM, ISO, DOL, etc) you're running. That's not very practical unless there are only a handful of games for the emulator, and you know the assembly of each game very well. This would be useful for emulating something like old Tiger Electronic handheld devices, like
Raptor Run. Extensively using HLE for the CPU isn't done with most emulators (if any?) emulators today. You can't reliably predict the behavior of every game at every point of gameplay.
Most CPUs are emulated using LLE as a result. This is also true due to the type of instructions being emulated; some simply have no shortcuts because they can't be reduced, nor can they be stripped of any other step. If an instruction tells you to add two numbers, what's there to skip? What's there to shorten? If an instruction tells you to read a value from memory, how would you HLE that? If you say emulators for 2D systems HLE the CPU (partly or completely) please provide specific examples.
shoober420 Wrote:Upscaling is not interpolation. Upscaling uses interpolation, that doesn't mean that its actually interpolation. Remember my analogy from a view posts back? With you logic, if a car uses gasoline, the car can now be called gasoline because it uses gasoline. A car is still a car, even though it uses gasoline. Upscaling is still upscaling, even though it uses interpolation. They are not the same thing. Upscaling is upscaling, and interpolation is interpolation.
That's a flawed analogy at best. Upscaling doesn't just use interpolation, it's a very specific type of interpolation with a very specific aim. Gasoline is not a specific type of car. With regards to images, upscaling is the interpolation of existing pixels to generate a larger image. Nonetheless, it's still interpolation, just one with unique functionality.
If you have something of Type B that's a specific instance of Type A, it's still classified as being Type A. This is how we organize systems of
classification in biology. This is how we deal with
inheritance in object-orientated programming. That's how we deal with
transitive relations in mathematics. That's how we
use language itself. Quite simply, this is how we categorize things. Upscaling is a type of interpolation, therefore we can reasonably say that upscaling is interpolation. Obviously saying something like this does not preclude other things from being interpolation.
Analogy time: let's go for a walk. Walking is a specific type of exercise. We can reasonably say walking is exercising. We cannot reasonably say walking is walking and exercising is exercising as if they were two seperate things. They overlap, with walking being a subset of exercising. We cannot reasonably say that walking is exercising while nothing else (swimming, running) is. In this same way, upscaling is interpolation (given that the process of upscaling is a subset of that mathematical concept). You seem to keep forgetting that interpolation is an incredibly broad idea, just like exercising. Anything that falls under that idea can still be said to be that category itself.
pauldacheez Wrote:And Shonumi's definitely not dumb enough to mean that upscaling (smoothing out a low-res image for display at a higher res) refers to the exact same thing as interpolation (making guesses by looking between data points). Don't take everyone's words *exactly* as they say them. People inevitably make typos, get lazy when writing, and lose brain cells from arguing all day with idiots. Give 'em some slack.
I've said countlessly that upscaling is interpolation (see logic above) but that doesn't mean it's a 1:1 equivalence (upscaling is interpolation and interpolation is upscaling). I think shoober420 has been trying to insinuate that, but that's isn't even close to being true. I've never said that interpolation is upscaling (it can be, but not always), but I've said the reverse because upscaling is an instance of interpolation.