tuts_gbc
Thread Id: 25128
Thread Name: [GBC] Editar Animaciones de Movimientos
#0
Chamber4315♪ 26330


Move Animations

Las animaciones de los ataques se encuentran en el offset $C900A, en una tabla de pointers que van del 0x00 al 0xFB. Las animaciones no tienen una estructura fija, pero casi siempre siguen un patro de carga de graficos-musica-animacion, las mas complicadas usan comandos que repiten una misma animacion 7-8 veces.

Para los que esten mas familiarizados con los scripts, las animaciones usan unos comandos similares (jump, call y loop).

D0 - makeobj ; ['id', SingleByteParam], ['x', SingleByteParam], ['y', SingleByteParam], ['unknown', SingleByteParam]],
D1 - anim_1gfx ; carga un grafico. [D1] [XX]
D2 - anim_2gfx ; carga 2 graficos. [D1] [XX] [YY]
D3 - anim_3gfx ; carga 3 graficos. [D1] [XX] [YY] [ZZ]
D4 - anim_4gfx ; carga 4 graficos. [D1] [XX] [YY] [ZZ] [AA]
D5 - anim_5gfx ; carga 5 graficos. [D1] [XX] [YY] [ZZ] [AA]

E0 - animplaysound ; Reproduce un sonido. [E0]
E1 - animplaycry ; reproduce un Cry

FC - anim_jump ; Como su nombre lo indica, hace un "brinco" a otra animacion. [FC] [2-byte pointer]
FD - anim_loop ; Repite una animacion "n" veces. [FD] [No. de repeticiones] [2-byte pointer] [Wait]
FE - anim_call ; llama una animacion y despues "regresa" a la animacion principal. [FE] [2-byte pointer] [Wait]
FF - endanim ; Termina animacion.

Aqui encontraran la estructura de los movimientos. Link
Aqui la lista de graficos para cargar en la Vram. Link
Aqui la lista de sonidos y efectos. Link

Como uso todo eso?
Primero tengan en mente que desean hacer. Yo por ejemplo, para crear la animacion de Bullet Punch, pense en traerme los "reflejos" de acero de Iron Tail y combinarlos con la animacion de Mach Punch. Algo asi:


Para ello hay que mirar la estructura de Iron Tail para copiar los reflejos. Una manera de enconcatrar los datos facilmente para pokemon GOLD, es seguir los datos del desamble de Crystal (link de arriba) y restarle -0x65 al offset indicado.

Iron Tail lo marca en $CB6B6, restamos x65 y nos da $CB651, ahi comienzan los datos de Iron Tail en G/S. Hay veces que el numero a restar varia de x65 a x67, pero siempre resten x65 y en Gold Finger vayan retrocediendo hasta encontrar el FF y solo posicionense en la casilla inmediata al FF, asi sabremos que termina un comando e inicia el nuestro. En nuestro caso, Iron Tail no estuvo en $CB651, si no dos casillas atras, en CB64F.

Despues copiamos la parte que nos interesa:
BattleAnim_IronTail: ; cb6b6
anim_1gfx ANIM_GFX_REFLECT
anim_obp0 $0
anim_sound $0, SFX_RAGE
anim_call BattleAnim_IronTail_branch_cbca7
anim_call BattleAnim_IronTail_branch_cbc43
anim_wait 4

En hex se ve de la siguiente manera D1 18 F2 00 E0 00 75 FE 40 7C FE DC 7B 04.
D1 18 ; Carga los graficos de REFLECT
F2 00 ; Me parece que es lo que define que los reflejos solo sean dentro del contorno de nuestro sprite y no cuadrado como en el ataque Reflect.
E0 00 75 ; Reproduce el sonido de Rage.
FE 40 7C ; Llama (call) a la primera animacion de reflejo.
FE DC 7B ; Llama (call) a una segunda animacion de reflejo.

Con esto tenemos la primera parte de nuestro animacion, ahora solo falta hacer una llamada a la animacion de Mach Punch. Buscamos de nuevo en el desamble de Crystal y vemos que esta en el offset $CAF33, aplicamos la resta de los 0x65 y comrpobamos en Gold Finger que sea su ubicacion real. al comprobar vemos que hay que recorrernos dos espacios atras, a $CAECC.

Sacamos el pointer de 2-bytes y agregamos el comando anim_call (FE). Algunas ocaciones es necesario que carguemos los graficos antes de hacer el call, asi que usamos D1 (para cargar 1 grafico) y 01 (Graficos de Mach Punch). Al final tenermos la terminacion de nuestra nueva animacion: D1 01 FE CC 6E FF

Juntamos todos los comandos (D1 18 F2 00 E0 00 75 FE 40 7C FE DC 7B 04 D1 01 FE CC 6E FF) y listo, ya tenemos nuestra nueva animacion, ahora solo falta ponerla en algun lugar en blanco dentro del mismo bank y repuntear la tabla de pointers hacia alguna animacion que no pensemos usar.

