Karoshi MSX Community

Desarrollo MSX => Desarrollo (Español/Spanish) => Mensaje iniciado por: aivalahostia en 06 de Octubre de 2015, 10:18:54 pm



Título: Manejo de tiles en Basic
Publicado por: aivalahostia en 06 de Octubre de 2015, 10:18:54 pm
 Hola, desde ya hace un tiempo estoy trasteando con los tiles, lo que estoy haciendo es hago los diseños con el Nmsxtiles y despues con el Msxtilesdevtool lo paso a .sc2 y mediante un bload"blabla.sc2",s lo cargo, es una forma un poco chapuzera y funciona pero, me gustaria poder animar fondos, no tener que al pasar de una pantalla a otra tener que hacer Bloads. He googleado y si que he encontrado cosas pero no en basic.

Gracias.


Título: Re:Manejo de tiles en Basic
Publicado por: Mortimer en 07 de Octubre de 2015, 01:03:58 pm
Hola, pues en BASIC puro y duro, y además en Screen 2 en el que una única pantalla ocupa prácticamente toda la VRAM, ahora mismo no se me ocurre otra solución para animar fondos que vpokear la tabla de nombres, lo que es lento y sólo irá bien para un puñado de caracteres.

Y para cambiar pantallas completas sin tocar disco, en teoría podrías tener la información precargada en RAM y volcar luego a VRAM, pero con la poca memoria disponible desde BASIC tampoco es que sea muy viable. Quizás si las distintas pantallas comparten los juegos de tiles y así sólo hay que cambiar la tabla de nombres que son 768 bytes como máximo...

Si además no te importa meter un poco de ensamblador, llamar al servicio de la BIOS para transferir de RAM a VRAM (O alguna rutina equivalente más rápida) agilizaría bastante el asunto.

Saludos


Título: Re:Manejo de tiles en Basic
Publicado por: aivalahostia en 07 de Octubre de 2015, 10:23:43 pm
Gracias Mortimer tu explicación!
 no queria meterme en ensamblador, pero por lo que me cometas es mi unica opción.



Título: Re:Manejo de tiles en Basic
Publicado por: theNestruo en 08 de Octubre de 2015, 08:24:36 pm
Buenas!

No sé muy bien a qué te refieres exactamente cuando hablas de "animar", pero aquí van unas cuantas sugerencias:

La primera es que pokees el sistema para que el BASIC crea que estás en SCREEN 1 (http://karoshi.auic.es/index.php/topic,2130.0.html): con esto puedes hacer LOCATE, PRINT y PRINT USING, que es bastante cómodo, rápido y compacto. Como efecto colateral, puedes cambiar el color de tinta y fondo de los primeros cuatro caracteres con una única instrucción COLOR. Si colocas ahí "algo" que puedas "animar" cambiando colores (ejemplo simplón: estrellas que parpadeen, "llamas" en un ciclo 9-8-9-11... algo así), lo puedes aprovechar.

Si lo que quieres es animar caracteres reemplazando la tabla de patrones y/o colores... VPOKEs. Pero vas a andar justito. Quizá como mucho un caracter cada frame e ir alternando. Dependerá mucho de a qué velocidad necesite ir tu juego (mucha (acción) vs "poca" (puzzle)).

Si lo que quieres es animar el fondo sustituyendo caracteres en la tabla de nombres... VPOKEs o LOCATE+PRINT si te cuadra que esté todo más o menos junto. Incluso puedes incluir secuencias de escape en la cadena (en plan abajo, izquierda, izquierda) para, con un único PRINT, reemplazar un fragmento que no sea horizontal.

Otra opción (que nunca he usado) es dibujar la pantalla con una tabla de nombres y volver a poner el BASIC en modo SCREEN 2. Ahora, las instrucciones gráficas (DRAW, LINE, etc.) funcionarán como si dibujaran en la tabla de patrones, de modo que si pintas con DRAW en donde estaría el caracter "A", te modificará todas las "A"s que tengas en ese banco.

Si lo que quieres es volcar pantallas (de un mapeado) entonces lo mejor es, por goleada, una rutinilla ASM que te haga un LDIRVM (y si ya que te metes le añades compresión... pues lo bordas :D).


Título: Re:Manejo de tiles en Basic
Publicado por: aivalahostia en 24 de Octubre de 2015, 06:28:29 pm
....Bueno, de momento he optado por el basic, para poder correr primero tienes que camianar sin caerte y yo, estoy todavia gateando.
¿Alguien me puede decir en que direccion comienzan los bancos de tiles 1 y 2? el banco 0 lo coloco en la direccion 0 de la vram, pero los otros dos no se donde empiezan.

gracias.


Título: Re:Manejo de tiles en Basic
Publicado por: Tragamanzanas en 25 de Octubre de 2015, 03:27:37 pm
En screen 2 :

Patrones/color:

Banco 0 : 0 / 8192
Banco 1 : 2048 / 10240
Banco 2 : 4096 / 12288

Son 256 tiles * 8 = 2048 bytes por banco

Espero que esto te ayude.

Saludos


Título: Re:Manejo de tiles en Basic
Publicado por: Mortimer en 25 de Octubre de 2015, 10:59:10 pm
....Bueno, de momento he optado por el basic, para poder correr primero tienes que camianar sin caerte y yo, estoy todavia gateando.
¿Alguien me puede decir en que direccion comienzan los bancos de tiles 1 y 2? el banco 0 lo coloco en la direccion 0 de la vram, pero los otros dos no se donde empiezan.

gracias.

vpoke es potente, y siempre puedes darle velocidad acelerando el emulador hasta que le cojas el tranquillo a la disposición de la vram y puedas saltar a ensamblador.