Pequeños secretos de los grandes ahorros

¿Por qué son 16 bytes es suficiente para guardar los juegos, y otras cosas
Cincuenta y cien años más tarde, los programadores todavía tendrán los mismos problemas: que echaremos mucho de menos volumen de memoria disponible para la realización de todo lo que quiero
.
Hace 25 años, cartuchos contienen 64 a 128 kilobytes de memoria, pero de alguna manera este volumen suficiente para adaptarse al juego en docenas de horas de juego. Hoy en día, 128 KB - es el tamaño del pequeño JPEG-imagen, y que está disponible en el ordenador de casa moderna, en la era del Super Mario Bros. ni siquiera haber imaginado.

Había música y sonidos, y bueno para el calendario. Sí, algunos podrían ver con lo que pasó en la consola de videojuegos o la computadora, pero, básicamente, tenía que ir a diferentes longitudes para instalar en estas modestas posibilidades enorme número de sonidos, música, animaciones, imágenes y algoritmos de juego. ¿Cómo se gestiona a los desarrolladores de esos años?

Los principales juegos secretos fueron escritos en lenguaje ensamblador, que se contabiliza casi directamente indica al procesador que se deben realizar las operaciones. Esto es tanto una causa como una consecuencia: que sería difícil trabajar en grandes proyectos escritos en un nivel tan bajo
.
Otro pequeño detalle: una gran cantidad de software debe ser escrito para que pudiera gobernar y fijar otro programador después. Los desarrolladores de juegos para el Atari 2600, Sega Master System, NES y SNES y aún bajo la consola más reciente tarde de tipo 1 o PlayStation Nintendo 64 no fue que preocuparse de los 90: ¿por qué alguien fuera del equipo para saber cómo funciona el producto? Después de la liberación de todo lo que no es correcto, el parche en el cartucho no se deslice. Por el contrario, es preferible evitar cualquier hacker, que produjo engañar al sistema, por ejemplo, Juego Genie . Juegos tenían el control casi completo sobre la consola sin ningún sistema operativo, por lo que no necesitaba una arquitectura multi-capa que rellenar todos los productos modernos para mejorar la independencia de software y hardware.

Las técnicas básicas incluyen la reutilización de código máximo, la misma funcionalidad se utiliza una y otra vez. Lo mismo ocurrió con los datos: AI, gráficos, música, sonidos, y su única ligeramente alterada para crear la ilusión de la diversidad. Juegos podrían generar el código y los datos necesarios para la ejecución, pero esto complica la depuración. Evite el uso de grandes cantidades de sentido. A menudo, escribir sus propias bibliotecas.



los méritos y el espacio de direcciones de 8 bits. Si 3 bits que se escriban se pierde sólo 5 en lugar de 27, como procesador de 32 bits. (Por esta razón, los programas de 64 bits son casi siempre más de 32 bits.) Bitmap de 16 colores no ocupa mucho espacio, un bloque de 20 × 20 píxeles exigir a todos ½ x 20 x 20 = 200 bytes. En un ciclo del procesador puede procesar 2 píxeles.

Gráficos tenían baja resolución y era de dos dimensiones. Pero era posible engañar con éxito los sentidos a través de pseudo-3D o 2.5D. El más famoso simulador 2.5D-car es Rad Racer 1984. Lotus Esprit Challenge (derecha) en 1992 parece bastante plausible.



elementos 2.5D conocidos shooters en primera persona Doom y Wolfenstein 3D. Dejó un fragmento El Tren: Escape a Normandía (1987) para Commodore 64 .

La música fue generado sobre la marcha, nadie lo mantuvo en forma registrada - simplemente no sería suficiente espacio. A veces hay excepciones, pero sólo ilustran la falta de razonabilidad de la era para mantener a los sonidos del juego en forma de un registro. Octavo de los cartuchos de 512 kilobytes Sonic the Hedgehog, el primer juego de la serie ejecuta a través del erizo azul a partir de 1991, celebró éste sonido duración de uno a dos segundos . Era necesario nombrar a la empresa, el editor pierde en el inicio.

