A9VG电玩部落论坛

 找回密码
 注册
搜索
查看: 3073|回复: 3

专业人士解答“为什么XBOX1一直没有成熟的模拟器”

[复制链接]

圣骑士

中国异度联盟盟主

精华
0
帖子
3430
威望
0 点
积分
3787 点
种子
92 点
注册时间
2005-10-4
最后登录
2025-1-2
 楼主| 发表于 2012-9-7 15:35  ·  四川 | 显示全部楼层 |阅读模式
专业人士blueshogun96(CXBX、Xenoborg作者)几年前写的解释

基本点:
1、Xbox和PC接近,不等于我们能直接把Xbox程序当PC程序用,还是得模拟。x86系CPU是很复杂的,关键的并行处理功能现在仍没有资料。

2、模拟N卡本来就是很困难的,我们已知的N卡寄存器信息有限。Xbox的GPU NV2A是特制的,和其他N卡不完全相同,有些寄存器是独有的,其他N卡找不到。另外至今不知道N卡的像素渲染器的工作原理,只破解了顶点渲染器。

3、Xbox的音效系统、视频解码等很复杂。


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


  
"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 diffi***. 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 difi***y 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 diffi*** 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 diffi*** 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).

精华
0
帖子
3629
威望
0 点
积分
3858 点
种子
244 点
注册时间
2012-6-11
最后登录
2025-1-10
发表于 2012-9-7 15:45  ·  广东 | 显示全部楼层
话说能不能把pc直接就理解为xbox呢?
该用户已被禁言

精华
0
帖子
90
威望
0 点
积分
95 点
种子
0 点
注册时间
2008-11-15
最后登录
2020-1-13
发表于 2012-9-7 15:49  ·  河北 | 显示全部楼层
其实最简单的原因,大概就是没有市场吧!
该用户已被禁言

精华
0
帖子
101
威望
0 点
积分
123 点
种子
0 点
注册时间
2007-8-25
最后登录
2017-9-23
发表于 2012-9-7 15:55  ·  上海 | 显示全部楼层
虽然X盒子的硬件架构几乎就是一台PC,但是API跟PC上的各种操作系统都完全不一样,也就是说X盒子的程序不可能在Windows或者Linux下直接运行,要么破解其全套API,然后移植到Windows等系统下面,要么就老老实实的从硬件层面模拟。显然硬件层面的模拟不是个容易事情。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|A9VG电玩部落 川公网安备 51019002005286号

GMT+8, 2025-1-12 06:41 , Processed in 0.197918 second(s), 17 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部