26 diciembre 2011

veejingSX v0.9b

He publicado en la WEB del proyecto veejingSX, la última versión del software de vjing (efectos visuales en tiempo real para sesiones de música), para MSX. Se encuentra en versión ROM 32k o imagen de disco DSK (2DD).

Se ha cambiado la forma de lanzar los efectos y se ha añadido una función para lanzar efectos aleatorios (tecla space).

También contiene más efectos de fondos tipo textura, animaciones de sprites y cambios en algunas pantallas.

Los contenidos son más genéricos, ya que las anteriores estaban diseñadas para las sesiones que hicimos 303bcn en la L@ncelona y en la 39RU de la AAMSX.

También he realizado cambios internos, para parametrizar algunos efectos, pensando en futuras versiones donde quiero añadir un editor para personalizarlo según la sesión de música.

Durante esta semana quiero añadir una versión en WAV (pasada con WAVeR de pitpan), para cargarlo desde el port de casete y los fuentes, para el que quiera trabar con el (es software libre).

Espero que os sea de utilidad :)

25 octubre 2011

La Paleta del TMS9918 (MSX1)

Quizás necesiteis, como yo, disponer de una impresión con la tabla de colores del VDP (Texas Instruments TMS9918), de los MSX de primera generación. Buscando por internet lo mejor que he encontrado es la que hay publicada en la wikipedia inglesa, en el artículo: List of 8-bit computer hardware palettes , pero si lo que queréis es algo más simple como una imagen, no he encontrado nada. En los artículos que elaboré en este mismo blog sobre técnicas de dibujo en el modo screen 2 no se me ocurrió dibujar una tabla en condiciones, así que lo apunte en mi lista de tareas y aquí las tenéis. Son 3 tablas en diferente formato, para que elijáis la que más os guste.

Nota: Tenéis total libertad de uso para lo que necesitéis (documentación, blogs, etc...), sin necesidad de hacer referencia al autor.


Tabla 1



Tabla 2



Tabla 3




Actualización: En los comentarios Toni preguntaba sobre las equivalencias de la paleta en RGB y buscando encontré la siguiente tabla creada por Sean Young, extraída de su documento sobre el TMS9918A.

Colour           Y     R-Y   B-Y   R     G     B     R    G    B
0 Transparent
1 Black         0.00  0.47  0.47  0.00  0.00  0.00    0    0    0
2 Medium green  0.53  0.07  0.20  0.13  0.79  0.26   33  200   66
3 Light green   0.67  0.17  0.27  0.37  0.86  0.47   94  220  120
4 Dark blue     0.40  0.40  1.00  0.33  0.33  0.93   84   85  237
5 Light blue    0.53  0.43  0.93  0.49  0.46  0.99  125  118  252
6 Dark red      0.47  0.83  0.30  0.83  0.32  0.30  212   82   77
7 Cyan          0.73  0.00  0.70  0.26  0.92  0.96   66  235  245
8 Medium red    0.53  0.93  0.27  0.99  0.33  0.33  252   85   84
9 Light red     0.67  0.93  0.27  1.13! 0.47  0.47  255  121  120
A Dark yellow   0.73  0.57  0.07  0.83  0.76  0.33  212  193   84
B Light yellow  0.80  0.57  0.17  0.90  0.81  0.50  230  206  128
C Dark green    0.47  0.13  0.23  0.13  0.69  0.23   33  176   59
D Magenta       0.53  0.73  0.67  0.79  0.36  0.73  201   91  186
E Gray          0.80  0.47  0.47  0.80  0.80  0.80  204  204  204
F White         1.00  0.47  0.47  1.00  1.00  1.00  255  255  255


Podéis descargar las siguientes paletas con los colores de la anterior tabla:

03 octubre 2011

transformación de samples de 16 a 8 bits IFF

Si consigues un set de instrumentos PCM en formato WAV y quieres usarlos en tus trackers de Amiga, necesitaras transformarlos con un software conversor o editor de audio que tenga salida al formato IFF 8SVX. He probado varios de ellos y el que he encontrado más eficiente es el GoldWave para Win. Lo descubrí a través de la lista de correos de chipmusic, vía neuroflip.

