shoober420 Wrote:Bit for bit is impossible and very subjective. I don't even agree with byuu there. This is emulation, not replication. Emulation can never be bit for bit perfect, even with LLE (unless its something simple).
I'm not going to be as forward as RachelB, but on what basis can you say that? What basis do you have to disagree with byuu when you have no technical idea concerning what you're talking about? Emulation is exactly focused on replication, duplication, recreation, and any other synonyms you can think of:
Wikipedia Wrote:an emulator is hardware or software or both that duplicates (or emulates) the functions of one computer system (the guest) in another computer system (the host), different from the first one, so that the emulated behavior closely resembles the behavior of the real system (the guest). This focus on exact reproduction of behavior is in contrast to some other forms of computer simulation, in which an abstract model of a system is being simulated. For example, a computer simulation of a hurricane or a chemical reaction is not emulation.
shoober420 Wrote:I never said complex hardware can't be HLE'd, I was simply trying to say that LLE will more accurately emulate the complex hardware (and the simple hardware).
But you
did say that
only simple hardware could be HLE'd accurately, which rules out the possibility that you think complex hardware could be HLE'd accurately:
shoober420 Wrote:Only the "simple" things can be emulated that accurate.
The issue we're debating isn't whether or not LLE will more accurately emulate complex hardware, it's whether or not HLE can accurately emulate complex hardware. Your statements say that it's not possible for HLE to accurately emulate complex hardware. We've shown otherwise with real-life examples.
shoober420 Wrote:Oh that would work, it just wouldn't be accurate, which is the whole thing I'm trying to explain to you. LLE is more accurate then HLE.
Explain how it wouldn't be accurate,
technically. Saying LLE is more accurate than HLE doesn't say
how an HLE method isn't accurate. Again, HLE methods fail
for specific, technical reasons. I'm asking you to provide one (at least).
shoober420 Wrote:Okay, maybe on the simple things you might be able to emulate it 100%, but on the complex things its not going to happen, not even with LLE.
Even from the same company that designed the original hardware, has access to all of the original documentation, has access to the some of the very same people who designed the games and the console's components, and has more knowledge about the internal workings of the system than anyone else? What's stopping them from emulating everything, simple or complex, 100%? Again, there are specific technical reasons why Nintendo is able to accurately emulate an SNES on systems like the Wii and 3DS 100% as far as we know, and why other implementations such as the
360's original XBOX emulation isn't quite up to 100% (inaccurate and incomplete emulation profiles used for certain games).
shoober420 Wrote:I know that, it uses interpolation to upscale. Just because something uses something, it doesn't become what it uses.
If we take what you say, that upscaling uses interpolation, consider that on one level all that upscaling does is use interpolation by your definition. By your account, the only thing upscaling does is interpolation. How is upsclaing then not interpolation if all it ever does revolves around interpolation?
shoober420 Wrote:Yes it does.
Demonstrate that then. Show me something (doesn't have to be anything fancy, nearest neighbor is fine), then go step-by-step through the process of upscaling. Show me where interpolation is utilized like some sort of tool in the overall process. Show me that, and I'll show that interpolation is isn't utilized like a tool during upscaling, I'll show you that interpolation
is the whole process itself.
shoober420 Wrote:HLE can't accurately replicate mid-scanline rendering in the PPU, which is why it happens in the first place.
And you have no evidence that it's because of HLE that the mid-scanline rendering isn't happening correctly, and not because an LLE implementation is buggy or incomplete. It isn't that hard to ask the developers to confirm or deny this (which I'm in the process of doing). Again, my point was that you keep assuming that HLE is the cause without considering other things can just as well be the cause or without trying to find specific evidence that HLE is the culprit.
shoober420 Wrote:Tell her to examine it again, because SNES9x is not LLE.
She never said SNES9x was LLE (implying the that whole emulator is an LLE emulator). She said the CPU is LLE'd. Again it isn't that hard to confirm with the developers of SNES9x themselves.
shoober420 Wrote:So you knew this whole time that the CPU isn't HLE'd, but were trying arguing against it with me this whole time? Wow, you're a real big jerk bro.
First of all, please go back and look at your old thread. I said it then that using HLE in the CPU is a very rare occassion when programming an emulator. This isn't something I've suddenly pulled out of nowhere.
Shonumi Wrote: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.
Of course I knew the CPU isn't HLE'd, so of course I'd debate with you, because you've been saying CPUs can be emulated via HLE.
shoober420 Wrote:Well apparently, there were a lot of SNES emulators that used HLE for the CPU
shoober420 Wrote:Most, if not all N64 emulators use HLE for the CPU
What we have been arguing about was whether or not HLE could be used for
only simple things or if it could accurately emulate complex things. I've already stated that there are several requirements to being able to use HLE effectively: you need to be able to reliably reproduce the large-scale behavior of the hardware, and you need to thoroughly understand how that hardware functions (through reverse engineering). Machine-complexity isn't a factor, though it can correlate to how well large-scale behavior can be reproduced. Because the large-scale behavior can't suitably be recreated without following each step exactly, CPU emulation tends to largely be LLE'd.
shoober420 Wrote:Talk is cheap. DO IT.
The custom sprites?
Already did that last month. Increasing the internal resolution on a DS emulator?
I'm already studying and experimenting with it. Again, my DS emulator project is 4 or 5 years down the road. I'm going to do GB/GBC/GBA emulation before that. In the meantime, I'll be waiting for a detailed academic paper explaining why "true LLE emulators" are technically incapable of increasing the internal resolution.
shoober420 Wrote:saying upscaling uses its own special form of interpolation, which is not true.
But it
does use its own form of interpolation. So does downscaling. So does bilinear texture filtering. Interpolation isn't a single, specified algorithm; interpolation describes numerous algorithms that perform various tasks.
shoober420 Wrote:It also is saying that interpolation can't be used without some form of upscaling, which also isn't true.
You're the
only one here claiming that. We've all claimed that you
can interpolate without necessarily upscaling something, just as you can interpolate without necessarily downscaling something. You keep trying to claim we're saying otherwise, but if you look at all of our posts, we haven't been saying anything different.
shoober420 Wrote:If the CPU uses an LLE interpreter, but the emulator itself is HLE, it still uses HLE on the CPU in some form, making it not a true LLE CPU emulator (unlike MESS which is).
shoober420 Wrote:Mupen64Plus is not a true LLE emulator. Its based off of Mupen64 which is a HLE emulator.
Even if it falls under your category of "HLE emulator", so what? Whether or not Mupen64Plus was an "LLE emulator" or an "HLE emulator" was not something we were debating. You've been claiming that it HLEs the CPU and if not, using HLE somewhere - even if the CPU were LLE'd - means some form of HLE is still being used on the CPU. That's what we've been discussing. Both of those aforementioned claims are wrong.
I had a little chat with the lead developer from Mupen64Plus. Got a chance to say hi and thank him for the emulator. Also asked about instances of HLE within Mupen64Plus:
(11:05:39 AM) shonumi: Hello.
(11:05:46 AM) shonumi: Any developers online atm?
(11:06:02 AM) Richard42: sure
(11:06:33 AM) shonumi: Oh, it's you Richard

