radastan escribió:...pero prefiero experimentar lo que pasa si usamos sólo las líneas impares por vídeo compuesto.
Míralo tú mismo:
Carga el siguiente programa en un Spectrum real. Este program simula lo que pasaría si el Spectrum sólo mostrara un campo de los dos. El efecto de "apagar" un cuadro se consigue a base de interrupciones. Cuando llega el retrazo vertical mira el valor de una variable que va basculando 0-1-0-1-0-1... Si es 0, la rutina guarda el contenido actual de la memoria de atributos en RAM, y a la vez, la va escribiendo a 0. Además, pone el borde también a 0. Esto tiene como efecto que durante el siguiente campo, la pantalla se verá completamente negra.
Si la variable es 1, entonces se restaura el color del borde a partir de la variable del sistema BORDCL (23624) y el contenido de la memoria de atributos de la copia que se hizo en RAM. El efecto es que en el siguiente campo, la pantalla se verá con su contenido normal.
Dado que esto es sólo una emulación del efecto a base de cambiar manualmente el color de lo que se ve en pantalla, verás que a veces se "deja" basurilla en forma de cuadros que deberían haber cambiado y no lo han hecho, pero aparte de eso, es así como se vería.
Si tienes pinchado el Spectrum a una TV de tubo, al ejecutar el programa verás un parpadeo bastante molesto si el fondo es blanco. Con fondo negro el parpadeo es menor, a menos que tengas un dibujo con muchos píxeles blancos.
Si lo tienes pinchado a una tele LCD o plasma, entonces el efecto que verás en pantalla dependerá de cómo maneje tu tele la señal de video. En la mayoría de los casos la tele hará un desentrelazado de la imagen y pondrá los dos campos superpuestos, cada uno en su sitio, aunque la señal original sea PAL progresiva. Si es así, verás un bonito efecto de scanlines, y nada (o muy poco) de parpadeo.
Si no puedes echar mano de un Spectrum en este momento, puedes ver los efectos que te describo usando el emulador EightyOne (ningún otro conozco que sea capaz de emular la TV como lo hace éste). Configura EightyOne para emular un 48K. Carga el programa y en las opciones de "TV Emulation" (tecla F9) marca todas las casillas excepto la última. Lo que ves sería lo que se ve en una tele de tubo (salvo el tema de que el refresco del emulador no coincide con el refresco de tu pantalla y seguramente se vea que el cambio de blanco a negro no lo hace de forma limpia, sino que parece que cambia a mitad de pantalla). Si marcas la última casilla (Interlaced display) entonces EightyOne se comporta como una tele LCD/plasma y desentrelaza la imagen del Spectrum, mostrándote los mismos scanlines que verías en una tele de estas.
-- 04 Oct 2012, 18:49 --
Joss escribió:(Perdón que me meta en la discusión de vez en cuando, sobre todo si son preguntas muy básicas.....)
Lo que contais de buffer multiplexado es algo que también tiene el Amstrad CPC por ejemplo?:
No sé cómo lo hace el Gate Array en el Amstrad para compartir la memoria de video con el procesador, pero creo recordar que mete un estado de espera a la CPU en todos los ciclos de bus, de forma que en ese ciclo de espera, el Gate Array le "roba" la memoria a la CPU, hace su acceso, y se la devuelve.
En el trozo de esquema que pones no veo ningún bus multiplexado. Lo que hay es un driver triestado para aislar a la CPU del bus de datos de la memoria dinámica cuando el Gate Array tiene que acceder a ella. Probablemente el bus de direcciones que va a la RAM dinámica (lo que estaría más arriba del dibujo) sí que esté multiplexado.