Commodore manía

Commodore 64 => Desarrollo => Mensaje iniciado por: Dr.Fred en Mayo 16, 2010, 18:13:41

Título: Cargando bitmaps en Basic.
Publicado por: Dr.Fred en Mayo 16, 2010, 18:13:41
Hola.
Intento cargar un Bitmap creado con el GangEd, que recomendó Carlos, a través de Basic, pero no lo consigo.

Os explico los pasos que estoy siguiendo, a ver si alguien em puede echar una mano.

- Importo una imagen cualquiera con el GangEd.

- La salvo como "multicolor bitmap mode", y como "bitmap data $2000-$3FFF" que intuyo que será la dirección de memoria donde lo va a alojar. Esto me crea un .prg.

- Arranco en VICE ese .prg para que me importe los datos a la memoria y luego creo el siguiente programa para poner en modo bitmap y mostrarlo.

[code]
3   POKE 53272, PEEK(53272) OR 8 <---Dirección que apunta donde me ha guardado el bitmap.
4   POKE 53265, PEEK(53265) OR 32 <--- iniciar modo bitmap
5   POKE 53270, PEEK(53270) OR 16 <--- poner modo bitmap multicolor
[/quote]

He probado a quitar la linea 5 que activa el modo multicolor, y me muestra esto:

(http://i30.photobucket.com/albums/c307/esputos/Sinttulo-1.jpg)


Cuando la imagen que debería mostrar es esta:
(http://i30.photobucket.com/albums/c307/esputos/Sinttulo2.jpg)


Por lo que algo me está fallando, pero creo que estoy cerca y no tengo ni idea de que puede ser.

¿Alguien me puede echar una mano?
Título: Cargando bitmaps en Basic.
Publicado por: The_WOZ en Mayo 17, 2010, 05:24:32
Hola Dr.Fred, lo que te esta pasando es que solo has exportado los datos del bitmap, te faltan la matriz de video (videomem $0400-$07E7) y la RAM de color (colormem $D800-DBE7).

Tienes que exportar las tres partes y luego cargarlas por separado en tu programa BASIC, pero ten en cuenta que la RAM de color no se puede cargar directamente. Tienes que cargarla a una dirección distinta y luego copiar los 1000bytes correspondientes hacia la RAM de color que comienza en 55296 ($D800).

Otro detalle es que al cargar la matriz de video vas a perder lo que tengas en la pantalla de texto BASIC. Y cualquier print que hagas mientras estes en modo grafico va a destruir la información de color de la imagen.


Espero esto te sirva de ayuda.

Saludos.
Título: Cargando bitmaps en Basic.
Publicado por: Carlos en Mayo 17, 2010, 09:20:28
The_WOZ te lo ha explicado perfectamente. Además de la información del bitmap que son 8k, necesitas cargar la RAM de pantalla y la RAM de color. Al igual que si quisieras crear una imagen mediante caracteres también deberías de cargar además del propio juego de caracteres (2k), la memoria de pantalla y la de color.

En cualquier caso... tu no estabas trabajando en C?  :o
Título: Cargando bitmaps en Basic.
Publicado por: Dr.Fred en Mayo 18, 2010, 23:52:11
Bueno Carlos, voy haciendo chapucillas con todo, según voy viendo.   :D

Muchas gracias a los dos. Creo que ya lo he entendido. A ver si tengo algo de tiempo mañana para hacer alguna prueba.

Saludos!
Título: Cargando bitmaps en Basic.
Publicado por: Dr.Fred en Mayo 18, 2010, 23:59:29
...bueno. Una pequeña duda tonta más. ¿De qué me valdría salvarlo en formato Koala o Doodle?
No entiendo muy bien... son solamente editores, ¿no?
Título: Cargando bitmaps en Basic.
Publicado por: Carlos en Mayo 19, 2010, 09:42:23
Yo te diría que te centraras más en C y poco a poco ir experimentando algunas cosas con ensamblador, tiene muchas más posibilidades que el BASIC y no cogerás malos vicios.

Sobre la otra pregunta, del Doodle no tengo ni idea. El Koala Paint, además de un editor, es un formato gráfico y es prácticamente un formato 'raw' sino recuerdo mal tenía un par de bytes de cabecera, después 8k de bitmap y posteriormente 1000 bytes de la memoria de pantalla y otros 1000 de la de color y poco más por lo que era fácil de interpretar y mostrar por pantalla.
Título: Cargando bitmaps en Basic.
Publicado por: Dr.Fred en Mayo 22, 2010, 08:47:00
Ya he conseguido cargarlo. Muchas gracias por la ayuda!