viernes, 13 de enero de 2012

Sigamos con la detección de FM en MSX

El verano pasado hablé sobre la detección de diferentes tarjetas de sonido FM en el MSX. Si bien todo lo allí indicado era correcto, merece la pena volver sobre el tema para corregir algunos puntos.

FM-PAC y MSX-Audio Bios

La MSX-Audio Bios es, como su propio nombre indica, una Bios para Music-Module, Moonsound y OPL3, que se encarga de simular la presencia de un FM-Pac y redirigir por software el uso del FM-Pac al correspondiente cartucho.

Si utilizamos cualquiera de estos cartuchos con esta Bios, estaremos detectando un FM-Pac cuando en realidad no es así, de forma que hay que volver a la rutina de detección para mejorarla un poco.

Echándole un vistazo a la entrada anterior, primero buscábamos un FM interno con la cadena "APRLOPLL" en $4018 y si no lo encontrábamos, buscábamos simplemente la presencia de la cadena "OPLL" en la dirección $401C. Esto es lo que puede traernos problemas, ya que la MSX-Audio Bios también presenta esta cadena en dicha dirección, pero es posible detectar que se trata de otra tarjeta en lugar de un FM-Pac, pues la cadena identificativa será:
  • AUD1OPLL para un Music-Module
  • AUD3OPLL para un cartucho OPL3
  • AUD4OPLL para una Moonsound
Por lo tanto, si en un slot detectamos la cadena OPLL pero se trata de una de estas tres cadenas identificativas, significa que hemos encontrado una MSX-Audio Bios y, por lo tanto, no un FM-Pac, con lo que habrá que seguir buscando.

OPL1 secundario

Al parecer es posible situar un segundo chip OPL1 en los puertos $C2 y $C3, de forma que tengamos dos chips OPL1 y podamos usarlos al mismo tiempo. Así que una buena idea a la hora de buscar los chips FM disponibles es comprobar si este segundo OPL1 está presente leyendo el puerto $C2 y comprobando si el resultado es 6. En mi caso, lo busco únicamente si el primero no está presente.

El emulador Open MSX permite simular este segundo OPL1, por si lo queréis probar.

Cartucho OPL3: Moonsound de pobres

Este cartucho realizado en Brasil también se llama "Moonsound de pobres" y está basado en un chip OPL3, que contiene la parte FM de una Moonsound. Es decir, se trata de una Moonsound que no tiene Wave Table. Pero a nosotros nos interesa sólo la parte FM, así que habrá que tenerlo en cuenta.

Detectar este cartucho es muy sencillo, ya que se hace igual que la Moonsound, sólo que buscando un 0 en el puerto $C0. Al igual que con el OPL1 secundario, yo lo que hago es buscar el OPL4 en $C4 y si no lo encuentro, entonces miro en $C0 y lo trato como si fuera un OPL4, pero con diferente puerto.

Si queréis probar este chip, hoy por hoy, el único emulador que permite utilizar este cartucho es el Open MSX.


No hay comentarios: