Ευκολο το emulation του XBOX? Χμμμμ Οχι!

Wally

Retired Admin
Joined
19 Ιαν 2006
Μηνύματα
25.792
Αντιδράσεις
4.276
Σημερα επεσα πανω σε αυτο το εξαιρετικο ποστ ο συγγραφεας του οποιου νομιζω οτι ειναι στην ομαδα αναπτυξης του Cxbx emulator.

Απαντα στις ελφροτητες που ακουμε απο το 2002 απο PC users του τυπου "εσκασες λεφτα για το μαυροκουτο? PC ειναι. Σε κανα δυο μηνες θα το εχω emulated στο super PC μου"

"Xbox is just like a PC, it's easy to emulate!"[/font][/color]
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).
Πηγη
 
Αναρωτιέμαι πάντως γιατί να θέλει να κάνει low level emulation που αναφέρει στο τέλος (που ακόμα και αν το πετύχει κάποτε, ο emulator θα σέρνεται ακόμα και σε πανίσχυρα μηχανήματα)

Νομίζω ότι για ένα μηχάνημα όπως το XBox, το high level emulation είναι μονόδρομος.
 
Εγώ δεν μπορώ να καταλάβω...

...γιατί να φτιάξει κανείς software, που κάνει emulation σε μια CPU, που υπάρχει αυτούσια στο hardware του host, ενώ θα μπορούσε να κάνει κλήσεις, "απ' ευθείας" στο σετ εντολών της... Μυστήριο...

Αυτό ισχύει και για κάρτες γραφικών -MAME λαμβάνει;- άλλωστε το φαινόμενο αυτό, δεν είναι άγνωστο στην σκηνή, ειδικά στο MAME, αφού παλιότερα, είχαμε ήχο στο Bubble Bobble, μέσω του OPL chip, των γνήσιων Soundblaster, που υπήρχε και στο hardware του Coin Op...
 
Πέρα απο τα τεχνικά "γιογκι" κόλπα, εγώ ακόμα δέν βρίσκω λόγο του να γίνει emulated το xbox στο PC. Eίναι φθηνό, προσβάσιμο στον καθένα, και η πλειονότητα των παιχνιδιών του υπάρχει και στο PC.
 
Πέρα από την λογική του "όλα σε ένα, νοικοκυρεμένα" που εξυπηρετεί πολλούς, το πρώτο XBox είναι ήδη μια κονσόλα που έχει ξεπεράσει την δεκαετία. Ως πότε πιστεύεις ότι το HDD που έχει μέσα του θα λειτουργεί απροβλημάτιστα ή θα βρίσκονται εύκολα ανταλλακτικά; Θα έρθει η στιγμή που το να βρεις XBox σε καλή κατάσταση δεν θα είναι πλέον τόσο εύκολο ή φτηνό όσο σήμερα...και καλύτερα να υπάρξει emulator πριν αυτή η στιγμή φτάσει.

Και βέβαια υπάρχουν και οι καθιερωμένες "ευκολίες" των emulator. Εντελώς ενδεικτικά: το να τρέξεις παιχνίδια σε αναλύσεις ΠΟΛΥ μεγαλύτερες από του κανονικού hardware (δεν ξέρω αν έχεις δει ποτέ τον Dolphin να εξομοιώνει Gamecube σε full HD ανάλυση πχ...), η δυνατότητα save states, η δυνατότητα να πάρεις εύκολα screenshots.

Συμφωνώ ότι το real thing είναι πολλές φορές γοητευτικό, αλλά η ύπαρξη emulator αποδεδειγμένα βολεύει σε πάρα πολλές περιπτώσεις. Και είναι κρίμα να μην υπάρχει γι'αυτό emulator της προκοπής ενώ όλα τα υπόλοιπα μηχανήματα της γενιάς αυτής είναι πλέον αξιοπρεπέστατα emulated.
 
Δέν διαφωνώ, απλώς όπως είπες και για το HD emulation του GC, χρειάζεσαι ένα πολύ ισχυρό μηχάνημα για να τα εξομειώσεις σε τέτοια επίπεδα. Εγώ για παράδειγμα, κάποτε είχα "αγκαλιάσει" το emulation, ήρθε όμως η στιγμή που το PC μου δέν μπορούσε να τα κάνει όλα αυτά. Γι'αυτό και μπήκα στο τριπάκι να αγοράσω κονσόλες, όπως το GC και το Xbox για παράδειγμα.

Σίγουρα για λόγους preservation -αλλά και τακτοποίησης όπως είπες- το emulation είναι πάρα πολύ χρήσιμο. Όμως θεωρώ overkill τη χρήση ενός υπερμηχανήματος για εξομείωση 10ετούς hardware, την στιγμή που αυτό ακόμη βρίσκεται και μάλιστα φθηνά. Και οι δύο αυτές κονσόλες που συζητάμε τώρα, είναι πάμφθηνες, και τα παιχνίδια τους τα βρίσκεις επίσης σε πολύ χαμηλές τιμές. Το επόμενο ζήτημα είναι το puristiκό, δηλ. το πόσο κοντινό είναι κάτι στο πραγματικό καθώς και τα ζητήματα της αμεσότητας, του plug'n'play. Φυσικά εύχομαι να βγεί ποιοτικός emulator για το Xbox, όπως και για όλες τις κονσόλες, αφού όπως σωστά είπες κάποια στιγμή δέν θα είναι εύκολο ή φθηνό να τις βρούμε.
 
Όλα αυτά δεν θα ήταν πρόβλημα αν όλες οι εταιρίες έκαναν τα μηχανήματά τους 100% backwards compatible. Τουλάχιστον η Nintendo μας αφήνει να παίζουμε τα παιχνίδια μίας γενιάς πριν με κάθε μηχάνημα που βγάζει. Η ειρωνεία είναι ότι η Nintendo δεν χρειάζεται κάτι τέτοιο τόσο πολύ όσο οι άλλοι γιατί τα δικά της μηχανήματα δεν χαλάνε τόσο εύκολα και αντέχουν. Οι άλλοι που το χρειάζονται περισσότερο το κατάργησαν τελείως.
 
Πίσω
Μπλουζα