Sectorseven
Member
What kind of background knowledge and education do you need to make something like this?
I assume it's more than knowing C++
I assume it's more than knowing C++
It will be really interesting to revisit this thread in 10+ years when the PS3 emulator is actually playable. It will be like a time capsule. How many grey names will there be? Will we be playing PS5 then? What's going to become of the video game industry? Will the current big three still exist and still be in the video game console business? Will Amazon be successful? By then we'll know. Interesting times ahead.
It will be really interesting to revisit this thread in 10+ years when the PS3 emulator is actually playable. It will be like a time capsule. How many grey names will there be? Will we be playing PS5 then? What's going to become of the video game industry? Will the current big three still exist and still be in the video game console business? Will Amazon be successful? By then we'll know. Interesting times ahead.
If that code is the one I'm thinking of, it actually halves the game speed and then you have to run the emu at double speed which causes all sorts of other issues.
What kind of background knowledge and education do you need to make something like this?
I assume it's more than knowing C++
You have absolutely no idea just how significant this is.
What kind of background knowledge and education do you need to make something like this?
I assume it's more than knowing C++
blueshogun96 said:"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)
Disgaea 3:
Since the PS4 and Xbone are largely based on off the shelve components, does anyone think we might see emulators for them in the next 1 or 2 years? They have to be easier to emulate than the PS3.
What kind of background knowledge and education do you need to make something like this?
I assume it's more than knowing C++
Thanks for this exceptionally competent insight.There no way the PS3 will ever get emulated properly at full speed
Dont expect this to run at half decent fps on your rig before 2020.
That said, can't wait to play Bayonetta, RDR with glorious visuals in the next decade.
The Cell is such an alien CPU and has so many cores in it that I don't see how it can be properly emulated on a traditional PC even with a quad core CPU. Some games that don't utilize all the cores properly may get emulated easier, but then there are ones like God of War 3 that don't have a chance in hell.Thanks for this exceptionally competent insight.
There no way the PS3 will ever get emulated properly at full speed
Unified RAM pool on PS4 tells me no, so does sophisticated RAM setup in the XBOne.Since the PS4 and Xbone are largely based on off the shelve components, does anyone think we might see emulators for them in the next 1 or 2 years? They have to be easier to emulate than the PS3.
Lend me your crystal ball.There no way the PS3 will ever get emulated properly at full speed
I'll be honest, this to me reads more or less: "I heard things on the internet and I'm going to repeat them to make it sound like I know what I'm talking about".The Cell is such an alien CPU and has so many cores in it that I don't see how it can be properly emulated on a traditional PC even with a quad core CPU. Some games that don't utilize all the cores properly may get emulated easier, but then there are ones like God of War 3 that don't have a chance in hell.
Unified RAM pool on PS4 tells me no, so does sophisticated RAM setup in the XBOne.
What kind of background knowledge and education do you need to make something like this?
I assume it's more than knowing C++
The Cell is such an alien CPU and has so many cores in it that I don't see how it can be properly emulated on a traditional PC even with a quad core CPU. Some games that don't utilize all the cores properly may get emulated easier, but then there are ones like God of War 3 that don't have a chance in hell.
One day someone will be playing God of War 3 running on his wristwatch, which is why long term predictions like "never" are always laughable.Why are you talking about quad core CPUs as a justification for "never?" One day someone will be playing God of War 3 running on a quantum computer and laughing at this post.
Put me in the camp that thinks it's a bit sad that PS3 emulation has gotten farther than the og xbox.
Oh didn't know that.Farther? No. Cxbx or Dxbx boot some commercial games too.
Not a programmer but probably
- Having sufficient documentation about what you're emulating
- Knowledge about how the hardware of the console works
- Knowledge about the software that the console runs
Sort of unrelated but also related is blueshogun96's (creator of some of the only Xbox emulators) post on Xbox emulation
Yeah, his arguments never convinced me too much, either, for the same reasons.I'm not a programmer either but the reasons about why its not easy to emulate the OG Xbox are a bit confusing. For one thing, he talks about emulating an x86 processor. Why would it need to be emulated when you are running on an x86 processor? Couldn't the emulator be created as a sort of hybrid that utilizes the PCs hardware for some things and just emulates other parts of the Xbox?
There no way the PS3 will ever get emulated properly at full speed
Very impressive that they can get any game to boot. Even if it is at 3-5 frames per second.
Optimisations come later. I do wonder what kind of a monster PC you'll need to get a Uncharted game to run at 60fps at 1080p.
Fools said the same thing about PS2 emulation.
That kind of CPU/ GPU probably doesn't exist yet. 30fps@720p should be doable on some monster octo rigs with SLI Titans after final version of the emu is released.
The Cell is such an alien CPU and has so many cores in it that I don't see how it can be properly emulated on a traditional PC even with a quad core CPU. Some games that don't utilize all the cores properly may get emulated easier, but then there are ones like God of War 3 that don't have a chance in hell.
Actually, I'm not so sure about this. An eight core CPU is necessary in my opinion since you would generally want to outsource SPU code execution to individual cores (or on the GPU perhaps?), but the main workhorse core on the Cell will require a massive amount of sequential power that adding more cores to the mix will never make up for. As for the graphics side of things, it depends on how well libGCM code lends itself high-level emulation concepts.
There no way the PS3 will ever get emulated properly at full speed
Still no decent Saturn emulator right?
The Cell only has 1 "core" and the 8 (really 7 since one is disabled to improve yields) SPEs are not much more advanced than shaders on a graphics card. They are great at parallel simple tasks, they are not designed and can't run as true CPU cores.
It'll be a few years yet before CPUs and the actual emulator are in a state that can run these things, but it'll definitely happen.
May i ask how long it took for the PS2 to be emulated. This is impressive for sure but kinda hard to imagine getting completed within the next few years.
The Cell only has 1 "core" and the 8 (really 7 since one is disabled to improve yields) SPEs are not much more advanced than shaders on a graphics card. They are great at parallel simple tasks, they are not designed and can't run as true CPU cores.
It'll be a few years yet before CPUs and the actual emulator are in a state that can run these things, but it'll definitely happen.
The SPUs are an interesting challenge. Shoving SPU code execution over to individual CPU cores under-utilize that core so DirectCompute/OpenCL might be an attractive option.
The only problem I can foresee is that individual shaders aren't very fast on GPU hardware (PC's preferring slower but more of them approach), and I'm not sure if individual SPE work could be successfully split... I'm kind of doubtful on that. It may end up being that a super fast CPU with an SPE emulated per core will be necessary...
It'll likely probably be very dependent on individual games and their tolerance on timings and how well optimized the SPE code work can be done.