Archivos: screen5_paisaje.zip screen5_personaje.zip
3.Set page entero_pagina_visualizacion_modificable, entero_pagina_activa_con_los_datos
5 Copiando el circulo al disco.
6 Copiando el circulo del disco a la página 0 de la VRAM
7 Creando un personaje en la página 2.
La paleta de colores, el RGB (Red, green, blue) y color=(entero_color, intensidad_R, intensidad_B, intensidad_G)
Esta es la paleta de colores que viene por defecto en MSX1 y MSX2:
Estos colores se definen a través de una sintaxis RGB poniendo del 0 al , cuando tengamos que meterlos en la paleta tendremos que poner RB0G:
Cada color se define con 2 bytes (medio del 1 byte (4 bits) del 0 al 7 para la R, los otros 4 bits para la B y el 2 byte medio del segundo byte un 0 y el otro medio del segundo byte para la G ) de la siguiente forma RB0G,.
Vamos a ver la paleta de colores del MSX2 con el depurador de openmsx que está en la dirección &h7680 de la VRAM:
Con el comando color=(entero_color, intensidad_R, intensidad_G, intensidad_B) nosotros podemos cambiar el color de la paleta de colores.
Vamos a cambiar el color verde (la posición 2) en nuestra paleta de colores por otro cualquiera y vamos a pintar un cuadrado:
10 cls:screen 5 20 color=(2,5,2,2) 30 line (20,40)-(90,100),2,bf 40 goto 40
Ahora nuestro verde es marrón:
Retocando nuestra foto
Hay que obtener una foto cambiarle el tamaño a 256px y 212px y cambiarle la combinación de colores a colores indexados:
Me bajo una foto cualquiera de https://opengameart.org o de https://www.google.es/?&bih=888&biw=1920&hl=es pero ten cuidado que las imágenes de Google pueden tener derechos de autor
Abre la imagen con photshop y ve a Imagen ->Modo->Color indexado:
En la ventana que sale Selecciona A medida..(1) y pincha en Cargar para elegir el archivo “mapa de colores msx para Photoshop” que está en la carpeta assets de este proyecto(2) por último cargar (3):
Transforma la foto a 256px por 212px:
Selecciona la anterior y pegala aquí, ve a Edición-> Transformar libre y adáptala a las medidas de esta imagen:
Guardala como paisaje_indexado.jpg
Ve a la web: http://msx.jannone.org/conv/ y sube esta foto:
Descárgate la foto.sc5 y copia el código:
Fíjate lo que hace con la paleta, ahora entiendes porque te he explicado lo de la paleta? 😊
Añade el archivo PAISAJE_.SC5 a tu carpeta assets y ponlo en el archivo make.bat para que lo meta el diskmanager en el main.dsk:
Por último pega el código y ejecuta make.bat
Para poner la imagen en la segunda página (más adelante explicaré que es esto) ponemos la dirección &h8000 en el bload:
10 COLOR 1,15,15: SCREEN 5 20 DATA 0,0,0,1,1,1,1,2,1,2,2,3,2,4,2,3,4,3,3,5,2,4,3,4 30 DATA 4,4,3,5,3,3,3,4,5,6,4,2,5,4,5,3,5,6,5,6,6,6,6,5 40 FOR C=0 TO 15:READ R,G,B:COLOR=(C,R,G,B):NEXT 50 BLOAD"PAISAJE_.SC5",S,&H8000 1' Subrutina Mensaje 60 gosub 100 1' Subrutina cambio de pantalla y captura teclado 70 gosub 200 80 goto 70 1' subrutina mensaje pantalla 100 open "grp:" for output as #1 130 preset (10,10) 140 print #1, "Pulsa o para pantalla 0, p para pantalla 1" 150 return 1'Subrutina cambio de pantalla y captura de pantalla 200 'nada' 220 k$=inkey$ 230 if k$="o" then set page 0 240 if k$="p" then set page 1 250 return
Set page entero_pagina_visualizacion_modificable, entero_pagina_activa_con_los_datos
Vamos a explicar como crear un circulo en la página 0 y un cuadrado en la 1
1' borramos la pantalla y le ponemos el modo screen 5 10 cls:screen 5 1'Así le decimos que la pagina 1 es donde vamos a escribir 20 set page 0,1 1' creamos wn la página 1 un cuadrado de color azul, bf quiere decir un rectangulo relleno de blanco 30 line (10,10)-(40,50),7,bf 1' Creamos en la página 0 un circulo 40 set page 1,0 1' En la coordena x 150 y coordenada y 100, de radio 20 (mediano), y color del borde 1 negro 50 circle (150,100),50,1 1' Rellenamos el circulo con el 2 verde, el 1 el negro 60 paint (150,100),2,1 1'Le dcimos que queremos ver la página 0 70 set page 0 1' Bucle infinito 90 goto 90
Al pinchar dentro del debugger de openMSX (si no sabes lo que es te remite a la entrada del blog http://msx.tipolisto.es/debugeando-o-depurar-ensamblador/) en View->VDP->bitmap VRAM nos saldrá esta ventana:
En la ventana que sale quitamos el aspa (1) para que podamos modificar los valores del VDP y elegimos la página 1 (2):
COPY (coordenada_inicio_x, coordenada_inicio_y)-(coordenada_final_x. coordenada_final_y), entero_pagina TO (coordenada_x,coordena_y), entero_pagina
Vamos a copiar el cuadrado a la página 0, línea 80
1' borramos la pantalla y le ponemos el modo screen 5 10 cls:screen 5 1' 20 set page 0,1 1' creamos wn la página 1 un cuadrado de color azul, bf quiere decir un rectangulo relleno de blanco 30 line (10,10)-(40,50),7,bf 1' Creamos en la página 0 un circulo 40 set page 1,0 1' En la coordena x 150 y coordenada y 100, de radio 20 (mediano), y color del borde 1 negro 50 circle (150,100),50,1 1' Rellenamos el circulo con el 2 verde, el 1 el negro 60 paint (150,100),2,1 1'Copiamos el cuadrado a la página 0 70 copy (10,10)-(40,50),1 to (10,10),0 1'Le dcimos que queremos ver la página 0 80 set page 0 1' Bucle infinito 90 goto 90
Copiando el circulo al disco
1' borramos la pantalla y le ponemos el modo screen 5 10 cls:screen 5 20 open "grp:" for output as #1 30 preset (10,10) 40 print #1,"Copiando pantalla..." 1' Creamos un circulo en las coordenadas x=500, y=100, de radio 50 (bastante grande), borde negro 50 circle (150,100),50,1 1' Rellenamos el circulo del color 2 verde y ponemos el borde negro 60 paint (150,100),2,1 1' copiamos el circulo de la página 0 (la que viene por defecto) al disco y le ponemos un nombre 70 copy (0,0)-(256,192), 0 to "circulo.raw" 80 preset (10,10) 90 print #1,"Circulo copiado!!! " 100 goto 100
Ahora dentro del emulador presionamos Ctrl+f8 (la tecla stop en el MSX) que hará un break y saldrá al basic, dentro ponemos files:
Copiando el circulo del disco a la página 0 de la VRAM
1' borramos la pantalla y le ponemos el modo screen 5 10 cls:screen 5 20 open "grp:" for output as #1 30 preset (10,10) 40 print #1,"Copiando pantalla del disco..." 50 copy "circulo.raw" to (0,0),0 60 preset (10,10) 70 print #1,"Circulo copiado de disco..." 80 goto 80
Creando un personaje en la página 2
Nos descargamos un personaje de internet y lo retocamos para que la imagen tenga 256px x212px de ancho, lo guardamos como personaje.jpg:
Lo convertimos a sc5 en la web http://msx.jannone.org/conv
Ahora pon la foto en la carpeta assets y añádela al discmanager en el make.bat:
Pon este código en main.bas:
10 COLOR 15,0,0: SCREEN 5 20 DATA 0,0,0,2,1,1,1,2,1,2,2,2,1,5,2,5,2,2,3,4,4,4,3,4 30 DATA 4,4,4,3,3,6,3,6,3,7,2,2,5,5,5,7,4,4,6,6,6,7,7,7 40 FOR C=0 TO 15:READ R,G,B:COLOR=(C,R,G,B):NEXT 50 BLOAD"PERSONAJ.SC5",S, &h8000 1' ancho y alto de la figura 60 let an=30: al=35 70 for i=0 to 7 81 copy (an*i,al)-(30+an*i,35+al),1 to (an,al),0 1' retardo 82 for r=0 to 300: next 90 next i 100 GOTO 70
Verás una secuencia de figuras:
3 respuestas a «Screen 5 y los bitmaps en basic»
Me ha encantado. Mis más sinceras felicitaciones. Me encantaría tener más información sobre el MSX.
Hola Juan, aquí te dejo la que yo sé: https://msx.tipolisto.es/webs/
Muchas gracias por todo, si te interesa la programación de este sistema dímelo, 🙂
Muy útil