Pregunta

Ok. Espero que no se cierran porque tengo esta curiosidad desde hace 25 años y me gustaría entender el truco.

En el Commodore 64 la frontera no se direccionable por el 6569 VIC. Todo lo que podía hacer era dibujar píxeles en la zona central, aquel en el que el cursor se movió. La frontera fue siempre uniforme, si bien se puede cambiar su color con empuje 53280, de color si no recuerdo mal.

Sin embargo Recuerdo claramente juegos introducciones donde la frontera fue ofrecido con gráficos, como si fuera totalmente direccionable. Traté de entender cómo funcionaba, pero nunca llegó al punto. leyendas dicen que fue un uso inteligente de los sprites, lo que podría, en ciertas circunstancias, pueden dibujar en la frontera, pero no sé si se trata de una leyenda urbana.

editar : acaba de leer esto de uno de los enlaces proporcionados

  

Sprites se multiplexan a través   líneas de trama verticales (de más de 8 sprites,   a veces hasta 120 sprites). Hasta   la cresta Grupo liberado Krestage 3 en   Mayo 2007 no fue el común   percepción de que no más de 8 sprites   podría aparecer en una línea de trama, pero   la asignación de nuevas coordenadas Y lo hicieron   reaparecer más abajo en la pantalla.

Este es el mal .... a vencer la trama y la posición del sprite antes de que llegue allí ...

¿Fue útil?

Solución

En primer lugar sólo los sprites se pueden visualizar en la zona fronteriza o un patrón de repetición de 8 bits (8 píxeles de ancho) que se lee desde el último byte del banco de vídeo, por lo general $ 3FFF. Nota Sólo se puede ver estos sprites o patrón de 8 bits cuando usted truco del chip VIC en "que no contengan" las fronteras. Véase más abajo.

Los bordes tienen una prioridad más alta que sprites, por lo que normalmente cuando un sprite se dibuja en una zona fronteriza de la frontera cubre el sprite. Con un poco de VIC engaño de chip puede activar las fronteras fuera.

Puede activar los bordes superior e inferior con bastante facilidad (explicaré más adelante), y el lado de las fronteras con el 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 señala a la pantalla desde la parte superior izquierda a la parte superior derecha, luego hacia abajo una línea, y de izquierda a derecha de nuevo hasta que se extrae toda la pantalla. Se realiza esta redibujo de 50 veces por segundo (para PAL unidades) o 60 veces por segundo para (unidades NTSC).

Hay un 8 bits VIC registro que contiene la posición vertical de la trama 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 (bit más alto) o regístrese $ D011. Así que en cualquier momento se puede leer estos registros y averiguar la posición vertical de la trama. No existe un registro disponible para leer la posición x de la trama.

Otra característica interesante del chip VIC se utilizó para solucionar un problema cuando se utiliza el desplazamiento hardware. desplazamiento vertical básica se logró mediante el uso de un registro de hardware para mover la pantalla 0-7 píxeles verticalmente. Una vez que llegó a límite (0 o 7 dependiendo de la dirección del desplazamiento) le mover cada bloque de caracteres (8x8 píxeles) a una cuadra verticalmente y dibujar los nuevos datos que se muestran en la parte superior (o inferior dependiendo de la dirección). Esto funciona muy bien, excepto que cada 8 píxeles de desplazamiento que se vería datos "pop" en la pantalla. Para remediar esto, se podía hacer que la zona fronteriza crecer por 8 píxeles verticalmente en la limpieza de bit 3 en el registro $ D011. Esto se conoce como modo de fila 24. Por defecto, la pantalla se establece en 25 filas de caracteres de 8x8 píxeles. En el modo de fila 24, todavía se podía dibujar personajes de la fila inferior, que sólo serían ocultados por la frontera.

Así que el truco para apagar los bordes superior e inferior es:

1) Ajuste el modo de pantalla a 25 fila

2) esperar a que la trama para alcanzar una posición vertical entre $ f2 y $ fa (los 8 píxeles entre donde la frontera comienza en tanto 24 modo de fila y 25 modo de fila).

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 que después de la posición de trama vertical ($ fa)

5) Repetir cada trama

Paso 3) trucos del chip VIC en el pensamiento de que ya se ha iniciado la elaboración de la frontera, por lo que nunca se empieza a dibujar. Voila, los bordes superior e inferior están abiertos.

En cuanto a las fronteras laterales que puede hacer la misma cosa 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 otra cuestión a tener en cuenta denominada fluctuación. <-Que no voy a explicar aquí. Buscar en la Web "Estable Raster C64" para una explicación en profundidad de esta cuestión.

Otros consejos

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

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

Un nivel más alto es a meterse con él en el borde derecho del papel, en cada línea de trama, todos como se explica en la respuesta de JohnD anteriormente. Esto le permite tener sprites en la frontera izquierda y derecha.

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

Con mucho, el mejor recurso (no conozco) para el chip VIC es " el MOS 6567/6569 controlador de vídeo (VIC-II) y su aplicación en la Commodore 64 " por Christian Bauer y una adición útil es "acceso a la memoria del MOS 6569 VIC-II y MOS 8566 controlador de interfaz de vídeo VIC-IIe" por Marko Mäkelä.
caveat lector: estos son algo técnica, y es posible encontrar más fáciles de entender después de que haya programado alguna VIC afecta a ti mismo.

Si la relación cada vez mueren, sólo Google hasta los artículos por título, que están replicados sin fin.

Puede abrir las fronteras 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

Im va a tomar una puñalada en la oscuridad aquí (havent hecho esto por mí mismo). He encontrado esto en wikipedia.

El href="http://en.wikipedia.org/wiki/Commodore_64_demos" rel="nofollow noreferrer"> sección explica que:

  

Efectos creía imposible eran   logrado en demos, sobre todo debido a   indocumentados efectos secundarios relacionados   a la MOS Technology VIC-II de chip .   Algunos ejemplos de VIC-engaño:

Uno de los cortes mencionados fue de:

  

scrollers Sprite se colocaron en el   frontera. Engañando al hardware no   para dibujar el borde alrededor de la pantalla,   sprites podrían trasladarse a esta área   y se muestra.

Por supuesto, la parte interesante de la cuestión es cómo se hace. Yo sugeriría mirar en alguna demostración base de datos que incluye el código fuente en busca de una demo que emplea el piratear.

IMPRIMIR "IT WAS 53280, amigo."

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

Sprites se les permite estar en la zona fronteriza, y la frontera se ve arrastrado overtop. A través de algún engaño, la frontera se puede quitar.

Los gráficos en la frontera: Ninguno de los sprites o utilizando el efecto $ 3FFF (que en realidad es NO sprites en absoluto). Para entrar en detalle necesita mucho más espacio y tiempo que tengo disponible aquí.

También puede obtener sprites a frontera en básica: BASIC Sprites en Frontera

IIRC, también había alguna manera de confundir el chip de video es así, que drena la línea 26 del texto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top