Juegos de caracteres personalizados

Los juegos de caracteres personalizados son una extensión del modo carácter estándar. La idea básica es diseñar un nuevo juego de caracteres, completo o parcial, almacenar su definición en RAM, y configurar el VIC para que lea los caracteres de RAM y no de ROM.

Para diseñar el nuevo juego de caracteres se puede utilizar el editor de caracteres de CBM prg Studio. Con este editor es posible hacer cosas como:

  • Diseñar matrices de 8 x 8.
  • Invertir los diseños.
  • Rotar los caracteres (90 grados, 180 grados, etc.).
  • Voltear los caracteres.
  • Cambiar los colores (en el caso multicolor).
  • Importar y exportar juegos de caracteres.
  • Etc.

Editor caracteres

Una vez diseñado el juego de caracteres, sus datos (8 bytes por carácter) se pueden exportar de varias maneras, por ejemplo, en formato listado de bytes que se inserta en el programa ensamblador (ej. BYTE    60,66,165,129,165,153,66,60) o en formato de fichero binario (*.bin) que luego se incluye en un programa con la directiva “incbin”.

Por último, queda decirle al VIC que tome los caracteres de RAM y no de ROM. Esto se hace actuando sobre los bits 1, 2 y 3 (recordemos que los bits se empiezan a numerar en 0) del registro $d018. Este mismo registro (bits 4, 5, 6 y 7) también vale para recolocar la RAM de pantalla.

Con 3 bits es posible generar 8 valores distintos. Y puesto que el VIC puede direccionar 16K, y que cada juego de caracteres completo ocupa 2K, de ello se concluye que los juegos de caracteres tienen que almacenarse en uno de los 8 bloques de 2K que caben en 16K.

Juegos de caracteres

Los 2K del juego de caracteres no pueden ocupar una posición arbitraria dentro de los 16K. Tienen que empezar en una de las fronteras de 2K: 0K – 2K, o 2K – 4K, o 4K – 6K, o …

Por otro lado, una cosa es la posición del juego de caracteres dentro del banco de 16K direccionable por el VIC, y otra cosa es la posición dentro del mapa de memoria global del C64. Para determinar la posición absoluta hay que sumar el segmento a la posición de base del banco direccionable por el VIC.

Por ejemplo, si el VIC está configurado para usar el banco 0 ($0000 – $3fff), y el segmento que utiliza el juego de caracteres es el que va desde 2K hasta 4K ($0800 – $0fff), entonces el juego de caracteres tendrá que empezar en la posición $0000 + $0800 = $0800. Pero si el VIC estuviera configurado para usar el banco 1 ($4000 – $7fff), entonces el juego de caracteres tendría que empezar en la posición $4000 + $0800 = $4800.

En el ejemplo que se adjunta se han redefinido los caracteres desde la A hasta la J, dejando todos los demás como el estándar. El nuevo juego de caracteres se ha colocado en el último segmento de 2K del banco 0 ($0000 – $3fff), es decir, en las posiciones $3800 – $3fff. Al ejecutar el programa la pantalla muta como se ve a continuación.

Pantalla mutada

Por supuesto, nada impide usar colores (RAM de color) con los caracteres personalizados. Pero igual que con los caracteres estándar, cada carácter tendrá un único color, aunque un carácter y el de al lado tengan colores distintos.


Programa de ejemplo: Prog40

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s