Cxbx emulador de xbox1 va evolucionando información inside

Hola el dia 14 se actualizo la SVN https://cxbx.svn.sourceforge.net/svnroot/cxbx/branches/private/shogun/wip/, aunque la release no esta preparada para una release compilada "Oficial" los cambios son :

- se ha incrementado el soporte para la SDK 2467 y superior
- un pequeño aumento en la compatibilidad en los juegos comerciales
- Comienzo el soporte Directsound3D Aunque altamente inestable , Debe de Estar habilitado en la fuente antes de compilar
- apoyo para muchos nuevos formatos de texturas
- Solucionado algunos problemas con Directmusic
- Añadido nuevo nucleo de funciones multiples
- Se han solucionado algunas cosas en SDK 4721 y 4928 "rarezas" con ciertas APIs

Algunas otras cosas que deben hacerse:

EmuIDirect3DDevice8_GetProjectionViewportMatrix se añadió, pero necesita verificación
Los valores hexadecimales de algunos D3DFMTs puede cambiar de un SDK para la próxima.
Añadir soporte para múltiples hilos e notificaciones. Esta fijará un problema con Blood Wake
Añadido en la SDK una API de apoyo para Battlestar Gakactica versión NTSC
El sombreado de analizar el código realmente necesita ser actualizado.
NtCreateFile incompleta emulación de código aún está dándonos grandes problemas

A continuacion teneis el texto en ingles y añado tambien comentado que xbox1 no és tant facil como pensabamos de emular texto mas abajo

I finally got a chance to upload my branch to the SVN yesterday. The update includes the changes I've added over the past year. I never had a chance to do this until now. Beware that builds from this branch are still beta and hence not stable enough for a release of any kind. Use them at your own discression.

Now for the changes:

Increased support for SDK 4627 and all of it's "relatives"
A minor increase in compatibility for commercial games.
Started support for DirectSound3D (Highly unstable, not yet fully functional and can cause crashes). Must be enabled in the source prior to compiling.
Support for many new texture formats.
Fixed some issues with apps that use DirectMusic. Timing is still inaccurate!
Added multiple new kernel functions.
Fixed some SDK 4721 and 4928 "oddities" with certain APIs
Possibly more things I can't remember.


Some other things that need to be done:

EmuIDirect3DDevice8_GetProjectionViewportMatrix was added, but needs verification.
The hex values of some D3DFMTs can change from one SDK to the next. Easy to add, but I always forget
Add support for multiple thread notifications. This will fix one problem with Blood Wake.
Add a more SDK 5558 API support so that BattleStar Gakactica NTSC version.
The shader parsing code really needs to be updated.
Incomplete NtCreateFile emulation code is STILL giving us major problems (false dirty disc errors)!


------------------------

Aqui el resumen del texto

- (CPU) El verdadero problema es que cualquier moderno procesador x86 incluidos los Pentium III puede ejecutar múltiples instrucciones a la vez.
Por lo tanto, no es como emular un Z80 haciendo una instrucción a la vez. El propio algoritmo y la manera en x86 no se trata de indocumentados y todavía desconocido. En resumen, la Xbox de la CPU puede ser emulado, pero no con precisión.

- (GPU) Emular cualquier hardware de NVIDIA no es un paseo por el parque! La GPU de Xbox, el NV2A menudo se supone sólo una GeForce 3. No es! Es similar pero no idéntico.
Tiene algunas capacidades GeForce 4 demasiado, por lo que es más de un cruce entre una NV20 y NV25.
Esto no es nada fácil, ya sea para emular.
La GPU NVIDIA tienen gran registro AFAIK conjuntos y ni siquiera la mitad de ellos se han descubierto, y una gran parte de los registros se han conocido desconocido.
Hay poca o ninguna documentación sobre cómo trabajar GPUs de NVIDIA.
Lo mejor es mirar en GPUs similares, como RIVA, TNT, y más tarjetas GeForce.
Algunos registros son similares pero no idénticos.
El mejor lugar para buscar información de fuente abierta.
Agregando a la dificultad es que nadie ha descubierto cómo píxel shaders trabajo en NV2x tarjetas, sombreadores de vértices.
La GPU de Xbox también tiene registros exclusivos que no se han encontrado en otras tarjetas GeForce.
La información sobre el NV2A de la GPU registros son sólo ahora empieza a ser descubierto hace unos meses.
Y, sin embargo, aún hay un largo camino por recorrer.
La serie GeForce 3 es la más misteriosa de todas las GPUs de NVIDIA (G7x y G8x de lado) y el NV2A es mucho peor.
Pero usted no puede simplemente ejecutar directamente las instrucciones a NV2A otra tarjeta NVIDIA?
No, me da un montón de cuestiones relativas a este, y es imposible.
Es MMIO direcciones son diferentes y la exclusiva registros deben ser imitados. Además, en las ventanas, no tenemos circunvalación 0 acceso de todos modos

- (chipset sonido)
Éste es un elemento más fácil obtener.
El NVIDIA MCPX es el centro de control para las cosas tales como audio, entrada de USB, los adaptadores de red, PCI, AGP, etc Estas cosas no son realmente difíciles que para emular la OMI, excepto para el audio.
El sistema de audio es bastante compleja que se compone de al menos 4 DSPs, y codec de audio (AC'97) y una NVIDIA SoundStorm APU.
El DSPs no debería ser un problema solo averiguar, pero la NVIDIA SoundStorm APU es la parte realmente difícil.
Hasta ahora no he encontrado ninguna información sobre esta cosa, pero ahora mismo, la relevancia es baja.

- (Bios) El proceso de ejecución básico de la BIOS se entiende, pero los detalles sobre el proceso son a pérdida. Lo que sí sabemos nos da pistas, pero antes de la BIOS puede ser emulado, necesitamos una mejor comprensión del diseño del hardware de Xbox ya que la BIOS hace unos desconocidos hardware de inicialización en el momento del arranque y escribe para el hardware directamente sin utilizar ningún material XDK . Se tardará algún tiempo, y esfuerzo

- (codificador de video) En lugar de utilizar un RAMDAC de salida de vídeo, la Xbox utiliza un codificador de video.
Microsoft solicitó la necesidad de cambiar el codificador de vídeo a todos los demás versión Xbox (hay siete en total, 1,0 - 1,6).
AFAIK, hay por lo menos 3 diferentes codificadores de vídeo utilizados: Conexant CX25871, Focus FS454, y Xcalibur

Emular los tres codificadores de vídeo es sólo menos de la mitad de la batalla, el verdadero problema es que la BIOS puede ser especialmente vinculada a un codificador en función de que la versión (no me cita en este bien). Al igual que PS2, Xbox cada modelo de revisión tiene una actualización de BIOS y tiene diferentes expectativas. Se trata de un problema potencial, pero no exactamente importante.



Post: #1What makes Xbox so hard to emulate?

"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.

Buena noticia, pensaba que el proyecto estaba parado
1 respuesta