Registrarse

[Scripting] Cómo trasladar Scripts de un Rom a otra

Hola a todos, espero que esteis bien.
Hoy os traigo un tutorial algo corto y que seguramente, la mayoría de los Scripters sabe hacer, pero nunca está de más para los que están aprendiendo recién.
Y lo que voy a enseñar hoy es Como transladar Scripts de una Rom a otra sin sobreescribir ningún offset, y así no destruir la Rom.

¿Pero para que enseñar algo así?
Pues verán, algunas veces, cuando tenemos un grupo de hacking, las tareas (Por decirlo de alguna manera) se retrasan. Con esto me refiero a que dos miembros del grupo están trabajando en fases completamente distintas de la Rom (Por ejemplo, cuando una tiene chorrón de midis y tiles, pero la otra solo tiene los scripts que hace el scripter), y pues, el pasar la rom otra vez al scripter para transladarlos tarda un poco y se presentan problemas a la hora de Hackear.
Otro caso es cuando haces avances en tu Rom y por alguna extraña razón, los cambios (Ya sean tiles, mapas, etc) hacen que tus scripts se destruyan (A mi me ha pasado numerosas veces).
Pues bien, para eso hago este tutorial.
Empecemos....

Realmente, es bastante sencillo, también os daré muestras gráficas del procedimiento, estos son los pasos a seguir:
1) Abrid vuestra Rom a la que quereis trasladar los Scripts
2) Hacen el paso que la mayoría hace a la hora de elaborar Scripts:
#dynamic 0x800000 (O en caso de que haya muchos datos en la rom, 900000)

#org @inicio
3) Abrid la rom donde está el Script que quereis trasladar, y abres el Script.
Por ejemplo, este es mi Script:
'---------------
#org 0x80CD3E
checkflag 0x517
if 0x1 goto 0x880CD3E
lockall
pause 0x20
applymovement 0x4 0x880CF52
waitmovement 0x4
textcolor 0x0
msgbox 0x880CDB6 MSG_NORMAL '"???: Em, ¡Oye! ¿Puedes venir un\nm..."
applymovement MOVE_PLAYER 0x880CF56
waitmovement 0xFF
textcolor 0x0
msgbox 0x880CDE2 MSG_NORMAL '"???: Hola, ¿sabes donde está el\nL..."
applymovement 0x4 0x880CF5E
waitmovement 0x4
playsong 0x14C 0x0
pause 0x20
applymovement MOVE_PLAYER 0x880CF65
applymovement 0x4 0x880CF90
waitmovement 0x0
sound 0x9
setdooropened 0x25 0x6
doorchange
pause 0x20
applymovement MOVE_PLAYER 0x880CFBA
waitmovement 0xFF
warp 0x4 0x3 0x0 0x6 0xC
release
end


'---------
' Strings
'---------
#org 0x80CDB6
= ???: Em, ¡Oye! ¿Puedes venir un\nmomento?.

#org 0x80CDE2
= ???: Hola, ¿sabes donde está el\nLABORATORIO del PROF. OAK?\pEs que lo he andado buscando pero\ncreo que en CIUDAD VERDE no está.\p¡Ah se me olvidaba presentarme!.\p¡Yo soy DANIEL, nieto del PROF.\nOAK, vengo de JOHTO por\lvacaciones!.\pY tu eres...\p...\p¡Asi que te llamas [player], un\ngusto!.\p...\p¿En serio me acompañarás al\nLABORATORIO?\p¡Muchas gracias, pues vale, yo te\nsigo!.


'-----------
' Movements
'-----------
#org 0x80CF52
#raw 0x2 'Face Left
#raw 0x62 'Exclamation Mark (!)
#raw 0xFE 'End of Movements

#org 0x80CF56
#raw 0x13 'Step Right (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0xFE 'End of Movements

