Hermes escribió:Buenas,
mirando mirando, me he dado cuenta de donde está el problema que hace que el juego Formula1 2010, no reconozca los mandos. Se trata de un parche que no se cual es su función, pero que quitándolo, tampoco he observado nada raro: tal vez sea una especie de check relacionado con los módulos USB y por eso haya juegos como este F1, que no reconocen el mando. Tal vez solo sea relativamente necesario en el proceso de inicialización y luego de igual.
Sea como sea, he subido una actualización del fuente, que
aunque no incluye esa desactivación del parche de serie, si lo señala con un warning (ver línea 169) e incluye un define para poder desactivar el módulo USB y tambien otro DESTINATION, que señala la dirección donde se instalará el código (y se añade un nuevo parche necesario, por si lo alojamos en otro lugar)
Aquí quiero señalar que tenemos una tabla (memory_patch_table) que se sitúa en torno a la dirección 0x700710 (por que nos faltaba espacio) y que eso me preocupa relativamente, pues es posible que sea machacada en algún momento, si se cargan nuevos módulos (tal vez lo mejor fuera encontrar otro sitio o directamente, cargar el payload en otra dirección mas conveniente, al final del kernel (yo lo he hecho así y me ha funcionado, al igual que me ha funcionado meter el código en el DESTINATION tan bajo que aparece anulado en el fuente, pero lo mismo no es un lugar adecuado, claro)
El caso es que existe otra forma de anular el parche usando la función POKE en por ejemplo,
open_manager:
void pokeq( uint64_t addr, uint64_t val)
{
system_call_2(7, addr, val);
}
pokeq(0x80000000000505d0ULL, 0xE92296887C0802A6ULL);
Añadiendo ese código a cualquier programa, se puede deshabilitar ese parche que impide el correcto funcionamiento de al menos, el F1 2010, sin necesidad de tocar el payload.
Eso si
se requiere que vuestro "pincho" tenga la funcionalidad peek/poke, pues de otra manera, no funcionará.
Los fuentes de la segunda versión podéis descargarlos en el primero hilo, pero ya sabéis que no es necesario que actualicéis vuestro "pincho", ya que las modificaciones son mas de código fuente, para permitir portar el payload a cualquier otra dirección.
PD: He incluido hex de versión Teensy con at90usb162.ñ EN mi caso utilizo dos leds, pero no debería dar problema
Saludos