Dolphin, the GameCube and Wii emulator - Forums

Full Version: Wii U emulator as dedicated linux distro?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
@ dannzen: That argument is stupid, the reason the xbox / xbox 360 aren't being emulated is not because they're too powerful.


(02-21-2012, 05:06 PM)Fennecat Wrote: [ -> ]The goal of my concept isn't to run dolphin as it does now, emulating each chip, but to use the physical hardware in the PC natively to reduce overhead enough to play the games in this decade rather than the next one.
I'm not sure if you actually know what you're talking about, but it doesn't work that way.
(02-22-2012, 01:02 AM)dannzen Wrote: [ -> ]Wii U 'twice as powerful as Xbox 360'
http://www.develop-online.net/news/39593/Wii-U-twice-as-powerful-as-Xbox-360

guess what...
is there an xbox emulator?
is there an xbox360 emulator?
is there an xbox360*2 emulator?

What neobrain said. Power != Machine complexity.

What's more, there technically is a decent Xbox emulator. I run it every now and then. It was built by MS. Came with and runs on my 360. Plays Halo and Halo 2, the only Xbox games I still care about.

What's even more, Xbox emulators for the PC are around, just stuck in a (permanently?) underdeveloped state. Here's why the dev of CXBX says so:

Quote:Originally Posted by blueshogun96
"Xbox is just like a PC, it's easy to emulate!"

Yes, we've all heard this silly and pointless argument a million times and it usually ends in the same, and rather ignorant conclusion (or should I say assumption) that just because the Xbox is PC similar, it's hardware should be relatively easy to emulate. That's a very wrong frame of mind. How hard can it be? Very. Xbox's hardware is very complex and still poorly documented to this day. This requires some explanation.

1. Is a PC easy to emulate? Well, I wouldn't say so myself. Take a look at the source code from bochs. A lot of source code/work isn't it?

2. Emulating an x86 CPU is a lot harder than it sounds. I don't know where this mindless assumption comes from. Yes, there's loads of documentation on how the x86 processor works, but that doesn't exactly make it easy. First of all, the x86 instruction set is M-A-S-S-I-V-E! There can be at least 20 different versions of one instruction (i.e. There are many different versions of the MOV instruction, as well as INC, DEC, ADD, SUB, SHR, SHL, AND, OR, XOR etc.) and it takes time to implement them all. Of course, that's not exactly difficult. The real problem is that any modern x86 processor including the Pentium III can execute multiple instructions at once. So it's not like emulating a Z80 doing one instruction at a time. The actual algorithm and how x86 does this is undocumented and still unknown. In short, the Xbox's CPU can be emulated, but not accurately.

3. Emulating any hardware by NVIDIA is not a walk in the park! The Xbox's GPU, the NV2A is often assumed just a GeForce 3. It's not! It's similar but not identical. It has some GeForce 4 capabilities too, so it's more of a cross between an NV20 and NV25. This is by no means easy to emulate either. NVIDIA's GPUs have very large register sets and afaik not even half of them have been discovered, and a large portion of known registers have unknown purposes. There is little to no documentation on how NVIDIA GPUs work. The best thing to do is to look at similar GPUs such as RIVA, TNT, and older GeForce cards. Some registers are similar, but not identical. The best place to look for information is in open source drivers available on the net. Adding to the dificulty is that no one has ever discovered how pixel shaders work on NV2x cards, vertex shaders yes though. The Xbox GPU also has exclusive registers that are not found in other GeForce cards. Information on the NV2A's GPU registers are just now beginning to be discovered a few months ago. And yet, there's still a long way to go. The GeForce 3 series is the most mysterious of all NVIDIA GPUs (G7x and G8x aside) and the NV2A is alot worse. "But can't you just directly execute the NV2A instructions on another NVIDIA card?". No, I get alot of questions concerning this, and it is impossible. It's MMIO addresses are different and the exclusive registers must be emulated. Plus, in windows, we don't have ring 0 access anyway, so you all can scratch that idea now. Then comes the NForce 2 chipset. This is where it get easier. The NVIDIA MCPX is the control center for things such as audio, USB for input, Network adapters, PCI, AGP, etc. These things are not really that difficult to emulate IMO except for the audio.

4. The Audio system is rather complex. Xbox's audio consists of at least 4 DSPs, and audio codec (AC '97) and an NVIDIA SoundStorm APU. The DSPs shouldn't be a problem (just figuring out what they all are is) nor should the AC '97 but the NVIDIA SoundStorm APU is the really difficult part. So far I haven't found any information on this thing, but right now, it's relevance is low.

5. The Xbox BIOS isn't fully understood. The basic execution process of the BIOS is understood, but details on the process are at a loss. What we do know gives us hints, but before the BIOS can be emulated, we'll need a better understanding of the Xbox hardware layout because the BIOS does some unknown hardware initialization at boot time and writes to the hardware directly without using any XDK stuff. It will take some time, and effort, but I'll eventually get it working.