#org 0x80CF5E
#raw 0x10 'Step Down (Normal)
#raw 0x12 'Step Left (Normal)
#raw 0x12 'Step Left (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x3 'Face Right
#raw 0xFE 'End of Movements

#org 0x80CF65
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org 0x80CF90
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org 0x80CFBA
#raw 0x11 'Step Up (Normal)
#raw 0x60 'Hide
#raw 0xFE 'End of Movements
4) Ahora es tan fácil como copiar lo que está debajo de "#org 0x80CD3E" y pegarlo en la base del Script creado anteriormente (El del paso #2)
OJO: En algunas ocasiones se necesita convertir los offsets en punteros (En caso de que esos offsets ya estén ocupados en cambios).
Os quedará algo como esto:
#dynamic 0x800000

#org @inicio
checkflag 0x517
if 0x1 goto 0x880CD3E
lockall
pause 0x20
applymovement 0x4 0x880CF52
waitmovement 0x4
textcolor 0x0
msgbox 0x880CDB6 MSG_NORMAL '"???: Em, ¡Oye! ¿Puedes venir un\nm..."
applymovement MOVE_PLAYER 0x880CF56
waitmovement 0xFF
textcolor 0x0
msgbox 0x880CDE2 MSG_NORMAL '"???: Hola, ¿sabes donde está el\nL..."
applymovement 0x4 0x880CF5E
waitmovement 0x4
playsong 0x14C 0x0
pause 0x20
applymovement MOVE_PLAYER 0x880CF65
applymovement 0x4 0x880CF90
waitmovement 0x0
sound 0x9
setdooropened 0x25 0x6
doorchange
pause 0x20
applymovement MOVE_PLAYER 0x880CFBA
waitmovement 0xFF
warp 0x4 0x3 0x0 0x6 0xC
release
end


'---------
' Strings
'---------
#org 0x80CDB6
= ???: Em, ¡Oye! ¿Puedes venir un\nmomento?.

#org 0x80CDE2
= ???: Hola, ¿sabes donde está el\nLABORATORIO del PROF. OAK?\pEs que lo he andado buscando pero\ncreo que en CIUDAD VERDE no está.\p¡Ah se me olvidaba presentarme!.\p¡Yo soy DANIEL, nieto del PROF.\nOAK, vengo de JOHTO por\lvacaciones!.\pY tu eres...\p...\p¡Asi que te llamas [player], un\ngusto!.\p...\p¿En serio me acompañarás al\nLABORATORIO?\p¡Muchas gracias, pues vale, yo te\nsigo!.


'-----------
' Movements
'-----------
#org 0x80CF52
#raw 0x2 'Face Left
#raw 0x62 'Exclamation Mark (!)
#raw 0xFE 'End of Movements

#org 0x80CF56
#raw 0x13 'Step Right (Normal)
#raw 0x10 'Step Down (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0xFE 'End of Movements

#org 0x80CF5E
#raw 0x10 'Step Down (Normal)
#raw 0x12 'Step Left (Normal)
#raw 0x12 'Step Left (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x3 'Face Right
#raw 0xFE 'End of Movements

#org 0x80CF65
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org 0x80CF90
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x13 'Step Right (Normal)
#raw 0x11 'Step Up (Normal)
#raw 0xFE 'End of Movements

#org 0x80CFBA
#raw 0x11 'Step Up (Normal)
#raw 0x60 'Hide
#raw 0xFE 'End of Movements

Y ahora simplemente hace falta compilar el script (Con el ícono de los engranajes azules) y os dará el offset del Script trasladado!
Espero que os haya servido de ayuda :D
(Este tutorial está dedicado a @Brock , espero que te haya servido mejor de ayuda ^^)
 

Dani_SR_17

¡Pokémon LionHeart!
Respuesta: GBA | Scripting | Cómo transladar Scripts de una Rom a otra. [Ultra-Mega-Fácil xD]

Un tuto muy útil para los nuevos, pero ¿no es más sencilla la refactorización?
 
Arriba