Básicamente, lo que debería hacer es aplicar ingeniería inversa al protocolo a través de la observación.
Supongamos que desea utilizar un controlador SNES. Lo primero que debe hacer es desmontar el controlador y descubrir cómo está cableado internamente, ¿cuántos botones? ¿Cómo se conectan entre sí? ¿Qué tipo de sensores se utilizan para sticks analógicos? ¿Hay algún tipo de retroalimentación de fuerza / vibradores / etc? ¿Cuántos cables se interconectan con el controlador? ¿Cuáles son obviamente señal / potencia / tierra?
Una vez que tenga una idea de lo que está pasando en el controlador, debe observarlo en acción. Conéctelo a un SNES y conecte el analizador lógico a las líneas de señal y tierra. El terreno es bastante importante, sin un buen terreno sus lecturas no tendrán sentido.
Luego quieres encender el SNES y comenzar a mover las perillas y los botones. Mira los datos que ves en los pines. Tendrá que averiguar qué extremo está generando las señales: ¿SNES está consultando el controlador o está simplemente enviando datos a voluntad? Entonces tendrás que comenzar a juntar el protocolo. Probablemente sea una serie de algún tipo, por lo que deberá determinar la velocidad en baudios. Eso es sólo una cuestión de medir el ancho de la broca más estrecha. Entonces necesitas averiguar el formato. ¿Es algo así como RS232? Si es así, ¿cuántos arrancan y se detienen los bits? MSB o LSB primero? O quizás es más parecido a I2C, donde tiene un reloj y una línea de datos compartida que puede ser manejada por cualquiera de los extremos. Una vez que tenga una buena idea de lo que es el protocolo, entonces puede comenzar a averiguar cuáles son los datos reales. Los analizadores lógicos decentes pueden decodificar I2C y RS232. Si no tienes uno que pueda hacer esto, tendrás mucho trabajo por hacer. Una vez que pueda obtener datos consistentes, solo es cuestión de averiguar qué datos corresponden a qué botón o palo. Una vez que tenga todo eso, entonces necesita implementar el lado del controlador del protocolo en algo para ver si lo hizo bien. Si eso funciona, entonces debería poder seguir adelante y escribir el controlador de su dispositivo.