Advertiser Content

Development Move Resource Thread Page 16

Started by Spherical Ice April 22nd, 2013 10:29 PM
  • 165656 views
  • 425 replies

DoesntKnowHowToPlay

Tiny Umbrella with Lots and Lots of Good

Seen February 12th, 2019
Posted June 15th, 2017
258 posts
7.7 Years
Later gens have added the never-miss property to a bunch of moves, such as Roar, Block, and Foresight (as well as backported moves like Clear Smog and Defog).

In FR, the relevant code is at 0x1DD8E. By putting C0 78 00 28 01 D0 10 E0 there, the check for Swift/Vital Throw/etc. will check the accuracy byte instead of the move effect byte, and will make the move ignore accuracy if its listed accuracy is 0 (which displays as -- in-game).

sSiddhant

Male
India
Seen January 1st, 2018
Posted June 30th, 2017
28 posts
3.3 Years
Gen 7 Moves Effects

These are my first ever move effect creations. They are in the compiled version. You just need to add them with Hex Editor and repoint it from the Move Effects Table.

Toxic Thread[FR]
Spoiler:
2E 85 3E 02 02 18 15 2E 85 3E 02 02 C2 15 28 00 69 1D 08


Tearful Look[FR]
Spoiler:
2E 85 3E 02 02 16 15 2E 85 3E 02 02 19 15 28 00 69 1D 08

AkameTheBulbasaur

Akame Marukawa of Iyotono

Age 22
Male
A place :D
Seen 1 Week Ago
Posted July 19th, 2019
361 posts
6.4 Years
Some people (like me) may not have known that Volt Tackle has another effect besides recoil past generation IV. From Diamond/Pearl onward, Volt Tackle has a 10% chance to paralyze.

To get that in FireRed, replace Battle Scrip 198 with this:
Spoiler:
#dynamic 0x180000
#freespacebyte 0xFF

#org @CheckMove
setbyte 0x2023E85 0xE6
jumpifhalfword 0x0 0x2023D4A 0x158 @VoltTackle
goto 0x1D6900

#org @VoltTackle
attackcanceler
accuracycheck 0x81D695E 0x0
attackstring
ppreduce
calculatedamage
attackanimation
waitanimation
missmessage
cmd5c 0x0
waitstate
graphicalhpupdate 0x0
datahpupdate 0x0
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
seteffectwithchancetarget
jumpiftype 0x0 0xD 0x81D694E
setbyte 0x2023E85 0x5
seteffectwithchancetarget
faintpokemon 0x0 0x0 0x0
goto 0x81D694E


The above routine takes into account whether the opponent is Electric Type, and if they are, bypasses the paralysis chance. You can do this with other attacks too by using these three scripts:

Replace Battle Script 6 with this:
Spoiler:
#dynamic 0x180000
#freespacebyte 0xFF

#org @TypeCheck
jumpiftype 0x0 0xD 0x1D6900
goto 0x81D6A6B

This just checks the Type of the opponent, and if they are an Electric Type, just goes straight to the damage calculation script.

Replace Battle Script 152 with this:
Spoiler:
#dynamic 0x170000
#freespacebyte 0xFF

#org @Main
jumpiftype 0x0 0xD 0x81D6926
setbyte 0x2023E85 0x5
goto 0x81D6926


Replace Battle Script 67 with this:
Spoiler:
#dynamic 0x180000
#freespacebyte 0xFF

#org @Start
attackcanceler
attackstring
ppreduce
jumpifhalfword 0x0 0x2023D4A 0x4E @StunSpore
jumpiftype 0x0 0xD 0x81D7E04
goto 0x81D71E5

#org @StunSpore
jumpiftype 0x0 0xC 0x81D7E04
jumpiftype 0x0 0xD 0x81D7E04
goto 0x81D71E5

This also includes the check for Stun Spore. If the opponent is a Grass Type, it will have no effect.

Of course, I have checks for the other spore moves.

Replace Battle Script 66 with this:
Spoiler:
#dynamic 0x180000
#freespacebyte 0xFF

#org @Start
attackcanceler
attackstring
ppreduce
jumpifhalfword 0x0 0x2023D4A 0x4D @CheckType
goto 0x81D7184

#org @CheckType
jumpiftype 0x0 0xC 0x81D7E04
goto 0x81D7184


Replace Battle Script 1 with this:
Spoiler:
#dynamic 0x180000
#freespacebyte 0xFF

#org @Start
attackcanceler
attackstring
ppreduce
jumpifhalfword 0x0 0x2023D4A 0x4F @CheckType
jumpifhalfword 0x0 0x2023D4A 0x93 @CheckType
goto 0x81D6970

#org @CheckType
jumpiftype 0x0 0xC 0x81D7E04
goto 0x81D6970


I also have a script for "100% Accurate When Used by a Poison Type" Toxic for FireRed (there was one for Emerald but not for FireRed).

Replace Battle Script 33 with this:
Spoiler:
#dynamic 0x180000
#freespacebyte 0xFF

#org @Toxic
jumpiftype 0x1 0x3 @AccuracyBypass
goto 0x81D6DE0

#org @AccuracyBypass
attackcanceler
jumpifspecialstatusflag 0x0 0x400C0 0x0 0x1D695E
attackstring
ppreduce
jumpifability 0x0 0x11 0x81D6E4F
jumpifsecondarystatus 0x0 0x1000000 0x81D7DF2
jumpifstatus 0x0 0x8 0x81D6E41
jumpifstatus 0x0 0x80 0x81D6E41
jumpifstatus 0x0 0xFF 0x81D7DF2
jumpiftype 0x0 0x3 0x81D7E04
jumpiftype 0x0 0x8 0x81D7E04
goto 0x81D6E27


Last but not least, in the current games, Ghost Types are no longer affected by trapping moves like Mean Look or by abilities like Shadow Tag. I haven't updated the abilities yet, but if you want Mean Look (and any move that uses its script) to not affect Ghost Types...

Replace Battle Script 106 with this:
Spoiler:
#dynamic 0x180000
#freespaceyte 0xFF

#org @start
attackcanceler
attackstring
ppreduce
jumpiftype 0x0 0x7 0x81D7E04
goto 0x81D76D7


Whew! That was a lot! I'm not sure if this stuff is already on here, but I wasn't able to find it anywhere. Hopefully at least one of these things haven't been posted yet haha.
"The human sacrificed himself, to save the Pokemon. I pitted them against each other, but not until they set aside their differences did I see the true power they all share deep inside. I see now that the circumstances of one's birth are irrelevant; it is what you do with the gift of life that determines who you are." -Mewtwo
Male
Seen 1 Day Ago
Posted 1 Day Ago
122 posts
3.6 Years
This may be all for naught since FBI is working on redoing the battle system, but I was interested in solving this problem:

Adding new Wrap-Effect moves with Custom Text/Animation [FR]:

1. The default text for effect 42 is Sand Tomb. Rather than try and find the routine that loads the correct string, a simple hex edit will generalize the attack name and preserve the Sand Tomb printstring. At 0x3FBB2F, insert the following (there is enough space to keep the pointer)
FD 10 00 EB D5 E7 00 E8 E6 D5 E4 E4 D9 D8 FE D6 ED 00 FD 14 AB FF

This says "[target] was trapped by [attack]!" Change if you like.

2a. There is a 'table' of between turn animations at 0x1D5C5F with a pointer at 0x1C6EC0. The table looks something like this:
03 (ZZ+1) YY XX 08 05 00 21 00 01 00 D3 5C 1D 08 21 00 02 00 F8 5C 1D 08 ... ... 13 8B 5C 1D 08

  • where (ZZ+1) YY XX is a reverse pointer to a routine that loads an ID to check against 21 00 0X 00
  • D3 5C 1D 08 is a pointer to fire spin's between turn animation, F8 5C 1D 08 to Whirlpool, and so on
  • 13 8B 5C 1D 08 loads the default wrap animation if 21 00 0X 00 is not matched. This is why simply assigning effect 42 to a move yields the wrap animation between turns

2b. Repoint this table to free space. You want to add in 21 00 05 00 AA AA AA 08 21 00 06 00 BB BB BB 08 ... etc for each move you want to add, where 0xAAAAAA, 0xBBBBBB are the between-turn animations for your new moves. These can be different than the regular attack animation. And make sure the 13 8B 5C 1D 08 is at the end of the 'table'

3. Insert the following routine into free space. This will be our new routine to load the ID that checks against this table
Spoiler:

.text
.align 2
.thumb
.thumb_func
.global TrapAnim

