Karoshi MSX Community
27 de Mayo de 2017, 03:01:05 am *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias:
 
   Inicio   Ayuda Buscar Calendario Ingresar Registrarse  
Páginas: [1]
  Imprimir  
Autor Tema: Manejo de tiles en Basic  (Leído 1217 veces)
0 Usuarios y 1 Visitante están viendo este tema.
aivalahostia
Karoshi Lover
***
Mensajes: 126



Ver Perfil Email
« : 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.
En línea
Mortimer
Karoshi Lover
***
Mensajes: 216


Ver Perfil WWW
« Respuesta #1 : 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
En línea
aivalahostia
Karoshi Lover
***
Mensajes: 126



Ver Perfil Email
« Respuesta #2 : 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.

En línea
theNestruo
Karoshi Lover
***
Mensajes: 233


Ver Perfil Email
« Respuesta #3 : 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: 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 Cheesy).
En línea

theNestruo."Old BASIC programmers never die; they GOSUB but never RETURN."
aivalahostia
Karoshi Lover
***
Mensajes: 126



Ver Perfil Email
« Respuesta #4 : 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.
En línea
Tragamanzanas
Karoshi Fan
**
Mensajes: 66


Ver Perfil
« Respuesta #5 : 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
En línea
Mortimer
Karoshi Lover
***
Mensajes: 216


Ver Perfil WWW
« Respuesta #6 : 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.
En línea
Páginas: [1]
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines XHTML 1.0 válido! CSS válido!