Registrarse

[Scripting] RF - Sistema de repelentes estilo BW2 para Rojo Fuego!

Acimut

Profesional de WaH
Hola, soy yo otra vez, un slowpoke con gorrito.
En esta ocación me complace traerles el sistema de repelentes estilo BW2 para Rojo Fuego! sí, para la ROM española.

Primero, créditos a Darthatron de Pokeco por hacer este sistema para Fire Red.
Fuente

Si desean poner este sistema en la Fire Red (la ROM inglesa BPRE) se pueden pasar por este buen tutorial de @Naren Jr.
TUTORIAL DE NAREN JR.

Bien, lo que necesitaremos:
  • Una ROM española BPRS
  • Un editor hexadecimal (yo uso HxD)
  • XSE 1.1


Abrimos la ROM con XSE 1.1 y compilamos el siguiente script:
Código:
#dynamic 0x800000

#org @inicio
lock
checkitem 0x800E 0x1
compare LASTRESULT 0x1
if b_>= goto @ThereAreMore
msgbox @RepelExpired 0x3
release
end

#org @ThereAreMore
msgbox @UseAnother 0x5
closeonkeypress
compare LASTRESULT 1
if b_true goto @CallASM
end

#org @CallASM
callasm 0x081BF7F5
end

#org @RepelExpired
= El efecto del repelente ha\nterminado.

#org @UseAnother
= El efecto del repelente ha\nterminado...¿Quieres usar otro?
No olviden anotar el offset donde queda el script, puesto que lo necesitaremos.
Por cosas de la vida yo puse mi script aquí: F91980
Lo permuto para convertirlo en puntero: 80 19 F9 08

