Aventura con imágenes en basic-xbasic

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

Por jorge.romero.9655

Master (147)

Imagen del jorge.romero.9655

08-01-2014, 20:03

Gracias, va sobradisimo para lo que tenia pensado. La plantilla del mapa con la que estoy diseñando apenas tiene 25. Quiero ver como me sale el invento y si queda bien, ir ampliandolo a modo de "capitulos" Big smile

Por jltursan

Prophet (2191)

Imagen del jltursan

10-01-2014, 12:23

Buena idea Smile

Ya nos vas contando Wink

Por jorge.romero.9655

Master (147)

Imagen del jorge.romero.9655

19-01-2014, 19:02

A peticion de moderacion muevo esto aqui para que quede mas ordenadico:

Continuo desarrollando mi aventura y me he encontrado con un nuevo problema, a ver si me sabeis orientar.

El tema es que segun tengo planeado, las imagenes que se cargan desde disco deben medir unos 128 x 128 px aproximadamente, pero al convertirlas con MSX Screen Conversor, el archivo resultante me ocupa normalmente casi toda la pantalla en lugar de una viñeta. Ahora mismo estoy trabajando en Screen 8 a una resolucion de 256x212 px.

http://subefotos.com/ver/?7fb36f669c56aaec110fb86d91fcf064o.jpg

¿Como puedo solucionar este problema? quiero reducir al maximo el tamaño de las imagenes para que el juego no ocupe mas de un disco.

http://subefotos.com/ver/?34f4ebb678066a80d127eece61a9c0ceo.jpg

Otra cosa que estoy observando es que ademas de el reescalado, tambien me cambia el color del marco de la pantalla y la fuente (originalmente negro con fuente azul). ¿Como recupero dichos colores?

Por anonymous

incognito ergo sum (109)

Imagen del anonymous

19-01-2014, 19:23

Gracias de nuevo Wink . Lo principal es acertar con el modo de pantalla a usar. Obviamente Screen8 es lo más de lo más pero la pega que tiene es el tamaño resultante. Yo me miraría Screen5, se pueden conseguir resultados muy buenos también pero hay que considerar que sólo disponemos de 16 colores y habría que trabajar la paleta.

El tema de la conversión, no sé los pasos que sigues pero yo suelo cambiar el tamaño previamente a la resolución que quiero con cualquier programa de PC y luego convierto a formato MSX. ¿Has probado a usar el programa BMP2MSX para realizar las conversiones? Puedes descargarlo aquí? Te lo recomiendo ya que ofrece multitud de combinaciones, tramado, etc.

Otra posibilidad sería usar un compresor de imágenes como el Bargain que las reduce considerablemente pero ahí estoy un poco verde ya que nunca he usado ninguno. En este caso deberás tener en cuenta el tiempo de descompresión.

Por jorge.romero.9655

Master (147)

Imagen del jorge.romero.9655

19-01-2014, 23:32

Gracias por las indicaciones PAC. Smile

He estado probando a hacer las conversiones con BMP2MSX y este si que me respeta el tamaño de la imagen, sin embargo ocupa el mismo espacio en disco, no tengo muy claro el porque. De todas formas, tampoco me importaria usar SC5 en un momento dado y poder meter asi mas imagenes en el disco.

Lo que me mata es el tema de la fuente de texto. Por un lado si no redefino los caracteres me hace esto:

y si cargo la rutina que tengo preparada para redefinirme los caracteres, el texto me aparece en blanco (mas bien invisible o negro) despues de cargar la imagen. (Los redefino usando la tecnica que comento Sapphire en este mismo foro de desarrollo hace un tiempo, donde basicamente lo que se hace es cargar la fuente en la RAM)

Quote:

Vale, funciona. Os pongo un ejemplo en basic para que veáis como va el tema:

