VOGONS


First post, by sliderider

User metadata
Rank l33t++
Rank
l33t++

The first generation XBox used a lot of off the shelf PC parts and porting games between XBox and PC is supposed to be pretty easy because of all the commonalities, so why don't we have a working XBox emulator yet?

Reply 1 of 52, by leileilol

User metadata
Rank l33t++
Rank
l33t++

It ISN'T easy. It'd require emulation of lots of Nvidia chipsets (soundstorm especially), and then there's the proprietary video decoding hardware that's used.

There is a cxbx emulator branch that is the only one being developed right now, and so far it runs only Turok Evolution playably to the finish.

apsosig.png
long live PCem

Reply 3 of 52, by mr_bigmouth_502

User metadata
Rank Oldbie
Rank
Oldbie
leileilol wrote:

It ISN'T easy. It'd require emulation of lots of Nvidia chipsets (soundstorm especially), and then there's the proprietary video decoding hardware that's used.

There is a cxbx emulator branch that is the only one being developed right now, and so far it runs only Turok Evolution playably to the finish.

This. Also, since the chipsets used in the original Xbox are similar enough to products Nvidia still produces, they likely won't be releasing any specs on them anytime soon, and that's if they EVER release any specs on them. 😜

On a similar note, one thing that has always mystified me about the Xbox is that commercial games don't require you to adjust the screen size, yet to get homebrew releases to properly fit the screen you have to manually adjust them. I've always suspected that this has something to do with the varying video encoder chips, though I'm not 100% sure.

Reply 6 of 52, by swaaye

User metadata
Rank l33t++
Rank
l33t++

I stumbled on an interesting info tidbit awhile back. The NVIDIA APU, the thing everybody calls Soundstorm, is apparently a licensed Parthus MediaStream DSP .

http://ceva-dsp.mediaroom.com/index.php?s=119&item=293

It seems to me that time to market was a problem for developing Xbox and so this is what NV had to do.

Reply 7 of 52, by m1so

User metadata
Rank Member
Rank
Member

Why does the CPU and the GPU have to be emulated at all? Any new Nvidia card should be compatible with the Geforce 3 chip used in Xbox and the CPU is just a Pentium III 733 Mhz, perfectly x86 compatible.

Reply 8 of 52, by sliderider

User metadata
Rank l33t++
Rank
l33t++
Kerr Avon wrote:

There's a good post here on why the XBox is more difficult to emulate than it's mainly PC-based architecture would suggest;

http://www.ngemu.com/forums/showthread.php?t=132032

What I would say in response to this post is "If the Linux community can figure out the XBox hardware and get Linux to run on it, then the emulation community is doing something wrong if they can't figure it out." Homebrewers also have figured out how the hardware works without developer support from Microsoft, so what's the holdup with emulation? Looking at the source code from XBox Linux builds and homebrew games should provide some clues.

Reply 10 of 52, by sliderider

User metadata
Rank l33t++
Rank
l33t++
leileilol wrote:

Since when is getting software to work on the Xbox the same as getting Xbox to work in the software?

Because looking at the source code tells you what the coder is expecting the hardware to do and if you know what the hardware is expected to do when it encounters a certain string of code then you can write an emulator around that bit of code. Do that over and over until all instructions are successfully emulated and what you have after that is a finished XBox emulator.

Reply 11 of 52, by Dominus

User metadata
Rank DOSBox Moderator
Rank
DOSBox Moderator

The expert in emulation and software engineering has spoken! Never doubt him, he is always right! Almost always! Most of the times! Only this one time! And that other! Oh, and that one! And that... This one too... Oh, well, you are right, almost never...

Windows 3.1x guide for DOSBox
60 seconds guide to DOSBox
DOSBox SVN snapshot for macOS (10.4-11.x ppc/intel 32/64bit) notarized for gatekeeper

Reply 12 of 52, by sliderider

User metadata
Rank l33t++
Rank
l33t++
Dominus wrote:

The expert in emulation and software engineering has spoken! Never doubt him, he is always right! Almost always! Most of the times! Only this one time! And that other! Oh, and that one! And that... This one too... Oh, well, you are right, almost never...

It's simple logic, but I guess you aren't very good at using that.

