Eso será más difícil de lo que crees.
Por lo que recuerdo, los botones de gameboy están escaneados , es decir, el hardware activa un conjunto de fuentes de corriente en secuencia, y para cada uno de ellos verifica qué sumideros de corriente ven un flujo de corriente. p>
De esa manera, no necesita un pin para cada botón. Compare esquemas de ingeniería inversa.
Pero eso significa que ningún botón está "continuamente" dirigiendo la corriente si se presiona.
Entonces, tendrías que construir algo que "cuente" cuántas veces en un lapso de tiempo se ha cerrado un botón cada vez que había voltaje a través de él; Básicamente, haz lo mismo que el hardware de gameboy.
Ciertamente hay maneras inteligentes de hacerlo, pero seamos honestos aquí: la forma más fácil, y con una gran posibilidad, también la más compacta, sería un pequeño microcontrolador barato conectado para observar el voltaje a través de los diodos de matriz de botón (con alta impedancia, por supuesto).
Hacerlo tendría otro beneficio: en lugar de usar un interruptor analógico para cambiar los cristales (ni siquiera estoy seguro de que funcione; los interruptores analógicos tienen sus propias capacidades y comportamiento de fase, y su combinación de CPU + oscilador necesita una capacidad de carga específica para funcionar ), podría desoldar el cristal y reemplazarlo con un reloj diferencial generado por su microcontrolador; es totalmente factible utilizar el oscilador original (o uno compatible) para impulsar su microcontrolador. Eso usaría un múltiplo de la frecuencia del oscilador (por ejemplo, 16 veces la frecuencia del oscilador) para generar su reloj interno, y luego podría generar cualquier división de ese reloj con la unidad PWM incorporada que tiene básicamente cualquier microcontrolador.
Solución de tecnología más baja: utilice un relé / interruptor de relé para apagar los osciladores, y actúe con un imán externo.