10 f=64
20 ms=(inp(&ha8)\f) mod 4
30 sa=peek(&hfcc1+ms)
40 ss=(peek(&hfcc5+ms)\f) mod 4
50 v=sa+ss*4+ms
60 a=peek(&hf920)+256*peek(&hf921)
70 for x=0 to 2047
80 poke &hc000+x,(int(1.5*peek(a+x)) mod 256
90 next
100 poke &hf91f,v
110 poke &hf920,&h00
120 poke &hf921,&hc0

La línea 10 define la variable f, que debe ser 64 si queremos situar el nuevo set de caracteres en la página 3 (de &hc000 para arriba) y debe ser 16 si lo queremos situar en la página 2 (de &h8000 a &hbfff).

La línea 20 lee el registro de selección de slots y se queda con el slot principal seleccionado para la página adecuada.
La línea 30 comprueba si ese slot está ampliado o no.
La línea 40 lee el subslot seleccionado para la página adecuada.
La línea 50 compone el valor de selección de slots en el formato que utiliza la BIOS.

Básicamente estas cuatro líneas son una copia en BASIC de una rutina de identificación de slot típica.

La línea 60 identifica la dirección del set de caracteres en la ROM.
Las líneas 70 a 90 leen el set de caracteres de la ROM y lo copian de &hc000 en adelante, pero introduciendo una pequeña modificación para que se aprecie que se ha modificado el set.

La línea 100 pokea el valor del slot donde se sitúa el nuevo set de caracteres.
Las líneas 110 y 120 pokean la dirección donde se sitúa el nuevo set de caracteres.

Una vez ejecutado este código, el set de caracteres se habrá modificado y funcionará perfectamente en cualquier screen entre 0 y 8. No lo he probado en los modos del 9958...

Espero que sea eso lo que buscábais.

¿Cual puede ser la causa de la desaparicion del texto y de que los bordes de la pantalla se vean en azul? Yo creo que es porque se están definiendo también las dos franjas inferiores de la pantalla aunque la imagen realmente no las ocupe... pero la verdad no lo tengo claro. Hasta ahora lo único que conozco de sc5 y sc8 es la resolución que tienen y el número de colores que se pueden usar. Tampoco he encontrado mas información sobre como trabajar con estos modos de pantalla. ¿Alguna idea?

Por e_sedes

Expert (112)

Imagen del e_sedes

20-01-2014, 01:55

Yo reconozco que de los modos gráficos más allá de la primera generación no controlo mucho, pero si te puedo decir que le puedes echar un ojo al MSX Top Secret (el documento original está en portugués, pero lo puedes encontrar traducido al castellano). Ahí te describe básicamente como está configurado cada tipo de screen. Puede que te ayude en algo.

Por jorge.romero.9655

Master (147)

Imagen del jorge.romero.9655

20-01-2014, 03:18

Actualizo el tema, a ver si se aclara un poco todo esto.

He continuado haciendo pruebas y he conseguido avanzar un poco mas. Tras hacer algunos cambios en el codigo ya consigo que la imagen se vea tambien con los margenes del color correcto. Sin embargo, el problema con los caracteres modificados continua.

En SC2 y SC4 la imagen y los textos se ven correctamente.

En SC5, SC7 y SC8 la imagen se ve, pero el texto se muestra como "basura".

Si no redefino los caracteres, estos se ven tal y como estan guardados en la BIOS; es decir, con la fuente "fea" pero perfectamente legible.

Me tiene frito... las formas de los textos las he guardado en las mismas posiciones de memoria RAM que las que vienen en el ejemplo anterior.

Gracias e_sedes. He estado ojeando el libro, aunque por el momento no me aclaro. He encontrado algo mas en el manual de basic 2.0 en la pagina de konamito, pero sigo sin dar con la tecla.

Por Imanok

Paragon (1143)

Imagen del Imanok

20-01-2014, 13:08

Yo creo que casi nadie usa las fuentes de esa forma en SR5/SR8.

Lo suyo es diseñar las fuentes, guardarlas en cualquiera de las páginas de VRAM y hacerte una pequeña rutina de escritura de textos con COPY. Así tienes control total... puedes hacer fuentes del tamaño que quieras y hacer que se escriban de golpe o a la velocidad que elijas.

Por jorge.romero.9655

Master (147)

Imagen del jorge.romero.9655

20-01-2014, 14:59

Buff... no tengo ni idea de como se hace eso Imanok. Llevo muy poco programando en MSX Basic y solo he tocado los modos de pantalla de MSX1. Cuando he hecho tiles los he hecho redefiniendo caracteres.

La idea de hacerlo asi era para no complicarme y usar la minima cantidad de recursos posible, pero me da igual una forma u otra siempre que pueda poner una fuente diferente de la del sistema.

Dos preguntas:

¿Algun tutorial o indicacion mas o menos especifico para hacerme una idea de como hacer tiles para fuentes?

¿Alguna forma de modificar la imagen para que no me ocupe los dos slots inferiores? independientemente del tamaño al que las cree, al final me pesan siempre lo mismo al convertirla a formato MSX. Ahora mismo necesito mas informacion de sobre como funciona el modo SC5.

Gracias y perdonad por preguntar tanto. Smile

Por Guillian

Prophet (3233)

Imagen del Guillian

20-01-2014, 15:23

jorge.romero.9655 wrote:

¿Alguna forma de modificar la imagen para que no me ocupe los dos slots inferiores? independientemente del tamaño al que las cree, al final me pesan siempre lo mismo al convertirla a formato MSX. Ahora mismo necesito mas informacion de sobre como funciona el modo SC5.

La imagen te ocupa lo mismo porque probablemente el programa te esté exportando una imagen a pantalla completa (256x212)

La VRAM en screen 5 es lineal, de forma que los primeros 128 bytes representan la primera línea de la pantalla (256 pixels). Cada byte (8 bits) representa dos puntos en pantalla. Cada nibble (4 bits) almacena el color de un punto (0-15).

Si las imágenes son de 128x128, podrías almacenar 4 en una página de la VRAM y grabarlas así en el fichero. Esto es útil si las muestras de forma consecutiva.

Para recortarlas puedes usar BSAVE e indicar el número de líneas que quieres grabar. Por ejemplo:
BSAVE"nombre.sc5",0,128*lineas,S
Aunque así seguirás desperdiciando espacio si la imagen no es de 256 pixeles de ancho.

También tienes que tener en cuenta que así no grabas la información de la paleta, por lo que no podrás usar COLOR=RESTORE
La paleta se encuentra en #7680-#769F. Así que la puedes grabar con BSAVE"paleta1.bin",&h7680,&h769f,s

Otra opción es usar el comando COPY para grabar sólo el cacho que te interesa:
COPY(0,0)-(128,128) TO "imagen.sc5"
Y luego la cargas con
COPY"imagen.sc5" TO (0,0)
De nuevo tendrás que grabar y cargar tú la paleta a mano.

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