precio mini juegos historia retro-computing c64 commodore

retro-computing - mini - commodore 64 precio



Dibuja en el borde de la pantalla en Commodore 64 (8)

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 videos, por lo general $ 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.

Puedes girar los bordes superior e inferior con bastante facilidad (explicaré a continuación), y el lado bordea con un tiempo muy crítico.

Primero, un poco de información sobre cómo funciona el chip VIC en un c64.

El chip VIC dibuja la pantalla desde la parte superior izquierda a la parte superior derecha, luego por una línea y de izquierda a derecha otra vez 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 cualquier 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 genial 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.

Entonces, el truco para desactivar los bordes superior e inferior es:

1) Establecer la pantalla en el modo de 25 filas

2) espere a que el ráster alcance una posición vertical entre $ f2 y $ fa (los 8 píxeles entre el inicio del borde tanto en el modo de 24 filas como en el modo de 25 filas).

3) Establezca la pantalla en el modo de 24 filas ... moviendo el inicio vertical del borde por encima de la posición de ráster actual

4) Espere hasta después de la posición vertical de la trama ($ fa)

5) Repite cada cuadro

Paso 3) engaña al chip VIC para que piense que ya comenzó a dibujar el borde, por lo que nunca comienza a dibujarlo. Voila, los bordes superior e inferior están abiertos.

En cuanto a los bordes laterales, puede hacer lo mismo con diferentes registros, pero como el movimiento horizontal del ráster es mucho más rápido, el movimiento vertical requiere mucho más tiempo. 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.

De acuerdo. Espero que no se cierre porque tengo esta curiosidad desde hace 25 años y me encantaría entender el truco.

En el comodoro 64, el límite no era direccionable por el 6569 VIC. Todo lo que podía hacer era dibujar píxeles en el área central, donde se movía el cursor. El borde siempre fue uniforme, aunque podrías cambiar su color con poke 53280, si recuerdo mal el color.

Sin embargo, recuerdo claramente las intros de juegos donde el borde se presentó con gráficos, como si fuera totalmente direccionable. Traté de entender cómo funcionaba, pero nunca llegué al punto. las leyendas dicen que fue un uso inteligente de los duendes, que, en algunas circunstancias, podría dibujarse en el borde, pero no sé si es una leyenda urbana.

editar : solo lea esto de uno de los enlaces provistos

Los sprites se multiplexaron en líneas de trama verticales (más de 8 sprites, a veces hasta 120 sprites). Hasta que Group Crest lanzó Krestage 3 en mayo de 2007, existía la percepción común de que no podían aparecer más de 8 sprites en una línea raster, pero la asignación de nuevas coordenadas Y hacía que reapareciera más abajo de la pantalla.

Esto es malo ... le ganas al ráster y reposicionas el sprite antes de que llegue allí ...


Gráficos en el borde: O sprites OR usando el efecto $ 3FFF (que en realidad NO son sprites en absoluto). Para entrar en detalle necesita mucho más espacio y tiempo de los que tengo disponible aquí.


IMPRIMIR "ERA 53280, TIPO".


Por lo que entiendo, esto solo es posible para los sprites.

Los Sprites pueden estar en el área fronteriza, y el borde se sobrepone. Por algún truco, el borde puede ser eliminado.


Puede abrir los bordes superior e inferior con un simple programa BASIC:

1 poke56334,0:poke53266,212:poke53265,27:poke16383,0 2 h=53265:i=53273:h1=19:h2=27:i1=1 3 pokei,i1:waiti,i1:pokeh,h1:pokeh,h2:goto3


También puede obtener sprites para bordear en básicos: Sprites BÁSICOS en Border

iirc, también había alguna forma de confundir el chip de video, de modo que dibuje la línea 26 de texto.


Tenga en cuenta que lo que hizo Krestage 3 (como se menciona en la pregunta) es diferente.

Un nivel del truco es meterse con el borde cuando se acaba de dibujar la parte inferior del "papel" (rectángulo del área de trabajo, la cosa dentro del borde). Esto le permite tener sprites en el borde superior e inferior.

Un nivel superior es meterse con él en el borde derecho del papel, en cada línea de trama, todo como se explica en la respuesta de JohnD anterior. Esto le permite tener sprites en los bordes izquierdo y derecho.

Nada de esto le permite tener más de 8 sprites en una línea. Eso es solo magia de Krest.

Con mucho, el mejor recurso (que conozco) para el chip VIC es "El controlador de video MOS 6567/6569 (VIC-II) y su aplicación en el Commodore 64" de Christian Bauer y una adición útil es "Los accesos de memoria del Controlador de interfaz de video MOS 6569 VIC-II y MOS 8566 VIC-IIe " de Marko Mäkelä.
Lector de advertencias: estas son algo técnicas, y puede que las encuentres más fáciles de entender después de que hayas programado algunos efectos de VIC.

Si los enlaces alguna vez mueren, solo busca en google los artículos por título, están infinitamente replicados.


Voy a dar una puñalada en la oscuridad aquí (no he hecho esto yo mismo). Encontré esto en wikipedia.

La sección c64demo explica que:

Los efectos que se creían imposibles se lograron en demostraciones, principalmente debido a efectos secundarios no documentados pertenecientes al chip MOS Technology VIC-II . Algunos ejemplos para el engaño de VIC:

Uno de los hacks mencionados fue:

Los scrollers Sprite fueron colocados en el borde. Al engañar al hardware para que no dibuje el borde alrededor de la pantalla, los sprites podrían moverse a esta área y mostrarse.

Por supuesto, la parte interesante de la pregunta es cómo se hace. Sugiero buscar en alguna base de datos de demostración que incluya el código fuente en busca de una demostración que emplee el truco.