HispaMSX

Problemas detectando el V-blank

2000-07-28 00:08:30

    Hola Eduardo!

Ya os digo: en MSX de primera generación va perfecto y temporiza de un
modo
muy exacto. Pero no conozco casi nada sobre el hardware del MSX2: por
favor,
indicádme en qué punto está el problema. ¿Cambia por casualidad el puerto
para la lectura del status del VDP? ¿Hay alguna otra forma de leerlo?
De verdad, cualquier ayuda es bienvenida, porque estoy bloqueado en este
punto.

    El problema que tienes es que en MSX2 existen 9 registros de estado,
mientras en MSX1 solo hay UNO.

    En MSX2 TODOS los registros de estado son leidos con:

    IN    A,($99)

    EXACTAMENTE igual que en MSX1, PERO con la diferencia que en otro
registro del VDP debemos de indicar QUE registro de estado QUEREMOS leer (de
0 a 8) el Registro 0 es el MISMO que el de MSX1.

    Por lo cual lo correcto en MSX2 sería:

    XOR    A
    OUT    ($99),A
    LD     A,$8F
    OUT    ($99),A    ; Nº de registro de estado a leer (en este caso el 0)

       LD B,NUM    ; Supongamos que NUM es el número de retrazados de espera
BUCLE: IN A,(&H99) ; Lee el registro de estado del VDP
       AND A,&H80  ; Comprueba el bit de retrazado
       JR NZ,BUCLE ; Si no está encendido, sigue esperando
       DEC B       ; Si hay retrazado, decrementa el contador
       JR NZ,BUCLE ; Si no terminó el contador, continúa


    Espero que sea esto lo que te ocurre.

    Suerte con tu juego!!!

    Saludos!

    Darth-007!





<Anterior en la conversación] Conversación actual [Siguiente en la conversación>