[Tutorial] Como usar la Mega CD en tus programas

Bueno, el caso es que hace poco subí un SDK de Mega Drive, MegaCD y 32X pero no tiene samples de Mega CD. Usar el Mega CD es MUY fácil.

Modo MegaCD + Mega Drive:

En este modo se tienen que cargar dos ejecutables. Uno para el 68000 de la MegaCD y otro para el 68000 de la Mega Drive. El de la Mega Drive tiene que ser el juego en sí (VDP, PSG, YM2612, etc...). El de MegaCD sólo es para usar las funciones especícificas del MegaCD (CDDA, ISO9660, Save RAM, PCM, rotaciones, etc...).

La cabezera del CD:

Los CD's de Mega CD son como cartuchos pero más grandes. Pero, en lugar de usar la cabezera de Mega Drive usan cabezera propia. En el fichero "Mega CD CD-Rom Header.bin" en el Mega Drive SDK, podemos encontrar varios valores:

- "SEGADISCSYSTEM". Esto nos indica que es un juego de MegaCD. Se pueden poner tres cadenas diferentes, pero, ISO's no firmadas sólo cargarán con "SEGADISCSYSTEM".

- "SEGASONICCD". Nombre interno de el juego. No cambiar.

- "SONICCD". Nombre de identificación del juego. No cambiar.

- "SEGA MEGA DRIVE (C)SEGA 2007.MARSONIC THE HEDGEHOG-CD SONIC THE HEDGEHOG-CD GM MK-4407 -00 JUE". Esto es la cabezera de el juego en sí, en formato de Mega Drive. DEBE DE SER IGUAL al de el ejecutable de el 68000 de Mega Drive. Puedes encontrar más información sobre la cabezera de Mega Drive en el fichero "Mega Drive ROM Format.txt", de el Mega Drive SDK.

El ejecutable para el 68000 principal se ha de compilar con estos parámetros:

.text 0x00FF0584
.bss 0x00FF1000

Y el de el 68000 de la Mega CD con estos:

.text 0x00006024
.bss 0x8800

Otros datos:

Número de entradas: 1
Dirección de inicio: 0x000000

La BIOS de la Mega CD:

Todos sabemos que es la bios. Esa pantalla que pone Mega CD y SEGA, y el texto se mueve por ahí sonando tantan tiriririrí, y abajo pone CHECKING DISC, PLEASE WAIT, PRESS START BUTTON, CLOSE THE CD TRAY [toctoc]

Bueno, la Mega CD se controla por ahí. ¿Como es eso? pues, mandandole comandos a la BIOS de la Mega CD accedemos al hardware. En el fichero "Mega CD System BIOS Technical Documentation.pdf" podemos encontrar la documentación de TODAS las funciones de la BIOS.

Como usarlas?

DRVOPEN           EQU   $000A

Con este código definimos DRVOPEN (abrir la bandeja del CD, sólo en la versión 1, la versión dos tiene el CD de tapa [360º]).

move.w #DRVOPEN, d0
jsr _cdbios
nop

Y ejecutamos el código. Este comando no tiene argumentos, por lo cual dejamos el registro de datos 0 (d0) como nulo.

tabla:
    dw $0002 ;vamos a reproducir la pista 2
main:
    lea.l tabla(pc), a0
    move.w #MSCPLAY, d0.
    jsr _cdbios
    nop

Con este comando reproducimos la pista 2 de el CD. Ponemos en el registro de dirección 0 (a0) el número de pista, y ponemos la función en d0.

Podemos encontrar las definiciones de todas las llamadas de la BIOS en el fichero de el Mega Drive SDK "Sega CD API Map.s", listo para incluir en cualquier proyecto.

Hay cierto material indocumentado de la Mega CD, como es el caso de el chip de rotaciones y el de PCM. El fichero "RFC568A Technical Documentation.pdf" en el Mega Drive SDK contiene el datasheet del chip de PCM.

Tristemente, el chip de rotaciones es propietario de SEGA y no hay documentación, aparte de en el código fuente de los emuladores.

~andoba ;)
Y un tutorial para que los que no tenemos idea de programación podamos empezar a mirarlo? Por lo menos para entender la jerga que utilizáis aquí, porque yo no entiendo nada!
tutorial complicado pero bueno al fin y al cabo [beer]
Francamente, no entiendo muy bien la utilidad de este tutorial...
Este tutorial esta indicado a la gente que ya sepa programar para Mega Drive, si no teneis ni idea, miraos el tutorial de ensamblador de 68000 de http://www.hacking-cult.org :-)
5 respuestas