roberts_2 escribió:...a fecha de hoy no hay ningún emulador fiel de super nintendo, todos recurren a trucos para simular cosas que no saben cómo emularlas...y si, los requisitos son muy bestias, como suele pasar cuando se quiere emular algo lo más fielmente posible sin optimizar
Hay dos métodos de emular, interpreter (que es emular diréctamente todo lo que hace la consola) y recompiler (que es ir compilando lo que va necesitando la consola, y es donde entra la magia borrás y los truquis... lo más conocido y que mejor ha funcionado hasta ahora es la recompilación HLE con retoques para cada juego en cualquier emulador). Hacer un compilador con la información de la máquina en interpreter es "fácil" para los que nos dedicamos al tema, pero que se mueva en un PC actual (la revista no, un PC de nuestros días) pues difiere de la máquina. Un spectrum creo que ya se mueve bien (y hace unos años). Un amiga... pues creo que ya tenemos tecnología suficiente para que un PC interprete a un amiga perfectamente. Una Super Nes en estado natural... NORL!!! Necesitamos una programación avanzada (Zsnes creo que usaba parte de asembler con C o C++ para optimizar el código para procesadores x86, de ahí la dificultad de portarlo a una PSP, por ejemplo, que tiene un asembler distinto a los PC). Snes9X creo que siempre estuvo escrito en C, con sus truquis de aceleración, etc y por eso es el más fácil de portar a otras plataformas.
Pero cuando una plataforma es más y más compleja (por ejemplo, la amiga N64 o una dreamcast... tenemos que recurrir a la recompilación avanzada de sus componentes. Siempres verás que hay una opción de "interpreter" (lenta de coj... y con una compatibilidad bastante grande) que no puede máquina con ella, o "Recompiler o HLE", que es una manera bastante jodida de programar en la que sólo se van compilando sobre la marcha los módulos que va necesitando determinada rom en su máquina original, para explicarlo en lenguaje que todos entendamos (aunque en la práctica sea mucho más complejo). Ahí la magia de un (normalmente varios) programador de como reprogramar un módulo e interpretarlo en lenguaje de PC para que su consumo sea mínimo porque sabe que varias intrucciones se van a ejecutar a la vez y el % de CPU es indispensable, traducir un chip de gráficos a direct3d u opengl (ese trabajo al final lo hacen libre y los flipados de los 3D, como yo, hacen los plug-in según la información que va a mandar el programa) etc... Es un trabajo de no sólo conocer como funciona cada chip de una consola en sí, sino conocer la arquitectura PC al dedillo.
Mención especial al creador del Daelus para PSP, intentó portar un emulador de PC de N64 y ha mejorado a su creador con creces, en optimización, compatibilidad, truquis, módulo de sonido adaptado a la máquina perfectamente (lo veréis en la futura versión...). Una maravilla, vamos.
Os recomiendo el caótico código fuente de MAME, teneis ejemplos claros de como recreativas se han codificado en "interpreter" directamente, y otras pues se han necesitado un módulo de "recompiler" que emula a varias máquinas, poniendo código necesario después en particular para cada una de ellas... Weno, a lo mejor no os lo recomiendo, que es algo caótico
Besitos para ellas, abrazos para ellos... lenguetazos para vuestras mascotas