Base de los emuladores

Hola, tengo una curiosidad desde hace mucho tiempo, estoy estudiando programacion y me defiendo, vamos que puedo hablar sobre ello con soltura lo cual no dice que sea capaz de programar burradas por que nisiquiera he estado en la industria en mi vida, pero siempre me he preguntado por la base de los emuladores, ¿en que consiste? osea realmente son programas que se hacen desde cero investigando como hacer que abran los dumps de los juegos de la consola o es simplemente la bios de la consola y demas abierta en el pc y adaptando el codigo para que pueda abrir programas para esa consola? esta ultima opcion es que no la veo muy realista ya que imagino que por ejemplo las de 8 bits que usaban el Z80 y esas cosas estaba todo en codigo maquina para ese procesador por lo que tengo entendido pero vamos que mas o menos queria que alguien me aclarara todo esto por que no entiendo casi nada jeje y me gustaria algun dia hacer algun proyectillo por ahi y al ser posible abrir algun programa o alguna historia.

Bueno espero no haberme extendido mucho.

Un saludo y gracias!
Ninguna de las dos.
La idea es programar un programa que haga lo mismo que cada dispositivo de la consola.
Por ejemplo, si tenemos un procesador z80, tenemos que programar una aplicación que reciba de entrada un parámetro en el formato que lo reciba el z80, y que de salida salga el parámetro que salga sea la salida que el z80 le daría a esa entrada.

A continuación tenemos que hacer un interpretador que convierta la salida creada por z80 en una salida que sea óptima para nuestro ordenador o máquina que emule.

Por ejemplo, tenemos un chip de sonido. Tenemos que crear una aplicación que reciba 16 canales de audio y las mezcle, que sería lo que realizaría el chip de sonido. Luego tendríamos que crear otra aplicación que coja los canales de audio mezclados y ejecute el sonido correspondiente en pc.

Luego se puede simplificar, evidentemente. Por ejemplo, si nuestra tarjeta de sonido tiene más de 16 canales, podemos directamente mandar cada pista a un canal diferente.

Es por eso que hay emuladores que funcionan mejor en unos sistemas que en otros. Depende del sistema a emular. Si el dispositivo emulador puede hacer lo mismo, las instrucciones que tienes que hacer son las mismas pero en el formato del emulador, mientras que si son distintos, tienes que programar tanto la transformación como la adaptación. Por eso es muy facil hacer un emulador de supernes para la nintendo ds y sin embargo es tan dificil hacer uno de ps2 para pc.
fuf pues mas o menos lo entiendo pero entonces por lo que veo hay que entrar al bajo nivel y fuf eso me va a costar jeje, muchas gracias por las aclaraciones la verdad es que almenos asi la curiosidad ya no la tengo, a ver si poco a poco empiezo(vuelvo a) programar en C++ y puedo hacer algo por que a ensamblador ya no creo que llegue jeje.
Un saludo y gracias!
2 respuestas