No se necesita de ninguna solución. Tras leer el post de Rubire, puedo ver que esta es la misma implementación que yo solia usar en binario.por casualidad no habrá alguna solución? me interesa saber.
https://www.pokecommunity.com/showpost.php?p=8311049&postcount=496
Yo mismo acabo de aplicarla, como tantas veces en el pasado, y funciona perfectisimamente bien.
Primero se inserta esta rutina en un offset con espacio vacio, terminado en 0, 4, 8 o C:
Despues, en 0x1D9A53 se escriben los siguientes bytes: 41 YY YY YY 082E E0 3F 02 02 00 2E 0C 3C 02 02 00 2E 0D 3C 02 02 00 23 00 F1 63 9A 1D 08 28 58 9A 1D 08
Donde YY YY YY es el offset en donde insertaste la rutina, convertido en un puntero. Sin sumarle 1, pero.
Si yo insertase la rutina en 0x71A250, entonces tendria que escribir "41 50 A2 71 08"
Y por ultimo, en 0x015A68 se escriben los siguientes bytes: A1 5A 01 08
Muy sencillo todo.
Si a ti no te funciona, es porque o bien estás haciendo algo mal, o bien no estás usando una ROM Americana limpia de Pokémon FireRed v1.0.
En cuyo caso, no podrias usar el CFRU como Erkey lo sugirió aunque quisieras.