Main:
	push {lr}
	lsl r0, r0, #0x18
	lsr r2, r0, #0x18
	ldr r0, =(0x02024018)
	ldr r0, [r0]
	ldr r0, [r0, #0x8]
	ldrh r1, [r0]		@r1 = move ID

CheckFireSpin:
	cmp r1, #0x53	@fire spin move ID
	bne CheckWhirlpool
	mov r0, #0x1
	b Ending
	
CheckWhirlpool:
	cmp r1, #0xFA	@whirlpool move ID
	bne CheckClamp
	mov r0, #0x2
	b Ending

CheckClamp:
	cmp r1, #0x80     @clamp move ID
	bne CheckSandTomb
	mov r0, #0x3
	b Ending

CheckSandTomb:
	mov r0, #0xA4
	lsl r0, r0, #0x1	@0x148 (sand tomb move ID)
	cmp r1, r0
	bne CheckMine
	mov r0, #0x4
	b Ending

CheckMine:
	mov r0, #0xXX       @your new move ID
	cmp r1, r0
	bne Default
	mov r0, #0x5
	b Ending

/* repeat the above pattern for extra moves.  */
	
Default:
	mov r0, #0x0

Ending:
	ldr r1, =(0x02037F02)     @store anim ID
	strh r0, [r1]
	mov r0, r2
	ldr r4, =(0x08072760 + 1)
	bl jump_r4
	pop {r0}
	bx r0
	
jump_r4:
	bx r4
	
.align 2


4. change the pointer (ZZ+1) YY XX 08 in your repointed 'table' from (2b) to the reverse pointer (+1) to where you inserted this routine.

And that should be everything you need! Enjoy!
Seen February 6th, 2019
Posted February 6th, 2019
61 posts
2.5 Years
snip
I followed everything you said, but for some reason now all the between turn animations have become wrap. Do you know what I could have done wrong?
I also modified the routine a little:
Spoiler:
.text
.align 2
.thumb
.thumb_func
.global TrapAnim

Main:
push {lr}
lsl r0, r0, #0x18
lsr r2, r0, #0x18
ldr r0, =(0x02024018)
ldr r0, [r0]
ldr r1, [r0, #0x8]
ldrh r1, [r0] @r1 = move ID

CheckFireSpin:
cmp r1, #0x53 @fire spin move ID
bne CheckWhirlpool
ldr r1, =(0x02037F02)
mov r0, #0x1
b Ending

CheckWhirlpool:
cmp r1, #0xFA @whirlpool move ID
bne CheckClamp
ldr r1, =(0x02037F02)
mov r0, #0x2
b Ending

CheckClamp:
cmp r1, #0x80 @clamp move ID
bne CheckSandTomb
ldr r1, =(0x02037F02)
mov r0, #0x3
b Ending

CheckSandTomb:
mov r0, #0xA4
lsl r0, r0, #0x1 @0x148 (sand tomb move ID)
cmp r1, r0
bne CheckMagmaStorm
ldr r1, =(0x02037F02)
mov r0, #0x4
b Ending

CheckMagmaStorm:
mov r0, #0xF7 @your new move ID
lsl r0, r0, #0x1
cmp r1, r0
bne CheckInfestation
mov r0, #0x5
b Ending

CheckInfestation:
mov r0, #0xFF @your new move ID
add r0, r0, #0x1E
lsl r0, r0, #0x1
cmp r1, r0
bne Default
mov r0, #0x6
b Ending

/* repeat the above pattern for extra moves. */

Default:
ldr r1, =(0x02037F02)
mov r0, #0x0

Ending:
ldr r1, =(0x02037F02) @store anim ID
strh r0, [r1]
mov r0, r2
ldr r1, =(0x08072760 + 1)
bl linker
pop {r0}
bx r0

linker:
bx r1

.align 2

Thanks!
Male
Seen 1 Day Ago
Posted 1 Day Ago
122 posts
3.6 Years
I followed everything you said, but for some reason now all the between turn animations have become wrap. Do you know what I could have done wrong?
I also modified the routine a little:
Spoiler:
.text
.align 2
.thumb
.thumb_func
.global TrapAnim

Main:
push {lr}
lsl r0, r0, #0x18
lsr r2, r0, #0x18
ldr r0, =(0x02024018)
ldr r0, [r0]
ldr r1, [r0, #0x8]
ldrh r1, [r0] @r1 = move ID

CheckFireSpin:
cmp r1, #0x53 @fire spin move ID
bne CheckWhirlpool
ldr r1, =(0x02037F02)
mov r0, #0x1
b Ending

CheckWhirlpool:
cmp r1, #0xFA @whirlpool move ID
bne CheckClamp
ldr r1, =(0x02037F02)
mov r0, #0x2
b Ending

CheckClamp:
cmp r1, #0x80 @clamp move ID
bne CheckSandTomb
ldr r1, =(0x02037F02)
mov r0, #0x3
b Ending

CheckSandTomb:
mov r0, #0xA4
lsl r0, r0, #0x1 @0x148 (sand tomb move ID)
cmp r1, r0
bne CheckMagmaStorm
ldr r1, =(0x02037F02)
mov r0, #0x4
b Ending

CheckMagmaStorm:
mov r0, #0xF7 @your new move ID
lsl r0, r0, #0x1
cmp r1, r0
bne CheckInfestation
mov r0, #0x5
b Ending

CheckInfestation:
mov r0, #0xFF @your new move ID
add r0, r0, #0x1E
lsl r0, r0, #0x1
cmp r1, r0
bne Default
mov r0, #0x6
b Ending

/* repeat the above pattern for extra moves. */

Default:
ldr r1, =(0x02037F02)
mov r0, #0x0

Ending:
ldr r1, =(0x02037F02) @store anim ID
strh r0, [r1]
mov r0, r2
ldr r1, =(0x08072760 + 1)
bl linker
pop {r0}
bx r0

linker:
bx r1

.align 2

Thanks!
If it's doing the wrap animation between turns, it's somehow getting to the Default part of the assembly routine. I would double check your move IDs. It looks like Infestation is move ID 570, for example.

Also since you load ldr r1, =(0x02037F02) at Ending, you shouldn't need to add that at every check, just in case you want to save a few bytes :)
Seen February 6th, 2019
Posted February 6th, 2019
61 posts
2.5 Years
If it's doing the wrap animation between turns, it's somehow getting to the Default part of the assembly routine. I would double check your move IDs. It looks like Infestation is move ID 570, for example.

Also since you load ldr r1, =(0x02037F02) at Ending, you shouldn't need to add that at every check, just in case you want to save a few bytes :)
I've checked my move ids many times. Infestation is supposed to be 570; I expanded my level up move data. Assuming the move ids are correct, what could I be doing wrong?
Male
Seen 1 Day Ago
Posted 1 Day Ago
122 posts
3.6 Years
I've checked my move ids many times. Infestation is supposed to be 570; I expanded my level up move data. Assuming the move ids are correct, what could I be doing wrong?
Ah, that makes sense then. It's possible expanding the move IDs over 511 is the issue, then? The original routine loads the attack ID in a strange manner, so I would go through and make sure that you are actually loading the move ID in Main.

These are my notes on what the routine actually does to load the move ID into r1:
	ldr r0, =(0x02024018)
	ldr r0, [r0]				@r0 = word at 02024018 -> 02005484
	ldr r1, [r0, #0x8]			@r1 = word at 0200548C -> 02005504
	ldrh r1, [r1]				@r1 = move ID
Seen February 6th, 2019
Posted February 6th, 2019
61 posts
2.5 Years
Ah, that makes sense then. It's possible expanding the move IDs over 511 is the issue, then? The original routine loads the attack ID in a strange manner, so I would go through and make sure that you are actually loading the move ID in Main.

These are my notes on what the routine actually does to load the move ID into r1:
	ldr r0, =(0x02024018)
	ldr r0, [r0]				@r0 = word at 02024018 -> 02005484
	ldr r1, [r0, #0x8]			@r1 = word at 0200548C -> 02005504
	ldrh r1, [r1]				@r1 = move ID
I don't believe it's an issue with expanding the moves. I tested the old function with the new table and the original entries worked fine. However with this new function, even the old entries (I've been mostly trying with Whirlpool) appear as wrap. I checked 0x02005504 and FA was appearing there so I don't know what could be going wrong at this point.
Male
Seen 1 Day Ago
Posted 1 Day Ago
122 posts
3.6 Years
I don't believe it's an issue with expanding the moves. I tested the old function with the new table and the original entries worked fine. However with this new function, even the old entries (I've been mostly trying with Whirlpool) appear as wrap. I checked 0x02005504 and FA was appearing there so I don't know what could be going wrong at this point.
Just took a closer look at your assembly routine, and I found the issue. In main, it should be:
	
ldr r1, [r0, #0x8]
ldrh r1, [r1]
whereas you have:
ldr r1, [r0, #0x8]
ldrh r1, [r0]	@r1 = move ID
So the move ID isn't actually getting loaded into r1
Seen February 6th, 2019
Posted February 6th, 2019
61 posts
2.5 Years
Just took a closer look at your assembly routine, and I found the issue. In main, it should be:
	
ldr r1, [r0, #0x8]
ldrh r1, [r1]
whereas you have:
ldr r1, [r0, #0x8]
ldrh r1, [r0]	@r1 = move ID
So the move ID isn't actually getting loaded into r1
Yup, that was it. It works like a charm now. Thanks!
Male
Seen 20 Hours Ago
Posted July 6th, 2019
208 posts
2.7 Years
Dear SI;
I've got a suggestion for the convenience of usage for this awesomely maintained thread...
Instead of linking to the post, put spoilers for each of them so when adding new attacks, anyone can just navigate right away.
For multiple variations, put spoilers within the main spoiler.
Know it's much of work to do, but it's more good that way..
Anyways that's just a suggestion as far as it goes :)

NoMansBubble

My bed English.....

Seen September 8th, 2018
Posted October 18th, 2017
3 posts
2.2 Years
Gen7 Move effect
[FR]Shore Up
Spoiler:
Please read the red word and changed
main:
ldrh r1, [r4]
mov r0, #0x60
and r0, r1
cmp r0, #0x0
beq checkother

end1:
ldr r4, =0x0802B5FB
bx r4

end:
ldr r1, =0x0802B61D
bx r1

checkother:
ldr r0, =0x02023D4A
ldrh r0, [r0]

mov r4, #0xMM@chang The MM to your Shore UP move id/2
lsl r4, r4, #0x1

cmp r0, r4
bne end
mov r0, #0x10
and r0, r1
cmp r0, #0x0
beq end2
b end1

end2:
ldr r1, =0x02023D50
ldrb r0, [r5]
mul r0, r6
add r0, r0, r7
ldrh r0, [r0, #0x2C]
lsr r0, r0, #0x1
str r0, [r1]
ldr r0, =0x0802B62B
bx r0
insert 00 49 08 47 xx+1 xx xx 08 to 0802B5F0

Last set your Shore Up move effect to 0x85


[FR]First Impression
Spoiler:

XX XX XX :
2A 00 4A 3D 02 02 NN NN  YY YY YY 08 00 82 F0 7D 1D 08 2E 85 3E 02 02 88 28 00 69 1D 08
YY YY YY:
00 82 F0 7D 1D 08 28 00 69 1D 08
The NN NN is your First Impression move ID
insert XX XX XX 08 at 1D6820
And set your First Impression move effect to 0x9E
Male
Seen 1 Day Ago
Posted 1 Day Ago
122 posts
3.6 Years
Here are a couple quick routines for Magic Room, Wonder Room, and Lucky Chant ([FR])

Note that these may or may not be ideal routines. I haven't tested these routines much. Please report bugs or any item/defense check I may have overlooked. They are meant more or less as a placeholder until the new battle system arrives.

Magic Room:
-Every item check routine I've seen includes a call to a function to load the held effect ID from the item data table. This routine just returns 0 if Magic Room is in effect (except for exp/money items)
-This routine is based on the assumption that all held items call said function, which may or may not be correct... It also requires that all added items perform this same function call
-NOTE: Life Orb in MrDS's rombase does not call this function. It is checked at 08909fe4

EDIT: Here is a fix for this

Spoiler:

.text
.align 2
.thumb
.thumb_func
.global LifeOrb_PowerBoost
/*
00 4A 10 47 (xx+1) xx xx 08 at 909fec
*/

Main:
	bl GetHeldEffect
	cmp r0, #0x43	@life orb held effect ID
	bne NoLifeOrb
	
LifeOrb:
	ldr r0, =(0x08909ffe +1)
	b call_r0
	
NoLifeOrb:
	ldr r0, =(0x0890a00c +1)
	
call_r0:
	bx r0
	
GetHeldEffect:
	ldr r1, =(0x0809a924 +1)
	bx r1

Spoiler:

.text
.align 2
.thumb
.thumb_func
.global MagicRoom
/*
insert 00 49 08 47 (xx+1) xx xx 08 at 9a934
*/

.equ Table:	0x08XXXXXX		@where you will insert this routine
.equ TableSize, 0xC
.byte 0x18	@macho brace
.byte 0x19	@exp. share
.byte 0x1B	@soothe bell
.byte 0x20	@amulet coin
.byte 0x28	@lucky egg
@out-of-battle items (as a precaution)
.byte 0x21	@repel wild pokes
.byte 0x26	@everstone
.byte 0x3D	@up-grade(?)
.word 0xFEFEFEFE	@table end

.equ start, Table + TableSize           @take note of this offset

Main:
	mov r1, #0x2C  @44 bytes per item
	mul r0, r1
	add r0, r0, r4
	ldrb r0, [r0, #0x12]  @item held effect
	
CheckMagicRoom:
	ldr r1, .MagicRoomLoc
	ldrb r1, [r1]
	cmp r1, #0x0
	beq Ending
	
CheckExceptions:
        push {r2}
	ldr r1, .ExceptionTable
	
ExceptionLoop:
	ldrb r2, [r1]  @exception ID
	cmp r0, r2
	beq Ending
	cmp r2, #0xFE  @end of table
	beq NoException
	add r1, #0x1
	b ExceptionLoop
	
NoException:
	mov r0, #0x0	@return 0 if magic room in effect
	
Ending:
	pop {r4}
	pop {r1}
	bx r1
	
.align 2
.MagicRoomLoc:	.word 0x02XXXXXX   @RAM loc for magic room counter
.ExceptionTable:	.word Table


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Wonder Room:
-This routine hijacks the base damage calculator and switches the storage of the target's def and sp. def for the calculation. This, of course, assumes that no other function in game needs to load a pkmn's def or sp. def. This is likely a rash assumption, though.
Spoiler:

.text
.align 2
.thumb
.thumb_func
.global WonderRoom

/*
00 48 00 47 (xx+1) xx xx 08 at 3ed70
*/


Main:
	ldr r2, [sp, #0x4]
	ldrh r3, [r2, #0x4]		@target def
	ldrh r2, [r2, #0xA]		@target sp. def
	
CheckWonderRoom:
	ldr r0, .WonderRoomLoc
	ldrb r0, [r0]
	cmp r0, #0x0
	beq Regular
	
SwapDefs:
	str r2, [sp, #0x14]		@store sp. def into def loc
	str r3, [sp, #0x18] 	@store def into sp. def loc
	b Return
	
Regular:
	str r3, [sp, #0x14]
	str r2, [sp, #0x18]
	b Return
	
Return:
	ldrh r3, [r6, #0x8]
	mov r8, r3
	ldr r0, =(0x0803ed80 +1)
	bx r0
	

.align 2
.WonderRoomLoc:	.word 0x02XXXXXX	@wonder room turn counter RAM location


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

EDIT: And here's Lucky Chant: It just sets the critical marker to 1 (aka no critical hit) at the end of the crit calc routine if lucky chant is active on the user's side
Spoiler:

.text
.align 2
.thumb
.thumb_func
.global LuckyChant
/*
00 4C 20 47 (xx+1) xx xx 08 at 1e584
*/


Main:
	strb r0, [r1]	@store crit marker
	
CheckLuckyChant:
	ldr r1, .LuckyChantLoc
	ldr r0, .TargetBank
	ldrb r0, [r0]
	cmp r0, #0x1
	beq EnemySide
	cmp r0, #0x3
	bne CheckCounter
	
EnemySide:
	add r1, #0x1	@2nd byte of lucky chant RAM is enemy counter

CheckCounter:
	ldrb r0, [r1]
	cmp r0, #0x0
	beq Return		@no lucky chant, keep original crit marker val
	mov r0, #0x1
	ldr r1, .CritMarker
	strb r0, [r1]			@if lucky chant active, set crit marker to no critical hit
	
Return:
	ldr r1, .ScriptPointer
	ldr r0, [r1]
	add r0, #0x1
	ldr r4, =(0x0801e58c +1)
	bx r4
	
.align 2
.CritMarker:	.word 0x02023d71
.ScriptPointer:	.word 0x02023d74
.TargetBank:	.word 0x02023d6c
.LuckyChantLoc:	.word 0x02XXXXXX	@2 bytes of free RAM


Enjoy!

pikachux2

Never Evolve

Male
USA
Seen May 5th, 2019
Posted May 3rd, 2019
116 posts
9.6 Years
Hey, I'm trying to download Battle Script Pro from the GitHub page and it builds with errors in Microsoft Visual 2017, so I tried to get an older version, which it recommends, but I don't have a subscription; therefore I can't. In order to convert battle scripts to asm or whatever language, I need BSP correct? If I do, does some one have a exe that doesn't need to be compiled?
Seen 3 Days Ago
Posted August 15th, 2019
136 posts
3.8 Years
Here are some effects and animations for Fire Red. I will convert animations to commands when I get the chance.

Effects:
Spoiler:
Magma Storm/Infestation: see this post

Venom Drench: linked with venoshock (effect 224 in MrDS's rombase)
Spoiler:
#dynamic 0x(offset)

#org @start
jumpifhalfword 0x0 0x2023D4A 0x1A6 0x905420 //venoshock
attackcanceler
attackstring
ppreduce
jumpifstatus 0x0 0x88 @venomdrench
goto 0x81D7DF2

#org @venomdrench
jumpifstat 0x0 0x2 0x1 0x0 @loweratk
jumpifstat 0x0 0x2 0x4 0x0 @loweratk
jumpifstat 0x0 0x0 0x3 0x0 0x81D694E
goto 0x81D694E

#org @loweratk
attackanimation
waitanimation
setbyte 0x2023FDF 0x0
playstatchangeanimation 0x0 0x20 0x1
setbyte 0x2023FDE 0x91
statbuffchange 0x1 false @lowerspatk
jumpifbyte 0x0 0x2023E87 0x2 @lowerspatk
printfromtable 0x83FE588
waitmessage 0x40

#org @lowerspatk
setbyte 0x2023FDE 0x94
statbuffchange 0x1 false @lowerspeed
jumpifbyte 0x0 0x2023E87 0x2 @lowerspeed
printfromtable 0x83FE588
waitmessage 0x40

#org @lowerspeed
setbyte 0x2023FDE 0x93
statbuffchange 0x1 false 0x81D694E
jumpifbyte 0x0 0x2023E87 0x2 0x81D694E
printfromtable 0x83FE588
waitmessage 0x40
goto 0x81D694E


Burn Up: linked with effect 125 for defrosting (flame wheel, flare blitz, etc)
Spoiler:
#dynamic 0x(offset)

#org @start
jumpifhalfword 0x0 0x2023D4A 0x(moveID) @burnuptypecheck
setbyte 0x2023E85 0x3
jumpifhalfword 0x0 0x2023D4A 0x1B2 0x8905527 //flare blitz
goto 0x81D6900

#org @burnuptypecheck
attackcanceler
accuracycheck 0x81D695E 0x0
attackstring
ppreduce
jumpiftype 0x1 0xA @burnup
jumpiftype2 0x1 0xA @burnup
goto 0x81D7DF2

#org @burnup
calculatedamage
attackanimation
waitanimation
missmessage
cmd5c 0x0
waitstate
graphicalhpupdate 0x0
datahpupdate 0x0
critmessage
waitmessage 0x0
resultmessage
waitmessage 0x0
callasm 0x8(asm_offset+1) //change fire type to ???
setword 0x203C020 0x8AAAAAA
printstring 0x184
waitmessage 0x40
goto 0x81D6947

At String 0xAAAAAA: FD 0F 00 D6 E9 E6 E2 D9 D8 00 DD E8 E7 D9 E0 DA 00 E3 E9 E8 AB FF says "<user> burned itself out!"

ASM routine at 0x(asm_offset): (thanks to SphericalIce's roost effect for being used as a surrogate)
Spoiler:
.text
.align 2
.thumb
.thumb_func
.global change_fire_type

GetPkmnType1:
push {r0-r5}
ldr r1, .BattleData
ldr r0, .PokeIndex
ldrb r0, [r0]
mov r2, #0x58
mul r2, r0
add r1, #0x21
add r1, r2
ldrb r0, [r1]
ldrb r2, [r1, #0x1]
mov r3, #0xA			@fire type = 0xA
cmp r0, r3
beq ChangeType1
cmp r2, r3
beq ChangeType2
b End

ChangeType1:
mov r4, #0x9			@type = ????
strb r4, [r1]
cmp r2, r3
beq ChangeType2
b End

ChangeType2:
mov r4, #0x9			@type = ????
strb r4, [r1, #0x1]
b End

End:
pop {r0-r5}
bx lr

.align 2
.BattleData:        .word 0x02023BE4
.PokeIndex:        .word 0x02023D6B




Toxic Thread: linked with poison gas effect (66)
Spoiler:
#dynamic 0x(offset)

#org @start
jumpifhalfword 0x0 0x2023D4A 0x8B 0x81D7181 //poisongas
attackcanceler
accuracycheck 0x81D695E 0x0
attackstring
ppreduce
jumpifstat 0x0 0x0 0x3 0x0 @justpoison //if speed is minimal, just poison
attackanimation
waitanimation
setbyte 0x2023FDF 0x0
playstatchangeanimation 0x0 0x8 0x1
setbyte 0x2023FDE 0x93
statbuffchange 0x1 false @poison
jumpifbyte 0x0 0x2023E87 0x2 @poison
printfromtable 0x83FE588
waitmessage 0x40
goto @poison

#org @justpoison
attackanimation
waitanimation
goto @poison

#org @poison
jumpifability 0x0 0x11 0x81D6E4F
jumpifsecondarystatus 0x0 0x1000000 @cantpoison
jumpifstatus 0x0 0x8 @cantpoison
jumpifstatus 0x0 0x80 @cantpoison
jumpiftype 0x0 0x3 @cantpoison
jumpiftype 0x0 0x8 @cantpoison
jumpifstatus 0x0 0xFF @cantpoison
jumpifhalverset 0x0 0x20 0x81D8B39
setbyte 0x2023E85 0x2
seteffecttarget
resultmessage
waitmessage 0x40
goto 0x81D694E

#org @cantpoison
pause 0x20
setword 0x203C020 0x8AAAAAA
printstring 0x184
waitmessage 0x40
goto 0x81D694E

String at 0xAAAAAA: FD 10 00 D7 D5 E2 E2 E3 E8 00 D6 D9 00 E4 E3 DD E7 E3 E2 D9 D8 AB FF says "<target> cannot be poisoned!" just to make it sound better than "it failed!" or "it doesn't affect <target>"


Parting Shot: linked with Baton Pass/Volt Switch/U-Turn (effect 127)
Spoiler:
#dynamic 0x(offset)

#org @start
jumpifhalfword 0x0 0x2023D4A 0xE2 0x81D7995 //baton pass
jumpifhalfword 0x0 0x2023D4A 0x(moveID) @partingshot
attackcanceler
accuracycheck 0x81D695E 0x0
attackstring
ppreduce
call 0x8905656
jumpifcannotswitch 0x81 0x81D694E
goto 0x81D79A0

#org @partingshot
attackcanceler
attackstring
ppreduce
attackanimation
waitanimation
jumpifstat 0x0 0x2 0x4 0x0 @spatk
jumpifstat 0x0 0x0 0x1 0x0 @checkswitch
goto @checkswitch

#org @spatk
setbyte 0x2023FDF 0x0
playstatchangeanimation 0x0 0x12 0x1
setbyte 0x2023FDE 0x94
statbuffchange 0x1 false @atk
jumpifbyte 0x0 0x2023E87 0x2 @atk
printfromtable 0x83FE588
waitmessage 0x40

#org @atk
setbyte 0x2023FDE 0x91
statbuffchange 0x1 false @checkswitch
jumpifbyte 0x0 0x2023E87 0x2 @checkswitch
printfromtable 0x83FE588
waitmessage 0x40
goto @checkswitch

#org @checkswitch
jumpifcannotswitch 0x81 0x81D694E
goto 0x81D79A0


Aurora Veil: linked with Light Screen (effect 35). Note this doesn't take battle with allies into account as it does in game
Spoiler:
#dynamic 0x(offset)

#org @start
jumpifhalfword 0x0 0x2023D4A 0x(moveID) @auroraveil
attackcanceler
attackstring
ppreduce
setlightscreen
goto 0x81D7172

#org @auroraveil
attackcanceler
attackstring
ppreduce
jumpifhalfword 0x0 0x02023F1C 0x80 @succeed
goto 0x81D7DF2

#org @succeed
setlightscreen
setreflect
attackanimation
waitanimation
setword 0x203C020 0x8AAAAAA
printstring 0x184
waitmessage 0x40
goto 0x81D694E

String at 0xAAAAAA: BB E9 E6 E3 E6 D5 00 D0 D9 DD E0 00 E4 E6 E3 E8 D9 D7 E8 D9 D8 00 D5 DB D5 DD E2 E7 E8 00 E4 DC ED E7 DD D7 D5 E0 FE D5 E2 D8 00 E7 E4 D9 D7 DD D5 E0 00 E1 E3 EA D9 E7 AB FF


Updated Fell Stinger (raises attack 3 stages if enemy faints). Linked with metal claw effect (139)
Spoiler:

#dynamic 0x(offset)
#freespacebyte 0xFF

#org @start
jumpifhalfword 0x0 0x2023D4A 0x(moveID) @fellstinger
setbyte 0x2023E85 0x4F
goto 0x81D6900

#org @fellstinger
attackcanceler
accuracycheck 0x81D695E 0x0
attackstring
ppreduce
calculatedamage
attackanimation
waitanimation
missmessage
cmd5c 0x0
waitstate
graphicalhpupdate 0x0
datahpupdate 0x0
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
jumpiffainted 0x0 @fainted
goto 0x81D6947

#org @fainted
setbyte 0x2023FDF 0x0
playstatchangeanimation 0x1 0x2 0x0
setbyte 0x2023FDE 0x31
statbuffchange 0x1 true 0x81D6947
jumpifbyte 0x0 0x2023E87 0x2 0x81D6947
setword 0x203C020 0x8(string_offset)
printstring 0x184
goto 0x81D6947

Hex at (string_offset): FD 0F B4 E7 00 D5 E8 E8 D5 D7 DF 00 D8 E6 D5 E7 E8 DD D7 D5 E0 E0 ED 00 E6 E3 E7 D9 AB FF which says "<user>'s attack drastically rose!"

This method skips the stat change animation but still does the appropriate stat checks, etc.

Sparkling Aria:
Spoiler:

Requires KDS' cureprimarystatus command, found here
#dynamic 0xoffset
#freespacebyte 0xFF

#org @checkstatus
jumpifsecondarystatus 0x0 0x1000000 0x81D6926
jumpifstatus 0x0 0x10 @sparklingaria
goto 0x81D6926

#org @sparklingaria
attackcanceler
accuracycheck 0x81D695E 0x0
attackstring
ppreduce
calculatedamage
attackanimation
waitanimation
missmessage
cmd5c 0x0
waitstate
graphicalhpupdate 0x0
datahpupdate 0x0
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
jumpifbyte 0x4 0x02023DCC 0x8 0x81D694E
faintpokemon 0x0 0x0 0x0
jumpiffainted 0x0 0x81D694E
cureprimarystatus 0x0 0x81D694E
setword 0x203C020 0x08XXXXXX
printstring 0x184
waitmessage 0x40
cmd98 0x0
goto 0x81D694E
At 0x08XXXXXX ->
FD 10 00 EB D5 E7 00 DC D9 D5 E0 D9 D8 00 E3 DA 00 D6 E9 E6 E2 AB FF 00


Spirit Shackle:
Spoiler:

Combine with Mean Look Effect (111)
#dynamic 0x(offset)
#freespacebyte 0xFF

#org @start
attackcanceler
attackstring
ppreduce
jumpifhalfword 0x0 0x2023D4A 0x(moveID) @soulshackle
accuracycheck 0x81D7DF2 0xFFFE
jumpifsecondarystatus 0x0 0x4000000 0x81D7DF2
jumpifsecondarystatus 0x0 0x1000000 0x81D7DF2
attackanimation
waitanimation
setbyte 0x2023E85 0x20
seteffecttarget
printstring 0x8F
waitmessage 0x40
goto 0x81D694E

#org @soulshackle
accuracycheck 0x81D695E 0x0
calculatedamage
attackanimation
waitanimation
missmessage
cmd5c 0x0
waitstate
datahpupdate 0x0
graphicalhpupdate 0x0
critmessage
waitmessage 0x40
resultmessage
jumpifbyte 0x0 0x2023E85 0x20 0x81D694E
setbyte 0x2023E85 0x20
seteffecttarget
printstring 0x8F
waitmessage 0x40
goto 0x81D694E

#org 0x1D7DF2
pause 0x20
orbyte 0x2023DCC 0x20
resultmessage
waitmessage 0x40
goto 0x81D694E




Animations:
Spoiler:


Light of Ruin
Spoiler:
00 01 28 00 2F 27 03 51 FC 0D 08 05 00 04 08 03 F9 A7 0B 08 0A 05 81 07 08 00 00 00 0C 00 FF 7F 04 0E 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 0E AF 28 1D 08 03 F9 A7 0B 08 0A 05 81 07 03 00 0C 00 00 00 FF 7F 05 20 05 00 A3 27 04 0A 19 D0 00 C0 03 1D 8B 09 08 02 05 00 00 01 00 00 00 04 00 01 00 05 04 1E 1F 39 CF 0D 08 07 F0 00 C0 FF 3F 00 01 00 0F 00 00 00 05 00 03 F9 89 09 08 02 05 00 00 00 00 04 00 32 00 01 00 03 6D 9F 0B 08 02 07 A3 27 01 00 0C 00 1F 00 10 00 00 00 00 00 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 03 1D 8B 09 08 02 05 01 00 04 00 00 00 32 00 01 00 03 F9 A7 0B 08 0A 05 04 00 02 00 00 00 0B 00 39 67 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 03 F9 A7 0B 08 0A 05 04 00 02 00 0B 00 00 00 39 67 05 08


Toxic Thread
Spoiler:
00 C3 27 00 C4 27 0A 03 04 00 02 24 7B 3E 08 05 05 01 00 02 00 00 00 09 00 00 00 05 28 01 1C 7A 00 C0 09 06 0E A5 15 1D 08 0E A5 15 1D 08 0E A5 15 1D 08 0E A5 15 1D 08 0E A5 15 1D 08 0E A5 15 1D 08 0E A5 15 1D 08 0E A5 15 1D 08 0E A5 15 1D 08 0E A5 15 1D 08 0E A5 15 1D 08 0E A5 15 1D 08 0E A5 15 1D 08 0E A5 15 1D 08 00 A7 27 00 A6 27 0E 4B F1 1C 08 05 19 7B 00 3F 02 A8 72 3E 08 82 02 00 00 0A 00 04 04 02 A8 72 3E 08 82 02 00 00 FE FF 04 04 02 A8 72 3E 08 82 02 00 00 16 00 05 0B 03 04 01 05 02 24 7B 3E 08 05 05 01 00 02 00 09 00 00 00 00 00 08


Accelerock
Spoiler:
00 4A 27 00 97 27 0A 02 0C 0C 08 03 7D 90 09 08 02 05 00 00 18 00 06 00 01 00 05 00 03 99 AB 0B 08 02 04 00 00 04 00 07 00 03 00 19 88 00 C0 04 04 03 F9 89 09 08 02 05 01 00 05 00 00 00 06 00 01 00 02 08 7C 3E 08 84 04 00 00 00 00 01 00 01 00 19 74 00 3F 02 54 4E 3D 08 02 05 01 00 03 00 00 00 05 00 01 00 02 CC 73 3E 08 82 06 05 00 00 00 EC FF 18 00 0E 00 01 00 02 CC 73 3E 08 82 06 00 00 05 00 14 00 E8 FF 0E 00 02 00 02 CC 73 3E 08 82 06 FB FF 00 00 EC FF E8 FF 0E 00 02 00 05 0B 02 0D 05 08


Psychic Fangs
Spoiler:
0E BB 59 1D 08 00 9B 27 00 97 27 0A 01 0C 0C 08 19 9A 00 3F 02 30 79 3E 08 02 06 00 00 E0 FF 00 00 00 00 33 03 0A 00 02 30 79 3E 08 02 06 00 00 20 00 04 00 00 00 CD FC 0A 00 04 0A 02 08 7C 3E 08 02 04 00 00 00 00 01 00 02 00 03 F9 89 09 08 05 05 01 00 00 00 04 00 07 00 01 00 05 0B 01 0D 04 01 0A 03 0C 0C 08 03 6D 61 07 08 05 05 00 00 7B 03 0C 00 01 00 01 00 03 59 3A 0B 08 05 01 00 00 19 A3 00 3F 05 03 6D 61 07 08 05 05 00 00 7B 03 0C 00 01 00 01 00 03 59 3A 0B 08 05 01 02 00 19 B9 00 C0 05 0D 0B 03 0E C7 59 1D 08 08


Sludge Wave
Spoiler:
14 24 17 03 2D B8 0B 08 05 04 00 00 00 00 00 00 FF FF 03 8D B3 0A 08 02 01 01 00 04 18 1B 9C 00 C0 3F 02 00 05 00 A7 27 00 A6 27 0E 4B F1 1C 08 0E C7 59 1D 08 08


Dragon Hammer:
Spoiler:
14 10 17 03 2D B8 0B 08 05 04 00 00 00 00 00 00 FF FF 00 05 28 0A 01 0C 0C 08 19 91 00 C0 02 00 69 3E 08 02 06 02 00 00 00 04 00 02 00 08 00 1F 00 05 01 05 28 00 06 28 02 54 4E 3D 08 02 02 06 00 04 00 04 04 19 BA 00 3F 02 48 69 3E 08 82 02 0A 00 F6 FF 05 01 06 28 03 B5 94 0B 08 05 03 05 00 0A 00 32 00 03 B5 94 0B 08 05 03 04 00 0A 00 32 00 19 E3 00 00 04 0A 02 3C 7B 3E 08 02 07 01 00 03 00 01 00 00 00 0E 00 FF 7F 0E 00 04 10 02 3C 7B 3E 08 02 07 01 00 03 00 01 00 00 00 0E 00 FF 7F 0E 00 05 00 97 27 03 1D 8B 09 08 02 05 01 00 03 00 00 00 0A 00 01 00 02 B0 7C 3E 08 83 05 F6 FF F8 FF 01 00 01 00 08 00 19 74 00 3F 04 08 02 B0 7C 3E 08 83 05 0A 00 08 00 01 00 01 00 08 00 19 86 00 3F 05 0B 01 0D 0E C7 59 1D 08 08


Ice Hammer
Spoiler:
14 0F 17 03 2D B8 0B 08 05 04 00 00 00 00 00 00 FF FF 00 9F 27 00 97 27 0A 03 28 01 0C 0C 08 19 80 00 3F 02 E0 66 3E 08 02 08 F0 FF 00 00 00 00 00 00 0A 00 01 00 03 00 00 00 05 19 84 00 3F 02 08 7C 3E 08 03 04 00 00 00 00 01 00 02 00 03 F9 89 09 08 05 05 01 00 04 00 00 00 06 00 01 00 05 0B 03 0D 05 03 B5 94 0B 08 05 03 05 00 0A 00 32 00 03 B5 94 0B 08 05 03 04 00 0A 00 32 00 19 E3 00 00 04 0A 02 3C 7B 3E 08 02 07 01 00 03 00 01 00 00 00 0E 00 FF 7F 0E 00 04 10 02 3C 7B 3E 08 02 07 01 00 03 00 01 00 00 00 0E 00 FF 7F 0E 00 05 0E C7 59 1D 08 08


Precipice Blades
Spoiler:
14 15 16 03 01 98 0B 08 05 03 01 00 05 00 FF FF 00 97 27 00 5A 27 00 4A 27 0A 03 28 01 0C 0C 08 03 D1 4B 0B 08 02 00 05 03 D5 9B 09 08 04 04 00 00 00 00 01 00 02 00 19 86 00 3F 05 0B 03 0D 00 2E 28 00 C7 27 02 A4 35 3E 08 82 03 01 00 F8 FF 00 00 19 81 00 3F 04 04 02 A4 35 3E 08 82 03 01 00 08 00 00 00 03 1D 8B 09 08 02 05 01 00 04 00 00 00 12 00 01 00 19 81 00 3F 00 C7 27 02 A4 35 3E 08 82 03 01 00 F8 FF 00 00 19 81 00 3F 04 04 02 A4 35 3E 08 82 03 01 00 08 00 00 00 03 1D 8B 09 08 02 05 01 00 04 00 00 00 12 00 01 00 19 81 00 3F 00 C7 27 02 A4 35 3E 08 82 03 01 00 F8 FF 00 00 19 81 00 3F 04 04 02 A4 35 3E 08 82 03 01 00 08 00 00 00 03 1D 8B 09 08 02 05 01 00 04 00 00 00 12 00 01 00 19 81 00 3F 00 9F 27 00 2D 28 0A 03 04 28 19 81 00 3F 02 3C 7B 3E 08 02 07 1F 00 03 00 01 00 FF 7F 0A 00 00 00 0A 00 02 80 7C 3E 08 03 04 00 00 00 00 01 00 14 00 03 F9 89 09 08 05 05 01 00 07 00 00 00 09 00 01 00 05 0B 03 0D 0E C7 59 1D 08 08


Liquidation
Spoiler:
00 A4 27 00 AB 27 00 9D 27 00 97 27 0A 01 0C 0C 08 02 54 4E 3D 08 02 02 04 00 04 00 04 06 02 08 7C 3E 08 02 04 00 00 00 00 01 00 02 00 03 F9 89 09 08 02 05 01 00 03 00 00 00 06 00 01 00 19 84 00 3F 05 0E A2 8C 1C 08 05 0B 03 0D 08


Darkest Lariat
Spoiler:
14 00 17 03 2D B8 0B 08 05 04 00 00 00 00 00 00 FF FF 00 97 27 0A 03 0C 0C 08 19 80 00 C0 1D 84 00 3F 0A 1D 80 00 C0 14 1D 84 00 3F 1E 1D 80 00 C0 28 1D 84 00 3F 32 1D 80 00 C0 3C 1D 84 00 3F 46 1D 80 00 C0 50 1D 84 00 3F 5A 03 85 8F 09 08 02 05 00 00 EE FF 06 00 06 00 04 00 03 85 8F 09 08 02 05 01 00 12 00 06 00 06 00 04 00 0E 0B 03 1D 08 0E 0B 03 1D 08 0E 0B 03 1D 08 05 0B 03 0D 0E C7 59 1D 08 08


Sparkling Aria
Spoiler:
00 E4 27 00 E5 27 00 A2 27 00 AB 27 00 83 27 19 85 00 C0 03 F9 A7 0B 08 0A 05 81 07 02 00 00 00 04 00 00 00 05 0A 00 0C 0C 08 19 85 00 C0 02 DD DD DD 08 02 01 00 00 04 19 04 14 04 0F 04 0A 04 06 0B 00 0D 05 0A 01 28 01 0C 0C 08 04 01 0E 4D 9D 1C 08 03 05 97 09 08 05 05 00 00 03 00 00 0C 08 00 01 00 0E 4D 9D 1C 08 0E 4D 9D 1C 08 03 C1 AB 0A 08 02 03 00 00 03 00 78 00 03 C1 AB 0A 08 02 03 00 00 03 00 78 00 04 78 04 1E 05 03 F9 A7 0B 08 0A 05 81 07 02 00 04 00 00 00 00 00 05 0B 01 0D 08

At 02 DD DD DD 08: E4 27 A2 27 60 CB 3A 08 F0 1C 23 08 00 00 00 00 C8 61 3E 08 1D E7 0A 08


Zing Zap
Spoiler:
00 E3 27 00 E4 27 00 11 27 00 35 27 0A 00 0C 0C 08 05 00 04 0C 05 03 A1 EF 0A 08 05 00 19 D6 00 3F 05 03 F9 89 09 08 02 05 01 00 00 00 06 00 12 00 01 00 03 F9 A7 0B 08 05 05 01 00 03 00 10 00 00 00 FF 7F 03 F9 A7 0B 08 05 05 04 00 00 00 10 00 10 00 00 00 04 04 03 F9 A7 0B 08 05 05 04 00 00 00 00 00 00 00 00 00 05 0B 00 0D 05 00 97 27 00 1B 27 03 B5 94 0B 08 05 03 01 00 05 00 0E 00 0B 00 0D 0E D4 58 1D 08 08


Oblivion Wing:
Spoiler:
14 00 17 03 2D B8 0B 08 05 04 00 00 00 00 00 00 FF FF 00 A3 27 04 0A 19 D0 00 C0 03 1D 8B 09 08 02 05 00 00 01 00 00 00 04 00 01 00 05 04 1E 1F 39 CF 0D 08 07 F0 00 C0 FF 3F 00 01 00 0F 00 00 00 05 00 03 F9 89 09 08 02 05 00 00 00 00 04 00 32 00 01 00 03 6D 9F 0B 08 02 07 A3 27 01 00 0C 00 1F 00 10 00 00 00 00 00 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 03 1D 8B 09 08 02 05 01 00 04 00 00 00 32 00 01 00 03 F9 A7 0B 08 0A 05 04 00 02 00 00 00 0B 00 39 67 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 0E D8 2A 1D 08 03 F9 A7 0B 08 0A 05 04 00 02 00 0B 00 00 00 39 67 05 05 00 A3 27 00 2F 27 19 C5 00 3F 03 F9 89 09 08 02 05 01 00 05 00 00 00 0F 00 01 00 03 B1 98 09 08 05 05 FA FF FA FF 0F 00 01 00 01 00 05 0C 0C 08 03 F9 89 09 08 02 05 01 00 00 00 02 00 19 00 01 00 0E 89 0A 1D 08 05 04 0F 0E C9 56 1D 08 05 0B 03 0D 04 01 0E C7 59 1D 08 08


Fire Lash:
Spoiler:
00 2D 27 0A 03 2A 01 02 FC 5D 3E 08 03 04 00 00 00 00 38 00 00 00 19 89 00 C0 04 02 02 FC 5D 3E 08 03 04 00 00 00 00 38 00 04 00 19 89 00 C0 04 02 02 FC 5D 3E 08 03 04 00 00 00 00 38 00 08 00 19 89 00 C0 04 02 02 FC 5D 3E 08 03 04 00 00 00 00 38 00 0C 00 19 89 00 C0 04 02 02 FC 5D 3E 08 03 04 00 00 00 00 38 00 10 00 19 89 00 C0 04 02 02 FC 5D 3E 08 03 04 00 00 00 00 38 00 14 00 19 89 00 C0 04 02 02 FC 5D 3E 08 03 04 00 00 00 00 38 00 18 00 19 89 00 C0 05 02 9C 4E 3D 08 02 05 00 00 18 00 00 00 00 00 06 00 04 04 03 F9 89 09 08 02 05 01 00 05 00 00 00 08 00 01 00 03 6D 61 07 08 03 05 01 00 1F 00 0C 00 01 00 01 00 19 8A 00 3F 00 C7 27 02 A4 35 3E 08 82 03 01 00 F8 FF 00 00 19 81 00 3F 04 04 02 A4 35 3E 08 82 03 01 00 08 00 00 00 03 1D 8B 09 08 02 05 01 00 04 00 00 00 12 00 01 00 19 81 00 3F 0E 50 09 1D 08 04 07 02 84 4E 3D 08 02 03 00 00 00 00 09 00 05 0B 03 08 02 FC 5D 3E 08 03 03 00 00 00 00 32 00 04 04 0F 08


Gyro Ball:
Spoiler:
14 08 17 03 2D B8 0B 08 05 04 00 09 00 04 00 00 FF FF 00 D2 27 00 D3 27 00 32 28 1C 71 00 C0 1C 02 03 ED 86 0B 08 05 03 01 00 00 00 00 00 05 0C 00 10 00 20 00 03 49 60 07 08 03 05 00 00 10 00 10 00 00 00 01 00 19 B6 00 C0 1F 39 CF 0D 08 07 C1 00 C0 FF 3F 00 03 00 04 00 00 00 0F 00 04 0F 1F 39 CF 0D 08 07 A1 00 C0 FF 3F 00 05 00 05 00 00 00 05 00 02 10 52 91 08 82 03 10 00 10 00 08 00 04 14 03 C1 5F 0A 08 02 00 05 0E C7 59 1D 08 08


Spirit Shackle:
Spoiler:
02 24 7B 3E 08 05 05 01 00 02 00 00 00 09 00 00 00 05 00 13 27 00 9A 27 00 97 27 04 00 0A 03 0C 0C 08 04 00 03 F1 76 0A 08 02 05 20 00 E8 FF 00 06 02 00 80 00 00 20 27 00 21 27 19 80 00 C0 02 30 EE 3F 08 02 00 04 02 19 98 00 3F 02 18 EE 3F 08 84 05 00 00 F4 FF 68 00 00 00 4B 00 02 18 EE 3F 08 84 05 00 00 F4 FF 48 00 01 00 4B 00 02 18 EE 3F 08 84 05 00 00 FA FF 38 00 01 00 4B 00 02 18 EE 3F 08 84 05 00 00 FA FF 58 00 00 00 4B 00 02 18 EE 3F 08 84 05 00 00 00 00 38 00 00 00 4B 00 02 18 EE 3F 08 84 05 00 00 00 00 58 00 01 00 4B 00 02 18 EE 3F 08 84 05 00 00 06 00 48 00 00 00 4B 00 02 18 EE 3F 08 84 05 00 00 06 00 68 00 01 00 4B 00 02 18 EE 3F 08 84 05 00 00 0C 00 48 00 00 00 4B 00 02 18 EE 3F 08 84 05 00 00 0C 00 38 00 01 00 4B 00 02 18 EE 3F 08 84 05 00 00 12 00 50 00 00 00 4B 00 02 18 EE 3F 08 84 05 00 00 12 00 48 00 01 00 4B 00 0E BA 9A 1C 08 02 24 7B 3E 08 05 05 01 00 02 00 09 00 00 00 00 00 05 0D 0B 03 04 00 08


Shadow Bone:
Spoiler:
14 02 17 03 2D B8 0B 08 05 04 00 00 00 00 00 00 FF FF 00 10 27 00 97 27 0A 03 28 01 0C 0C 08 19 B4 00 3F 02 40 7A 3E 08 02 05 D6 FF E7 FF 00 00 00 00 0F 00 04 0C 02 08 7C 3E 08 02 04 00 00 00 00 01 00 01 00 03 F9 89 09 08 05 05 01 00 00 00 05 00 05 00 01 00 02 3C 7B 3E 08 02 07 07 00 05 00 01 00 00 00 0A 00 00 00 00 00 19 74 00 3F 05 0A 03 03 AD 58 0B 08 02 00 03 F9 89 09 08 02 05 01 00 03 00 00 00 28 00 01 00 19 72 00 3F 05 0B 03 15 17 08 03 6D 61 07 08 02 05 00 00 FF 7F 0A 00 02 00 01 00 03 F9 89 09 08 02 05 00 00 03 00 00 00 20 00 01 00 19 72 00 3F 05 0B 03 0D 05 15 17 08


Topsy-Turvy
Spoiler:
14 00 17 03 2D B8 0B 08 05 04 00 00 00 00 00 00 FF FF 00 D4 27 0A 02 03 E5 9C 0B 08 02 06 01 00 02 00 06 00 01 00 0B 00 00 00 0C 0C 08 1C C1 00 C0 05 0A 02 F8 6D 3E 08 02 04 00 00 00 00 00 00 00 00 03 05 97 09 08 05 05 00 00 05 00 00 0A 08 00 00 00 04 7F 04 04 19 B6 00 C0 03 B1 98 09 08 05 05 FB FF FB FF 0A 00 00 00 01 00 03 F9 A7 0B 08 09 05 02 00 02 00 0A 00 00 00 FF 03 04 1E 0B 01 0D 05 04 01 0A 03 0C 0C 08 03 6D 61 07 08 05 05 00 00 7B 03 0C 00 01 00 01 00 03 59 3A 0B 08 05 01 00 00 19 A3 00 3F 05 03 6D 61 07 08 05 05 00 00 7B 03 0C 00 01 00 01 00 03 59 3A 0B 08 05 01 02 00 19 B9 00 C0 05 0D 0B 03 0E C7 59 1D 08 08


Bolt Strike:
Spoiler:
00 E3 27 00 E4 27 00 11 27 00 35 27 00 11 27 00 97 27 0A 00 0C 0C 08 19 CE 00 C0 02 D4 61 3E 08 02 01 00 00 04 19 19 CE 00 C0 04 14 19 CE 00 C0 04 0F 19 CE 00 C0 04 0A 04 06 1C CE 00 C0 06 05 05 0A 01 0C 0C 08 02 54 4E 3D 08 02 02 04 00 04 00 04 06 02 08 7C 3E 08 02 04 00 00 00 00 01 00 02 00 03 F9 89 09 08 02 05 01 00 03 00 00 00 06 00 01 00 19 84 00 3F 05 0B 01 0D 00 E3 27 0A 00 0C 0C 08 05 00 04 0C 05 03 A1 EF 0A 08 05 00 19 D6 00 3F 05 03 F9 89 09 08 02 05 01 00 00 00 06 00 12 00 01 00 03 F9 A7 0B 08 05 05 01 00 03 00 10 00 00 00 FF 7F 03 F9 A7 0B 08 05 05 04 00 00 00 10 00 10 00 00 00 04 04 03 F9 A7 0B 08 05 05 04 00 00 00 00 00 00 00 00 00 05 0B 00 0D 08


Dragon Rush
Spoiler:
14 1B 17 03 2D B8 0B 08 05 04 00 0A 00 00 00 00 FF FF 00 A6 27 00 2D 27 00 37 27 00 97 27 19 8F 00 C0 03 F9 A7 0B 08 0A 05 02 00 04 00 00 00 08 00 7F 02 03 F9 89 09 08 05 05 00 00 00 00 02 00 0F 00 01 00 02 XX XX XX 08 02 07 00 00 1C 00 10 02 1E 00 0D 00 32 00 00 00 04 02 02 XX XX XX 08 02 07 00 00 20 00 E0 01 14 00 10 00 D2 FF 00 00 04 02 02 XX XX XX 08 02 07 00 00 21 00 40 02 14 00 08 00 2A 00 00 00 04 02 02 XX XX XX 08 02 07 00 00 1F 00 90 01 19 00 0B 00 D6 FF 00 00 04 02 02 XX XX XX 08 02 07 00 00 1C 00 00 02 19 00 10 00 2E 00 00 00 04 02 02 XX XX XX 08 02 07 00 00 21 00 D0 01 1E 00 0F 00 CE FF 00 00 04 02 02 XX XX XX 08 02 07 00 00 1C 00 10 02 1E 00 0D 00 32 00 00 00 04 02 03 9D 94 09 08 05 07 00 00 E8 FF 08 00 17 00 0A 00 28 00 0A 00 04 23 02 3C 7B 3E 08 02 07 1F 00 03 00 01 00 00 00 0A 00 00 00 00 00 02 YY YY YY 08 04 04 F6 FF 00 00 01 00 00 00 1C 86 00 3F 0A 02 04 01 02 9C 4E 3D 08 02 05 01 00 F0 FF 00 00 00 00 03 00 05 03 D1 8C 09 08 02 05 01 00 04 00 00 00 0C 00 01 00 05 04 0A 02 84 4E 3D 08 02 03 00 00 00 00 06 00 04 05 02 84 4E 3D 08 02 03 01 00 00 00 07 00 05 0B 03 0D 0E C7 59 1D 08 08

At 02 XX XX XX 08: B3 27 A6 27 18 CA 3A 08 F0 1C 23 08 00 00 00 00 FC 1C 23 08 F5 5D 07 08
At 02 YY YY YY 08: 97 27 A6 27 58 CB 3A 08 F0 1C 23 08 00 00 00 00 F8 7B 3E 08 61 A5 0B 08


Electro Ball:
Spoiler:
00 1B 27 00 E4 27 0A 00 0C 0C 08 19 CE 00 C0 02 D4 61 3E 08 02 01 00 00 04 19 19 CE 00 C0 04 14 19 CE 00 C0 04 0F 19 CE 00 C0 04 0A 04 06 1C CE 00 C0 06 05 05 00 32 28 00 02 XX XX XX 08 82 03 10 00 10 00 08 00 05 19 98 00 3F 03 1D 8B 09 08 02 05 01 00 04 00 00 00 08 00 01 00 0E D4 58 1D 08 05 0B 00 0D 08 08

At 02 XX XX XX 08: 32 28 E4 27 38 CA 3A 08 F0 1C 23 08 00 00 00 00 04 76 3E 08 3D 56 0B 08


Fell Stinger:
Spoiler:
02 24 7B 3E 08 05 05 01 00 02 00 00 00 09 00 00 00 05 00 35 27 00 97 27 00 24 27 24 0A A5 1C 08 17 0C 0C 08 02 50 35 3E 08 02 01 00 00 19 9B 00 C0 05 04 02 02 50 35 3E 08 02 01 01 00 02 BC 37 3E 08 84 03 00 00 00 00 0C 00 05 09 14 00 03 D1 8C 09 08 02 05 00 00 02 00 00 00 28 00 01 00 03 D1 8C 09 08 02 05 01 00 0A 00 00 00 28 00 01 00 02 98 7C 3E 08 83 04 00 00 00 00 01 00 03 00 19 9F 00 3F 04 04 02 98 7C 3E 08 83 04 00 00 02 00 01 00 03 00 19 9F 00 3F 04 04 02 98 7C 3E 08 83 04 FC FF 03 00 01 00 03 00 19 9F 00 3F 04 04 02 98 7C 3E 08 83 04 F8 FF FB FF 01 00 03 00 19 9F 00 3F 04 04 02 98 7C 3E 08 83 04 04 00 F4 FF 01 00 03 00 19 9F 00 3F 04 04 02 98 7C 3E 08 83 04 10 00 00 00 01 00 03 00 19 9F 00 3F 04 04 02 98 7C 3E 08 83 04 05 00 12 00 01 00 03 00 19 9F 00 3F 04 04 02 98 7C 3E 08 83 04 EF FF 0C 00 01 00 02 00 19 9F 00 3F 04 04 02 98 7C 3E 08 83 04 EB FF F1 FF 01 00 02 00 19 9F 00 3F 04 04 02 98 7C 3E 08 83 04 08 00 E5 FF 01 00 02 00 19 9F 00 3F 04 04 02 98 7C 3E 08 83 04 20 00 00 00 01 00 02 00 19 9F 00 3F 04 04 02 50 35 3E 08 02 01 02 00 00 57 27 03 B1 7F 0A 08 05 00 1C A3 00 3F 0F 04 05 04 01 0B 01 0D 05 02 24 7B 3E 08 05 05 01 00 02 00 09 00 00 00 00 00 08


Metal Burst:
Spoiler:
00 97 27 00 A8 27 00 32 28 00 41 27 0E AA AA AA 08 05 0E BB BB BB 08 0A 01 0C 0C 08 03 51 08 0E 08 02 01 00 00 1C 9B 00 C0 08 02 05 02 50 7C 3E 08 83 02 01 00 03 00 03 D5 9B 09 08 02 05 00 00 01 00 1E 00 01 00 00 00 19 86 00 3F 05 0B 01 0D 08

At 0E AA AA AA 08: (189 bytes)
02 AB AB AB 08 02 06 F1 FF 00 00 00 00 00 00 20 00 3C 00 04 08 02 AB AB AB 08 02 06 0C 00 FB FF 00 00 00 00 20 00 3C 00 04 08 0F

At 02 AB AB AB 08: 41 27 32 28 D8 C9 3A 08 F0 33 3E 08 00 00 00 00 FC 1C 23 08 0D 4D 0A 08

At 0E BB BB BB 08: (148 bytes)
04 03 02 BC BC BC 08 82 06 00 00 00 00 1E 00 00 FB 00 00 03 00 04 00 02 BC BC BC 08 82 06 00 00 00 00 1E 00 00 00 00 05 03 00 04 00 02 BC BC BC 08 82 06 00 00 00 00 1E 00 00 00 00 FB 03 00 04 00 02 BC BC BC 08 82 06 00 00 00 00 1E 00 00 05 00 03 03 00 04 00 02 BC BC BC 08 82 06 00 00 00 00 1E 00 00 FB 00 03 03 00 04 00 02 BC BC BC 08 82 06 00 00 00 00 1E 00 00 05 00 FD 03 00 04 00 02 BC BC BC 08 82 06 00 00 00 00 1E 00 00 FB 00 FD 03 00 0F

At 02 BC BC BC 08: A8 27 A8 27 D0 C9 3A 08 F0 1C 23 08 00 00 00 00 FC 1C 23 08 5D 72 0B 08


Foul Play:
Spoiler:
00 A6 27 00 DB 27 00 97 27 0A 01 0C 0C 08 02 54 4E 3D 08 02 02 04 00 04 00 04 06 02 08 7C 3E 08 02 04 00 00 00 00 01 00 02 00 03 F9 89 09 08 02 05 01 00 03 00 00 00 06 00 01 00 19 84 00 3F 19 5F 00 C0 02 24 7B 3E 08 02 05 1F 00 03 00 0A 00 00 00 00 00 02 AB AB AB 08 03 04 00 00 00 00 00 01 00 00 04 08 19 5F 00 C0 02 24 7B 3E 08 02 05 1F 00 03 00 0A 00 00 00 00 00 02 AB AB AB 08 03 04 00 00 00 00 00 01 00 00 05 0B 01 0D 08

At 02 AB AB AB 08: DB 27 A6 27 A0 CA 3A 08 F0 1C 23 08 00 00 00 00 88 40 3E 08 9D 5D 07 08


Wring Out:
Spoiler:
00 3E 28 0A 03 0C 0C 08 19 80 00 C0 1D 84 00 3F 0A 1D 80 00 C0 14 1D 84 00 3F 1E 1D 80 00 C0 28 1D 84 00 3F 32 1D 80 00 C0 3C 1D 84 00 3F 46 1D 80 00 C0 50 1D 84 00 3F 5A 03 85 8F 09 08 02 05 00 00 EE FF 06 00 06 00 04 00 03 85 8F 09 08 02 05 01 00 12 00 06 00 06 00 04 00 0E AB AB AB 08 0E AB AB AB 08 0E AB AB AB 08 05 0B 03 0D 08

At 0E AB AB AB 08: (52 bytes)
02 BC BC BC 08 03 04 00 00 F4 FF 01 00 01 00 04 08 02 BC BC BC 08 03 04 F4 FF 08 00 01 00 01 00 04 08 02 BC BC BC 08 03 04 0C 00 00 00 01 00 01 00 04 08 0F

At 02 BC BC BC 08: 3E 28 3E 28 58 CB 3A 08 F0 1C 23 08 00 00 00 00 F8 7B 3E 08 61 A5 0B 08


Guard Swap:
Spoiler:

00 0B 28 03 35 38 0B 08 03 01 01 00 03 6D 61 07 08 05 05 01 00 B0 55 0C 00 03 00 01 00 1C D2 00 C0 18 03 04 7C 1C 5F 00 C0 1C 02 03 ED 86 0B 08 05 03 00 00 00 00 00 00 02 3C 7B 3E 08 02 07 01 00 08 00 02 00 FF FF 0E 00 FF FF 00 00 05 1C D2 00 C0 18 03 04 10 03 35 38 0B 08 03 01 00 00 03 6D 61 07 08 05 05 00 00 B0 55 0C 00 03 00 01 00 05 08


Power Swap:
Spoiler:
00 C0 27 00 0B 28 03 35 38 0B 08 03 01 01 00 03 6D 61 07 08 05 05 01 00 B0 55 0C 00 03 00 01 00 1C D2 00 C0 18 03 04 7C 00 15 27 0A 00 0C 0C 08 19 B8 00 C0 03 7D 90 09 08 02 05 00 00 10 00 06 00 01 00 04 00 02 AB AB AB 08 02 02 00 00 00 00 04 16 03 6D 9F 0B 08 02 07 15 27 02 00 02 00 F2 7F 10 00 00 00 00 00 05 0B 00 0D 04 01 05 1C D2 00 C0 18 03 04 10 03 35 38 0B 08 03 01 00 00 03 6D 61 07 08 05 05 00 00 B0 55 0C 00 03 00 01 00 05 08

At 02 AB AB AB 08: 15 27 C0 27 A0 CB 3A 08 F0 1C 23 08 00 00 00 00 F4 3B 3E 08 7D 72 0A 08


Smart Strike:
Spoiler:
00 34 28 00 13 27 00 97 27 00 32 28 00 1E 27 02 18 35 3E 08 28 00 02 30 35 3E 08 28 01 01 00 02 30 35 3E 08 28 01 02 00 02 30 35 3E 08 28 01 03 00 02 30 35 3E 08 28 01 04 00 04 78 10 07 FF FF 05 0A 03 28 01 0C 0C 08 0E 12 7F 1C 08 03 F9 89 09 08 02 05 01 00 03 00 00 00 0A 00 01 00 00 32 28 02 50 44 91 08 84 05 00 00 00 00 08 00 01 00 00 00 19 74 00 3F 02 F0 42 91 08 82 05 01 00 01 00 00 00 E8 FF 0A 00 02 F0 42 91 08 82 05 01 00 01 00 11 00 EF FF 0A 00 02 F0 42 91 08 82 05 01 00 01 00 18 00 00 00 0A 00 02 F0 42 91 08 82 05 01 00 01 00 11 00 11 00 0A 00 02 F0 42 91 08 82 05 01 00 01 00 00 00 18 00 0A 00 02 F0 42 91 08 82 05 01 00 01 00 EF FF 11 00 0A 00 02 F0 42 91 08 82 05 01 00 01 00 E8 FF 00 00 0A 00 02 F0 42 91 08 82 05 01 00 01 00 EF FF EF FF 0A 00 05 0B 03 0D 05 0B 00 0D 05 08 FF FF FF FF FF FF FF FF 00 0D 05 0B 03 0D 08


Aurora Veil:
Spoiler:
14 14 16 03 2D B8 0B 08 05 04 00 04 00 00 00 00 FF FF 04 20 00 04 28 0A 02 0C 08 08 19 DA 00 C0 02 DC 44 3E 08 02 00 04 04 02 DC 44 3E 08 02 00 04 04 02 DC 44 3E 08 02 00 05 19 5F 00 C0 03 DD 9B 0B 08 02 06 0A 00 00 00 02 00 00 00 0A 00 FF 7F 05 0E C7 59 1D 08 05 0B 02 0D 08

For some reason Electro ball, Gyro Ball and some other animations do not work.

I remember Electro ball working but I don't know it doesn't now...


Edit:

I got the hang of move animations and I managed to create a working Water Shuriken animation for FR:

Spoiler:

00 2D 28 00 20 28 00 97 27 00 2E 28 0A 03 28 01 0C 0C 08 19 75 00 C0 02 XX XX XX 08 02 00 04 14 19 81 00 3F 02 YY YY YY 08 02 04 00 00 00 00 01 00 01 00 03 F9 89 09 08 05 05 01 00 05 00 00 00 05 00 01 00 04 11 19 77 00 C0 02 54 4E 3D 08 02 02 06 00 FC FF 05 0B 03 0D 08

At XX XX XX :
2D 28 20 28 38 CA 3A 08 F0 1C 23 08 00 00 00 00 20 7A 3E 08 6D 8B 0B 08

At YY YY YY:
2D 28 2E 28 58 CB 3A 08 F0 1C 23 08 00 00 00 00 F8 7B 3E 08 61 A5 0B 08


As well as an updated version of Aqua Tail:
Spoiler:

00 A4 27 00 AB 27 00 9D 27 0A 03 0C 0C 08 03 F9 89 09 08 05 05 00 00 00 00 02 00 17 00 01 00 04 05 19 87 00 C0 02 B0 5A 3E 08 02 04 0A 00 0A 00 19 00 00 00 04 04 19 87 00 C0 02 B0 5A 3E 08 02 04 F1 FF 00 00 19 00 00 00 04 04 19 87 00 C0 02 B0 5A 3E 08 02 04 14 00 0A 00 19 00 00 00 04 04 19 87 00 C0 02 B0 5A 3E 08 02 04 00 00 F6 FF 19 00 00 00 04 04 19 87 00 C0 02 B0 5A 3E 08 02 04 F6 FF 0F 00 19 00 00 00 04 04 19 87 00 C0 02 B0 5A 3E 08 02 04 19 00 14 00 19 00 00 00 04 04 19 87 00 C0 02 B0 5A 3E 08 02 04 EC FF 14 00 19 00 00 00 04 04 19 87 00 C0 02 B0 5A 3E 08 02 04 0C 00 00 00 19 00 00 00 05 00 25 28 00 2E 28 00 97 27 02 54 4E 3D 08 02 02 04 00 06 00 04 04 19 73 00 3F 02 YY YY YY 08 82 02 F0 FF F0 FF 04 08 02 3C 7B 3E 08 02 07 1F 00 05 00 01 00 FF 7F 0A 00 00 00 00 00 02 08 7C 3E 08 83 04 00 00 00 00 01 00 02 00 19 84 00 3F 02 9C 4E 3D 08 02 05 01 00 F4 FF 0A 00 00 00 03 00 02 84 4E 3D 08 02 03 00 00 00 00 05 00 04 03 03 D1 8C 09 08 02 05 01 00 00 00 03 00 06 00 01 00 04 05 02 84 4E 3D 08 02 03 01 00 00 00 06 00 04 0A 05 0B 03 0D 08

at YY YY YY 08: 25 28 2E 28 40 CA 3A 08 28 F7 3F 08 00 00 00 00 5C F7 3F 08 35 43 0E 08

Skeli-

Lord of the Rings

Age 20
Male
Canada
Seen 1 Day Ago
Posted 4 Days Ago
226 posts
5.5 Years
A whole bunch of move animations for [FR]. Some of them require insert offsets, so when inserting any with a .org 0xAAAAAA at the top, replace that with the offset you plan on inserting the animation at (don't add an extra 08 at the front!). They can all be compiled with a THUMB compiler.

First, paste this at the top of all of the files:
Spoiler:
Credits to Dizzy Egg for the original
.text
.equ rom, 0x8000000

@banks
.equ bank_attacker, 0x0
.equ bank_target, 0x1
.equ attacker_partner, 0x2
.equ target_partner, 0x3

@sides for commands A, B
.equ side_attacker, 0x2
.equ side_target, 0x3

@background IDs
.equ BG_DARK, 0x1
.equ BG_GHOST, 0x2
.equ BG_PSYCHIC, 0x3
.equ BG_IMPACT_ON_OPPONENT, 0x4
.equ BG_IMPACT_ON_PLAYER, 0x5
.equ BG_IMPACT_CONTESTS, 0x6
.equ BG_DRILL_BATTLE, 0x7
.equ BG_DRILL_CONTESTS, 0x8
.equ BG_HIGHSPEED_ON_OPPONENT, 0x9
.equ BG_HIGHSPEED_ON_PLAYER, 0xA
.equ BG_THUNDER, 0xB
.equ BG_GUILLOTINE_ON_OPPONENT, 0xC
.equ BG_GUILLOTINE_ON_PLAYER, 0xD
.equ BG_GUILLOTINE_CONTESTS, 0xE
.equ BG_ICE, 0xF
.equ BG_COSMIC, 0x10
.equ BG_SEISMICTOSS_SKUUPPERCUT, 0x11
.equ BG_FLYING_BATTLE, 0x12
.equ BG_FLYING_CONTESTS, 0x13
.equ BG_AURORABEAM, 0x14
.equ BG_FISSURE, 0x15
.equ BG_BUG_ON_OPPONENT, 0x16
.equ BG_BUG_ON_PLAYER, 0x17
.equ BG_SOLARBEAM_ON_OPPONENT, 0x18
.equ BG_SOLARBEAM_ON_PLAYER, 0x19
.equ BG_SOLARBEAM_CONTESTS, 0x1A

@The following are only present in Mr DS's patch
.equ BG_ROCK_WRECKER, 0x1B
.equ BG_WATER, 0x1C
.equ BG_GHOST, 0x1D
.equ BG_LEAF_STORM, 0x1E
.equ BG_FIRE, 0x1F
.equ BG_FIRE_2, 0x20
.equ BG_GIGA_IMPACT_ON_OPPONENT, 0x21
.equ BG_GIGA_IMPACT_ON_PLAYER, 0x22
.equ BG_WATER_2, 0x23
.equ BG_POISON, 0x24
.equ BG_MOON, 0x25
.equ BG_HIGH_SPEED, 0x26

@pals for pal fading tasks
.equ PAL_BG, 0x1
.equ PAL_ATK, 0x2
.equ PAL_DEF, 0x4
.equ PAL_ATK_PARTNER, 0x8
.equ PAL_DEF_PARTNER, 0x10
.equ PAL_ALL_BANKS, 0x780
.equ PAL_PLAYER1, 0x80
.equ PAL_PLAYER2, 0x100
.equ PAL_OPPONENT1, 0x200
.equ PAL_OPPONENT2, 0x400

@commands
.macro loadparticle loadparticleID
.byte 0x0
.hword \loadparticleID
.endm

.macro unloadparticle unloadparticleID
.byte 0x1
.hword \unloadparticleID
.endm

.macro launchtemplate launchtemplatePtr launchtemplatePriority launchtemplateArgsNo launchtemplatearg0 launchtemplatearg1 launchtemplatearg2 launchtemplatearg3 launchtemplatearg4 launchtemplatearg5 launchtemplatearg6 launchtemplatearg7 launchtemplatearg8
.byte 0x2
.word \launchtemplatePtr
.byte \launchtemplatePriority
.byte \launchtemplateArgsNo
.hword \launchtemplatearg0
.hword \launchtemplatearg1
.hword \launchtemplatearg2
.hword \launchtemplatearg3
.hword \launchtemplatearg4
.hword \launchtemplatearg5
.hword \launchtemplatearg6
.hword \launchtemplatearg7
.hword \launchtemplatearg8
.endm

.macro launchtask launchtaskPtr launchtaskPriority launchtaskArgsNo launchtaskarg0 launchtaskarg1 launchtaskarg2 launchtaskarg3 launchtaskarg4 launchtaskarg5 launchtaskarg6 launchtaskarg7 launchtaskarg8
.byte 0x3
.word \launchtaskPtr
.byte \launchtaskPriority
.byte \launchtaskArgsNo
.hword \launchtaskarg0
.hword \launchtaskarg1
.hword \launchtaskarg2
.hword \launchtaskarg3
.hword \launchtaskarg4
.hword \launchtaskarg5
.hword \launchtaskarg6
.hword \launchtaskarg7
.hword \launchtaskarg8
.endm

.macro pause pause_cmdToWait
.byte 0x4
.byte \pause_cmdToWait
.endm

.macro waitanimation
.byte 0x5
.endm

.macro endanimation
.byte 0x8
.endm

.macro playsound1 playsound1ID
.byte 0x9
.hword \playsound1ID
.endm

.macro pokespritetoBG animABank
.byte 0xA
.byte \animABank
.endm

.macro pokespritefromBG animBBank
.byte 0xB
.byte \animBBank
.endm

.macro setblends setblends_value
.byte 0xC
.hword \setblends_value
.endm

.macro resetblends
.byte 0xD
.endm

.macro call call_cmd_ptr
.byte 0xE
.word \call_cmd_ptr
.endm

.macro return
.byte 0xF
.endm

.macro setarg setargID setargValue
.byte 0x10
.byte \setargID
.hword \setargValue
.endm

.macro choosetwoturnanim choosetwoturnanim1 choosetwoturnanim2
.byte 0x11
.word \choosetwoturnanim1
.word \choosetwoturnanim2
.endm

.macro jumpifmoveturnEQ jumpifmoveturnEQturn jumpifmoveturnEQPTR
.byte 0x12
.byte \jumpifmoveturnEQturn
.word \jumpifmoveturnEQPTR
.endm

.macro goto goto_cmdPtr
.byte 0x13
.word \goto_cmdPtr
.endm

.macro loadBG1 loadBG1ID
.byte 0x14
.byte \loadBG1ID
.endm

.macro loaddefaultBG
.byte 0x15
.endm

.macro waitforBG
.byte 0x16
.endm

.macro waitfortransparentBG
.byte 0x17
.endm

.macro loadBG2 loadBG2ID
.byte 0x18
.byte \loadBG2ID
.endm

.macro playsound2 playsound2ID playsound2Unkown
.byte 0x19
.hword \playsound2ID
.byte \playsound2Unkown
.endm

.macro pancontrol anim1Aarg1
.byte 0x1A
.byte \anim1Aarg1
.endm

.macro playsoundpanchange anim1BsongID anim1BArg3 anim1BArg4 anim1BArg5 anim1BArg6
.byte 0x1B
.hword \anim1BsongID
.byte \anim1BArg3
.byte \anim1BArg4
.byte \anim1BArg5
.byte \anim1BArg6
.endm

.macro soundcomplex anim1Carg1 anim1Carg2 anim1Carg3 anim1Carg4
.byte 0x1C
.hword \anim1Carg1
.byte \anim1Carg2
.byte \anim1Carg3
.byte \anim1Carg4
.endm

.macro playsound3 anim1Darg1 anim1Darg2 anim1Darg3
.byte 0x1D
.hword \anim1Darg1
.byte \anim1Darg2
.byte \anim1Darg3
.endm

.macro set_BLDCNT set_BLDCNTvalue
.byte 0x1E
.hword \set_BLDCNTvalue
.endm

.macro launchsoundtask launchsoundtaskPtr launchsoundtaskArgsNo launchsoundtaskarg0 launchsoundtaskarg1 launchsoundtaskarg2 launchsoundtaskarg3 launchsoundtaskarg4 launchsoundtaskarg5 launchsoundtaskarg6 launchsoundtaskarg7 launchsoundtaskarg8
.byte 0x1F
.word \launchsoundtaskPtr
.byte \launchsoundtaskArgsNo
.hword \launchsoundtaskarg0
.hword \launchsoundtaskarg1
.hword \launchsoundtaskarg2
.hword \launchsoundtaskarg3
.hword \launchsoundtaskarg4
.hword \launchsoundtaskarg5
.hword \launchsoundtaskarg6
.hword \launchsoundtaskarg7
.hword \launchsoundtaskarg8
.endm

.macro waitforsound
.byte 0x20
.endm

.macro jumpifargmatches jumpifargmatchesargID jumpifargmatchesValue jumpifargmatchesPtr
.byte 0x21
.byte \jumpifargmatchesargID
.hword \jumpifargmatchesValue
.word \jumpifargmatchesPtr
.endm

.macro anim22 anim22bank
.byte 0x22
.byte \anim22bank
.endm

.macro anim23 anim23bank
.byte 0x23
.byte \anim23bank
.endm

.macro jumpifnotinbattle jumpifnotinbattlePTR
.byte 0x24
.word \jumpifnotinbattlePTR
.endm

.macro chooseBG chooseBG1 chooseBG2 chooseBG3
.byte 0x25
.byte \chooseBG1
.byte \chooseBG2
.byte \chooseBG3
.endm

.macro playsoundpanchange2 anim26H0 anim26B0 anim26B1 anim26B2 anim26B3
.byte 0x26
.hword \anim26H0
.byte \anim26B0
.byte \anim26B1
.byte \anim26B2
.byte \anim26B3
.endm

.macro playsoundpanchange3 anim27H0 anim27B0 anim27B1 anim27B2 anim27B3
.byte 0x27
.hword \anim27H0
.byte \anim27B0
.byte \anim27B1
.byte \anim27B2
.byte \anim27B3
.endm

.macro leftbankBG_over_partnerBG anim28Bank
.byte 0x28
.byte \anim28Bank
.endm

.macro bankBG_over_partnerBG
.byte 0x29
.endm

.macro leftopponentbankBG_over_partnerBG anim2Aarg
.byte 0x2A
.byte \anim2Aarg
.endm

.macro makebankinvisible makebankinvisibleBank
.byte 0x2B
.byte \makebankinvisibleBank
.endm

.macro makebankvisible makebankvisibleBank
.byte 0x2C
.byte \makebankvisibleBank
.endm

.macro stopmusic
.byte 0x2F
.endm

@objtemplate

.macro objtemplate objtemplatetiletag objtemplatepaltag objtemplateoam objtemplateimageanim objtemplategfx objtemplaterotscale objtemplatecallback
.hword \objtemplatetiletag
.hword \objtemplatepaltag
.word \objtemplateoam
.word \objtemplateimageanim
.word \objtemplategfx
.word \objtemplaterotscale
.word \objtemplatecallback
.endm

@launchtask

.equ AnimTask_move_bank, 0x80989F9
.equ AnimTask_sprite_transform, 0x80DF9BD
.equ AnimTask_play_growling_cry, 0x80DD149
.equ AnimTask_pal_fade_particle, 0x80BAA21
.equ AnimTask_pal_fade, 0x80BA7F9
.equ AnimTask_pal_fade_complex, 0x80B9BDD
.equ AnimTask_screen_shake, 0x80B94B5
.equ AnimTask_prepare_moving_psychicBG, 0x80DE6F1
.equ AnimTask_arg7_is_target_player, 0x80DEAB5
.equ AnimTask_scroll_background, 0x80BB82D
.equ AnimTask_steel_sprite, 0x80B86ED
.equ AnimTask_surf_wave, 0x80AB38D

@calls

.equ SET_PSYCHIC_BG, 0x81D59BB
.equ UNSET_SCROLLING_BG, 0x81D59C7
.equ BURN_CHANCE_ANIM, 0x81D0950
.equ FREEZE_CHANCE_ANIM, 0x81D540A
.equ PARALYZE_CHANCE_ANIM, 0x81D58D4
.equ POISON_BUBBLES, 0x81D575B
.equ HEALING_STARS, 0x81D569E
.equ HEALING_ANIM, 0x81D56C9
.equ RECOVER_LOAD_PARTICLES, 0x81D170D

@supercommands

.macro unsetscrollingBG
loaddefaultBG
waitforBG
setarg 0x7 0xffff
waitfortransparentBG
.endm


Aromatic Mist:
Spoiler:
AromaticMist:
	loadparticle 0x27fe 
	playsound2 0xE5 0xc0
	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x3 0x0 0x8 0x6E7D
	launchtemplate 0x83FF324 0x2 0x3 0x64 0x0 0x64  
	pause 0x19 
	pancontrol 0x0 
	call 0x81D2901
	launchtemplate 0x83FF324 0x2 0x2 0x37 0x0  
	pancontrol 0x3f 
	launchtask AnimTask_pal_fade_complex 0x2 0x6 PAL_DEF | PAL_DEF_PARTNER 0x1 0x5 0x5 0xd 0x56bf  
	call 0x81D2901
	waitanimation
	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x3 0x8 0x0 0x6E7D
	waitanimation
	endanimation


Cotton Guard:
Spoiler:
.org 0xAAAAAA
CottonGuard:
	loadparticle 0x27AE
	pokespritetoBG side_attacker 
	setblends 0x80c 
	soundcomplex 0xA2 0x3f 0x12 0x6
	call 0x81D03B5
	call CottonIn+rom
	call CottonIn+rom
	call CottonIn+rom
	waitanimation 
	pokespritefromBG side_attacker 
	resetblends
	endanimation 
CottonIn:
	launchtemplate COTTON+rom 0x2 0x3 0x28 0xfff6 0xd  
	pause 0x3 
	launchtemplate COTTON+rom 0x2 0x3 0xffdd 0xfff6 0xd  
	pause 0x3 
	launchtemplate COTTON+rom 0x2 0x3 0xf 0xffd8 0xd  
	pause 0x3 
	launchtemplate COTTON+rom 0x2 0x3 0xfff6 0xffe0 0xd  
	pause 0x3 
	launchtemplate COTTON+rom 0x2 0x3 0x19 0xffec 0xd  
	pause 0x3 
	launchtemplate COTTON+rom 0x2 0x3 0xffd8 0xffec 0xd  
	pause 0x3 
	launchtemplate COTTON+rom 0x2 0x3 0x5 0xffd8 0xd  
	pause 0x3 
	return

.align 2
COTTON: objtemplate 0x27AE 0x27AE 0x83AC9D0 0x83E2B5C 0x0 0x83E2A54 0x80A2389


Dragon Breath:
Spoiler:
*Can be inserted over the original
.org 0x1CD9AC
DragonBreath:
	loadparticle 0x272D
	loadparticle 0x2838
	pokespritetoBG side_target 
	leftbankBG_over_partnerBG bank_target  
	soundcomplex 0x89 0xc0 0x7 0x7
	call BreatheFire+rom
	call BreatheFire+rom
	launchtask AnimTask_pal_fade 0xa 0x5 PAL_DEF 0x1 0x0 0x9 0x1f  
	call BreatheFire+rom 
	pause 0x2 
	launchtask 0x8098B1D 0x2 0x5 0x1 0x2 0x0 0x15 0x1  
	call BreatheFire+rom
	call BreatheFire+rom
	call BreatheFire+rom
	call BreatheFire+rom
	call BreatheFire+rom
	call BreatheFire+rom
	call BreatheFire+rom
	call BreatheFire+rom
	launchtask AnimTask_pal_fade 0xa 0x5 PAL_DEF 0x1 0x9 0x0 0x1f  
	waitanimation 
	pokespritefromBG side_target 
	endanimation

BreatheFire:
	launchtemplate BLUEFIRE+rom 0x82 0x5 0x0 0x0 0x0 0x0 0x14  
	pause 0x2
	return

.align 2
BLUEFIRE: objtemplate 0x272D 0x2838 0x83ACA98 0x83E7764 0x0 0x83E779C 0x80B741D


Dragon Rush:
Spoiler:
.org 0xAAAAAA
DragonRush:
	loadparticle 0x27AC
	loadparticle 0x27C0
	loadparticle 0x274a
	loadparticle 0x2797
	playsound2 0x97 0xc0 
	launchtemplate FLYUP+rom 0x2 0x4 0x0 0x0 0xd 0x150
	waitanimation
	loadBG1 0x10 @cosmic
	waitfortransparentBG 
	pokespritetoBG side_target 
	setblends 0x80c 
	playsound2 0xBA 0x3f 
	launchtemplate BOUNCEDOWN+rom 0x83 0x0  
	pause 0x7 
	playsound2 0x86 0x3f 
	launchtemplate 0x83E7C08 0x82 0x4 0x0 0x0 0x1 0x0  
	launchtask AnimTask_move_bank 0x5 0x5 bank_target 0x0 0x5 0xb 0x1
	call 0x81D47C7 @seismic toss
	waitanimation 
	pokespritefromBG side_target 
	resetblends
	loaddefaultBG 
	waitfortransparentBG 
	endanimation

.align 2
FLYUP:
	objtemplate 0x27AC 0x27C0 0x83ACAA0 0x8231CF0 0x0 0x83E6B8C 0x80B1BB1
BOUNCEDOWN:
	objtemplate 0x27AC 0x27C0 0x83ACAA0 0x8231CF0 0x0 0x83E6CF8 0x80B2975


Dragon Tail:
Spoiler:
DragonTail:	
	loadparticle 0x274a
	loadparticle 0x2748 
	loadparticle 0x2797 
	pokespritetoBG bank_target 
	setblends 0x80c 
	playsound2 0x84 0xc0 
	launchtemplate 0x83D4E9C 0x2 0x5 0x0 0x14 0x3 0x0 0x4  
	pause 0x1 
	launchtemplate 0x83E3148 0x2 0x2 0x0 0x0  
	pause 0x3 
	playsound2 0x86 0x3f 
	launchtemplate 0x83E7C08 0x3 0x4 0x0 0x0 0x1 0x1  
	launchtemplate 0x83D4E9C 0x2 0x5 0x1 0xfff4 0xa 0x0 0x3  
	launchtemplate 0x83D4E84 0x2 0x3 0x0 0x0 0x5 
	call 0x81D47C7 @seismic toss
	pause 0x3 
	launchtask 0x8098CD1 0x2 0x5 0x1 0x0 0x3 0x6 0x1  
	waitanimation 
	pause 0x5 
	launchtemplate 0x83D4E84 0x2 0x3 0x1 0x0 0x6  
	waitanimation 
	pokespritefromBG bank_target 
	resetblends
	endanimation


Fire Fang:
Spoiler:
FireFang:
	loadparticle 0x279b 
	loadparticle 0x2797
	loadparticle 0x272D
	pokespritetoBG bank_target 
	setblends 0x80c 
	playsound2 0x9a 0x3f 
	launchtemplate 0x83E7930 0x2 0x6 0x0 0xffe0 0x0 0x0 0x333 0xa  
	launchtemplate 0x83E7930 0x2 0x6 0x0 0x20 0x4 0x0 0xfccd 0xa
	pause 0xA 
	launchtemplate 0x83E7C08 0x2 0x4 0x0 0x0 0x1 0x2
	call 0x81D0950 @flames
	pause 0x4 
	playsound2 0x8C 0x3f
	launchtask AnimTask_move_bank 0x5 0x5 bank_target 0x0 0x4 0x7 0x1  
	waitanimation 
	pokespritefromBG bank_target 
	resetblends 
	pause 0x1 
	endanimation


Flamethrower:
Spoiler:
.org 0xAAAAAA
Flamethrower:
	loadparticle 0x272D
	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x3 0x0 0x7 0x043D
	pause 0x20
	pokespritetoBG side_target 
	leftbankBG_over_partnerBG bank_target  
	soundcomplex 0x89 0xc0 0x7 0xA
	call BreatheFire+rom
	call BreatheFire+rom
	launchtask AnimTask_pal_fade 0xa 0x5 PAL_DEF 0x1 0x0 0x9 0x1f  
	call BreatheFire+rom 
	pause 0x2 
	launchtask 0x8098B1D 0x2 0x5 0x1 0x2 0x0 0x15 0x1  
	call BreatheFire+rom
	call BreatheFire+rom
	call BreatheFire+rom
	call BreatheFire+rom
	call BreatheFire+rom
	call BreatheFire+rom
	call BreatheFire+rom
	call BreatheFire+rom
	call BreatheFire+rom
	call BreatheFire+rom
	call BreatheFire+rom
	call BreatheFire+rom
	call BreatheFire+rom
	call BreatheFire+rom
	call BreatheFire+rom
	call BreatheFire+rom
	launchtask AnimTask_pal_fade 0xa 0x5 PAL_DEF 0x1 0x9 0x0 0x1f  
	waitanimation 
	pokespritefromBG side_target
	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x3 0x7 0x0 0x043D
	endanimation

BreatheFire:
	launchtemplate 0x83E77A4 0x82 0x5 0x0 0x0 0x0 0x0 0x14  
	pause 0x2
	return


Fling:
Spoiler:
.org 0xAAAAAA
Fling:
	loadparticle 0x27f0
	loadparticle 0x2797 
	pokespritetoBG bank_target 
	leftbankBG_over_partnerBG bank_target  
	setblends 0x80c
	playsound2 0x25 0x3f 
	launchtemplate ITEM+rom 0x2 0x6 0x14 0xfff8 0xfff8 0xfff8 0x14 0xffe0  
	pause 0x13
	playsound2 0x7f 0x3f 
	launchtemplate 0x83E7C08 0x3 0x4 0xfff8 0xfff8 0x1 0x2  
	launchtask 0x8098B1D 0x2 0x5 0x1 0x3 0x0 0x2 0x1  
	waitanimation 
	pokespritefromBG bank_target 
	resetblends 
	endanimation

.align 2
ITEM: objtemplate 0x27f0 0x27f0 0x83ACA38 0x8231CF0 0x0 0x8231CFC 0x80B4495


Gear Grind:
Spoiler:
.org 0xAAAAAA
GearGrind:
	loadparticle 0x2797
	loadparticle 0x283D
	pokespritetoBG bank_target 
	setblends 0x80c
	playsound2 0x49 0xC0
	launchtemplate GEAR+rom 0x2 0x4 0x0 0x0 0x45 0x0
	pause 0x20
	launchtemplate GEAR+rom 0x2 0x4 0x0 0x0 0x45 0x0
	pause 0x18
	playsound2 0x7f 0x3f 
	launchtemplate 0x83E7C08 0x2 0x4 0x0 0x0 0x1 0x2
	pause 0x20
	playsound2 0x7f 0x3f 
	launchtemplate 0x83E7C08 0x2 0x4 0x0 0x0 0x1 0x2
	launchtask AnimTask_move_bank 0x2 0x5 bank_target 0x0003 0x0000 0x0006 0x0001  
	waitanimation 
	pokespritefromBG bank_target 
	resetblends 
	endanimation

.align 2
GEAR: objtemplate 0x283D 0x283D 0x83ACA38 0x8231CF0 0x0 0x83E7604 0x80B563D


Ice Fang:
Spoiler:
IceFang:
	loadparticle 0x279b 
	loadparticle 0x2797
	loadparticle 0x279D
	pokespritetoBG bank_target 
	setblends 0x80c 
	playsound2 0x9a 0x3f
	launchtask AnimTask_pal_fade 0xa 0x5 PAL_DEF 0x2 0x0 0x9 0x7f4c 
	launchtemplate 0x83E7930 0x2 0x6 0x0 0xffe0 0x0 0x0 0x333 0xa  
	launchtemplate 0x83E7930 0x2 0x6 0x0 0x20 0x4 0x0 0xfccd 0xa
	pause 0xA 
	launchtemplate 0x83E7C08 0x2 0x4 0x0 0x0 0x1 0x2
	call 0x81D540A @ice
	pause 0x4
	launchtask AnimTask_pal_fade 0xa 0x5 PAL_DEF 0x2 0x9 0x0 0x7f4c  
	launchtask AnimTask_move_bank 0x5 0x5 bank_target 0x0 0x4 0x7 0x1  
	waitanimation 
	pokespritefromBG bank_target 
	resetblends 
	pause 0x1 
	endanimation


Leech Life:
Spoiler:
*Can be inserted over the original
.org 0x1CF085
LeechLife:
	loadparticle 0x27d0
	loadparticle 0x27a3
	loadparticle 0x272f
	pokespritetoBG side_target
	leftopponentbankBG_over_partnerBG 0x1 
	setblends 0x80c
	pause 0x1
	playsound2 0x9A 0x3f 
	launchtemplate 0x83FEFBC 0x82 0x0  
	pause 0xa
	launchtask AnimTask_move_bank 0x3 0x5 bank_target 0x3 0x0 0xa 0x1  
	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x1 0x0 0x7 0x0
	call 0x81CEC44 
	waitanimation 
	pause 0xf 
	call 0x81D56C9 @HEALING_ANIM 
	waitanimation 
	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x1 0x7 0x0 0x0  
	waitanimation 
	pokespritefromBG side_target 
	resetblends 
	endanimation


Magma Storm:
Spoiler:
*Requires Mr. DS's patch
MagmaStorm:
	loadparticle 0x272d 
	loadbg1 0x1F
	waitfortransparentbg
	launchtask 0x80BB82D 0x5 0x4 0x1000 0x0 0x0 0xFFFF
	playsound2 0x8F 0x3f 
	launchtask AnimTask_move_bank 0x5 0x5 bank_target 0x0 0x2 0x2f 0x1  
	call 0x81C885F
	call 0x81C885F
	call 0x81C885F
	waitanimation
	unsetscrollingBG
	waitanimation
	endanimation


Retaliate
Spoiler:
Retaliate:
	loadparticle 0x279A @Cut
	pokespritetoBG side_target
	setblends 0x809
	launchtask 0x8077031 0x2 0x2 0x7128 0xa
	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x3 0x0 0x10 0x0
	waitanimation
	playsound2 0x79 0x3f 
	launchtemplate 0x83E3E48 0x2 0x1 0x0  
	launchtemplate 0x83E3E48 0x2 0x1 0x1
	pause 0x38
	playsound2 0x7f 0x3f
	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x3 0x10 0x10 0x43D
	waitanimation
	launchtask AnimTask_move_bank 0x2 0x5 bank_target 0x0 0x3 0xf 0x1  
	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x3 0x10 0x0 0x043D
	waitanimation
	pokespritefromBG side_target 
	resetblends
	endanimation


Roar of Time:
Spoiler:
.org 0xAAAAAA
RoarofTime:
	loadparticle 0x27A3
	loadparticle 0x27D6
	loadparticle 0x2839
	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x3 0x0 0x10 0x0
	pause 0x20
	pokespritetoBG side_attacker 
	setblends 0x80c
	soundcomplex 0x85 0xc0 0xd 0x3 
	call 0x81D170D
	waitanimation
	pokespritefromBG side_attacker 
	resetblends
	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x3 0x10 0x0 0x0
	waitanimation
	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x3 0x0 0x10 0xffff
	launchtask AnimTask_play_growling_cry 0x2 0x2 bank_attacker 0xff
	pause 0x20
	launchtask 0x8098CD1 0x2 0x5 0x1 0xa 0x0 0x14 0x1  
	playsound2 0xAA 0x3f 
	launchtemplate 0x83E3F94 0x3 0x4 0x0 0x0 0x1 0x1  
	pause 0x6 
	playsound2 0xAA 0x3f 
	launchtemplate BLUEBOMB+rom 0x3 0x4 0x18 0xffe8 0x1 0x1  
	pause 0x6 
	playsound2 0xAA 0x3f 
	launchtemplate 0x83E3F94 0x3 0x4 0xfff0 0x10 0x1 0x1  
	pause 0x6 
	playsound2 0xAA 0x3f 
	launchtemplate BLUEBOMB+rom 0x3 0x4 0xffe8 0xfff4 0x1 0x1  
	pause 0x6 
	playsound2 0xAA 0x3f 
	launchtemplate 0x83E3F94 0x3 0x4 0x10 0x10 0x1 0x1
	pause 0x6
	playsound2 0xAA 0x3f 
	launchtemplate BLUEBOMB+rom 0x3 0x4 0xffe8 0x18 0x1 0x1  
	waitanimation 
	launchtemplate 0x83E7B24 0x2 0x5 0x1 0x3 0x10 0x0 0xffff  
	waitanimation 
	endanimation
.align 2
BLUEBOMB: objtemplate 0x27D6 0x2839 0x83AC9D8 0x83E3F90 0x0 0x8231CFC 0x8075D9D


Shadow Force:
Spoiler:
.org 0xAAAAAA
SHADOW_FORCE_ANIM:
	loadparticle 0x27A6 
	loadparticle 0x2797
	launchtemplate 0x83E7B24 0x02 0x05 0x1 0x0 0x0 0xF 0xFFFF
	choosetwoturnanim SHADOW_FORCE_PREP+rom SHADOW_FORCE_ATTACK+rom 
SHADOW_FORCE_WAIT_END:
	waitanimation 
	endanimation 
SHADOW_FORCE_PREP:
	playsound2 0xB7 0xc0 
	makebankinvisible 0x0
	pause 0x5
	makebankvisible 0x0
	pause 0x5
	makebankinvisible 0x0
	pause 0x5
	makebankvisible 0x0
	pause 0x5
	makebankinvisible 0x0
	pause 0x5
	makebankvisible 0x0
	pause 0x5
	makebankinvisible 0x0
	pause 0x5
	makebankvisible 0x0
	pause 0x5
	makebankinvisible 0x0
	launchtemplate 0x83E7B24 0x02 0x05 0x1 0x0 0xF 0x0 0xFFFF
	goto SHADOW_FORCE_WAIT_END+rom
SHADOW_FORCE_ATTACK:
	pokespritetoBG bank_target
	setblends 0x80c
	soundcomplex 0x86 0xc0 0x1 0x5
	pause 0x10
					           @X   Y
	launchtemplate PURPLEHIT+rom 0x2 0x4 0x0 0x0 0x1 0x2
	launchtemplate PURPLEHIT+rom 0x2 0x4 0xA 0x0 0x1 0x2
	launchtemplate PURPLEHIT+rom 0x2 0x4 0x0 0xA 0x1 0x2
	launchtemplate PURPLEHIT+rom 0x2 0x4 0xA 0xA 0x1 0x2
	pause 0x10
	makebankvisible 0x0
	launchtask AnimTask_move_bank 0x2 0x5 bank_target 0x0003 0x0000 0x0006 0x0001  
	waitanimation
	pokespritefromBG bank_target 
	resetblends
	launchtemplate 0x83E7B24 0x02 0x05 0x1 0x0 0xF 0x0 0xFFFF
    	goto SHADOW_FORCE_WAIT_END+rom

.align 2
PURPLEHIT: objtemplate 0x2797 0x27A6 0x83ACB58 0x8231CF0 0x0 0x83E7BF8 0x80BA561


Spotlight:
Spoiler:
Spotlight:
	loadparticle 0x27f3 
	loadparticle 0x2807 
	launchtask 0x80DEDD9 0x2 0x0  
	launchtask 0x80BAB39 0x2 0x5 0xf8 0x3 0x0 0xa 0x0
	waitanimation
	playsound2 0x5C 0xC0
	launchtemplate 0x83FF00C 0x82 0x2 0x0 0xfff8  
	pause 0x40
	launchtask  0x80BAB39 0x2 0x5 0xf8 0x3 0xa 0x0 0x1  
	waitanimation 
	launchtask 0x80DEE79 0x2 0x0  
	endanimation


Thunder Fang:
Spoiler:
ThunderFang:
	loadparticle 0x279b 
	loadparticle 0x2797
	loadparticle 0x271b
	pokespritetoBG bank_target 
	setblends 0x80c 
	playsound2 0x9a 0x3f
	launchtask AnimTask_pal_fade 0xa 0x5 PAL_DEF 0x2 0x0 0x9 0x07FE 
	launchtemplate 0x83E7930 0x2 0x6 0x0 0xffe0 0x0 0x0 0x333 0xa  
	launchtemplate 0x83E7930 0x2 0x6 0x0 0x20 0x4 0x0 0xfccd 0xa 
	launchtemplate 0x83E6088 0x82 0x4 0x5 0x0 0x5 0x0
	launchtemplate 0x83E6088 0x82 0x4 0xfffb 0xa 0x5 0x1
	pause 0xA 
	launchtemplate 0x83E7C08 0x2 0x4 0x0 0x0 0x1 0x2  
	playsound2 0x70 0x3f 
	launchtemplate 0x83E6088 0x82 0x4 0xf 0x14 0x5 0x2  
	pause 0x1 
	launchtemplate 0x83E6088 0x82 0x4 0xfff1 0xfff6 0x5 0x0  
	pause 0x1 
	launchtemplate 0x83E6088 0x82 0x4 0x19 0x0 0x5 0x1  
	pause 0x1 
	launchtemplate 0x83E6088 0x82 0x4 0xfff8 0x8 0x5 0x2  
	pause 0x1 
	launchtemplate 0x83E6088 0x82 0x4 0x2 0xfff8 0x5 0x0  
	pause 0x1 
	launchtemplate 0x83E6088 0x82 0x4 0xffec 0xf 0x5 0x1
	launchtask AnimTask_pal_fade 0xa 0x5 PAL_DEF 0x2 0x9 0x0 0x07FE	
	launchtask AnimTask_move_bank 0x5 0x5 bank_target 0x0 0x4 0x7 0x1  
	waitanimation 
	pokespritefromBG bank_target 
	resetblends 
	pause 0x1 
	endanimation


Toxic Thread:
Spoiler:
.org 0xAAAAAA
ToxicThread:
	loadparticle 0x27a6
	loadparticle 0x27c3 
	loadparticle 0x27c4 
	pokespritetoBG side_target 
	pause 0x0 
	launchtemplate 0x83E7B24 0x5 0x5 0x1 0x2 0x0 0x9 0x0  
	waitanimation 
	soundcomplex 0x7A 0xc0 0x9 0x6 
	call STRINGSHOT_LOAD_PARTICLE+rom 
	call STRINGSHOT_LOAD_PARTICLE+rom 
	call STRINGSHOT_LOAD_PARTICLE+rom 
	call STRINGSHOT_LOAD_PARTICLE+rom 
	call STRINGSHOT_LOAD_PARTICLE+rom 
	call STRINGSHOT_LOAD_PARTICLE+rom 
	call STRINGSHOT_LOAD_PARTICLE+rom 
	call STRINGSHOT_LOAD_PARTICLE+rom 
	call STRINGSHOT_LOAD_PARTICLE+rom 
	call STRINGSHOT_LOAD_PARTICLE+rom 
	call STRINGSHOT_LOAD_PARTICLE+rom 
	call STRINGSHOT_LOAD_PARTICLE+rom 
	call STRINGSHOT_LOAD_PARTICLE+rom 
	call STRINGSHOT_LOAD_PARTICLE+rom 
	call STRINGSHOT_LOAD_PARTICLE+rom 
	call STRINGSHOT_LOAD_PARTICLE+rom 
	call STRINGSHOT_LOAD_PARTICLE+rom 
	call STRINGSHOT_LOAD_PARTICLE+rom
	waitanimation 
	playsound2 0x7B 0x3f 
	launchtemplate String2+rom 0x82 0x2 0x0 0xa  
	pause 0x4 
	launchtemplate String2+rom 0x82 0x2 0x0 0xfffe  
	pause 0x4 
	launchtemplate String2+rom 0x82 0x2 0x0 0x16  
	waitanimation 
	pokespritefromBG side_target 
	pause 0x1 
	waitanimation 
	launchtemplate 0x83E7B24 0x5 0x5 0x1 0x2 0x9 0x0 0x0  
	endanimation 
STRINGSHOT_LOAD_PARTICLE:
	launchtemplate String1+rom 0x82 0x5 0x14 0x0 0x200 0x14 0x1  
	pause 0x1 
	return

.align 2
String1: objtemplate 0x27C4 0x27A6 0x83AC9C8 0x8231CF0 0x0 0x8231CFC 0x80B4129
String2: objtemplate 0x27C3 0x27A6 0x83ACA00 0x8231CF0 0x0 0x8231CFC 0x80B41F9
Pokemon Unbound

Prof. Leon Dias

Let your memes be dreams

Male
A deep underground lab somewhere...
Seen September 3rd, 2019
Posted July 12th, 2019
94 posts
6.7 Years
This lists moves from the first three generations whose effects have been changed or updated in Generations 4, 5 and 6.

Whirlwind		no longer works on same/higher levelled wild PKMN
			ignores accuracy and evasion
			bypasses protect and detect
Bind			inflicts 1/8 of max. HP*
Stomp		x2 base power & ignores accuracy and evasion if target has used Minimize**
Jump Kick		Crash damage = 1/2 of user's max. HP, rounded down***
Thrash		disrupted by:	missing
						sleeping
						paralysis
						freeze
						flinching
						protecting target
						immune target
			if disrupted on final turn of Thrash, confusion still occurs****
Roar			ignores accuracy and evasion
			bypasses protect and detect
Supersonic		bypasses sub
Disable		always lasts 4 turns
			reflected by Magic Coat++
Acid			10% chance to drop Sp.D by 1 stage
Growth		raises Atk and Sp.A stats by 1 stage
			raises Atk and Sp.A stats by 2 stages in Sun
Surf			hits all Pokémon on the field except the user
Blizzard		ignores accuracy and evasion in Hail
String Shot	drops Speed by 2 stages
Thunder		ignores accuracy and evasion in Rain
			lowered accuracy in Sun
Dig			underground wild PKMN canot be captured
Toxic			ignores accuracy and evasion if used by a Poison-type
Rage			raging users get Attack stat boosts every time they get hit
Mimic		mimicked moves have max PP, not 5 PP
Focus Energy	increases crit ratio by 2 stages, not 1
Bide			only endures 2 turns
			hits Ghost-types, as well semi-invulnerable PKMN in Dive, Bounce or Shadow Force
			broken by sleep
Selfdestruct	user faints before dealing damage +
			no longer halves target's Def +
Waterfall		20% flinch chance
Sky Attack		displays "<user> became cloaked in a harsh light!" instead of "<user> is glowing!" on turn 1
Transform		copies shininess
			fails on subs
Conversion		can be stolen by Snatch
			can be used on Curse (because Curse is Ghost-type)
			changes the user's current type to match the type of the first of the user's moves
Substitute		multi-strike moves continue after breaking sub
			blocks intimidate
			blocks transform
			doesn't block sound-based moves
Struggle		ignores accuracy & evasion
			user takes 1/4 max. HP as recoil
Sketch		can copy Metronome and Transform
Spider Web	no longer traps Ghost-types+++
Thief			doesn't permanently steal a Trainer's Pokémon's item
			items can be stolen back
Flail			base damage = (48 * CurrentHP) / MaxHP
Conversion2	changes user's type to resist target's last move, including non-damaging moves
Spite			reflected by Magic Coat
			always deducts 4 PP
Destiny Bond	target faints after the user
Sandstorm		boosts Rock-type Pokémon's Sp.D by 50%
Sleep Talk		can use PP-less moves
Heal Bell		bypasses sub
			bypasses Soundproof
Encore		lasts 3 turns
			reflected by Magic Coat, but then fails
Sweet Scent	lowers evasion by 2 stages
Hidden Power	base power of 60
Crunch		20% chance to lower Def by 1 stage, not Sp.D
Future Sight	now does Psychic-type damage
			uses Sp.D stat of receiving Pokémon, not original target
Beat Up		base power = (party member's base Attack) / 10 + 5
			receives STAB from Dark-type users
Uproar		lasts exactly 3 turns
Stockpile		raises user's Def and Sp.D stat by 1 stage
Spit Up		removes Stockpile boosts
Swallow		removes Stockpile boosts
Torment		activates the turn it is used
			reflected by Magic Coat
Facade		ignores Burn Attack cut
Focus Punch	charging turn has +6 priority
Nature Power	calls different moves: http://bulbapedia.bulbagarden.net/wiki/Nature_Power_(move)#Generation_VI
Charge		boosts Sp.D by one stat
Taunt		lasts exactly 3 turns
			reflected by Magic Coat
Trick			no longer permanently switches a Trainer's Pokémon's items
Wish			heals for half of the user's max. HP, not the recipient's
			affected by Snatch
Ingrain		Ghost-types who have ingrained can switch
Recycle		affected by Snatch
Magic Coat		reflects Teeter Dance, Taunt, Torment
Brick Break		no longer removes screens if target is Ghost-type
Knock Off		deals 50% more damage if target has item
Skill Swap		switch-in abilities like intimidate activate after being swapped
Secret Power	different effects: http://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)#Generation_VI
Dive			underwater wild PKMN canot be captured
Camouflage	more types for different terrain: http://bulbapedia.bulbagarden.net/wiki/Camouflage_(move)#Generation_VI
Tail Glow		raises Sp.A by 3 stages
Mud Sport		active for exactly 5 turns++++
Poison Fang	50% chance to badly poison target
Aromatherapy	lists PKMN that are healed
Covet		no longer permanently steals a Trainer's Pokémon's items
Doom Desire	now does Steel-type damage
			uses Sp.D stat of receiving Pokémon, not original target

*applies to Bind, Wrap, Fire Spin, Clamp, Whirlpool, Sand Tomb
**applies to Stomp, Body Slam
***applies to Hi Jump Kick
****applies to Thrash, Outrage, Petal Dance
+applies to Selfdestruct, Explosion
++applies to Disable, Spite, Spkies, Foresight, Torment, Taunt, Odor Sleuth
+++applies to Spider Web, Block, Mean Look
++++applies to Mud Sport, Water Sport
This link may also be useful, as it lists all of the other changes that have been done to moves, such as base power and accuracy:
http://bulbapedia.bulbagarden.net/wiki/List_of_modified_moves
I decided to write up a document showing the changed effects of Gen 1-3 moves in greater detail, as the Bulbapedia link leaves out a lot of changes and some things have since been updated as of this post. Not trying to one-up you, just thought I would share a contribution. You can find the document here if you would like to take a look: https://www.pokecommunity.com/showpost.php?p=9834136&postcount=1
Check Out My Projects:

& My Ultimate Fire Red Base
https://www.pokecommunity.com/showthread.php?t=409672

Discord to join my Wish/Rombase server for updates, questions, and info:
https://discord.gg/N46NeqS

BluRose

blu rass

Age 18
Male
rip x
Seen 2 Weeks Ago
Posted 2 Weeks Ago
764 posts
5.5 Years
Hey people, maybe a dumb question...

I want to make sing affect all pokemon except user, this doesn't work it still targets a single pokemon even when I change the target...

I tried making it hit both foe's pokemon, this also didn't work.

Anyone have this problem? Or am I just missing some easy step.
okay
so this works as a bitfield
so you're gonna have some byte
and you're gonna take the value that the byte is set to when it hits your partner
and you're gonna take the value that the byte is set to when it hits both foes
and you're going to squeeze them together; combine their bitfields from binary)
say that hitting your partner has value 20 (in binary, 00100000)
and hitting both foes has value 80 (in binary, 10000000)
so hitting everyone on field would be 10100000 (in hex, A0)

tl;dr
just add the two together and you get your resulting value~
am i cool yet

pikachux2

Never Evolve

Male
USA
Seen May 5th, 2019
Posted May 3rd, 2019
116 posts
9.6 Years
okay
so this works as a bitfield
so you're gonna have some byte
and you're gonna take the value that the byte is set to when it hits your partner
and you're gonna take the value that the byte is set to when it hits both foes
and you're going to squeeze them together; combine their bitfields from binary)
say that hitting your partner has value 20 (in binary, 00100000)
and hitting both foes has value 80 (in binary, 10000000)
so hitting everyone on field would be 10100000 (in hex, A0)

tl;dr
just add the two together and you get your resulting value~
EDIT: The target byte is the same as other moves that hit two pokemon's target byte, but it still will not function properly..



I broke up the hex for a few moves here(attached a txt file).. Notice I changed tackle to hit all pokemon except the user (as a test).
In game Tackle will say its targeting all users but it instead only targets one, whereas earthquake surf and explosion function
properly. Has anyone else has this problem? This code was taken from in game.


EDIT AGAIN!!: So it seems the only way a move can function when it targets both foes and your partner is if it has some effect... I'm sure if this is true, most of you already know it... Can someone confirm this?
FINAL:: Use effect 147 for moves that hit both foes and your partner

How could I theoretically merge the effects of putting the target to sleep while the move also hits both foes and my partner? How could I interpret the attack effect table?

Lance Koijer 2.0

Lance Koijer

Male
Criscanto Town
Seen 3 Hours Ago
Posted 3 Days Ago
74 posts
1.5 Years
You'll need to apply this stuff, credit to Doesnt.
Also huge props to kleenexfeu, he helped me through this and is awesome.

RELIC SONG
Spoiler:
Battle script.
Spoiler:
AAAAAA is a piece of ASM related, it's next.
#include moves.bsh
#dynamic 0x800000
#org @start
jumpifhalfword B_!= 0x2023D4A 0x(index of your relic song) 0x81D6A60
setbyte 0x02023E85 0x1
attackcanceler
accuracycheck 0x81D695E 0x0
attackstring
ppreduce
calculatedamage
attackanimation
waitanimation
missmessage
cmd5c BANK_TARGET
waitstate
graphicalhpupdate BANK_TARGET
datahpupdate BANK_TARGET
critmessage
waitmessage DELAY_1SECOND
resultmessage
waitmessage DELAY_1SECOND
seteffectwithchancetarget
faintpokemon BANK_TARGET 0x0 0x8000000
callasm 0x(AAAAAA + 1)
jumpifbyte 0x1 0x020370D4 0x1 @doanimation
setbyte 0x02023FD8 0x0
cmd49 0x0 0x0
end
#org @doanimation
setbyte 0x020370D4 0x1
playanimation 0x1 0x1C 0x0 //the 0x1C is discussed in a later section, go to 'how things work' for more info
setbyte 0x02023FD8 0x0
cmd49 0x0 0x0
end

Actual forme change ASM (AAAAAA)
Spoiler:
.thumb
@in this example, pirouette form is 0xF1, and aria is 0xF0
check_pkmn_id:
 push {lr}
 ldr r0, attacking_bank
 ldrb r1, [r0] @which mon did the attack
 ldr r0, ram_pointer
 ldr r0, [r0]
 add r0, r0, #0x60
 cmp r1, #0x0
 beq set_player_singles
 cmp r1, #0x1
 beq set_enemy_singles
 cmp r1, #0x2
 beq set_player_doubles
 cmp r1, #0x3
 beq set_enemy_doubles
get_battle_struct:
 ldr r0, attacking_bank
 ldrb r1, [r0] @which mon did the attack
 mov r0, #0x58 @length of battle structs
 mul r1, r0, r1 @multiplies length of battle structs with which mon did the attack to get the the battle structure i'm working with
 ldr r0, battle_struct
 add r0, r1, r0 @r0 is the battle struct i'm working with
check_if_aria:
 add r2, r2, #0x20
 ldrh r1, [r2]
 cmp r1, #0xF0
 bne end
set_pirouette_forme:
 mov r1, #0xF1
 strh r1, [r0] @species in battle struct is now the correct thing
 strh r1, [r2] @species in party is now pirouette's
 sub r2, r2, #0x20 @makes r2 go to the beginning of the party again
 push {r0}
 mov r0, r2
 mov r1, r2
 push {r2}
 ldr r3, calc_stats
 bl jump @stats should be calculated
 pop {r2}
 pop {r0} @r2 is the beginning of the party slot, r0 is the beginning of the battle struct
update_type:
 add r0, #0x22
 mov r1, #0x1
 strb r1, [r0] @second type in battle struct is now fighting
update_battl_struct:
 sub r0, r0, #0x20
 add r2, r2, #0x5A @r0 is at the attack stat, r2 is at the party attack stat
 mov r3, #0x0
stat_loop:
 ldrh r1, [r2]
 strh r1, [r0]
 add r0, r0, #0x2
 add r2, r2, #0x2
 add r3, r3, #0x1
 cmp r3, #0x4
 bne stat_loop
end:
 pop {pc}
jump:
 mov pc, r3
set_player_singles:
 ldrb r0, [r0]
 lsr r0, #0x4 @only one digit is left
 mov r1, #0x64 @length of party entry
 ldr r2, player_party
 mul r0, r0, r1
 add r2, r0, r2 @gets r2 to the correct slot
 b get_battle_struct
set_enemy_singles:
 add r0, r0, #0x3 @gets to party order for enemy
 ldrb r0, [r0]
 lsr r0, #0x4
 mov r1, #0x64
 ldr r2, enemy_party
 mul r0, r0, r1
 add r2, r0, r2
 b get_battle_struct
set_player_doubles:
 ldrb r0, [r0]
 lsl r0, #0x1C
 lsr r0, #0x1C @gets the second pokemon's location
 mov r1, #0x64
 ldr r2, player_party
 mul r0, r0, r1
 add r2, r0, r2
 b get_battle_struct
set_enemy_doubles:
 add r0, r0, #0x3
 ldrb r0, [r0]
 lsl r0, #0x1C
 lsr r0, #0x1C 
 mov r1, #0x64
 ldr r2, enemy_party
 mul r0, r0, r1
 add r2, r0, r2
 b get_battle_struct
.align 2
battle_struct: .word 0x02023BE4
player_party: .word 0x02024284
enemy_party: .word 0x0202402C
order_pointer: .word 0x02023FE8
attacking_bank: .word 0x02023D6B
calc_stats: .word 0x0803E47C
ram_pointer: .word 0x02023FE8

Revert (BBBBBB)
Spoiler:
.thumb @the hooks decide whether or not to use the enemy's party table or
.align 2 @the player's, that's why they're not here.
start:
 push {lr}
 add r0, r0, #0x20
loop:
 ldrh r1, [r0]
 cmp r1, #0xF1 @compares the species to pirouette forme
 beq push_hp @if the pokemon is pirouette forme, reverts the pokemon
 add r0, r0, #0x64 @goes to the next slot
 add r2, r2, #0x1 @sets counter to one more
 cmp r2, #0x5 @checks if whole party has been scanned
 bne loop @if it hasn't happened 6 times it'll loop again
skip:
 pop {pc} @ends if nothing in the party is pirouette forme
push_hp:
 add r0, r0, #0x36
 ldrh r3, [r0]
 mov r4, r0
 push {r3}
 push {r4}
revert:
 mov r1, #0xF0
 strh r1, [r0] @makes species aria forme
 sub r0, r0, #0x56 @makes r0 the beginning of the party
 mov r1, r0 @r0 and r1 should be the same
 ldr r2, calc_stats
 bl jump
fix_hp:
 pop {r4}
 pop {r3} @r3 is the current hp, r4 is the offset of that
 strh r3, [r4]
continue:
 pop {pc} @ends
jump:
 mov pc, r2 @executes calc_stats
.align 2
calc_stats: .word 0x0803E47C

Hook just about everwhere.
Spoiler:
The switch check (credit to MrDollSteak for his Regenerator code)
.text @00 48 00 47 XX+1 XX XX 08 00 00 at 02CCDC
.align 2
.thumb
.thumb_func
.global regenerator
check_active:
 cmp r0, #0x1
 beq set_enemy
 cmp r0, #0x3
 beq set_enemy
 push {r0-r4}
 ldr r0, player_party
revert:
 ldr r1, revert_to_aria
 bl jump_with_r1
 ldr r0, ram_loc
 mov r1, #0x0
 strh r1, [r0]
 pop {r0-r4}
AbilityBuffer:
 add r0, r1, r3
 add r0, #0x20
 ldrb r0, [r0]
RegeneratorCheck:
 cmp r0, #0x91
 beq Regenerator
NaturalCureCheck:
 cmp r0, #0x1E
 bne NoAbility
NaturalCure:
 ldr r0, .Return
 bx r0
NoAbility:
 ldr r0, .Return2
 bx r0
Regenerator:
GetHP:
 add r3, #0x28
 add r3, r1, r3
 ldrh r0, [r3, #0x4]
 mov r1, #0x20
 mul r0, r1
 mov r1, #0x60
 push {r3}
 bl Divide
 pop {r3}
 ldrh r1, [r3]
 add r0, r0, r1
CheckHP:
 ldrh r2, [r3, #0x4]
 cmp r0, r2
 ble StoreHP
MaxHP:
 mov r0, r2
StoreHP:
 strh r0, [r3]
BufferHealthChange:
 ldr r2, .CommandTable
 ldrb r1, [r4]
 ldr r0, .RamLoc
 ldr r0, [r0]
 add r0, r1, r0
 add r0, #0x58
 ldrb r0, [r0]
 lsl r0, r0, #0x2
 add r0, r0, r2
 ldrb r2, [r0]
 mov r0, r1
 mul r0, r6
 add r0, r0, r3
 str r0, [sp]
 mov r0, #0x0
HealthChangeIndex:
 mov r1, #0x2A
Success:
 ldr r3, .Return3
 bx r3
Divide:
 ldr r3, .DivideLoc
 bx r3
set_enemy:
 push {r0-r4}
 ldr r0, enemy_party
 b revert
jump_with_r1:
 mov pc, r1
.align 2
.Return: .word 0x0802CCE7
.Return2: .word 0x0802CD1B
.CommandTable: .word 0x0825E45C
.RamLoc: .word 0x02023FE8
.Return3: .word 0x0802CD0F
.DivideLoc: .word 0x081E4019
revert_to_aria: .word 0x08BBBBBB
player_party: .word 0x02024284
enemy_party: .word 0x0202402C
ram_loc: .word 0x020370D4
Faint hook
.thumb @00 4B 9F 46 XX XX XX 08 at 0x326C4
.align 2
faint_hook:
 add r0, r2
 push {r0-r3}
 ldr r0, player_party
 ldr r3, revert_to_aria
 bl call_via_r3
 ldr r0, ram_loc
 mov r1, #0x0
 strh r1, [r0]
 pop {r0-r3}
continue:
 ldr r3, =(0x08035244 + 1)
 bl call_via_r3
 mov r1, #0x40
 ldr r3, =(0x080326CC + 1)
call_via_r3:
 bx r3
.align 2
revert_to_aria: .word 0x08BBBBBB + 1
player_party: .word 0x02024284
ram_loc: .word 0x020370D4
End battle hook
.thumb @00 48 00 47 XX+1 XX XX 08 at 0x159DC
start:
 push {r0-r4}
 ldr r0, player_party
 ldr r1, revert
 bl jump
 ldr r0, ram_loc
 mov r1, #0x0
 strh r1, [r0]
 pop {r0-r4}
 ldr r1, =(0x03004F84)
 ldr r0, =(0x08015A31)
 str r0, [r1]
 ldr r1, =(0x0300537C)
 ldr r0, =(0x080159E5)
 bx r0
jump:
 mov pc, r1
.align 2
revert: .word 0x08BBBBBB
ram_loc: .word 0x020370D4
player_party: .word 0x02024284

For you more attentive people out there, here are the things that work behind the scenes to make this work.
Spoiler:
Fixing the weird fading palette thing from Transform
.thumb @00 48 87 46 XX XX XX 08 at 0x34FFC
start:
 ldr r0, current_move
 ldrh r0, [r0]
 cmp r0, #0x90 @compares move to Tranform
 bne nopalfade
continue:
 ldr r3, thing
 mov r0, r10
 mov r1, #0x10
 mov r2, #0x6
 ldr r4, palfade
 bl jump
 ldr r1, return
 mov pc, r1
nopalfade:
 ldr r0, return2
 mov pc, r0
jump:
 mov pc, r4
.align 2
current_move: .word 0x02023D4A
thing:  .word 0x7FFF
palfade: .word 0x08045274
return:  .word 0x08035008
return2: .word 0x08035036
Here's the reason that we're even talking about the 0x1C animation and Transform.
Spoiler:
There is a pointer at 0x34150. This pointer is the pointer to the playanimation table. Go to where that's pointing to, and copy 0x70 bytes and place that in free space. Right after that, write 11 28 1D 08, which is the pointer to the Transform animation.
That's animation number 0x1C. If you know you've expanded this in the past(I think Mega Evolution by Touched does this), then you'll add 4 bytes to the amount you're copying, and add 1 to the 1C(or more if you've done it more times).

Here's how to make this compatible with mega-evolutions if you've already added them(apply mega evolutions first if at all)
Spoiler:
Go to 0x326C8 in a hex editor, and you'll see a pointer. Add 3 to that pointer, and then follow the new pointer in a dissassembler. VBA has one built in. There should be a bl (some random offset). We'll call that YYYYYY.
Fixing the faint hook; after the first bl call_via_r3, write
ldr r0, player_party
ldr r3, revert_mega
bl call_via_r3
Go to the .align 2 at the bottom and add a new line. It'll be revert_mega: .word 0x08YYYYYY + 1
Fixing the exit battle hook; after bl jump, write
ldr r0, player_party
ldr r1, revert_mega
bl jump
Go to the .align 2 at the bottom and add a new line. It'll be revert_mega: .word 0x08YYYYYY
You do not need to add the + 1 this time.


~EDIT~ now completely bug free yay
This is indeed great... but it only checks Pokmon from 0x0 to 0xFF

I made the compare part like this
mov r2, #0xFF
lsl r2, r2, #0x2
add r2, r2, #0
cmp r1, r2

but that didn't work...

what if the Pokmon's index number is 0x2CF?

It would be nice if it supports Pokemon above 0xFF
Male
Seen 5 Hours Ago
Posted August 2nd, 2019
30 posts
2.7 Years
Some people (like me) may not have known that Volt Tackle has another effect besides recoil past generation IV. From Diamond/Pearl onward, Volt Tackle has a 10% chance to paralyze.

To get that in FireRed, replace Battle Scrip 198 with this:
Spoiler:
#dynamic 0x180000
#freespacebyte 0xFF

#org @CheckMove
setbyte 0x2023E85 0xE6
jumpifhalfword 0x0 0x2023D4A 0x158 @VoltTackle
goto 0x1D6900

#org @VoltTackle
attackcanceler
accuracycheck 0x81D695E 0x0
attackstring
ppreduce
calculatedamage
attackanimation
waitanimation
missmessage
cmd5c 0x0
waitstate
graphicalhpupdate 0x0
datahpupdate 0x0
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
seteffectwithchancetarget
jumpiftype 0x0 0xD 0x81D694E
setbyte 0x2023E85 0x5
seteffectwithchancetarget
faintpokemon 0x0 0x0 0x0
goto 0x81D694E


The above routine takes into account whether the opponent is Electric Type, and if they are, bypasses the paralysis chance. You can do this with other attacks too by using these three scripts:

Replace Battle Script 6 with this:
Spoiler:
#dynamic 0x180000
#freespacebyte 0xFF

#org @TypeCheck
jumpiftype 0x0 0xD 0x1D6900
goto 0x81D6A6B

This just checks the Type of the opponent, and if they are an Electric Type, just goes straight to the damage calculation script.

Replace Battle Script 152 with this:
Spoiler:
#dynamic 0x170000
#freespacebyte 0xFF

#org @Main
jumpiftype 0x0 0xD 0x81D6926
setbyte 0x2023E85 0x5
goto 0x81D6926


Replace Battle Script 67 with this:
Spoiler:
#dynamic 0x180000
#freespacebyte 0xFF

#org @Start
attackcanceler
attackstring
ppreduce
jumpifhalfword 0x0 0x2023D4A 0x4E @StunSpore
jumpiftype 0x0 0xD 0x81D7E04
goto 0x81D71E5

#org @StunSpore
jumpiftype 0x0 0xC 0x81D7E04
jumpiftype 0x0 0xD 0x81D7E04
goto 0x81D71E5

This also includes the check for Stun Spore. If the opponent is a Grass Type, it will have no effect.

Of course, I have checks for the other spore moves.

Replace Battle Script 66 with this:
Spoiler:
#dynamic 0x180000
#freespacebyte 0xFF

#org @Start
attackcanceler
attackstring
ppreduce
jumpifhalfword 0x0 0x2023D4A 0x4D @CheckType
goto 0x81D7184

#org @CheckType
jumpiftype 0x0 0xC 0x81D7E04
goto 0x81D7184


Replace Battle Script 1 with this:
Spoiler:
#dynamic 0x180000
#freespacebyte 0xFF

#org @Start
attackcanceler
attackstring
ppreduce
jumpifhalfword 0x0 0x2023D4A 0x4F @CheckType
jumpifhalfword 0x0 0x2023D4A 0x93 @CheckType
goto 0x81D6970

#org @CheckType
jumpiftype 0x0 0xC 0x81D7E04
goto 0x81D6970


I also have a script for "100% Accurate When Used by a Poison Type" Toxic for FireRed (there was one for Emerald but not for FireRed).

Replace Battle Script 33 with this:
Spoiler:
#dynamic 0x180000
#freespacebyte 0xFF

#org @Toxic
jumpiftype 0x1 0x3 @AccuracyBypass
goto 0x81D6DE0

#org @AccuracyBypass
attackcanceler
jumpifspecialstatusflag 0x0 0x400C0 0x0 0x1D695E
attackstring
ppreduce
jumpifability 0x0 0x11 0x81D6E4F
jumpifsecondarystatus 0x0 0x1000000 0x81D7DF2
jumpifstatus 0x0 0x8 0x81D6E41
jumpifstatus 0x0 0x80 0x81D6E41
jumpifstatus 0x0 0xFF 0x81D7DF2
jumpiftype 0x0 0x3 0x81D7E04
jumpiftype 0x0 0x8 0x81D7E04
goto 0x81D6E27


Last but not least, in the current games, Ghost Types are no longer affected by trapping moves like Mean Look or by abilities like Shadow Tag. I haven't updated the abilities yet, but if you want Mean Look (and any move that uses its script) to not affect Ghost Types...

Replace Battle Script 106 with this:
Spoiler:
#dynamic 0x180000
#freespaceyte 0xFF

#org @start
attackcanceler
attackstring
ppreduce
jumpiftype 0x0 0x7 0x81D7E04
goto 0x81D76D7


Whew! That was a lot! I'm not sure if this stuff is already on here, but I wasn't able to find it anywhere. Hopefully at least one of these things haven't been posted yet haha.

this only works for FR?
Advertiser Content