2 ms·
There is nothing strange about it. The original Xbox used a custom NVidia chipset for GPU, sound, peripherals, network etc. The only semi off-the-shelf part was
by pandaman 11y ago
There is nothing strange about it. The original Xbox used a custom NVidia chipset for GPU, sound, peripherals, network etc. The only semi off-the-shelf part was the Intel's CPU (the exact same CPU was not on the market but it seems like a different packaging of a regular Celeron). The system is very complex and all its documentation is very confidential, it was not given to the third parties and, by this time, I am afraid even NVidia does not have it readily available so you cannot hope somebody will break the NDA and release it. The same is true for the later generations: 360, PS3, PS4, X1 all have custom chipsets and SoC in the current gen. Having a known ISA from the point of view of writing an emulator is similar to having a known encoding when writing a translation program from an unknown language.
- espes 11y agoThe Xbox gpu and apu are 'off-the-shelf' in the sense that they were re-used in nvidia retail chips. But you're right, that doesn't mean much in terms of public documentation. So you do some reverse-engineering. On the whole it isn't much work than other consoles of that generation. The only reason there hasn't been any activity is because nobody (outside of the Xbox backwards compatibility team) sat down and did the work (because there's no incentive to)
- pandaman 11y ago>The Xbox gpu and apu are 'off-the-shelf' in the sense that they were re-used in nvidia retail chips. Not really[1]. It was based on the GeFroce 3 architecture (NV20) but the actual chip had been quite different from the ones you could get on a retail card (NV2A). Even if it had been a straight off-the-shelf device it does not mean you know how it works. Look at the open-source drivers for the off-the-shelf video cards to see what is possible through reverse-engineering and what is not. I cannot speak for other consoles of that generation, as I have not touched the GC but PS2 devkits came with nice printed manuals, describing every register and every command for almost every device (if memory serves there was not printed IOP manual but it was pretty much the PS1 chipset so its documentation had been obtainable too). 1. https://en.wikipedia.org/wiki/GeForce_3_series https://en.wikipedia.org/wiki/GeForce_3_series
- espes 11y agoThe actual graphics core has only elementary differences from the retail chips [1]. The differences were mainly in integration (merging in a northbridge, tweaks for UMA, ...) 1. https://github.com/espes/xqemu/blob/xbox/hw/xbox/nv2a.c#L708 https://github.com/espes/xqemu/blob/xbox/hw/xbox/nv2a.c#L708
- dogma1138 11y agoYou can get very detailed ISA's for GPU's NVIDIA ones require an NDA (rubber stamped to some degree). There have been quite a few Xbox 360 and Xbox SDK's appearing on Ebay, even some of the early PowerPC based Mac Soft SDK's for the Xbox 360 have appeared online so some one has them, too bad that people who buy them either collect them or in the case of the 360 dev box to create free XBLA gold accounts :P
- to3m 11y agoI worked on a couple of Xbox games when the Xbox was around. You didn't get much concrete information about it even as part of the official docs. Plenty of stuff about the performance characteristics and memory layout for texture/vertex/index data, but nothing low level. I think there might have been enough exposed by D3D to let you bypass it entirely, at least in theory, but you'd have been on your own when it came to figuring out the ins and outs of what needed to go in the FIFO... I vaguely recall somebody from MS saying on the Xbox developer newsgroups that providing the full information wasn't part of their deal with NVidia, and that was that.
- pandaman 11y agoYes, Microsoft signed a pretty bad contract with NVidia so it could not publish much since the NV owned all the IP rights. When asked about the "push-buffer" layout and format MS would plainly tell "We won't prevent you from figuring it but we are prohibited from telling you directly". So everybody did just that, reversed the push-buffer to write their own APIs/debug tools.