And so it goes... Fortunately, I have patience.
shoober420 Wrote:LLE is about accuracy. LLE emulates the hardware as closely as possible, while HLE goes for speed and enhancements. You will not get the same results with HLE emulation, which is one of the reasons byuu uses LLE instead of HLE for his emulator. He wants accuracy.
I just pointed out in my previous post, HLE is
not focused on speed or enhancements, but
how the emulation actually occurs. It's high-level because you bypass certain steps to get the same or similar results. HLE and LLE have nothing to do with what kind of enhancements an emulator has. Your definitions of HLE and LLE are incredibly inconsistent with developer terminology.
Additionally, I just provided two real-life examples of HLE giving the same results as LLE and real hardware in my previous. Can you explain, in detail, how those HLE methods won't produce the same results as LLE? Can you pinpoint exactly where the HLE methods are lacking? byuu prefers to use LLE because it follows his goals of a completely cycle-accurate emulators as a way to preserve/document old hardware and games.
shoober420 Wrote:This is because its only emulating the BIOS or something else very simple. If HLE tried to emulate anything else, it would have no way of emulating it as accurate is LLE would.
delroth would very much beg to differ with you with regards to his reworking of the DSP (co-processor in the GC and Wii) for AX ucode games. A vast majority of games had imperfect audio. However, he was able to reverse engineer the AX ucode more than anyone else so far. Dolphin is now capable of producing identical audio in a number of games using HLE or LLE audio. The DSP isn't just a 256-byte program like the GB BIOS, it's its own chip. HLE is possible because the large-scale behavior of the DSP is controlled by specific, limited numbers of ucodes (microcodes). The complexity of how the DSP works has nothing to do with its potential for HLE.
shoober420 Wrote:The analogy fits perfectly. Just because upscaling uses interpolation, that doesn't mean that it is interpolation. Just because something uses something else, it doesn't become what it uses.
Upscaling doesn't "use" interpolation like its a tool; interpolation describes the overall behavior of what it does: estimating new pixel values from a set of given pixels. Upscaling is a very specific case of interpolating pixels to get a larger image. Cars are not specific cases or types of gasoline. Gasoline powers a car, but you can't describe or compare a car with gasoline. You can describe upscaling as interpolation, because the entire process of upscaling is a kind of interpolation.
Links for you, just random results from a quick Google search of "upscaling interpolation"
http://www.pcadvisor.co.uk/forums/21/digital-home-advice/329792/is-upscaling-just-a-kind-of-interpolation/
http://www.experts123.com/q/what-is-high-definition-upscaling-interpolation.html
http://www.sonydictionary.com/upscaling-interpolation/
Additionally, consider that interpolation is a mathematical concept. When something uses a mathematical concept, we can rightly say it is that concept itself or a specific or particular instance of that concept. You find this happening all the time; a prime example would be
exponents being a specific instance of multiplication. You wouldn't find a right-minded mathematician in the world who wouldn't say that exponentation isn't multiplication. Regardless of the application, if you add something it's addition. Regardless of the application, if you divide something, it's division. Regardless of the application, if you interpolate something, it's interpolation. That's how math works. That's how upscaling is interpolation.
shoober420 Wrote:This is a bad analogy because you don't need to walk to exercise. You can exercise in many different ways. Unlike upscaling, that requires interpolation and can't use anything else to upscale. Your legs are used to exercise, does that mean our legs are called exercise? A computer uses a mouse to function. Does that mean the computer is a mouse now? Your lungs need oxygen to breathe, does that mean our lungs can now be called oxygen? Just because something uses something else to function, doesn't mean it becomes what it uses. Interpolation and upscaling are two totally different things. There is NOTHING you can say to convince me that they are the same.
You're twisting the analogy. My analogy never said that simply because an item uses something, it then becomes that something. That's what your car analogy tries to insinuate. Walking is a form of exercising. Exercising
describes walking, in much the same way that interpolation describes the process of upscaling.
You seem to have a hard time understanding that one item (upscaling, a Toyota Tundra, red light) can be an specific instance of a larger, broader category (interpolation, trucks, electromagnetic radiation). This is pretty basic stuff that, as I linked to in my post yesterday, is fundamentally understood in various levels of organization in biology, computer science, linguistics, and mathematics. You can say that red light is electromagnetic radiation in the same vein that a Toyota Tundra is a truck in the same vein that upscaling is interpolation. Again, upscaling doesn't "use" interpolation like its a separate part of the process; interpolation pretty much sums up the
entire process of upscaling images.
shoober420 Wrote:If what you were saying is true, when I use trilinear filtering on a texture, it upscales the texture no matter what, since upscaling is interpolation. This is simply not true. You can apply interpolation to something without the need to upscale, because upscaling isn't interpolation. Just as I can walk without the need to exercise. Interpolation is interpolation, and upscaling is upscaling.
Interpolation is the process of generating new data points from existing ones. Upscaling fits that definition; we can say upscaling is interpolation. Bilinear and trilinear filtering also fit that definition; just as well, we can rightly say they are interpolation. Remember, interpolation is a
broad idea; it encompasses many different applications. Saying two things are interpolation says nothing about
how they interpolate. You can rightly say that subtraction and division basic elements of math, but no person would honestly ever confuse subtraction and division.
You can rightly say that upscaling and bilinear texture filtering are interpolation,
but it isn't reasonable to equate upscaling and bilinear texture filtering as one and the same. My statements have only been consistent with the italicized parts, not the underlined part. The underlined part is what you're claiming I'm saying, but your argumentation showing that has been poor so far.
shoober420 Wrote:There's no doubt LLE emulation is used for accuracy. HLE is for speed. This is common knowledge.
But HLE isn't always used for speed. HLE can be used for a couple of reasons. 1) It's more convenient. If I don't have to dump my BIOS to begin programming an emulator, it's going to make my life as a developer that much easier. This is especially if I don't have the console itself on hand, but you still have the games and a way of dumping them (don't have a PSX any more, can still rip disks from my DVD drive). I can always add an option to run the BIOS later, but if I just want to get up and running, HLE is a good way to go. 2) It might be easier than implementing something via LLE, especially when there's a lack of documentation. I'm working on Gekko (the only other semi-active GC emu project afaik). I decided to work on getting the DSP working so we can get sound (development is on hold atm), but I chose to go with HLE because I figured it would be easier to implement. Even though I had a pretty solid idea of how the DSP works at a hardware level, Gekko had some HLE code laying around, so it gave me a headstart. From what I've heard, there are numerous functions in N64 emulators that are HLE'd because documentation is simply not there in some cases, and it's even worse on the Saturn.
shoober420 Wrote:Well apparently, there were a lot of SNES emulators that used HLE for the CPU, which caused the shadow from the plane to be missing in "Air Strike Patrol". Which would explain what was skipped and shortened in HLE CPU emulation. This is why byuu made a LLE emulator in the first place, to accurately emulate the CPU. It seems that all other SNES emulators behave in the same way, except higan, which uses LLE for almost everything. Meaning, most SNES emulators did indeed use HLE for the CPU, or else they would have the shadow there in "Air Strike Patrol" like higan does. See what happens when you use HLE? You loose accuracy for the sake of speed.
Air Strike Patrol was actually due to some
scanline rendering issues with the PPU. Having dealt with pesky scanline problems myself, I will say that rendering like real hardware can save you from a lot of headaches. Even so, it's not like that graphical error was caused by HLE specifically in other emulators. Other emulators like SNES9x most likely do use LLE extensively (if not entirely?) in the PPU, it's just that their implementation isn't accurate enough, in which case, it's not a fault with the approach (HLE or LLE) but in how accurate the authors make the emulator . It's a bug, not an instance of HLE for speed.
shoober420 Wrote:That's because it uses HLE for the CPU. If there wasn't some form of HLE, it wouldn't allow you to increase the internal resolution at all. A true, pure LLE emulator (like Xebra), will not allow you to increase internal resolution because it aims for accuracy, not eye candy.
Can you explain where any instance of HLE occurs in the code for the CPU, either generally (it happens when altering such-and-such registers, it's in this set of instructions, etc) or specifically? If not, how do you know? Source?
You know, one of these days, when I start work on my own DS emulator, I'm going to LLE the whole thing and support internal resolutions. All with software rasterizing too