(11:06:45 AM) shonumi: I have a few technical questions about Mupen64plus
(11:06:47 AM) Richard42: yep I hang out here
(11:07:26 AM) shonumi: do you know of any instances of using HLE in the Mupen64plus core?
(11:08:09 AM) Fatbag left the room (quit: Remote host closed the connection).
(11:09:17 AM) Richard42: I'm not sure exactly what you're asking about. The core is responsible for the CPU, memory space (RDRAM), PIF, and a few other things
(11:10:08 AM) Richard42: it's not at all cycle accurate. Some things like the timings and interrupts for DMA transfers to the PIF are not terribly accurate
(11:11:11 AM) shonumi: Well, I'm wondering if HLE is used in any part of the CPU, memory space, etc. Someone told me HLE is used on the CPU specifically. I came here to verify that
(11:11:28 AM) Richard42: what do you consider to be HLE?
(11:12:16 AM) Richard42: software emulation will always be higher level, more abstract, and less accurate than what you could do with an FPGA
(11:12:36 AM) shonumi: I consider HLE to be "taking shortcuts" by reliably emulating the large-scale behavior
(11:13:21 AM) shonumi: but I know that software emulation is always going to be higher level than actually simulating interactions between electrons for example
(11:13:44 AM) Richard42: but that's what all emulation is. there is a continuous spectrum between the original hardware and some java crap running on the web, so it comes down to where you draw the line between LLE and HLE
(11:14:21 AM) Richard42: We have multiple r4300 cores: interpreted and dynamically recompiled, and even 2 different dynarecs
(11:15:00 AM) Richard42:
I think they are all quite accurate with respect to the conceptual CPU model: registers, instructions, flags, etc
(11:16:15 AM) Richard42: TLB is emulated, 32-bit and 64-bit modes. I even made a change to fix a bug whereby switching between 32bit and 64bit modes did not accurately preserve the register contents
(11:16:48 AM) Fatbag [~quassel@75.108.216.49] entered the room.
(11:18:16 AM) shonumi: I guess the line I'm looking at would be something like trying to follow the CPU model as accurately as you understand it to work (LLE) versus knowingly shortening or skipping certain parts to gain the same or similar functionality (HLE)
(11:19:41 AM) shonumi: Someone wrote this about Mupen64Plus - "If the CPU uses an LLE interpreter, but the emulator itself is HLE, it still uses HLE on the CPU in some form, making it not a true LLE CPU emulator (unlike MESS which is)."
(11:19:53 AM) shonumi: So I'm trying to find out more about the CPU's emulation
(11:20:15 AM) shonumi: To me, I honestly think that person doesn't know what he/she is talking about
(11:20:41 AM) Richard42:
I agree, that person is spouting nonsense
(11:20:52 AM) shonumi: So it is written :p