If you know how the hardware processes an instruction or a piece of data, then you write a program that processes it the same way. What's so hard to understand about that? Someone who codes for the XBox knows how the hardware responds to instructions and data so some information sharing between the programmers and the emulation community should be all that's required to jumpstart emulation. We may not get a working emulator right away, but we should at least be a little bit closer.

And next time, try adding something constructive to the discussion instead of just being a prick.

Reply 13 of 52, by mr_bigmouth_502

User metadata
Rank Oldbie
Rank
Oldbie

Don't forget though, the Xbox uses a special version of DirectX as sort of an abstraction layer. Coders who work on the Xbox don't write for the "bare metal" of the Xbox, they simply write for the DirectX layer.

The point of an emulator is basically to emulate "bare metal" so that you can get programs created for another platform running. Unfortunately, we don't know enough about the Xbox's "bare metal" to do an accurate emulation of it. We do know a fair amount about the DirectX layer that runs on top, but how are we supposed to emulate that accurately if we can't emulate the "bare metal" accurately?

Theoretically, we could just use our knowledge of the DirectX layer to form the basis of a high-level emulator, and a few other people have already done this, but this an overall poor emulation strategy for accurately emulating the software we want to run. It'll get a few things running, but we'll have to put up with things like timing issues, messed up textures, and other stuff like that.

Reply 14 of 52, by m1so

User metadata
Rank Member
Rank
Member

Well high level emulation was quite OK for N64 and that is an entirely alien architecture compared to PC, the bare metal of Xbox is basically a custom budget early 2000s PC, nothing really exotic compared to ordinary PCs like RISC CPUs and so.

Reply 15 of 52, by Jorpho

User metadata
Rank l33t++
Rank
l33t++
sliderider wrote:

Because looking at the source code tells you what the coder is expecting the hardware to do and if you know what the hardware is expected to do when it encounters a certain string of code then you can write an emulator around that bit of code. Do that over and over until all instructions are successfully emulated and what you have after that is a finished XBox emulator.

But does Linux on XBox use the full range of the XBox's capabilities? Or only a very small subset thereof?

Reply 16 of 52, by swaaye

User metadata
Rank l33t++
Rank
l33t++

If it was easy to translate Xbox games, it wouldn't have been such a bitch to make it happen on XBox 360. The emulator there, years in the making by brilliant people with full hardware knowledge, still can only run a subset of games.

http://www.qbrundage.com/michaelb/pubs/essays/xbox360.html

Reply 17 of 52, by sliderider

User metadata
Rank l33t++
Rank
l33t++
swaaye wrote:

If it was easy to translate Xbox games, it wouldn't have been such a bitch to make it happen on XBox 360. The emulator there, years in the making by brilliant people with full hardware knowledge, still can only run a subset of games.

http://www.qbrundage.com/michaelb/pubs/essays/xbox360.html

That's a different case because MS never set out to create an emulator that runs every XBox game, only the most popular. Some of the less popular games will run, but by coincidence more than by design. Like how some apps will run on DOSBox, but it's purely coincidental if they do rather than the intention of the devs that they should.

The XBox 360 also has nothing in common with the original XBox or the PC so creating an emulator would be even more difficult on a platform with no common hardware.

Reply 18 of 52, by swaaye

User metadata
Rank l33t++
Rank
l33t++

None of the emulators of N64 and later consoles can run all games. They usually only run a handful of games mostly-perfectly, undoubtedly because those games got direct attention from the programmers. HLE is quirky and I'm sure that's what Xbox 360 is doing.

I imagine the x86-on-x86 aspect would be helpful like it is for DOSBOX, but that's surely where any similarities between PC and Xbox end.

Reply 19 of 52, by VileR

User metadata
Rank l33t
Rank
l33t

Because looking at the source code tells you what the coder is expecting the hardware to do and if you know what the hardware is expected to do when it encounters a certain string of code then you can write an emulator around that bit of code.

Source code may tell you what the hardware is expected to do in particular cases, but you can't generalize from a source code example to *all* possible input/response states that the machine is capable of. And even if you somehow could, it would still tell you absolutely nothing about *how* the hardware works internally to generate those responses.

You can be the best chef in the world, and know everything about getting the expected output (gourmet dish) from your input (recipe + ingredients) - that doesn't make you qualified to engineer the kitchen stove that makes it happen.

[ WEB ] - [ BLOG ] - [ TUBE ] - [ CODE ]