GoldWave es un programa editor y conversor de formatos de audio con una interfaz gráfica un poco confusa, pero incorpora una herramienta que permite generar un proceso de conversión de una lista de ficheros, que nos ahorrará mucho tiempo.

Para acceder a esta herramienta, tendremos que ir al menú "File" y seleccionaremos "Batch Processing". Aparecerá la ventana que se muestra a continuación.


Los parámetros que deberemos tocar es el tipo, donde indicaremos el Amiga IFF, el formato: PCM 8bits mono, el rate a 11025 Hz (o el que creáis más apropiado), y en la pestaña "Information", activaremos "Remove text information and pictures". Esto último es importante ya que si el fichero incluye metadatos, los añadirá al final de nuestro fichero, que al utilizarlo nos provocará un ruido molesto.

Para finalizar solo quedará darle al botón "Begin" y nos creará todos los ficheros junto a los originales, aunque si queremos cambiar el destino, podremos hacerlo indicándolo en la opción correspondiente que se encuentra en la carpeta "Folder".

01 agosto 2011

Sprites MSX · Ocúltate en la 208

Cuando implemente las animaciones de Sprites, para la aplicación de veejingSX, me di cuenta que periódicamente se ocultaban todos los Sprites durante un instante. Desconocía el motivo y pensé que se debía a un error en la programación y lo deje así. En la 39 RU de MSX de Barcelona, sucedió que estuve en el lugar y en el momento adecuado: lo vio SapphiRe y me resolvió el enigma, (aprovecho para darle las gracias! :) ), y para que no quede en el olvido he querido hacer este artículo y compartirlo para aquellos que se inicien en el uso de Sprites de MSX.

A la hora de visualizar un Sprite en la pantalla veremos que el TMS9918 y el V9938, tienen sus peculiaridades.

Lo primero que tenemos que saber es que si queremos situar un Sprite en la primera linea, tenemos que usar el valor 255. La segunda linea será la 0.

Si queremos que un Sprite desaparezca de forma gradual por la parte inferior de la pantalla, en los modos gráficos 1 al 3 del TMS9918 y el 4 del V9938 (modos de 192 lineas), solo tendremos que ir incrementando el valor de la coordenada y hasta que llegue a la posición 191 donde ya permanecerá totalmente oculto.

En el caso de los modos 5 al 8 del V9938, que contienen 212 lineas, la posición donde se ocultarán completamente nuestros Sprites, será la 211.

Si por lo contrario lo que queremos es que aparezcan de forma gradual por la parte superior, deberíamos situarlo a partir del cálculo de la posición 256 menos el tamaño del Sprite (8 o 16, x 2 si esta ampliado), que es donde empezaría a mostrar la parte inferior de estos. que incrementaríamos hasta llegar a 255.

Pero aquí no acaba la cosa. El VDP de los MSX nos guarda una funcionalidad extra. Si colocamos un Sprite en la coordenada 208, este se desactivará junto a todos los que están en los planos inferiores. Si quisiéramos ocultar todos los Sprites tan solo tendríamos que situar el del plano 0 en la posición 208.

Para los nuevos modos gráficos del V9938, esta posición específica es la 216, ya que la posición 208 estaría dentro de la zona visible.

Para ocultar un Sprite concreto, lo podemos posicionar en cualquier coordenada que lo sitúe fuera de la pantalla, exceptuando la 208/216.


Ejemplos

Adjunto un programa en Basic con el que se puede probar la ocultación de sprites.
  • F1- Coloca el Sprite rojo (plano 1) en la posición 100 (se muestran todos)
  • F2- Coloca el Sprite rojo en la posición 208 (se oculta junto con el cían - plano 2)
  • F3- Coloca el Sprite rojo en la línea 217 (oculta solo el rojo)
  • F4- Sale al Basic.

