Una cosa que habria que investigar es si la salida de video de Amiga tiene alguna señal de reloj o algun tipo de indicador que sirva para determinar el momento en que comienza un pixel, ya que de esta forma se minimizaria la cantidad de memoria necesaria para capturar la imagen, y se mejoraria la calidad de la digitalizacion. El scandoubler que tengo pierde calidad cuando se usan por ejemplo los modos de 1280x512, se ve que no tiene tanta resolucion horizontal y esta preparado para algo no mayor de 800x600.
Adjunto la hoja de datos del ADV101 de Analog Devices, este es un conversor D/A de 8 bits, triple, es decir 3 conversores, como para rojo, verde y azul, con entradas en serie. Esto unido a un micro rapido y memoria puede ser directamente una placa de video de 24 bits, pero puede ser util para enlazarlo con 3 memorias FIFO con velocidad de entrada y salida independientes, y algun conversor A/D similar a este, es decir triple, o 3 conversores. Creo que con eso y un poco de logica para detectar los sincronismos y coordinar las operaciones de los diferentes chips, algo se puede hacer.
Para mi casi chino básico, pero como disfruto leyendo lo que sabes del tema viejo ! Entiendo algo de la teoría en si, perono tengo conocimientos de electronica, igual pulgar arriba por las ideas y a seguirla !
para mi tambien se complico un poco, no se tanto como ud jorge ;)
pero como dije yo me pongo a soldar lo que sea, en placa experimental, smd diganme q compro y que cosa va con que cosa ;)
Yo no se nada ni me animo a hacer ninguna soldadura, pero desde acá, mi más honesto apoyo moral al proyecto.
Para que todos esos degenerados que pululan por acá que tienen decenas de computadoras y 2 monitores con suerte, puedan disfrutar de sus gigantescas colecciones que "no son la envidia de nadie" (notese que los parentesis enfatizan mi ironía)
Bueno, si tienen ganas de soldar, suelden !!!
Este proyecto es un scandoubler de 16 millones de colores (256 gamas de R, G y B simultáneamente). Salvo la GAL (U10) lo demás se consigue todo o es reemplazable por sus equivalencias.
No es un laburito fácil.
Self Proclaimed Commodore Guru
17 años atrás
Self Proclaimed Commodore Guru
Los elementos necesarios para un scandoubled/flickerfixer serian 4:
1. Conversor A/D triple de alta velocidad y 8-bits por canal
2. Memoria dual-port con la suficiente capacidad para almacenar 1 semi-cuadro. Las memorias dual-port son las que se pueden leer por un lado y escribir por el otro al mismo tiempo, comunmente se encuentran en lectoras/grabadoras de CD.
3. Conversor D/A triple de alta velocidad.
4. logica de direccionamiento y temporización.
El primer elemento (el conversor A/D) puede obviarse si se hace un scandoubler interno para Amiga. Ya sea para el puerto de video en las amigas de caja grande o para enchufar en el zocalo de Denise en la A500. La resolucion puede ser de 16 (o 12) bits en lugar de 24 si se va a usar en Amigas que no son AGA.
La memoria tiene que ser dual port (o comun y rapidisima y hacer un circuito con una temporizacion todavia más ajustada), ya que mientras se escribe una linea del 2do semicuadro, se va a estar leyendo la 'misma' linea pero del semicuadro anterior, y al doble de velocidad. Por cada pixel que se escribe se leen 2.
El conversor D/A obviamente tiene que tener la misma resolucion que el A/D. Tambien puede obviarse si se hace un scandoubler interno para A500, ya que de eso se encargaria el hibrido de video.
El circuito de direccionamiento y temporizacion se encargaria de generar los sincronismos de salida y la secuencia de direccionamiento para la escritura y lectura de la memoria. Como todos los chips de video funcionan a partir de 1 solo cristal (sea este el mismo que genera el reloj del sistema o no), todas las temporizaciones estan sincronizadas, por lo que, habria que averiguar:
-Frecuencia del pixel (dot) clock de la maquina para la que va a ser el scandoubler.
-Cuantos ciclos del dot clock pasan desde por ej, el sincronismo vertical hasta el primer pixel de la imagen.
Entonces, el circuito del scandoubler debe tener un reloj del doble de frecuencia que el dot clock de la maquina, y una forma de sincronizarse con esta. En la amiga es facil porque tiene soporte para genlock. En la C64 el dot clock esta disponible en el puerto de expansion, en la Spectrum todo sale de 1 solo cristal asi que se puede usar el reloj del sistema para generar el dot clock. En las MSX ni idea.
Y escribi tanto que ya me perdi solo ;D despues sigo...
Self Proclaimed Commodore Guru
17 años atrás
Self Proclaimed Commodore Guru
Ah, el maestro Fekete se me adelanto y puso un circuito que hace lo que yo trate de explicar ;D
Aja, y veo porque una memoria FIFO es mas simple de implementar que con una Dual Port. Toda la logica de direccionamiento esta dentro del chip.
Veamos, no se entiende del todo porque en realidad no estoy planteando la solucion, sino los datos que encontre investigando un poco, y alternativas posibles, suponiendo como puede ser que funcione un scandoubler.
Simplificando un poco, por ahi no tan exacto como la realidad pero para que se entienda, pongamos el caso de Amiga en un modo de video comun PAL, por ejemplo, la maquina envia 3 señales, por la salida de rojo, la de verde y la de azul, ademas de los sincronismos horizontal y vertical. El monitor barre la pantalla horizontalmente de izquierda a derecha, cuando recibe un pulso de sincronismo horizontal apaga el haz, baja una linea y se coloca de nuevo del lado izquierdo de la pantalla para dibujar otra linea (parecido a lo que hace el enter cuando se tipea texto, baja una linea y se coloca el cursor del lado izquierdo). Asi se dibujan todas las lineas de la pantalla hasta que el monitor recibe un pulso de sincronismo vertical, con lo cual el monitor apaga el haz y se coloca arriba a la izquierda de la pantalla (como la tecla home en un editor).
Cada linea de estas para nosotros van a ser 3 señales, rojo, verde y azul, que para el caso son como 3 imagenes blanco y negro, que el monitor recibe y convierte en un color en la pantalla. Tomamos una de las 3 señales, y vemos que empieza con un pulso de sincronismo horizontal, el cual le dice al monitor que empiece a la izquierda de la pantalla, luego vienen los datos de la linea, representados por niveles de voltaje para cada pixel, donde el minimo voltaje es minimo brillo y el maximo voltaje es el maximo brillo, y la linea se termina cuando empieza la siguiente, con un pulso de sincronismo horizontal indicando que el haz debe comenzar nuevamente del lado izquierdo una linea mas abajo. Esta linea se ve como si vieramos un fragmento de un wav, una onda donde los niveles a medida que avanza van representando los pixels. En esta imagen que tomamos de ejemplo en un modo PAL, la linea dura 64 microsegundos (señal de 15625 Hz), mientras que el VGA requiere que dure la mitad, 32 microsegundos (cerca de 31500 Hz creo). Es decir que para lograr un scandoubler tenemos que acelerar la señal, esto no se puede lograr en tiempo real, por lo cual necesitamos digitalizar la imagen entera, almacenarla en una memoria, y luego reproducirla al doble de velocidad en el monitor VGA. Ya que estamos digitalizando, y la Amiga puede tener resoluciones de 736 o 724 pixels horizontales, necesitamos capturar en al menos 800 pixels para mantener la calidad. Los modos de 1280 pixels no se verian bien, pero tampoco son muy usados, y como dije mi scandoubler no los muestra correctamente.
La idea entonces es digitalizar la imagen, almacenarla en memoria temporal y volver a armarla pero al doble de velocidad, para lograr esto hay chips que digitalizan una señal monocromo en 8 bits, se necesitaria uno por cada componente (rojo, verde, azul) que son señales monocromas. Con 8 bits por cada componente tenemos color de 24 bits. Este chip digitaliza la señal en 8 bits y la almacena en una memoria del tipo cola, es decir FIFO (First In, First Out), lo cual implica que es una memoria especial con una entrada y una salida, que no permite acceder a cualquier byte, sino que solamente agrega un dato al final de la cola, y solo lee datos del principio de la cola. Una memoria de este tipo simplifica el diseño porque no necesitamos leer en distinto orden del cual escribimos, funciona como buffer de imagen. La memoria de la cual puse la hoja de datos, soporta que se agreguen datos a cierta velocidad, por ejemplo 15KHz a medida que vamos digitalizando, y que se lean a otra velocidad, por ejemplo 31KHz, con lo cual podemos ir escribiendo una linea mientras leemos otra y hacemos la conversion de velocidad sin mayor problema, directamente al leer la memoria. Las salidas de las 3 memorias irian a ese conversor triple, que vuelve a convertir los datos en señales analogicas de video que salen al monitor VGA.
Espero que se haya entendido un poco mas, seria un poco mas claro pero no tengo ganas de hacer diagramas ;D