En primer lugar, solo se pueden mostrar los sprites en el área del borde o un patrón repetitivo de 8 bits (8 píxeles de ancho) que se lee desde el último byte del banco de video, generalmente $ 3fff. Tenga en cuenta que solo puede ver estos sprites o patrones de 8 bits cuando engaña al chip VIC para que "no muestre" los bordes. Vea abajo.
Los bordes tienen una prioridad más alta que los sprites, por lo que normalmente cuando se dibuja un sprite en un área de borde, el borde cubre el sprite. Con un poco de engaño de chips VIC puedes desactivar los bordes.
Puede girar los bordes superior e inferior con bastante facilidad (explicaré a continuación), y el lado bordea con un tiempo muy crítico.
En primer lugar, un poco de información sobre cómo funciona el chip VIC en un c64.
El chip VIC dibuja la pantalla desde la esquina superior izquierda a la esquina superior derecha, luego por una línea y de izquierda a derecha hasta que se dibuja toda la pantalla. Realiza este redibujado 50 veces por segundo (para unidades PAL) o 60 veces por segundo para (unidades NTSC).
Hay un registro VIC de 8 bits que contiene la posición vertical del ráster en un momento dado. $ d012. En realidad, hay más de 255 posiciones posibles, por lo que el noveno bit se almacena en el bit 7 (el bit más alto) o se registra $ d011. Entonces, en cualquier punto puede leer estos registros y averiguar la posición vertical del ráster. No hay un registro disponible para leer la posición x del ráster.
Otra característica interesante del chip VIC fue utilizada para solucionar un problema cuando se usa el desplazamiento de hardware. El desplazamiento vertical básico se logró utilizando un registro de hardware para mover la pantalla de 0 a 7 píxeles verticalmente. Una vez que haya alcanzado el límite (0 o 7 según la dirección del desplazamiento) moverá cada bloque de caracteres (8x8 píxeles) un bloque verticalmente y dibujará los nuevos datos que se mostrarán en la parte superior (o en la dirección inferior). Esto funciona muy bien, excepto que cada 8 píxeles de desplazamiento vería datos "pop" en la pantalla. Para remediar esto, podría hacer que el área del borde crezca en 8 píxeles verticalmente al borrar el bit 3 en el registro $ d011. Esto se llama modo de 24 filas. De forma predeterminada, la pantalla se estableció en 25 filas de caracteres de 8x8 píxeles. En el modo de 24 líneas, aún podría dibujar caracteres en la fila inferior, simplemente quedarían ocultos por el borde.
Así que el truco para apagar los bordes superior e inferior es:
1) Establecer la pantalla al modo de 25 hileras
2) esperar a que la trama para llegar a una posición vertical entre $ f2 $ fa (los 8 píxeles entre donde se inicia el borde tanto en el modo de 24 filas como en el modo de 25 filas).
3) Ajuste la pantalla a modo de fila 24 ... moviendo el inicio vertical de la frontera por encima de la posición de la trama actual
4) Esperar hasta después de la posición trama vertical ($ FA)
5) Repita cada cuadro
Paso 3) engaña al chip VIC haciéndole creer que ya comenzó a dibujar el borde, por lo que nunca comienza a dibujarlo. Voila, los bordes superior e inferior están abiertos.
lado Con respecto a las fronteras de que puede hacer lo mismo con diferentes registros, pero como el movimiento horizontal de la trama es mucho más rápido entonces el movimiento vertical del tiempo tiene que ser mucho más fuerte. Y hay otro problema para tener en cuenta llamado jitter. < -que no explicaré aquí. Busque en la web "Stable Raster C64" para una explicación detallada de ese problema.
wow ... incluso si obtiene una respuesta, ¿tiene la posibilidad de probarla? – Dani
Mi c64 espera en el sótano –
Estoy bastante seguro de que mi padre todavía tiene nuestro viejo C64 escondido en algún lugar en el sótano también. – gnovice