HispaMSX

Re: [hispamsx] Screen 2 y 4

2000-11-13 15:24:40
Pues casi que si. Lo que tienes que hacer es consultar la copia de los
registros del VDP que hay en RAM. Me explico: en F3DFh-F3E6h tienes una
copia de los 8 primeros registros del VDP. Y a partir de FFE7h tienes el
resto. Que por que hay una copia de estos registros en RAM? Los registros
del VDP son de solo ESCRITURA, asi que para poder consultar el valor que
tienen en un momento dado, has de guardarlos en algun sitio de la RAM.

Sí, eso ya lo sabía. Decía lo de no tener que guardarlos en memoria para
ahorrarme una escritura en RAM cada vez que escribo en los registros.
Por ejemplo, para poner screen 4 lo que hago es tener una zona de
memoria con los valores de los registros afectados (creo que del 0 al 7
y el 10 y el 11), y después introduzco estos valores en los registros
mediante acceso indirecto autoincremental, sin actualizar los valores en
RAM.

Y
esto es lo que hace precisamente la BIOS, de forma que cuando empieza tu
programa se te garantiza que esas posiciones de memoria contienen los
valores de los registros del VDP. Y es aconsejable que tu programa tambien
guarde aqui los cambios que vayas haciendo en los registros, sobre todo si
tu programa termina y tienes que volver al BASIC o al MSX-DOS.

OK, esa era mi duda. Sabía que al empezar mi programa estaban esos
valores en RAM, lo que no sabía es si era conveniente irlos
actualizando.
 
vdpport0        equ     098h            ; read/write VRAM
vdpport1        equ     099h            ; read/write VDP registers
vdpport2        equ     09ah            ; write palette registers
vdpport3        equ     09bh            ; write registers (indirect)

Esta es otra duda que tengo. Según el Technical Handbook, normalmente
los puertos serán los que tú dices, pero recomienda leer las posiciones
6 y 7 de la MAIN-ROM para averiguarlos. Pero claro, eso implica en
muchos casos hacer algo del estilo:

LD HL, VDPPORT0
LD C, (HL)
OUT (C), A

Ya que para mi VDPPORT0 no es una costante, sino que está definido como

VDPPORT0: DB xxx

Y he obtenido xxx en función de las posiciones 6 y 7 de la MAIN-ROM.

Vale la pena hacerlo como lo hago, para que sea "más compatible", o
puedo suponer que todos los MSX-2 usan los puertos 98h, 99h, 9ah y 9bh?
 
Asi que intenta hacerlo de esta forma: lee el valor de los registros de la
RAM, y vuelve a guardar en RAM los valores que modifiques. De esta forma
te aseguraras que tus programas funcionen en cualquier MSX.

OK, así lo haré. Gracias.
 
-- 
Antoni Burguera i Burguera - burguera(_en_)mundivia(_punto_)es
Rol, fantasia i ciència ficció a 9D-La Novena Dimensió
http://www.novenadimensio.net
---
"No hi ha un perquè. Neteja la teva ment de preguntes. Llavors 
 comprendràs."
---


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