¿Qué constituye exactamente una pantalla en un juego típico de C64?

10

Estoy tratando de descubrir los conceptos básicos del desarrollo del juego C64 más allá de BASIC, y podría usar algunos consejos sobre algo muy básico, pero importante: ¿qué es realmente todo eso en la pantalla y cómo dibujarlo?

Echa un vistazo a Katakis / Denaris :

Captura de pantalla de Katakis

Hay al menos 9 cosas diferentes en la pantalla:

  1. La barra de puntuación, con diferentes tipos de letra.
  2. El barco en sí
  3. Un satélite conectado a la nave, desmontable
  4. Proyectiles de armas secundarias
  5. Proyectiles de armas primarias
  6. Objetos en movimiento (pueden ser barcos enemigos)
  7. La barra de estado, con una imagen de la nave, el número de vidas y tres secciones que puede llenar
  8. La barra de carga del arma principal, puede llenarse hasta el final
  9. Un campo estelar desplazable en el fondo
  10. (sin numerar en la pantalla) Objetos sólidos como rocas o paredes de metal que forman parte del fondo

El C64 solo admite 8 sprites por línea de exploración horizontal, así que no creo que todo en el medio de la pantalla pueda ser un sprite. Supongo que cualquier cosa que requiera una colisión sería un sprite (ya que puedo obtener la detección de colisión de hardware con sprites), pero incluso entonces alcancé rápidamente el límite de 8 sprites. Además, mis armas pueden disparar mucho más de un proyectil: mi nave, el satélite y 6 balas ya serían 8 sprites seguidos (miren unos 50 segundos en el video).

Además, ¿qué modo gráfico usaría un juego como este? El Manual de programación enumera el modo de mapa de bits que esencialmente modifica la memoria de la pantalla directamente. ¿Es este el modo en el que normalmente debería estar trabajando? ¿Cómo compondría todos los elementos que no son sprites para que aparezcan en la pantalla?

Muchas de las cosas en la barra de puntuación y estado son estáticas ("Área: 01" o el "marco"), así que supongo que las rellenaré una vez cuando comience el nivel. Las cosas que deben actualizarse (el puntaje, las barras de carga en la parte inferior) se actualizarían llenando la memoria de la pantalla con negro y luego dibujando el nuevo puntaje en cada cuadro.

¿O tengo que dibujar la pantalla completa en cada cuadro?

Michael Stum
fuente

Respuestas:

13

En c64 puedes "multiplexar" sprites. Después de que se dibujan, los mueves a un nuevo lugar y los reutilizas. La mayoría de los objetos en el medio son probablemente sprites multiplexados. En c64 es muy fácil usar más de 8 sprites siempre que no ocupen las mismas líneas de escaneo horizontales. Además de eso, puedes hacer sprites de software usando gráficos de fuente si es necesario (al menos los proyectiles en este caso).

2, 3, 6. Es probable que sean sprites.

4, 5, 9. Es probable que sean "sprites" de software de gráficos de caracteres (8x8 píxeles)

El juego no usaría el modo de mapa de bits, requeriría demasiado movimiento de una memoria (a menos que haga algunos trucos de chips VIC ...). El modo utilizado sería el modo de gráficos de caracteres.

Lo que necesita dibujar dependerá. En este caso, si miras lo suficientemente de cerca, hay ciertos patrones de estrellas de tamaño (x * y píxeles) que se repiten, por lo que básicamente actualizarías la memoria de caracteres de esas fuentes para emular el desplazamiento del campo estelar.

Puntuación / estado que completa al inicio y luego actualícelos cuando sea necesario.

Tendría que actualizar los sprites y su posición en cada cuadro. También actualizarías proyectiles. También actualizaría ese patrón de campo de estrellas de píxeles x * y.

Solo viejo c64 geezer
fuente
55
Miré más de cerca el video de Katakis. Algunos de esos objetos son en realidad gráficos de fuente. En realidad se puede ver mirando los colores utilizados. Además, starfield no es solo un píxel X * Y, sino que está ligeramente diferente, aunque todavía está en gráficos de fuente. Tendría que actualizar los gráficos de fuente desplazados cada octavo píxel porque los registros de desplazamiento de hardware solo mueven los gráficos 8 píxeles, después de ese truco de software. Además, no desea utilizar colisiones de sprites de hardware. No pueden diferenciar qué sprites realmente colisionan si hay más de 2 sprites involucrados. Solo las matemáticas simples son útiles en colisiones.
Solo viejo c64 geezer
2

Hace algún tiempo leí un artículo en la revista alemana C64. Las viñetas son personajes que actúan como sprites como alguien ya señaló. La nave y los enemigos son sprites.

Los niveles están hechos de personajes también pero con un giro. Como los niveles son tan grandes y la memoria es preciosa, Trenz escribió su propio conjunto de herramientas para agrupar personajes en módulos.

Para que pueda usar módulos más grandes y componerlos. También usaría ciertos módulos de parche para conseguir que la intersección de los módulos sea agradable y limpia.

En general, es una especie de compresión, donde los niveles se describen como bloques de construcción en lugar de char por char.

También puede notar que en Katakis algunos niveles tienen fondos de paralaje.

Esto se hace al tener un patrón para llenar el fondo, en su mayoría compuesto por caracteres de 2x2 o 3x3, y animarlo (desplazamiento de bits) contra la dirección del desplazamiento. Por ejemplo, el nivel se desplaza 2 píxeles hacia la izquierda, el patrón de fondo se desplaza 1 píxel hacia la derecha, por lo tanto, parece desplazarse a un ritmo más lento.

Espero que ayude

Una cosa más que realmente puede ver los módulos individuales y tal aquí https://archive.org/details/64er_1989_10/page/n27 desplazarse a la página 24

Kastor
fuente