Si alguna vez ha intentado poner en marcha un juego de computadora antiguo en un sistema moderno, es probable que se haya sorprendido de cómo rápido el juego corrió. ¿Por qué los juegos antiguos se salen de control en el hardware moderno?
Hoy temprano le mostró cómo ejecutar software antiguo en computadoras modernas ; La sesión de preguntas y respuestas de hoy es un buen cumplido que profundiza en por qué algunos software más antiguos (específicamente los juegos) nunca parecen funcionar correctamente cuando intenta ejecutarlos en hardware moderno.
La sesión de preguntas y respuestas de hoy nos llega por cortesía de SuperUser, una subdivisión de Stack Exchange, una agrupación de sitios web de preguntas y respuestas impulsada por la comunidad.
La pregunta
El lector de superusuario TreyK quiere saber por qué los viejos juegos de computadora se ejecutan increíblemente rápido en el nuevo hardware:
Tengo algunos programas antiguos que saqué de una computadora con Windows de principios de los 90 y traté de ejecutarlos en una computadora relativamente moderna. Curiosamente, corrieron a una velocidad increíblemente rápida, no, no a los 60 cuadros por segundo, sino al tipo de oh-dios-el-personaje-camina-a-la-velocidad-del-sonido rápido. Pulsaba una tecla de flecha y el objeto del personaje se deslizaba por la pantalla mucho más rápido de lo normal. La progresión del tiempo en el juego estaba sucediendo mucho más rápido de lo que debería. Incluso hay programas hechos para ralentiza tu CPU para que estos juegos sean realmente jugables.
Escuché que esto está relacionado con el juego dependiendo de los ciclos de la CPU, o algo así. Mis preguntas son:
- ¿Por qué los juegos antiguos hacen esto y cómo se salieron con la suya?
- ¿Cómo funcionan los juegos más nuevos? no hacer esto y ejecutar independientemente de la frecuencia de la CPU?
Entonces, ¿cuál es la historia? ¿Por qué exactamente los sprites de los juegos antiguos brillan en la pantalla tan rápido que el juego se vuelve injugable?
La respuesta
El colaborador de superusuario JourneymanGeek lo desglosa:
Creo que asumieron que el reloj del sistema funcionaría a una velocidad específica y vincularon sus temporizadores internos a esa velocidad. La mayoría de estos juegos probablemente se ejecutaban en DOS y eran modo real (con acceso completo y directo al hardware) y asumió que estaba ejecutando un iirc Sistema de 4.77 MHz para PC y cualquier procesador estándar de ese modelo para otros sistemas como el Amiga.
También tomaron atajos inteligentes basados en esas suposiciones, incluido el ahorro de una pequeña cantidad de recursos al no escribir ciclos de tiempo internos dentro del programa. También consumieron tanta potencia de procesador como pudieron, lo cual era una idea decente en los días de chips lentos, a menudo enfriados pasivamente.
Inicialmente, una forma de sortear las diferentes velocidades del procesador era el viejo Botón turbo (que ralentizó su sistema). Las aplicaciones modernas están en modo protegido y el sistema operativo tiende a administrar recursos, no lo harían permitir una aplicación DOS (que se ejecuta en NTVDM en un sistema de 32 bits de todos modos) para utilizar todo el procesador en muchos casos. En resumen, los sistemas operativos se han vuelto más inteligentes, al igual que las API.
Fuertemente basado en esta guía en Oldskool PC donde la lógica y la memoria me fallaron, es una lectura excelente y probablemente profundice más en el "por qué".
Cosas como CPUkiller Utilice tantos recursos como sea posible para "ralentizar" su sistema, lo cual es ineficiente. Estarías mejor usando DOSBox para administrar la velocidad del reloj que ve su aplicación.
Si tiene curiosidad acerca de cómo se implementó el código real en los primeros juegos de computadora (y por qué se adaptan tan mal a los sistemas modernos sin estar en una caja de arena en algún tipo de programa de emulación), también le sugerimos que consulte este extenso pero interesante desglose del proceso en otra respuesta de SuperUser.
¿Tiene algo que agregar a la explicación? Habla en los comentarios. ¿Quieres leer más respuestas de otros usuarios de Stack Exchange expertos en tecnología? Consulte el hilo de discusión completo aquí .