Un ejemplo de esta generación de formato de música puede ser MIDI, aunque el juego en ese momento trabajaba en un nivel mucho más bajo. En lugar de las notas utilizadas patrones de pedidos, que necesitan mucha menos memoria. He aquí un ejemplo de lo que puede lograrse con el sonido de un bit.



The Legend of Zelda , más el primero de la mítica serie sobre muchacho élficas en una gorra verde para 1986 fue un gran juego, que incluso tuvo que encajar en el cartucho en el camino tanto como 128 kilobytes. Hoy, ese número suena ridículo, pero el juego no pequeña: consistía en una grande y dos calabozos nadmira, cada uno de los cuales era el doble nadmira. Las imágenes se puede hacer clic.









El primer truco es visible a la vez: la red estándar se apretó máximo. Underground constará de 16 × 16 = 256 pantallas nadmir de 8 × 16 = 128. Por lo tanto, los datos de la pantalla en la que Link es, caben en un byte: 4 bits para cada una de las coordenadas, y para uno de los bits no nadmira se utilizó. Curiosamente, el área azul segunda mazmorra de la forma de la letra L no cabe en el espacio asignado a ella, por lo que sus dos pantallas adicionales se encuentran a la izquierda.

Si te fijas bien, cada pantalla es una matriz. Pantallas nadmira y mazmorras fueron tratados de manera diferente. Pantalla Nadmira - una cuadrícula de 16 × 11 azulejos, cada uno de los cuales pueden ser de tierra, arena, piedras, arbustos, agua, cascada, piedra sepulcral, escaleras, puente / marina, escotilla o un agujero en la pared, además de un número de opciones para decoraciones especiales - árboles y entrada a la cueva, que fueron tratados de una manera especial.

Además de la tierra, no se utiliza más de 3 fichas, por lo que dos bytes, divididos en 4 bits Nibble, suficiente para almacenar información acerca de qué tipos de azulejos debe estar en la pantalla. Cada baldosa requiere sólo dos bits de datos. Como resultado de ello, cada pantalla requiere 44 bytes de datos (y dos bytes para almacenar información sobre el uso de las baldosas). Ajuste nadmir total en un poco menos de 6 kilobytes.

La mayoría de las pantallas nadmira utiliza ya sea blanco, marrón o de color verde, y algunos - un color marrón a verde, verde a marrón o blanco en marrón. Dos colores se pueden utilizar como el color del marco exterior y los elementos de color internos. Total de 6 opciones que encajan en tres bits o Nibble (polbayta).

Cada una de las habitaciones de la mazmorra - una cuadrícula de 12 × 7 contenido real. Pero este espacio se corta de manera peculiar: casi todas las habitaciones excepto en especiales (entradas, el extremo de la habitación, y otros) no tienen más de un tipo de barrera. Esto significa que el almacenamiento de toda la información que sólo necesite bits por azulejo, y un byte columna de 12 bytes a toda la habitación.

Todavía tenemos 12 bits adicionales. Necesidad de almacenar información sobre cada una de las paredes (personal, tipo de 3 puertas, el punto de la bomba explotó pase). 6 × 4 variantes de la pared = 24, es decir, que todo encaje en 5 bits. Además, la necesidad de almacenar información sobre el tipo de obstrucción: piedra, estatua, agua / lava, arena o vacío, que tiene 3 bits. Los últimos 4 bits definen el esquema de color de la habitación. Cada uno de los esquemas de color definidos por byte (2 opciones a 16 colores).

Así, manteniendo todo el mundo del juego a expensas del conjunto de trucos ir algunos kilobytes.

La conservación también son ejemplos de diferentes trucos. Para almacenar la información acerca de las bombas se utilizan 4 bits, la segunda mitad de bytes utilizado para almacenar información sobre el número de teclas (7). Boom y el dinero se utiliza un único valor en la longitud en bytes, por lo que cada golpe de la rupia 255 costes posibles. Para almacenar información sobre el número de piezas Triforsa apartó un byte, porque hay que tener en cuenta el orden de su colección.

