Agregar puerto PS2 a Sony HB-10P y HB-20P

Página 1/2
| 2

Por dc740

Supporter (16)

Imagen del dc740

07-11-2022, 02:31

Hola, casi tengo terminado este proyecto. Lo comparto por si alguien quiere ayudar. Estoy agregando un puerto de teclado PS2, (o incluso un USB si tienen un chip que soporte ser host) a una Sony HB-20P. La idea (que funciona) es usar un Arduino de bajo costo y un puerto PS2 común y corriente.

Quiero dejar de INTENTAR arreglar la membrana del teclado, y poder revivir las máquinas que se venden muy económicas por internet porque los teclados dejan de funcionar.

Ya he logrado que funcionen todas las teclas
https://github.com/dc740/matrix-kbd-simulator

Falta:

  1. leer el teclado PS2 usando la biblioteca que ya existe para Arduino
  2. mapear los scancodes de la biblioteca al estado de cada pin de la matriz

Actualmente solamente hay un código de DEMO que escribe todas las teclas en la MSX, pero la parte difícil ya está hecha: Programar correctamente todos los timings y que funcione de manera estable.

Se aceptan Pull Requests! Claramente se requiere un poco de experiencia en desarrollo de hardware y software para poder ayudar con el proyecto, pero honestamente es bastante sencillo.
La base de funcionamiento está explicada acá:
https://caro-su.translate.goog/msx/kbd4msx.htm?_x_tr_sch=htt...

Saludos

Login sesión o register para postear comentarios

Por saez05

Master (130)

Imagen del saez05

11-11-2022, 13:14

Que buen proyecto, no tengo los conocimientos necesarios ni mucho tiempo para ayudar...pero ya me gustaría.
Ví el proyecto que han hecho https://www.msx.org/forum/msx-talk/hardware/hb-f1xd-keyboard-pcb y me pregunto si esto se podria hacer también para los sony hb10 y 20, hacer una placa pcb con las pistas y los contactos necesarios para sustituir las membranas... mira que hay sony hb10 y 20 que lo utilizarían.
Seguiré el proyecto, enhorabuena

¿has visto esto? https://hackaday.io/project/178358-exps2
https://www.pcbway.com/project/shareproject/MSX_Expert___Adaptador_de_teclado_PS2__Funcionando___revisado__Slim_1_03.html

Por dc740

Supporter (16)

Imagen del dc740

15-11-2022, 01:36

Hola, muchas gracias. Hoy por la noche lo hice funcionar!
Había encontrado el post en ruso original cuando buscaba a ver si la idea era posible... pero en su momento no encontré el código de fuente. Cuando lo encontré estaba en ensamblador...y no era divertido seguir código ensamblador decodificando el scancode con comentarios en ruso... así que me dispuse hacerlo. Casualmente hay un usuario que está por hacer una tirada de membranas de teclado para esta máquina también!

Actualmente tengo 2 problemas:
1) el teclado a veces pierde el scancode de release, y queda la tecla presionada
2) funciona OK en BASIC. pero en el momento en que pongo un cartucho no me reconoce nada de nada. Incluso con el analizador lógico veo que en un caso ni siquiera se estaría leyendo el teclado. La verdad no me lo explico!

Pero bueno, será cuestión de seguir luchando un poco.
Saludos!

OOOHHH... mirando el código de fuente que me has enviado: https://github.com/Danjovic/MSX/tree/master/EXPS2/firmware/E...
Parece que me saldría más fácil portarlo y probar si funciona antes que ponerme a arreglar el mío! Tiene menos features, pero si funciona. ¿Qué sentido tendría seguir peleando con el otro código?

Por dc740

Supporter (16)

Imagen del dc740

24-11-2022, 01:43

Pues finalmente funciona! Y mucho mejor que antes, gracias al artículo que me has compartido @saez05.

Tengo que arreglar las teclas cuando se presiona shift, que por falta de tiempo no lo he hecho y debería ser sencillo (de hecho ya lo tengo en la mente)... pero FUNCIONA!

Lo estuve probando con carts de test y con algunos juegos que sólo leen la barra espaciadora y las flechas, y funcionó sin problemas también.

Así que estoy muy satisfecho. Ya no es necesario tener una membrana funcional para poder usar estas máquinas.

Por manolito74

Paragon (1288)

Imagen del manolito74

25-11-2022, 00:22

Hola:

Jo, ¡qué envidia! Sois unos crack con el Hardware. ;-)

¡Enhorabuena!

