QUOTE(felixm477 @ Jun 4 2006, 02:56 AM)
i agree u notice all these programmers with little to no data on the workings of conoles and they end up making functional and almost perfect emulators. now u mean to tell me that the actual makers of the xbox cant creat a fully emulated xbox on a system 80x the power? they should stop trying to emulate it game by game, and just work on emulating every chip and processor atleast 99% and it should work with every game.
Yes it is that hard.
First off those who make emulators for things like Nintendos and such have reverse engineered teh processors in them to get the info they need. Also most of the well emulated systems did not rely on special hardware, everything was done in a jack of all trades cpu. Emulate that and a little audio hardware and most of your work was done.
Specialized hardware is much harder to emulate. There is a reason they make the hardware, because in hardware you are able to pull of lots of difficult and downright tricky stuff that is very hard to do in software.
Think of it like this:
Emulating an NES is kind of like translating numbers from English to Spanish (I mean spoken numbers)
Emulating the SNES is a little harder, lets say like translating the basic idea of a language (bablefish style)
Emulating an N64 is like translating from one language to another live (like you see presidential translators do, they speak at the same time they hear, it's tricky and very hard to pull off, even the best of them hit snags every now and then)
Emulating the Xbox is like live translating to one language verbally, while writing a translation to a third langauge and the conversation is about the newest cutting edge developments in theoretical quantum physics and one of the languages is latin.
It gets exponentially harder so that at some point even the raw horsepower isn't what holds it back, it's the sheer complexity of all the things that could happen, all the words that express something in one language that just don't have a word for in another language, or a term that just doens't work for one type of grammar.
Then there is the crossplatform issue. You can make almost any internal combustion engine fit into another car with enough cutting and welding. But try going from internat combustion to jet engine and you got a way more complicated job on your hands. Similar to emulating a celeron with a custom Nvidia chip on a G3 with an ATI chip.
It's not a fair analogy really, but here is the code to make a program that will print the words
Hello World!
on your screen in a few different programming languages:
Basic
CODE
10 print"Hello World!"
Assembly X86
CODE
Basic
[code]
title Hello World Program (hello.asm)
; This program displays "Hello, World!"
dosseg
.model small
.stack 100h
.data
hello_message db 'Hello, World!',0dh,0ah,'$'
.code
main proc
mov ax,@data
mov ds,ax
mov ah,9
mov dx,offset hello_message
int 21h
mov ax,4C00h
int 21h
main endp
end main
Assembly Z80
CODE
ORG 32768
ENT
LD IY, #5C3A
RES 0, (IY+02)
RES 1, (IY+01)
LD HL, HELLO
LD A,22
RST #10
LD A,0
RST #10
LD A,0
RST #10
LOOP LD A,(HL)
PUSH AF
PUSH HL
AND #7F
RST #10
POP HL
INC HL
POP AF
BIT 7,A
JR Z, LOOP
LD A,13
RST #10
LD HL, HELLO
JR LOOP
RET
HELLO DEFM /Hello World/
DEFB 161
CGI written in C
CODE
#include <stdio.h>
main ()
{
printf ("Content-type: text/html\n");
printf ("\n");
printf ("<html>\n");
printf ("<head>\n");
printf ("<title>Hello, world!\n");
printf ("\n");
printf ("\n");
printf ("<body>\n");
printf ("<h1>Hello, world!\n");
printf ("