En parte de este tiempo en el que he permanecido oculto y agazapado en la sombra he estado o bien no haciendo nada o haciendo cosillas menores pero con un objetivo: portar la cpcrslib para que pueda ser utilizada desde SDCC. La labor está siendo pesadita en algunos momentos porque las llamadas cambian y porque en SDCC hay cosas que z88dk me permitía hacer y, pensarlas, modificarlas y probarlas para SDCC me lleva bastante rato. Igual algún día me pongo a sacar las conclusiones y las escribo. Por ahora este post es para decir que todavía NO he terminado con cpcrslib pero SÍ con cpcwyzlib así que se puede meter música fácilmente a programas hechos para CPC con SDCC.
Como ejemplo os cuelgo un programilla con 5 melodías que trae el tracker para Windows que ha programado Augusto Ruiz para facilitar la composición para el WYZ Player. En el ejemplo va también lo que llevo de la cpcrslib pero ojo que no es definitivo lo que hay
ahí y sé que hay código con errores así que nada de echarse las manos a la cabeza si aparece algo raro al utilizarla. Me lavo las manos.
Sobre la cpcwyzlib decir que no hay modificaciones de uso frente a lo que ya teníamos para z88dk así que casi copiar y listo. La única diferencia reseñable viene de las particularidades del SDCC que no permite incluir binarios directamente en el código y que el formato ensamblador varía ligeramente. Para incluir las melodías hay que pasarlas a un formato de texto que el C entienda, yo utilizo el programa bin2c que incluyo en el paquete del ejemplo.
Las funciones de cpcwyzlib son las siguientes (cpcwyzlib.h):
extern void cpc_WyzLoadSong(unsigned char numero);
extern void cpc_WyzStartEffect(unsigned char canal, unsigned char efecto);
extern void cpc_WyzSetPlayerOn(void);
extern void cpc_WyzSetPlayerOff(void);
extern void cpc_WyzConfigurePlayer(unsigned char valor);
extern unsigned char cpc_WyzTestPlayer(void);
extern void cpc_WyzInitPlayer(int *sonidos, int *pautas, int *efectos, int *canciones);
extern void cpc_WyzSetTempo(unsigned char tempo);
El tracker está aquí:
https://sites.google.com/site/augustoruiz/
El reproductor original de WYZ está aquí:
https://sites.google.com/site/wyzplayer/
La librería cpcwyzlib para SDCC la podéis bajar aquí:
http://code.google.com/p/cpcrslib/downloads/list
ronto más novedades. Mientras, ¡a programar!

Este año en RetroMadrid se presentó el pack #1 de juegos ESP Soft el cual fue un éxito, se vendieron las 15 que sacamos. Bueno, mejor dicho, que se encargó el amigo David (6128) de sacar ya que él promovió toda la historia, desde convencernos para sacar el pack hasta [...]
Tenía curiosidad por ver cómo estaba hecho el juego Sol Negro de Opera Soft, principalmente en cómo gestiona la pantalla así que me puse a mirar un poco las tripas del mismo con el WinApe que para esto da muchas facilidades. ¿Por qué de mi curiosidad? Pues porque me llamó [...]
Tras un arreón estos últimos días, ya tengo portada la librería para SDCC. Ahora llega la fase de ponerla bonita y testearla profundamente. Afortunadamente no me estoy encontrando muchos errores y, en el proceso de portado, alguna mínima modificación/optimización sí que se ha ganado con lo que alguna mejora habrá. [...]
Buen trabajo Arta, estoy preparando una comparativa a fondo en la que creo que verás recompensado/necesario el portar todo a SDCC, ya verás. Saludos.
Muchas gracias. Seguro que sí que está compensado. En realidad ya lo está porque he visto que el SDCC me hace mejorar mi C. El z88dk es muy generoso
Muy buen trabajo Artaburu!! Una cosa que no veo cómo hacer es modificar la tabla de frecuencias. El WYZTracker exporta además de pautas y sonidos las frecuencias con las que está creada la canción. Si no meto esa tabla de frecuencias la canción suena algo diferente en el player que en el tracker. En cualquier caso, gran trabajo
. Saludos.
Pues la tabla de frecuencias está dentro de wyz.s si la modificas ahí y recompilas la librería deberías notar las diferencias. De todas formas, creo que no llegan a cuadrar exactamente con el WYZTracker y lo que “toca” el CPC. Pero hace ya tiempo que no lo veo y no me acuerdo muy bien. Si tienes problemas con otra cosa me comentas y miramos cómo solucionarlo.
Gracias por postear!!