Dolphin Emulator - Dolphin MEGA Progress Report: April and May 2021
dolphin-emu.org
dolphin-emu.org
When I read of Dolphin or MAME updates I feel like the world is a better place.
Why is this?
It seems bigger than just the joy of knowing old games will be preserved forever.
Mupen64plus, in my experience, has been far superior to PJ64 for a long time. These days the emulators have come along enough that the differences can be somewhat trivial, but a decade ago Mupen64plus ran better for me on lower-end hardware and had way fewer idiosyncrasies than PJ64.
Comparison:
https://youtu.be/W5alOzrL_Hw?t=556
Nevertheless, it wouldn't surprise me if Paper Mario ran better through Wii U Virtual Console on Dolphin than through Mupen64plus! ;)
I'd imagine that you can't actually play anything exclusive to the Wii U virtual console.
> More surprisingly, the originally intended effect is never shown on console either! Players have instead been seeing a different kind of blur effect created by this undefined behavior. In all likelihood, this bug went unnoticed by developers because the effect they achieved looked pretty good and they simply didn't realize that anything was wrong. While implementing the undefined behavior in Dolphin, pokechu22 also fixed Nintendo's bug so that we could see what could have been.
Nah, it looks wrong with the original "bug" fixed—it's supposed to look like a painting! The developers may or may not have known what happened, but I bet if not for the quirk they would have gone with something else entirely.
How expensive is changing memory mapping modes? Does it involve a system call? Does it need to happen often?
It's just an mprotect(2) call to change the page from R+W to R+X. It needs to happen between the JIT being done creating a hunk of code and the first execution. Basically: allocate a page, write generated machine code to the page, change page to executable, patch page in (so the code gets invoked instead of either interpretation or a baseline compiler).
I'm sure you can be smarter about it and involve locks such that you track how full "code pages" are and switch non-full pages back to writeable in order to update their content.
The mprotect call will fail as that isn’t a valid mechanism to toggle rw/rx
I don't have an M1 Mac to test myself, but the "faster" mechanism doesn't involve anything in the pagetables, so I think toggling pagetable walks into the existing restrictions on RWX allocations.
https://dolphin-emu.org/blog/2021/05/24/temptation-of-the-ap...
My point is in theory, given enough time and effort, the Pi 4 should have more than enough power to emulate a 20-year old device. I'd argue that it's certainly not "way way too weak" as the reply above suggested.
The CPU isn't much of an issue.
Emulating a platform at such a low level in real-time is very heavy resource-wise, by design.
> VideoCore VI @ 500MHz: 500 [MHz] x 2 [slice] x 4 [qpu/slice] x 4 [processor] x 2 [op/clock] = 32 Gflop/s
which is the RPi4 config.
compared to a Snapdragon 800: 147.9Gflops FP32, and that's still a very old part.
And about the Wii itself:
> With the Wii, Nintendo opted to go with an innovative control scheme, rather than to focus on processing power. It offered 12 gigaflops, which represents a 1.27x improvement over its GameCube predecessor
The margins are way too slim when counting emulation overhead.
As a bunch of RPis are headless anyway...
I figured with Rpi improvements (kernel/settings) and dolphin improvements, it was time to ask if it's going better now. Everyone seems negative (without data) here though.
For many games there are even community high-def texture packs that you can add to make them look even better.
[Edit: Sorry, was talking about Dolphin here, not Wii U!]
Wii U's max HDMI output is 1080p. Also I have not seen any information that it does upscaling at all, so if you have a source for that, I'd like to know it.
There are a handful of GameCube titles that were 16:9 native widescreen on the original console. The one that comes to mind for me is Serious Sam: The Next Encounter
If you want the clearest 480p, the original Wii will do. With component cables and a compatible TV, it should be just as clear as DreamCast VGA.
Snapdragon 845 is the entry level where you can play maybe 50 percent of games at full speed, and a few at full speed and higher than native resolution. If you want to run at double or triple native gamecube resolution I'd recommend at least an 865.
Also keep in mind some phones like Pixels disable video out. Get an HDMI+PD adapter to keep your phone charged while outputting to a TV. If your phone's USB port is limited to USB 2.0 speeds you'll have to get a DisplayLink adapter.
The only emulator project I know of that was apparently successfully stopped by Nintendo wasn't an emulator of a Nintendo system at all. It was actually a Neo Geo Pocket emulator that had "Pokemon" in its name (for stupid reasons that are not relevant to this discussion) and was threatened for trademark infringement on that basis.
And then there was the time Sony sued Connectix for their emulator. Sony got an injuction, and while Connectix won in appeal, they also ran out of money and closed.
Nintendo, on the other hand, focuses less on suing emualator developers and more on suing distributors of ROMS for old, unavailable titles, like LoveROM.
In no way are emulators a target these days. The ROMs are. By your own admission - the emulator war was won.
edit: