tuts_gba
Thread Id: 20467
Thread Name: FR | Scripting | WBTO//Cambiar el mini
#0
J.com 12785
Bueno, hoy traigo un tutorial sobre como cambiar el minisprite del prota mediante script. Está probado solo en FR, no se si funciona en ruby.

El tutorial puede ser un poco difícil, espero redactarlo bien para que se entienda.

Necesitamos:


1º_Bien, el primer paso es sencillo, creamos e insertamos el mini que queréis usar en NSE. Lo insertáis donde queráis, menos encima del prota (obbio)
Si el nuevo mini solo tiene los movimientos normales, es decir los de caminar, recordad que debéis desactivar las zapatillas.

*Recomendable que este mini use la misma paleta que el mini del prota, cambiar la paleta es mas complicado, pero lo que querais*

2º_En el NSE, nos vamos hasta el mini que queréis cambiar, y activamos el modo profesional.
Abajo veréis que hay 3 offsets, Pointer 1; Pointer 2; Pointer 3.
Pues os quedáis con el 3º:



Lo apuntáis en block de notas, o a mano, vagos.
Ahora cogéis ese numero y lo permutáis. ¿Qué significa?
Pues ponéis los números de atrás, delante, y los de delante, atrás. Pero de 2 en dos, paso a mostrarlo:

Pointer 3: 3A00A0 => A0003A
El 3A pasa a estar detrás, el A0 pasa al principio, y el 00 se queda donde está. Una vez que tengamos nuestro offset permutado, seguimos:

3º_En XSE haremos el milagro de trevestirnos (?) Tan solo debéis poner estos wtbo cuando queráis que el mini se cambie:

writebytetooffset 0x 0x02020648
writebytetooffset 0x 0x02020649
writebytetooffset 0x 0x0202064A

En esos 3 "0x" pondremos nuestro número permutado, por orden de 2 en 2. Quedaría así:


1º-A0 2º-00 3º-3A
writebytetooffset 0xA0 0x02020648
writebytetooffset 0x00 0x02020649
writebytetooffset 0x3A 0x0202064A

¿Ya está? No. Solo con esto el mini no se cambia, por que nos queda refrescar la pantalla, usad un fadescreen o un warp.

Con esto, nuestro mini se cambiará por el que queríamos, pero seguirá conservando la misma paleta que el prota.

Ahora paso a explicar cómo se cambia la paleta:

4º_Abrid el A-Map y en cualquier mapa poned el mini que queréis cambiar. Luego en VBA id hasta donde está el mini, y luego os vais al palette view, y buscáis la paleta del mini a cambiar. Mirad la imagen de ejemplo, sabiendo que el mini del circulo es el que yo quiero:



Bien prestad atención este paso es importante:
Como habéis visto, el 1º color de la paleta no nos interesa, solo cambiaremos los otros 15. Al seleccionarlos aparecen 4 numeros abajo, como muestra la imagen.

En este caso, el 530E, es el 1º a poner en el script. Son muchos wtbo, aquí os dejo el código:

writebytetooffset 0x 0x20377FA
writebytetooffset 0x 0x20377FB
writebytetooffset 0x 0x20377FC
writebytetooffset 0x 0x20377FD
writebytetooffset 0x 0x20377FE
writebytetooffset 0x 0x20377FF
writebytetooffset 0x 0x2037800
writebytetooffset 0x 0x2037801
writebytetooffset 0x 0x2037802
writebytetooffset 0x 0x2037803
writebytetooffset 0x 0x2037804
writebytetooffset 0x 0x2037805
writebytetooffset 0x 0x2037806
writebytetooffset 0x 0x2037807
writebytetooffset 0x 0x2037808
writebytetooffset 0x 0x2037809
writebytetooffset 0x 0x203780A
writebytetooffset 0x 0x203780B
writebytetooffset 0x 0x203780C
writebytetooffset 0x 0x203780D
writebytetooffset 0x 0x203780E
writebytetooffset 0x 0x203780F
writebytetooffset 0x 0x2037810
writebytetooffset 0x 0x2037811
writebytetooffset 0x 0x2037812
writebytetooffset 0x 0x2037813
writebytetooffset 0x 0x2037814
writebytetooffset 0x 0x2037815
writebytetooffset 0x 0x2037816
writebytetooffset 0x 0x2037817

En esos "0x" pondréis los 15 nº de la paleta, pero permutados.
Si el 1º color es 53E0, permutado seria E053. En los 2 primeros wtbo se ponen estos nº:

writebytetooffset 0xE0 0x20377FB
writebytetooffset 0x53 0x20377FC

Y lo mismo para los siguientes 14 colores.

Con esto, el mini y su paleta estarán cambiados. Es un poco pesado este último paso, pero es lo que toca.

Por último, explicaré algo adicional y aclararé un par de cosas:

5º_Aunque nuestro mini se haya cambiado, si refrescamos de nuevo la pantalla (entrando en una casa, o abrir la t-card) nuestro mini vuelve a la normalidad.
Para solucionar esto, debemos usar scripts de nivel.
No voy a explicar como funcionan, solo lo que debéis hacer:

En los mapas donde queráis que vuestro mini permanezca cambiado, poned un script de nivel 07.

Pondréis lo siguiente:


checkflag 0x"flag"
if 0x1 goto 0x"offset2"
end

offset2:
"aquí ponéis directamente todos los wtbo"
end

La flag del principio es para que jugeis con el cambio de mini, la activáis cuado cambiéis al mini, y desactivádla cuando lo regreséis a la normalidad.

Por último, creáis otro script de nivel del tipo 04, y le ponéis el mismo offset que el 07, simple.

Y con esto, ya he terminado, sacabó.
No sé como se hace para cambiar el sprite de la T-card, por si alguien le entró la curiosidad.

Y como soy bueno, os dejo una demostración de script de cambio de mini, y os hago un regalo:

YouTube Video

WTBO de la paleta 2: (en NSE)

writebytetooffset 0xBD 0x020377FA
writebytetooffset 0x7F 0x020377FB
writebytetooffset 0xD7 0x020377FC
writebytetooffset 0x6A 0x020377FD
writebytetooffset 0xFE 0x020377FE
writebytetooffset 0x4A 0x020377FF
writebytetooffset 0x5B 0x02037800
writebytetooffset 0x3A 0x02037801
writebytetooffset 0xDF 0x02037802
writebytetooffset 0x12 0x02037803
writebytetooffset 0xBE 0x02037804
writebytetooffset 0x25 0x02037805
writebytetooffset 0xD7 0x02037806
writebytetooffset 0x11 0x02037807
writebytetooffset 0x0F 0x02037808
writebytetooffset 0x21 0x02037809
writebytetooffset 0x89 0x0203780A
writebytetooffset 0x31 0x0203780B
writebytetooffset 0x29 0x0203780C
writebytetooffset 0x2D 0x0203780D
writebytetooffset 0x07 0x0203780E
writebytetooffset 0x21 0x0203780F
writebytetooffset 0xE7 0x02037810
writebytetooffset 0x0C 0x02037811
writebytetooffset 0x00 0x02037812
writebytetooffset 0x00 0x02037813
writebytetooffset 0x00 0x02037814
writebytetooffset 0x7C 0x02037815
writebytetooffset 0x20 0x02037816
writebytetooffset 0x02 0x02037817


WTBO de la paleta 4:

writebytetooffset 0x5F 0x20377FA
writebytetooffset 0x5B 0x20377FB
writebytetooffset 0xFE 0x20377FC
writebytetooffset 0x4A 0x20377FD
writebytetooffset 0x5B 0x20377FE
writebytetooffset 0x3A 0x20377FF
writebytetooffset 0xF 0x2037800
writebytetooffset 0x21 0x2037801
writebytetooffset 0x9F 0x2037802
writebytetooffset 0x5A 0x2037803
writebytetooffset 0xBA 0x2037804
writebytetooffset 0x3D 0x2037805
writebytetooffset 0x11 0x2037806
writebytetooffset 0x29 0x2037807
writebytetooffset 0x12 0x2037808
writebytetooffset 0x77 0x2037809
writebytetooffset 0xC 0x203780A
writebytetooffset 0x66 0x203780B
writebytetooffset 0xE7 0x203780C
writebytetooffset 0x24 0x203780D
writebytetooffset 0x18 0x203780E
writebytetooffset 0x6B 0x203780F
writebytetooffset 0x31 0x2037810
writebytetooffset 0x4A 0x2037811
writebytetooffset 0x29 0x2037812
writebytetooffset 0x2D 0x2037813
writebytetooffset 0xFF 0x2037814
writebytetooffset 0x7F 0x2037815
writebytetooffset 0x0 0x2037816
writebytetooffset 0x0 0x2037817



Código para cambiar tu mini al mini del policia:

