Bueno, me respondo a mi mismo y aclaro un poco las cosas. He estado trasteando en MSX 1 (Pioneer PX-7, TMS9918A, creo).
Lo que hacia y que funciona tanto en MSX1 como en 2, es lo siguiente:
SCREEN 2
SCREEN 1
COLOR 15,4,7
VDP(0)=2
VDP(3)=255
Como veis, mas facil imposible. Basta cambiar esos 2 registros para conseguir un modo con un solo banco de patrones. El problema es que la tabla de colores sigue siendo de 6 K, es decir, que cada tercio de pantalla tiene su tabla de colores, pero el problema queda resuelto a medias y desde BASIC se pueden conseguir cosas chulas.
Importante poner primero SCREEN 2 (para limpiar la VRAM) y luego el color de borde, para poder ver algo en pantalla.
Ahora bien, se supone que el registro 3 (multiplicado por &H40) nos da la direccion de la tabla de color, pero esto no es cierto del todo. En el ejemplo la tabla de colores deberia estar en 16320, pero REALMENTE sigue en 8192. Probad a VPOKEar y vereis.
Despues de varias pruebas averigue, mas o menos el comportamiento de los bits del registro 3. Aun tengo que hacer pruebas, pero esto es lo que he descubierto:
BIT 7: Siempre a 1 o la tabla de colores se vuelve poco controlable y muestra basura.
La tabla de color del tercio superior comienza en 8192.
BIT 6: =0, Tabla de colores tercio inferior igual a la del tercio superior (8192)
Si =1, tabla de color independiente (8192+2048)
BIT 5: =0, Tabla de colores tercio central igual a la del tercio superior (8192)
Si =1, tabla de color independiente (8192+2048+2048)
BIT 4,3,2,1,0: Varian el grupo de caracteres afectados por la tabla de color. Mejor dejar a 1
Luego, para activar un modo de un solo banco de patrones y colores, he hecho lo siguiente:
SCREEN 2
SCREEN 1
COLOR 15,4,7
VDP(0)=2
VDP(3)=&B10011111
Parece que el VDP se limita a usar los 3 bits altos como puntero de comienzo para la tabla de color y los 5 bits bajos como contador para recorrer la tabla (o algo asi). El funcionamiento de los 5 bits bajos no lo tengo claro.
Supongo que no he descubierto nada nuevo, pero como tampoco he encontrado documentacion clara que explique este comportamiento del VDP, estoy documentando lo que voy descubriendo.
Y otro asunto es que esto sea aplicable al V9938 y posteriores (ya lo probare).
salu2