Ya me gustaria a mi, poder adjuntar el codigo para todos vosotros, pero resulta que tengo un problema y haber si alguno me puede ayudar... pues vereis, la PSX-PS2 manda una serie de codigos via serie al mando: el primero seria 0x1, para indicar que estamos accediendo al mando y luego manda un codigo (tipicamente 0x42), para pedir datos al mando. Segun parece esta orden puede variar desde 0x40 a 0x4f y se pueden conseguir cosas tan interesantes como cambiar el modo del mando, y activar la vibracion. El problema es que yo desconozco para que sirven los otros codigos y que datos tengo que devolver. Si alguno lo sabe o sabe donde encontrarlo, pues podeis echarme una mano
INFORME DE PROGRESO:
Hasta ahora he logrado, usando un PIC16F84a a 12 Mhz, leer correctamente tanto mando digital, analogico y negcon, haciendo una emulacion con el PIC que desde el punto de vista de la consola es un mando analogico (Dual Shock 1), pero que si bien en juegos PSX, funciona como mando sin vibracion (por culpa de los dichosos codigos), en juegos de PS2 he conseguido un resultado dispar: en uno no rula, en el Xtreme falla el mando en parte y solo se corrige algo si mando una cadena de datos mas larga (se queda entre medias de un Dual Shock 1 y 2
), sin embargo donde funcionó de forma espectacular, fue en el Gran Turismo 3, donde pude conducir con mi volante multi-norma, que por si solo no va, como neg-con!!, cambiando claro la informacion para que pareciese el Dual Shock (aunque para este, tengo GT-FORCE
) .
Aun no se si con un solo PIC, podre llevar a cabo la emulacion de forma guapa, puesto que parte de los mensajes que recibo, los desecho (por eso necesito vuestra ayuda) y la temporizacion es MUY critica: a 12 MhZ tengo que leer mensajes serie a 250kHZ, lo que significa que no puedo sobrepasar 12 instrucciones del PIC, por cada pulso del reloj y para que os hagais una idea de lo que significa, la rutina que lee los comandos y envia datos de 8 bit, en vez de usar un bucle de 8 bit, he tenido que implementar directamente el codigo para cada uno de los putos bits
,(los saltos tardan el doble) pero parece que rula perfectamente y espero no tener que subir el clock, suerte que luego hay un espacio mas largo de tiempo.
De emular Dual Shock 2, creo que nanai de la china, pues el capturador que me he hecho en el PC, se vuelve loco, lo que implica que o bien usa una norma diferente, o mas probablemente aumenta la frecuencia (500Khz?), lo que se pone a un nivel, casi inadmisible de velocidad. En cualquier caso, la falta de informacion pesa mucho.
El caso es que si quereis tener la posibilidad de crearos vuestro propio mando o adaptar vuestro mando de conducir aviones del PC o hacer un autofire personalizable o adaptar los botones para zurdos (la eeprom del PIC puede retener una configuracion) o adaptar vuestro viejo volante de PSX , si podeis echarme una mano en esto, tal vez lo consigamos. En caso contrario, tardare mucho mas (quizas eternamente
), pero al menos mi trabajo servira para adaptar mi viejo volante al PC, que a pesar de tener un adaptador PSX via USB, no rula bien con el neg-con. No se podra decir que no lo intente.
P.D: Para el libro Guiness de los Records: soy el primero en conducir en GT3 con un volante neg-con
. Echadme una mano con lo de los codigos que yo me he vuelto loco buscando y no he visto mas de lo que ya se sabe