Registrarse

[Otros] Editar las animaciones de los movimientos

Chamber

Miembro insignia
Miembro insignia

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).

Código:
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] [BB]

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:
Código:
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.

Código:
		Fire Fang $CBDC0 [C07D] ; 211 2 1 3 208 54 136 56 152 208 54 136 56 24 8 254 101 123 16 255
		Thunder Fang $CBDD4 [D47D] ; 211 2 1 5 208 54 136 56 152 208 54 136 56 24 8 224 1 77 208 47 152 68 0 32 255
		Ice Fang $CBDED [ED7D] ; 211 2 1 10 208 54 136 56 152 208 54 136 56 24 8 254 120 123 0 255
		Bullet Punch $CBE01 [017E], Iron Tail + Mach Punch ; 209 24 242 0 224 0 117 254 64 124 254 220 123 4 209 1 223 254 204 110 255
		Calm Mind $CBE16 [167E] ; 210 1 18 241 27 243 27 32 224 0 143 254 120 104 255
		Close Combat $CBE25 [257E], Cambio de palletas + Dinamic Punch ; 210 1 8 240 6 0 2 0 240 5 0 2 0 32 254 67 117 255
		Blaze Kick Mejorado $CBE37 [377E] ; 254 217 86 8 209 3 254 101 123 255
		Aurasphere $CBE41 [417E] , SolarBeam sin Recharge ; 210 16 18 254 147 90 16 254 210 122 48 255
		Drago Meteor $CBE4D [4D7E] ; 254 110 104 16 209 9 253 4 116 92 0 255
		Dragon Claw $CBE59 [597E], + Slash ;	209 3 240 6 0 2 0 240 5 0 2 0 224 0 80 208 128 48 104 0 8 253 8 204 125 64 209 2 252 151 93 255
		Electroweb $CBE79 [797E] ; 210 209 27 254 116 108 8 209 5 252 69 91 8 255
		Energy Ball $CBE87 [877E] ; 209 18 254 147 90 16 209 17 252 194 96 255
		Dark Pulse $CBE93 [937E] ; 209 23 240 6 0 2 0 240 8 0 4 0 224 26 55 208 76 64 88 3 32 253 3 204 125 8 255
		Dragon Pulse $CBEAE [AE7E] ; 209 23 240 6 0 2 0 240 5 0 2 0 224 26 75 208 76 64 88 3 2 208 76 64 88 3 48 253 2 204 125 8 255
		Water Pulse $CBECF [CF7E] ; 209 23 224 26 75 208 76 64 88 3 4 208 76 64 88 3 4 208 76 64 88 3 24 253 3 194 125 8 255
		Leaf Blade $CBEEC [EC7E] ; 209 6 224 1 56 208 20 120 40 128 2 208 20 136 56 144 8 253 7 194 125 254 83 90 255
		Hurricane $CBF05 [057F] ; 254 209 91 48 253 2 243 119 255
		Ice shard $CBF0E [0E7F] ; 254 55 105 8 210 1 10 254 120 123 32 255
		Magical Leaf $CBF1A [1A7F] ; 240 6 0 2 0 240 5 0 2 0 252 23 90 255
		Power-Up Punch $CBF28 [287F] ; 254 198 85 8 252 80 95 8 255
		Shadow Claw mejorado $CBF31 [317F] ; 209 23 240 8 0 4 0 8 254 151 93 16 255
		Signal Beam $CBF3E [3E7F] ; 240 8 0 4 0 254 249 96 24 255
		Zen Headbutt $CBF48 [487F] ; 224 0 169 240 8 0 4 0 8 254 110 98 16 255
		Meteor Mash $CBF56 [567F] ; 209 36 254 25 124 209 1 252 236 85 255
		Air slash $CBF61 [617F] ; 	254 209 91 48 209 23 254 151 93 255
		Flame Charge $CBF6B [6B7F] ; 254 115 104 254 201 108 255
		Focus Blast $CBF72 [727F] ; 209 17 252 194 96 255
		Ice Ball $CBF78 [787F] ; 210 1 10 254 120 123 254 138 98 255
		Pison Jab $CBF82 [827F] ; 254 172 107 48 254 212 106 255
		W-o-W $CBF8A [8A7F] ; 209 3 240 6 0 2 0 240 8 0 4 0 224 26 80 208 12 64 92 0 3 96 255
		Wood Hammer $CBFA1 [A17F] ; 210 1 6 254 172 107 208 20 120 40 92 2 208 20 136 56 92 8 253 7 198 125 48 255
 
Última edición por un moderador:
Respuesta: [GBC]Recopilacion de Offset Utiles

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 !!!
 

Gold

Porrero a tiempo parcial
Miembro insignia
Respuesta: [GBC] Editar Animaciones de Movimientos

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 ^^
 

Chamber

Miembro insignia
Miembro insignia
Respuesta: [GBC] Editar Animaciones de Movimientos

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!
 

Gold

Porrero a tiempo parcial
Miembro insignia
Respuesta: [GBC] Editar Animaciones de Movimientos

Aqui mi primer animacion, les dejo el codigo
Código:
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
 

Chamber

Miembro insignia
Miembro insignia
Respuesta: [GBC] Editar Animaciones de Movimientos

WiZaRD dijo:
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.
Chamber dijo:
Las animaciones de los ataques se encuentran en el offset $C900A, en una tabla de pointers que van del 0x00 al 0xFB.
  • Cuando no se especifica que tipo de pointer es, se da por entendido que es de 2-bytes.
  • Como la tabla de pointers inicia con el index 0x00, la operacion matematica es [index del ataque] x 2 + C900A, asi obtendras el offset del pointer.
  • Despues solo usa Apoint para convertir el pointer (no olvides poner el bank) a offset.

Si aun tienes dudas pregunta con confianza.

Saludos!
[caja=000000; width:95%; background:#00006b; color:#FFFFFF; border:5px groove #5729FF]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!!![/caja]
 
Última edición por un moderador:

Master Brock

Miembro insignia
Miembro insignia
Usuario de Platino
Respuesta: [GBC] Editar Animaciones de Movimientos

@Chamber 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 :)
 

Gold

Porrero a tiempo parcial
Miembro insignia
@Chamber 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!!!
 

Master Brock

Miembro insignia
Miembro insignia
Usuario de Platino
Respuesta: [GBC] Editar Animaciones de Movimientos

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.. :)
 
Arriba