Aventura con imágenes en basic-xbasic

Página 4/4
1 | 2 | 3 |

Por jorge.romero.9655

Master (147)

Imagen del jorge.romero.9655

20-01-2014, 16:04

¡Muchas gracias Guillian!

Al final todo el problema era ese. Ya tengo la imagen y el texto formateados. Smile

Por PAC

Guardian (5307)

Imagen del PAC

20-01-2014, 17:14

A la hora de guardar los gráficos si al final usas pantallas de 128x128, como dice Guillian, puedes guardar p. ej. 4 de ellas en cada página de la VRAM y dependiendo del modo gráfico tendrás más o menos disponibles a la vez lo que repercutirá a la hora de tener que realizar más cargas durante el juego.

Si usas ese tamaño añadir algún marco o algo parecido para organizar la pantalla (menú, imagen principal, textos...) iría muy bien y el juego ganaría enteros. Toma ejemplos de otros juegos conversacionales (o no). Por ejemplo Xak no lo es pero te puede servir de referencia.

Yo utilizaría tambíen algún editor gráfico exclusivo de MSX como DD Graph, Graphsaurus etc para retocar, recolocar gráficos de sitio aunque eso ya cada uno...

Por jorge.romero.9655

Master (147)

Imagen del jorge.romero.9655

20-01-2014, 18:18

Gracias PAC, voy a mirar lo de la gestion de las imagenes en la VRAM, tanto para hacer menos cargas como para mantenerla mas o menos optimizada. Ahora mismo se cargar las imagenes, pero no termino de saber en que parte de la VRAM se estan guardando. De hecho acabo de ver como se eliminan las que no estoy usando hace un rato. El tema de la gestion de la VRAM es un tema que voy a necesitar tener bien aprendido y que estoy mirando poco a poco.

Los editores que mencionas ni los conocia, cuanto mas se mete uno en esto mas herramientas y curiosidades se encuentra. Es super entretenido Big smile

¡Muchas gracias por la ayuda!

Por anonymous

incognito ergo sum (109)

Imagen del anonymous

20-01-2014, 21:37

Suponiendo Screen5, disponemos de 4 páginas de 32Kb cada una (32Kbx4=128Kb VRAM). La 0 es la visualización y las otras las activas donde trabajamos. Suponiendo tienes un fichero .GE5 con 4 pantallas de 128x106, ejemplo rápido:

10 SCREEN5
20 SETPAGE0,1 ' definimos la página 1 donde cargamos nuestros gráficos
30 BLOAD"IMAGEN.GE5",S:COLOR=RESTORE ' color=restore restaura la paleta definida
40 COPY(0,0)-(128,106),1to(0,0),0 ' copia imagen situada en coordenadas (0,0)-(128,106) página 1 en (0,0) página 0

Lo estoy haciendo de memoria y no toco Basic desde hace años, que alguien me corrija en todo caso. Tongue Descárgate algún manual del MSX Basic 2.0 para cualquier duda, como por ejemplo este de Sony.

Por Imanok

Paragon (1143)

Imagen del Imanok

21-01-2014, 09:12

La página 0 es la que se visualiza por defecto, pero es configurable con la instrucción SETPAGE:

SETPAGE [página visible],[página activa]

Lo suyo es que montes las cosas en una página no visible, que queda mejor al no verse el mientras las montas, y luego hacerla visible una vez termines.

Por jorge.romero.9655

Master (147)

Imagen del jorge.romero.9655

21-01-2014, 14:24

Genial, ya me esta quedando todo mucho mas claro. Big smile

Una pregunta: ¿Es posible cargar una imagen muy grande (ya no del tamaño de la pantalla de msx, sino de varias) en una pagina no visible y despues ir cogiendo los trozos para crear mis viñetas con COPY? digo a modo de atlas de imagenes o tilesheet. Si es posible hacer eso, ¿existe algun conversor o editor grafico de bmp a sc5 que te permita hacer pantallas mas grandes de 256x212?

Por Warchild

Paragon (1271)

Imagen del Warchild

21-01-2014, 19:15

Puedes usar las páginas no visibles para almacenar los gráficos que quieras, independientemente de si los usas como tiles o no. Solo tienes que crear la rutina que copie el tile correspondiente (que no es más que un area de la pantalla) a su destino. En sc5 te caben 4 pantallas, de las cuales una sería la visible. Supongo que la fuente tambien la tendrás en vram, así que deberás tener en cuenta el espacio que ocupa. Digamos que puedes tener unas dos pantallas y media para almacenar gráficos, y a la hora de dibujar hacerlo directamente en la pantalla visible pero desconectando con defusr=&h41 y volviendo a conectar con defusr=&h44

Para un juego de estas características la velocidad no es muy importante, aunque tampoco conviene pasarse que sea tedioso jugar por las esperas...

Por jltursan

Prophet (2190)

Imagen del jltursan

21-01-2014, 20:10

¡Caray, como avanza esto! Smile

Respecto a lo que preguntas, el comando COPY sólo necesita que especifiques de que página coges los datos y a que página los llevas. De esa manera puedes volcar gráficos de una página no visible a la activa.

Nunca he probado a generar pantallas más grandes que las estandar; pero tampoco te haría falta, sólo necesitas ir cambiando la página activa usando SETPAGE y a continuación ir cargando el contenido de esa página mediante un BLOAD estandar. Llenas las cuatro de esa manera y ya tienes toda la VRAM a tu disposición cargada con los gráficos y organizada como mejor te venga Smile.

Para no aburrir al jugador, si en algún momento del comienzo del juego se presenta alguna pantalla en la que se deba leer algún texto introductorio o similar, aprovechas y cargas mientras tanto.

Por DarkSchneider

Paladin (880)

Imagen del DarkSchneider

04-03-2014, 16:17

Quote:

Digamos que puedes tener unas dos pantallas y media para almacenar gráficos, y a la hora de dibujar hacerlo directamente en la pantalla visible pero desconectando con defusr=&h41 y volviendo a conectar con defusr=&h44

¡Que bueno! Shocked! no sabía que se podía hacer eso, así no hace falta gastar una página como doble buffer, y el efecto es el mismo, que no verás el dibujarse la pantalla.

En principio no puedes salirte de la página (cada página SC5 es 256x212x4, el 4 son los bits de color), lo que tendrías que hacer es la parte que se te "salga" de una página, copiarla en otra. Es decir tienes que distribuir ese atlas en varias páginas, no se puede (aunque tiene lógica pensarlo viendo la VRAM como 128KB lineales) juntar varias páginas.
Por lo menos en BASIC, se debe trabajar con SET PAGE y COPY, que se hicieron de esa forma (cada página es del tamaño de la pantalla), en otros lenguajes pues no sé si se podrá usar la VRAM en plan lineal.

Página 4/4
1 | 2 | 3 |