miércoles, 10 de febrero de 2016

Ejemplo práctico de CBM .prog Studio .Sprites ,diseñador de pantallas y diseñador de juegos de caracteres. PARTE II


Fue un primer paso muy básico, para ponerlo en marcha en lo que respecta a un proyecto BASIC para Commodore 64. 

También usamos muy por encima el diseñador de pantallas, que nos permite, dado un set de caracteres "pintar" la pantalla y luego exportarla a nuestro código BASIC. 

En esta publicación cubriremos el diseño de Sprites (por encima) usando el CBM .prog Studio y los conceptos básicos de uso de los Sprites desde el BASIC. 

La herramienta de diseños de Sprites del BCM .prog Studio es muy completa y facilita mucho la tarea. A medida que avancemos en las subsiguientes publicaciones iremos usando algo más  de su funcionalidad. 

Usaremos como base el proyecto ya comenzado en la anterior publicación que se puede descargar de este enlace


Una vez abierto el proyecto, hacemos doble click en la hoja de Sprites bajo el arbol "Spride Data". Esto abrirá el editor de Sprites. 

















Vamos a dibujar 3 Sprites distintos, para luego usarlos en nuestro programa BASIC.

En el editor, podemos usar color, color de fondo, multicolor y otras posibilidades como ver como quedaría una animación. 

Hay que tener en cuenta, que lo que se exporta al listado BASIC es solo la definición de datos de los Sprites, por lo que lo que hagamos con las propiedades de color y demás cosas, lo tendremos que hacer luego por código. 

Estos son los 3 Sprites que hemos pintado: 


















En la segunda solapa, "Scatch Pad" podemos posicionarlos en una pantalla artificial para ver que tal quedarían. 

















En resumen, el diseñador de Sprites tiene un montón de posibilidades para el diseño gráfico. 

Hay un menú de exportar , donde pasaremos la definición de los Sprites al listado BASIC: 

















Una vez que tenemos el código en nuestro listado, empecemos con la parte esencial del uso de Sprites.  

La idea es dejar los tecnicismos aparte e ir a lo que realmente nos va a ayudar a comenzar a conseguir cosas en pantalla. 

Si te interesa la parte muy técnica, en este enlace puedes descargar la guía del programador en inglés.

Cosas que tenemos que saber: 
  • El Commodore 64 tiene soporte por hardware para Sprites, en su afamado chip gráfico VIC-II.
  • Este chip se controla mediante registros en memoria (POKE) a partir de una determinada dirección. Esta dirección es 53248. 
  • Lo primero que hacemos es definir una variable (V) con valor 53248. Esto nos simplifica la vida ( V = 53248). A partir de ahí, usamos esta variable más otros valores para acceder al control del chip de vídeo y por ende, hacer cosas en pantalla con los Sprites. 


Dicho esto, el primer paso es cargar en memoria los datos de definición de los Sprites. 

Cada Sprite son 63 bytes. Necesitamos un puntero para decirle a la máquina de donde coger los Sprites y luego inicializarlos en su posición. Las posiciones comienzan en el valor 2040 hasta el 2047. Es decir, tenemos 8 definiciones de Sprites. 

Solo 8 no es problema, porque, como veremos en las siguientes publicaciones , podemos cambiar el contenido de la definición dentro de cada uno de los 8 , a nuestra conveniencia. 

En nuestro proyecto de ejemplo, cargamos los 3 Sprites con la siguiente rutina. 

320 REM Cargamos los Sprites
330 V = 53248 : REM Definimos acceso al chip grafico 
340 M = 832 + ((64*3)-1) : REM vamos a cargalos en mem.
350 REM Necesitamos 63 bytes por 3 Sprites de espacio 
355 RESTORE
360 FOR s=832 to M
370 READ a : REM vamos leyendo los DATA
380 POKE s,a : REM los vamos cargando en memoria
390 NEXT 
395 RETURN
400 REM Asignamos los punteros a partir de la dir. 2040
410 POKE 2040,13 : REM Sprite 1
420 POKE 2041,14 : REM Sprite 2
425 POKE 2042,15 : REM Sprite 3
440 RETURN 
El siguiente paso es activarlos.

Para ello, hay una sola instrucción para los 8 Sprites.

Los vamos a activar :

450 REM Activamos los Sprites
460 POKE V+21,7 : REM Activacion de los Sprites 0,1 y 2
490 RETURN
Y para desactivarlos todos usamos : 

500 REM Desactivamos los Sprites (todos)510 POKE V+21,0520 RETURN
Hay que tener en cuenta la siguiente tabla: 

|ALL ON|SPRT 0|SPRT 1|SPRT 2|SPRT 3|SPRT 4|SPRT 5|SPRT 6|SPRT 7|ALL OFF|
| 255        |1          |          2 |         4 |          8 |       16 |        32 |       64 |       128 |            0 |

Estos valores son los que se usan para manejar la activación / desactivación de los Sprites. 

Es decir que usamos siempre POKE V+21, y el valor o suma de valores que necesitamos. 

Para activar los 3 Sprites usamos: 

POKE V+21,(1+2+4)

En resumen : POKE V+21,7. 

Esto activaría los Sprites 0, 1 y 2. 

Ahora asignamos los colores a cada Sprite.

530 REM Le ponemos color a los Sprites
540 POKE V+39,13 : REM Sprite 1 a azul550 POKE V+40,7 : REM Sprite 2 a amarillo560 POKE V+41,4 : REM Sprite 3 a violeta570 RETURN

Los códigos de los colores los puedes ver aquí.

Del  V+39 al V+46, se asignan los colores para cada uno de los 8 Sprites. 

Por último en esta publicación , los posicionaremos en pantalla, para que se vean.

580 REM Ponemos los Sprites en pantalla
590 POKE V+0,54 : REM Posicion X del Sprite 1 600 POKE V+1,100 : REM Posicion Y del Sprite 1 610 POKE V+2,54 : REM Posicion X del Sprite 2 620 POKE V+3,150 : REM Posicion Y del Sprite 2630 POKE V+4,54 : REM Posicion X del Sprite 3640 POKE V+5,200 : REM Posicion Y del Sprite 3650 RETURN
Otra cosa interesante, cambiar el color de fondo de la pantalla. 

Se realiza con la(s) siguiente instrucción(es). 

20 POKE 53281,1 : REM Color de fondo a blanco
300 POKE 53281,0 : REM Color de fondo a negro

Puedes descargar el proyecto para CBM .prog Studio, de este enlace.

Un pequeño vídeo de como va quedando nuestro tutorial.




No hay comentarios: