13/08/2019

Haciendo un buen uso del hardware (Parte $1)

Vamos a hacer una copia de seguridad de conocimientos, pensando en que pueda ser útil para otros programadores de CPC.

Ya hemos escuchado miles de veces sobre las limitaciones de la máquina, entre otras, esa típica de que es mucha memoria de vídeo para un z80. Por supuesto, nadie niega eso, pero al mismo tiempo la máquina ofrece algunas características que permiten equilibrar la balanza, aunque para ello debemos de diseñar nuestros juegos pensando en la máquina y sus limitaciones.

Comenzaré por unos consejos básicos, que en el año 2019 deberían ser más que conocidos, de todas formas ya sabemos que siempre hay alguien que llega tarde a la fiesta, y a veces esa es la persona que falta para animar el cotarro, así que ¡adelante!

Lo primero de lo que voy a hablar es que deberíamos siempre intentar usar marcadores ó HUDs en horizontal, ya que los marcadores en vertical impiden el uso de algunas de las mejores características del hardware de vídeo del CPC. Es decir intenta evitar hacer estas cosas:

Puede parecer una forma interesante de tener una pantalla más "llena". Pero en contrapartida nos va a dificultar el hacer uso de un doble buffer con el CRTC, ya que tendremos que usar 32 KBs de memoria para almacenar las dos copia de la pantalla.

Adicionalmente nos va a impedir usar el scroll hardware del CRTC, ya que este tipo de scroll va a mover toda la pantalla, por lo que tendrás que perder tiempo de cpu en repintar ese marcador en su nueva posición (siempre hablando de CPCs normales, los CPC+ son otra historia)... y si, existen juegos que hacen esto, "Sly Spy" estoy hablando de tí :P

Una grandísima ventaja de poner un marcador en horizontal es que puedes emplear una de las pocas técnicas de la demoscene que son útiles en los juegos, me estoy refiriendo a las rupturas verticales. Esta técnica consiste en dividir la pantalla en vertical en diferentes zonas, donde cada una de estas zonas puede usar diferentes direcciones de memoria.

Haciendo un uso inteligente y creativo de esta técnica, puedes aprovechar mejor la memoria disponible para tu proyecto, consiguiendo realizar sin mucha dificultad efectos como estos:


-*-