Saludetes. ;-)

Por dc740

Supporter (16)

Imagen del dc740

26-11-2022, 01:46

muchas gracias! he agregado control de power, así se apaga solo si el teclado PS2 no está conectado (para no consumir energía). También he limpiado un poco el código. Aun me faltan acomodar algunas teclas para que presionen el símbolo correcto, e implementar un feature extra que me gustaría tener.

Saludos!

Por dc740

Supporter (16)

Imagen del dc740

27-11-2022, 02:03

Otra actualización:

Mapear 1:1 el teclado español hubiese significado que muchas de las keys de la MSX original no se podrían tipear. Así que como primer paso hice un mapeo exacto del teclado de la MSX sobre un teclado español. Los labels de las teclas en español NO se respetan para nada.

Si queremos tipear un símbolo en particular, miramos el teclado de la MSX, y presionamos en la misma posición donde estaría esa tecla, pero en el teclado PS2.

Mapear el layout únicamente con las teclas en español se podría hacer, pero llevaría un trabajo importante, porque algunas teclas del teclado español se traducen en una combinación de teclas en el teclado de la MSX, y hacer eso es posible, pero MUY tedioso. Para colmo de males hay que mapear las teclas comunes, las teclas con shift, las que son con graph, las que son con graph+shift, y las que son con CODE (y no se si las de code+shift también).

Como verán el trabajo es totalmente factible, pero extenso. La otra opción: sólo mapear algunas teclas. A mi esto me parece tan horrible que prefiero evitar tal implementación.

Saludos!

Por dc740

Supporter (16)

Imagen del dc740

27-11-2022, 03:47

segunda actualización de la noche. Estuve probando con el modo inmediato (actualizar el puerto sin esperar a que se haga el barrido de lectura en la única columna que se está usando), pero en el único juego que tengo que usa esta metodología funciona mal mal. De hecho cuelga el juego. Porque aunque sólo lee la columna Y8, tiene unos microsegundos donde NO la lee.Y al estar seteado el puerto, ALGO pisa y no le gusta.

Por lo que no voy a incluirla. Por el momento he llegado al feature complete! Big smile

Funciona el teclado. El mapeo está como me gusta (replicando el original, con todas las teclas exactamente en el mismo lugar), y funcionando tanto en BASIC como en varios carts que tengo (algunos juegos, otros de testeo).

Pueda ser que le sirva a alguien más también!

Saludos

Por dc740

Supporter (16)

Imagen del dc740

29-11-2022, 23:29

Pues vengo con otra actualización!

Encontré la forma de hacer las actualizaciones de teclado instantaneamente, así que ahora todos los juegos deberían funcionar de la misma manera. Lo cual es una buenísima noticia para la compatibilidad, porque ya no se espera el raising edge para actualizar, sino que se hacen las actualizaciones cuando se deben (tanto en raising edges como cuando se presiona una tecla y ya está una columna de la matriz seleccionada).

Encontré un bug al iniciar el ordenador:
el algoritmo de auto-detección del teclado PS2 durante el inicio a veces falla y no responde. No sé el motivo, pero tengo que reiniciar el power para que lo tome correctamente.

Sólo pasa al inicio del sistema con uno de los juegos, con los otros no me pasa (raro). Lo bueno es que no sucede durante el gameplay, sólo al iniciar el ordenador Smile

Saludos!

Por dc740

Supporter (16)

Imagen del dc740

30-11-2022, 06:09

Solucionado el bug al iniciar el teclado! Ya debería ser completamente funcional y compatible con todos los juegos.

Saludos!

Por mohai

Paladin (994)

Imagen del mohai

02-12-2022, 19:09

Hola.
Se agradece el curro que te estás dando.
Creo que uno de los problemas que tienen los teclados PS/2 es el famoso ghosting o que no permiten ciertas combinaciones de teclas, o que cuando pulsas 2, no puedes pulsar una tercera, etc.
¿Has notado este problema con tu interfaz?

Así, de pronto, se me ocurre, como prueba de fuego, que el juego Wonderboy tiene un truco: al pulsar QWERTY y ASDFGH (mas o menos estas teclas), se pasa de fase. ¿Funcionará este truco con tu interfaz?

Recuerdo haber descubierto este truco por casualidad. De pequeño me dedicaba a pulsar teclas a lo loco con algunos juegos y descubrí este truco. Para ello usaba la caja de una casette de canto sobre el teclado para hacerlo LOL! LOL!

Página 1/2
| 2