La rutina final se puede resumir un poco, sise fijan el comando D1 se repite dos veces, podemos omitir el segundo, si desde el principio usamos D2 y cargamos las dos animaciones necesarias, el 0x18 de los reflejos y el 0x01 de Mach Punch. Incluso puede haber casos en que la segunda carga de Graficos no se necesaria, ya que teoricamente el comando FE (call) deberia ser suficiente para que se cargue toda la animacion, hay veces que funciona y hay otras que no, asi que solo la practica nos lo dira.

Por ultimo les dejo algunas animaciones que yo he hecho para el Revolution. Solo tienen que copiar los numero despues del ";" y pegarlos en Gold Finger. Las animaciones que tengan Loop (FD) deben ser colocadas en el offset indicado ahi mismo para que funcionen bien.
PD1:Water Pulse esta mal redactado, solo hay que redirigir el Loop hacia el E0 de su misma animacion.
PD2:Esto al final quedo como tutorial.
PD3:Gracias a GOLD por hacer de este "guia" un tutorial independiente.


#1
WiZaRD 25635
waooo compa sencillamente magnifico , muchisimas gracias por compartir tremenda informacion , y mas que nada los datos de tus animaciones muchisimas gracias , espero aprendermelo pronto :D
MUCHISIMAS GRACIAS COMPADRE !!!
#2
G0LD_ZTHVARD0X! 27515
Este tutorial era una guia completa y no tenia que estar en el recopilatorio de offsets
Por eso me tome la molestia de convertir tu mensaje en un Tema nuevo
--------------------------------------------------

Un gran aporte, lo he probado ya y es bastante sencillo, igual de facil que un script, gracias por traerlo aca a WAH ^^
#3
Chamber4315♪ 26330
Muchas Gracias por moverlo, la verdad solo pensaba incluir la informacion de los offsets, sin ninguna explicacion, pero luego pense que podria facilitar su uso explicando un poco. De hecho por eso es lo burdo de mis explicaciones, no planeaba ser un tutorial.

Creo que Wah es el primero que tiene un tutorial asi.

Voy a editar unas cosas para dejarlo mas claro.

De igual manera invito a que si alguien hace alguna animacion nueva, la comparta :D

Gracias GOLD!
#4
G0LD_ZTHVARD0X! 27515
Aqui mi primer animacion, les dejo el codigo
Llama Embrujada= 209 23 240 6 0 2 0 240 8 0 4 0 224 0 80 208 128 48 104 0 8 253 8 226 116 96 254 64 124 240 36 0 1 0 4 224 1 80 208 15 136 48 1 208 15 136 48 4 208 15 136 48 5 8 240 10 0 0 0 4 214 9 8 255

Todo eso lo deben de convertir a hex, con la calculadora de windows se puede
#5
Chamber4315♪ 26330
Iniciado por WiZaRD
Chamber consulta como encuentro la tabla de repoints de las animaciones y como ubico a cada animacion?


Veo que te dormiste en tus clases de GBC pequeño Padawan.

Voy a citar el inicio del rom y a explicarte.
Iniciado por Chamber
Las animaciones de los ataques se encuentran en el offset $C900A, en una tabla de pointers que van del 0x00 al 0xFB.




Si aun tienes dudas pregunta con confianza.

Saludos!

Edit by G0LD!: Te informo que aqui no va esta respuesta, recuerda que
Existe un subforo de dudas sobre el GBC hacking, pido que no vuelva a pasar

Saludos!!!
#6
Brock 25910
[MENTION=26330]Chamber[/MENTION] una cosilla...se gracias a ti que se podria mezclar cualquier animacion con otra...es decir... como mostraste en tus gif

Entonces, con un poco de imaginacion...se podran realizar ataques de la 3 o 4 gen??
Es decir... como meteor draco...con la animacion de poder pasado y enfado??

Esque eso no me quedo muy claro....
Gracias :)
#7
G0LD_ZTHVARD0X! 27515
Iniciado por oscar1234
[MENTION=26330]Chamber[/MENTION] una cosilla...se gracias a ti que se podria mezclar cualquier animacion con otra...es decir... como mostraste en tus gif

Entonces, con un poco de imaginacion...se podran realizar ataques de la 3 o 4 gen??
Es decir... como meteor draco...con la animacion de poder pasado y enfado??

Esque eso no me quedo muy claro....
Gracias :)


No deberia responder aca, pero solo esta vez lo hare.
Si con ese metodo puedes hacer animacion movimientos de 4ta hasta 6ta.

Yo en el mio hice llama embrujada, shuriken de agua y fuerza lunar, combinando animaciones existentes, por ejemplo

Para fuerza lunar solo combine la luz amarilla de luz lunar, y a esa luz amarilla le agregue la animacion de hiperrayo.

Espero te haya servido mi respuesta, Saludos!!!
#8
Brock 25910
Es cierto, a partir de ahora ese tipo de pregunta las are en los perfiles o por MP, lo siento se me olvido


Vaaaya...suriken de agua eeh?...tengo ganas de verlos..

Muchas gracias a todos.. :)