¿Por qué es tan difícil desarrollar un emulador de consola de juegos?


14

Siempre he encontrado emuladores bastante fascinantes. En serio, me gustaría crear un emulador para una consola o dispositivo portátil de generación más antiguo. Me ayudaría a obtener una mayor apreciación del hardware y los juegos que se crearon para ese hardware. Sin embargo, la gente siempre dice lo difícil que es y que ni siquiera debería intentarlo. Me gustaría saber por qué es eso.

Además, me gustaría obtener algunas sugerencias sobre un buen lugar para comenzar y dónde puedo encontrar la información que necesito.

Respuestas:


15

Pregunta SO

Este parece ser un recurso popular sobre cómo funcionan.

TL; DR: la arquitectura es totalmente diferente, y esto requiere muchos recursos paralelos para lograr la arquitectura original.

La arquitectura de la CPU para las consolas de juegos a menudo es algo exótica en comparación con una máquina de escritorio promedio. Emulación significa realizar en el software todo lo que hizo el hardware original. Es decir, si bien la consola original puede haber tenido gráficos dedicados, audio, etc. chips, así como una CPU con un conjunto de instrucciones diferente, el emulador debe realizar todas las funciones de estos recursos paralelos a la velocidad.

A menos que la GPU de la consola sea antigua, es casi seguro que debe emularse en la GPU de la máquina host, ya que las tarjetas gráficas modernas, incluso las baratas, tienen muchas veces el rendimiento (para cargas de trabajo de gráficos) incluso de las CPU multinúcleo más caras. Para agravar esta dificultad está el hecho de que la comunicación entre la CPU, la GPU, cualquier otro DSP integrado y la memoria probablemente se haya optimizado en la consola para aprovechar las características específicas de la configuración del hardware y, por lo tanto, estos recursos también deben ser compatibles.

Para agravar todas estas dificultades, generalmente se sabe poco acerca de las características específicas del hardware de la consola, ya que esto se mantiene en secreto por diseño. La ingeniería inversa es cada vez menos factible para los aficionados.

Para poner las cosas en perspectiva, un simulador arquitectónico (un programa que puede ejecutar, por ejemplo, un programa PowerPC en una máquina x86 y recopilar todo tipo de estadísticas al respecto) podría ejecutarse entre 1000x y 100000x más lento que en tiempo real. Una simulación RTL (una simulación de todas las puertas y flip-flops que forman un chip) de una CPU moderna generalmente solo puede ejecutarse entre 10Hz y unos pocos cientos de Hz. Incluso una emulación muy optimizada es probable que sea entre 10 y 100 veces más lenta que el código nativo, lo que limita lo que se puede emular de manera convincente hoy en día (particularmente dada la interactividad en tiempo real que implica un emulador de consola de juegos).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.