6. Video Encoder "Hell". Instead of using a RAMDAC for video output, the Xbox uses a Video Encoder. What makes this suck a pain? Microsoft sought the need to change the video encoder every other Xbox version (there are seven in all, 1.0 - 1.6). Why, I dunno, it's a Microsoft thing, they always tend to try to "fix" things that aren't broken >.> AFAIK, there are at least 3 different Video Encoders used: Conexant CX25871, Focus FS454, and Xcalibur. For more information in Xbox video encoders, click here. Emulating all three video encoders is only less than half the battle, the real problem is that BIOSes can be specifically tied to a specific encoder depending on it's version (don't quote me on this though). Like PS2, every Xbox model revision has a updated BIOS and has different expectations. This is a potential problem, but not exactly major.

Basically, I'm trying to get this "Xbox should be easy to emulate because it's just like a PC" crap out of your heads. I'm sure that most of you will disagree with me on this, but for these reasons and more, on a low level, Xbox is harder to emulate than PS2.

^ The exception to that above is that the NV2A is much better documented now, but not fully. There's an open source library for the OpenXDK called pbKit. It interfaces directly with the hardware to fully expose it's potential. This is what Microsoft should have done all along (or at least wrote a low-level OpenGL implementation).

It's not about power, it's just that the Xbox is a complex machine, hence, hell on earth to emulate accurately.
complex != powerfull?
where is the difference? Wink

the result is the same
This discussion is pointless. The whole emulation stuff exists just because you want to run software compiled for processor architecture A on processor architecture B. You do need a CPU emulator in that case, and you can't write an "emulator operating system" and magically circumvent the performance penalty. It just doesn't make any sense. Linux is flexible enough to allow everything you could think about, and if what you suggest was a good idea, then it would exist (or be worked on) right now.

Of couse you can squeeze one or two percent of performance out of your CPU if you strip down what else is running on your system. However, in reality it doesn't make any sense. Just forget about it. Background processes usually don't cause any significant CPU load. Of couse dolphin will run faster if you disable your network adaptor driver. But it's so insignificant that it's not even worth thinking about it.

Greetings
(02-22-2012, 02:06 AM)scummos Wrote: [ -> ]This discussion is pointless. The whole emulation stuff exists just because you want to run software compiled for processor architecture A on processor architecture B. You do need a CPU emulator in that case, and you can't write an "emulator operating system" and magically circumvent the performance penalty. It just doesn't make any sense. Linux is flexible enough to allow everything you could think about, and if what you suggest was a good idea, then it would exist (or be worked on) right now.

Of couse you can squeeze one or two percent of performance out of your CPU if you strip down what else is running on your system. However, in reality it doesn't make any sense. Just forget about it. Background processes usually don't cause any significant CPU load. Of couse dolphin will run faster if you disable your network adaptor driver. But it's so insignificant that it's not even worth thinking about it.

Greetings
because of "the marked text" I only posted bullshit...

the rest
thanks for explaining what i had in mind
but no one will value it... and thats why iam posting bullshit

(02-22-2012, 02:11 AM)dannzen Wrote: [ -> ]because of "the marked text" I only posted bullshit...

the rest
thanks for explaining what i had in mind
but no one will value it... and thats why iam posting bullshit

Should I understand what you're trying to tell me? Because I don't, I'm sorry ;p
(02-21-2012, 05:06 PM)Fennecat Wrote: [ -> ]The goal of my concept isn't to run dolphin as it does now, emulating each chip, but to use the physical hardware in the PC natively to reduce overhead enough to play the games in this decade rather than the next one.

I registered to this forum just to reply this. I LOLed hard when i read the word 'natively' Big Grin
By definition, the only way running wii games natively is running on wii console itself.

Out of Topic Daydreaming :
I just hope someday there will be cpu instructions set that assists jit/dynamic recompiler stuff, this will accelerate not only emulators but also apps like .Net/Java and tons others. This will benefit desktop and server world.
Quote:What's more, there technically is a decent Xbox emulator. I run it every now and then. It was built by MS. Came with and runs on my 360. Plays Halo and Halo 2, the only Xbox games I still care about.
I'm sure it's mostly HLE stuff.

And most people think that newer systems aren't emulated yet not because they are too powerful for current PCs to emulate. What they don't understand it's how insanely hard it is - to emulate complex hardware, especially when you don't have detailed docs.
you say "complex hardware" could be emulated with current rigs if there where enough detailed docs?

jtag? debug feature?
Just because there's enough tools to get the information necessary to code an emulator doesn't mean it's readily available. Coding an emulator is a giant undertaking by itself, and it's even more work if you need to RE all kinds of random pieces by yourself.

That said, there's plenty of documentation about the xbox 360 available meanwhile, but there's still much crucial information missing if you want to code an LLE emu. For HLE it's a bit different, though.

Anyway, our point wasn't that complex hardware means insufficient documentation, but rather that complex hardware means _lots_ of freaking work until you can even tell that ANYTHING works. Among other stuff...
Pages: 1 2