10 REM Ejemplo de posicionamiento vertical
20 SCREEN 1,2:KEY OFF
21 WIDTH 32
22 PRINT "F1 Sprite 1 - y=100"
23 PRINT "F2 Sprite 1 - y=208"
24 PRINT "F3 Sprite 1 - y=217"
25 PRINT "F4 Salir"
30 PAT=BASE(9):REM tabla de patrones de sprite
40 FOR BC=PAT TO PAT+31:VPOKE BC,255:NEXT
50 PUT SPRITE 0,(100,80),1,0
51 PUT SPRITE 1,(100,100),6,0
52 PUT SPRITE 2,(100,140),7,0
60 ON KEY GOSUB 100,200,300,320
70 KEY(1) ON:KEY(2) ON:KEY(3) ON:KEY(4) ON
80 GOTO 80
100 PUT SPRITE 1,(100,100),6,0
110 RETURN
200 PUT SPRITE 1,(100,208),6,0
210 RETURN
300 PUT SPRITE 1,(100,217),6,0
310 RETURN
320 END
Descargar ejemplo 1: OAMV.BAS

Nota: Si usas el emulador meisei, puedes seleccionar y copiar el programa Basic y pegarlo directamente con ctrl+v en la ventana del emulador.


Referencias

  • Portar Specifications>VDP>Sprites
  • Debate sobre el posicionamiento vertical en la MRC: Sprites.

08 junio 2011

Veejing con MSX. veejingSX (2 de 2)

Para los visuals de la actuación de 303bcn de esta pasada RU, utilicé el 9918veejing. Es un soft que programé para acompañar la sesión de neuroflip que realizó en la lancelona 2010 (ver post). A lo largo de estos meses he trabajado algún nuevo efecto, pero la mejora más importante ha sido que he rehecho gran parte del código, optimizando muchas rutinas, gracias a lo que he ido aprendido últimamente sobre assembler de Z80. La base sigue siendo en C, que es la que se encarga del control del programa.

Representación de las tres capas: Background, screen y sprites.

Entre las mejoras, podemos ver nuevos modos de fondo, dos nuevas animaciones, más pantallas y he añadido una nueva capa con animaciones de sprites. También ahora dispone de botones (teclas de función), con estados predefinidos, para disparar en ocasiones claves de la sesión.

Otro punto importante, es la simplificación de algunas acciones como la eliminación de las teclas que cambiaban los juegos de tiles y algunos tonos, ya que aunque le dotaban más potencia para realizar efectos, hacia más complejo su uso y era muy fácil provocar efectos no deseados.


La experiencia de la actuación, me ha servido para tener nuevas ideas para mejorar el soft, como por ejemplo aplicar efectos en la paleta para los MSX que tengan un VDP V9938 o superior. Esta es una de las razones por la que cambio el nombre a veejingSX.

He abierto una página en google code, donde podéis bajar las ROMs de las dos versiones que hay disponibles y en la sección WIKI, encontraréis la guía de usuario, con una descripción de todas las teclas.

01 febrero 2011

MSX WARS Scorched Battles


Una de las actividades en las que participé el año pasado, fue una colaboración en el desarrollo de un juego con JamQue/TPM en el concurso de MSX-Basic de Konamito. El caso es que hoy se han presentado los resultados y hemos quedado en segundo puesto, lo que tiene mucho merito ya que habían trabajos muy buenos. En concreto realicé los gráficos mientras que JamQue se encargo principalmente de la programación. También realicé algunos FXs de sonidos, utilizando el PSGed v0.8b, que es uno de los propósitos para que lo programé. Estoy contento de como ha quedado el juego, aunque es un poco lento debido al calculo de la trayectoria. Creo que es un aspecto que seguro que se puede optimizar, pero que no pudimos por falta de tiempo. La IA quedo muy bien, siendo fácilmente ajustable a diferentes niveles de efectividad, pero que también quedo aparcado por la misma razón.
También estoy muy contento con el resultado y la aceptación del juego, y quizás nos animemos a crear una versión mejorada de este juego...