Introducción como leer el Maple Bus.

El Maple Bus es la interface de comunicacion que utiliza la SEGA Dreamcast para comunicarse con todos los perifericos que se conecten en sus puertos delanteros, VMU´s, controles, volantes, etc. todos utilizan el Maple Bus. Al igual que cualquier otro interface de comunicacion el Maple Bus tiene un protocolo de comunicacion (paquetes de datos bien organizados, comandos, tiempos de espera, etc) pero eso se discutira despues.

Fisicamente cualquier dispositivo esta conectado a la Dreamcast por medio de 5 cables, dos de ellos son los de alimentacion, otro es el blindaje y los dos ultimos son los de comunicacion serial del MB (Maple bus es mas facil para mi asi para no escribir tanto :P jejeje), los dos ultimos cables son los de mas importancia. Ambos cables son llamados SDCKA y SDCKB que viene de Serial Data Clock A y B respectivamente, ambos cables son de uso bi direccional y ambor se comparten la señal de datos y de reloj, lo que quiero decir es que en un momento un cable es de datos y el otro es de señal de reloj y en otro momento es de forma contraria. "Momento esto es algo confuso" tal vez digan alguno de ustedes que este leyendo, dejen explico un poco mas espesificamente y ya todo quedara claro confien en mi ; ) .

El MB es un poco extraño a comparacion con otras interfaces de comunicacion serie que yo he conocido, la señal de reloj y la de datos estan mezcladas en ambos cables de tal forma que cuando en una linea se presenta la señal de reloj en la otra debe haber una señal de datos y viceversa.

¡¿Pero como demonios es que la Dreamcast sabe cuando un cable tiene señal de reloj y cuando el otro cable tiene señal de datos?! El truco es simple, usa flancos de bajada como señal de reloj, la Dreamcast esta vijilando ambas lineas (SDCKA y SDCKB) buscando flancos de bajada, cuando por ejemplo la Dreamcast detecta un flanco de bajada en SDCKA ella sabe que en SDCKB hay datos, y si detecta un flanco de bajada en SDCKB ella es muy lista y sabe que en SDCKA hay datos. Esta es la froma basica para leer los datos que la Dreamcast utiliza.

Viendo la siguiente grafica quedara aun mas claro.

Espero que haya quedado entendible para todos :)

Como se puede ver pues nuestra señal de reloj son los flancos de bajada. Entendido lo anterior, se puede practicamente descifrar cualquier informacion que la Dreamcast y un dispositivo conectado al MB se esten enviando, claro lo que se leeria seria un volcado en bruto de los datos, algo asi como un RAW de las comunicaciones, por ello aun sabiendo como leer los datos todabia falta saber como esta dividida la informacion y donde esta lo que nos interesa, que en este proyecto fue el estado de todos los botones de un control de Dreamcast.

En este punto tecnicamente cualquiera con un osciloscopio puede leer manualmente el MB simplemente vijilando las lineas SDCKA y SDCKB que son el pin 1 y 5 y usando el pin 3 o 4 como tierra.