writebytetooffset 0xC0 0x02020648
writebytetooffset 0x04 0x02020649
writebytetooffset 0x3A 0x0202064A
writebytetooffset 0x5F 0x020377FA
writebytetooffset 0x5B 0x020377FB
writebytetooffset 0xFE 0x020377FC
writebytetooffset 0x4A 0x020377FD
writebytetooffset 0x5B 0x020377FE
writebytetooffset 0x3A 0x020377FF
writebytetooffset 0x0F 0x02037800
writebytetooffset 0x21 0x02037801
writebytetooffset 0x7F 0x02037802
writebytetooffset 0x27 0x02037803
writebytetooffset 0xBA 0x02037804
writebytetooffset 0x12 0x02037805
writebytetooffset 0x90 0x02037806
writebytetooffset 0x01 0x02037807
writebytetooffset 0x34 0x02037808
writebytetooffset 0x76 0x02037809
writebytetooffset 0x4D 0x0203780A
writebytetooffset 0x5D 0x0203780B
writebytetooffset 0xE8 0x0203780C
writebytetooffset 0x30 0x0203780D
writebytetooffset 0xDD 0x0203780E
writebytetooffset 0x21 0x0203780F
writebytetooffset 0x15 0x02037810
writebytetooffset 0x1D 0x02037811
writebytetooffset 0xC9 0x02037812
writebytetooffset 0x18 0x02037813
writebytetooffset 0xFF 0x02037814
writebytetooffset 0x7F 0x02037815
writebytetooffset 0x00 0x02037816
writebytetooffset 0x00 0x02037817




Ale, comentad, like y esas cosikass, :p
#1
Loony Boo♪ 12263
Ya había visto este tutorial en NHDex, me alegro de que te hayas decidido a compartirlo también en esta comunidad. Es una lástima que haya dejado de usar Fire Red, me hubiera venido bien en ocasiones anteriores, pero se agradece el esfuerzo y sé que a muchos les puede venir bien.

¡Buen trabajo!
#2
fm~ 16648
¿Qué es wbto?
#3
J.com 12785
Iniciado por FM~
¿Qué es wbto?


Me equivoque al escribirlo rápido. Por favor algun mod o admin que lo ponga bien WTBO ;)
#4
Javi4315♪ 13374
Iniciado por Mr. Jota
Me equivoque al escribirlo rápido. Por favor algun mod o admin que lo ponga bien WTBO ;)


WriteByteToOffset (WBTO), lo tienes bien puesto, otra cosa es que él no sepa lo que es xD

Buen tutorial, aunque no lo haya probado ni creo que lo haga. Tengo entendido que es un poco inestable, así que yo en mi hack inserté una rutina ASM. Pero seguro que le sirve a muchos.
#5
Rufo 24954
No hay ningun tutorial completo que explique TODO el proceso de cambiar el prota? O sea mini y todos los sprites donde salga.
#6
Tito Sayer301 26309
Buen tuto hermano, ya tengo claro que a Luffy le van a quitar el sombrero y así sabré como hacerlo XD

Un saludo, sigue aportando!! ;)
#7
J.com 12785
Post inicial editado.
Hize este tuto de memoria, y me fié demasiado de ella, pero me equivoqué en algo.
No hay que hacer script de nivel 03 map/on menu close, hay que hacerlo de nivel 07 map/on menu close
#8
Tito Dafting301_4315♪ Kuchiki 24341
Últimamente me estoy inspirando a usar FR y la verdad esto hace que me enamore más de la base (?)

En fin, muchas gracias por aportarlo.

PD: Ya edité el título, es WBTO, no WTBO
#9
Horus Pen. 24335
Que buen tuto. La verdad te felicito. es justo lo que queria hacer hace un tiempo.
#10
xabierpower2012 24720
Bieeeeeeeen.
No sabía esto, y de veras que me agrada que hayas hecho este tutorial :)

Gracias por el aporte!
#11
Pacodelopio 26193
El tutorial está genial man, lo que me ha surgido una duda... verás yo lo he usado para hacer una lancha motora que conduce el player, pero cuando estoy en un combate Pokémon al acabarlo el mini vuelve a salir normal por encima del agua, y tampoco quería poner script de nivel porqué sería solo cuando coje la lancha que sale ese mini (el player encima de la lancha). ¿Hay alguna manera de hacer que se mantenga despues de las batallas?
#12
Megascep_9 Kuchiki 28187
Justo lo que necesito para mi hack
Gracias bro. haces los mejores tutos:D