Hay 8 utiliza tesoro, pero uno de ellos tiene tres niveles, mientras que los otros dos hasta dos niveles. Hay 6 tesoros "pasivos" que, por ejemplo, le permiten moverse a través del agua o mover piedras pesadas, y uno de ellos también tiene dos niveles. Por último, Link puede ser una de bronce, espada blanca o magia o puede ser desarmado. Total posible tener 22 elementos diferentes en el inventario, que se requiere para el almacenamiento de 3 bytes, pero se mantendrá hasta 2 bits.

Puede tener un máximo de 16 contenedores de corazones (4 bits) con diferentes niveles de ocupación (4 bits). La mitad de los corazones que se consideran uno de los bits restantes del equipo. Por último, la primera misión se puede o bien pasar o no, se necesita un poco más.

Seis bits se pueden establecer 26 cartas, 10 dígitos, y algunos caracteres especiales. El nombre dado a preservar tanto como 8 caracteres, que se almacenan en 6 bytes. En la versión japonesa tuvo que utilizar toda la gama de ASCII, así que hay una longitud máxima de 6 caracteres. Byte entra en coordenadas de pantalla en nadmire o calabozo, un byte a una variedad de otros datos.

< Así que guardar el juego cabe en 16 bytes , en este caso no es sólo el ahorro que firmó el texto. Para la comparación, este espacio es suficiente para 8 caracteres cirílicos en UTF-8. Hoy en día, los desarrolladores de juegos están haciendo mucho para adaptarse a sus sistemas de archivos agrupación preservación, pero 16 bytes - es sólo un error del software moderno y datos
.
En el desarrollo de Crash Bandicoot para PlayStation 1 también tenía sus propias características. RAM era el principal problema, y ​​luego - todo a la consola era 2 megabytes de memoria, por lo que tuvieron que ir a movimientos locos. Los niveles fueron más de 10 megabytes de datos que tenían que cargar dinámicamente, evitando la flacidez tasa de imagen inferior a 30 Hz.

Por esta fue escrito por un sistema de paginación maravilloso, que carga las piezas en 64 kilobytes a medida que mueve el jugador en el mapa. Fue escrito para que incluso a la velocidad de la consola de la unidad 300 kbps progruzhat todo en el momento en el personaje del juego en el área especificada del mapa.

Para el almacenamiento de recursos del juego (sonidos, texturas, modelos, códigos) en estas piezas de 64 kilobytes utilidad fue escrito envoltura. Algunos niveles son apenas marco encaja, por lo que la utilidad de utilizar una variedad de algoritmos - primer ajuste, ajuste óptimo, y otros. Después de revisar varios intentos para seleccionar la mejor opción. La tarea se complica por el hecho de que un cambio en las oportunidades que cambian de nivel, envolviendo los datos de diseño, que se debió a la complejidad de la parte matemática del proceso - como que es difícil de explicar a los artistas, que de repente querían algo para alterar. El mayor problema sigue siendo la optimización de código en C y montaje idioma, pero al final todo ha ido a los globos oculares - sólo había 4 bytes de espacio libre de dos megabytes de RAM
.
En el simulador de conducción 1984 Revs tenía un pequeño truco. Los gráficos del juego se ven como se muestra a continuación. Una gran parte de la pantalla se asigna para el azul uniforme área del cielo

< br />


Este creador del juego y se llevó el británico Geoff Crammond . Él utilizó esta área de datos de memoria de vídeo para almacenar una pieza bastante grande de código, que está en su lugar para BBC Micro era muy pequeña. Esta área está pintado en azul durante, por lo que el jugador no sabe sobre él, aunque sólo el juego no terminó con un error -. Entonces la pantalla se llenó con algunos basura

Muchos de estos trucos se utilizan para el día de hoy, a pesar de la potencia de los ordenadores personales y consolas de juegos aumentó en muchos órdenes de magnitud.

Basado en el material треда en Quora .

Fuente: geektimes.ru/post/242152/

Tags

Vea también

Nueva y Notable