"Darth-007!" escribió:
La mayoría de los usuarios conocemos todos los modos que posee el MSX
cogiendo como BASE cada SCREEN del MSX-BASIC.
Pero hay un pequeño detalle que no TODOS sabemos. Los screens 2 y 4 del
MSX-BASIC *NO* son como el VDP los controla, osea. Muchos dicen que los
Querras decir que no son como el BASIC nos hace creer que son.
screens 2 y 4 son de tipo Bit-Map, y *NO* es cierto. Lo que ocurre es que el
MSX-Basic "manipula" estos modos para que creamos que son de tipo bit-map, y
de este modo podamos hacer LINES, Circles, etc...
Lo que hace el MSX-BASIC es "emular" un modo de bitmap (en realidad de puntos
independientes), pero por SOFT (creo que todos lo sabemos).
osea, parecidos al Screen 0 y screen 1. Pero entonces, ¿porque no podemos
trabajar con ellos a modo de tiles? pues porque el MSX-Basic *NO* lo
permite.
Pues resulta que si lo permite: ?Conoces el comando VPOKE?. Pues sirve para
escribir directamente a la VRAM. Si cambias a SCREEN 2 (por ejemplo), dibujas
algo en pantalla y, despues toqueteas la zona de ATRIBUTOS, pues podras poner
los patrones a tu antojo en cualquier zona de la pantalla.
Ojo! El SCREEN 0 es totalmente distinto a cualquier otro modo de video. Es un
modo de texto puro y duro (bueno, se pueden redefinir los caracteres). Solo
prueba a combinarlo con otros modos, y solo obtendras basura, pero siempre en
modo texto y en SCREEN 0.
El truco que usa el MSX-Basic para tratar este modo como bit-map es que
pone ORDENADAMENTE TODOS los tiles (caracteres) en la pantalla:
$00,$01,$02,$03,$04.....$1F (32 Tiles en una linea)
$20,$21,$22,$23,$24.....$3F (32 Tiles en una linea)
$40,$41,$42,$43,$44.....$5F (32 Tiles en una linea)
$60,$61,$62,$63,$64.....$7F (32 Tiles en una linea)
.....
Lo que ocurre es que para poder completar TODA la pantalla NO poseemos
suficientes tiles, sino que necesitamos 32x24=768 Tiles. Dado que el máximo
de tiles disponibles son 256 pues el VDP nos permite tener TRES pantallas
independientes (cuatro para el modo 212 pixels) cada una de ellas con 256
tiles diferentes.
Hay un truco: si partes de SCREEN 1, tocas un par de registros del VDP (no
recuerdo ahora cuales), asignandoles el valor que tendrian en SCREEN 2, podras
escribir (e incluso usar el comando PRINT) con los patrones que quieras tipo
SCREEN 2 (por supuesto redefiniendolos primero, claro). Incluso, se puede forzar
a que ekl VDP use un solo banco de patrones (256).
De este modo cuado dibujamos un circle lo que REALMENTE estamos haciendo
es RE-definir los tiles que se encuentran de una forma lógica y ordenada
para obtener el resultado deseado.
Eso lo hace el el interprete BASIC.
Konami y la mayoría de compañias en su día NO les interesaba usar el
Screen 2 tal y como los empleaba el MSX-Basic, así que decidieron usarlo a
su manera, manipulandolo directamente del VDP.
... que es como oficialmente se pueden usar.
El articulo sobre el EXTRA-SCREEN de la MSX-Club no es más que el Screen
2 pero usado tal y como se diseñó en el VDP.
No he leido ese articulo, pero seria interesante que alguien lo pusiera en la
HISPA.
Por eso, que NADA de extra-screen, lo que tenemos es una SIMULACION de
un modo Bit-map en los MSX1 mediante el MSX-Basic.
El screen 2 SIEMPRE se ha usado con tres tipos de bancos independientes,
porque el truco de usar UN SOLO banco no está documentado en ninguna parte
(que yo haya podido tener acceso)
Esta noche lo busco (lo saqué por casualidad) y lo mando.
Sobre el mail de Daniel Zorita he de anotar que el 99% de los juegos que
usan el screen 2 lo hacen con TRES bancos independientes, ya que, en mi
opinión, el modo de UN SOLO banco de tiles no estaba documentado
OFICIALMENTE, y no se empezó a usar exporadicamente hasta los 90's.
Seguro? Para mí que la mayoría de los juegos solo usan un solo banco.
Hasta!
IVIsoft