Script compilado en F91980 por si acaso (?
6A 47 0E 80 01 00 21 0D 80 01 00 06 04 9C 19 F9 08 0F 00 B9 19 F9 08 09 03 6C 02 FF 0F 00 E1 19 F9 08 09 05 68 21 0D 80 01 00 06 01 B2 19 F9 08 02 FF 23 F5 F7 1B 08 02 FF BF E0 00 D9 DA D9 D7 E8 E3 00 D8 D9 E0 00 E6 D9 E4 D9 E0 D9 E2 E8 D9 00 DC D5 FE E8 D9 E6 E1 DD E2 D5 D8 E3 AD FF 00 FF BF E0 00 D9 DA D9 D7 E8 E3 00 D8 D9 E0 00 E6 D9 E4 D9 E0 D9 E2 E8 D9 00 DC D5 FE E8 D9 E6 E1 DD E2 D5 D8 E3 AD AD AD 51 CB E9 DD D9 E6 D9 E7 00 E9 E7 D5 E6 00 E3 E8 E6 E3 AC 00 FF 00 FF FF


Ahora abrimos la ROM con nuestro editor hexadecimal, y en cada uno de los siguientes offset realizamos los cambios correspondientes:

083138: //aquí va el puntero al script. En mi caso 80 19 F9 08

083102: 0C 48 EB F7 4C FA 01 06 00 29 16 D0 41 1E 0C 06 0D 0A 07 48 EB F7 51 FA 00 2C 0E D1 03 4C 25 80 05 48 E6 F7 40 FD 01 20 08 E0 30 AD 03 02

083151: 06

0a1b59: 06

0a1baa: 1C

0a1bac: 11

0a1bb0: 0F

0a1bc2: 21 88 09 02 41 40

0a1bd2: 34 4B 28 21 71 43 5B 18 D9 79 30 1C 02 22 17 4B FF F7 49 FB C7 F7 0D FF 70 BD 20 40 00 00 FF FF 00 00 30 AD 03 02

0a1c0e: 00 00 00 00

0a1c1c: 00 00 00 00

1bf7f2: 00 00 00 B5 04 48 50 21 00 F0 01 F8 00 BD 00 4A 10 47 55 74 07 08 4D 1B 0A 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

---------------------
Listo!

Por último, gracias a @LostMonkey por la sugerencia de pasar este sistema al Rojo Fuego.
PD: luego pongo imágenes.
 

MasterRed809

Usuario de oro
No puedo creer que nadie haya comentado en este post, ha sido algo que he estado buscando por mucho tiempo, y les servirá a todos los que estén haciendo Romhacking en BPRS, te felicito Detective BPRS
PD: Soy nuevo en esto del Romhacking.
 

aiki

right now I'm sleeping.
Wtf! ._.
Ojalá hubiese visto esto antes, ya lo estaba investigando, había encontrado todos los offsets menos este:
1bf7f2: 00 00 00 B5 04 48 50 21 00 F0 01 F8 00 BD 00 4A 10 47 55 74 07 08 4D 1B 0A 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Respecto al script vi uno en Pokeco en donde con un par de compare's se podía hacer un menú de que repelente deseas usar con una Multichoice.
Así que trabaré en eso para Rojo Fuego.

Nada amigo, buen tutorial y bien explicado como siempre, no esperaba menos del "Detective BPRS"
 

Acimut

Profesional de WaH
Respecto al script vi uno en Pokeco en donde con un par de compare's se podía hacer un menú de que repelente deseas usar con una Multichoice.
Ya hace rato que devoré todo post de Pokeco que encontré respecto al sistema de repelentes BW2 buscando la manera de portear este sistema al Rojo Fuego, de paso viendo cómo otros fracasaban al intentarlo en las ROM italianas y alemanas. En el proceso mejoré mi pobre nivel de ASM y déjame decirte que, lo de las multichoice nació de no poder replicar exactamente el hack de Darthatron en Emerald. Si mal no recuerdo para ello necesitarás de una rutina hecha por Darthatron que encuentras aquí, que permite a un item llamar un script.
Para Rojo Fuego sería la siguiente (reemplazar las XXXXXX al final por el offset del script):
Código:
.text
.align 2
.thumb
.thumb_func
.global Hax
   
setup:
    push {r4, lr}
    mov r4, r0
    mov r0, pc
    add r0, #0x13
    ldr r1, .unk_02039998
    str r0, [r1]
    mov r0, r4
    ldr r1, .sub_080A11F0
    bl bx_r1
    pop {r4}
    pop {r0}
    bx r0

main:
    push {r4, lr}
    mov r4, r0
    ldr r0, .ScriptToCall
    ldr r1, .CallScript
    bl bx_r1
    mov r0, r4
    ldr r1, .del_c3_from_linked_list
    bl bx_r1
    pop {r4}
    pop {r0}
    bx r0

.align 2
bx_r1:
    bx r1

.align 2
.CallScript:
    .word 0x08069BA8+1
.unk_02039998:
    .word 0x02039998
.sub_080A11F0:
    .word 0x080A11F0+1
.del_c3_from_linked_list:
    .word 0x08077540+1
.ScriptToCall:
    .word 0x08XXXXXX
Ya insertarlo en un item no recuerdo bien cómo es, pero con G3T se hace.
Edit: para @Anzu_Blue y por si alguien más le interesa...
[...] la configuración que usé con G3T para el EV-IV display screen de jiangzhengwenjz en rojo fuego fué la siguiente:



En field Script poner el offset de la rutina que llama el script +1.
Rutina que llama un script para rojo fuego compilada:
Código:
10 B5 04 1C 78 46 13 30 0C 49 08 60 20 1C 0C 49 00 F0 10 F8 10 BC 01 BC 00 47 10 B5 04 1C 0A 48 05 49 00 F0 07 F8 20 1C 06 49 00 F0 03 F8 10 BC 01 BC 00 47 08 47 C0 46 A9 9B 06 08 98 99 03 02 F1 11 0A 08 41 75 07 08 XX XX XX 08
Cambiar XX XX XX por el puntero al script.
inis para Rojo Fuego en G3T Aquí
 
Última edición:
Arriba