kakarotto
Leyenda de WaH
Buenas a todos queridos waher@s, hoy os traigo un tutorial corto e interesante, aunque realmente todos los créditos van para FBI de pokecommunity y aclaro, también, que es un tutorial adaptado del usuario
@L!nOS, así que doy créditos a ellos por su gran trabajo:
Mucha gente con pocos conocimientos de asm le gustaría cambiar el mini, la cuestión es que para emerald hay poca información al respecto, no todo el mundo entiende inglés y este tutorial va destinado a simplificar a los em-hackers la vida una barbaridad.
Para este tutorial necesitamos:
HxD ( O tu editor de hexadecimal favorito )
Tener nociones básicas sobre cómo crear punteros, compilar rutinas con thumb e insertar bytes sin sobreescribir (Ctrl+B)
FSF ( Esto es opcional, ya que con HxD puedes buscar espacio libre )
--
Dividiremos cada cosa en su spoiler correspondiente para dejarlo muy claro:
Una vez insertada la rutina deberás anotar el offset donde lo introdujiste, para obtener su puntero. En mi caso será 50ADE708
Ahora ve al offset 8BFF0 e introduce 00 48 00 47 xx xx xx xx+1,donde "xx xx xx xx" es el puntero al revés+1. En mi caso sería 51 AD E7 08
Ya está introducida la rutina correctamente y funcionando. Ahora necesitaremos el script que haga que nos funcione:
Cabe resaltar que podría poner una tabla con el nº de mini a utilizar, pero la verdad no la he investigado totalmente. Si alguien es tan amable de exponerla, sería genial. Yo he encontrado alguno:
Y bueno, eso es todo waheros, quería felicitaros las Navidades y sobre todo animar, una vez más, a todos aquellos "em-hackers" en su empeño por demostrar que esta rombase es la mejor con diferencia.
Saludos.
@L!nOS, así que doy créditos a ellos por su gran trabajo:
Mucha gente con pocos conocimientos de asm le gustaría cambiar el mini, la cuestión es que para emerald hay poca información al respecto, no todo el mundo entiende inglés y este tutorial va destinado a simplificar a los em-hackers la vida una barbaridad.
Para este tutorial necesitamos:
HxD ( O tu editor de hexadecimal favorito )
Tener nociones básicas sobre cómo crear punteros, compilar rutinas con thumb e insertar bytes sin sobreescribir (Ctrl+B)
FSF ( Esto es opcional, ya que con HxD puedes buscar espacio libre )
--
Dividiremos cada cosa en su spoiler correspondiente para dejarlo muy claro:
Copia esta rutina en un bloc de notas y compílalo con la herramienta thumb, que no es nada más ni nada menos que un ejecutable por línea de comandos, para ello debes arrastrar tu archivo a la herramienta y tu archivo deberá llamarse XXX.asm (dónde XXX es el nombre elegido por tí).
Si lo deseas puedes copiarlo compilado:
(Recuerda eliminar los espacios entre cada byte)
Código:
.text
.align 2
.thumb
.thumb_func
@hook from 0805CA4C via r0
main:
@flag check
checkFlag:
mov r0, #0xFF
lsl r0, r0, #0x2
add r0, r0, #0xA @0x3FC + 0xA = @406
ldr r2, =(0x809D790+1)
push {r1, r3}
bl linker
pop {r1, r3}
cmp r0, #0x1
bne noCrash
setOW:
ldr r0, =(0x20375D8)
ldrb r0, [r0]
cmp r0, #0xFF
beq noCrash
mov r3, r0
noCrash:
mov r8, r3
lsl r4, r4, #0x10
lsr r4, r4, #0x10
lsl r5, r5, #0x10
ldr r0, =(0x808BFF8 +1)
bx r0
linker:
bx r2
.align 2
//añade un espacio antes de compilar aquí
Código:
FF 20 80 00 0A 30 09 4A 0A B4 00 F0 0E F8 0A BC 01 28 04 D1 06 48 00 78 FF 28 00 D0 03 1C 98 46 24 04 24 0C 2D 04 03 48 00 47 10 47 91 D7 09 08 D8 75 03 02 F9 BF 08 08
Una vez insertada la rutina deberás anotar el offset donde lo introdujiste, para obtener su puntero. En mi caso será 50ADE708
Ahora ve al offset 8BFF0 e introduce 00 48 00 47 xx xx xx xx+1,donde "xx xx xx xx" es el puntero al revés+1. En mi caso sería 51 AD E7 08
Ya está introducida la rutina correctamente y funcionando. Ahora necesitaremos el script que haga que nos funcione:
Podemos activar el script y desactivarlo en función de nuestras necesidades.
Para activarlo
Una vez entres a un lugar nuevo, verás los cambios.
Para desactivarlo
Al igual que la otra opción, verás los cambios una vez entres a un lugar.
Para activarlo
Código:
#org 0xE3D0EA
setflag 0x406 //Esta es la flag que usamos para ver su apariencia
setvar 0x8000 0xN //Donde "N" es el número del mini a utilizar.
callasm 0x8089C35 //Llamar a la rutina de refrescar mapa (special 0x91)
end
Para desactivarlo
Código:
#freespace 0xFF
#dynamic 0xE00000
#org @start
clearflag 0x406 //"limpiamos" la flag para reestablecer el mini del héroe
callasm 0x8089C35 //volvemos a refrescar
end
Cabe resaltar que podría poner una tabla con el nº de mini a utilizar, pero la verdad no la he investigado totalmente. Si alguien es tan amable de exponerla, sería genial. Yo he encontrado alguno:
0: Héroe masculino
1: Héroe femenino
2: Héroe masculino en bicicleta
3: Héroe femenino en bicicleta
[...]
Aclarar que algún número de mini se bugea y pierde las paletas originales al usarlo un rato (es decir, andando con ese mini por algun mapa)
1: Héroe femenino
2: Héroe masculino en bicicleta
3: Héroe femenino en bicicleta
[...]
Aclarar que algún número de mini se bugea y pierde las paletas originales al usarlo un rato (es decir, andando con ese mini por algun mapa)
Y bueno, eso es todo waheros, quería felicitaros las Navidades y sobre todo animar, una vez más, a todos aquellos "em-hackers" en su empeño por demostrar que esta rombase es la mejor con diferencia.
Saludos.
Última edición: