summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGriffinR <griffin.g.richards@gmail.com>2021-10-19 08:09:17 -0400
committerGitHub <noreply@github.com>2021-10-19 08:09:17 -0400
commit934a7e7a5d2074e9f80294ac8f538a2b038061b1 (patch)
tree0e2859b1814453bba70a514b3cee23e776a6a9f9
parent164590e37d67a385bf6479aafcbe5b351891bc0b (diff)
parente1900efe1ead0e3344ca95a327b453617c807b6a (diff)
Merge pull request #1516 from GriffinRichards/doc-miscbattle
Miscellaneous battle documentation
-rw-r--r--.gitignore1
-rw-r--r--asm/macros/battle_anim_script.inc92
-rw-r--r--asm/macros/battle_script.inc441
-rw-r--r--data/battle_anim_scripts.s182
-rw-r--r--data/battle_scripts_1.s193
-rw-r--r--graphics/battle_anims/unused_water.bin (renamed from graphics/unknown/unknown_593FFC.bin)bin4096 -> 4096 bytes
-rw-r--r--graphics/battle_anims/unused_water_gfx.png (renamed from graphics/unknown/unknown_593C80.png)bin286 -> 286 bytes
-rw-r--r--graphics/battle_interface/level_up_banner.png (renamed from graphics/battle_interface/unk_battlebox.png)bin174 -> 174 bytes
-rw-r--r--include/battle.h79
-rw-r--r--include/battle_anim.h8
-rw-r--r--include/battle_arena.h1
-rw-r--r--include/battle_controllers.h48
-rw-r--r--include/battle_gfx_sfx_util.h1
-rw-r--r--include/battle_main.h14
-rw-r--r--include/battle_pyramid_bag.h1
-rw-r--r--include/battle_script_commands.h6
-rw-r--r--include/battle_transition.h107
-rw-r--r--include/battle_util.h58
-rw-r--r--include/constants/battle.h52
-rw-r--r--include/constants/battle_anim.h5
-rw-r--r--include/constants/battle_script_commands.h79
-rw-r--r--include/contest.h2
-rw-r--r--include/gym_leader_rematch.h6
-rw-r--r--include/pokemon.h13
-rw-r--r--include/recorded_battle.h12
-rw-r--r--src/battle_ai_script_commands.c2
-rw-r--r--src/battle_ai_switch_items.c18
-rw-r--r--src/battle_anim.c2216
-rwxr-xr-xsrc/battle_anim_effects_2.c8
-rwxr-xr-xsrc/battle_anim_effects_3.c4
-rw-r--r--src/battle_anim_ice.c4
-rw-r--r--src/battle_anim_mons.c75
-rw-r--r--src/battle_anim_rock.c2
-rw-r--r--src/battle_anim_utility_funcs.c8
-rw-r--r--src/battle_anim_water.c7
-rw-r--r--src/battle_arena.c23
-rw-r--r--src/battle_bg.c179
-rw-r--r--src/battle_controller_link_opponent.c9
-rw-r--r--src/battle_controller_link_partner.c7
-rw-r--r--src/battle_controller_opponent.c31
-rw-r--r--src/battle_controller_player.c97
-rw-r--r--src/battle_controller_player_partner.c17
-rw-r--r--src/battle_controller_recorded_opponent.c17
-rw-r--r--src/battle_controller_recorded_player.c19
-rw-r--r--src/battle_controller_safari.c19
-rw-r--r--src/battle_controller_wally.c22
-rw-r--r--src/battle_controllers.c48
-rw-r--r--src/battle_gfx_sfx_util.c27
-rw-r--r--src/battle_intro.c23
-rw-r--r--src/battle_main.c588
-rw-r--r--src/battle_message.c396
-rw-r--r--src/battle_script_commands.c783
-rw-r--r--src/battle_setup.c63
-rw-r--r--src/battle_tower.c20
-rw-r--r--src/battle_util.c496
-rw-r--r--src/battle_util2.c17
-rw-r--r--src/contest.c12
-rw-r--r--src/data/battle_anim.h1625
-rw-r--r--src/data/text/match_call_messages.h2
-rw-r--r--src/evolution_scene.c28
-rw-r--r--src/hall_of_fame.c2
-rwxr-xr-xsrc/party_menu.c10
-rw-r--r--src/pokeball.c7
-rw-r--r--src/pokeblock_feed.c2
-rw-r--r--src/pokedex.c2
-rw-r--r--src/pokemon.c15
-rw-r--r--src/pokenav_match_call_data.c2
-rw-r--r--src/recorded_battle.c149
-rw-r--r--src/sound.c7
-rw-r--r--src/title_screen.c3
70 files changed, 4276 insertions, 4236 deletions
diff --git a/.gitignore b/.gitignore
index 38c3e02d6..9286b03c4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,3 +34,4 @@ porymap.project.cfg
*.a
.fuse_hidden*
*.sna
+*.diff
diff --git a/asm/macros/battle_anim_script.inc b/asm/macros/battle_anim_script.inc
index 5426cdfba..15c48c39f 100644
--- a/asm/macros/battle_anim_script.inc
+++ b/asm/macros/battle_anim_script.inc
@@ -14,7 +14,7 @@
.byte 0x02
.4byte \template
.if \anim_battler == ANIM_TARGET
- .byte 0x80 | (\subpriority_offset & 0x7F)
+ .byte ANIMSPRITE_IS_TARGET | (\subpriority_offset & 0x7F)
.else
.byte (\subpriority_offset & 0x7F)
.endif
@@ -34,20 +34,20 @@
.Lcreatetask_\@_2:
.endm
- .macro delay param0:req
+ .macro delay frames:req
.byte 0x4
- .byte \param0
+ .byte \frames
.endm
.macro waitforvisualfinish
.byte 0x5
.endm
- .macro hang1
+ .macro nop
.byte 0x6
.endm
- .macro hang2
+ .macro nop2
.byte 0x7
.endm
@@ -79,30 +79,30 @@
.byte 0xd
.endm
- .macro call param0:req
+ .macro call ptr:req
.byte 0xe
- .4byte \param0
+ .4byte \ptr
.endm
.macro return
.byte 0xf
.endm
- .macro setarg param0:req, param1:req
+ .macro setarg argId:req, value:req
.byte 0x10
- .byte \param0
- .2byte \param1
+ .byte \argId
+ .2byte \value
.endm
- .macro choosetwoturnanim param0:req, param1:req
+ .macro choosetwoturnanim ptr1:req, ptr2:req
.byte 0x11
- .4byte \param0
- .4byte \param1
+ .4byte \ptr1
+ .4byte \ptr2
.endm
- .macro jumpifmoveturn param0:req, ptr:req
+ .macro jumpifmoveturn value:req, ptr:req
.byte 0x12
- .byte \param0
+ .byte \value
.4byte \ptr
.endm
@@ -144,13 +144,13 @@
.byte \pan
.endm
- .macro panse_1B se:req, param1:req, param2:req, param3:req, param4:req
+ .macro panse se:req, currentPan:req, targetPan:req, incrementPan:req, delay:req
.byte 0x1b
.2byte \se
- .byte \param1
- .byte \param2
- .byte \param3
- .byte \param4
+ .byte \currentPan
+ .byte \targetPan
+ .byte \incrementPan
+ .byte \delay
.endm
.macro loopsewithpan se:req, pan:req, wait:req, times:req
@@ -168,9 +168,9 @@
.byte \wait
.endm
- .macro setbldcnt param0:req
+ .macro setbldcnt bldcnt:req
.byte 0x1e
- .2byte \param0
+ .2byte \bldcnt
.endm
.macro createsoundtask addr:req, argv:vararg
@@ -186,19 +186,19 @@
.byte 0x20
.endm
- .macro jumpargeq param0:req, param1:req, ptr:req
+ .macro jumpargeq argId:req, value:req, ptr:req
.byte 0x21
- .byte \param0
- .2byte \param1
+ .byte \argId
+ .2byte \value
.4byte \ptr
.endm
- .macro monbg_22 battler:req
+ .macro monbg_static battler:req
.byte 0x22
.byte \battler
.endm
- .macro clearmonbg_23 battler:req
+ .macro clearmonbg_static battler:req
.byte 0x23
.byte \battler
.endm
@@ -208,41 +208,41 @@
.4byte \ptr
.endm
- .macro fadetobgfromset param0:req, param1:req, param2:req
+ .macro fadetobgfromset bgOpponent:req, bgPlayer:req, bgContest:req
.byte 0x25
- .byte \param0
- .byte \param1
- .byte \param2
+ .byte \bgOpponent
+ .byte \bgPlayer
+ .byte \bgContest
.endm
- .macro panse_26 se:req, param1:req, param2:req, param3:req, param4:req
+ .macro panse_adjustnone se:req, currentPan:req, targetPan:req, incrementPan:req, delay:req
.byte 0x26
.2byte \se
- .byte \param1
- .byte \param2
- .byte \param3
- .byte \param4
+ .byte \currentPan
+ .byte \targetPan
+ .byte \incrementPan
+ .byte \delay
.endm
- .macro panse_27 se:req, param1:req, param2:req, param3:req, param4:req
+ .macro panse_adjustall se:req, currentPan:req, targetPan:req, incrementPan:req, delay:req
.byte 0x27
.2byte \se
- .byte \param1
- .byte \param2
- .byte \param3
- .byte \param4
+ .byte \currentPan
+ .byte \targetPan
+ .byte \incrementPan
+ .byte \delay
.endm
- .macro monbgprio_28 battler:req
+ .macro splitbgprio battler:req
.byte 0x28
.byte \battler
.endm
- .macro monbgprio_29
+ .macro splitbgprio_all
.byte 0x29
.endm
- .macro monbgprio_2A battler:req
+ .macro splitbgprio_foes battler:req
.byte 0x2a
.byte \battler
.endm
@@ -257,12 +257,12 @@
.byte \battler
.endm
- .macro doublebattle_2D battler:req
+ .macro teamattack_moveback battler:req
.byte 0x2d
.byte \battler
.endm
- .macro doublebattle_2E battler:req
+ .macro teamattack_movefwd battler:req
.byte 0x2e
.byte \battler
.endm
diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc
index c5bede3f5..73b3beca0 100644
--- a/asm/macros/battle_script.inc
+++ b/asm/macros/battle_script.inc
@@ -3,10 +3,10 @@
.byte 0x0
.endm
- .macro accuracycheck param0:req, param1:req
+ .macro accuracycheck failPtr:req, move:req
.byte 0x1
- .4byte \param0
- .2byte \param1
+ .4byte \failPtr
+ .2byte \move
.endm
.macro attackstring
@@ -77,9 +77,9 @@
.2byte \id
.endm
- .macro waitmessage param0:req
+ .macro waitmessage time:req
.byte 0x12
- .2byte \param0
+ .2byte \time
.endm
.macro printfromtable ptr:req
@@ -109,10 +109,17 @@
.byte \battler
.endm
- .macro tryfaintmon battler:req, param1:req, ptr:req
+ .macro tryfaintmon battler:req
.byte 0x19
.byte \battler
- .byte \param1
+ .byte FALSE
+ .4byte NULL
+ .endm
+
+ .macro tryfaintmon_spikes battler:req, ptr:req
+ .byte 0x19
+ .byte \battler
+ .byte TRUE
.4byte \ptr
.endm
@@ -140,9 +147,9 @@
.4byte \ptr
.endm
- .macro jumpifability param0:req, ability:req, ptr:req
+ .macro jumpifability battler:req, ability:req, ptr:req
.byte 0x1e
- .byte \param0
+ .byte \battler
.byte \ability
.4byte \ptr
.endm
@@ -163,11 +170,11 @@
.4byte \ptr
.endm
- .macro jumpifstatus3condition battler:req, status3:req, param2:req, ptr:req
+ .macro jumpifstatus3condition battler:req, status3:req, condition:req, ptr:req
.byte 0x21
.byte \battler
.4byte \status3
- .byte \param2
+ .byte \condition
.4byte \ptr
.endm
@@ -183,7 +190,7 @@
.byte \battler
.endm
- .macro atk24 ptr:req
+ .macro checkteamslost ptr:req
.byte 0x24
.4byte \ptr
.endm
@@ -207,118 +214,118 @@
.4byte \ptr
.endm
- .macro jumpifbyte ifflag:req, param1:req, param2:req, param3:req
+ .macro jumpifbyte ifflag:req, val:req, byte:req, ptr:req
.byte 0x29
.byte \ifflag
- .4byte \param1
- .byte \param2
- .4byte \param3
+ .4byte \val
+ .byte \byte
+ .4byte \ptr
.endm
- .macro jumpifhalfword ifflag:req, param1:req, param2:req, param3:req
+ .macro jumpifhalfword ifflag:req, val:req, hword:req, ptr:req
.byte 0x2a
.byte \ifflag
- .4byte \param1
- .2byte \param2
- .4byte \param3
+ .4byte \val
+ .2byte \hword
+ .4byte \ptr
.endm
- .macro jumpifword ifflag:req, param1:req, param2:req, param3:req
+ .macro jumpifword ifflag:req, val:req, word:req, ptr:req
.byte 0x2b
.byte \ifflag
- .4byte \param1
- .4byte \param2
- .4byte \param3
+ .4byte \val
+ .4byte \word
+ .4byte \ptr
.endm
- .macro jumpifarrayequal param0:req, param1:req, param2:req, param3:req
+ .macro jumpifarrayequal val1:req, val2:req, size:req, ptr:req
.byte 0x2c
- .4byte \param0
- .4byte \param1
- .byte \param2
- .4byte \param3
+ .4byte \val1
+ .4byte \val2
+ .byte \size
+ .4byte \ptr
.endm
- .macro jumpifarraynotequal param0:req, param1:req, param2:req, param3:req
+ .macro jumpifarraynotequal val1:req, val2:req, size:req, ptr:req
.byte 0x2d
- .4byte \param0
- .4byte \param1
- .byte \param2
- .4byte \param3
+ .4byte \val1
+ .4byte \val2
+ .byte \size
+ .4byte \ptr
.endm
- .macro setbyte ptr:req, param1:req
+ .macro setbyte ptr:req, byte:req
.byte 0x2e
.4byte \ptr
- .byte \param1
+ .byte \byte
.endm
- .macro addbyte ptr:req, param1:req
+ .macro addbyte ptr:req, byte:req
.byte 0x2f
.4byte \ptr
- .byte \param1
+ .byte \byte
.endm
- .macro subbyte ptr:req, param1:req
+ .macro subbyte ptr:req, byte:req
.byte 0x30
.4byte \ptr
- .byte \param1
+ .byte \byte
.endm
- .macro copyarray param0:req, param1:req, param2:req
+ .macro copyarray dest:req, src:req, size:req
.byte 0x31
- .4byte \param0
- .4byte \param1
- .byte \param2
+ .4byte \dest
+ .4byte \src
+ .byte \size
.endm
- .macro copyarraywithindex param0:req, param1:req, param2:req, param3:req
+ .macro copyarraywithindex dest:req, src:req, index:req, size:req
.byte 0x32
- .4byte \param0
- .4byte \param1
- .4byte \param2
- .byte \param3
+ .4byte \dest
+ .4byte \src
+ .4byte \index
+ .byte \size
.endm
- .macro orbyte ptr:req, param1:req
+ .macro orbyte ptr:req, byte:req
.byte 0x33
.4byte \ptr
- .byte \param1
+ .byte \byte
.endm
- .macro orhalfword ptr:req, param1:req
+ .macro orhalfword ptr:req, hword:req
.byte 0x34
.4byte \ptr
- .2byte \param1
+ .2byte \hword
.endm
- .macro orword ptr:req, param1:req
+ .macro orword ptr:req, word:req
.byte 0x35
.4byte \ptr
- .4byte \param1
+ .4byte \word
.endm
- .macro bicbyte ptr:req, param1:req
+ .macro bicbyte ptr:req, byte:req
.byte 0x36
.4byte \ptr
- .byte \param1
+ .byte \byte
.endm
- .macro bichalfword ptr:req, param1:req
+ .macro bichalfword ptr:req, hword:req
.byte 0x37
.4byte \ptr
- .2byte \param1
+ .2byte \hword
.endm
- .macro bicword ptr:req, param1:req
+ .macro bicword ptr:req, word:req
.byte 0x38
.4byte \ptr
- .4byte \param1
+ .4byte \word
.endm
- .macro pause param0:req
+ .macro pause time:req
.byte 0x39
- .2byte \param0
+ .2byte \time
.endm
.macro waitstate
@@ -373,18 +380,18 @@
.byte 0x44
.endm
- .macro playanimation battler:req, param1:req, param2:req
+ .macro playanimation battler:req, animType:req, arg=NULL
.byte 0x45
.byte \battler
- .byte \param1
- .4byte \param2
+ .byte \animType
+ .4byte \arg
.endm
- .macro playanimation2 battler:req, param1:req, param2:req
+ .macro playanimation_var battler:req, animType:req, arg=NULL
.byte 0x46
.byte \battler
- .4byte \param1
- .4byte \param2
+ .4byte \animType
+ .4byte \arg
.endm
.macro setgraphicalstatchangevalues
@@ -398,10 +405,10 @@
.byte \statchange
.endm
- .macro moveend param0:req, param1:req
+ .macro moveend endMode:req, endState:req
.byte 0x49
- .byte \param0
- .byte \param1
+ .byte \endMode
+ .byte \endState
.endm
@ Help macros for 5 uses of moveend command
@@ -466,16 +473,16 @@
.4byte \ptr
.endm
- .macro openpartyscreen param0:req, param1:req
+ .macro openpartyscreen battler:req, ptr:req
.byte 0x50
- .byte \param0
- .4byte \param1
+ .byte \battler
+ .4byte \ptr
.endm
- .macro switchhandleorder battler:req, param1:req
+ .macro switchhandleorder battler:req, state:req
.byte 0x51
.byte \battler
- .byte \param1
+ .byte \state
.endm
.macro switchineffects battler:req
@@ -488,14 +495,14 @@
.byte \battler
.endm
- .macro playse param0:req
+ .macro playse song:req
.byte 0x54
- .2byte \param0
+ .2byte \song
.endm
- .macro fanfare param0:req
+ .macro fanfare song:req
.byte 0x55
- .2byte \param0
+ .2byte \song
.endm
.macro playfaintcry battler:req
@@ -512,21 +519,21 @@
.byte \battler
.endm
- .macro handlelearnnewmove param0:req, param1:req, param2:req
+ .macro handlelearnnewmove learnedMovePtr:req, nothingToLearnPtr:req, isFirstMove:req
.byte 0x59
- .4byte \param0
- .4byte \param1
- .byte \param2
+ .4byte \learnedMovePtr
+ .4byte \nothingToLearnPtr
+ .byte \isFirstMove
.endm
- .macro yesnoboxlearnmove param0:req
+ .macro yesnoboxlearnmove forgotMovePtr:req
.byte 0x5a
- .4byte \param0
+ .4byte \forgotMovePtr
.endm
- .macro yesnoboxstoplearningmove param0:req
+ .macro yesnoboxstoplearningmove noPtr:req
.byte 0x5b
- .4byte \param0
+ .4byte \noPtr
.endm
.macro hitanimation battler:req
@@ -538,7 +545,7 @@
.byte 0x5d
.endm
- .macro atk5E battler:req
+ .macro updatebattlermoves battler:req
.byte 0x5e
.byte \battler
.endm
@@ -547,9 +554,9 @@
.byte 0x5f
.endm
- .macro incrementgamestat param0:req
+ .macro incrementgamestat stat:req
.byte 0x60
- .byte \param0
+ .byte \stat
.endm
.macro drawpartystatussummary battler:req
@@ -562,9 +569,9 @@
.byte \battler
.endm
- .macro jumptocalledmove param0:req
+ .macro jumptocalledmove notChosenMove:req
.byte 0x63
- .byte \param0
+ .byte \notChosenMove
.endm
.macro statusanimation battler:req
@@ -578,11 +585,11 @@
.4byte \status2
.endm
- .macro chosenstatusanimation battler:req, param1:req, param2:req
+ .macro chosenstatusanimation battler:req, isStatus2:req, status:req
.byte 0x66
.byte \battler
- .byte \param1
- .4byte \param2
+ .byte \isStatus2
+ .4byte \status
.endm
.macro yesnobox
@@ -651,10 +658,10 @@
.byte 0x75
.endm
- .macro various battler:req, param1:req
+ .macro various battler:req, id:req
.byte 0x76
.byte \battler
- .byte \param1
+ .byte \id
.endm
.macro setprotectlike
@@ -674,9 +681,9 @@
.4byte \ptr
.endm
- .macro tryhealhalfhealth param0:req, battler:req
+ .macro tryhealhalfhealth ptr:req, battler:req
.byte 0x7b
- .4byte \param0
+ .4byte \ptr
.byte \battler
.endm
@@ -696,14 +703,14 @@
.byte 0x7f
.endm
- .macro manipulatedamage param0:req
+ .macro manipulatedamage mode:req
.byte 0x80
- .byte \param0
+ .byte \mode
.endm
- .macro trysetrest param0:req
+ .macro trysetrest ptr:req
.byte 0x81
- .4byte \param0
+ .4byte \ptr
.endm
.macro jumpifnotfirstturn ptr:req
@@ -715,23 +722,23 @@
.byte 0x83
.endm
- .macro jumpifcantmakeasleep param0:req
+ .macro jumpifcantmakeasleep ptr:req
.byte 0x84
- .4byte \param0
+ .4byte \ptr
.endm
.macro stockpile
.byte 0x85
.endm
- .macro stockpiletobasedamage param0:req
+ .macro stockpiletobasedamage ptr:req
.byte 0x86
- .4byte \param0
+ .4byte \ptr
.endm
- .macro stockpiletohpheal param0:req
+ .macro stockpiletohpheal ptr:req
.byte 0x87
- .4byte \param0
+ .4byte \ptr
.endm
.macro negativedamage
@@ -756,23 +763,23 @@
.byte 0x8c
.endm
- .macro setmultihitcounter param0:req
+ .macro setmultihitcounter val:req
.byte 0x8d
- .byte \param0
+ .byte \val
.endm
.macro initmultihitstring
.byte 0x8e
.endm
- .macro forcerandomswitch param0:req
+ .macro forcerandomswitch ptr:req
.byte 0x8f
- .4byte \param0
+ .4byte \ptr
.endm
- .macro tryconversiontypechange param0:req
+ .macro tryconversiontypechange ptr:req
.byte 0x90
- .4byte \param0
+ .4byte \ptr
.endm
.macro givepaydaymoney
@@ -783,9 +790,9 @@
.byte 0x92
.endm
- .macro tryKO param0:req
+ .macro tryKO ptr:req
.byte 0x93
- .4byte \param0
+ .4byte \ptr
.endm
.macro damagetohalftargethp
@@ -800,9 +807,9 @@
.byte 0x96
.endm
- .macro tryinfatuating param0:req
+ .macro tryinfatuating ptr:req
.byte 0x97
- .4byte \param0
+ .4byte \ptr
.endm
.macro updatestatusicon battler:req
@@ -826,9 +833,9 @@
.byte 0x9c
.endm
- .macro mimicattackcopy param0:req
+ .macro mimicattackcopy ptr:req
.byte 0x9d
- .4byte \param0
+ .4byte \ptr
.endm
.macro metronome
@@ -843,48 +850,48 @@
.byte 0xa0
.endm
- .macro counterdamagecalculator param0:req
+ .macro counterdamagecalculator ptr:req
.byte 0xa1
- .4byte \param0
+ .4byte \ptr
.endm
- .macro mirrorcoatdamagecalculator param0:req
+ .macro mirrorcoatdamagecalculator ptr:req
.byte 0xa2
- .4byte \param0
+ .4byte \ptr
.endm
- .macro disablelastusedattack param0:req
+ .macro disablelastusedattack ptr:req
.byte 0xa3
- .4byte \param0
+ .4byte \ptr
.endm
- .macro trysetencore param0:req
+ .macro trysetencore ptr:req
.byte 0xa4
- .4byte \param0
+ .4byte \ptr
.endm
- .macro painsplitdmgcalc param0:req
+ .macro painsplitdmgcalc ptr:req
.byte 0xa5
- .4byte \param0
+ .4byte \ptr
.endm
- .macro settypetorandomresistance param0:req
+ .macro settypetorandomresistance ptr:req
.byte 0xa6
- .4byte \param0
+ .4byte \ptr
.endm
.macro setalwayshitflag
.byte 0xa7
.endm
- .macro copymovepermanently param0:req
+ .macro copymovepermanently ptr:req
.byte 0xa8
- .4byte \param0
+ .4byte \ptr
.endm
- .macro trychoosesleeptalkmove param0:req
+ .macro trychoosesleeptalkmove ptr:req
.byte 0xa9
- .4byte \param0
+ .4byte \ptr
.endm
.macro setdestinybond
@@ -899,32 +906,32 @@
.byte 0xac
.endm
- .macro tryspiteppreduce param0:req
+ .macro tryspiteppreduce ptr:req
.byte 0xad
- .4byte \param0
+ .4byte \ptr
.endm
.macro healpartystatus
.byte 0xae
.endm
- .macro cursetarget param0:req
+ .macro cursetarget ptr:req
.byte 0xaf
- .4byte \param0
+ .4byte \ptr
.endm
- .macro trysetspikes param0:req
+ .macro trysetspikes ptr:req
.byte 0xb0
- .4byte \param0
+ .4byte \ptr
.endm
.macro setforesight
.byte 0xb1
.endm
- .macro trysetperishsong param0:req
+ .macro trysetperishsong ptr:req
.byte 0xb2
- .4byte \param0
+ .4byte \ptr
.endm
.macro rolloutdamagecalculation
@@ -957,23 +964,23 @@
.byte 0xb9
.endm
- .macro jumpifnopursuitswitchdmg param0:req
+ .macro jumpifnopursuitswitchdmg ptr:req
.byte 0xba
- .4byte \param0
+ .4byte \ptr
.endm
.macro setsunny
.byte 0xbb
.endm
- .macro maxattackhalvehp param0:req
+ .macro maxattackhalvehp ptr:req
.byte 0xbc
- .4byte \param0
+ .4byte \ptr
.endm
- .macro copyfoestats param0:req
+ .macro copyfoestats ptr:req
.byte 0xbd
- .4byte \param0
+ .4byte \ptr
.endm
.macro rapidspinfree
@@ -984,9 +991,9 @@
.byte 0xbf
.endm
- .macro recoverbasedonsunlight param0:req
+ .macro recoverbasedonsunlight ptr:req
.byte 0xc0
- .4byte \param0
+ .4byte \ptr
.endm
.macro hiddenpowercalc
@@ -997,15 +1004,15 @@
.byte 0xc2
.endm
- .macro trysetfutureattack param0:req
+ .macro trysetfutureattack ptr:req
.byte 0xc3
- .4byte \param0
+ .4byte \ptr
.endm
- .macro trydobeatup param0:req, param1:req
+ .macro trydobeatup endPtr:req, failPtr:req
.byte 0xc4
- .4byte \param0
- .4byte \param1
+ .4byte \endPtr
+ .4byte \failPtr
.endm
.macro setsemiinvulnerablebit
@@ -1041,107 +1048,107 @@
.byte 0xcc
.endm
- .macro cureifburnedparalysedorpoisoned param0:req
+ .macro cureifburnedparalysedorpoisoned ptr:req
.byte 0xcd
- .4byte \param0
+ .4byte \ptr
.endm
- .macro settorment param0:req
+ .macro settorment ptr:req
.byte 0xce
- .4byte \param0
+ .4byte \ptr
.endm
- .macro jumpifnodamage param0:req
+ .macro jumpifnodamage ptr:req
.byte 0xcf
- .4byte \param0
+ .4byte \ptr
.endm
- .macro settaunt param0:req
+ .macro settaunt ptr:req
.byte 0xd0
- .4byte \param0
+ .4byte \ptr
.endm
- .macro trysethelpinghand param0:req
+ .macro trysethelpinghand ptr:req
.byte 0xd1
- .4byte \param0
+ .4byte \ptr
.endm
- .macro tryswapitems param0:req
+ .macro tryswapitems ptr:req
.byte 0xd2
- .4byte \param0
+ .4byte \ptr
.endm
- .macro trycopyability param0:req
+ .macro trycopyability ptr:req
.byte 0xd3
- .4byte \param0
+ .4byte \ptr
.endm
- .macro trywish param0:req, param1:req
+ .macro trywish turnNumber:req, ptr:req
.byte 0xd4
- .byte \param0
- .4byte \param1
+ .byte \turnNumber
+ .4byte \ptr
.endm
- .macro trysetroots param0:req
+ .macro trysetroots ptr:req
.byte 0xd5
- .4byte \param0
+ .4byte \ptr
.endm
.macro doubledamagedealtifdamaged
.byte 0xd6
.endm
- .macro setyawn param0:req
+ .macro setyawn ptr:req
.byte 0xd7
- .4byte \param0
+ .4byte \ptr
.endm
- .macro setdamagetohealthdifference param0:req
+ .macro setdamagetohealthdifference ptr:req
.byte 0xd8
- .4byte \param0
+ .4byte \ptr
.endm
.macro scaledamagebyhealthratio
.byte 0xd9
.endm
- .macro tryswapabilities param0:req
+ .macro tryswapabilities ptr:req
.byte 0xda
- .4byte \param0
+ .4byte \ptr
.endm
- .macro tryimprison param0:req
+ .macro tryimprison ptr:req
.byte 0xdb
- .4byte \param0
+ .4byte \ptr
.endm
- .macro trysetgrudge param0:req
+ .macro trysetgrudge ptr:req
.byte 0xdc
- .4byte \param0
+ .4byte \ptr
.endm
.macro weightdamagecalculation
.byte 0xdd
.endm
- .macro assistattackselect param0:req
+ .macro assistattackselect ptr:req
.byte 0xde
- .4byte \param0
+ .4byte \ptr
.endm
- .macro trysetmagiccoat param0:req
+ .macro trysetmagiccoat ptr:req
.byte 0xdf
- .4byte \param0
+ .4byte \ptr
.endm
- .macro trysetsnatch param0:req
+ .macro trysetsnatch ptr:req
.byte 0xe0
- .4byte \param0
+ .4byte \ptr
.endm
- .macro trygetintimidatetarget param0:req
+ .macro trygetintimidatetarget ptr:req
.byte 0xe1
- .4byte \param0
+ .4byte \ptr
.endm
.macro switchoutabilities battler:req
@@ -1149,10 +1156,10 @@
.byte \battler
.endm
- .macro jumpifhasnohp battler:req, param1:req
+ .macro jumpifhasnohp battler:req, ptr:req
.byte 0xe3
.byte \battler
- .4byte \param1
+ .4byte \ptr
.endm
.macro getsecretpowereffect
@@ -1171,28 +1178,28 @@
.byte 0xe7
.endm
- .macro settypebasedhalvers param0:req
+ .macro settypebasedhalvers ptr:req
.byte 0xe8
- .4byte \param0
+ .4byte \ptr
.endm
.macro setweatherballtype
.byte 0xe9
.endm
- .macro tryrecycleitem param0:req
+ .macro tryrecycleitem ptr:req
.byte 0xea
- .4byte \param0
+ .4byte \ptr
.endm
- .macro settypetoterrain param0:req
+ .macro settypetoterrain ptr:req
.byte 0xeb
- .4byte \param0
+ .4byte \ptr
.endm
- .macro pursuitrelated param0:req
+ .macro pursuitdoubles ptr:req
.byte 0xec
- .4byte \param0
+ .4byte \ptr
.endm
.macro snatchsetbattlers
@@ -1211,18 +1218,18 @@
.byte 0xf0
.endm
- .macro trysetcaughtmondexflags param0:req
+ .macro trysetcaughtmondexflags ptr:req
.byte 0xf1
- .4byte \param0
+ .4byte \ptr
.endm
.macro displaydexinfo
.byte 0xf2
.endm
- .macro trygivecaughtmonnick param0:req
+ .macro trygivecaughtmonnick ptr:req
.byte 0xf3
- .4byte \param0
+ .4byte \ptr
.endm
.macro subattackerhpbydmg
@@ -1241,9 +1248,9 @@
.byte 0xf7
.endm
- .macro trainerslideout param0:req
+ .macro trainerslideout position:req
.byte 0xf8
- .byte \param0
+ .byte \position
.endm
@ various command changed to more readable macros
@@ -1357,11 +1364,11 @@
@ helpful macros
.macro setstatchanger stat:req, stages:req, down:req
- setbyte sSTATCHANGER \stat | \stages << 4 | \down << 7
+ setbyte sSTATCHANGER, \stat | \stages << 4 | \down << 7
.endm
.macro setmoveeffect effect:req
- setbyte cEFFECT_CHOOSER \effect
+ setbyte cEFFECT_CHOOSER, \effect
.endm
.macro chosenstatus1animation battler:req, status:req
@@ -1413,11 +1420,11 @@
.endm
.macro jumpifstatus3 battler:req, status:req, jumpptr:req
- jumpifstatus3condition \battler, \status, 0x0, \jumpptr
+ jumpifstatus3condition \battler, \status, FALSE, \jumpptr
.endm
.macro jumpifnostatus3 battler:req, status:req, jumpptr:req
- jumpifstatus3condition \battler, \status, 0x1, \jumpptr
+ jumpifstatus3condition \battler, \status, TRUE, \jumpptr
.endm
.macro jumpifmovehadnoeffect jumpptr:req
diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s
index 83b1f3cea..45cf17c34 100644
--- a/data/battle_anim_scripts.s
+++ b/data/battle_anim_scripts.s
@@ -622,7 +622,7 @@ Move_BODY_SLAM:
Move_SUPERSONIC:
loadspritegfx ANIM_TAG_GOLD_RING
monbg ANIM_ATK_PARTNER
- monbgprio_2A ANIM_ATTACKER
+ splitbgprio_foes ANIM_ATTACKER
setalpha 12, 8
createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 2, 0, 8, 1
call SupersonicRing
@@ -659,7 +659,7 @@ ScreechRing:
Move_FLAME_WHEEL:
loadspritegfx ANIM_TAG_SMALL_EMBER
monbg ANIM_DEF_PARTNER
- monbgprio_2A ANIM_TARGET
+ splitbgprio_foes ANIM_TARGET
createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 0
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 2
@@ -702,7 +702,7 @@ Move_PIN_MISSILE:
loadspritegfx ANIM_TAG_NEEDLE
loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_TARGET
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER
createsprite gPinMissileSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, -8, -8, 20, -32
@@ -731,7 +731,7 @@ Move_ICICLE_SPEAR:
loadspritegfx ANIM_TAG_ICICLE_SPEAR
loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_TARGET
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
playsewithpan SE_M_ICY_WIND, SOUND_PAN_ATTACKER
createsprite gIcicleSpearSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, -8, -8, 20, -32
@@ -817,7 +817,7 @@ Move_POISON_STING:
loadspritegfx ANIM_TAG_IMPACT
loadspritegfx ANIM_TAG_POISON_BUBBLE
monbg ANIM_TARGET
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER
createsprite gLinearStingerSpriteTemplate, ANIM_TARGET, 2, 20, 0, -8, 0, 20
@@ -836,7 +836,7 @@ Move_TWINEEDLE:
loadspritegfx ANIM_TAG_NEEDLE
loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_TARGET
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
loopsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER, 6, 2
createsprite gLinearStingerSpriteTemplate, ANIM_TARGET, 2, 10, -4, 0, -4, 20
@@ -1029,7 +1029,7 @@ Move_SONIC_BOOM:
loadspritegfx ANIM_TAG_AIR_WAVE
loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
call SonicBoomProjectile
call SonicBoomProjectile
@@ -1300,7 +1300,7 @@ Move_SPIKE_CANNON:
loadspritegfx ANIM_TAG_NEEDLE
loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_TARGET
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
createvisualtask AnimTask_WindUpLunge, 5, ANIM_ATTACKER, -4, 0, 4, 6, 8, 4
waitforvisualfinish
@@ -1668,7 +1668,7 @@ Move_DEFENSE_CURL:
Move_PROTECT:
loadspritegfx ANIM_TAG_PROTECT
monbg ANIM_ATK_PARTNER
- monbgprio_28 ANIM_ATTACKER
+ splitbgprio ANIM_ATTACKER
waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 16
createsprite gProtectSpriteTemplate, ANIM_ATTACKER, 2, 24, 0, 90
waitforvisualfinish
@@ -1882,7 +1882,7 @@ Move_PAY_DAY:
loadspritegfx ANIM_TAG_COIN
loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_TARGET
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER
createsprite gCoinThrowSpriteTemplate, ANIM_ATTACKER, 2, 20, 0, 0, 0, 1152
@@ -2190,7 +2190,7 @@ Move_BUBBLE_BEAM:
loadspritegfx ANIM_TAG_BUBBLE
loadspritegfx ANIM_TAG_SMALL_BUBBLES
monbg ANIM_TARGET
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
delay 1
call BulbblebeamCreateBubbles
@@ -2234,7 +2234,7 @@ Move_ICY_WIND:
playsewithpan SE_M_ICY_WIND, 0
waitbgfadein
waitforvisualfinish
- panse_1B SE_M_GUST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
+ panse SE_M_GUST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
call IcyWindSwirlingSnowballs
delay 5
call IcyWindSwirlingSnowballs
@@ -2287,7 +2287,7 @@ Move_SMOKESCREEN:
Move_CONVERSION:
loadspritegfx ANIM_TAG_CONVERSION
monbg ANIM_ATK_PARTNER
- monbgprio_28 ANIM_ATTACKER
+ splitbgprio ANIM_ATTACKER
setalpha 16, 0
delay 0
playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER
@@ -2339,7 +2339,7 @@ Move_CONVERSION:
Move_CONVERSION_2:
loadspritegfx ANIM_TAG_CONVERSION
monbg ANIM_DEF_PARTNER
- monbgprio_2A ANIM_TARGET
+ splitbgprio_foes ANIM_TARGET
setalpha 0, 16
delay 0
playsewithpan SE_M_BARRIER, SOUND_PAN_TARGET
@@ -2551,7 +2551,7 @@ Move_SING:
monbg ANIM_DEF_PARTNER
createvisualtask AnimTask_MusicNotesRainbowBlend, 2
waitforvisualfinish
- panse_1B SE_M_SING, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
+ panse SE_M_SING, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 7, 0, 12
delay 5
createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 6, 1, 12
@@ -2657,7 +2657,7 @@ DigSetUp:
loadspritegfx ANIM_TAG_DIRT_MOUND
createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, 180
createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0, 1, 180
- monbg_22 ANIM_ATTACKER
+ monbg_static ANIM_ATTACKER
delay 1
createvisualtask AnimTask_DigDownMovement, 2, FALSE
delay 6
@@ -2667,7 +2667,7 @@ DigSetUp:
call DigThrowDirt
call DigThrowDirt
waitforvisualfinish
- clearmonbg_23 ANIM_ATTACKER
+ clearmonbg_static ANIM_ATTACKER
delay 1
createvisualtask AnimTask_DigDownMovement, 2, TRUE
goto DigEnd
@@ -3156,7 +3156,7 @@ MachPunchAgainstPlayer:
Move_FORESIGHT:
loadspritegfx ANIM_TAG_MAGNIFYING_GLASS
monbg ANIM_DEF_PARTNER
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 16, 0
createsprite gForesightMagnifyingGlassSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET
delay 17
@@ -3236,7 +3236,7 @@ Move_ROLLOUT:
loadspritegfx ANIM_TAG_MUD_SAND
loadspritegfx ANIM_TAG_ROCKS
monbg ANIM_DEF_PARTNER
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
createvisualtask AnimTask_Rollout, 2
waitforvisualfinish
@@ -3460,7 +3460,7 @@ Move_HEAT_WAVE:
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_FLYING_DIRT, 0, 6, 6, RGB_RED
createvisualtask AnimTask_LoadSandstormBackground, 5, TRUE
createvisualtask AnimTask_BlendBackground, 6, 6, RGB_RED
- panse_1B SE_M_HEAT_WAVE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
+ panse SE_M_HEAT_WAVE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
delay 4
createvisualtask AnimTask_MoveHeatWaveTargets, 5
delay 12
@@ -3518,11 +3518,11 @@ Move_MEMENTO:
delay 12
setalpha 0, 16
delay 1
- monbg_22 ANIM_TARGET
+ monbg_static ANIM_TARGET
createvisualtask AnimTask_MoveTargetMementoShadow, 5
playsewithpan SE_M_PSYBEAM, SOUND_PAN_TARGET
waitforvisualfinish
- clearmonbg_23 ANIM_TARGET
+ clearmonbg_static ANIM_TARGET
delay 1
blendoff
delay 1
@@ -3654,7 +3654,7 @@ Move_SUPERPOWER:
loadspritegfx ANIM_TAG_METEOR
loadspritegfx ANIM_TAG_FLAT_ROCK
monbg ANIM_ATK_PARTNER
- monbgprio_28 ANIM_ATTACKER
+ splitbgprio ANIM_ATTACKER
setalpha 12, 8
createsprite gSuperpowerOrbSpriteTemplate, ANIM_TARGET, 2, ANIM_ATTACKER
playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER
@@ -3853,7 +3853,7 @@ Move_IMPRISON:
Move_GRUDGE:
loadspritegfx ANIM_TAG_PURPLE_FLAME
monbg ANIM_ATTACKER
- monbgprio_29
+ splitbgprio_all
fadetobg BG_GHOST
playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER
waitbgfadein
@@ -3870,7 +3870,7 @@ Move_GRUDGE:
Move_CAMOUFLAGE:
monbg ANIM_ATK_PARTNER
- monbgprio_28 ANIM_ATTACKER
+ splitbgprio ANIM_ATTACKER
setalpha 16, 0
createvisualtask AnimTask_SetCamouflageBlend, 5, 2, 3, 0, 14
delay 16
@@ -3968,7 +3968,7 @@ Move_MIST_BALL:
Move_FEATHER_DANCE:
loadspritegfx ANIM_TAG_WHITE_FEATHER
monbg ANIM_DEF_PARTNER
- monbgprio_29
+ splitbgprio_all
playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_TARGET
delay 0
createsprite gFallingFeatherSpriteTemplate, ANIM_TARGET, 0, 0, -16, 64, 2, 104, 11304, 32, 1
@@ -4232,7 +4232,7 @@ Move_GRASS_WHISTLE:
waitforvisualfinish
createvisualtask AnimTask_MusicNotesRainbowBlend, 2
waitforvisualfinish
- panse_1B SE_M_GRASSWHISTLE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
+ panse SE_M_GRASSWHISTLE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 7, 1, 0
delay 5
createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 6, 1, 0
@@ -4464,7 +4464,7 @@ Move_WATER_SPORT:
delay 44
playsewithpan SE_M_SURF, SOUND_PAN_ATTACKER
delay 44
- panse_1B SE_M_SURF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
+ panse SE_M_SURF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
end
Move_CALM_MIND:
@@ -4518,7 +4518,7 @@ Move_LEAF_BLADE:
Move_DRAGON_DANCE:
loadspritegfx ANIM_TAG_HOLLOW_ORB
monbg ANIM_ATTACKER
- monbgprio_28 ANIM_ATTACKER
+ splitbgprio ANIM_ATTACKER
delay 1
createvisualtask AnimTask_DragonDanceWaver, 5
playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER
@@ -4924,7 +4924,7 @@ Move_SCRATCH:
Move_DRAGON_BREATH:
loadspritegfx ANIM_TAG_SMALL_EMBER
monbg ANIM_DEF_PARTNER
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
loopsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER, 7, 7
createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20
delay 2
@@ -4958,7 +4958,7 @@ Move_DRAGON_BREATH:
Move_ROAR:
loadspritegfx ANIM_TAG_NOISE_LINE
monbg ANIM_ATTACKER
- monbgprio_28 ANIM_ATTACKER
+ splitbgprio ANIM_ATTACKER
setalpha 8, 8
createvisualtask SoundTask_PlayDoubleCry, 2, ANIM_ATTACKER, 2
createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, ANIM_ATTACKER, 1
@@ -5122,7 +5122,7 @@ Move_BUBBLE:
Move_SMOG:
loadspritegfx ANIM_TAG_PURPLE_GAS_CLOUD
monbg ANIM_DEF_PARTNER
- monbgprio_29
+ splitbgprio_all
setalpha 12, 8
loopsewithpan SE_M_MIST, SOUND_PAN_TARGET, 17, 10
call SmogCloud
@@ -5185,7 +5185,7 @@ Move_FAINT_ATTACK:
Move_SAND_ATTACK:
loadspritegfx ANIM_TAG_MUD_SAND
monbg ANIM_ATK_PARTNER
- monbgprio_28 ANIM_ATTACKER
+ splitbgprio ANIM_ATTACKER
setalpha 12, 8
playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_ATTACKER
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, -10, 0, 0, 3
@@ -5343,7 +5343,7 @@ Move_CLAMP:
Move_ICE_BEAM:
monbg ANIM_TARGET
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
loadspritegfx ANIM_TAG_ICE_CRYSTALS
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, RGB_BLACK
@@ -5475,7 +5475,7 @@ SolarBeamAbsorbEffect:
return
SolarBeamUnleash:
call SetSolarbeamBg
- panse_1B SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
+ panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
createvisualtask AnimTask_CreateSmallSolarbeamOrbs, 5
createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 0
delay 4
@@ -5527,7 +5527,7 @@ BlizzardContinue:
createvisualtask AnimTask_StartSlidingBg, 5, -2304, 0, 1, -1
waitbgfadein
waitforvisualfinish
- panse_1B SE_M_BLIZZARD, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
+ panse SE_M_BLIZZARD, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
call BlizzardIceCrystals
call BlizzardIceCrystals
playsewithpan SE_M_BLIZZARD2, SOUND_PAN_TARGET
@@ -5573,7 +5573,7 @@ Move_POWDER_SNOW:
monbg ANIM_DEF_PARTNER
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 1, 0, 3, RGB_BLACK
waitforvisualfinish
- panse_1B SE_M_GUST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
+ panse SE_M_GUST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
call PowderSnowSnowballs
call PowderSnowSnowballs
playsewithpan SE_M_GUST2, SOUND_PAN_TARGET
@@ -5606,11 +5606,11 @@ Move_HYDRO_PUMP:
loadspritegfx ANIM_TAG_WATER_ORB
loadspritegfx ANIM_TAG_WATER_IMPACT
monbg ANIM_DEF_PARTNER
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 40, 1
delay 6
- panse_1B SE_M_HYDRO_PUMP, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
+ panse SE_M_HYDRO_PUMP, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
createvisualtask AnimTask_StartSinAnimTimer, 5, 100
call HydroPumpBeams
call HydroPumpBeams
@@ -5655,7 +5655,7 @@ Move_SIGNAL_BEAM:
loadspritegfx ANIM_TAG_DUCK
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 25, 1
delay 6
- panse_1B SE_M_BUBBLE_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0
+ panse SE_M_BUBBLE_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0
createvisualtask AnimTask_StartSinAnimTimer, 5, 100
call SignalBeamOrbs
call SignalBeamOrbs
@@ -5695,7 +5695,7 @@ Move_ABSORB:
loadspritegfx ANIM_TAG_BLUE_STAR
loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER
- monbgprio_2A ANIM_TARGET
+ splitbgprio_foes ANIM_TARGET
setalpha 12, 8
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 4, RGB(13, 31, 12)
waitforvisualfinish
@@ -5748,7 +5748,7 @@ Move_MEGA_DRAIN:
loadspritegfx ANIM_TAG_BLUE_STAR
loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER
- monbgprio_2A ANIM_TARGET
+ splitbgprio_foes ANIM_TARGET
setalpha 12, 8
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 8, RGB(13, 31, 12)
waitforvisualfinish
@@ -5809,7 +5809,7 @@ Move_GIGA_DRAIN:
loadspritegfx ANIM_TAG_BLUE_STAR
loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER
- monbgprio_2A ANIM_TARGET
+ splitbgprio_foes ANIM_TARGET
setalpha 12, 8
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 12, RGB(13, 31, 12)
waitforvisualfinish
@@ -5880,7 +5880,7 @@ Move_LEECH_LIFE:
loadspritegfx ANIM_TAG_BLUE_STAR
loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER
- monbgprio_2A ANIM_TARGET
+ splitbgprio_foes ANIM_TARGET
setalpha 12, 8
delay 1
createsprite gLeechLifeNeedleSpriteTemplate, ANIM_ATTACKER, 2, -20, 15, 12
@@ -6032,7 +6032,7 @@ Move_BONEMERANG:
loadspritegfx ANIM_TAG_BONE
loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
playsewithpan SE_M_BONEMERANG, SOUND_PAN_ATTACKER
createsprite gBonemerangSpriteTemplate, ANIM_ATTACKER, 2
@@ -6052,7 +6052,7 @@ Move_BONE_CLUB:
loadspritegfx ANIM_TAG_BONE
loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
playsewithpan SE_M_BONEMERANG, SOUND_PAN_TARGET
createsprite gSpinningBoneSpriteTemplate, ANIM_ATTACKER, 2, -42, -25, 0, 0, 15
@@ -6146,7 +6146,7 @@ Move_GUST:
loadspritegfx ANIM_TAG_GUST
loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
playsewithpan SE_M_GUST, SOUND_PAN_TARGET
createsprite gEllipticalGustSpriteTemplate, ANIM_ATTACKER, 2, 0, -16
@@ -6164,7 +6164,7 @@ Move_WING_ATTACK:
loadspritegfx ANIM_TAG_GUST
loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
loopsewithpan SE_M_WING_ATTACK, SOUND_PAN_ATTACKER, 20, 2
createvisualtask AnimTask_TranslateMonElliptical, 2, 0, 12, 4, 1, 4
@@ -6197,7 +6197,7 @@ Move_AEROBLAST:
loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER
call SetSkyBg
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
call AeroblastBeam
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 5, 0, 50, 1
@@ -6237,7 +6237,7 @@ Move_WATER_GUN:
loadspritegfx ANIM_TAG_SMALL_BUBBLES
loadspritegfx ANIM_TAG_WATER_IMPACT
monbg ANIM_DEF_PARTNER
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
createsprite gWaterGunProjectileSpriteTemplate, ANIM_ATTACKER, 2, 20, 0, 0, 0, 40, -25
playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER
@@ -6297,19 +6297,19 @@ Move_CRABHAMMER:
Move_SURF:
createvisualtask AnimTask_CreateSurfWave, 2, FALSE
delay 24
- panse_1B SE_M_SURF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
+ panse SE_M_SURF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
waitforvisualfinish
end
Move_FLAMETHROWER:
loadspritegfx ANIM_TAG_SMALL_EMBER
monbg ANIM_DEF_PARTNER
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 46, 1
delay 6
createvisualtask AnimTask_StartSinAnimTimer, 5, 100
- panse_1B SE_M_FLAMETHROWER, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
+ panse SE_M_FLAMETHROWER, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
call FlamethrowerCreateFlames
call FlamethrowerCreateFlames
call FlamethrowerCreateFlames
@@ -6358,7 +6358,7 @@ Move_SANDSTORM:
Move_WHIRLPOOL:
loadspritegfx ANIM_TAG_WATER_ORB
monbg ANIM_DEF_PARTNER
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
delay 0
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, RGB(0, 13, 23)
@@ -6445,7 +6445,7 @@ Move_KARATE_CHOP:
loadspritegfx ANIM_TAG_HANDS_AND_FEET
loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET
createsprite gKarateChopSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, 0, 0, 10, 1, 3, 0
@@ -6722,7 +6722,7 @@ Move_SUNNY_DAY:
setalpha 13, 3
createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 1, 0, 6, RGB_WHITE
waitforvisualfinish
- panse_26 SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0
+ panse_adjustnone SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0
call SunnyDayLightRay
call SunnyDayLightRay
call SunnyDayLightRay
@@ -6742,7 +6742,7 @@ SunnyDayLightRay:
Move_COTTON_SPORE:
loadspritegfx ANIM_TAG_SPORE
monbg ANIM_DEF_PARTNER
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 18, 10
call CreateCottonSpores
call CreateCottonSpores
@@ -6988,7 +6988,7 @@ FireSpreadEffect:
Move_LEER:
loadspritegfx ANIM_TAG_LEER
monbg ANIM_ATTACKER
- monbgprio_28 ANIM_ATTACKER
+ splitbgprio ANIM_ATTACKER
setalpha 8, 8
playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER
createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 24, -12
@@ -7008,7 +7008,7 @@ Move_DREAM_EATER:
loadspritegfx ANIM_TAG_ORBS
loadspritegfx ANIM_TAG_BLUE_STAR
monbg ANIM_DEF_PARTNER
- monbgprio_2A ANIM_TARGET
+ splitbgprio_foes ANIM_TARGET
playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER
call SetPsychicBackground
setalpha 8, 8
@@ -7076,7 +7076,7 @@ Move_POISON_GAS:
loadspritegfx ANIM_TAG_POISON_BUBBLE
delay 0
monbg ANIM_DEF_PARTNER
- monbgprio_29
+ splitbgprio_all
setalpha 12, 8
delay 0
playsewithpan SE_M_MIST, SOUND_PAN_ATTACKER
@@ -7221,7 +7221,7 @@ Move_STEEL_WING:
createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0
waitforvisualfinish
monbg ANIM_DEF_PARTNER
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
loopsewithpan SE_M_WING_ATTACK, SOUND_PAN_ATTACKER, 20, 2
createvisualtask AnimTask_TranslateMonElliptical, 2, 0, 12, 4, 1, 4
@@ -7304,7 +7304,7 @@ Move_METAL_CLAW:
Move_NIGHT_SHADE:
monbg ANIM_ATTACKER
- monbgprio_28 ANIM_ATTACKER
+ splitbgprio ANIM_ATTACKER
playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER
fadetobg BG_GHOST
waitbgfadein
@@ -7475,7 +7475,7 @@ Move_SPIDER_WEB:
delay 0
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 0, 9, RGB_BLACK
waitforvisualfinish
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
loopsewithpan SE_M_STRING_SHOT, SOUND_PAN_ATTACKER, 9, 6
call SpiderWebThread
call SpiderWebThread
@@ -7546,7 +7546,7 @@ RazorWindUnleash:
Move_DISABLE:
loadspritegfx ANIM_TAG_SPARKLE_4
monbg ANIM_TARGET
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 8, 8
playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER
createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 24, -16
@@ -7597,9 +7597,9 @@ RecoverAbsorbEffect:
Move_MIMIC:
loadspritegfx ANIM_TAG_ORBS
setalpha 11, 5
- monbg_22 ANIM_DEF_PARTNER
- monbgprio_29
- panse_1B SE_M_MINIMIZE, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, -3, 0
+ monbg_static ANIM_DEF_PARTNER
+ splitbgprio_all
+ panse SE_M_MINIMIZE, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, -3, 0
createvisualtask AnimTask_ShrinkTargetCopy, 5, 128, 24
delay 15
createsprite gMimicOrbSpriteTemplate, ANIM_TARGET, 2, -12, 24
@@ -7609,7 +7609,7 @@ Move_MIMIC:
playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER
createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 11, RGB_WHITE
waitforvisualfinish
- clearmonbg_23 ANIM_DEF_PARTNER
+ clearmonbg_static ANIM_DEF_PARTNER
blendoff
end
@@ -7943,7 +7943,7 @@ Move_PERISH_SONG:
createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 15, 0, 240
createsprite gPerishSongMusicNote2SpriteTemplate, ANIM_ATTACKER, 4, 15, 0, 0
delay 20
- panse_1B SE_M_PERISH_SONG, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
+ panse SE_M_PERISH_SONG, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
delay 80
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 16, RGB_BLACK
createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 4, 0
@@ -8070,7 +8070,7 @@ Move_WILL_O_WISP:
loadspritegfx ANIM_TAG_WISP_FIRE
loadspritegfx ANIM_TAG_WISP_ORB
monbg ANIM_DEF_PARTNER
- monbgprio_2A ANIM_TARGET
+ splitbgprio_foes ANIM_TARGET
playsewithpan SE_M_EMBER, SOUND_PAN_ATTACKER
waitplaysewithpan SE_M_EMBER, SOUND_PAN_ATTACKER, 10
createvisualtask SoundTask_AdjustPanningVar, 2, SOUND_PAN_ATTACKER, SOUND_PAN_ATTACKER, 1, 0
@@ -8084,7 +8084,7 @@ Move_WILL_O_WISP:
delay 40
createvisualtask SoundTask_AdjustPanningVar, 2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0
waitforvisualfinish
- monbgprio_29
+ splitbgprio_all
playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 13, 1
createsprite gWillOWispFireSpriteTemplate, ANIM_ATTACKER, 2, 0
@@ -8150,7 +8150,7 @@ Move_WISH:
loadspritegfx ANIM_TAG_SPARKLE_2
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 10, RGB_BLACK
waitforvisualfinish
- panse_27 SE_M_REFLECT, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, -3, 0
+ panse_adjustall SE_M_REFLECT, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, -3, 0
createsprite gWishStarSpriteTemplate, ANIM_ATTACKER, 40
waitforvisualfinish
delay 60
@@ -8552,7 +8552,7 @@ Move_SHEER_COLD:
waitbgfadein
loadspritegfx ANIM_TAG_ICE_CUBE
monbg ANIM_DEF_PARTNER
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
createvisualtask AnimTask_FrozenIceCube, 2
waitplaysewithpan SE_M_HAIL, SOUND_PAN_TARGET, 17
@@ -8566,7 +8566,7 @@ Move_SHEER_COLD:
Move_ARM_THRUST:
loadspritegfx ANIM_TAG_HANDS_AND_FEET
loadspritegfx ANIM_TAG_IMPACT
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, 0, 0
delay 6
@@ -8591,7 +8591,7 @@ ArmThrustLeft:
goto ArmThrustContinue
Move_MUDDY_WATER:
- panse_1B SE_M_WHIRLPOOL, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
+ panse SE_M_WHIRLPOOL, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
createvisualtask AnimTask_CreateSurfWave, 2, TRUE
waitforvisualfinish
end
@@ -8684,12 +8684,12 @@ DragonClawFireSpiral:
Move_MUD_SHOT:
loadspritegfx ANIM_TAG_BROWN_ORB
monbg ANIM_DEF_PARTNER
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 46, 1
delay 6
createvisualtask AnimTask_StartSinAnimTimer, 5, 100
- panse_1B SE_M_WHIRLPOOL, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0
+ panse SE_M_WHIRLPOOL, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0
call MudShotOrbs
call MudShotOrbs
call MudShotOrbs
@@ -8717,7 +8717,7 @@ Move_METEOR_MASH:
loadspritegfx ANIM_TAG_GOLD_STARS
loadspritegfx ANIM_TAG_IMPACT
loadspritegfx ANIM_TAG_HANDS_AND_FEET
- panse_1B SE_M_BARRIER, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +3, 0
+ panse SE_M_BARRIER, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +3, 0
fadetobg BG_COSMIC
waitbgfadein
waitforvisualfinish
@@ -8789,7 +8789,7 @@ Move_FRENZY_PLANT:
loadspritegfx ANIM_TAG_ROOTS
loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_TARGET
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 2, 0, 5, RGB_BLACK
waitforvisualfinish
@@ -8848,7 +8848,7 @@ Move_FRENZY_PLANT:
Move_METAL_SOUND:
loadspritegfx ANIM_TAG_METAL_SOUND_WAVES
monbg ANIM_DEF_PARTNER
- monbgprio_2A ANIM_TARGET
+ splitbgprio_foes ANIM_TARGET
createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 2, 0, 8, 1
call MetalSoundRings
call MetalSoundRings
@@ -8860,7 +8860,7 @@ Move_METAL_SOUND:
waitforvisualfinish
end
MetalSoundRings:
- panse_1B SE_M_SCREECH, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
+ panse SE_M_SCREECH, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
createsprite gMetalSoundSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0
delay 2
return
@@ -9154,11 +9154,11 @@ Move_ROCK_TOMB:
Move_SILVER_WIND:
loadspritegfx ANIM_TAG_SPARKLE_6
- panse_1B SE_M_GUST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
+ panse SE_M_GUST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
playsewithpan SE_M_MORNING_SUN, 0
delay 0
monbg ANIM_DEF_PARTNER
- monbgprio_29
+ splitbgprio_all
delay 0
createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, ANIM_TARGET, 0, 0, 4, RGB_BLACK
createvisualtask AnimTask_GetTargetSide, 2
@@ -9368,7 +9368,7 @@ Move_HYDRO_CANNON:
delay 10
createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257
delay 30
- panse_1B SE_M_HYDRO_PUMP, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
+ panse SE_M_HYDRO_PUMP, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
call HydroCannonBeam
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 10, 0, 40, 1
createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0
@@ -9494,7 +9494,7 @@ Move_WATER_PULSE:
loadspritegfx ANIM_TAG_SMALL_BUBBLES
loadspritegfx ANIM_TAG_BLUE_RING_2
monbg ANIM_TARGET
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 7, RGB(0, 25, 28)
delay 10
@@ -9531,7 +9531,7 @@ Move_PSYCHO_BOOST:
delay 6
createvisualtask AnimTask_BlendColorCycle, 2, 1, 2, 8, 0, 10, RGB_BLACK
delay 0
- monbgprio_28 ANIM_ATTACKER
+ splitbgprio ANIM_ATTACKER
setalpha 8, 8
delay 10
createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 3, 0, 240, 0
@@ -9591,7 +9591,7 @@ Move_DOOM_DESIRE:
Move_SKY_UPPERCUT:
loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
fadetobg BG_IN_AIR
waitbgfadeout
playsewithpan SE_M_SKY_UPPERCUT, SOUND_PAN_ATTACKER
@@ -9650,7 +9650,7 @@ Move_TWISTER:
loadspritegfx ANIM_TAG_IMPACT
loadspritegfx ANIM_TAG_ROCKS
monbg ANIM_DEF_PARTNER
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
playsewithpan SE_M_TWISTER, SOUND_PAN_TARGET
createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 120, 70, 5, 70, 30
delay 1
@@ -10267,7 +10267,7 @@ Status_Freeze:
playsewithpan SE_M_ICY_WIND, 0
loadspritegfx ANIM_TAG_ICE_CUBE
monbg ANIM_DEF_PARTNER
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
waitplaysewithpan SE_M_HAIL, SOUND_PAN_TARGET, 17
createvisualtask AnimTask_FrozenIceCube, 2
waitforvisualfinish
@@ -10296,7 +10296,7 @@ Status_Nightmare:
General_CastformChange:
createvisualtask AnimTask_IsMonInvisible, 2
- jumpreteq 1, CastformChangeSkipAnim
+ jumpreteq TRUE, CastformChangeSkipAnim
goto CastformChangeContinue
CastformChangeContinue:
monbg ANIM_ATTACKER
@@ -10384,7 +10384,7 @@ Status_FireSpin:
Status_Whirlpool:
loadspritegfx ANIM_TAG_WATER_ORB
monbg ANIM_DEF_PARTNER
- monbgprio_28 ANIM_TARGET
+ splitbgprio ANIM_TARGET
setalpha 12, 8
delay 0
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, RGB(0, 13, 23)
diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s
index 951558234..eecb3d08d 100644
--- a/data/battle_scripts_1.s
+++ b/data/battle_scripts_1.s
@@ -262,7 +262,7 @@ BattleScript_HitFromAtkAnimation::
resultmessage
waitmessage B_WAIT_TIME_LONG
seteffectwithchance
- tryfaintmon BS_TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET
BattleScript_MoveEnd::
moveendall
end
@@ -354,8 +354,8 @@ BattleScript_AbsorbUpdateHp::
printfromtable gAbsorbDrainStringIds
waitmessage B_WAIT_TIME_LONG
BattleScript_AbsorbTryFainting::
- tryfaintmon BS_ATTACKER, FALSE, NULL
- tryfaintmon BS_TARGET, FALSE, NULL
+ tryfaintmon BS_ATTACKER
+ tryfaintmon BS_TARGET
goto BattleScript_MoveEnd
BattleScript_EffectBurnHit::
@@ -399,10 +399,10 @@ BattleScript_ExplosionLoop:
waitmessage B_WAIT_TIME_LONG
resultmessage
waitmessage B_WAIT_TIME_LONG
- tryfaintmon BS_TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET
moveendto MOVEEND_NEXT_TARGET
jumpifnexttargetvalid BattleScript_ExplosionLoop
- tryfaintmon BS_ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER
end
BattleScript_ExplosionMissed:
effectivenesssound
@@ -410,7 +410,7 @@ BattleScript_ExplosionMissed:
waitmessage B_WAIT_TIME_LONG
moveendto MOVEEND_NEXT_TARGET
jumpifnexttargetvalid BattleScript_ExplosionLoop
- tryfaintmon BS_ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER
end
BattleScript_PreserveMissedBitDoMoveAnim:
@@ -456,7 +456,7 @@ BattleScript_DreamEaterWorked:
printstring STRINGID_PKMNDREAMEATEN
waitmessage B_WAIT_TIME_LONG
BattleScript_DreamEaterTryFaintEnd:
- tryfaintmon BS_TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET
goto BattleScript_MoveEnd
BattleScript_EffectMirrorMove::
@@ -647,7 +647,7 @@ BattleScript_MultiHitPrintStrings::
waitmessage B_WAIT_TIME_LONG
BattleScript_MultiHitEnd::
seteffectwithchance
- tryfaintmon BS_TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET
moveendcase MOVEEND_SYNCHRONIZE_TARGET
moveendfrom MOVEEND_IMMUNITY_ABILITIES
end
@@ -865,7 +865,7 @@ BattleScript_MoveMissedDoDamage::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
healthbarupdate BS_ATTACKER
datahpupdate BS_ATTACKER
- tryfaintmon BS_ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER
orbyte gMoveResultFlags, MOVE_RESULT_MISSED
goto BattleScript_MoveEnd
@@ -1431,7 +1431,7 @@ BattleScript_TripleKickPrintStrings::
waitmessage B_WAIT_TIME_LONG
BattleScript_TripleKickEnd::
seteffectwithchance
- tryfaintmon BS_TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET
moveendfrom MOVEEND_UPDATE_LAST_MOVES
end
@@ -1524,7 +1524,7 @@ BattleScript_DoGhostCurse::
datahpupdate BS_ATTACKER
printstring STRINGID_PKMNLAIDCURSE
waitmessage B_WAIT_TIME_LONG
- tryfaintmon BS_ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER
goto BattleScript_MoveEnd
BattleScript_EffectProtect::
@@ -1862,7 +1862,7 @@ BattleScript_DoHitAllWithUndergroundBonus::
waitmessage B_WAIT_TIME_LONG
printstring STRINGID_EMPTYSTRING3
waitmessage 1
- tryfaintmon BS_TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET
moveendto MOVEEND_NEXT_TARGET
jumpifnexttargetvalid BattleScript_HitsAllWithUndergroundBonusLoop
end
@@ -1962,7 +1962,7 @@ BattleScript_BeatUpAttack::
waitmessage B_WAIT_TIME_LONG
resultmessage
waitmessage B_WAIT_TIME_LONG
- tryfaintmon BS_TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET
moveendto MOVEEND_NEXT_TARGET
goto BattleScript_BeatUpLoop
BattleScript_BeatUpEnd::
@@ -2227,7 +2227,7 @@ BattleScript_EffectMementoTrySpAtk:
printfromtable gStatDownStringIds
waitmessage B_WAIT_TIME_LONG
BattleScript_EffectMementoTryFaint:
- tryfaintmon BS_ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER
goto BattleScript_MoveEnd
BattleScript_EffectMementoPrintNoEffect:
printstring STRINGID_BUTNOEFFECT
@@ -2243,7 +2243,7 @@ BattleScript_MementoFailEnd:
effectivenesssound
resultmessage
waitmessage B_WAIT_TIME_LONG
- tryfaintmon BS_ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER
goto BattleScript_MoveEnd
BattleScript_EffectFacade::
@@ -2442,7 +2442,7 @@ BattleScript_BrickBreakDoHit::
resultmessage
waitmessage B_WAIT_TIME_LONG
seteffectwithchance
- tryfaintmon BS_TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET
goto BattleScript_MoveEnd
BattleScript_EffectYawn::
@@ -2825,35 +2825,40 @@ BattleScript_GiveExp::
end2
BattleScript_HandleFaintedMon::
- atk24 BattleScript_HandleFaintedMonMultiple
+ checkteamslost BattleScript_LinkHandleFaintedMonMultiple
jumpifbyte CMP_NOT_EQUAL, gBattleOutcome, 0, BattleScript_FaintedMonEnd
- jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_FaintedMonTryChooseAnother
- jumpifword CMP_NO_COMMON_BITS, gHitMarker, HITMARKER_PLAYER_FAINTED, BattleScript_FaintedMonTryChooseAnother
+ jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_FaintedMonTryChoose
+ jumpifword CMP_NO_COMMON_BITS, gHitMarker, HITMARKER_PLAYER_FAINTED, BattleScript_FaintedMonTryChoose
+@ Yes/No for sending out a new Pokémon if one is defeated in a wild battle
printstring STRINGID_USENEXTPKMN
setbyte gBattleCommunication, 0
yesnobox
- jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 0, BattleScript_FaintedMonTryChooseAnother
+ jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 0, BattleScript_FaintedMonTryChoose
+@ Player said no, try to run
jumpifplayerran BattleScript_FaintedMonEnd
printstring STRINGID_CANTESCAPE2
-BattleScript_FaintedMonTryChooseAnother::
+BattleScript_FaintedMonTryChoose::
openpartyscreen BS_FAINTED, BattleScript_FaintedMonEnd
switchhandleorder BS_FAINTED, 2
- jumpifnotbattletype BATTLE_TYPE_TRAINER, BattleScript_FaintedMonChooseAnother
- jumpifbattletype BATTLE_TYPE_LINK, BattleScript_FaintedMonChooseAnother
- jumpifbattletype BATTLE_TYPE_RECORDED_LINK, BattleScript_FaintedMonChooseAnother
- jumpifbattletype BATTLE_TYPE_FRONTIER, BattleScript_FaintedMonChooseAnother
- jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_FaintedMonChooseAnother
- jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_PLAYER_FAINTED, BattleScript_FaintedMonChooseAnother
- jumpifbyte CMP_EQUAL, sBATTLE_STYLE, OPTIONS_BATTLE_STYLE_SET, BattleScript_FaintedMonChooseAnother
- jumpifcantswitch BS_PLAYER1, BattleScript_FaintedMonChooseAnother
+ jumpifnotbattletype BATTLE_TYPE_TRAINER, BattleScript_FaintedMonSendOutNew
+ jumpifbattletype BATTLE_TYPE_LINK, BattleScript_FaintedMonSendOutNew
+ jumpifbattletype BATTLE_TYPE_RECORDED_LINK, BattleScript_FaintedMonSendOutNew
+ jumpifbattletype BATTLE_TYPE_FRONTIER, BattleScript_FaintedMonSendOutNew
+ jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_FaintedMonSendOutNew
+ jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_PLAYER_FAINTED, BattleScript_FaintedMonSendOutNew
+ jumpifbyte CMP_EQUAL, sBATTLE_STYLE, OPTIONS_BATTLE_STYLE_SET, BattleScript_FaintedMonSendOutNew
+ jumpifcantswitch BS_PLAYER1, BattleScript_FaintedMonSendOutNew
+@ Yes/No for sending out a new Pokémon when the opponent is switching
printstring STRINGID_ENEMYABOUTTOSWITCHPKMN
setbyte gBattleCommunication, 0
yesnobox
- jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 1, BattleScript_FaintedMonChooseAnother
+ jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 1, BattleScript_FaintedMonSendOutNew
+@ Player said yes, go to party screen (note optional flag, player may exit the menu instead)
setatktoplayer0
- openpartyscreen BS_ATTACKER | PARTY_SCREEN_OPTIONAL, BattleScript_FaintedMonChooseAnother
+ openpartyscreen BS_ATTACKER | PARTY_SCREEN_OPTIONAL, BattleScript_FaintedMonSendOutNew
switchhandleorder BS_ATTACKER, 2
- jumpifbyte CMP_EQUAL, gBattleCommunication, PARTY_SIZE, BattleScript_FaintedMonChooseAnother
+ jumpifbyte CMP_EQUAL, gBattleCommunication, PARTY_SIZE, BattleScript_FaintedMonSendOutNew
+@ Switch Pokémon before opponent
atknameinbuff1
resetintimidatetracebits BS_ATTACKER
hpthresholds2 BS_ATTACKER
@@ -2872,7 +2877,7 @@ BattleScript_FaintedMonTryChooseAnother::
waitstate
switchineffects BS_ATTACKER
resetsentmonsvalue
-BattleScript_FaintedMonChooseAnother::
+BattleScript_FaintedMonSendOutNew::
drawpartystatussummary BS_FAINTED
getswitchedmondata BS_FAINTED
switchindataupdate BS_FAINTED
@@ -2888,13 +2893,13 @@ BattleScript_FaintedMonChooseAnother::
BattleScript_FaintedMonEnd::
end2
-BattleScript_HandleFaintedMonMultiple::
- openpartyscreen BS_UNK_5, BattleScript_HandleFaintedMonMultipleStart
-BattleScript_HandleFaintedMonMultipleStart::
+BattleScript_LinkHandleFaintedMonMultiple::
+ openpartyscreen BS_FAINTED_LINK_MULTIPLE_1, BattleScript_LinkHandleFaintedMonMultipleStart
+BattleScript_LinkHandleFaintedMonMultipleStart::
switchhandleorder BS_FAINTED, 0
- openpartyscreen BS_UNK_6, BattleScript_HandleFaintedMonMultipleEnd
+ openpartyscreen BS_FAINTED_LINK_MULTIPLE_2, BattleScript_LinkHandleFaintedMonMultipleEnd
switchhandleorder BS_FAINTED, 0
-BattleScript_HandleFaintedMonLoop::
+BattleScript_LinkHandleFaintedMonLoop::
switchhandleorder BS_FAINTED, 3
drawpartystatussummary BS_FAINTED
getswitchedmondata BS_FAINTED
@@ -2904,9 +2909,9 @@ BattleScript_HandleFaintedMonLoop::
hidepartystatussummary BS_FAINTED
switchinanim BS_FAINTED, FALSE
waitstate
- switchineffects 5
- jumpifbytenotequal gBattlerFainted, gBattlersCount, BattleScript_HandleFaintedMonLoop
-BattleScript_HandleFaintedMonMultipleEnd::
+ switchineffects BS_FAINTED_LINK_MULTIPLE_1
+ jumpifbytenotequal gBattlerFainted, gBattlersCount, BattleScript_LinkHandleFaintedMonLoop
+BattleScript_LinkHandleFaintedMonMultipleEnd::
end2
BattleScript_LocalTrainerBattleWon::
@@ -3040,7 +3045,7 @@ BattleScript_FrontierTrainerBattleWon_End:
end2
BattleScript_SmokeBallEscape::
- playanimation BS_ATTACKER, B_ANIM_SMOKEBALL_ESCAPE, NULL
+ playanimation BS_ATTACKER, B_ANIM_SMOKEBALL_ESCAPE
printstring STRINGID_PKMNFLEDUSINGITS
waitmessage B_WAIT_TIME_LONG
end2
@@ -3131,7 +3136,7 @@ BattleScript_PursuitDmgOnSwitchOut::
waitmessage B_WAIT_TIME_LONG
resultmessage
waitmessage B_WAIT_TIME_LONG
- tryfaintmon BS_TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET
moveendfromto MOVEEND_ON_DAMAGE_ABILITIES, MOVEEND_CHOICE_MOVE
getbattlerfainted BS_TARGET
jumpifbyte CMP_EQUAL, gBattleCommunication, FALSE, BattleScript_PursuitDmgOnSwitchOutRet
@@ -3185,14 +3190,14 @@ BattleScript_RainContinuesOrEnds::
printfromtable gRainContinuesStringIds
waitmessage B_WAIT_TIME_LONG
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_RAIN_STOPPED, BattleScript_RainContinuesOrEndsEnd
- playanimation BS_ATTACKER, B_ANIM_RAIN_CONTINUES, NULL
+ playanimation BS_ATTACKER, B_ANIM_RAIN_CONTINUES
BattleScript_RainContinuesOrEndsEnd::
end2
BattleScript_DamagingWeatherContinues::
printfromtable gSandStormHailContinuesStringIds
waitmessage B_WAIT_TIME_LONG
- playanimation2 BS_ATTACKER, sB_ANIM_ARG1, NULL
+ playanimation_var BS_ATTACKER, sB_ANIM_ARG1
setbyte gBattleCommunication, 0
BattleScript_DamagingWeatherLoop::
copyarraywithindex gBattlerAttacker, gBattlerByTurnOrder, gBattleCommunication, 1
@@ -3205,8 +3210,8 @@ BattleScript_DamagingWeatherLoop::
hitanimation BS_ATTACKER
healthbarupdate BS_ATTACKER
datahpupdate BS_ATTACKER
- tryfaintmon BS_ATTACKER, FALSE, NULL
- atk24 BattleScript_DamagingWeatherLoopIncrement
+ tryfaintmon BS_ATTACKER
+ checkteamslost BattleScript_DamagingWeatherLoopIncrement
BattleScript_DamagingWeatherLoopIncrement::
jumpifbyte CMP_NOT_EQUAL, gBattleOutcome, 0, BattleScript_DamagingWeatherContinuesEnd
addbyte gBattleCommunication, 1
@@ -3223,7 +3228,7 @@ BattleScript_SandStormHailEnds::
BattleScript_SunlightContinues::
printstring STRINGID_SUNLIGHTSTRONG
waitmessage B_WAIT_TIME_LONG
- playanimation BS_ATTACKER, B_ANIM_SUN_CONTINUES, NULL
+ playanimation BS_ATTACKER, B_ANIM_SUN_CONTINUES
end2
BattleScript_SunlightFaded::
@@ -3234,7 +3239,7 @@ BattleScript_SunlightFaded::
BattleScript_OverworldWeatherStarts::
printfromtable gWeatherStartsStringIds
waitmessage B_WAIT_TIME_LONG
- playanimation2 BS_ATTACKER, sB_ANIM_ARG1, NULL
+ playanimation_var BS_ATTACKER, sB_ANIM_ARG1
end3
BattleScript_SideStatusWoreOff::
@@ -3272,8 +3277,8 @@ BattleScript_LeechSeedTurnPrintAndUpdateHp::
datahpupdate BS_TARGET
printfromtable gLeechSeedStringIds
waitmessage B_WAIT_TIME_LONG
- tryfaintmon BS_ATTACKER, FALSE, NULL
- tryfaintmon BS_TARGET, FALSE, NULL
+ tryfaintmon BS_ATTACKER
+ tryfaintmon BS_TARGET
end2
BattleScript_BideStoringEnergy::
@@ -3302,7 +3307,7 @@ BattleScript_BideAttack::
datahpupdate BS_TARGET
resultmessage
waitmessage B_WAIT_TIME_LONG
- tryfaintmon BS_TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET
goto BattleScript_MoveEnd
BattleScript_BideNoEnergyToAttack::
@@ -3374,7 +3379,7 @@ BattleScript_DestinyBondTakesLife::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE
healthbarupdate BS_ATTACKER
datahpupdate BS_ATTACKER
- tryfaintmon BS_ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER
return
BattleScript_SpikesOnAttacker::
@@ -3382,8 +3387,8 @@ BattleScript_SpikesOnAttacker::
healthbarupdate BS_ATTACKER
datahpupdate BS_ATTACKER
call BattleScript_PrintHurtBySpikes
- tryfaintmon BS_ATTACKER, FALSE, NULL
- tryfaintmon BS_ATTACKER, TRUE, BattleScript_SpikesOnAttackerFainted
+ tryfaintmon BS_ATTACKER
+ tryfaintmon_spikes BS_ATTACKER, BattleScript_SpikesOnAttackerFainted
return
BattleScript_SpikesOnAttackerFainted::
@@ -3397,8 +3402,8 @@ BattleScript_SpikesOnTarget::
healthbarupdate BS_TARGET
datahpupdate BS_TARGET
call BattleScript_PrintHurtBySpikes
- tryfaintmon BS_TARGET, FALSE, NULL
- tryfaintmon BS_TARGET, TRUE, BattleScript_SpikesOnTargetFainted
+ tryfaintmon BS_TARGET
+ tryfaintmon_spikes BS_TARGET, BattleScript_SpikesOnTargetFainted
return
BattleScript_SpikesOnTargetFainted::
@@ -3412,8 +3417,8 @@ BattleScript_SpikesOnFaintedBattler::
healthbarupdate BS_FAINTED
datahpupdate BS_FAINTED
call BattleScript_PrintHurtBySpikes
- tryfaintmon BS_FAINTED, FALSE, NULL
- tryfaintmon BS_FAINTED, TRUE, BattleScript_SpikesOnFaintedBattlerFainted
+ tryfaintmon BS_FAINTED
+ tryfaintmon_spikes BS_FAINTED, BattleScript_SpikesOnFaintedBattlerFainted
return
BattleScript_SpikesOnFaintedBattlerFainted::
@@ -3433,7 +3438,7 @@ BattleScript_PerishSongTakesLife::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE
healthbarupdate BS_ATTACKER
datahpupdate BS_ATTACKER
- tryfaintmon BS_ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER
end2
BattleScript_PerishSongCountGoesDown::
@@ -3508,10 +3513,10 @@ BattleScript_CheckDoomDesireMiss::
BattleScript_FutureAttackAnimate::
adjustnormaldamage2
jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, B_MSG_FUTURE_SIGHT, BattleScript_FutureHitAnimDoomDesire
- playanimation BS_ATTACKER, B_ANIM_FUTURE_SIGHT_HIT, NULL
+ playanimation BS_ATTACKER, B_ANIM_FUTURE_SIGHT_HIT
goto BattleScript_DoFutureAttackHit
BattleScript_FutureHitAnimDoomDesire::
- playanimation BS_ATTACKER, B_ANIM_DOOM_DESIRE_HIT, NULL
+ playanimation BS_ATTACKER, B_ANIM_DOOM_DESIRE_HIT
BattleScript_DoFutureAttackHit::
effectivenesssound
hitanimation BS_TARGET
@@ -3520,8 +3525,8 @@ BattleScript_DoFutureAttackHit::
datahpupdate BS_TARGET
resultmessage
waitmessage B_WAIT_TIME_LONG
- tryfaintmon BS_TARGET, FALSE, NULL
- atk24 BattleScript_FutureAttackEnd
+ tryfaintmon BS_TARGET
+ checkteamslost BattleScript_FutureAttackEnd
BattleScript_FutureAttackEnd::
moveendcase MOVEEND_RAGE
moveendfromto MOVEEND_ITEM_EFFECTS_ALL, MOVEEND_UPDATE_LAST_MOVES
@@ -3580,7 +3585,7 @@ BattleScript_SelectingNotAllowedMoveTauntInPalace::
BattleScript_WishComesTrue::
trywish 1, BattleScript_WishButFullHp
- playanimation BS_TARGET, B_ANIM_WISH_HEAL, NULL
+ playanimation BS_TARGET, B_ANIM_WISH_HEAL
printstring STRINGID_PKMNWISHCAMETRUE
waitmessage B_WAIT_TIME_LONG
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
@@ -3599,7 +3604,7 @@ BattleScript_WishButFullHp::
end2
BattleScript_IngrainTurnHeal::
- playanimation BS_ATTACKER, B_ANIM_INGRAIN_HEAL, NULL
+ playanimation BS_ATTACKER, B_ANIM_INGRAIN_HEAL
printstring STRINGID_PKMNABSORBEDNUTRIENTS
waitmessage B_WAIT_TIME_LONG
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
@@ -3633,7 +3638,7 @@ BattleScript_AtkDefDown_End::
return
BattleScript_KnockedOff::
- playanimation BS_TARGET, B_ANIM_ITEM_KNOCKOFF, NULL
+ playanimation BS_TARGET, B_ANIM_ITEM_KNOCKOFF
printstring STRINGID_PKMNKNOCKEDOFF
waitmessage B_WAIT_TIME_LONG
return
@@ -3670,7 +3675,7 @@ BattleScript_SnatchedMove::
attackstring
ppreduce
snatchsetbattlers
- playanimation BS_TARGET, B_ANIM_SNATCH_MOVE, NULL
+ playanimation BS_TARGET, B_ANIM_SNATCH_MOVE
printstring STRINGID_PKMNSNATCHEDMOVE
waitmessage B_WAIT_TIME_LONG
orword gHitMarker, HITMARKER_ATTACKSTRING_PRINTED | HITMARKER_NO_PPDEDUCT | HITMARKER_ALLOW_NO_PP
@@ -3701,7 +3706,7 @@ BattleScript_SAtkDown2End::
BattleScript_FocusPunchSetUp::
printstring STRINGID_EMPTYSTRING3
waitmessage 1
- playanimation BS_ATTACKER, B_ANIM_FOCUS_PUNCH_SETUP, NULL
+ playanimation BS_ATTACKER, B_ANIM_FOCUS_PUNCH_SETUP
printstring STRINGID_PKMNTIGHTENINGFOCUS
waitmessage B_WAIT_TIME_LONG
end2
@@ -3734,8 +3739,8 @@ BattleScript_DoTurnDmg::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE
healthbarupdate BS_ATTACKER
datahpupdate BS_ATTACKER
- tryfaintmon BS_ATTACKER, FALSE, NULL
- atk24 BattleScript_DoTurnDmgEnd
+ tryfaintmon BS_ATTACKER
+ checkteamslost BattleScript_DoTurnDmgEnd
BattleScript_DoTurnDmgEnd::
end2
@@ -3803,7 +3808,7 @@ BattleScript_DoSelfConfusionDmg::
datahpupdate BS_ATTACKER
resultmessage
waitmessage B_WAIT_TIME_LONG
- tryfaintmon BS_ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER
goto BattleScript_MoveEnd
BattleScript_MoveUsedIsConfusedRet::
return
@@ -3936,12 +3941,12 @@ BattleScript_DoRecoil::
datahpupdate BS_ATTACKER
printstring STRINGID_PKMNHITWITHRECOIL
waitmessage B_WAIT_TIME_LONG
- tryfaintmon BS_ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER
BattleScript_RecoilEnd::
return
BattleScript_ItemSteal::
- playanimation BS_TARGET, B_ANIM_ITEM_STEAL, NULL
+ playanimation BS_TARGET, B_ANIM_ITEM_STEAL
printstring STRINGID_PKMNSTOLEITEM
waitmessage B_WAIT_TIME_LONG
return
@@ -3950,7 +3955,7 @@ BattleScript_DrizzleActivates::
pause B_WAIT_TIME_SHORT
printstring STRINGID_PKMNMADEITRAIN
waitstate
- playanimation BS_BATTLER_0, B_ANIM_RAIN_CONTINUES, NULL
+ playanimation BS_BATTLER_0, B_ANIM_RAIN_CONTINUES
call BattleScript_WeatherFormChanges
end3
@@ -3978,7 +3983,7 @@ BattleScript_SandstreamActivates::
pause B_WAIT_TIME_SHORT
printstring STRINGID_PKMNSXWHIPPEDUPSANDSTORM
waitstate
- playanimation BS_BATTLER_0, B_ANIM_SANDSTORM_CONTINUES, NULL
+ playanimation BS_BATTLER_0, B_ANIM_SANDSTORM_CONTINUES
call BattleScript_WeatherFormChanges
end3
@@ -4043,7 +4048,7 @@ BattleScript_DroughtActivates::
pause B_WAIT_TIME_SHORT
printstring STRINGID_PKMNSXINTENSIFIEDSUN
waitstate
- playanimation BS_BATTLER_0, B_ANIM_SUN_CONTINUES, NULL
+ playanimation BS_BATTLER_0, B_ANIM_SUN_CONTINUES
call BattleScript_WeatherFormChanges
end3
@@ -4179,7 +4184,7 @@ BattleScript_RoughSkinActivates::
datahpupdate BS_ATTACKER
printstring STRINGID_PKMNHURTSWITH
waitmessage B_WAIT_TIME_LONG
- tryfaintmon BS_ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER
return
BattleScript_CuteCharmActivates::
@@ -4247,7 +4252,7 @@ BattleScript_IgnoresAndHitsItself::
goto BattleScript_DoSelfConfusionDmg
BattleScript_SubstituteFade::
- playanimation BS_TARGET, B_ANIM_SUBSTITUTE_FADE, NULL
+ playanimation BS_TARGET, B_ANIM_SUBSTITUTE_FADE
printstring STRINGID_PKMNSUBSTITUTEFADED
return
@@ -4256,7 +4261,7 @@ BattleScript_BerryCurePrlzEnd2::
end2
BattleScript_BerryCureParRet::
- playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL
+ playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMCUREDPARALYSIS
waitmessage B_WAIT_TIME_LONG
updatestatusicon BS_SCRIPTING
@@ -4268,7 +4273,7 @@ BattleScript_BerryCurePsnEnd2::
end2
BattleScript_BerryCurePsnRet::
- playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL
+ playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMCUREDPOISON
waitmessage B_WAIT_TIME_LONG
updatestatusicon BS_SCRIPTING
@@ -4280,7 +4285,7 @@ BattleScript_BerryCureBrnEnd2::
end2
BattleScript_BerryCureBrnRet::
- playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL
+ playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMHEALEDBURN
waitmessage B_WAIT_TIME_LONG
updatestatusicon BS_SCRIPTING
@@ -4292,7 +4297,7 @@ BattleScript_BerryCureFrzEnd2::
end2
BattleScript_BerryCureFrzRet::
- playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL
+ playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMDEFROSTEDIT
waitmessage B_WAIT_TIME_LONG
updatestatusicon BS_SCRIPTING
@@ -4304,7 +4309,7 @@ BattleScript_BerryCureSlpEnd2::
end2
BattleScript_BerryCureSlpRet::
- playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL
+ playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMWOKEIT
waitmessage B_WAIT_TIME_LONG
updatestatusicon BS_SCRIPTING
@@ -4316,7 +4321,7 @@ BattleScript_BerryCureConfusionEnd2::
end2
BattleScript_BerryCureConfusionRet::
- playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL
+ playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMSNAPPEDOUT
waitmessage B_WAIT_TIME_LONG
removeitem BS_SCRIPTING
@@ -4327,7 +4332,7 @@ BattleScript_BerryCureChosenStatusEnd2::
end2
BattleScript_BerryCureChosenStatusRet::
- playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL
+ playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printfromtable gBerryEffectStringIds
waitmessage B_WAIT_TIME_LONG
updatestatusicon BS_SCRIPTING
@@ -4339,14 +4344,14 @@ BattleScript_WhiteHerbEnd2::
end2
BattleScript_WhiteHerbRet::
- playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL
+ playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMRESTOREDSTATUS
waitmessage B_WAIT_TIME_LONG
removeitem BS_SCRIPTING
return
BattleScript_ItemHealHP_RemoveItem::
- playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT, NULL
+ playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMRESTOREDHEALTH
waitmessage B_WAIT_TIME_LONG
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
@@ -4356,7 +4361,7 @@ BattleScript_ItemHealHP_RemoveItem::
end2
BattleScript_BerryPPHealEnd2::
- playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT, NULL
+ playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMRESTOREDPP
waitmessage B_WAIT_TIME_LONG
removeitem BS_ATTACKER
@@ -4367,7 +4372,7 @@ BattleScript_ItemHealHP_End2::
end2
BattleScript_ItemHealHP_Ret::
- playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT, NULL
+ playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMRESTOREDHPALITTLE
waitmessage B_WAIT_TIME_LONG
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
@@ -4380,13 +4385,13 @@ BattleScript_SelectingNotAllowedMoveChoiceItem::
endselectionscript
BattleScript_FocusBandActivates::
- playanimation BS_TARGET, B_ANIM_FOCUS_BAND, NULL
+ playanimation BS_TARGET, B_ANIM_FOCUS_BAND
printstring STRINGID_PKMNHUNGONWITHX
waitmessage B_WAIT_TIME_LONG
return
BattleScript_BerryConfuseHealEnd2::
- playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT, NULL
+ playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMRESTOREDHEALTH
waitmessage B_WAIT_TIME_LONG
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
@@ -4400,7 +4405,7 @@ BattleScript_BerryConfuseHealEnd2::
end2
BattleScript_BerryStatRaiseEnd2::
- playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT, NULL
+ playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_BerryStatRaiseDoStatUp
BattleScript_BerryStatRaiseDoStatUp::
setbyte cMULTISTRING_CHOOSER, B_MSG_STAT_ROSE_ITEM
@@ -4409,7 +4414,7 @@ BattleScript_BerryStatRaiseDoStatUp::
end2
BattleScript_BerryFocusEnergyEnd2::
- playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT, NULL
+ playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNUSEDXTOGETPUMPED
waitmessage B_WAIT_TIME_LONG
removeitem BS_ATTACKER
diff --git a/graphics/unknown/unknown_593FFC.bin b/graphics/battle_anims/unused_water.bin
index dc2990b0a..dc2990b0a 100644
--- a/graphics/unknown/unknown_593FFC.bin
+++ b/graphics/battle_anims/unused_water.bin
Binary files differ
diff --git a/graphics/unknown/unknown_593C80.png b/graphics/battle_anims/unused_water_gfx.png
index c4a27b929..c4a27b929 100644
--- a/graphics/unknown/unknown_593C80.png
+++ b/graphics/battle_anims/unused_water_gfx.png
Binary files differ
diff --git a/graphics/battle_interface/unk_battlebox.png b/graphics/battle_interface/level_up_banner.png
index 24700ef4d..24700ef4d 100644
--- a/graphics/battle_interface/unk_battlebox.png
+++ b/graphics/battle_interface/level_up_banner.png
Binary files differ
diff --git a/include/battle.h b/include/battle.h
index e32e621cc..9434b9aa8 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -17,6 +17,11 @@
#define GET_BATTLER_SIDE(battler) (GetBattlerPosition(battler) & BIT_SIDE)
#define GET_BATTLER_SIDE2(battler) (GET_BATTLER_POSITION(battler) & BIT_SIDE)
+// Used to exclude moves learned temporarily by Transform or Mimic
+#define MOVE_IS_PERMANENT(battler, moveSlot) \
+ (!(gBattleMons[battler].status2 & STATUS2_TRANSFORMED) \
+ && !(gDisableStructs[battler].mimickedMoves & gBitTable[moveSlot]))
+
// Battle Actions
// These determine what each battler will do in a turn
#define B_ACTION_USE_MOVE 0
@@ -32,32 +37,21 @@
#define B_ACTION_EXEC_SCRIPT 10
#define B_ACTION_TRY_FINISH 11
#define B_ACTION_FINISHED 12
-
#define B_ACTION_CANCEL_PARTNER 12 // when choosing an action
#define B_ACTION_NOTHING_FAINTED 13 // when choosing an action
#define B_ACTION_NONE 0xFF
-// array entries for battle communication
-#define MULTIUSE_STATE 0
-#define CURSOR_POSITION 1
-#define TASK_ID 1 // task Id and cursor position share the same field
-#define SPRITES_INIT_STATE1 1 // shares the Id as well
-#define SPRITES_INIT_STATE2 2
-#define MOVE_EFFECT_BYTE 3
-#define ACTIONS_CONFIRMED_COUNT 4
-#define MULTISTRING_CHOOSER 5
-#define MISS_TYPE 6
-#define MSG_DISPLAY 7
-#define BATTLE_COMMUNICATION_ENTRIES_COUNT 8
-
-#define MOVE_TARGET_SELECTED 0x0
-#define MOVE_TARGET_DEPENDS 0x1
-#define MOVE_TARGET_USER_OR_SELECTED 0x2
-#define MOVE_TARGET_RANDOM 0x4
-#define MOVE_TARGET_BOTH 0x8
-#define MOVE_TARGET_USER 0x10
-#define MOVE_TARGET_FOES_AND_ALLY 0x20
-#define MOVE_TARGET_OPPONENTS_FIELD 0x40
+#define MOVE_TARGET_SELECTED 0
+#define MOVE_TARGET_DEPENDS (1 << 0)
+#define MOVE_TARGET_USER_OR_SELECTED (1 << 1)
+#define MOVE_TARGET_RANDOM (1 << 2)
+#define MOVE_TARGET_BOTH (1 << 3)
+#define MOVE_TARGET_USER (1 << 4)
+#define MOVE_TARGET_FOES_AND_ALLY (1 << 5)
+#define MOVE_TARGET_OPPONENTS_FIELD (1 << 6)
+
+// For the second argument of GetMoveTarget, when no target override is needed
+#define NO_TARGET_OVERRIDE 0
#define BATTLE_BUFFER_LINK_SIZE 0x1000
@@ -115,7 +109,7 @@ struct ProtectStruct
u32 confusionSelfDmg:1;
u32 targetNotAffected:1;
u32 chargingTurn:1;
- u32 fleeFlag:2; // For RunAway and Smoke Ball.
+ u32 fleeType:2; // 0: Normal, 1: FLEE_ITEM, 2: FLEE_ABILITY
u32 usedImprisonedMove:1;
u32 loveImmobility:1;
u32 usedDisabledMove:1;
@@ -138,7 +132,7 @@ struct SpecialStatus
u32 intimidatedMon:1;
u32 traced:1;
u32 ppNotAffectedByPressure:1;
- u32 flag40:1;
+ u32 faintedHasReplacement:1;
u32 focusBanded:1;
s32 dmg;
s32 physicalDmg;
@@ -377,9 +371,9 @@ struct BattleStruct
u8 field_52;
u8 sentInPokes;
bool8 selectionScriptFinished[MAX_BATTLERS_COUNT];
- u8 field_58[4];
+ u8 battlerPartyIndexes[MAX_BATTLERS_COUNT];
u8 monToSwitchIntoId[MAX_BATTLERS_COUNT];
- u8 field_60[4][3];
+ u8 battlerPartyOrders[MAX_BATTLERS_COUNT][PARTY_SIZE / 2];
u8 runTries;
u8 caughtMonNick[POKEMON_NAME_LENGTH + 1];
u8 unused_2;
@@ -398,7 +392,7 @@ struct BattleStruct
u8 stringMoveType;
u8 expGetterBattlerId;
u8 unused_5;
- u8 field_91; // related to gAbsentBattlerFlags, possibly absent flags turn ago?
+ u8 absentBattlerFlags;
u8 palaceFlags; // First 4 bits are "is < 50% HP and not asleep" for each battler, last 4 bits are selected moves to pass to AI
u8 field_93; // related to choosing pokemon?
u8 wallyBattleState;
@@ -426,7 +420,7 @@ struct BattleStruct
u8 unused_6[3];
u8 givenExpMons; // Bits for enemy party's pokemon that gave exp to player's party.
u8 lastTakenMoveFrom[MAX_BATTLERS_COUNT * MAX_BATTLERS_COUNT * 2]; // a 3-D array [target][attacker][byte]
- u16 castformPalette[MAX_BATTLERS_COUNT][16];
+ u16 castformPalette[NUM_CASTFORM_FORMS][16];
union {
struct LinkBattlerHeader linkBattlerHeader;
u32 battleVideo[2];
@@ -447,12 +441,16 @@ struct BattleStruct
u8 alreadyStatusedMoveAttempt; // As bits for battlers; For example when using Thunder Wave on an already paralyzed pokemon.
};
-#define GET_MOVE_TYPE(move, typeArg) \
-{ \
- if (gBattleStruct->dynamicMoveType) \
- typeArg = gBattleStruct->dynamicMoveType & 0x3F; \
- else \
- typeArg = gBattleMoves[move].type; \
+#define F_DYNAMIC_TYPE_1 (1 << 6)
+#define F_DYNAMIC_TYPE_2 (1 << 7)
+#define DYNAMIC_TYPE_MASK (F_DYNAMIC_TYPE_1 - 1)
+
+#define GET_MOVE_TYPE(move, typeArg) \
+{ \
+ if (gBattleStruct->dynamicMoveType) \
+ typeArg = gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK; \
+ else \
+ typeArg = gBattleMoves[move].type; \
}
#define IS_TYPE_PHYSICAL(moveType)(moveType < TYPE_MYSTERY)
@@ -476,6 +474,8 @@ struct BattleStruct
#define SET_STATCHANGER(statId, stage, goesDown)(gBattleScripting.statChanger = (statId) + (stage << 4) + (goesDown << 7))
+// NOTE: The members of this struct have hard-coded offsets
+// in include/constants/battle_script_commands.h
struct BattleScripting
{
s32 painSplitHp;
@@ -498,18 +498,15 @@ struct BattleScripting
u8 battleStyle;
u8 drawlvlupboxState;
u8 learnMoveState;
- u8 field_20;
+ u8 pursuitDoublesAttacker;
u8 reshowMainState;
u8 reshowHelperState;
u8 levelUpHP;
- u8 windowsType; // 0 - normal, 1 - battle arena
+ u8 windowsType; // B_WIN_TYPE_*
u8 multiplayerId;
u8 specialTrainerBattleType;
};
-// rom_80A5C6C
-
-
struct BattleSpriteInfo
{
u16 invisible:1; // 0x1
@@ -624,8 +621,8 @@ extern u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT];
extern u32 gBattleTypeFlags;
extern u8 gBattleTerrain;
extern u32 gUnusedFirstBattleVar1;
-extern u8 *gUnknown_0202305C;
-extern u8 *gUnknown_02023060;
+extern u8 *gBattleAnimBgTileBuffer;
+extern u8 *gBattleAnimBgTilemapBuffer;
extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
extern u8 gActiveBattler;
diff --git a/include/battle_anim.h b/include/battle_anim.h
index ad160e74d..3f73f1daf 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -64,12 +64,12 @@ s8 BattleAnimAdjustPanning(s8 pan);
s8 BattleAnimAdjustPanning2(s8 pan);
s16 KeepPanInRange(s16 a, int oldPan);
s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan);
-void sub_80A4720(u16 a, u16 *b, u32 c, u8 d);
+void RelocateBattleBgPal(u16 paletteNum, u16 *dest, u32 offset, bool8 largeScreen);
void ResetBattleAnimBg(bool8);
// battle_intro.c
void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value);
-void sub_8118FBC(int bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *arg5, u16 *arg6, u16 arg7);
+void DrawBattlerOnBg(int bgId, u8 x, u8 y, u8 battlerPosition, u8 paletteId, u8 *tiles, u16 *tilemap, u16 tilesOffset);
void HandleIntroSlide(u8 terrainId);
int GetAnimBgAttribute(u8 bgId, u8 attributeId);
@@ -107,7 +107,7 @@ void AnimTranslateLinear_WaitEnd(struct Sprite *sprite);
u8 GetBattlerSpriteBGPriority(u8 battlerId);
void *LoadPointerFromVars(s16 bottom, s16 top);
void StorePointerInVars(s16 *bottom, s16 *top, const void *ptr);
-void sub_80A8278(void);
+void InitPrioritiesForVisibleBattlers(void);
void GetBattleAnimBg1Data(struct BattleAnimBgData*);
void GetBattleAnimBgData(struct BattleAnimBgData*, u32 arg1);
u8 GetBattlerSpriteSubpriority(u8 battlerId);
@@ -125,7 +125,7 @@ u8 AnimDummyReturnArg(u8 battler);
s16 CloneBattlerSpriteWithBlend(u8);
void obj_delete_but_dont_free_vram(struct Sprite*);
u8 CreateInvisibleSpriteCopy(int, u8, int);
-void AnimLoadCompressedBgTilemapHandleContest(struct BattleAnimBgData*, const void*, u32);
+void AnimLoadCompressedBgTilemapHandleContest(struct BattleAnimBgData*, const void*, bool32);
void AnimLoadCompressedBgGfx(u32, const u32*, u32);
void UpdateAnimBg3ScreenSize(bool8);
void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *);
diff --git a/include/battle_arena.h b/include/battle_arena.h
index b55fc39b0..c9a18ef61 100644
--- a/include/battle_arena.h
+++ b/include/battle_arena.h
@@ -7,7 +7,6 @@ void BattleArena_InitPoints(void);
void BattleArena_AddMindPoints(u8 battler);
void BattleArena_AddSkillPoints(u8 battler);
void BattleArena_DeductMindPoints(u8 battler, u16 stringId);
-void sub_81A586C(u8 battler);
void DrawArenaRefereeTextBox(void);
void EraseArenaRefereeTextBox(void);
diff --git a/include/battle_controllers.h b/include/battle_controllers.h
index 34e916b0f..9d9fba1b4 100644
--- a/include/battle_controllers.h
+++ b/include/battle_controllers.h
@@ -1,8 +1,7 @@
#ifndef GUARD_BATTLE_CONTROLLERS_H
#define GUARD_BATTLE_CONTROLLERS_H
-enum
-{
+enum {
REQUEST_ALL_BATTLE,
REQUEST_SPECIES_BATTLE,
REQUEST_HELDITEM_BATTLE,
@@ -67,19 +66,36 @@ enum
// Special arguments for Battle Controller functions.
-#define RESET_ACTION_MOVE_SELECTION 0
-#define RESET_ACTION_SELECTION 1
-#define RESET_MOVE_SELECTION 2
+enum { // Values given to the emit functions to choose gBattleBufferA or gBattleBufferB
+ BUFFER_A,
+ BUFFER_B
+};
-#define BALL_NO_SHAKES 0
-#define BALL_1_SHAKE 1
-#define BALL_2_SHAKES 2
-#define BALL_3_SHAKES_FAIL 3
-#define BALL_3_SHAKES_SUCCESS 4
-#define BALL_TRAINER_BLOCK 5
+enum {
+ RESET_ACTION_MOVE_SELECTION,
+ RESET_ACTION_SELECTION,
+ RESET_MOVE_SELECTION,
+};
+
+enum {
+ BALL_NO_SHAKES,
+ BALL_1_SHAKE,
+ BALL_2_SHAKES,
+ BALL_3_SHAKES_FAIL,
+ BALL_3_SHAKES_SUCCESS,
+ BALL_TRAINER_BLOCK,
+};
+
+enum {
+ LINK_STANDBY_MSG_STOP_BOUNCE,
+ LINK_STANDBY_STOP_BOUNCE_ONLY,
+ LINK_STANDBY_MSG_ONLY,
+};
#define INSTANT_HP_BAR_DROP 32767
+#define PARTY_SUMM_SKIP_DRAW_DELAY (1 << 7)
+
// Special return values in gBattleBufferB from Battle Controller functions.
#define RET_VALUE_LEVELED_UP 11
@@ -191,7 +207,7 @@ void BtlController_EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 b
void BtlController_EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data); // unused
void BtlController_EmitLoadMonSprite(u8 bufferId);
void BtlController_EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit);
-void BtlController_EmitReturnMonToBall(u8 bufferId, u8 arg1);
+void BtlController_EmitReturnMonToBall(u8 bufferId, bool8 skipAnim);
void BtlController_EmitDrawTrainerPic(u8 bufferId);
void BtlController_EmitTrainerSlide(u8 bufferId);
void BtlController_EmitTrainerSlideBack(u8 bufferId);
@@ -203,11 +219,11 @@ void BtlController_EmitPause(u8 bufferId, u8 toWait, void *data); // unused
void BtlController_EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit);
void BtlController_EmitPrintString(u8 bufferId, u16 stringId);
void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringId);
-void BtlController_EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2);
+void BtlController_EmitChooseAction(u8 bufferId, u8 action, u16 itemId);
void BtlController_EmitYesNoBox(u8 bufferId);
void BtlController_EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData);
void BtlController_EmitChooseItem(u8 bufferId, u8* arg1);
-void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4);
+void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 slotId, u8 abilityId, u8* data);
void BtlController_EmitCmd23(u8 bufferId); // unused
void BtlController_EmitHealthBarUpdate(u8 bufferId, u16 hpValue);
void BtlController_EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints);
@@ -216,7 +232,7 @@ void BtlController_EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status);
void BtlController_EmitStatusXor(u8 bufferId, u8 b); // unused
void BtlController_EmitDataTransfer(u8 bufferId, u16 size, void *data);
void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data); // unused
-void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter); // unused
+void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *data); // unused
void BtlController_EmitCmd32(u8 bufferId, u16 size, void *c); // unused
void BtlController_EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2);
void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c);
@@ -233,7 +249,7 @@ void BtlController_EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM);
void BtlController_EmitFaintingCry(u8 bufferId);
void BtlController_EmitIntroSlide(u8 bufferId, u8 terrainId);
void BtlController_EmitIntroTrainerBallThrow(u8 bufferId);
-void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2);
+void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 flags);
void BtlController_EmitHidePartyStatusSummary(u8 bufferId);
void BtlController_EmitEndBounceEffect(u8 bufferId);
void BtlController_EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible);
diff --git a/include/battle_gfx_sfx_util.h b/include/battle_gfx_sfx_util.h
index a367bc043..383facd69 100644
--- a/include/battle_gfx_sfx_util.h
+++ b/include/battle_gfx_sfx_util.h
@@ -18,7 +18,6 @@ void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId);
void DecompressTrainerBackPic(u16 backPicId, u8 battlerId);
void BattleGfxSfxDummy3(u8 gender);
void FreeTrainerFrontPicPalette(u16 frontPicId);
-void sub_805DFFC(void);
bool8 BattleLoadAllHealthBoxesGfx(u8 state);
void LoadBattleBarGfx(u8 arg0);
bool8 BattleInitAllSprites(u8 *state1, u8 *battlerId);
diff --git a/include/battle_main.h b/include/battle_main.h
index 78cf353df..f3e961b7b 100644
--- a/include/battle_main.h
+++ b/include/battle_main.h
@@ -7,7 +7,8 @@ struct TrainerMoney
u8 value;
};
-struct UnknownPokemonStruct4
+// For displaying a multi battle partner's Pokémon in the party menu
+struct MultiPartnerMenuPokemon
{
/*0x00*/ u16 species;
/*0x02*/ u16 heldItem;
@@ -46,8 +47,6 @@ struct UnknownPokemonStruct4
void CB2_InitBattle(void);
void BattleMainCB2(void);
void CB2_QuitRecordedBattle(void);
-void sub_8038528(struct Sprite* sprite);
-void sub_8038A04(void); // unused
void VBlankCB_Battle(void);
void SpriteCB_VsLetterDummy(struct Sprite *sprite);
void SpriteCB_VsLetterInit(struct Sprite *sprite);
@@ -59,13 +58,12 @@ void SpriteCallbackDummy_2(struct Sprite *sprite);
void SpriteCB_FaintOpponentMon(struct Sprite *sprite);
void SpriteCb_ShowAsMoveTarget(struct Sprite *sprite);
void SpriteCb_HideAsMoveTarget(struct Sprite *sprite);
-void SpriteCb_OpponentMonFromBall(struct Sprite *sprite);
+void SpriteCB_OpponentMonFromBall(struct Sprite *sprite);
void SpriteCB_BattleSpriteStartSlideLeft(struct Sprite *sprite);
void SpriteCB_FaintSlideAnim(struct Sprite *sprite);
void DoBounceEffect(u8 battlerId, u8 b, s8 c, s8 d);
void EndBounceEffect(u8 battlerId, bool8 b);
-void SpriteCb_PlayerMonFromBall(struct Sprite *sprite);
-void sub_8039E60(struct Sprite *sprite);
+void SpriteCB_PlayerMonFromBall(struct Sprite *sprite);
void SpriteCB_TrainerThrowObject(struct Sprite *sprite);
void sub_8039E9C(struct Sprite *sprite);
void BeginBattleIntroDummy(void);
@@ -82,9 +80,9 @@ void RunBattleScriptCommands(void);
bool8 TryRunFromBattle(u8 battlerId);
void SpecialStatusesClear(void);
-extern struct UnknownPokemonStruct4 gMultiPartnerParty[MULTI_PARTY_SIZE];
+extern struct MultiPartnerMenuPokemon gMultiPartnerParty[MULTI_PARTY_SIZE];
-extern const struct SpriteTemplate gUnknown_0831AC88;
+extern const struct SpriteTemplate gUnusedBattleInitSprite;
extern const struct OamData gOamData_BattleSpriteOpponentSide;
extern const struct OamData gOamData_BattleSpritePlayerSide;
extern const u8 gTypeEffectiveness[336];
diff --git a/include/battle_pyramid_bag.h b/include/battle_pyramid_bag.h
index b8b3eb20f..258ca56b2 100644
--- a/include/battle_pyramid_bag.h
+++ b/include/battle_pyramid_bag.h
@@ -63,7 +63,6 @@ void CB2_PyramidBagMenuFromStartMenu(void);
void CB2_ReturnToPyramidBagMenu(void);
void UpdatePyramidBagList(void);
void UpdatePyramidBagCursorPos(void);
-void sub_81C4EFC(void);
void GoToBattlePyramidBagMenu(u8 location, void (*exitCallback)(void));
void Task_CloseBattlePyramidBagMessage(u8 taskId);
void TryStoreHeldItemsInPyramidBag(void);
diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h
index ee3676463..cb81ad812 100644
--- a/include/battle_script_commands.h
+++ b/include/battle_script_commands.h
@@ -2,9 +2,11 @@
#define GUARD_BATTLE_SCRIPT_COMMANDS_H
#include "constants/pokemon.h"
+#include "constants/battle_script_commands.h"
-#define WINDOW_CLEAR 0x1
-#define WINDOW_x80 0x80
+// Arguments for 'flags' in HandleBattleWindow
+#define WINDOW_CLEAR (1 << 0)
+#define WINDOW_BG1 (1 << 7)
void AI_CalcDmg(u8 battlerIdAtk, u8 battlerIdDef);
u8 TypeCalc(u16 move, u8 battlerIdAtk, u8 battlerIdDef);
diff --git a/include/battle_transition.h b/include/battle_transition.h
index a33032fb4..784c5f968 100644
--- a/include/battle_transition.h
+++ b/include/battle_transition.h
@@ -11,8 +11,7 @@ void GetBg0TilesDst(u16 **tilemap, u16 **tileset);
extern const struct SpritePalette gSpritePalette_Pokeball;
-enum // TRANSITION_MUGSHOT
-{
+enum {
MUGSHOT_SIDNEY,
MUGSHOT_PHOEBE,
MUGSHOT_GLACIA,
@@ -21,52 +20,64 @@ enum // TRANSITION_MUGSHOT
MUGSHOTS_COUNT
};
-// credits for the names go to Dyskinesia, Tetrable and Farore
-// names are naturally subject to change
+enum {
+ B_TRANSITION_BLUR,
+ B_TRANSITION_SWIRL,
+ B_TRANSITION_SHUFFLE,
+ B_TRANSITION_BIG_POKEBALL,
+ B_TRANSITION_POKEBALLS_TRAIL,
+ B_TRANSITION_CLOCKWISE_BLACKFADE,
+ B_TRANSITION_RIPPLE,
+ B_TRANSITION_WAVE,
+ B_TRANSITION_SLICE,
+ B_TRANSITION_WHITEFADE,
+ B_TRANSITION_GRID_SQUARES,
+ B_TRANSITION_SHARDS,
+ B_TRANSITION_SIDNEY,
+ B_TRANSITION_PHOEBE,
+ B_TRANSITION_GLACIA,
+ B_TRANSITION_DRAKE,
+ B_TRANSITION_CHAMPION,
+ B_TRANSITION_AQUA, // Here below added in Emerald
+ B_TRANSITION_MAGMA,
+ B_TRANSITION_REGICE,
+ B_TRANSITION_REGISTEEL,
+ B_TRANSITION_REGIROCK,
+ B_TRANSITION_KYOGRE,
+ B_TRANSITION_GROUDON,
+ B_TRANSITION_RAYQUAZA,
+ B_TRANSITION_SHRED_SPLIT,
+ B_TRANSITION_BLACKHOLE1,
+ B_TRANSITION_BLACKHOLE2,
+ B_TRANSITION_RECTANGULAR_SPIRAL,
+ B_TRANSITION_FRONTIER_LOGO_WIGGLE,
+ B_TRANSITION_FRONTIER_LOGO_WAVE,
+ B_TRANSITION_FRONTIER_SQUARES,
+ B_TRANSITION_FRONTIER_SQUARES_SCROLL,
+ B_TRANSITION_FRONTIER_SQUARES_SPIRAL,
+ B_TRANSITION_FRONTIER_CIRCLES_MEET,
+ B_TRANSITION_FRONTIER_CIRCLES_CROSS,
+ B_TRANSITION_FRONTIER_CIRCLES_ASYMMETRIC_SPIRAL,
+ B_TRANSITION_FRONTIER_CIRCLES_SYMMETRIC_SPIRAL,
+ B_TRANSITION_FRONTIER_CIRCLES_MEET_IN_SEQ,
+ B_TRANSITION_FRONTIER_CIRCLES_CROSS_IN_SEQ,
+ B_TRANSITION_FRONTIER_CIRCLES_ASYMMETRIC_SPIRAL_IN_SEQ,
+ B_TRANSITION_FRONTIER_CIRCLES_SYMMETRIC_SPIRAL_IN_SEQ,
+ B_TRANSITION_COUNT
+};
-#define B_TRANSITION_BLUR 0
-#define B_TRANSITION_SWIRL 1
-#define B_TRANSITION_SHUFFLE 2
-#define B_TRANSITION_BIG_POKEBALL 3
-#define B_TRANSITION_POKEBALLS_TRAIL 4
-#define B_TRANSITION_CLOCKWISE_BLACKFADE 5
-#define B_TRANSITION_RIPPLE 6
-#define B_TRANSITION_WAVE 7
-#define B_TRANSITION_SLICE 8
-#define B_TRANSITION_WHITEFADE 9
-#define B_TRANSITION_GRID_SQUARES 10
-#define B_TRANSITION_SHARDS 11
-#define B_TRANSITION_SIDNEY 12
-#define B_TRANSITION_PHOEBE 13
-#define B_TRANSITION_GLACIA 14
-#define B_TRANSITION_DRAKE 15
-#define B_TRANSITION_CHAMPION 16
-// added in Emerald
-#define B_TRANSITION_AQUA 17
-#define B_TRANSITION_MAGMA 18
-#define B_TRANSITION_REGICE 19
-#define B_TRANSITION_REGISTEEL 20
-#define B_TRANSITION_REGIROCK 21
-#define B_TRANSITION_KYOGRE 22
-#define B_TRANSITION_GROUDON 23
-#define B_TRANSITION_RAYQUAZA 24
-#define B_TRANSITION_SHRED_SPLIT 25
-#define B_TRANSITION_BLACKHOLE1 26
-#define B_TRANSITION_BLACKHOLE2 27
-#define B_TRANSITION_RECTANGULAR_SPIRAL 28
-#define B_TRANSITION_FRONTIER_LOGO_WIGGLE 29
-#define B_TRANSITION_FRONTIER_LOGO_WAVE 30
-#define B_TRANSITION_FRONTIER_SQUARES 31
-#define B_TRANSITION_FRONTIER_SQUARES_SCROLL 32
-#define B_TRANSITION_FRONTIER_SQUARES_SPIRAL 33
-#define B_TRANSITION_FRONTIER_CIRCLES_MEET 34
-#define B_TRANSITION_FRONTIER_CIRCLES_CROSS 35
-#define B_TRANSITION_FRONTIER_CIRCLES_ASYMMETRIC_SPIRAL 36
-#define B_TRANSITION_FRONTIER_CIRCLES_SYMMETRIC_SPIRAL 37
-#define B_TRANSITION_FRONTIER_CIRCLES_MEET_IN_SEQ 38
-#define B_TRANSITION_FRONTIER_CIRCLES_CROSS_IN_SEQ 39
-#define B_TRANSITION_FRONTIER_CIRCLES_ASYMMETRIC_SPIRAL_IN_SEQ 40
-#define B_TRANSITION_FRONTIER_CIRCLES_SYMMETRIC_SPIRAL_IN_SEQ 41
-#define B_TRANSITION_COUNT 42
+// IDs for GetSpecialBattleTransition
+enum {
+ B_TRANSITION_GROUP_B_TOWER,
+ B_TRANSITION_GROUP_B_DOME = 3,
+ B_TRANSITION_GROUP_B_PALACE,
+ B_TRANSITION_GROUP_B_ARENA,
+ B_TRANSITION_GROUP_B_FACTORY,
+ B_TRANSITION_GROUP_B_PIKE,
+ B_TRANSITION_GROUP_B_PYRAMID = 10,
+ B_TRANSITION_GROUP_TRAINER_HILL,
+ B_TRANSITION_GROUP_SECRET_BASE,
+ B_TRANSITION_GROUP_E_READER,
+};
#endif // GUARD_BATTLE_TRANSITION_H
diff --git a/include/battle_util.h b/include/battle_util.h
index d4e2a23f8..914e44c04 100644
--- a/include/battle_util.h
+++ b/include/battle_util.h
@@ -6,39 +6,43 @@
#define MOVE_LIMITATION_DISABLED (1 << 2)
#define MOVE_LIMITATION_TORMENTED (1 << 3)
#define MOVE_LIMITATION_TAUNT (1 << 4)
-#define MOVE_LIMITATION_IMPRISON (1 << 5)
+#define MOVE_LIMITATION_IMPRISON (1 << 5)
+#define MOVE_LIMITATIONS_ALL 0xFF
-#define ABILITYEFFECT_ON_SWITCHIN 0x0
-#define ABILITYEFFECT_ENDTURN 0x1
-#define ABILITYEFFECT_MOVES_BLOCK 0x2
-#define ABILITYEFFECT_ABSORBING 0x3
-#define ABILITYEFFECT_ON_DAMAGE 0x4
-#define ABILITYEFFECT_IMMUNITY 0x5
-#define ABILITYEFFECT_FORECAST 0x6
-#define ABILITYEFFECT_SYNCHRONIZE 0x7
-#define ABILITYEFFECT_ATK_SYNCHRONIZE 0x8
-#define ABILITYEFFECT_INTIMIDATE1 0x9
-#define ABILITYEFFECT_INTIMIDATE2 0xA
-#define ABILITYEFFECT_TRACE 0xB
-#define ABILITYEFFECT_CHECK_OTHER_SIDE 0xC
-#define ABILITYEFFECT_CHECK_BATTLER_SIDE 0xD
-#define ABILITYEFFECT_FIELD_SPORT 0xE
-#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER 0xF
-#define ABILITYEFFECT_COUNT_OTHER_SIDE 0x10
-#define ABILITYEFFECT_COUNT_BATTLER_SIDE 0x11
-#define ABILITYEFFECT_COUNT_ON_FIELD 0x12
-#define ABILITYEFFECT_CHECK_ON_FIELD 0x13
-#define ABILITYEFFECT_MUD_SPORT 0xFD
-#define ABILITYEFFECT_WATER_SPORT 0xFE
-#define ABILITYEFFECT_SWITCH_IN_WEATHER 0xFF
+#define ABILITYEFFECT_ON_SWITCHIN 0
+#define ABILITYEFFECT_ENDTURN 1
+#define ABILITYEFFECT_MOVES_BLOCK 2
+#define ABILITYEFFECT_ABSORBING 3
+#define ABILITYEFFECT_ON_DAMAGE 4
+#define ABILITYEFFECT_IMMUNITY 5
+#define ABILITYEFFECT_FORECAST 6
+#define ABILITYEFFECT_SYNCHRONIZE 7
+#define ABILITYEFFECT_ATK_SYNCHRONIZE 8
+#define ABILITYEFFECT_INTIMIDATE1 9
+#define ABILITYEFFECT_INTIMIDATE2 10
+#define ABILITYEFFECT_TRACE 11
+#define ABILITYEFFECT_CHECK_OTHER_SIDE 12
+#define ABILITYEFFECT_CHECK_BATTLER_SIDE 13
+#define ABILITYEFFECT_FIELD_SPORT 14
+#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER 15
+#define ABILITYEFFECT_COUNT_OTHER_SIDE 16
+#define ABILITYEFFECT_COUNT_BATTLER_SIDE 17
+#define ABILITYEFFECT_COUNT_ON_FIELD 18
+#define ABILITYEFFECT_CHECK_ON_FIELD 19
+#define ABILITYEFFECT_MUD_SPORT 253
+#define ABILITYEFFECT_WATER_SPORT 254
+#define ABILITYEFFECT_SWITCH_IN_WEATHER 255
#define ABILITY_ON_OPPOSING_FIELD(battlerId, abilityId)(AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, battlerId, abilityId, 0, 0))
#define ABILITY_ON_FIELD(abilityId)(AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, abilityId, 0, 0))
#define ABILITY_ON_FIELD2(abilityId)(AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, abilityId, 0, 0))
-#define ITEMEFFECT_ON_SWITCH_IN 0x0
-#define ITEMEFFECT_MOVE_END 0x3
-#define ITEMEFFECT_KINGSROCK_SHELLBELL 0x4
+// For the first argument of ItemBattleEffects, to deteremine which block of item effects to try
+#define ITEMEFFECT_ON_SWITCH_IN 0
+#define ITEMEFFECT_NORMAL 1
+#define ITEMEFFECT_DUMMY 2 // Unused, empty
+#define ITEMEFFECT_MOVE_END 3
+#define ITEMEFFECT_KINGSROCK_SHELLBELL 4
#define WEATHER_HAS_EFFECT ((!ABILITY_ON_FIELD(ABILITY_CLOUD_NINE) && !ABILITY_ON_FIELD(ABILITY_AIR_LOCK)))
#define WEATHER_HAS_EFFECT2 ((!ABILITY_ON_FIELD2(ABILITY_CLOUD_NINE) && !ABILITY_ON_FIELD2(ABILITY_AIR_LOCK)))
diff --git a/include/constants/battle.h b/include/constants/battle.h
index f1ce757e7..2534ade4b 100644
--- a/include/constants/battle.h
+++ b/include/constants/battle.h
@@ -306,4 +306,56 @@
#define B_WAIT_TIME_MED 48
#define B_WAIT_TIME_SHORT 32
+#define CASTFORM_NORMAL 0
+#define CASTFORM_FIRE 1
+#define CASTFORM_WATER 2
+#define CASTFORM_ICE 3
+#define NUM_CASTFORM_FORMS 4
+#define CASTFORM_SUBSTITUTE (1 << 7)
+
+#define FLEE_ITEM 1
+#define FLEE_ABILITY 2
+
+#define B_WIN_TYPE_NORMAL 0
+#define B_WIN_TYPE_ARENA 1
+
+// Window Ids for gStandardBattleWindowTemplates / gBattleArenaWindowTemplates
+#define B_WIN_MSG 0
+#define B_WIN_ACTION_PROMPT 1 // "What will {x} do?"
+#define B_WIN_ACTION_MENU 2 // "Fight/Pokémon/Bag/Run" menu
+#define B_WIN_MOVE_NAME_1 3 // Top left
+#define B_WIN_MOVE_NAME_2 4 // Top right
+#define B_WIN_MOVE_NAME_3 5 // Bottom left
+#define B_WIN_MOVE_NAME_4 6 // Bottom right
+#define B_WIN_PP 7
+#define B_WIN_DUMMY 8
+#define B_WIN_PP_REMAINING 9
+#define B_WIN_MOVE_TYPE 10
+#define B_WIN_SWITCH_PROMPT 11 // "Switch which?"
+#define B_WIN_YESNO 12
+#define B_WIN_LEVEL_UP_BOX 13
+#define B_WIN_LEVEL_UP_BANNER 14
+#define B_WIN_VS_PLAYER 15
+#define B_WIN_VS_OPPONENT 16
+#define B_WIN_VS_MULTI_PLAYER_1 17
+#define B_WIN_VS_MULTI_PLAYER_2 18
+#define B_WIN_VS_MULTI_PLAYER_3 19
+#define B_WIN_VS_MULTI_PLAYER_4 20
+#define B_WIN_VS_OUTCOME_DRAW 21
+#define B_WIN_VS_OUTCOME_LEFT 22
+#define B_WIN_VS_OUTCOME_RIGHT 23
+
+// The following are duplicate id values for windows that Battle Arena uses differently.
+#define ARENA_WIN_PLAYER_NAME 15
+#define ARENA_WIN_VS 16
+#define ARENA_WIN_OPPONENT_NAME 17
+#define ARENA_WIN_MIND 18
+#define ARENA_WIN_SKILL 19
+#define ARENA_WIN_BODY 20
+#define ARENA_WIN_JUDGEMENT_TITLE 21
+#define ARENA_WIN_JUDGEMENT_TEXT 22
+
+// Flag for BattlePutTextOnWindow. Never set
+#define B_WIN_COPYTOVRAM (1 << 7)
+
#endif // GUARD_CONSTANTS_BATTLE_H
diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h
index 4622876cc..48de594e2 100644
--- a/include/constants/battle_anim.h
+++ b/include/constants/battle_anim.h
@@ -318,7 +318,7 @@
#define SOUND_PAN_TARGET 63
// move background ids
-#define BG_DARK_ 0 // the same as BG_DARK but is unused
+#define BG_NONE 0 // the same as BG_DARK but is unused
#define BG_DARK 1
#define BG_GHOST 2
#define BG_PSYCHIC 3
@@ -395,6 +395,9 @@
// Tasks with return values often assign them to gBattleAnimArgs[7].
#define ARG_RET_ID 7
+// For createsprite macro to use internally
+#define ANIMSPRITE_IS_TARGET (1 << 7)
+
// Trapping Wrap-like moves end turn animation.
#define TRAP_ANIM_BIND 0
#define TRAP_ANIM_WRAP 0
diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h
index d5e3eb7bb..83aacf316 100644
--- a/include/constants/battle_script_commands.h
+++ b/include/constants/battle_script_commands.h
@@ -1,38 +1,51 @@
#ifndef GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H
#define GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H
-// Battle Scripting and BattleCommunication addresses
-#define sPAINSPLIT_HP gBattleScripting
-#define sBIDE_DMG gBattleScripting + 4
-#define sMULTIHIT_STRING gBattleScripting + 8
-#define sDMG_MULTIPLIER gBattleScripting + 0xE
-#define sTWOTURN_STRINGID gBattleScripting + 0xF
-#define sB_ANIM_ARG1 gBattleScripting + 0x10
-#define sB_ANIM_ARG2 gBattleScripting + 0x11
-#define sTRIPLE_KICK_POWER gBattleScripting + 0x12
-#define sMOVEEND_STATE gBattleScripting + 0x14
-#define sBATTLER_WITH_ABILITY gBattleScripting + 0x15
-#define sMULTIHIT_EFFECT gBattleScripting + 0x16
-#define sBATTLER gBattleScripting + 0x17
-#define sB_ANIM_TURN gBattleScripting + 0x18
-#define sB_ANIM_TARGETS_HIT gBattleScripting + 0x19
-#define sSTATCHANGER gBattleScripting + 0x1A
-#define sSTAT_ANIM_PLAYED gBattleScripting + 0x1B
-#define sGIVEEXP_STATE gBattleScripting + 0x1C
-#define sBATTLE_STYLE gBattleScripting + 0x1D
-#define sLVLBOX_STATE gBattleScripting + 0x1E
-#define sLEARNMOVE_STATE gBattleScripting + 0x1F
-#define sFIELD_20 gBattleScripting + 0x20
-#define sRESHOW_MAIN_STATE gBattleScripting + 0x21
-#define sRESHOW_HELPER_STATE gBattleScripting + 0x22
-#define sFIELD_23 gBattleScripting + 0x23
-#define sWINDOWS_TYPE gBattleScripting + 0x24
-#define sMULTIPLAYER_ID gBattleScripting + 0x25
-#define sSPECIAL_TRAINER_BATTLE_TYPE gBattleScripting + 0x26
+// The following correspond to the struct members of BattleScripting by adding their offset
+#define sPAINSPLIT_HP (gBattleScripting + 0x00) // painSplitHp
+#define sBIDE_DMG (gBattleScripting + 0x04) // bideDmg
+#define sMULTIHIT_STRING (gBattleScripting + 0x08) // multihitString
+#define sDMG_MULTIPLIER (gBattleScripting + 0x0E) // dmgMultiplier
+#define sTWOTURN_STRINGID (gBattleScripting + 0x0F) // twoTurnsMoveStringId
+#define sB_ANIM_ARG1 (gBattleScripting + 0x10) // animArg1
+#define sB_ANIM_ARG2 (gBattleScripting + 0x11) // animArg2
+#define sTRIPLE_KICK_POWER (gBattleScripting + 0x12) // tripleKickPower
+#define sMOVEEND_STATE (gBattleScripting + 0x14) // moveendState
+#define sBATTLER_WITH_ABILITY (gBattleScripting + 0x15) // battlerWithAbility
+#define sMULTIHIT_EFFECT (gBattleScripting + 0x16) // multihitMoveEffect
+#define sBATTLER (gBattleScripting + 0x17) // battler
+#define sB_ANIM_TURN (gBattleScripting + 0x18) // animTurn
+#define sB_ANIM_TARGETS_HIT (gBattleScripting + 0x19) // animTargetsHit
+#define sSTATCHANGER (gBattleScripting + 0x1A) // statChanger
+#define sSTAT_ANIM_PLAYED (gBattleScripting + 0x1B) // statAnimPlayed
+#define sGIVEEXP_STATE (gBattleScripting + 0x1C) // getexpState
+#define sBATTLE_STYLE (gBattleScripting + 0x1D) // battleStyle
+#define sLVLBOX_STATE (gBattleScripting + 0x1E) // drawlvlupboxState
+#define sLEARNMOVE_STATE (gBattleScripting + 0x1F) // learnMoveState
+#define sPURSUIT_DOUBLES_ATTACKER (gBattleScripting + 0x20) // pursuitDoublesAttacker
+#define sRESHOW_MAIN_STATE (gBattleScripting + 0x21) // reshowMainState
+#define sRESHOW_HELPER_STATE (gBattleScripting + 0x22) // reshowHelperState
+#define sLVLUP_HP (gBattleScripting + 0x23) // levelUpHP
+#define sWINDOWS_TYPE (gBattleScripting + 0x24) // windowsType
+#define sMULTIPLAYER_ID (gBattleScripting + 0x25) // multiplayerId
+#define sSPECIAL_TRAINER_BATTLE_TYPE (gBattleScripting + 0x26) // specialTrainerBattleType
-#define cEFFECT_CHOOSER gBattleCommunication + 3
-#define cMULTISTRING_CHOOSER gBattleCommunication + 5
-#define cMISS_TYPE gBattleCommunication + 6
+// Array entries for battle communication
+#define MULTIUSE_STATE 0
+#define CURSOR_POSITION 1
+#define TASK_ID 1 // task Id and cursor position share the same field
+#define SPRITES_INIT_STATE1 1 // shares the Id as well
+#define SPRITES_INIT_STATE2 2
+#define MOVE_EFFECT_BYTE 3
+#define ACTIONS_CONFIRMED_COUNT 4
+#define MULTISTRING_CHOOSER 5
+#define MISS_TYPE 6
+#define MSG_DISPLAY 7
+#define BATTLE_COMMUNICATION_ENTRIES_COUNT 8
+
+#define cEFFECT_CHOOSER (gBattleCommunication + MOVE_EFFECT_BYTE)
+#define cMULTISTRING_CHOOSER (gBattleCommunication + MULTISTRING_CHOOSER)
+#define cMISS_TYPE (gBattleCommunication + MISS_TYPE)
// Battle Script defines for getting the wanted battler
#define BS_TARGET 0
@@ -40,8 +53,8 @@
#define BS_EFFECT_BATTLER 2
#define BS_FAINTED 3
#define BS_ATTACKER_WITH_PARTNER 4 // for Cmd_updatestatusicon
-#define BS_UNK_5 5
-#define BS_UNK_6 6
+#define BS_FAINTED_LINK_MULTIPLE_1 5
+#define BS_FAINTED_LINK_MULTIPLE_2 6
#define BS_BATTLER_0 7
#define BS_ATTACKER_SIDE 8 // for Cmd_jumpifability
#define BS_NOT_ATTACKER_SIDE 9 // for Cmd_jumpifability
diff --git a/include/contest.h b/include/contest.h
index 9bac63eda..e7acb5a11 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -294,7 +294,7 @@ struct ContestResources
u8 * contestBgTilemaps[CONTESTANT_COUNT];
void * boxBlinkTiles1;
void * boxBlinkTiles2;
- void * field_3c;
+ void * animBgTileBuffer;
};
#define eContest (*gContestResources->contest)
diff --git a/include/gym_leader_rematch.h b/include/gym_leader_rematch.h
index dd9ead8b7..b31fb5e22 100644
--- a/include/gym_leader_rematch.h
+++ b/include/gym_leader_rematch.h
@@ -66,7 +66,7 @@ enum {
REMATCH_TRENT,
REMATCH_SAWYER,
REMATCH_KIRA_AND_DAN,
- REMATCH_WALLY_3, // Entries above WALLY are considered normal trainers, from Wally below are special trainers
+ REMATCH_WALLY_VR, // Entries above WALLY are considered normal trainers, from Wally below are special trainers
REMATCH_ROXANNE,
REMATCH_BRAWLY,
REMATCH_WATTSON,
@@ -75,7 +75,7 @@ enum {
REMATCH_WINONA,
REMATCH_TATE_AND_LIZA,
REMATCH_JUAN,
- REMATCH_SIDNEY, // Entries below SIDNEY are considered part of REMATCH_ELITE_FOUR_ENTRIES.
+ REMATCH_SIDNEY, // Entries from SIDNEY below are considered part of REMATCH_ELITE_FOUR_ENTRIES.
REMATCH_PHOEBE,
REMATCH_GLACIA,
REMATCH_DRAKE,
@@ -83,7 +83,7 @@ enum {
REMATCH_TABLE_ENTRIES // The total number of rematch entries. Must be last in enum
};
-#define REMATCH_SPECIAL_TRAINER_START REMATCH_WALLY_3
+#define REMATCH_SPECIAL_TRAINER_START REMATCH_WALLY_VR
#define REMATCH_ELITE_FOUR_ENTRIES REMATCH_SIDNEY
void UpdateGymLeaderRematch(void);
diff --git a/include/pokemon.h b/include/pokemon.h
index 229898d71..315416c38 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -76,13 +76,22 @@ struct PokemonSubstruct3
/* 0x0B */ u32 eventLegal:1; // controls Mew & Deoxys obedience; if set, Pokémon is a fateful encounter in Gen 4+; set for in-game event island legendaries, some distributed events, and Pokémon from XD: Gale of Darkness.
};
+// Number of bytes in the largest Pokémon substruct.
+// They are assumed to be the same size, and will be padded to
+// the largest size by the union.
+// By default they are all 12 bytes.
+#define NUM_SUBSTRUCT_BYTES (max(sizeof(struct PokemonSubstruct0), \
+ max(sizeof(struct PokemonSubstruct1), \
+ max(sizeof(struct PokemonSubstruct2), \
+ sizeof(struct PokemonSubstruct3)))))
+
union PokemonSubstruct
{
struct PokemonSubstruct0 type0;
struct PokemonSubstruct1 type1;
struct PokemonSubstruct2 type2;
struct PokemonSubstruct3 type3;
- u16 raw[6];
+ u16 raw[NUM_SUBSTRUCT_BYTES / 2]; // /2 because it's u16, not u8
};
struct BoxPokemon
@@ -102,7 +111,7 @@ struct BoxPokemon
union
{
- u32 raw[12];
+ u32 raw[(NUM_SUBSTRUCT_BYTES * 4) / 4]; // *4 because there are 4 substructs, /4 because it's u32, not u8
union PokemonSubstruct substructs[4];
} secure;
};
diff --git a/include/recorded_battle.h b/include/recorded_battle.h
index 5ae4ac12d..9b8939403 100644
--- a/include/recorded_battle.h
+++ b/include/recorded_battle.h
@@ -8,8 +8,8 @@ extern u8 gRecordedBattleMultiplayerId;
#define B_RECORD_MODE_RECORDING 1
#define B_RECORD_MODE_PLAYBACK 2
-void RecordedBattle_Init(u8 arg0);
-void sub_8184E58(void);
+void RecordedBattle_Init(u8 mode);
+void RecordedBattle_SetTrainerInfo(void);
void RecordedBattle_SetBattlerAction(u8 battlerId, u8 action);
void RecordedBattle_ClearBattlerAction(u8 battlerId, u8 bytesToClear);
u8 RecordedBattle_GetBattlerAction(u8 battlerId);
@@ -23,15 +23,15 @@ u8 GetRecordedBattleFronterBrainSymbol(void);
void RecordedBattle_SaveParties(void);
u8 GetActiveBattlerLinkPlayerGender(void);
void RecordedBattle_ClearFrontierPassFlag(void);
-void RecordedBattle_SetFrontierPassFlagFromHword(u16 arg0);
+void RecordedBattle_SetFrontierPassFlagFromHword(u16 flags);
u8 RecordedBattle_GetFrontierPassFlag(void);
u8 GetBattleSceneInRecordedBattle(void);
u8 GetTextSpeedInRecordedBattle(void);
void RecordedBattle_CopyBattlerMoves(void);
-void sub_818603C(u8 arg0);
+void RecordedBattle_CheckMovesetChanges(u8 mode);
u32 GetAiScriptsInRecordedBattle(void);
-void sub_8186444(void);
-bool8 sub_8186450(void);
+void RecordedBattle_SetPlaybackFinished(void);
+bool8 RecordedBattle_CanStopPlayback(void);
void GetRecordedBattleRecordMixFriendName(u8 *dst);
u8 GetRecordedBattleRecordMixFriendClass(void);
u8 GetRecordedBattleApprenticeId(void);
diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c
index b1b62fd5b..6fdfb0d7a 100644
--- a/src/battle_ai_script_commands.c
+++ b/src/battle_ai_script_commands.c
@@ -334,7 +334,7 @@ void BattleAI_SetupAIData(u8 defaultScoreMoves)
defaultScoreMoves >>= 1;
}
- moveLimitations = CheckMoveLimitations(gActiveBattler, 0, 0xFF);
+ moveLimitations = CheckMoveLimitations(gActiveBattler, 0, MOVE_LIMITATIONS_ALL);
// Ignore moves that aren't possible to use.
for (i = 0; i < MAX_MON_MOVES; i++)
diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c
index 537005d30..6ded48467 100644
--- a/src/battle_ai_switch_items.c
+++ b/src/battle_ai_switch_items.c
@@ -22,7 +22,7 @@ static bool8 ShouldSwitchIfPerishSong(void)
&& gDisableStructs[gActiveBattler].perishSongTimer == 0)
{
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
- BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0);
return TRUE;
}
else
@@ -106,7 +106,7 @@ static bool8 ShouldSwitchIfWonderGuard(void)
{
// We found a mon.
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = i;
- BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0);
return TRUE;
}
}
@@ -206,7 +206,7 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
{
// we found a mon.
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = i;
- BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0);
return TRUE;
}
}
@@ -226,13 +226,13 @@ static bool8 ShouldSwitchIfNaturalCure(void)
if ((gLastLandedMoves[gActiveBattler] == 0 || gLastLandedMoves[gActiveBattler] == 0xFFFF) && Random() & 1)
{
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
- BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0);
return TRUE;
}
else if (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0 && Random() & 1)
{
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
- BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0);
return TRUE;
}
@@ -244,7 +244,7 @@ static bool8 ShouldSwitchIfNaturalCure(void)
if (Random() & 1)
{
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
- BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0);
return TRUE;
}
@@ -412,7 +412,7 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE && Random() % moduloPercent == 0)
{
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = i;
- BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0);
return TRUE;
}
}
@@ -597,7 +597,7 @@ void AI_TrySwitchOrUseItem(void)
}
}
- BtlController_EmitTwoReturnValues(1, B_ACTION_USE_MOVE, (gActiveBattler ^ BIT_SIDE) << 8);
+ BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_USE_MOVE, (gActiveBattler ^ BIT_SIDE) << 8);
}
static void ModulateByTypeEffectiveness(u8 atkType, u8 defType1, u8 defType2, u8 *var)
@@ -923,7 +923,7 @@ static bool8 ShouldUseItem(void)
if (shouldUse)
{
- BtlController_EmitTwoReturnValues(1, B_ACTION_USE_ITEM, 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_USE_ITEM, 0);
*(gBattleStruct->chosenItem + (gActiveBattler / 2) * 2) = item;
gBattleResources->battleHistory->trainerItems[i] = 0;
return shouldUse;
diff --git a/src/battle_anim.c b/src/battle_anim.c
index 9fdf6bd53..4273ac607 100644
--- a/src/battle_anim.c
+++ b/src/battle_anim.c
@@ -18,70 +18,70 @@
#include "task.h"
#include "constants/battle_anim.h"
-#define ANIM_SPRITE_INDEX_COUNT 8
+/*
+ This file handles the commands for the macros defined in
+ battle_anim_script.inc and used in battle_anim_scripts.s
+*/
-extern struct MusicPlayerInfo gMPlayInfo_BGM;
-extern struct MusicPlayerInfo gMPlayInfo_SE1;
-extern struct MusicPlayerInfo gMPlayInfo_SE2;
+#define ANIM_SPRITE_INDEX_COUNT 8
extern const u16 gMovesWithQuietBGM[];
extern const u8 *const gBattleAnims_Moves[];
-// this file's functions
-static void ScriptCmd_loadspritegfx(void);
-static void ScriptCmd_unloadspritegfx(void);
-static void ScriptCmd_createsprite(void);
-static void ScriptCmd_createvisualtask(void);
-static void ScriptCmd_delay(void);
-static void ScriptCmd_waitforvisualfinish(void);
-static void ScriptCmd_hang1(void);
-static void ScriptCmd_hang2(void);
-static void ScriptCmd_end(void);
-static void ScriptCmd_playse(void);
-static void ScriptCmd_monbg(void);
-static void ScriptCmd_clearmonbg(void);
-static void ScriptCmd_setalpha(void);
-static void ScriptCmd_blendoff(void);
-static void ScriptCmd_call(void);
-static void ScriptCmd_return(void);
-static void ScriptCmd_setarg(void);
-static void ScriptCmd_choosetwoturnanim(void);
-static void ScriptCmd_jumpifmoveturn(void);
-static void ScriptCmd_goto(void);
-static void ScriptCmd_fadetobg(void);
-static void ScriptCmd_restorebg(void);
-static void ScriptCmd_waitbgfadeout(void);
-static void ScriptCmd_waitbgfadein(void);
-static void ScriptCmd_changebg(void);
-static void ScriptCmd_playsewithpan(void);
-static void ScriptCmd_setpan(void);
-static void ScriptCmd_panse_1B(void);
-static void ScriptCmd_loopsewithpan(void);
-static void ScriptCmd_waitplaysewithpan(void);
-static void ScriptCmd_setbldcnt(void);
-static void ScriptCmd_createsoundtask(void);
-static void ScriptCmd_waitsound(void);
-static void ScriptCmd_jumpargeq(void);
-static void ScriptCmd_monbg_22(void);
-static void ScriptCmd_clearmonbg_23(void);
-static void ScriptCmd_jumpifcontest(void);
-static void ScriptCmd_fadetobgfromset(void);
-static void ScriptCmd_panse_26(void);
-static void ScriptCmd_panse_27(void);
-static void ScriptCmd_monbgprio_28(void);
-static void ScriptCmd_monbgprio_29(void);
-static void ScriptCmd_monbgprio_2A(void);
-static void ScriptCmd_invisible(void);
-static void ScriptCmd_visible(void);
-static void ScriptCmd_doublebattle_2D(void);
-static void ScriptCmd_doublebattle_2E(void);
-static void ScriptCmd_stopsound(void);
+static void Cmd_loadspritegfx(void);
+static void Cmd_unloadspritegfx(void);
+static void Cmd_createsprite(void);
+static void Cmd_createvisualtask(void);
+static void Cmd_delay(void);
+static void Cmd_waitforvisualfinish(void);
+static void Cmd_nop(void);
+static void Cmd_nop2(void);
+static void Cmd_end(void);
+static void Cmd_playse(void);
+static void Cmd_monbg(void);
+static void Cmd_clearmonbg(void);
+static void Cmd_setalpha(void);
+static void Cmd_blendoff(void);
+static void Cmd_call(void);
+static void Cmd_return(void);
+static void Cmd_setarg(void);
+static void Cmd_choosetwoturnanim(void);
+static void Cmd_jumpifmoveturn(void);
+static void Cmd_goto(void);
+static void Cmd_fadetobg(void);
+static void Cmd_restorebg(void);
+static void Cmd_waitbgfadeout(void);
+static void Cmd_waitbgfadein(void);
+static void Cmd_changebg(void);
+static void Cmd_playsewithpan(void);
+static void Cmd_setpan(void);
+static void Cmd_panse(void);
+static void Cmd_loopsewithpan(void);
+static void Cmd_waitplaysewithpan(void);
+static void Cmd_setbldcnt(void);
+static void Cmd_createsoundtask(void);
+static void Cmd_waitsound(void);
+static void Cmd_jumpargeq(void);
+static void Cmd_monbg_static(void);
+static void Cmd_clearmonbg_static(void);
+static void Cmd_jumpifcontest(void);
+static void Cmd_fadetobgfromset(void);
+static void Cmd_panse_adjustnone(void);
+static void Cmd_panse_adjustall(void);
+static void Cmd_splitbgprio(void);
+static void Cmd_splitbgprio_all(void);
+static void Cmd_splitbgprio_foes(void);
+static void Cmd_invisible(void);
+static void Cmd_visible(void);
+static void Cmd_teamattack_moveback(void);
+static void Cmd_teamattack_movefwd(void);
+static void Cmd_stopsound(void);
static void RunAnimScriptCommand(void);
-static void task_pA_ma0A_obj_to_bg_pal(u8 taskId);
-static void sub_80A46A0(void);
-static void sub_80A4980(u8 taskId);
-static void sub_80A4BB0(u8 taskId);
+static void Task_UpdateMonBg(u8 taskId);
+static void FlipBattlerBgTiles(void);
+static void Task_ClearMonBg(u8 taskId);
+static void Task_ClearMonBgStatic(u8 taskId);
static void Task_FadeToBg(u8 taskId);
static void Task_PanFromInitialToTarget(u8 taskId);
static void Task_LoopAndPlaySE(u8 taskId);
@@ -89,11 +89,10 @@ static void Task_WaitAndPlaySE(u8 taskId);
static void LoadDefaultBg(void);
static void LoadMoveBg(u16 bgId);
-// ewram
EWRAM_DATA static const u8 *sBattleAnimScriptPtr = NULL;
EWRAM_DATA static const u8 *sBattleAnimScriptRetAddr = NULL;
EWRAM_DATA void (*gAnimScriptCallback)(void) = NULL;
-EWRAM_DATA static s8 gAnimFramesToWait = 0;
+EWRAM_DATA static s8 sAnimFramesToWait = 0;
EWRAM_DATA bool8 gAnimScriptActive = FALSE;
EWRAM_DATA u8 gAnimVisualTaskCount = 0;
EWRAM_DATA u8 gAnimSoundTaskCount = 0;
@@ -114,1690 +113,65 @@ EWRAM_DATA u8 gBattleAnimTarget = 0;
EWRAM_DATA u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT] = {0};
EWRAM_DATA u8 gAnimCustomPanning = 0;
-const struct OamData gOamData_AffineOff_ObjNormal_8x8 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_OFF,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(8x8),
- .x = 0,
- .size = SPRITE_SIZE(8x8),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-
-const struct OamData gOamData_AffineOff_ObjNormal_16x16 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_OFF,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(16x16),
- .x = 0,
- .size = SPRITE_SIZE(16x16),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineOff_ObjNormal_32x32 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_OFF,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(32x32),
- .x = 0,
- .size = SPRITE_SIZE(32x32),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineOff_ObjNormal_64x64 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_OFF,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(64x64),
- .x = 0,
- .size = SPRITE_SIZE(64x64),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineOff_ObjNormal_16x8 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_OFF,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(16x8),
- .x = 0,
- .size = SPRITE_SIZE(16x8),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineOff_ObjNormal_32x8 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_OFF,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(32x8),
- .x = 0,
- .size = SPRITE_SIZE(32x8),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineOff_ObjNormal_32x16 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_OFF,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(32x16),
- .x = 0,
- .size = SPRITE_SIZE(32x16),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineOff_ObjNormal_64x32 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_OFF,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(64x32),
- .x = 0,
- .size = SPRITE_SIZE(64x32),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineOff_ObjNormal_8x16 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_OFF,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(8x16),
- .x = 0,
- .size = SPRITE_SIZE(8x16),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineOff_ObjNormal_8x32 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_OFF,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(8x32),
- .x = 0,
- .size = SPRITE_SIZE(8x32),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineOff_ObjNormal_16x32 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_OFF,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(16x32),
- .x = 0,
- .size = SPRITE_SIZE(16x32),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineOff_ObjNormal_32x64 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_OFF,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(32x64),
- .x = 0,
- .size = SPRITE_SIZE(32x64),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineNormal_ObjNormal_8x8 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_NORMAL,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(8x8),
- .x = 0,
- .size = SPRITE_SIZE(8x8),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineNormal_ObjNormal_16x16 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_NORMAL,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(16x16),
- .x = 0,
- .size = SPRITE_SIZE(16x16),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineNormal_ObjNormal_32x32 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_NORMAL,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(32x32),
- .x = 0,
- .size = SPRITE_SIZE(32x32),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineNormal_ObjNormal_64x64 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_NORMAL,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(64x64),
- .x = 0,
- .size = SPRITE_SIZE(64x64),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineNormal_ObjNormal_16x8 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_NORMAL,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(16x8),
- .x = 0,
- .size = SPRITE_SIZE(16x8),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineNormal_ObjNormal_32x8 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_NORMAL,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(32x8),
- .x = 0,
- .size = SPRITE_SIZE(32x8),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineNormal_ObjNormal_32x16 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_NORMAL,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(32x16),
- .x = 0,
- .size = SPRITE_SIZE(32x16),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineNormal_ObjNormal_64x32 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_NORMAL,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(64x32),
- .x = 0,
- .size = SPRITE_SIZE(64x32),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineNormal_ObjNormal_8x16 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_NORMAL,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(8x16),
- .x = 0,
- .size = SPRITE_SIZE(8x16),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineNormal_ObjNormal_8x32 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_NORMAL,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(8x32),
- .x = 0,
- .size = SPRITE_SIZE(8x32),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineNormal_ObjNormal_16x32 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_NORMAL,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(16x32),
- .x = 0,
- .size = SPRITE_SIZE(16x32),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineNormal_ObjNormal_32x64 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_NORMAL,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(32x64),
- .x = 0,
- .size = SPRITE_SIZE(32x64),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineDouble_ObjNormal_8x8 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_DOUBLE,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(8x8),
- .x = 0,
- .size = SPRITE_SIZE(8x8),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineDouble_ObjNormal_16x16 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_DOUBLE,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(16x16),
- .x = 0,
- .size = SPRITE_SIZE(16x16),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineDouble_ObjNormal_32x32 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_DOUBLE,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(32x32),
- .x = 0,
- .size = SPRITE_SIZE(32x32),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineDouble_ObjNormal_64x64 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_DOUBLE,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(64x64),
- .x = 0,
- .size = SPRITE_SIZE(64x64),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineDouble_ObjNormal_16x8 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_DOUBLE,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(16x8),
- .x = 0,
- .size = SPRITE_SIZE(16x8),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineDouble_ObjNormal_32x8 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_DOUBLE,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(32x8),
- .x = 0,
- .size = SPRITE_SIZE(32x8),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineDouble_ObjNormal_32x16 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_DOUBLE,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(32x16),
- .x = 0,
- .size = SPRITE_SIZE(32x16),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineDouble_ObjNormal_64x32 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_DOUBLE,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(64x32),
- .x = 0,
- .size = SPRITE_SIZE(64x32),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineDouble_ObjNormal_8x16 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_DOUBLE,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(8x16),
- .x = 0,
- .size = SPRITE_SIZE(8x16),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineDouble_ObjNormal_8x32 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_DOUBLE,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(8x32),
- .x = 0,
- .size = SPRITE_SIZE(8x32),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineDouble_ObjNormal_16x32 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_DOUBLE,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(16x32),
- .x = 0,
- .size = SPRITE_SIZE(16x32),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineDouble_ObjNormal_32x64 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_DOUBLE,
- .objMode = ST_OAM_OBJ_NORMAL,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(32x64),
- .x = 0,
- .size = SPRITE_SIZE(32x64),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineOff_ObjBlend_8x8 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_OFF,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(8x8),
- .x = 0,
- .size = SPRITE_SIZE(8x8),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineOff_ObjBlend_16x16 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_OFF,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(16x16),
- .x = 0,
- .size = SPRITE_SIZE(16x16),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineOff_ObjBlend_32x32 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_OFF,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(32x32),
- .x = 0,
- .size = SPRITE_SIZE(32x32),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineOff_ObjBlend_64x64 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_OFF,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(64x64),
- .x = 0,
- .size = SPRITE_SIZE(64x64),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineOff_ObjBlend_16x8 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_OFF,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(16x8),
- .x = 0,
- .size = SPRITE_SIZE(16x8),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineOff_ObjBlend_32x8 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_OFF,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(32x8),
- .x = 0,
- .size = SPRITE_SIZE(32x8),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineOff_ObjBlend_32x16 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_OFF,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(32x16),
- .x = 0,
- .size = SPRITE_SIZE(32x16),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineOff_ObjBlend_64x32 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_OFF,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(64x32),
- .x = 0,
- .size = SPRITE_SIZE(64x32),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineOff_ObjBlend_8x16 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_OFF,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(8x16),
- .x = 0,
- .size = SPRITE_SIZE(8x16),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineOff_ObjBlend_8x32 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_OFF,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(8x32),
- .x = 0,
- .size = SPRITE_SIZE(8x32),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineOff_ObjBlend_16x32 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_OFF,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(16x32),
- .x = 0,
- .size = SPRITE_SIZE(16x32),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineOff_ObjBlend_32x64 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_OFF,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(32x64),
- .x = 0,
- .size = SPRITE_SIZE(32x64),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineNormal_ObjBlend_8x8 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_NORMAL,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(8x8),
- .x = 0,
- .size = SPRITE_SIZE(8x8),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineNormal_ObjBlend_16x16 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_NORMAL,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(16x16),
- .x = 0,
- .size = SPRITE_SIZE(16x16),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineNormal_ObjBlend_32x32 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_NORMAL,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(32x32),
- .x = 0,
- .size = SPRITE_SIZE(32x32),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineNormal_ObjBlend_64x64 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_NORMAL,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(64x64),
- .x = 0,
- .size = SPRITE_SIZE(64x64),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineNormal_ObjBlend_16x8 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_NORMAL,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(16x8),
- .x = 0,
- .size = SPRITE_SIZE(16x8),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineNormal_ObjBlend_32x8 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_NORMAL,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(32x8),
- .x = 0,
- .size = SPRITE_SIZE(32x8),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineNormal_ObjBlend_32x16 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_NORMAL,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(32x16),
- .x = 0,
- .size = SPRITE_SIZE(32x16),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineNormal_ObjBlend_64x32 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_NORMAL,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(64x32),
- .x = 0,
- .size = SPRITE_SIZE(64x32),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineNormal_ObjBlend_8x16 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_NORMAL,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(8x16),
- .x = 0,
- .size = SPRITE_SIZE(8x16),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineNormal_ObjBlend_8x32 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_NORMAL,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(8x32),
- .x = 0,
- .size = SPRITE_SIZE(8x32),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineNormal_ObjBlend_16x32 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_NORMAL,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(16x32),
- .x = 0,
- .size = SPRITE_SIZE(16x32),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineNormal_ObjBlend_32x64 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_NORMAL,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(32x64),
- .x = 0,
- .size = SPRITE_SIZE(32x64),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineDouble_ObjBlend_8x8 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_DOUBLE,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(8x8),
- .x = 0,
- .size = SPRITE_SIZE(8x8),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineDouble_ObjBlend_16x16 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_DOUBLE,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(16x16),
- .x = 0,
- .size = SPRITE_SIZE(16x16),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineDouble_ObjBlend_32x32 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_DOUBLE,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(32x32),
- .x = 0,
- .size = SPRITE_SIZE(32x32),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineDouble_ObjBlend_64x64 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_DOUBLE,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(64x64),
- .x = 0,
- .size = SPRITE_SIZE(64x64),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineDouble_ObjBlend_16x8 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_DOUBLE,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(16x8),
- .x = 0,
- .size = SPRITE_SIZE(16x8),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineDouble_ObjBlend_32x8 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_DOUBLE,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(32x8),
- .x = 0,
- .size = SPRITE_SIZE(32x8),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineDouble_ObjBlend_32x16 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_DOUBLE,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(32x16),
- .x = 0,
- .size = SPRITE_SIZE(32x16),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineDouble_ObjBlend_64x32 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_DOUBLE,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(64x32),
- .x = 0,
- .size = SPRITE_SIZE(64x32),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineDouble_ObjBlend_8x16 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_DOUBLE,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(8x16),
- .x = 0,
- .size = SPRITE_SIZE(8x16),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineDouble_ObjBlend_8x32 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_DOUBLE,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(8x32),
- .x = 0,
- .size = SPRITE_SIZE(8x32),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineDouble_ObjBlend_16x32 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_DOUBLE,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(16x32),
- .x = 0,
- .size = SPRITE_SIZE(16x32),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct OamData gOamData_AffineDouble_ObjBlend_32x64 =
-{
- .y = 0,
- .affineMode = ST_OAM_AFFINE_DOUBLE,
- .objMode = ST_OAM_OBJ_BLEND,
- .bpp = ST_OAM_4BPP,
- .shape = SPRITE_SHAPE(32x64),
- .x = 0,
- .size = SPRITE_SIZE(32x64),
- .tileNum = 0,
- .priority = 2,
- .paletteNum = 0,
-};
-
-const struct CompressedSpriteSheet gBattleAnimPicTable[] =
-{
- {gBattleAnimSpriteGfx_Bone, 0x0200, ANIM_TAG_BONE},
- {gBattleAnimSpriteGfx_Spark, 0x0300, ANIM_TAG_SPARK},
- {gBattleAnimSpriteGfx_Pencil, 0x0200, ANIM_TAG_PENCIL},
- {gBattleAnimSpriteGfx_AirWave, 0x0100, ANIM_TAG_AIR_WAVE},
- {gBattleAnimSpriteGfx_Orb, 0x0200, ANIM_TAG_ORB},
- {gBattleAnimSpriteGfx_Sword, 0x0400, ANIM_TAG_SWORD},
- {gBattleAnimSpriteGfx_Seed, 0x0180, ANIM_TAG_SEED},
- {gBattleAnimSpriteGfx_Explosion6, 0x0800, ANIM_TAG_EXPLOSION_6},
- {gBattleAnimSpriteGfx_PinkOrb, 0x0020, ANIM_TAG_PINK_ORB},
- {gBattleAnimSpriteGfx_Gust, 0x0400, ANIM_TAG_GUST},
- {gBattleAnimSpriteGfx_IceCube, 0x1200, ANIM_TAG_ICE_CUBE},
- {gBattleAnimSpriteGfx_Spark2, 0x0180, ANIM_TAG_SPARK_2},
- {gBattleAnimSpriteGfx_Orange, 0x0080, ANIM_TAG_ORANGE},
- {gBattleAnimSpriteGfx_YellowBall, 0x0080, ANIM_TAG_YELLOW_BALL},
- {gBattleAnimSpriteGfx_LockOn, 0x0280, ANIM_TAG_LOCK_ON},
- {gBattleAnimSpriteGfx_TiedBag, 0x0080, ANIM_TAG_TIED_BAG},
- {gBattleAnimSpriteGfx_BlackSmoke, 0x0100, ANIM_TAG_BLACK_SMOKE},
- {gBattleAnimSpriteGfx_BlackBall, 0x0020, ANIM_TAG_BLACK_BALL},
- {gBattleAnimSpriteGfx_Conversion, 0x0080, ANIM_TAG_CONVERSION},
- {gBattleAnimSpriteGfx_Glass, 0x0400, ANIM_TAG_GLASS},
- {gBattleAnimSpriteGfx_HornHit, 0x0200, ANIM_TAG_HORN_HIT},
- {gBattleAnimSpriteGfx_Hit, 0x0A00, ANIM_TAG_HIT},
- {gBattleAnimSpriteGfx_Hit, 0x0A00, ANIM_TAG_HIT_2},
- {gBattleAnimSpriteGfx_BlueShards, 0x0380, ANIM_TAG_BLUE_SHARDS},
- {gBattleAnimSpriteGfx_ClosingEye, 0x0300, ANIM_TAG_CLOSING_EYE},
- {gBattleAnimSpriteGfx_WavingHand, 0x0A00, ANIM_TAG_WAVING_HAND},
- {gBattleAnimSpriteGfx_HitDuplicate, 0x0A00, ANIM_TAG_HIT_DUPLICATE},
- {gBattleAnimSpriteGfx_Leer, 0x0A00, ANIM_TAG_LEER},
- {gBattleAnimSpriteGfx_BlueBurst, 0x0A00, ANIM_TAG_BLUE_BURST},
- {gBattleAnimSpriteGfx_SmallEmber, 0x0A00, ANIM_TAG_SMALL_EMBER},
- {gBattleAnimSpriteGfx_GraySmoke, 0x0A00, ANIM_TAG_GRAY_SMOKE},
- {gBattleAnimSpriteGfx_BlueStar, 0x0E00, ANIM_TAG_BLUE_STAR},
- {gBattleAnimSpriteGfx_BubbleBurst, 0x0380, ANIM_TAG_BUBBLE_BURST},
- {gBattleAnimSpriteGfx_Fire, 0x1000, ANIM_TAG_FIRE},
- {gBattleAnimSpriteGfx_SpinningFire, 0x0800, ANIM_TAG_SPINNING_FIRE},
- {gBattleAnimSpriteGfx_FirePlume, 0x0A00, ANIM_TAG_FIRE_PLUME},
- {gBattleAnimSpriteGfx_Lightning2, 0x0800, ANIM_TAG_LIGHTNING_2},
- {gBattleAnimSpriteGfx_Lightning, 0x0A00, ANIM_TAG_LIGHTNING},
- {gBattleAnimSpriteGfx_ClawSlash2, 0x0A00, ANIM_TAG_CLAW_SLASH_2},
- {gBattleAnimSpriteGfx_ClawSlash, 0x0A00, ANIM_TAG_CLAW_SLASH},
- {gBattleAnimSpriteGfx_Scratch3, 0x0A00, ANIM_TAG_SCRATCH_3},
- {gBattleAnimSpriteGfx_Scratch2, 0x0A00, ANIM_TAG_SCRATCH_2},
- {gBattleAnimSpriteGfx_BubbleBurst2, 0x0A00, ANIM_TAG_BUBBLE_BURST_2},
- {gBattleAnimSpriteGfx_IceChunk, 0x0A00, ANIM_TAG_ICE_CHUNK},
- {gBattleAnimSpriteGfx_Glass2, 0x0A00, ANIM_TAG_GLASS_2},
- {gBattleAnimSpriteGfx_PinkHeart2, 0x0A00, ANIM_TAG_PINK_HEART_2},
- {gBattleAnimSpriteGfx_SapDrip, 0x1000, ANIM_TAG_SAP_DRIP},
- {gBattleAnimSpriteGfx_SapDrip, 0x1000, ANIM_TAG_SAP_DRIP_2},
- {gBattleAnimSpriteGfx_Sparkle1, 0x1000, ANIM_TAG_SPARKLE_1},
- {gBattleAnimSpriteGfx_Sparkle1, 0x1000, ANIM_TAG_SPARKLE_2},
- {gBattleAnimSpriteGfx_HumanoidFoot, 0x0200, ANIM_TAG_HUMANOID_FOOT},
- {gBattleAnimSpriteGfx_MonsterFoot, 0x0200, ANIM_TAG_MONSTER_FOOT},
- {gBattleAnimSpriteGfx_HumanoidHand, 0x0200, ANIM_TAG_HUMANOID_HAND},
- {gBattleAnimSpriteGfx_NoiseLine, 0x0800, ANIM_TAG_NOISE_LINE},
- {gBattleAnimSpriteGfx_YellowUnk, 0x0080, ANIM_TAG_YELLOW_UNK},
- {gBattleAnimSpriteGfx_RedFist, 0x0200, ANIM_TAG_RED_FIST},
- {gBattleAnimSpriteGfx_SlamHit, 0x1000, ANIM_TAG_SLAM_HIT},
- {gBattleAnimSpriteGfx_Ring, 0x0180, ANIM_TAG_RING},
- {gBattleAnimSpriteGfx_Rocks, 0x0C00, ANIM_TAG_ROCKS},
- {gBattleAnimSpriteGfx_Z, 0x0100, ANIM_TAG_Z},
- {gBattleAnimSpriteGfx_YellowUnk2, 0x0040, ANIM_TAG_YELLOW_UNK_2},
- {gBattleAnimSpriteGfx_AirSlash, 0x0180, ANIM_TAG_AIR_SLASH},
- {gBattleAnimSpriteGfx_SpinningGreenOrbs, 0x0800, ANIM_TAG_SPINNING_GREEN_ORBS},
- {gBattleAnimSpriteGfx_Leaf, 0x0480, ANIM_TAG_LEAF},
- {gBattleAnimSpriteGfx_Finger, 0x0200, ANIM_TAG_FINGER},
- {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_POISON_POWDER},
- {gBattleAnimSpriteGfx_BrownTriangle, 0x0100, ANIM_TAG_BROWN_TRIANGLE},
- {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_SLEEP_POWDER},
- {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_STUN_SPORE},
- {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_POWDER},
- {gBattleAnimSpriteGfx_Sparkle3, 0x0200, ANIM_TAG_SPARKLE_3},
- {gBattleAnimSpriteGfx_Sparkle4, 0x0A00, ANIM_TAG_SPARKLE_4},
- {gBattleAnimSpriteGfx_MusicNotes, 0x0300, ANIM_TAG_MUSIC_NOTES},
- {gBattleAnimSpriteGfx_Duck, 0x0180, ANIM_TAG_DUCK},
- {gBattleAnimSpriteGfx_MudSand, 0x00A0, ANIM_TAG_MUD_SAND},
- {gBattleAnimSpriteGfx_Alert, 0x0700, ANIM_TAG_ALERT},
- {gBattleAnimSpriteGfx_BlueFlames, 0x0400, ANIM_TAG_BLUE_FLAMES},
- {gBattleAnimSpriteGfx_BlueFlames2, 0x0200, ANIM_TAG_BLUE_FLAMES_2},
- {gBattleAnimSpriteGfx_Shock4, 0x0300, ANIM_TAG_SHOCK_4},
- {gBattleAnimSpriteGfx_Shock, 0x0C00, ANIM_TAG_SHOCK},
- {gBattleAnimSpriteGfx_Bell2, 0x0A00, ANIM_TAG_BELL_2},
- {gBattleAnimSpriteGfx_PinkGlove, 0x0080, ANIM_TAG_PINK_GLOVE},
- {gBattleAnimSpriteGfx_BlueLines, 0x0040, ANIM_TAG_BLUE_LINES},
- {gBattleAnimSpriteGfx_Impact3, 0x0E00, ANIM_TAG_IMPACT_3},
- {gBattleAnimSpriteGfx_Impact2, 0x0E00, ANIM_TAG_IMPACT_2},
- {gBattleAnimSpriteGfx_Reticle, 0x0280, ANIM_TAG_RETICLE},
- {gBattleAnimSpriteGfx_Breath, 0x0200, ANIM_TAG_BREATH},
- {gBattleAnimSpriteGfx_Anger, 0x0080, ANIM_TAG_ANGER},
- {gBattleAnimSpriteGfx_Snowball, 0x00C0, ANIM_TAG_SNOWBALL},
- {gBattleAnimSpriteGfx_Vine, 0x0A00, ANIM_TAG_VINE},
- {gBattleAnimSpriteGfx_Sword2, 0x0200, ANIM_TAG_SWORD_2},
- {gBattleAnimSpriteGfx_Clapping, 0x0180, ANIM_TAG_CLAPPING},
- {gBattleAnimSpriteGfx_RedTube, 0x0080, ANIM_TAG_RED_TUBE},
- {gBattleAnimSpriteGfx_Amnesia, 0x1000, ANIM_TAG_AMNESIA},
- {gBattleAnimSpriteGfx_String2, 0x0A00, ANIM_TAG_STRING_2},
- {gBattleAnimSpriteGfx_Pencil2, 0x0180, ANIM_TAG_PENCIL_2},
- {gBattleAnimSpriteGfx_Petal, 0x0380, ANIM_TAG_PETAL},
- {gBattleAnimSpriteGfx_BentSpoon, 0x0C00, ANIM_TAG_BENT_SPOON},
- {gBattleAnimSpriteGfx_Web, 0x0200, ANIM_TAG_WEB},
- {gBattleAnimSpriteGfx_MilkBottle, 0x0200, ANIM_TAG_MILK_BOTTLE},
- {gBattleAnimSpriteGfx_Coin, 0x0200, ANIM_TAG_COIN},
- {gBattleAnimSpriteGfx_CrackedEgg, 0x0200, ANIM_TAG_CRACKED_EGG},
- {gBattleAnimSpriteGfx_HatchedEgg, 0x0400, ANIM_TAG_HATCHED_EGG},
- {gBattleAnimSpriteGfx_FreshEgg, 0x0080, ANIM_TAG_FRESH_EGG},
- {gBattleAnimSpriteGfx_Fangs, 0x0400, ANIM_TAG_FANGS},
- {gBattleAnimSpriteGfx_Explosion2, 0x0c00, ANIM_TAG_EXPLOSION_2},
- {gBattleAnimSpriteGfx_Explosion3, 0x0200, ANIM_TAG_EXPLOSION_3},
- {gBattleAnimSpriteGfx_WaterDroplet, 0x1000, ANIM_TAG_WATER_DROPLET},
- {gBattleAnimSpriteGfx_WaterDroplet2, 0x0a00, ANIM_TAG_WATER_DROPLET_2},
- {gBattleAnimSpriteGfx_Seed2, 0x0020, ANIM_TAG_SEED_2},
- {gBattleAnimSpriteGfx_Sprout, 0x0e00, ANIM_TAG_SPROUT},
- {gBattleAnimSpriteGfx_RedWand, 0x0080, ANIM_TAG_RED_WAND},
- {gBattleAnimSpriteGfx_PurpleGreenUnk, 0x0a00, ANIM_TAG_PURPLE_GREEN_UNK},
- {gBattleAnimSpriteGfx_WaterColumn, 0x0400, ANIM_TAG_WATER_COLUMN},
- {gBattleAnimSpriteGfx_MudUnk, 0x0200, ANIM_TAG_MUD_UNK},
- {gBattleAnimSpriteGfx_RainDrops, 0x0700, ANIM_TAG_RAIN_DROPS},
- {gBattleAnimSpriteGfx_FurySwipes, 0x0800, ANIM_TAG_FURY_SWIPES},
- {gBattleAnimSpriteGfx_Vine2, 0x0a00, ANIM_TAG_VINE_2},
- {gBattleAnimSpriteGfx_Teeth, 0x0600, ANIM_TAG_TEETH},
- {gBattleAnimSpriteGfx_Bone2, 0x0800, ANIM_TAG_BONE_2},
- {gBattleAnimSpriteGfx_WhiteBag, 0x0200, ANIM_TAG_WHITE_BAG},
- {gBattleAnimSpriteGfx_Unknown, 0x0040, ANIM_TAG_UNKNOWN},
- {gBattleAnimSpriteGfx_PurpleCoral, 0x0180, ANIM_TAG_PURPLE_CORAL},
- {gBattleAnimSpriteGfx_PurpleDroplet, 0x0600, ANIM_TAG_PURPLE_DROPLET},
- {gBattleAnimSpriteGfx_Shock2, 0x0600, ANIM_TAG_SHOCK_2},
- {gBattleAnimSpriteGfx_ClosingEye2, 0x0200, ANIM_TAG_CLOSING_EYE_2},
- {gBattleAnimSpriteGfx_MetalBall, 0x0080, ANIM_TAG_METAL_BALL},
- {gBattleAnimSpriteGfx_MonsterDoll, 0x0200, ANIM_TAG_MONSTER_DOLL},
- {gBattleAnimSpriteGfx_Whirlwind, 0x0800, ANIM_TAG_WHIRLWIND},
- {gBattleAnimSpriteGfx_Whirlwind2, 0x0080, ANIM_TAG_WHIRLWIND_2},
- {gBattleAnimSpriteGfx_Explosion4, 0x0a00, ANIM_TAG_EXPLOSION_4},
- {gBattleAnimSpriteGfx_Explosion5, 0x0280, ANIM_TAG_EXPLOSION_5},
- {gBattleAnimSpriteGfx_Tongue, 0x0280, ANIM_TAG_TONGUE},
- {gBattleAnimSpriteGfx_Smoke, 0x0100, ANIM_TAG_SMOKE},
- {gBattleAnimSpriteGfx_Smoke2, 0x0200, ANIM_TAG_SMOKE_2},
- {gBattleAnimSpriteGfx_Impact, 0x0200, ANIM_TAG_IMPACT},
- {gBattleAnimSpriteGfx_CircleImpact, 0x0020, ANIM_TAG_CIRCLE_IMPACT},
- {gBattleAnimSpriteGfx_Scratch, 0x0a00, ANIM_TAG_SCRATCH},
- {gBattleAnimSpriteGfx_Cut, 0x0800, ANIM_TAG_CUT},
- {gBattleAnimSpriteGfx_SharpTeeth, 0x0800, ANIM_TAG_SHARP_TEETH},
- {gBattleAnimSpriteGfx_RainbowRings, 0x00c0, ANIM_TAG_RAINBOW_RINGS},
- {gBattleAnimSpriteGfx_IceCrystals, 0x01c0, ANIM_TAG_ICE_CRYSTALS},
- {gBattleAnimSpriteGfx_IceSpikes, 0x0100, ANIM_TAG_ICE_SPIKES},
- {gBattleAnimSpriteGfx_HandsAndFeet, 0x0800, ANIM_TAG_HANDS_AND_FEET},
- {gBattleAnimSpriteGfx_MistCloud, 0x0200, ANIM_TAG_MIST_CLOUD},
- {gBattleAnimSpriteGfx_Clamp, 0x0800, ANIM_TAG_CLAMP},
- {gBattleAnimSpriteGfx_Bubble, 0x0180, ANIM_TAG_BUBBLE},
- {gBattleAnimSpriteGfx_Orbs, 0x0180, ANIM_TAG_ORBS},
- {gBattleAnimSpriteGfx_WaterImpact, 0x0200, ANIM_TAG_WATER_IMPACT},
- {gBattleAnimSpriteGfx_WaterOrb, 0x0200, ANIM_TAG_WATER_ORB},
- {gBattleAnimSpriteGfx_PoisonBubble, 0x0180, ANIM_TAG_POISON_BUBBLE},
- {gBattleAnimSpriteGfx_ToxicBubble, 0x0400, ANIM_TAG_TOXIC_BUBBLE},
- {gBattleAnimSpriteGfx_Spikes, 0x0080, ANIM_TAG_SPIKES},
- {gBattleAnimSpriteGfx_HornHit2, 0x0100, ANIM_TAG_HORN_HIT_2},
- {gBattleAnimSpriteGfx_AirWave2, 0x0100, ANIM_TAG_AIR_WAVE_2},
- {gBattleAnimSpriteGfx_SmallBubbles, 0x0140, ANIM_TAG_SMALL_BUBBLES},
- {gBattleAnimSpriteGfx_RoundShadow, 0x0800, ANIM_TAG_ROUND_SHADOW},
- {gBattleAnimSpriteGfx_Sunlight, 0x0200, ANIM_TAG_SUNLIGHT},
- {gBattleAnimSpriteGfx_Spore, 0x0100, ANIM_TAG_SPORE},
- {gBattleAnimSpriteGfx_Flower, 0x00a0, ANIM_TAG_FLOWER},
- {gBattleAnimSpriteGfx_RazorLeaf, 0x0100, ANIM_TAG_RAZOR_LEAF},
- {gBattleAnimSpriteGfx_Needle, 0x0080, ANIM_TAG_NEEDLE},
- {gBattleAnimSpriteGfx_WhirlwindLines, 0x0300, ANIM_TAG_WHIRLWIND_LINES},
- {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_GOLD_RING},
- {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_PURPLE_RING},
- {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_BLUE_RING},
- {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_GREEN_LIGHT_WALL},
- {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_BLUE_LIGHT_WALL},
- {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_RED_LIGHT_WALL},
- {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_GRAY_LIGHT_WALL},
- {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_ORANGE_LIGHT_WALL},
- {gBattleAnimSpriteGfx_BlackBall2, 0x0080, ANIM_TAG_BLACK_BALL_2},
- {gBattleAnimSpriteGfx_MistCloud, 0x0200, ANIM_TAG_PURPLE_GAS_CLOUD},
- {gBattleAnimSpriteGfx_SparkH, 0x0200, ANIM_TAG_SPARK_H},
- {gBattleAnimSpriteGfx_YellowStar, 0x0200, ANIM_TAG_YELLOW_STAR},
- {gBattleAnimSpriteGfx_LargeFreshEgg, 0x0080, ANIM_TAG_LARGE_FRESH_EGG},
- {gBattleAnimSpriteGfx_ShadowBall, 0x0200, ANIM_TAG_SHADOW_BALL},
- {gBattleAnimSpriteGfx_Lick, 0x0500, ANIM_TAG_LICK},
- {gBattleAnimSpriteGfx_VoidLines, 0x0800, ANIM_TAG_VOID_LINES},
- {gBattleAnimSpriteGfx_String, 0x0400, ANIM_TAG_STRING},
- {gBattleAnimSpriteGfx_WebThread, 0x0020, ANIM_TAG_WEB_THREAD},
- {gBattleAnimSpriteGfx_SpiderWeb, 0x0800, ANIM_TAG_SPIDER_WEB},
- {gBattleAnimSpriteGfx_Lightbulb, 0x0100, ANIM_TAG_LIGHTBULB},
- {gBattleAnimSpriteGfx_Slash, 0x0800, ANIM_TAG_SLASH},
- {gBattleAnimSpriteGfx_FocusEnergy, 0x0400, ANIM_TAG_FOCUS_ENERGY},
- {gBattleAnimSpriteGfx_SphereToCube, 0x0a00, ANIM_TAG_SPHERE_TO_CUBE},
- {gBattleAnimSpriteGfx_Tendrils, 0x1000, ANIM_TAG_TENDRILS},
- {gBattleAnimSpriteGfx_Eye, 0x0800, ANIM_TAG_EYE},
- {gBattleAnimSpriteGfx_WhiteShadow, 0x0400, ANIM_TAG_WHITE_SHADOW},
- {gBattleAnimSpriteGfx_TealAlert, 0x0200, ANIM_TAG_TEAL_ALERT},
- {gBattleAnimSpriteGfx_OpeningEye, 0x0800, ANIM_TAG_OPENING_EYE},
- {gBattleAnimSpriteGfx_RoundWhiteHalo, 0x0800, ANIM_TAG_ROUND_WHITE_HALO},
- {gBattleAnimSpriteGfx_FangAttack, 0x0800, ANIM_TAG_FANG_ATTACK},
- {gBattleAnimSpriteGfx_PurpleHandOutline, 0x0200, ANIM_TAG_PURPLE_HAND_OUTLINE},
- {gBattleAnimSpriteGfx_Moon, 0x0800, ANIM_TAG_MOON},
- {gBattleAnimSpriteGfx_GreenSparkle, 0x0200, ANIM_TAG_GREEN_SPARKLE},
- {gBattleAnimSpriteGfx_Spiral, 0x0800, ANIM_TAG_SPIRAL},
- {gBattleAnimSpriteGfx_SnoreZ, 0x0200, ANIM_TAG_SNORE_Z},
- {gBattleAnimSpriteGfx_Explosion, 0x0800, ANIM_TAG_EXPLOSION},
- {gBattleAnimSpriteGfx_Nail, 0x0400, ANIM_TAG_NAIL},
- {gBattleAnimSpriteGfx_GhostlySpirit, 0x0200, ANIM_TAG_GHOSTLY_SPIRIT},
- {gBattleAnimSpriteGfx_WarmRock, 0x0a80, ANIM_TAG_WARM_ROCK},
- {gBattleAnimSpriteGfx_BreakingEgg, 0x0600, ANIM_TAG_BREAKING_EGG},
- {gBattleAnimSpriteGfx_ThinRing, 0x0800, ANIM_TAG_THIN_RING},
- {gBattleAnimSpriteGfx_PunchImpact, 0x0200, ANIM_TAG_PUNCH_IMPACT},
- {gBattleAnimSpriteGfx_Bell, 0x0600, ANIM_TAG_BELL},
- {gBattleAnimSpriteGfx_MusicNotes2, 0x0800, ANIM_TAG_MUSIC_NOTES_2},
- {gBattleAnimSpriteGfx_SpeedDust, 0x0180, ANIM_TAG_SPEED_DUST},
- {gBattleAnimSpriteGfx_TornMetal, 0x0800, ANIM_TAG_TORN_METAL},
- {gBattleAnimSpriteGfx_ThoughtBubble, 0x0800, ANIM_TAG_THOUGHT_BUBBLE},
- {gBattleAnimSpriteGfx_MagentaHeart, 0x0080, ANIM_TAG_MAGENTA_HEART},
- {gBattleAnimSpriteGfx_ElectricOrbs, 0x0080, ANIM_TAG_ELECTRIC_ORBS},
- {gBattleAnimSpriteGfx_CircleOfLight, 0x0800, ANIM_TAG_CIRCLE_OF_LIGHT},
- {gBattleAnimSpriteGfx_Electricity, 0x0800, ANIM_TAG_ELECTRICITY},
- {gBattleAnimSpriteGfx_Finger2, 0x0600, ANIM_TAG_FINGER_2},
- {gBattleAnimSpriteGfx_MovementWaves, 0x0600, ANIM_TAG_MOVEMENT_WAVES},
- {gBattleAnimSpriteGfx_MagentaHeart, 0x0080, ANIM_TAG_RED_HEART},
- {gBattleAnimSpriteGfx_RedOrb, 0x0080, ANIM_TAG_RED_ORB},
- {gBattleAnimSpriteGfx_EyeSparkle, 0x0180, ANIM_TAG_EYE_SPARKLE},
- {gBattleAnimSpriteGfx_MagentaHeart, 0x0080, ANIM_TAG_PINK_HEART},
- {gBattleAnimSpriteGfx_Angel, 0x0200, ANIM_TAG_ANGEL},
- {gBattleAnimSpriteGfx_Devil, 0x0400, ANIM_TAG_DEVIL},
- {gBattleAnimSpriteGfx_Swipe, 0x0a00, ANIM_TAG_SWIPE},
- {gBattleAnimSpriteGfx_Roots, 0x0800, ANIM_TAG_ROOTS},
- {gBattleAnimSpriteGfx_ItemBag, 0x0200, ANIM_TAG_ITEM_BAG},
- {gBattleAnimSpriteGfx_JaggedMusicNote, 0x0400, ANIM_TAG_JAGGED_MUSIC_NOTE},
- {gBattleAnimSpriteGfx_Pokeball, 0x0080, ANIM_TAG_POKEBALL},
- {gBattleAnimSpriteGfx_Spotlight, 0x0800, ANIM_TAG_SPOTLIGHT},
- {gBattleAnimSpriteGfx_LetterZ, 0x0200, ANIM_TAG_LETTER_Z},
- {gBattleAnimSpriteGfx_RapidSpin, 0x0300, ANIM_TAG_RAPID_SPIN},
- {gBattleAnimSpriteGfx_TriAttackTriangle, 0x0800, ANIM_TAG_TRI_ATTACK_TRIANGLE},
- {gBattleAnimSpriteGfx_WispOrb, 0x0380, ANIM_TAG_WISP_ORB},
- {gBattleAnimSpriteGfx_WispFire, 0x0800, ANIM_TAG_WISP_FIRE},
- {gBattleAnimSpriteGfx_GoldStars, 0x00c0, ANIM_TAG_GOLD_STARS},
- {gBattleAnimSpriteGfx_EclipsingOrb, 0x0800, ANIM_TAG_ECLIPSING_ORB},
- {gBattleAnimSpriteGfx_GrayOrb, 0x0060, ANIM_TAG_GRAY_ORB},
- {gBattleAnimSpriteGfx_GrayOrb, 0x0060, ANIM_TAG_BLUE_ORB},
- {gBattleAnimSpriteGfx_GrayOrb, 0x0060, ANIM_TAG_RED_ORB_2},
- {gBattleAnimSpriteGfx_PinkPetal, 0x0080, ANIM_TAG_PINK_PETAL},
- {gBattleAnimSpriteGfx_PainSplit, 0x0180, ANIM_TAG_PAIN_SPLIT},
- {gBattleAnimSpriteGfx_Confetti, 0x0180, ANIM_TAG_CONFETTI},
- {gBattleAnimSpriteGfx_GreenStar, 0x0200, ANIM_TAG_GREEN_STAR},
- {gBattleAnimSpriteGfx_PinkCloud, 0x0200, ANIM_TAG_PINK_CLOUD},
- {gBattleAnimSpriteGfx_SweatDrop, 0x0020, ANIM_TAG_SWEAT_DROP},
- {gBattleAnimSpriteGfx_GuardRing, 0x0400, ANIM_TAG_GUARD_RING},
- {gBattleAnimSpriteGfx_PurpleScratch, 0x0600, ANIM_TAG_PURPLE_SCRATCH},
- {gBattleAnimSpriteGfx_PurpleSwipe, 0x1000, ANIM_TAG_PURPLE_SWIPE},
- {gBattleAnimSpriteGfx_TagHand, 0x0400, ANIM_TAG_TAG_HAND},
- {gBattleAnimSpriteGfx_SmallRedEye, 0x0020, ANIM_TAG_SMALL_RED_EYE},
- {gBattleAnimSpriteGfx_HollowOrb, 0x0080, ANIM_TAG_HOLLOW_ORB},
- {gBattleAnimSpriteGfx_XSign, 0x0800, ANIM_TAG_X_SIGN},
- {gBattleAnimSpriteGfx_BluegreenOrb, 0x0080, ANIM_TAG_BLUEGREEN_ORB},
- {gBattleAnimSpriteGfx_PawPrint, 0x0200, ANIM_TAG_PAW_PRINT},
- {gBattleAnimSpriteGfx_PurpleFlame, 0x0400, ANIM_TAG_PURPLE_FLAME},
- {gBattleAnimSpriteGfx_RedBall, 0x0200, ANIM_TAG_RED_BALL},
- {gBattleAnimSpriteGfx_SmellingsaltEffect, 0x0200, ANIM_TAG_SMELLINGSALT_EFFECT},
- {gBattleAnimSpriteGfx_Meteor, 0x0800, ANIM_TAG_METEOR},
- {gBattleAnimSpriteGfx_FlatRock, 0x0280, ANIM_TAG_FLAT_ROCK},
- {gBattleAnimSpriteGfx_MagnifyingGlass, 0x0200, ANIM_TAG_MAGNIFYING_GLASS},
- {gBattleAnimSpriteGfx_WaterOrb, 0x0200, ANIM_TAG_BROWN_ORB},
- {gBattleAnimSpriteGfx_MetalSoundWaves, 0x0400, ANIM_TAG_METAL_SOUND_WAVES},
- {gBattleAnimSpriteGfx_FlyingDirt, 0x0200, ANIM_TAG_FLYING_DIRT},
- {gBattleAnimSpriteGfx_IcicleSpear, 0x0200, ANIM_TAG_ICICLE_SPEAR},
- {gBattleAnimSpriteGfx_Hail, 0x0080, ANIM_TAG_HAIL},
- {gBattleAnimSpriteGfx_GlowyRedOrb, 0x0020, ANIM_TAG_GLOWY_RED_ORB},
- {gBattleAnimSpriteGfx_GlowyRedOrb, 0x0020, ANIM_TAG_GLOWY_GREEN_ORB},
- {gBattleAnimSpriteGfx_GreenSpike, 0x0080, ANIM_TAG_GREEN_SPIKE},
- {gBattleAnimSpriteGfx_CircleOfLight, 0x0800, ANIM_TAG_WHITE_CIRCLE_OF_LIGHT},
- {gBattleAnimSpriteGfx_GlowyRedOrb, 0x0020, ANIM_TAG_GLOWY_BLUE_ORB},
- {gBattleAnimSpriteGfx_Pokeblock, 0x0080, ANIM_TAG_POKEBLOCK},
- {gBattleAnimSpriteGfx_WhiteFeather, 0x0400, ANIM_TAG_WHITE_FEATHER},
- {gBattleAnimSpriteGfx_Sparkle6, 0x0080, ANIM_TAG_SPARKLE_6},
- {gBattleAnimSpriteGfx_Splash, 0x0800, ANIM_TAG_SPLASH},
- {gBattleAnimSpriteGfx_SweatBead, 0x0020, ANIM_TAG_SWEAT_BEAD},
- {gBattleAnimSpriteGfx_Gem1, 0x0800, ANIM_TAG_GEM_1},
- {gBattleAnimSpriteGfx_Gem2, 0x0800, ANIM_TAG_GEM_2},
- {gBattleAnimSpriteGfx_Gem3, 0x0800, ANIM_TAG_GEM_3},
- {gBattleAnimSpriteGfx_SlamHit2, 0x1000, ANIM_TAG_SLAM_HIT_2},
- {gBattleAnimSpriteGfx_Recycle, 0x0800, ANIM_TAG_RECYCLE},
- {gBattleAnimSpriteGfx_RedParticles, 0x00a0, ANIM_TAG_RED_PARTICLES},
- {gBattleAnimSpriteGfx_Protect, 0x0800, ANIM_TAG_PROTECT},
- {gBattleAnimSpriteGfx_DirtMound, 0x0200, ANIM_TAG_DIRT_MOUND},
- {gBattleAnimSpriteGfx_Shock3, 0x0600, ANIM_TAG_SHOCK_3},
- {gBattleAnimSpriteGfx_WeatherBall, 0x0200, ANIM_TAG_WEATHER_BALL},
- {gBattleAnimSpriteGfx_Bird, 0x0800, ANIM_TAG_BIRD},
- {gBattleAnimSpriteGfx_CrossImpact, 0x0200, ANIM_TAG_CROSS_IMPACT},
- {gBattleAnimSpriteGfx_Slash, 0x0800, ANIM_TAG_SLASH_2},
- {gBattleAnimSpriteGfx_SlamHit, 0x1000, ANIM_TAG_WHIP_HIT},
- {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_BLUE_RING_2},
-};
-
-const struct CompressedSpritePalette gBattleAnimPaletteTable[] =
-{
- {gBattleAnimSpritePal_Bone, ANIM_TAG_BONE},
- {gBattleAnimSpritePal_Spark, ANIM_TAG_SPARK},
- {gBattleAnimSpritePal_Pencil, ANIM_TAG_PENCIL},
- {gBattleAnimSpritePal_AirWave, ANIM_TAG_AIR_WAVE},
- {gBattleAnimSpritePal_Orb, ANIM_TAG_ORB},
- {gBattleAnimSpritePal_Sword, ANIM_TAG_SWORD},
- {gBattleAnimSpritePal_Seed, ANIM_TAG_SEED},
- {gBattleAnimSpritePal_Explosion6, ANIM_TAG_EXPLOSION_6},
- {gBattleAnimSpritePal_PinkOrb, ANIM_TAG_PINK_ORB},
- {gBattleAnimSpritePal_Gust, ANIM_TAG_GUST},
- {gBattleAnimSpritePal_IceCube, ANIM_TAG_ICE_CUBE},
- {gBattleAnimSpritePal_Spark2, ANIM_TAG_SPARK_2},
- {gBattleAnimSpritePal_Orange, ANIM_TAG_ORANGE},
- {gBattleAnimSpritePal_YellowBall, ANIM_TAG_YELLOW_BALL},
- {gBattleAnimSpritePal_LockOn, ANIM_TAG_LOCK_ON},
- {gBattleAnimSpritePal_TiedBag, ANIM_TAG_TIED_BAG},
- {gBattleAnimSpritePal_BlackSmoke, ANIM_TAG_BLACK_SMOKE},
- {gBattleAnimSpritePal_BlackSmoke, ANIM_TAG_BLACK_BALL},
- {gBattleAnimSpritePal_Conversion, ANIM_TAG_CONVERSION},
- {gBattleAnimSpritePal_Glass, ANIM_TAG_GLASS},
- {gBattleAnimSpritePal_HornHit, ANIM_TAG_HORN_HIT},
- {gBattleAnimSpritePal_Hit, ANIM_TAG_HIT},
- {gBattleAnimSpritePal_Hit2, ANIM_TAG_HIT_2},
- {gBattleAnimSpritePal_BlueShards, ANIM_TAG_BLUE_SHARDS},
- {gBattleAnimSpritePal_ClosingEye, ANIM_TAG_CLOSING_EYE},
- {gBattleAnimSpritePal_WavingHand, ANIM_TAG_WAVING_HAND},
- {gBattleAnimSpritePal_HitDuplicate, ANIM_TAG_HIT_DUPLICATE},
- {gBattleAnimSpritePal_Leer, ANIM_TAG_LEER},
- {gBattleAnimSpritePal_BlueBurst, ANIM_TAG_BLUE_BURST},
- {gBattleAnimSpritePal_SmallEmber, ANIM_TAG_SMALL_EMBER},
- {gBattleAnimSpritePal_GraySmoke, ANIM_TAG_GRAY_SMOKE},
- {gBattleAnimSpritePal_BlueStar, ANIM_TAG_BLUE_STAR},
- {gBattleAnimSpritePal_BubbleBurst, ANIM_TAG_BUBBLE_BURST},
- {gBattleAnimSpritePal_Fire, ANIM_TAG_FIRE},
- {gBattleAnimSpritePal_Fire, ANIM_TAG_SPINNING_FIRE},
- {gBattleAnimSpritePal_Fire, ANIM_TAG_FIRE_PLUME},
- {gBattleAnimSpritePal_Lightning2, ANIM_TAG_LIGHTNING_2},
- {gBattleAnimSpritePal_Lightning2, ANIM_TAG_LIGHTNING},
- {gBattleAnimSpritePal_ClawSlash2, ANIM_TAG_CLAW_SLASH_2},
- {gBattleAnimSpritePal_ClawSlash, ANIM_TAG_CLAW_SLASH},
- {gBattleAnimSpritePal_ClawSlash2, ANIM_TAG_SCRATCH_3},
- {gBattleAnimSpritePal_ClawSlash2, ANIM_TAG_SCRATCH_2},
- {gBattleAnimSpritePal_BubbleBurst2, ANIM_TAG_BUBBLE_BURST_2},
- {gBattleAnimSpritePal_IceChunk, ANIM_TAG_ICE_CHUNK},
- {gBattleAnimSpritePal_Glass2, ANIM_TAG_GLASS_2},
- {gBattleAnimSpritePal_PinkHeart2, ANIM_TAG_PINK_HEART_2},
- {gBattleAnimSpritePal_SapDrip, ANIM_TAG_SAP_DRIP},
- {gBattleAnimSpritePal_SapDrip2, ANIM_TAG_SAP_DRIP},
- {gBattleAnimSpritePal_Sparkle1, ANIM_TAG_SPARKLE_1},
- {gBattleAnimSpritePal_Sparkle2, ANIM_TAG_SPARKLE_2},
- {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_HUMANOID_FOOT},
- {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_MONSTER_FOOT},
- {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_HUMANOID_HAND},
- {gBattleAnimSpritePal_HitDuplicate, ANIM_TAG_NOISE_LINE},
- {gBattleAnimSpritePal_YellowUnk, ANIM_TAG_YELLOW_UNK},
- {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_RED_FIST},
- {gBattleAnimSpritePal_SlamHit, ANIM_TAG_SLAM_HIT},
- {gBattleAnimSpritePal_Ring, ANIM_TAG_RING},
- {gBattleAnimSpritePal_Rocks, ANIM_TAG_ROCKS},
- {gBattleAnimSpritePal_Z, ANIM_TAG_Z},
- {gBattleAnimSpritePal_YellowUnk2, ANIM_TAG_YELLOW_UNK_2},
- {gBattleAnimSpritePal_AirSlash, ANIM_TAG_AIR_SLASH},
- {gBattleAnimSpritePal_SpinningGreenOrbs, ANIM_TAG_SPINNING_GREEN_ORBS},
- {gBattleAnimSpritePal_Leaf, ANIM_TAG_LEAF},
- {gBattleAnimSpritePal_Finger, ANIM_TAG_FINGER},
- {gBattleAnimSpritePal_PoisonPowder, ANIM_TAG_POISON_POWDER},
- {gBattleAnimSpritePal_BrownTriangle, ANIM_TAG_BROWN_TRIANGLE},
- {gBattleAnimSpritePal_SleepPowder, ANIM_TAG_SLEEP_POWDER},
- {gBattleAnimSpritePal_StunSpore, ANIM_TAG_STUN_SPORE},
- {gBattleAnimSpritePal_PoisonPowder, ANIM_TAG_POWDER},
- {gBattleAnimSpritePal_Sparkle3, ANIM_TAG_SPARKLE_3},
- {gBattleAnimSpritePal_Sparkle3, ANIM_TAG_SPARKLE_4},
- {gBattleAnimSpritePal_MusicNotes, ANIM_TAG_MUSIC_NOTES},
- {gBattleAnimSpritePal_Duck, ANIM_TAG_DUCK},
- {gBattleAnimSpritePal_MudSand, ANIM_TAG_MUD_SAND},
- {gBattleAnimSpritePal_Alert, ANIM_TAG_ALERT},
- {gBattleAnimSpritePal_BlueFlames, ANIM_TAG_BLUE_FLAMES},
- {gBattleAnimSpritePal_BlueFlames, ANIM_TAG_BLUE_FLAMES_2},
- {gBattleAnimSpritePal_Shock4, ANIM_TAG_SHOCK_4},
- {gBattleAnimSpritePal_Shock4, ANIM_TAG_SHOCK},
- {gBattleAnimSpritePal_Bell2, ANIM_TAG_BELL_2},
- {gBattleAnimSpritePal_PinkGlove, ANIM_TAG_PINK_GLOVE},
- {gBattleAnimSpritePal_BlueLines, ANIM_TAG_BLUE_LINES},
- {gBattleAnimSpritePal_Impact3, ANIM_TAG_IMPACT_3},
- {gBattleAnimSpritePal_Impact2, ANIM_TAG_IMPACT_2},
- {gBattleAnimSpritePal_Reticle, ANIM_TAG_RETICLE},
- {gBattleAnimSpritePal_Breath, ANIM_TAG_BREATH},
- {gBattleAnimSpritePal_Anger, ANIM_TAG_ANGER},
- {gBattleAnimSpritePal_Snowball, ANIM_TAG_SNOWBALL},
- {gBattleAnimSpritePal_Vine, ANIM_TAG_VINE},
- {gBattleAnimSpritePal_Sword2, ANIM_TAG_SWORD_2},
- {gBattleAnimSpritePal_Clapping, ANIM_TAG_CLAPPING},
- {gBattleAnimSpritePal_RedTube, ANIM_TAG_RED_TUBE},
- {gBattleAnimSpritePal_Amnesia, ANIM_TAG_AMNESIA},
- {gBattleAnimSpritePal_String2, ANIM_TAG_STRING_2},
- {gBattleAnimSpritePal_Pencil2, ANIM_TAG_PENCIL_2},
- {gBattleAnimSpritePal_Petal, ANIM_TAG_PETAL},
- {gBattleAnimSpritePal_BentSpoon, ANIM_TAG_BENT_SPOON},
- {gBattleAnimSpritePal_String2, ANIM_TAG_WEB},
- {gBattleAnimSpritePal_MilkBottle, ANIM_TAG_MILK_BOTTLE},
- {gBattleAnimSpritePal_Coin, ANIM_TAG_COIN},
- {gBattleAnimSpritePal_CrackedEgg, ANIM_TAG_CRACKED_EGG},
- {gBattleAnimSpritePal_CrackedEgg, ANIM_TAG_HATCHED_EGG},
- {gBattleAnimSpritePal_FreshEgg, ANIM_TAG_FRESH_EGG},
- {gBattleAnimSpritePal_Fangs, ANIM_TAG_FANGS},
- {gBattleAnimSpritePal_Explosion2, ANIM_TAG_EXPLOSION_2},
- {gBattleAnimSpritePal_Explosion2, ANIM_TAG_EXPLOSION_3},
- {gBattleAnimSpritePal_WaterDroplet, ANIM_TAG_WATER_DROPLET},
- {gBattleAnimSpritePal_WaterDroplet, ANIM_TAG_WATER_DROPLET_2},
- {gBattleAnimSpritePal_Seed2, ANIM_TAG_SEED_2},
- {gBattleAnimSpritePal_Seed2, ANIM_TAG_SPROUT},
- {gBattleAnimSpritePal_RedWand, ANIM_TAG_RED_WAND},
- {gBattleAnimSpritePal_PurpleGreenUnk, ANIM_TAG_PURPLE_GREEN_UNK},
- {gBattleAnimSpritePal_WaterColumn, ANIM_TAG_WATER_COLUMN},
- {gBattleAnimSpritePal_MudUnk, ANIM_TAG_MUD_UNK},
- {gBattleAnimSpritePal_RainDrops, ANIM_TAG_RAIN_DROPS},
- {gBattleAnimSpritePal_FurySwipes, ANIM_TAG_FURY_SWIPES},
- {gBattleAnimSpritePal_Vine2, ANIM_TAG_VINE_2},
- {gBattleAnimSpritePal_Teeth, ANIM_TAG_TEETH},
- {gBattleAnimSpritePal_Bone2, ANIM_TAG_BONE_2},
- {gBattleAnimSpritePal_WhiteBag, ANIM_TAG_WHITE_BAG},
- {gBattleAnimSpritePal_Unknown, ANIM_TAG_UNKNOWN},
- {gBattleAnimSpritePal_PurpleCoral, ANIM_TAG_PURPLE_CORAL},
- {gBattleAnimSpritePal_PurpleCoral, ANIM_TAG_PURPLE_DROPLET},
- {gBattleAnimSpritePal_Shock2, ANIM_TAG_SHOCK_2},
- {gBattleAnimSpritePal_ClosingEye2, ANIM_TAG_CLOSING_EYE_2},
- {gBattleAnimSpritePal_MetalBall, ANIM_TAG_METAL_BALL},
- {gBattleAnimSpritePal_MonsterDoll, ANIM_TAG_MONSTER_DOLL},
- {gBattleAnimSpritePal_Whirlwind, ANIM_TAG_WHIRLWIND},
- {gBattleAnimSpritePal_Whirlwind, ANIM_TAG_WHIRLWIND_2},
- {gBattleAnimSpritePal_Explosion4, ANIM_TAG_EXPLOSION_4},
- {gBattleAnimSpritePal_Explosion4, ANIM_TAG_EXPLOSION_5},
- {gBattleAnimSpritePal_Tongue, ANIM_TAG_TONGUE},
- {gBattleAnimSpritePal_Smoke, ANIM_TAG_SMOKE},
- {gBattleAnimSpritePal_Smoke, ANIM_TAG_SMOKE_2},
- {gBattleAnimSpritePal_Impact, ANIM_TAG_IMPACT},
- {gBattleAnimSpritePal_CircleImpact, ANIM_TAG_CIRCLE_IMPACT},
- {gBattleAnimSpritePal_Impact, ANIM_TAG_SCRATCH},
- {gBattleAnimSpritePal_Impact, ANIM_TAG_CUT},
- {gBattleAnimSpritePal_SharpTeeth, ANIM_TAG_SHARP_TEETH},
- {gBattleAnimSpritePal_RainbowRings, ANIM_TAG_RAINBOW_RINGS},
- {gBattleAnimSpritePal_IceCrystals, ANIM_TAG_ICE_CRYSTALS},
- {gBattleAnimSpritePal_IceCrystals, ANIM_TAG_ICE_SPIKES},
- {gBattleAnimSpritePal_HandsAndFeet, ANIM_TAG_HANDS_AND_FEET},
- {gBattleAnimSpritePal_MistCloud, ANIM_TAG_MIST_CLOUD},
- {gBattleAnimSpritePal_SharpTeeth, ANIM_TAG_CLAMP},
- {gBattleAnimSpritePal_RainDrops, ANIM_TAG_BUBBLE},
- {gBattleAnimSpritePal_Orbs, ANIM_TAG_ORBS},
- {gBattleAnimSpritePal_WaterImpact, ANIM_TAG_WATER_IMPACT},
- {gBattleAnimSpritePal_WaterImpact, ANIM_TAG_WATER_ORB},
- {gBattleAnimSpritePal_PoisonBubble, ANIM_TAG_POISON_BUBBLE},
- {gBattleAnimSpritePal_PoisonBubble, ANIM_TAG_TOXIC_BUBBLE},
- {gBattleAnimSpritePal_Spikes, ANIM_TAG_SPIKES},
- {gBattleAnimSpritePal_HornHit2, ANIM_TAG_HORN_HIT_2},
- {gBattleAnimSpritePal_AirWave2, ANIM_TAG_AIR_WAVE_2},
- {gBattleAnimSpritePal_SmallBubbles, ANIM_TAG_SMALL_BUBBLES},
- {gBattleAnimSpritePal_RoundShadow, ANIM_TAG_ROUND_SHADOW},
- {gBattleAnimSpritePal_Sunlight, ANIM_TAG_SUNLIGHT},
- {gBattleAnimSpritePal_Spore, ANIM_TAG_SPORE},
- {gBattleAnimSpritePal_Flower, ANIM_TAG_FLOWER},
- {gBattleAnimSpritePal_RazorLeaf, ANIM_TAG_RAZOR_LEAF},
- {gBattleAnimSpritePal_Needle, ANIM_TAG_NEEDLE},
- {gBattleAnimSpritePal_WhirlwindLines, ANIM_TAG_WHIRLWIND_LINES},
- {gBattleAnimSpritePal_GoldRing, ANIM_TAG_GOLD_RING},
- {gBattleAnimSpritePal_PurpleRing, ANIM_TAG_PURPLE_RING},
- {gBattleAnimSpritePal_BlueRing, ANIM_TAG_BLUE_RING},
- {gBattleAnimSpritePal_GreenLightWall, ANIM_TAG_GREEN_LIGHT_WALL},
- {gBattleAnimSpritePal_BlueLightWall, ANIM_TAG_BLUE_LIGHT_WALL},
- {gBattleAnimSpritePal_RedLightWall, ANIM_TAG_RED_LIGHT_WALL},
- {gBattleAnimSpritePal_GrayLightWall, ANIM_TAG_GRAY_LIGHT_WALL},
- {gBattleAnimSpritePal_OrangeLightWall, ANIM_TAG_ORANGE_LIGHT_WALL},
- {gBattleAnimSpritePal_BlackBall2, ANIM_TAG_BLACK_BALL_2},
- {gBattleAnimSpritePal_PurpleGasCloud, ANIM_TAG_PURPLE_GAS_CLOUD},
- {gBattleAnimSpritePal_Spark, ANIM_TAG_SPARK_H},
- {gBattleAnimSpritePal_YellowStar, ANIM_TAG_YELLOW_STAR},
- {gBattleAnimSpritePal_LargeFreshEgg, ANIM_TAG_LARGE_FRESH_EGG},
- {gBattleAnimSpritePal_ShadowBall, ANIM_TAG_SHADOW_BALL},
- {gBattleAnimSpritePal_Lick, ANIM_TAG_LICK},
- {gBattleAnimSpritePal_VoidLines, ANIM_TAG_VOID_LINES},
- {gBattleAnimSpritePal_String, ANIM_TAG_STRING},
- {gBattleAnimSpritePal_String, ANIM_TAG_WEB_THREAD},
- {gBattleAnimSpritePal_String, ANIM_TAG_SPIDER_WEB},
- {gBattleAnimSpritePal_Lightbulb, ANIM_TAG_LIGHTBULB},
- {gBattleAnimSpritePal_Slash, ANIM_TAG_SLASH},
- {gBattleAnimSpritePal_FocusEnergy, ANIM_TAG_FOCUS_ENERGY},
- {gBattleAnimSpritePal_SphereToCube, ANIM_TAG_SPHERE_TO_CUBE},
- {gBattleAnimSpritePal_Tendrils, ANIM_TAG_TENDRILS},
- {gBattleAnimSpritePal_Eye, ANIM_TAG_EYE},
- {gBattleAnimSpritePal_WhiteShadow, ANIM_TAG_WHITE_SHADOW},
- {gBattleAnimSpritePal_TealAlert, ANIM_TAG_TEAL_ALERT},
- {gBattleAnimSpritePal_OpeningEye, ANIM_TAG_OPENING_EYE},
- {gBattleAnimSpritePal_RoundWhiteHalo, ANIM_TAG_ROUND_WHITE_HALO},
- {gBattleAnimSpritePal_FangAttack, ANIM_TAG_FANG_ATTACK},
- {gBattleAnimSpritePal_PurpleHandOutline, ANIM_TAG_PURPLE_HAND_OUTLINE},
- {gBattleAnimSpritePal_Moon, ANIM_TAG_MOON},
- {gBattleAnimSpritePal_GreenSparkle, ANIM_TAG_GREEN_SPARKLE},
- {gBattleAnimSpritePal_Spiral, ANIM_TAG_SPIRAL},
- {gBattleAnimSpritePal_SnoreZ, ANIM_TAG_SNORE_Z},
- {gBattleAnimSpritePal_Explosion, ANIM_TAG_EXPLOSION},
- {gBattleAnimSpritePal_Nail, ANIM_TAG_NAIL},
- {gBattleAnimSpritePal_GhostlySpirit, ANIM_TAG_GHOSTLY_SPIRIT},
- {gBattleAnimSpritePal_WarmRock, ANIM_TAG_WARM_ROCK},
- {gBattleAnimSpritePal_BreakingEgg, ANIM_TAG_BREAKING_EGG},
- {gBattleAnimSpritePal_ThinRing, ANIM_TAG_THIN_RING},
- {gBattleAnimSpritePal_PunchImpact, ANIM_TAG_PUNCH_IMPACT},
- {gBattleAnimSpritePal_Bell, ANIM_TAG_BELL},
- {gBattleAnimSpritePal_MusicNotes2, ANIM_TAG_MUSIC_NOTES_2},
- {gBattleAnimSpritePal_SpeedDust, ANIM_TAG_SPEED_DUST},
- {gBattleAnimSpritePal_BlueLightWall, ANIM_TAG_TORN_METAL},
- {gBattleAnimSpritePal_ThoughtBubble, ANIM_TAG_THOUGHT_BUBBLE},
- {gBattleAnimSpritePal_MagentaHeart, ANIM_TAG_MAGENTA_HEART},
- {gBattleAnimSpritePal_ElectricOrbs, ANIM_TAG_ELECTRIC_ORBS},
- {gBattleAnimSpritePal_ElectricOrbs, ANIM_TAG_CIRCLE_OF_LIGHT},
- {gBattleAnimSpritePal_ElectricOrbs, ANIM_TAG_ELECTRICITY},
- {gBattleAnimSpritePal_Finger, ANIM_TAG_FINGER_2},
- {gBattleAnimSpritePal_MovementWaves, ANIM_TAG_MOVEMENT_WAVES},
- {gBattleAnimSpritePal_RedHeart, ANIM_TAG_RED_HEART},
- {gBattleAnimSpritePal_RedOrb, ANIM_TAG_RED_ORB},
- {gBattleAnimSpritePal_EyeSparkle, ANIM_TAG_EYE_SPARKLE},
- {gBattleAnimSpritePal_PinkHeart, ANIM_TAG_PINK_HEART},
- {gBattleAnimSpritePal_Angel, ANIM_TAG_ANGEL},
- {gBattleAnimSpritePal_Devil, ANIM_TAG_DEVIL},
- {gBattleAnimSpritePal_Swipe, ANIM_TAG_SWIPE},
- {gBattleAnimSpritePal_Roots, ANIM_TAG_ROOTS},
- {gBattleAnimSpritePal_ItemBag, ANIM_TAG_ITEM_BAG},
- {gBattleAnimSpritePal_JaggedMusicNote, ANIM_TAG_JAGGED_MUSIC_NOTE},
- {gBattleAnimSpritePal_Pokeball, ANIM_TAG_POKEBALL},
- {gBattleAnimSpritePal_Pokeball, ANIM_TAG_SPOTLIGHT},
- {gBattleAnimSpritePal_LetterZ, ANIM_TAG_LETTER_Z},
- {gBattleAnimSpritePal_RapidSpin, ANIM_TAG_RAPID_SPIN},
- {gBattleAnimSpritePal_TriAttackTriangle, ANIM_TAG_TRI_ATTACK_TRIANGLE},
- {gBattleAnimSpritePal_WispOrb, ANIM_TAG_WISP_ORB},
- {gBattleAnimSpritePal_WispOrb, ANIM_TAG_WISP_FIRE},
- {gBattleAnimSpritePal_GoldStars, ANIM_TAG_GOLD_STARS},
- {gBattleAnimSpritePal_EclipsingOrb, ANIM_TAG_ECLIPSING_ORB},
- {gBattleAnimSpritePal_GrayOrb, ANIM_TAG_GRAY_ORB},
- {gBattleAnimSpritePal_BlueOrb, ANIM_TAG_BLUE_ORB},
- {gBattleAnimSpritePal_RedOrb2, ANIM_TAG_RED_ORB_2},
- {gBattleAnimSpritePal_PinkPetal, ANIM_TAG_PINK_PETAL},
- {gBattleAnimSpritePal_PainSplit, ANIM_TAG_PAIN_SPLIT},
- {gBattleAnimSpritePal_Confetti, ANIM_TAG_CONFETTI},
- {gBattleAnimSpritePal_GreenStar, ANIM_TAG_GREEN_STAR},
- {gBattleAnimSpritePal_PinkCloud, ANIM_TAG_PINK_CLOUD},
- {gBattleAnimSpritePal_SweatDrop, ANIM_TAG_SWEAT_DROP},
- {gBattleAnimSpritePal_GuardRing, ANIM_TAG_GUARD_RING},
- {gBattleAnimSpritePal_PurpleScratch, ANIM_TAG_PURPLE_SCRATCH},
- {gBattleAnimSpritePal_PurpleScratch, ANIM_TAG_PURPLE_SWIPE},
- {gBattleAnimSpritePal_Finger, ANIM_TAG_TAG_HAND},
- {gBattleAnimSpritePal_SmallRedEye, ANIM_TAG_SMALL_RED_EYE},
- {gBattleAnimSpritePal_HollowOrb, ANIM_TAG_HOLLOW_ORB},
- {gBattleAnimSpritePal_HollowOrb, ANIM_TAG_X_SIGN},
- {gBattleAnimSpritePal_BluegreenOrb, ANIM_TAG_BLUEGREEN_ORB},
- {gBattleAnimSpritePal_PawPrint, ANIM_TAG_PAW_PRINT},
- {gBattleAnimSpritePal_PurpleFlame, ANIM_TAG_PURPLE_FLAME},
- {gBattleAnimSpritePal_RedBall, ANIM_TAG_RED_BALL},
- {gBattleAnimSpritePal_SmellingsaltEffect, ANIM_TAG_SMELLINGSALT_EFFECT},
- {gBattleAnimSpritePal_Meteor, ANIM_TAG_METEOR},
- {gBattleAnimSpritePal_FlatRock, ANIM_TAG_FLAT_ROCK},
- {gBattleAnimSpritePal_MagnifyingGlass, ANIM_TAG_MAGNIFYING_GLASS},
- {gBattleAnimSpritePal_BrownOrb, ANIM_TAG_BROWN_ORB},
- {gBattleAnimSpritePal_MetalSoundWaves, ANIM_TAG_METAL_SOUND_WAVES},
- {gBattleAnimSpritePal_FlyingDirt, ANIM_TAG_FLYING_DIRT},
- {gBattleAnimSpritePal_IcicleSpear, ANIM_TAG_ICICLE_SPEAR},
- {gBattleAnimSpritePal_Hail, ANIM_TAG_HAIL},
- {gBattleAnimSpritePal_GlowyRedOrb, ANIM_TAG_GLOWY_RED_ORB},
- {gBattleAnimSpritePal_GlowyGreenOrb, ANIM_TAG_GLOWY_GREEN_ORB},
- {gBattleAnimSpritePal_GreenSpike, ANIM_TAG_GREEN_SPIKE},
- {gBattleAnimSpritePal_WhiteCircleOfLight, ANIM_TAG_WHITE_CIRCLE_OF_LIGHT},
- {gBattleAnimSpritePal_GlowyBlueOrb, ANIM_TAG_GLOWY_BLUE_ORB},
- {gBattleAnimSpritePal_Pokeblock, ANIM_TAG_POKEBLOCK},
- {gBattleAnimSpritePal_WhiteFeather, ANIM_TAG_WHITE_FEATHER},
- {gBattleAnimSpritePal_Sparkle6, ANIM_TAG_SPARKLE_6},
- {gBattleAnimSpritePal_Splash, ANIM_TAG_SPLASH},
- {gBattleAnimSpritePal_Splash, ANIM_TAG_SWEAT_BEAD},
- {gBattleAnimSpritePal_Gem1, ANIM_TAG_GEM_1},
- {gBattleAnimSpritePal_Gem1, ANIM_TAG_GEM_2},
- {gBattleAnimSpritePal_Gem1, ANIM_TAG_GEM_3},
- {gBattleAnimSpritePal_SlamHit2, ANIM_TAG_SLAM_HIT_2},
- {gBattleAnimSpritePal_Recycle, ANIM_TAG_RECYCLE},
- {gBattleAnimSpritePal_RedParticles, ANIM_TAG_RED_PARTICLES},
- {gBattleAnimSpritePal_Protect, ANIM_TAG_PROTECT},
- {gBattleAnimSpritePal_DirtMound, ANIM_TAG_DIRT_MOUND},
- {gBattleAnimSpritePal_Shock3, ANIM_TAG_SHOCK_3},
- {gBattleAnimSpritePal_WeatherBall, ANIM_TAG_WEATHER_BALL},
- {gBattleAnimSpritePal_Bird, ANIM_TAG_BIRD},
- {gBattleAnimSpritePal_CrossImpact, ANIM_TAG_CROSS_IMPACT},
- {gBattleAnimSpritePal_Slash2, ANIM_TAG_SLASH_2},
- {gBattleAnimSpritePal_WhipHit, ANIM_TAG_WHIP_HIT},
- {gBattleAnimSpritePal_BlueRing2, ANIM_TAG_BLUE_RING_2},
-};
-
-const struct BattleAnimBackground gBattleAnimBackgroundTable[] =
-{
- [BG_DARK_] = {gBattleAnimBgImage_Dark, gBattleAnimBgPalette_Dark, gBattleAnimBgTilemap_Dark},
- [BG_DARK] = {gBattleAnimBgImage_Dark, gBattleAnimBgPalette_Dark, gBattleAnimBgTilemap_Dark},
- [BG_GHOST] = {gBattleAnimBgImage_Ghost, gBattleAnimBgPalette_Ghost, gBattleAnimBgTilemap_Ghost},
- [BG_PSYCHIC] = {gBattleAnimBgImage_Psychic, gBattleAnimBgPalette_Psychic, gBattleAnimBgTilemap_Psychic},
- [BG_IMPACT_OPPONENT] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Impact, gBattleAnimBgTilemap_ImpactOpponent},
- [BG_IMPACT_PLAYER] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Impact, gBattleAnimBgTilemap_ImpactPlayer},
- [BG_IMPACT_CONTESTS] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Impact, gBattleAnimBgTilemap_ImpactContests},
- [BG_DRILL] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Drill, gBattleAnimBgTilemap_Drill},
- [BG_DRILL_CONTESTS] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Drill, gBattleAnimBgTilemap_DrillContests},
- [BG_HIGHSPEED_OPPONENT] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Highspeed, gBattleAnimBgTilemap_HighspeedOpponent},
- [BG_HIGHSPEED_PLAYER] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Highspeed, gBattleAnimBgTilemap_HighspeedPlayer},
- [BG_THUNDER] = {gBattleAnimBgImage_Thunder, gBattleAnimBgPalette_Thunder, gBattleAnimBgTilemap_Thunder},
- [BG_GUILLOTINE_OPPONENT] = {gBattleAnimBgImage_Guillotine, gBattleAnimBgPalette_Guillotine, gBattleAnimBgTilemap_GuillotineOpponent},
- [BG_GUILLOTINE_PLAYER] = {gBattleAnimBgImage_Guillotine, gBattleAnimBgPalette_Guillotine, gBattleAnimBgTilemap_GuillotinePlayer},
- [BG_GUILLOTINE_CONTESTS] = {gBattleAnimBgImage_Guillotine, gBattleAnimBgPalette_Guillotine, gBattleAnimBgTilemap_GuillotineContests},
- [BG_ICE] = {gBattleAnimBgImage_Ice, gBattleAnimBgPalette_Ice, gBattleAnimBgTilemap_Ice},
- [BG_COSMIC] = {gBattleAnimBgImage_Cosmic, gBattleAnimBgPalette_Cosmic, gBattleAnimBgTilemap_Cosmic},
- [BG_IN_AIR] = {gBattleAnimBgImage_InAir, gBattleAnimBgPalette_InAir, gBattleAnimBgTilemap_InAir},
- [BG_SKY] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Sky, gBattleAnimBgTilemap_Drill},
- [BG_SKY_CONTESTS] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Sky, gBattleAnimBgTilemap_DrillContests},
- [BG_AURORA] = {gBattleAnimBgImage_Aurora, gBattleAnimBgPalette_Aurora, gBattleAnimBgTilemap_Aurora},
- [BG_FISSURE] = {gBattleAnimBgImage_Fissure, gBattleAnimBgPalette_Fissure, gBattleAnimBgTilemap_Fissure},
- [BG_BUG_OPPONENT] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Bug, gBattleAnimBgTilemap_HighspeedOpponent},
- [BG_BUG_PLAYER] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Bug, gBattleAnimBgTilemap_HighspeedPlayer},
- [BG_SOLARBEAM_OPPONENT] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Solarbeam, gBattleAnimBgTilemap_ImpactOpponent},
- [BG_SOLARBEAM_PLAYER] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Solarbeam, gBattleAnimBgTilemap_ImpactPlayer},
- [BG_SOLARBEAM_CONTESTS] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Solarbeam, gBattleAnimBgTilemap_ImpactContests},
-};
+#include "data/battle_anim.h"
static void (* const sScriptCmdTable[])(void) =
{
- ScriptCmd_loadspritegfx,
- ScriptCmd_unloadspritegfx,
- ScriptCmd_createsprite,
- ScriptCmd_createvisualtask,
- ScriptCmd_delay,
- ScriptCmd_waitforvisualfinish,
- ScriptCmd_hang1,
- ScriptCmd_hang2,
- ScriptCmd_end,
- ScriptCmd_playse,
- ScriptCmd_monbg,
- ScriptCmd_clearmonbg,
- ScriptCmd_setalpha,
- ScriptCmd_blendoff,
- ScriptCmd_call,
- ScriptCmd_return,
- ScriptCmd_setarg,
- ScriptCmd_choosetwoturnanim,
- ScriptCmd_jumpifmoveturn,
- ScriptCmd_goto,
- ScriptCmd_fadetobg,
- ScriptCmd_restorebg,
- ScriptCmd_waitbgfadeout,
- ScriptCmd_waitbgfadein,
- ScriptCmd_changebg,
- ScriptCmd_playsewithpan,
- ScriptCmd_setpan,
- ScriptCmd_panse_1B,
- ScriptCmd_loopsewithpan,
- ScriptCmd_waitplaysewithpan,
- ScriptCmd_setbldcnt,
- ScriptCmd_createsoundtask,
- ScriptCmd_waitsound,
- ScriptCmd_jumpargeq,
- ScriptCmd_monbg_22,
- ScriptCmd_clearmonbg_23,
- ScriptCmd_jumpifcontest,
- ScriptCmd_fadetobgfromset,
- ScriptCmd_panse_26,
- ScriptCmd_panse_27,
- ScriptCmd_monbgprio_28,
- ScriptCmd_monbgprio_29,
- ScriptCmd_monbgprio_2A,
- ScriptCmd_invisible,
- ScriptCmd_visible,
- ScriptCmd_doublebattle_2D,
- ScriptCmd_doublebattle_2E,
- ScriptCmd_stopsound
+ Cmd_loadspritegfx, // 0x00
+ Cmd_unloadspritegfx, // 0x01
+ Cmd_createsprite, // 0x02
+ Cmd_createvisualtask, // 0x03
+ Cmd_delay, // 0x04
+ Cmd_waitforvisualfinish, // 0x05
+ Cmd_nop, // 0x06
+ Cmd_nop2, // 0x07
+ Cmd_end, // 0x08
+ Cmd_playse, // 0x09
+ Cmd_monbg, // 0x0A
+ Cmd_clearmonbg, // 0x0B
+ Cmd_setalpha, // 0x0C
+ Cmd_blendoff, // 0x0D
+ Cmd_call, // 0x0E
+ Cmd_return, // 0x0F
+ Cmd_setarg, // 0x10
+ Cmd_choosetwoturnanim, // 0x11
+ Cmd_jumpifmoveturn, // 0x12
+ Cmd_goto, // 0x13
+ Cmd_fadetobg, // 0x14
+ Cmd_restorebg, // 0x15
+ Cmd_waitbgfadeout, // 0x16
+ Cmd_waitbgfadein, // 0x17
+ Cmd_changebg, // 0x18
+ Cmd_playsewithpan, // 0x19
+ Cmd_setpan, // 0x1A
+ Cmd_panse, // 0x1B
+ Cmd_loopsewithpan, // 0x1C
+ Cmd_waitplaysewithpan, // 0x1D
+ Cmd_setbldcnt, // 0x1E
+ Cmd_createsoundtask, // 0x1F
+ Cmd_waitsound, // 0x20
+ Cmd_jumpargeq, // 0x21
+ Cmd_monbg_static, // 0x22
+ Cmd_clearmonbg_static, // 0x23
+ Cmd_jumpifcontest, // 0x24
+ Cmd_fadetobgfromset, // 0x25
+ Cmd_panse_adjustnone, // 0x26
+ Cmd_panse_adjustall, // 0x27
+ Cmd_splitbgprio, // 0x28
+ Cmd_splitbgprio_all, // 0x29
+ Cmd_splitbgprio_foes, // 0x2A
+ Cmd_invisible, // 0x2B
+ Cmd_visible, // 0x2C
+ Cmd_teamattack_moveback, // 0x2D
+ Cmd_teamattack_movefwd, // 0x2E
+ Cmd_stopsound, // 0x2F
};
-// code
void ClearBattleAnimationVars(void)
{
s32 i;
- gAnimFramesToWait = 0;
+ sAnimFramesToWait = 0;
gAnimScriptActive = FALSE;
gAnimVisualTaskCount = 0;
gAnimSoundTaskCount = 0;
@@ -1837,7 +211,7 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo
if (!IsContest())
{
- sub_80A8278();
+ InitPrioritiesForVisibleBattlers();
UpdateOamPriorityInAllHealthboxes(0);
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
@@ -1865,7 +239,7 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo
sMonAnimTaskIdArray[1] = TASK_NONE;
sBattleAnimScriptPtr = animsTable[tableId];
gAnimScriptActive = TRUE;
- gAnimFramesToWait = 0;
+ sAnimFramesToWait = 0;
gAnimScriptCallback = RunAnimScriptCommand;
for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++)
@@ -1938,14 +312,14 @@ static void ClearSpriteIndex(u16 index)
static void WaitAnimFrameCount(void)
{
- if (gAnimFramesToWait <= 0)
+ if (sAnimFramesToWait <= 0)
{
gAnimScriptCallback = RunAnimScriptCommand;
- gAnimFramesToWait = 0;
+ sAnimFramesToWait = 0;
}
else
{
- gAnimFramesToWait--;
+ sAnimFramesToWait--;
}
}
@@ -1954,10 +328,10 @@ static void RunAnimScriptCommand(void)
do
{
sScriptCmdTable[sBattleAnimScriptPtr[0]]();
- } while (gAnimFramesToWait == 0 && gAnimScriptActive);
+ } while (sAnimFramesToWait == 0 && gAnimScriptActive);
}
-static void ScriptCmd_loadspritegfx(void)
+static void Cmd_loadspritegfx(void)
{
u16 index;
@@ -1967,11 +341,11 @@ static void ScriptCmd_loadspritegfx(void)
LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(index)]);
sBattleAnimScriptPtr += 2;
AddSpriteIndex(GET_TRUE_SPRITE_INDEX(index));
- gAnimFramesToWait = 1;
+ sAnimFramesToWait = 1;
gAnimScriptCallback = WaitAnimFrameCount;
}
-static void ScriptCmd_unloadspritegfx(void)
+static void Cmd_unloadspritegfx(void)
{
u16 index;
@@ -1983,7 +357,7 @@ static void ScriptCmd_unloadspritegfx(void)
ClearSpriteIndex(GET_TRUE_SPRITE_INDEX(index));
}
-static void ScriptCmd_createsprite(void)
+static void Cmd_createsprite(void)
{
s32 i;
const struct SpriteTemplate *template;
@@ -2006,11 +380,11 @@ static void ScriptCmd_createsprite(void)
sBattleAnimScriptPtr += 2;
}
- if (argVar & 0x80)
+ if (argVar & ANIMSPRITE_IS_TARGET)
{
- argVar ^= 0x80;
- if (argVar >= 0x40)
- argVar -= 0x40;
+ argVar ^= ANIMSPRITE_IS_TARGET;
+ if (argVar >= 64)
+ argVar -= 64;
else
argVar *= -1;
@@ -2018,8 +392,8 @@ static void ScriptCmd_createsprite(void)
}
else
{
- if (argVar >= 0x40)
- argVar -= 0x40;
+ if (argVar >= 64)
+ argVar -= 64;
else
argVar *= -1;
@@ -2037,7 +411,7 @@ static void ScriptCmd_createsprite(void)
gAnimVisualTaskCount++;
}
-static void ScriptCmd_createvisualtask(void)
+static void Cmd_createvisualtask(void)
{
TaskFunc taskFunc;
u8 taskPriority;
@@ -2067,39 +441,39 @@ static void ScriptCmd_createvisualtask(void)
gAnimVisualTaskCount++;
}
-static void ScriptCmd_delay(void)
+static void Cmd_delay(void)
{
sBattleAnimScriptPtr++;
- gAnimFramesToWait = sBattleAnimScriptPtr[0];
- if (gAnimFramesToWait == 0)
- gAnimFramesToWait = -1;
+ sAnimFramesToWait = sBattleAnimScriptPtr[0];
+ if (sAnimFramesToWait == 0)
+ sAnimFramesToWait = -1;
sBattleAnimScriptPtr++;
gAnimScriptCallback = WaitAnimFrameCount;
}
// Wait for visual tasks to finish.
-static void ScriptCmd_waitforvisualfinish(void)
+static void Cmd_waitforvisualfinish(void)
{
if (gAnimVisualTaskCount == 0)
{
sBattleAnimScriptPtr++;
- gAnimFramesToWait = 0;
+ sAnimFramesToWait = 0;
}
else
{
- gAnimFramesToWait = 1;
+ sAnimFramesToWait = 1;
}
}
-static void ScriptCmd_hang1(void)
+static void Cmd_nop(void)
{
}
-static void ScriptCmd_hang2(void)
+static void Cmd_nop2(void)
{
}
-static void ScriptCmd_end(void)
+static void Cmd_end(void)
{
s32 i;
bool32 continuousAnim = FALSE;
@@ -2109,7 +483,7 @@ static void ScriptCmd_end(void)
|| sMonAnimTaskIdArray[0] != TASK_NONE || sMonAnimTaskIdArray[1] != TASK_NONE)
{
sSoundAnimFramesToWait = 0;
- gAnimFramesToWait = 1;
+ sAnimFramesToWait = 1;
return;
}
@@ -2118,7 +492,7 @@ static void ScriptCmd_end(void)
{
if (++sSoundAnimFramesToWait <= 90) // Wait 90 frames, then halt the sound effect.
{
- gAnimFramesToWait = 1;
+ sAnimFramesToWait = 1;
return;
}
else
@@ -2146,66 +520,75 @@ static void ScriptCmd_end(void)
m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 256);
if (!IsContest())
{
- sub_80A8278();
+ InitPrioritiesForVisibleBattlers();
UpdateOamPriorityInAllHealthboxes(1);
}
gAnimScriptActive = FALSE;
}
}
-static void ScriptCmd_playse(void)
+static void Cmd_playse(void)
{
sBattleAnimScriptPtr++;
PlaySE(T1_READ_16(sBattleAnimScriptPtr));
sBattleAnimScriptPtr += 2;
}
-#define t1_MONBG_BATTLER 0
-#define t1_MON_IN_BG2 1
-#define t1_CREATE_ANOTHER_TASK 2
-#define t1_IS_SECONDMON_BG 3
+// These two tasks share context and similar task data
+// To differentiate them the task data for Task_UpdateMonBg is prefixed t2
-#define t2_BATTLER_SPRITE_ID 0
-#define t2_MON_IN_BG2 5
-#define t2_MONBG_BATTLER 6
+// Task data for Task_InitUpdateMonBg
+#define tBattlerId data[0]
+#define tInBg2 data[1]
+#define tActive data[2]
+#define tIsPartner data[3]
-static void sub_80A40F4(u8 taskId)
+// Task data for Task_UpdateMonBg
+#define t2_SpriteId data[0]
+#define t2_SpriteX data[1]
+#define t2_SpriteY data[2]
+#define t2_BgX data[3]
+#define t2_BgY data[4]
+#define t2_InBg2 data[5]
+#define t2_BattlerId data[6]
+
+static void Task_InitUpdateMonBg(u8 taskId)
{
- u8 newTaskId;
+ u8 updateTaskId;
- s16 *selfData = gTasks[taskId].data;
- u8 battlerSpriteId = gBattlerSpriteIds[selfData[t1_MONBG_BATTLER]];
+ s16 *data = gTasks[taskId].data;
+ u8 battlerSpriteId = gBattlerSpriteIds[tBattlerId];
gSprites[battlerSpriteId].invisible = TRUE;
- if (!selfData[t1_CREATE_ANOTHER_TASK])
+ if (!tActive)
{
DestroyAnimVisualTask(taskId);
return;
}
- newTaskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10);
- gTasks[newTaskId].data[t2_BATTLER_SPRITE_ID] = battlerSpriteId;
- gTasks[newTaskId].data[1] = gSprites[battlerSpriteId].x + gSprites[battlerSpriteId].x2;
- gTasks[newTaskId].data[2] = gSprites[battlerSpriteId].y + gSprites[battlerSpriteId].y2;
+ updateTaskId = CreateTask(Task_UpdateMonBg, 10);
+ gTasks[updateTaskId].t2_SpriteId = battlerSpriteId;
+ gTasks[updateTaskId].t2_SpriteX = gSprites[battlerSpriteId].x + gSprites[battlerSpriteId].x2;
+ gTasks[updateTaskId].t2_SpriteY = gSprites[battlerSpriteId].y + gSprites[battlerSpriteId].y2;
- if (!selfData[t1_MON_IN_BG2])
+ if (!tInBg2)
{
- gTasks[newTaskId].data[3] = gBattle_BG1_X;
- gTasks[newTaskId].data[4] = gBattle_BG1_Y;
+ gTasks[updateTaskId].t2_BgX = gBattle_BG1_X;
+ gTasks[updateTaskId].t2_BgY = gBattle_BG1_Y;
}
else
{
- gTasks[newTaskId].data[3] = gBattle_BG2_X;
- gTasks[newTaskId].data[4] = gBattle_BG2_Y;
+ gTasks[updateTaskId].t2_BgX = gBattle_BG2_X;
+ gTasks[updateTaskId].t2_BgY = gBattle_BG2_Y;
}
- gTasks[newTaskId].data[t2_MON_IN_BG2] = selfData[t1_MON_IN_BG2];
- gTasks[newTaskId].data[t2_MONBG_BATTLER] = selfData[t1_MONBG_BATTLER];
- sMonAnimTaskIdArray[selfData[t1_IS_SECONDMON_BG]] = newTaskId;
+ gTasks[updateTaskId].t2_InBg2 = tInBg2;
+ gTasks[updateTaskId].t2_BattlerId = tBattlerId;
+ sMonAnimTaskIdArray[tIsPartner] = updateTaskId;
DestroyAnimVisualTask(taskId);
}
-static void ScriptCmd_monbg(void)
+static void Cmd_monbg(void)
{
bool8 toBG_2;
u8 taskId;
@@ -2220,6 +603,7 @@ static void ScriptCmd_monbg(void)
else
battlerId = gBattleAnimAttacker;
+ // Move designated battler to background
if (IsBattlerSpriteVisible(battlerId))
{
u8 position = GetBattlerPosition(battlerId);
@@ -2229,15 +613,16 @@ static void ScriptCmd_monbg(void)
toBG_2 = TRUE;
MoveBattlerSpriteToBG(battlerId, toBG_2, FALSE);
- taskId = CreateTask(sub_80A40F4, 10);
+ taskId = CreateTask(Task_InitUpdateMonBg, 10);
gAnimVisualTaskCount++;
- gTasks[taskId].data[t1_MONBG_BATTLER] = battlerId;
- gTasks[taskId].data[t1_MON_IN_BG2] = toBG_2;
- gTasks[taskId].data[t1_CREATE_ANOTHER_TASK] = TRUE;
- gTasks[taskId].data[t1_IS_SECONDMON_BG] = 0;
+ gTasks[taskId].tBattlerId = battlerId;
+ gTasks[taskId].tInBg2 = toBG_2;
+ gTasks[taskId].tActive = TRUE;
+ gTasks[taskId].tIsPartner = FALSE;
}
+ // Move battler's partner to background
battlerId ^= BIT_FLANK;
if (IsBattlerSpriteVisible(battlerId))
{
@@ -2248,16 +633,16 @@ static void ScriptCmd_monbg(void)
toBG_2 = TRUE;
MoveBattlerSpriteToBG(battlerId, toBG_2, FALSE);
- taskId = CreateTask(sub_80A40F4, 10);
+ taskId = CreateTask(Task_InitUpdateMonBg, 10);
gAnimVisualTaskCount++;
- gTasks[taskId].data[0] = battlerId;
- gTasks[taskId].data[1] = toBG_2;
- gTasks[taskId].data[t1_CREATE_ANOTHER_TASK] = TRUE;
- gTasks[taskId].data[t1_IS_SECONDMON_BG] = 1;
+ gTasks[taskId].tBattlerId = battlerId;
+ gTasks[taskId].tInBg2 = toBG_2;
+ gTasks[taskId].tActive = TRUE;
+ gTasks[taskId].tIsPartner = TRUE;
}
sBattleAnimScriptPtr++;
- gAnimFramesToWait = 1;
+ sAnimFramesToWait = 1;
gAnimScriptCallback = WaitAnimFrameCount;
}
@@ -2329,10 +714,10 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible)
else
battlerPosition = GetBattlerPosition(battlerId);
- sub_8118FBC(1, 0, 0, battlerPosition, animBg.paletteId, animBg.bgTiles, animBg.bgTilemap, animBg.tilesOffset);
+ DrawBattlerOnBg(1, 0, 0, battlerPosition, animBg.paletteId, animBg.bgTiles, animBg.bgTilemap, animBg.tilesOffset);
if (IsContest())
- sub_80A46A0();
+ FlipBattlerBgTiles();
}
else
{
@@ -2359,11 +744,11 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible)
LoadPalette(&gPlttBufferUnfaded[0x100 + battlerId * 16], 0x90, 0x20);
CpuCopy32(&gPlttBufferUnfaded[0x100 + battlerId * 16], (void*)(BG_PLTT + 0x120), 0x20);
- sub_8118FBC(2, 0, 0, GetBattlerPosition(battlerId), animBg.paletteId, animBg.bgTiles + 0x1000, animBg.bgTilemap + 0x400, animBg.tilesOffset);
+ DrawBattlerOnBg(2, 0, 0, GetBattlerPosition(battlerId), animBg.paletteId, animBg.bgTiles + 0x1000, animBg.bgTilemap + 0x400, animBg.tilesOffset);
}
}
-static void sub_80A46A0(void)
+static void FlipBattlerBgTiles(void)
{
s32 i, j;
struct BattleAnimBgData animBg;
@@ -2377,10 +762,8 @@ static void sub_80A46A0(void)
{
for (j = 0; j < 4; j++)
{
- u16 temp = ptr[j + i * 32];
-
- ptr[j + i * 32] = ptr[7 - j + i * 32];
- ptr[7 - j + i * 32] = temp;
+ u16 temp;
+ SWAP(ptr[j + i * 32], ptr[7 - j + i * 32], temp);
}
}
for (i = 0; i < 8; i++)
@@ -2391,20 +774,20 @@ static void sub_80A46A0(void)
}
}
-void sub_80A4720(u16 a, u16 *b, u32 c, u8 d)
+void RelocateBattleBgPal(u16 paletteNum, u16 *dest, u32 offset, bool8 largeScreen)
{
s32 i, j;
- s32 var;
+ s32 size;
- if (d == 0)
- var = 32;
+ if (!largeScreen)
+ size = 32;
else
- var = 64;
- a <<= 12;
- for (i = 0; i < var; i++)
+ size = 64;
+ paletteNum <<= 12;
+ for (i = 0; i < size; i++)
{
for (j = 0; j < 32; j++)
- b[j + i * 32] = ((b[j + i * 32] & 0xFFF) | a) + c;
+ dest[j + i * 32] = ((dest[j + i * 32] & 0xFFF) | paletteNum) + offset;
}
}
@@ -2427,43 +810,58 @@ void ResetBattleAnimBg(bool8 toBG2)
}
}
-static void task_pA_ma0A_obj_to_bg_pal(u8 taskId)
+static void Task_UpdateMonBg(u8 taskId)
{
- u8 spriteId, palIndex;
+ u8 spriteId, battlerId;
s16 x, y;
struct BattleAnimBgData animBg;
- spriteId = gTasks[taskId].data[0];
- palIndex = gTasks[taskId].data[6];
+ spriteId = gTasks[taskId].t2_SpriteId;
+ battlerId = gTasks[taskId].t2_BattlerId;
GetBattleAnimBg1Data(&animBg);
- x = gTasks[taskId].data[1] - (gSprites[spriteId].x + gSprites[spriteId].x2);
- y = gTasks[taskId].data[2] - (gSprites[spriteId].y + gSprites[spriteId].y2);
+ x = gTasks[taskId].t2_SpriteX - (gSprites[spriteId].x + gSprites[spriteId].x2);
+ y = gTasks[taskId].t2_SpriteY - (gSprites[spriteId].y + gSprites[spriteId].y2);
- if (gTasks[taskId].data[5] == 0)
+ if (!gTasks[taskId].t2_InBg2)
{
u16 *src;
u16 *dst;
- gBattle_BG1_X = x + gTasks[taskId].data[3];
- gBattle_BG1_Y = y + gTasks[taskId].data[4];
- src = gPlttBufferFaded + 0x100 + palIndex * 16;
- dst = gPlttBufferFaded + 0x100 + animBg.paletteId * 16 - 256;
- CpuCopy32(src, dst, 0x20);
+ gBattle_BG1_X = x + gTasks[taskId].t2_BgX;
+ gBattle_BG1_Y = y + gTasks[taskId].t2_BgY;
+
+ src = &gPlttBufferFaded[0x100 + battlerId * 16];
+ dst = &gPlttBufferFaded[0x100 + animBg.paletteId * 16 - 256];
+ CpuCopy32(src, dst, 32);
}
else
{
u16 *src;
u16 *dst;
- gBattle_BG2_X = x + gTasks[taskId].data[3];
- gBattle_BG2_Y = y + gTasks[taskId].data[4];
- src = gPlttBufferFaded + 0x100 + palIndex * 16;
- dst = gPlttBufferFaded + 0x100 - 112;
- CpuCopy32(src, dst, 0x20);
+ gBattle_BG2_X = x + gTasks[taskId].t2_BgX;
+ gBattle_BG2_Y = y + gTasks[taskId].t2_BgY;
+
+ src = &gPlttBufferFaded[0x100 + battlerId * 16];
+ dst = &gPlttBufferFaded[0x100 - 112];
+ CpuCopy32(src, dst, 32);
}
}
-static void ScriptCmd_clearmonbg(void)
+#undef tBattlerId
+#undef tInBg2
+#undef tActive
+#undef tIsPartner
+
+#undef t2_SpriteId
+#undef t2_SpriteX
+#undef t2_SpriteY
+#undef t2_BgX
+#undef t2_BgY
+#undef t2_InBg2
+#undef t2_BattlerId
+
+static void Cmd_clearmonbg(void)
{
u8 animBattlerId;
u8 battlerId;
@@ -2489,14 +887,14 @@ static void ScriptCmd_clearmonbg(void)
else
animBattlerId = 0;
- taskId = CreateTask(sub_80A4980, 5);
+ taskId = CreateTask(Task_ClearMonBg, 5);
gTasks[taskId].data[0] = animBattlerId;
gTasks[taskId].data[2] = battlerId;
sBattleAnimScriptPtr++;
}
-static void sub_80A4980(u8 taskId)
+static void Task_ClearMonBg(u8 taskId)
{
gTasks[taskId].data[1]++;
if (gTasks[taskId].data[1] != 1)
@@ -2524,7 +922,8 @@ static void sub_80A4980(u8 taskId)
}
}
-static void ScriptCmd_monbg_22(void)
+// Equivalent to Cmd_monbg but never creates Task_InitUpdateMonBg / Task_UpdateMonBg
+static void Cmd_monbg_static(void)
{
bool8 toBG_2;
u8 battlerId;
@@ -2570,7 +969,7 @@ static void ScriptCmd_monbg_22(void)
sBattleAnimScriptPtr++;
}
-static void ScriptCmd_clearmonbg_23(void)
+static void Cmd_clearmonbg_static(void)
{
u8 animBattlerId;
u8 battlerId;
@@ -2596,14 +995,14 @@ static void ScriptCmd_clearmonbg_23(void)
else
animBattlerId = 0;
- taskId = CreateTask(sub_80A4BB0, 5);
+ taskId = CreateTask(Task_ClearMonBgStatic, 5);
gTasks[taskId].data[0] = animBattlerId;
gTasks[taskId].data[2] = battlerId;
sBattleAnimScriptPtr++;
}
-static void sub_80A4BB0(u8 taskId)
+static void Task_ClearMonBgStatic(u8 taskId)
{
gTasks[taskId].data[1]++;
if (gTasks[taskId].data[1] != 1)
@@ -2625,16 +1024,7 @@ static void sub_80A4BB0(u8 taskId)
}
}
-#undef t1_MONBG_BATTLER
-#undef t1_MON_IN_BG2
-#undef t1_CREATE_ANOTHER_TASK
-#undef t1_IS_SECONDMON_BG
-
-#undef t2_BATTLER_SPRITE_ID
-#undef t2_MON_IN_BG2
-#undef t2_MONBG_BATTLER
-
-static void ScriptCmd_setalpha(void)
+static void Cmd_setalpha(void)
{
u16 half1, half2;
@@ -2645,7 +1035,7 @@ static void ScriptCmd_setalpha(void)
SetGpuReg(REG_OFFSET_BLDALPHA, half1 | half2);
}
-static void ScriptCmd_setbldcnt(void)
+static void Cmd_setbldcnt(void)
{
u16 half1, half2;
@@ -2655,27 +1045,31 @@ static void ScriptCmd_setbldcnt(void)
SetGpuReg(REG_OFFSET_BLDCNT, half1 | half2);
}
-static void ScriptCmd_blendoff(void)
+static void Cmd_blendoff(void)
{
sBattleAnimScriptPtr++;
SetGpuReg(REG_OFFSET_BLDCNT, 0);
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
}
-static void ScriptCmd_call(void)
+static void Cmd_call(void)
{
sBattleAnimScriptPtr++;
sBattleAnimScriptRetAddr = sBattleAnimScriptPtr + 4;
sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr);
}
-static void ScriptCmd_return(void)
+static void Cmd_return(void)
{
sBattleAnimScriptPtr = sBattleAnimScriptRetAddr;
}
-static void ScriptCmd_setarg(void)
+static void Cmd_setarg(void)
{
+ // Save original address to return to
+ // after the T1_READ_16, + 4.
+ // They could have equivalently just advanced
+ // sBattleAnimScriptPtr by 2 afterwards.
const u8 *addr = sBattleAnimScriptPtr;
u16 value;
u8 argId;
@@ -2688,7 +1082,7 @@ static void ScriptCmd_setarg(void)
gBattleAnimArgs[argId] = value;
}
-static void ScriptCmd_choosetwoturnanim(void)
+static void Cmd_choosetwoturnanim(void)
{
sBattleAnimScriptPtr++;
if (gAnimMoveTurn & 1)
@@ -2696,7 +1090,7 @@ static void ScriptCmd_choosetwoturnanim(void)
sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr);
}
-static void ScriptCmd_jumpifmoveturn(void)
+static void Cmd_jumpifmoveturn(void)
{
u8 toCheck;
sBattleAnimScriptPtr++;
@@ -2709,7 +1103,7 @@ static void ScriptCmd_jumpifmoveturn(void)
sBattleAnimScriptPtr += 4;
}
-static void ScriptCmd_goto(void)
+static void Cmd_goto(void)
{
sBattleAnimScriptPtr++;
sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr);
@@ -2728,7 +1122,7 @@ bool8 IsContest(void)
#define tBackgroundId data[0]
#define tState data[10]
-static void ScriptCmd_fadetobg(void)
+static void Cmd_fadetobg(void)
{
u8 backgroundId;
u8 taskId;
@@ -2741,7 +1135,7 @@ static void ScriptCmd_fadetobg(void)
sAnimBackgroundFadeState = 1;
}
-static void ScriptCmd_fadetobgfromset(void)
+static void Cmd_fadetobgfromset(void)
{
u8 bg1, bg2, bg3;
u8 taskId;
@@ -2809,17 +1203,17 @@ static void LoadMoveBg(u16 bgId)
void *dmaDest;
LZDecompressWram(tilemap, gDecompressionBuffer);
- sub_80A4720(GetBattleBgPaletteNum(), (void*)(gDecompressionBuffer), 0x100, 0);
+ RelocateBattleBgPal(GetBattleBgPaletteNum(), (void*)gDecompressionBuffer, 0x100, FALSE);
dmaSrc = gDecompressionBuffer;
- dmaDest = (void *)(BG_SCREEN_ADDR(26));
+ dmaDest = (void *)BG_SCREEN_ADDR(26);
DmaCopy32(3, dmaSrc, dmaDest, 0x800);
- LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(BG_SCREEN_ADDR(4)));
+ LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)BG_SCREEN_ADDR(4));
LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, GetBattleBgPaletteNum() * 16, 32);
}
else
{
- LZDecompressVram(gBattleAnimBackgroundTable[bgId].tilemap, (void *)(BG_SCREEN_ADDR(26)));
- LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(BG_CHAR_ADDR(2)));
+ LZDecompressVram(gBattleAnimBackgroundTable[bgId].tilemap, (void *)BG_SCREEN_ADDR(26));
+ LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)BG_CHAR_ADDR(2));
LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, 32, 32);
}
}
@@ -2832,7 +1226,7 @@ static void LoadDefaultBg(void)
DrawMainBattleBackground();
}
-static void ScriptCmd_restorebg(void)
+static void Cmd_restorebg(void)
{
u8 taskId;
@@ -2845,33 +1239,33 @@ static void ScriptCmd_restorebg(void)
#undef tBackgroundId
#undef tState
-static void ScriptCmd_waitbgfadeout(void)
+static void Cmd_waitbgfadeout(void)
{
if (sAnimBackgroundFadeState == 2)
{
sBattleAnimScriptPtr++;
- gAnimFramesToWait = 0;
+ sAnimFramesToWait = 0;
}
else
{
- gAnimFramesToWait = 1;
+ sAnimFramesToWait = 1;
}
}
-static void ScriptCmd_waitbgfadein(void)
+static void Cmd_waitbgfadein(void)
{
if (sAnimBackgroundFadeState == 0)
{
sBattleAnimScriptPtr++;
- gAnimFramesToWait = 0;
+ sAnimFramesToWait = 0;
}
else
{
- gAnimFramesToWait = 1;
+ sAnimFramesToWait = 1;
}
}
-static void ScriptCmd_changebg(void)
+static void Cmd_changebg(void)
{
sBattleAnimScriptPtr++;
LoadMoveBg(sBattleAnimScriptPtr[0]);
@@ -2963,7 +1357,7 @@ s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan)
return ret;
}
-static void ScriptCmd_playsewithpan(void)
+static void Cmd_playsewithpan(void)
{
u16 songId;
s8 pan;
@@ -2975,7 +1369,7 @@ static void ScriptCmd_playsewithpan(void)
sBattleAnimScriptPtr += 3;
}
-static void ScriptCmd_setpan(void)
+static void Cmd_setpan(void)
{
s8 pan;
@@ -2992,7 +1386,7 @@ static void ScriptCmd_setpan(void)
#define tCurrentPan data[4]
#define tFrameCounter data[8]
-static void ScriptCmd_panse_1B(void)
+static void Cmd_panse(void)
{
u16 songNum;
s8 currentPanArg, incrementPan, incrementPanArg, currentPan, targetPan;
@@ -3002,13 +1396,14 @@ static void ScriptCmd_panse_1B(void)
sBattleAnimScriptPtr++;
songNum = T1_READ_16(sBattleAnimScriptPtr);
currentPanArg = sBattleAnimScriptPtr[2];
- incrementPan = sBattleAnimScriptPtr[3];
+ incrementPan = sBattleAnimScriptPtr[3]; // targetPan, var is re-used
incrementPanArg = sBattleAnimScriptPtr[4];
framesToWait = sBattleAnimScriptPtr[5];
currentPan = BattleAnimAdjustPanning(currentPanArg);
targetPan = BattleAnimAdjustPanning(incrementPan);
incrementPan = CalculatePanIncrement(currentPan, targetPan, incrementPanArg);
+
taskId = CreateTask(Task_PanFromInitialToTarget, 1);
gTasks[taskId].tInitialPan = currentPan;
gTasks[taskId].tTargetPan = targetPan;
@@ -3064,7 +1459,7 @@ void Task_PanFromInitialToTarget(u8 taskId)
}
}
-static void ScriptCmd_panse_26(void)
+static void Cmd_panse_adjustnone(void)
{
u16 songId;
s8 currentPan, targetPan, incrementPan;
@@ -3091,7 +1486,7 @@ static void ScriptCmd_panse_26(void)
sBattleAnimScriptPtr += 6;
}
-static void ScriptCmd_panse_27(void)
+static void Cmd_panse_adjustall(void)
{
u16 songId;
s8 targetPanArg, incrementPanArg, currentPanArg, currentPan, targetPan, incrementPan;
@@ -3135,7 +1530,7 @@ static void ScriptCmd_panse_27(void)
#define tNumberOfPlays data[3]
#define tFrameCounter data[8]
-static void ScriptCmd_loopsewithpan(void)
+static void Cmd_loopsewithpan(void)
{
u16 songId;
s8 panningArg, panning;
@@ -3192,7 +1587,7 @@ static void Task_LoopAndPlaySE(u8 taskId)
#define tPanning data[1]
#define tFramesToWait data[2]
-static void ScriptCmd_waitplaysewithpan(void)
+static void Cmd_waitplaysewithpan(void)
{
u16 songId;
s8 panningArg, panning;
@@ -3228,7 +1623,7 @@ static void Task_WaitAndPlaySE(u8 taskId)
#undef tPanning
#undef tFramesToWait
-static void ScriptCmd_createsoundtask(void)
+static void Cmd_createsoundtask(void)
{
TaskFunc func;
u8 numArgs, taskId;
@@ -3249,12 +1644,12 @@ static void ScriptCmd_createsoundtask(void)
gAnimSoundTaskCount++;
}
-static void ScriptCmd_waitsound(void)
+static void Cmd_waitsound(void)
{
if (gAnimSoundTaskCount != 0)
{
sSoundAnimFramesToWait = 0;
- gAnimFramesToWait = 1;
+ sAnimFramesToWait = 1;
}
else if (IsSEPlaying())
{
@@ -3266,18 +1661,18 @@ static void ScriptCmd_waitsound(void)
}
else
{
- gAnimFramesToWait = 1;
+ sAnimFramesToWait = 1;
}
}
else
{
sSoundAnimFramesToWait = 0;
sBattleAnimScriptPtr++;
- gAnimFramesToWait = 0;
+ sAnimFramesToWait = 0;
}
}
-static void ScriptCmd_jumpargeq(void)
+static void Cmd_jumpargeq(void)
{
u8 argId;
s16 valueToCheck;
@@ -3292,7 +1687,7 @@ static void ScriptCmd_jumpargeq(void)
sBattleAnimScriptPtr += 7;
}
-static void ScriptCmd_jumpifcontest(void)
+static void Cmd_jumpifcontest(void)
{
sBattleAnimScriptPtr++;
if (IsContest())
@@ -3301,7 +1696,7 @@ static void ScriptCmd_jumpifcontest(void)
sBattleAnimScriptPtr += 4;
}
-static void ScriptCmd_monbgprio_28(void)
+static void Cmd_splitbgprio(void)
{
u8 wantedBattler;
u8 battlerId;
@@ -3315,6 +1710,7 @@ static void ScriptCmd_monbgprio_28(void)
else
battlerId = gBattleAnimAttacker;
+ // Apply only if the given battler is the lead (on left from team's perspective)
battlerPosition = GetBattlerPosition(battlerId);
if (!IsContest() && (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_OPPONENT_RIGHT))
{
@@ -3323,7 +1719,7 @@ static void ScriptCmd_monbgprio_28(void)
}
}
-static void ScriptCmd_monbgprio_29(void)
+static void Cmd_splitbgprio_all(void)
{
sBattleAnimScriptPtr++;
if (!IsContest())
@@ -3333,7 +1729,7 @@ static void ScriptCmd_monbgprio_29(void)
}
}
-static void ScriptCmd_monbgprio_2A(void)
+static void Cmd_splitbgprio_foes(void)
{
u8 wantedBattler;
u8 battlerPosition;
@@ -3341,6 +1737,8 @@ static void ScriptCmd_monbgprio_2A(void)
wantedBattler = sBattleAnimScriptPtr[1];
sBattleAnimScriptPtr += 2;
+
+ // Apply only if the attacking the opposing side
if (GetBattlerSide(gBattleAnimAttacker) != GetBattlerSide(gBattleAnimTarget))
{
if (wantedBattler != ANIM_ATTACKER)
@@ -3348,6 +1746,7 @@ static void ScriptCmd_monbgprio_2A(void)
else
battlerId = gBattleAnimAttacker;
+ // Apply only if the given battler is the lead (on left from team's perspective)
battlerPosition = GetBattlerPosition(battlerId);
if (!IsContest() && (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_OPPONENT_RIGHT))
{
@@ -3357,7 +1756,7 @@ static void ScriptCmd_monbgprio_2A(void)
}
}
-static void ScriptCmd_invisible(void)
+static void Cmd_invisible(void)
{
u8 spriteId;
@@ -3368,7 +1767,7 @@ static void ScriptCmd_invisible(void)
sBattleAnimScriptPtr += 2;
}
-static void ScriptCmd_visible(void)
+static void Cmd_visible(void)
{
u8 spriteId;
@@ -3379,34 +1778,37 @@ static void ScriptCmd_visible(void)
sBattleAnimScriptPtr += 2;
}
-static void ScriptCmd_doublebattle_2D(void)
+// Below two commands are never used
+static void Cmd_teamattack_moveback(void)
{
u8 wantedBattler;
- u8 r4;
+ u8 priorityRank;
u8 spriteId;
wantedBattler = sBattleAnimScriptPtr[1];
sBattleAnimScriptPtr += 2;
+
+ // Apply to double battles when attacking own side
if (!IsContest() && IsDoubleBattle()
&& GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget))
{
if (wantedBattler == ANIM_ATTACKER)
{
- r4 = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker);
+ priorityRank = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker);
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
}
else
{
- r4 = GetBattlerSpriteBGPriorityRank(gBattleAnimTarget);
+ priorityRank = GetBattlerSpriteBGPriorityRank(gBattleAnimTarget);
spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
}
if (spriteId != SPRITE_NONE)
{
gSprites[spriteId].invisible = FALSE;
- if (r4 == 2)
+ if (priorityRank == 2)
gSprites[spriteId].oam.priority = 3;
- if (r4 == 1)
+ if (priorityRank == 1)
ResetBattleAnimBg(FALSE);
else
ResetBattleAnimBg(TRUE);
@@ -3414,34 +1816,36 @@ static void ScriptCmd_doublebattle_2D(void)
}
}
-static void ScriptCmd_doublebattle_2E(void)
+static void Cmd_teamattack_movefwd(void)
{
u8 wantedBattler;
- u8 r4;
+ u8 priorityRank;
u8 spriteId;
wantedBattler = sBattleAnimScriptPtr[1];
sBattleAnimScriptPtr += 2;
+
+ // Apply to double battles when attacking own side
if (!IsContest() && IsDoubleBattle()
&& GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget))
{
if (wantedBattler == ANIM_ATTACKER)
{
- r4 = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker);
+ priorityRank = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker);
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
}
else
{
- r4 = GetBattlerSpriteBGPriorityRank(gBattleAnimTarget);
+ priorityRank = GetBattlerSpriteBGPriorityRank(gBattleAnimTarget);
spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
}
- if (spriteId != SPRITE_NONE && r4 == 2)
+ if (spriteId != SPRITE_NONE && priorityRank == 2)
gSprites[spriteId].oam.priority = 2;
}
}
-static void ScriptCmd_stopsound(void)
+static void Cmd_stopsound(void)
{
m4aMPlayStop(&gMPlayInfo_SE1);
m4aMPlayStop(&gMPlayInfo_SE2);
diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c
index 2f4343e73..27149873d 100755
--- a/src/battle_anim_effects_2.c
+++ b/src/battle_anim_effects_2.c
@@ -3250,7 +3250,7 @@ void AnimTask_HeartsBackground(u8 taskId)
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
GetBattleAnimBg1Data(&animBg);
AnimLoadCompressedBgGfx(animBg.bgId, &gBattleAnimBgImage_Attract, animBg.tilesOffset);
- AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_Attract, 0);
+ AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_Attract, FALSE);
LoadCompressedPalette(&gBattleAnimBgPalette_Attract, animBg.paletteId * 16, 32);
gTasks[taskId].func = AnimTask_HeartsBackground_Step;
}
@@ -3328,11 +3328,11 @@ void AnimTask_ScaryFace(u8 taskId)
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
GetBattleAnimBg1Data(&animBg);
if (IsContest())
- AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_ScaryFaceContest, 0);
+ AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_ScaryFaceContest, FALSE);
else if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT)
- AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_ScaryFacePlayer, 0);
+ AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_ScaryFacePlayer, FALSE);
else
- AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_ScaryFaceOpponent, 0);
+ AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_ScaryFaceOpponent, FALSE);
AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_ScaryFace, animBg.tilesOffset);
LoadCompressedPalette(gBattleAnimBgPalette_ScaryFace, animBg.paletteId * 16, 32);
diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c
index 2a649dd8b..267b6db9c 100755
--- a/src/battle_anim_effects_3.c
+++ b/src/battle_anim_effects_3.c
@@ -2388,7 +2388,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId)
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
GetBattleAnimBg1Data(&animBg);
- AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimMaskTilemap_LightBeam, 0);
+ AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimMaskTilemap_LightBeam, FALSE);
if (IsContest())
{
gBattle_BG1_X = -56;
@@ -2569,7 +2569,7 @@ void AnimTask_DoomDesireLightBeam(u8 taskId)
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
GetBattleAnimBg1Data(&animBg);
- AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimMaskTilemap_LightBeam, 0);
+ AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimMaskTilemap_LightBeam, FALSE);
if (IsContest())
{
gBattle_BG1_X = -56;
diff --git a/src/battle_anim_ice.c b/src/battle_anim_ice.c
index a0608cfd1..95c64f7ca 100644
--- a/src/battle_anim_ice.c
+++ b/src/battle_anim_ice.c
@@ -1000,7 +1000,7 @@ void AnimTask_HazeScrollingFog(u8 taskId)
GetBattleAnimBg1Data(&animBg);
LoadBgTiles(animBg.bgId, gWeatherFogHorizontalTiles, 0x800, animBg.tilesOffset);
- AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimFogTilemap, 0);
+ AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimFogTilemap, FALSE);
LoadPalette(&gFogPalette, animBg.paletteId * 16, 32);
gTasks[taskId].func = AnimTask_HazeScrollingFog_Step;
@@ -1105,7 +1105,7 @@ void AnimTask_LoadMistTiles(u8 taskId)
GetBattleAnimBg1Data(&animBg);
LoadBgTiles(animBg.bgId, gWeatherFogHorizontalTiles, 0x800, animBg.tilesOffset);
- AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimFogTilemap, 0);
+ AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimFogTilemap, FALSE);
LoadPalette(&gFogPalette, animBg.paletteId * 16, 32);
gTasks[taskId].data[15] = -1;
diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c
index be409f366..d0ddfdd77 100644
--- a/src/battle_anim_mons.c
+++ b/src/battle_anim_mons.c
@@ -37,15 +37,15 @@ static void sub_80A8D78(struct Task *task, u8 taskId);
EWRAM_DATA static union AffineAnimCmd *gAnimTaskAffineAnim = NULL;
// Const rom data
-static const struct UCoords8 sBattlerCoords[][4] =
+static const struct UCoords8 sBattlerCoords[][MAX_BATTLERS_COUNT] =
{
- {
+ { // Single battle
{ 72, 80 },
{ 176, 40 },
{ 48, 40 },
{ 112, 80 },
},
- {
+ { // Double battle
{ 32, 80 },
{ 200, 40 },
{ 90, 88 },
@@ -54,29 +54,29 @@ static const struct UCoords8 sBattlerCoords[][4] =
};
// One entry for each of the four Castform forms.
-const struct MonCoords gCastformFrontSpriteCoords[] =
+const struct MonCoords gCastformFrontSpriteCoords[NUM_CASTFORM_FORMS] =
{
- { .size = 0x44, .y_offset = 17 }, // NORMAL
- { .size = 0x66, .y_offset = 9 }, // SUN
- { .size = 0x46, .y_offset = 9 }, // RAIN
- { .size = 0x86, .y_offset = 8 }, // HAIL
+ [CASTFORM_NORMAL] = { .size = 0x44, .y_offset = 17 },
+ [CASTFORM_FIRE] = { .size = 0x66, .y_offset = 9 },
+ [CASTFORM_WATER] = { .size = 0x46, .y_offset = 9 },
+ [CASTFORM_ICE] = { .size = 0x86, .y_offset = 8 },
};
-static const u8 sCastformElevations[] =
+static const u8 sCastformElevations[NUM_CASTFORM_FORMS] =
{
- 13, // NORMAL
- 14, // SUN
- 13, // RAIN
- 13, // HAIL
+ [CASTFORM_NORMAL] = 13,
+ [CASTFORM_FIRE] = 14,
+ [CASTFORM_WATER] = 13,
+ [CASTFORM_ICE] = 13,
};
// Y position of the backsprite for each of the four Castform forms.
-static const u8 sCastformBackSpriteYCoords[] =
+static const u8 sCastformBackSpriteYCoords[NUM_CASTFORM_FORMS] =
{
- 0, // NORMAL
- 0, // SUN
- 0, // RAIN
- 0, // HAIL
+ [CASTFORM_NORMAL] = 0,
+ [CASTFORM_FIRE] = 0,
+ [CASTFORM_WATER] = 0,
+ [CASTFORM_ICE] = 0,
};
// Placeholders for pokemon sprites to be created for a move animation effect (e.g. Role Play / Snatch)
@@ -853,8 +853,8 @@ void GetBattleAnimBg1Data(struct BattleAnimBgData *out)
{
if (IsContest())
{
- out->bgTiles = gUnknown_0202305C;
- out->bgTilemap = (u16 *)gUnknown_02023060;
+ out->bgTiles = gBattleAnimBgTileBuffer;
+ out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer;
out->paletteId = 14;
out->bgId = 1;
out->tilesOffset = 0;
@@ -862,8 +862,8 @@ void GetBattleAnimBg1Data(struct BattleAnimBgData *out)
}
else
{
- out->bgTiles = gUnknown_0202305C;
- out->bgTilemap = (u16 *)gUnknown_02023060;
+ out->bgTiles = gBattleAnimBgTileBuffer;
+ out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer;
out->paletteId = 8;
out->bgId = 1;
out->tilesOffset = 0x200;
@@ -875,8 +875,8 @@ void GetBattleAnimBgData(struct BattleAnimBgData *out, u32 bgId)
{
if (IsContest())
{
- out->bgTiles = gUnknown_0202305C;
- out->bgTilemap = (u16 *)gUnknown_02023060;
+ out->bgTiles = gBattleAnimBgTileBuffer;
+ out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer;
out->paletteId = 14;
out->bgId = 1;
out->tilesOffset = 0;
@@ -888,8 +888,8 @@ void GetBattleAnimBgData(struct BattleAnimBgData *out, u32 bgId)
}
else
{
- out->bgTiles = gUnknown_0202305C;
- out->bgTilemap = (u16 *)gUnknown_02023060;
+ out->bgTiles = gBattleAnimBgTileBuffer;
+ out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer;
out->paletteId = 9;
out->bgId = 2;
out->tilesOffset = 0x300;
@@ -899,8 +899,8 @@ void GetBattleAnimBgData(struct BattleAnimBgData *out, u32 bgId)
void sub_80A6BFC(struct BattleAnimBgData *out, u8 unused)
{
- out->bgTiles = gUnknown_0202305C;
- out->bgTilemap = (u16 *)gUnknown_02023060;
+ out->bgTiles = gBattleAnimBgTileBuffer;
+ out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer;
if (IsContest())
{
out->paletteId = 14;
@@ -937,9 +937,9 @@ void ClearBattleAnimBg(u32 bgId)
void AnimLoadCompressedBgGfx(u32 bgId, const u32 *src, u32 tilesOffset)
{
- CpuFill32(0, gUnknown_0202305C, 0x2000);
- LZDecompressWram(src, gUnknown_0202305C);
- LoadBgTiles(bgId, gUnknown_0202305C, 0x2000, tilesOffset);
+ CpuFill32(0, gBattleAnimBgTileBuffer, 0x2000);
+ LZDecompressWram(src, gBattleAnimBgTileBuffer);
+ LoadBgTiles(bgId, gBattleAnimBgTileBuffer, 0x2000, tilesOffset);
}
static void InitAnimBgTilemapBuffer(u32 bgId, const void *src)
@@ -954,12 +954,12 @@ void AnimLoadCompressedBgTilemap(u32 bgId, const void *src)
CopyBgTilemapBufferToVram(bgId);
}
-void AnimLoadCompressedBgTilemapHandleContest(struct BattleAnimBgData *unk, const void *src, u32 arg2)
+void AnimLoadCompressedBgTilemapHandleContest(struct BattleAnimBgData *data, const void *src, bool32 largeScreen)
{
- InitAnimBgTilemapBuffer(unk->bgId, src);
+ InitAnimBgTilemapBuffer(data->bgId, src);
if (IsContest() == TRUE)
- sub_80A4720(unk->paletteId, unk->bgTilemap, 0, arg2);
- CopyBgTilemapBufferToVram(unk->bgId);
+ RelocateBattleBgPal(data->paletteId, data->bgTilemap, 0, largeScreen);
+ CopyBgTilemapBufferToVram(data->bgId);
}
u8 GetBattleBgPaletteNum(void)
@@ -1947,7 +1947,8 @@ void AnimTask_GetFrustrationPowerLevel(u8 taskId)
DestroyAnimVisualTask(taskId);
}
-void sub_80A8174(u8 priority)
+// Unused
+static void SetPriorityForVisibleBattlers(u8 priority)
{
if (IsBattlerSpriteVisible(gBattleAnimTarget))
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].oam.priority = priority;
@@ -1959,7 +1960,7 @@ void sub_80A8174(u8 priority)
gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority = priority;
}
-void sub_80A8278(void)
+void InitPrioritiesForVisibleBattlers(void)
{
int i;
diff --git a/src/battle_anim_rock.c b/src/battle_anim_rock.c
index 7f292d596..905f51a79 100644
--- a/src/battle_anim_rock.c
+++ b/src/battle_anim_rock.c
@@ -409,7 +409,7 @@ void AnimTask_LoadSandstormBackground(u8 taskId)
GetBattleAnimBg1Data(&animBg);
AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_Sandstorm, animBg.tilesOffset);
- AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimBgTilemap_Sandstorm, 0);
+ AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimBgTilemap_Sandstorm, FALSE);
LoadCompressedPalette(gBattleAnimSpritePal_FlyingDirt, animBg.paletteId * 16, 32);
if (gBattleAnimArgs[0] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c
index c20fbc9e2..b0eab5b74 100644
--- a/src/battle_anim_utility_funcs.c
+++ b/src/battle_anim_utility_funcs.c
@@ -331,7 +331,7 @@ void AnimTask_DrawFallingWhiteLinesOnAttacker(u8 taskId)
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
newSpriteId = CreateInvisibleSpriteCopy(gBattleAnimAttacker, spriteId, species);
GetBattleAnimBg1Data(&animBgData);
- AnimLoadCompressedBgTilemapHandleContest(&animBgData, gBattleAnimMaskTilemap_Curse, 0);
+ AnimLoadCompressedBgTilemapHandleContest(&animBgData, gBattleAnimMaskTilemap_Curse, FALSE);
AnimLoadCompressedBgGfx(animBgData.bgId, gBattleAnimMaskImage_Curse, animBgData.tilesOffset);
LoadPalette(sCurseLinesPalette, animBgData.paletteId * 16 + 1, 2);
@@ -470,9 +470,9 @@ static void StatsChangeAnimation_Step2(u8 taskId)
GetBattleAnimBg1Data(&animBgData);
if (sAnimStatsChangeData->data[0] == 0)
- AnimLoadCompressedBgTilemapHandleContest(&animBgData, gBattleStatMask1_Tilemap, 0);
+ AnimLoadCompressedBgTilemapHandleContest(&animBgData, gBattleStatMask1_Tilemap, FALSE);
else
- AnimLoadCompressedBgTilemapHandleContest(&animBgData, gBattleStatMask2_Tilemap, 0);
+ AnimLoadCompressedBgTilemapHandleContest(&animBgData, gBattleStatMask2_Tilemap, FALSE);
AnimLoadCompressedBgGfx(animBgData.bgId, gBattleStatMask_Gfx, animBgData.tilesOffset);
switch (sAnimStatsChangeData->data[1])
@@ -821,7 +821,7 @@ void StartMonScrollingBgMask(u8 taskId, int unused, u16 scrollSpeed, u8 battler,
spriteId2 = CreateInvisibleSpriteCopy(battler2, gBattlerSpriteIds[battler2], species);
GetBattleAnimBg1Data(&animBgData);
- AnimLoadCompressedBgTilemapHandleContest(&animBgData, tilemap, 0);
+ AnimLoadCompressedBgTilemapHandleContest(&animBgData, tilemap, FALSE);
AnimLoadCompressedBgGfx(animBgData.bgId, gfx, animBgData.tilesOffset);
LoadCompressedPalette(palette, animBgData.paletteId * 16, 32);
diff --git a/src/battle_anim_water.c b/src/battle_anim_water.c
index 4ee09f386..1c2d08d6a 100644
--- a/src/battle_anim_water.c
+++ b/src/battle_anim_water.c
@@ -54,9 +54,8 @@ static void AnimTask_WaterSport_Step(u8);
static void CreateWaterSportDroplet(struct Task*);
static void CreateWaterPulseRingBubbles(struct Sprite*, int, int);
-// Both unused
-const u8 gUnknown_8593C80[] = INCBIN_U8("graphics/unknown/unknown_593C80.4bpp");
-const u8 gUnknown_8593FFC[] = INCBIN_U8("graphics/unknown/unknown_593FFC.bin");
+static const u8 sUnusedWater_Gfx[] = INCBIN_U8("graphics/battle_anims/unused_water_gfx.4bpp");
+static const u8 sUnusedWater[] = INCBIN_U8("graphics/battle_anims/unused_water.bin");
static const union AnimCmd sAnim_RainDrop[] =
{
@@ -822,7 +821,7 @@ void AnimTask_CreateSurfWave(u8 taskId)
}
else
{
- AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimBgTilemap_SurfContest, 1);
+ AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimBgTilemap_SurfContest, TRUE);
}
AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_Surf, animBg.tilesOffset);
if (gBattleAnimArgs[0] == 0)
diff --git a/src/battle_arena.c b/src/battle_arena.c
index 8b5f3c16d..8a993f770 100644
--- a/src/battle_arena.c
+++ b/src/battle_arena.c
@@ -28,7 +28,6 @@
#include "constants/moves.h"
#include "constants/rgb.h"
-// This file's functions.
static void InitArenaChallenge(void);
static void GetArenaData(void);
static void SetArenaData(void);
@@ -39,7 +38,6 @@ static void BufferArenaOpponentName(void);
static void SpriteCb_JudgmentIcon(struct Sprite *sprite);
static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler);
-// Const rom data.
static const s8 sMindRatings[] =
{
[MOVE_NONE] = 0,
@@ -501,7 +499,6 @@ static const u16 sLongStreakPrizeItems[] =
ITEM_CHOICE_BAND,
};
-// code
void CallBattleArenaFunction(void)
{
sArenaFunctions[gSpecialVar_0x8004]();
@@ -537,15 +534,15 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
gBattleTextBuff2[0] = CHAR_0;
gBattleTextBuff2[1] = EOS;
BattleStringExpandPlaceholdersToDisplayedString(gText_PlayerMon1Name);
- BattlePutTextOnWindow(gDisplayedStringBattle, 15);
- BattlePutTextOnWindow(gText_Vs, 16);
+ BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_PLAYER_NAME);
+ BattlePutTextOnWindow(gText_Vs, ARENA_WIN_VS);
BattleStringExpandPlaceholdersToDisplayedString(gText_OpponentMon1Name);
- BattlePutTextOnWindow(gDisplayedStringBattle, 17);
- BattlePutTextOnWindow(gText_Mind, 18);
- BattlePutTextOnWindow(gText_Skill, 19);
- BattlePutTextOnWindow(gText_Body, 20);
+ BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_OPPONENT_NAME);
+ BattlePutTextOnWindow(gText_Mind, ARENA_WIN_MIND);
+ BattlePutTextOnWindow(gText_Skill, ARENA_WIN_SKILL);
+ BattlePutTextOnWindow(gText_Body, ARENA_WIN_BODY);
BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
- BattlePutTextOnWindow(gDisplayedStringBattle, 21);
+ BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE);
(*state)++;
}
break;
@@ -567,7 +564,7 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
ShowJudgmentSprite(80, 40, ARENA_CATEGORY_MIND, B_POSITION_PLAYER_LEFT);
ShowJudgmentSprite(160, 40, ARENA_CATEGORY_MIND, B_POSITION_OPPONENT_LEFT);
BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
- BattlePutTextOnWindow(gDisplayedStringBattle, 21);
+ BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE);
(*state)++;
ret = 1;
break;
@@ -576,7 +573,7 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
ShowJudgmentSprite(80, 56, ARENA_CATEGORY_SKILL, B_POSITION_PLAYER_LEFT);
ShowJudgmentSprite(160, 56, ARENA_CATEGORY_SKILL, B_POSITION_OPPONENT_LEFT);
BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
- BattlePutTextOnWindow(gDisplayedStringBattle, 21);
+ BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE);
(*state)++;
ret = 1;
break;
@@ -585,7 +582,7 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
ShowJudgmentSprite(80, 72, ARENA_CATEGORY_BODY, B_POSITION_PLAYER_LEFT);
ShowJudgmentSprite(160, 72, ARENA_CATEGORY_BODY, B_POSITION_OPPONENT_LEFT);
BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
- BattlePutTextOnWindow(gDisplayedStringBattle, 21);
+ BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE);
(*state)++;
ret = 1;
break;
diff --git a/src/battle_bg.c b/src/battle_bg.c
index 0ad126509..cbd293294 100644
--- a/src/battle_bg.c
+++ b/src/battle_bg.c
@@ -161,7 +161,7 @@ const struct BgTemplate gBattleBgTemplates[] =
static const struct WindowTemplate gStandardBattleWindowTemplates[] =
{
- { // 0 Standard battle message
+ [B_WIN_MSG] = {
.bg = 0,
.tilemapLeft = 2,
.tilemapTop = 15,
@@ -170,7 +170,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 0,
.baseBlock = 0x0090,
},
- { // 1 "What will (pokemon) do?"
+ [B_WIN_ACTION_PROMPT] = {
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 35,
@@ -179,7 +179,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 0,
.baseBlock = 0x01c0,
},
- { // 2 "Fight/Pokemon/Bag/Run"
+ [B_WIN_ACTION_MENU] = {
.bg = 0,
.tilemapLeft = 17,
.tilemapTop = 35,
@@ -188,7 +188,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0190,
},
- { // 3 Top left move
+ [B_WIN_MOVE_NAME_1] = {
.bg = 0,
.tilemapLeft = 2,
.tilemapTop = 55,
@@ -197,7 +197,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0300,
},
- { // 4 Top right move
+ [B_WIN_MOVE_NAME_2] = {
.bg = 0,
.tilemapLeft = 11,
.tilemapTop = 55,
@@ -206,7 +206,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0310,
},
- { // 5 Bottom left move
+ [B_WIN_MOVE_NAME_3] = {
.bg = 0,
.tilemapLeft = 2,
.tilemapTop = 57,
@@ -215,7 +215,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0320,
},
- { // 6 Bottom right move
+ [B_WIN_MOVE_NAME_4] = {
.bg = 0,
.tilemapLeft = 11,
.tilemapTop = 57,
@@ -224,7 +224,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0330,
},
- {
+ [B_WIN_PP] = {
.bg = 0,
.tilemapLeft = 21,
.tilemapTop = 55,
@@ -233,7 +233,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0290,
},
- {
+ [B_WIN_DUMMY] = {
.bg = 0,
.tilemapLeft = 21,
.tilemapTop = 57,
@@ -242,7 +242,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0298,
},
- {
+ [B_WIN_PP_REMAINING] = {
.bg = 0,
.tilemapLeft = 25,
.tilemapTop = 55,
@@ -251,7 +251,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0298,
},
- {
+ [B_WIN_MOVE_TYPE] = {
.bg = 0,
.tilemapLeft = 21,
.tilemapTop = 57,
@@ -260,7 +260,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x02a0,
},
- {
+ [B_WIN_SWITCH_PROMPT] = {
.bg = 0,
.tilemapLeft = 21,
.tilemapTop = 55,
@@ -269,7 +269,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x02b0,
},
- {
+ [B_WIN_YESNO] = {
.bg = 0,
.tilemapLeft = 26,
.tilemapTop = 9,
@@ -278,7 +278,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0100,
},
- {
+ [B_WIN_LEVEL_UP_BOX] = {
.bg = 1,
.tilemapLeft = 19,
.tilemapTop = 8,
@@ -287,7 +287,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0100,
},
- {
+ [B_WIN_LEVEL_UP_BANNER] = {
.bg = 2,
.tilemapLeft = 18,
.tilemapTop = 0,
@@ -296,7 +296,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 6,
.baseBlock = 0x016e,
},
- {
+ [B_WIN_VS_PLAYER] = {
.bg = 1,
.tilemapLeft = 2,
.tilemapTop = 3,
@@ -305,7 +305,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0020,
},
- {
+ [B_WIN_VS_OPPONENT] = {
.bg = 2,
.tilemapLeft = 2,
.tilemapTop = 3,
@@ -314,7 +314,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0040,
},
- {
+ [B_WIN_VS_MULTI_PLAYER_1] = {
.bg = 1,
.tilemapLeft = 2,
.tilemapTop = 2,
@@ -323,7 +323,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0020,
},
- {
+ [B_WIN_VS_MULTI_PLAYER_2] = {
.bg = 2,
.tilemapLeft = 2,
.tilemapTop = 2,
@@ -332,7 +332,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0040,
},
- {
+ [B_WIN_VS_MULTI_PLAYER_3] = {
.bg = 1,
.tilemapLeft = 2,
.tilemapTop = 6,
@@ -341,7 +341,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0060,
},
- {
+ [B_WIN_VS_MULTI_PLAYER_4] = {
.bg = 2,
.tilemapLeft = 2,
.tilemapTop = 6,
@@ -350,7 +350,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0080,
},
- {
+ [B_WIN_VS_OUTCOME_DRAW] = {
.bg = 0,
.tilemapLeft = 12,
.tilemapTop = 2,
@@ -359,7 +359,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 0,
.baseBlock = 0x00a0,
},
- {
+ [B_WIN_VS_OUTCOME_LEFT] = {
.bg = 0,
.tilemapLeft = 4,
.tilemapTop = 2,
@@ -368,7 +368,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 0,
.baseBlock = 0x00a0,
},
- {
+ [B_WIN_VS_OUTCOME_RIGHT] = {
.bg = 0,
.tilemapLeft = 19,
.tilemapTop = 2,
@@ -382,7 +382,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
static const struct WindowTemplate gBattleArenaWindowTemplates[] =
{
- {
+ [B_WIN_MSG] = {
.bg = 0,
.tilemapLeft = 2,
.tilemapTop = 15,
@@ -391,7 +391,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 0,
.baseBlock = 0x0090,
},
- {
+ [B_WIN_ACTION_PROMPT] = {
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 35,
@@ -400,7 +400,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 0,
.baseBlock = 0x01c0,
},
- {
+ [B_WIN_ACTION_MENU] = {
.bg = 0,
.tilemapLeft = 17,
.tilemapTop = 35,
@@ -409,7 +409,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0190,
},
- {
+ [B_WIN_MOVE_NAME_1] = {
.bg = 0,
.tilemapLeft = 2,
.tilemapTop = 55,
@@ -418,7 +418,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0300,
},
- {
+ [B_WIN_MOVE_NAME_2] = {
.bg = 0,
.tilemapLeft = 11,
.tilemapTop = 55,
@@ -427,7 +427,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0310,
},
- {
+ [B_WIN_MOVE_NAME_3] = {
.bg = 0,
.tilemapLeft = 2,
.tilemapTop = 57,
@@ -436,7 +436,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0320,
},
- {
+ [B_WIN_MOVE_NAME_4] = {
.bg = 0,
.tilemapLeft = 11,
.tilemapTop = 57,
@@ -445,7 +445,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0330,
},
- {
+ [B_WIN_PP] = {
.bg = 0,
.tilemapLeft = 21,
.tilemapTop = 55,
@@ -454,7 +454,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0290,
},
- {
+ [B_WIN_DUMMY] = {
.bg = 0,
.tilemapLeft = 21,
.tilemapTop = 57,
@@ -463,7 +463,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0298,
},
- {
+ [B_WIN_PP_REMAINING] = {
.bg = 0,
.tilemapLeft = 25,
.tilemapTop = 55,
@@ -472,7 +472,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0298,
},
- {
+ [B_WIN_MOVE_TYPE] = {
.bg = 0,
.tilemapLeft = 21,
.tilemapTop = 57,
@@ -481,7 +481,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x02a0,
},
- {
+ [B_WIN_SWITCH_PROMPT] = {
.bg = 0,
.tilemapLeft = 21,
.tilemapTop = 55,
@@ -490,7 +490,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x02b0,
},
- {
+ [B_WIN_YESNO] = {
.bg = 0,
.tilemapLeft = 26,
.tilemapTop = 9,
@@ -499,7 +499,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0100,
},
- {
+ [B_WIN_LEVEL_UP_BOX] = {
.bg = 1,
.tilemapLeft = 19,
.tilemapTop = 8,
@@ -508,7 +508,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0100,
},
- {
+ [B_WIN_LEVEL_UP_BANNER] = {
.bg = 2,
.tilemapLeft = 18,
.tilemapTop = 0,
@@ -517,7 +517,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 6,
.baseBlock = 0x016e,
},
- {
+ [ARENA_WIN_PLAYER_NAME] = {
.bg = 0,
.tilemapLeft = 6,
.tilemapTop = 1,
@@ -526,7 +526,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0100,
},
- {
+ [ARENA_WIN_VS] = {
.bg = 0,
.tilemapLeft = 14,
.tilemapTop = 1,
@@ -535,7 +535,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0110,
},
- {
+ [ARENA_WIN_OPPONENT_NAME] = {
.bg = 0,
.tilemapLeft = 16,
.tilemapTop = 1,
@@ -544,7 +544,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0114,
},
- {
+ [ARENA_WIN_MIND] = {
.bg = 0,
.tilemapLeft = 12,
.tilemapTop = 4,
@@ -553,7 +553,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0124,
},
- {
+ [ARENA_WIN_SKILL] = {
.bg = 0,
.tilemapLeft = 12,
.tilemapTop = 6,
@@ -562,7 +562,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0130,
},
- {
+ [ARENA_WIN_BODY] = {
.bg = 0,
.tilemapLeft = 12,
.tilemapTop = 8,
@@ -571,7 +571,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x013c,
},
- {
+ [ARENA_WIN_JUDGEMENT_TITLE] = {
.bg = 0,
.tilemapLeft = 8,
.tilemapTop = 11,
@@ -580,7 +580,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5,
.baseBlock = 0x0148,
},
- {
+ [ARENA_WIN_JUDGEMENT_TEXT] = {
.bg = 0,
.tilemapLeft = 2,
.tilemapTop = 15,
@@ -594,8 +594,8 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
const struct WindowTemplate * const gBattleWindowTemplates[] =
{
- gStandardBattleWindowTemplates,
- gBattleArenaWindowTemplates,
+ [B_WIN_TYPE_NORMAL] = gStandardBattleWindowTemplates,
+ [B_WIN_TYPE_ARENA] = gBattleArenaWindowTemplates,
};
static const struct BattleBackground gBattleTerrainTable[] =
@@ -691,20 +691,19 @@ static const struct BattleBackground gBattleTerrainTable[] =
},
};
-static void sub_8035648(void);
+static void CB2_UnusedBattleInit(void);
-// Unused
-static void sub_8035608(void)
+static void UnusedBattleInit(void)
{
u8 spriteId;
ResetSpriteData();
- spriteId = CreateSprite(&gUnknown_0831AC88, 0, 0, 0);
+ spriteId = CreateSprite(&gUnusedBattleInitSprite, 0, 0, 0);
gSprites[spriteId].invisible = TRUE;
- SetMainCallback2(sub_8035648);
+ SetMainCallback2(CB2_UnusedBattleInit);
}
-static void sub_8035648(void)
+static void CB2_UnusedBattleInit(void)
{
AnimateSprites();
BuildOamBuffer();
@@ -717,13 +716,13 @@ void BattleInitBgsAndWindows(void)
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
{
- gBattleScripting.windowsType = 1;
- SetBgTilemapBuffer(1, gUnknown_02023060);
- SetBgTilemapBuffer(2, gUnknown_02023060);
+ gBattleScripting.windowsType = B_WIN_TYPE_ARENA;
+ SetBgTilemapBuffer(1, gBattleAnimBgTilemapBuffer);
+ SetBgTilemapBuffer(2, gBattleAnimBgTilemapBuffer);
}
else
{
- gBattleScripting.windowsType = 0;
+ gBattleScripting.windowsType = B_WIN_TYPE_NORMAL;
}
InitWindows(gBattleWindowTemplates[gBattleScripting.windowsType]);
@@ -936,7 +935,7 @@ static void DrawLinkBattleVsScreenOutcomeText(void)
{
if (gBattleOutcome == B_OUTCOME_DREW)
{
- BattlePutTextOnWindow(gText_Draw, 0x15);
+ BattlePutTextOnWindow(gText_Draw, B_WIN_VS_OUTCOME_DRAW);
}
else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
@@ -945,20 +944,20 @@ static void DrawLinkBattleVsScreenOutcomeText(void)
switch (gLinkPlayers[gBattleScripting.multiplayerId].id)
{
case 0:
- BattlePutTextOnWindow(gText_Win, 0x16);
- BattlePutTextOnWindow(gText_Loss, 0x17);
+ BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_LEFT);
+ BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_RIGHT);
break;
case 1:
- BattlePutTextOnWindow(gText_Win, 0x17);
- BattlePutTextOnWindow(gText_Loss, 0x16);
+ BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_RIGHT);
+ BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_LEFT);
break;
case 2:
- BattlePutTextOnWindow(gText_Win, 0x16);
- BattlePutTextOnWindow(gText_Loss, 0x17);
+ BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_LEFT);
+ BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_RIGHT);
break;
case 3:
- BattlePutTextOnWindow(gText_Win, 0x17);
- BattlePutTextOnWindow(gText_Loss, 0x16);
+ BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_RIGHT);
+ BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_LEFT);
break;
}
}
@@ -967,20 +966,20 @@ static void DrawLinkBattleVsScreenOutcomeText(void)
switch (gLinkPlayers[gBattleScripting.multiplayerId].id)
{
case 0:
- BattlePutTextOnWindow(gText_Win, 0x17);
- BattlePutTextOnWindow(gText_Loss, 0x16);
+ BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_RIGHT);
+ BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_LEFT);
break;
case 1:
- BattlePutTextOnWindow(gText_Win, 0x16);
- BattlePutTextOnWindow(gText_Loss, 0x17);
+ BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_LEFT);
+ BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_RIGHT);
break;
case 2:
- BattlePutTextOnWindow(gText_Win, 0x17);
- BattlePutTextOnWindow(gText_Loss, 0x16);
+ BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_RIGHT);
+ BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_LEFT);
break;
case 3:
- BattlePutTextOnWindow(gText_Win, 0x16);
- BattlePutTextOnWindow(gText_Loss, 0x17);
+ BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_LEFT);
+ BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_RIGHT);
break;
}
}
@@ -989,26 +988,26 @@ static void DrawLinkBattleVsScreenOutcomeText(void)
{
if (gLinkPlayers[gBattleScripting.multiplayerId].id != 0)
{
- BattlePutTextOnWindow(gText_Win, 0x17);
- BattlePutTextOnWindow(gText_Loss, 0x16);
+ BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_RIGHT);
+ BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_LEFT);
}
else
{
- BattlePutTextOnWindow(gText_Win, 0x16);
- BattlePutTextOnWindow(gText_Loss, 0x17);
+ BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_LEFT);
+ BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_RIGHT);
}
}
else
{
if (gLinkPlayers[gBattleScripting.multiplayerId].id != 0)
{
- BattlePutTextOnWindow(gText_Win, 0x16);
- BattlePutTextOnWindow(gText_Loss, 0x17);
+ BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_LEFT);
+ BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_RIGHT);
}
else
{
- BattlePutTextOnWindow(gText_Win, 0x17);
- BattlePutTextOnWindow(gText_Loss, 0x16);
+ BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_RIGHT);
+ BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_LEFT);
}
}
}
@@ -1032,19 +1031,19 @@ void InitLinkBattleVsScreen(u8 taskId)
switch (linkPlayer->id)
{
case 0:
- BattlePutTextOnWindow(name, 0x11);
+ BattlePutTextOnWindow(name, B_WIN_VS_MULTI_PLAYER_1);
DrawLinkBattleParticipantPokeballs(taskId, linkPlayer->id, 1, 2, 4);
break;
case 1:
- BattlePutTextOnWindow(name, 0x12);
+ BattlePutTextOnWindow(name, B_WIN_VS_MULTI_PLAYER_2);
DrawLinkBattleParticipantPokeballs(taskId, linkPlayer->id, 2, 2, 4);
break;
case 2:
- BattlePutTextOnWindow(name, 0x13);
+ BattlePutTextOnWindow(name, B_WIN_VS_MULTI_PLAYER_3);
DrawLinkBattleParticipantPokeballs(taskId, linkPlayer->id, 1, 2, 8);
break;
case 3:
- BattlePutTextOnWindow(name, 0x14);
+ BattlePutTextOnWindow(name, B_WIN_VS_MULTI_PLAYER_4);
DrawLinkBattleParticipantPokeballs(taskId, linkPlayer->id, 2, 2, 8);
break;
}
@@ -1060,10 +1059,10 @@ void InitLinkBattleVsScreen(u8 taskId)
opponentId = playerId, playerId = opponentId_copy;
name = gLinkPlayers[playerId].name;
- BattlePutTextOnWindow(name, 0xF);
+ BattlePutTextOnWindow(name, B_WIN_VS_PLAYER);
name = gLinkPlayers[opponentId].name;
- BattlePutTextOnWindow(name, 0x10);
+ BattlePutTextOnWindow(name, B_WIN_VS_OPPONENT);
DrawLinkBattleParticipantPokeballs(taskId, playerId, 1, 2, 7);
DrawLinkBattleParticipantPokeballs(taskId, opponentId, 2, 2, 7);
diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c
index 6369c0202..1660f6ec1 100644
--- a/src/battle_controller_link_opponent.c
+++ b/src/battle_controller_link_opponent.c
@@ -29,9 +29,6 @@
#include "constants/trainers.h"
#include "recorded_battle.h"
-extern struct MusicPlayerInfo gMPlayInfo_BGM;
-
-// this file's functions
static void LinkOpponentHandleGetMonData(void);
static void LinkOpponentHandleGetRawMonData(void);
static void LinkOpponentHandleSetMonData(void);
@@ -424,7 +421,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
static void CompleteOnInactiveTextPrinter(void)
{
- if (!IsTextPrinterActive(0))
+ if (!IsTextPrinterActive(B_WIN_MSG))
LinkOpponentBufferExecCompleted();
}
@@ -558,7 +555,7 @@ static void LinkOpponentHandleGetMonData(void)
monToCheck >>= 1;
}
}
- BtlController_EmitDataTransfer(1, size, monData);
+ BtlController_EmitDataTransfer(BUFFER_B, size, monData);
LinkOpponentBufferExecCompleted();
}
@@ -1471,7 +1468,7 @@ static void LinkOpponentHandlePrintString(void)
gBattle_BG0_Y = 0;
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId);
- BattlePutTextOnWindow(gDisplayedStringBattle, 0);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
BattleTv_SetDataBasedOnString(*stringId);
}
diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c
index 07101c682..a9240b0ac 100644
--- a/src/battle_controller_link_partner.c
+++ b/src/battle_controller_link_partner.c
@@ -29,7 +29,6 @@
#include "constants/trainers.h"
#include "recorded_battle.h"
-// this file's functions
static void LinkPartnerHandleGetMonData(void);
static void LinkPartnerHandleGetRawMonData(void);
static void LinkPartnerHandleSetMonData(void);
@@ -313,7 +312,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
static void CompleteOnInactiveTextPrinter(void)
{
- if (!IsTextPrinterActive(0))
+ if (!IsTextPrinterActive(B_WIN_MSG))
LinkPartnerBufferExecCompleted();
}
@@ -443,7 +442,7 @@ static void LinkPartnerHandleGetMonData(void)
monToCheck >>= 1;
}
}
- BtlController_EmitDataTransfer(1, size, monData);
+ BtlController_EmitDataTransfer(BUFFER_B, size, monData);
LinkPartnerBufferExecCompleted();
}
@@ -1301,7 +1300,7 @@ static void LinkPartnerHandlePrintString(void)
gBattle_BG0_Y = 0;
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId);
- BattlePutTextOnWindow(gDisplayedStringBattle, 0);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
BattleTv_SetDataBasedOnString(*stringId);
}
diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c
index 4da3b834a..ac330be76 100644
--- a/src/battle_controller_opponent.c
+++ b/src/battle_controller_opponent.c
@@ -34,9 +34,6 @@
#include "constants/trainers.h"
#include "trainer_hill.h"
-extern struct MusicPlayerInfo gMPlayInfo_BGM;
-
-// this file's functions
static void OpponentHandleGetMonData(void);
static void OpponentHandleGetRawMonData(void);
static void OpponentHandleSetMonData(void);
@@ -430,7 +427,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
static void CompleteOnInactiveTextPrinter(void)
{
- if (!IsTextPrinterActive(0))
+ if (!IsTextPrinterActive(B_WIN_MSG))
OpponentBufferExecCompleted();
}
@@ -558,7 +555,7 @@ static void OpponentHandleGetMonData(void)
monToCheck >>= 1;
}
}
- BtlController_EmitDataTransfer(1, size, monData);
+ BtlController_EmitDataTransfer(BUFFER_B, size, monData);
OpponentBufferExecCompleted();
}
@@ -878,7 +875,7 @@ static void OpponentHandleGetRawMonData(void)
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++)
dst[i] = src[i];
- BtlController_EmitDataTransfer(1, gBattleBufferA[gActiveBattler][2], dst);
+ BtlController_EmitDataTransfer(BUFFER_B, gBattleBufferA[gActiveBattler][2], dst);
OpponentBufferExecCompleted();
}
@@ -1524,7 +1521,7 @@ static void OpponentHandlePrintString(void)
gBattle_BG0_Y = 0;
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId);
- BattlePutTextOnWindow(gDisplayedStringBattle, 0);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
BattleArena_DeductMindPoints(gActiveBattler, *stringId);
}
@@ -1549,7 +1546,7 @@ static void OpponentHandleChooseMove(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- BtlController_EmitTwoReturnValues(1, 10, ChooseMoveAndTargetInBattlePalace());
+ BtlController_EmitTwoReturnValues(BUFFER_B, 10, ChooseMoveAndTargetInBattlePalace());
OpponentBufferExecCompleted();
}
else
@@ -1566,13 +1563,13 @@ static void OpponentHandleChooseMove(void)
switch (chosenMoveId)
{
case AI_CHOICE_WATCH:
- BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_WATCH_CAREFULLY, 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SAFARI_WATCH_CAREFULLY, 0);
break;
case AI_CHOICE_FLEE:
- BtlController_EmitTwoReturnValues(1, B_ACTION_RUN, 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_RUN, 0);
break;
case 6:
- BtlController_EmitTwoReturnValues(1, 15, gBattlerTarget);
+ BtlController_EmitTwoReturnValues(BUFFER_B, 15, gBattlerTarget);
break;
default:
if (gBattleMoves[moveInfo->moves[chosenMoveId]].target & (MOVE_TARGET_USER_OR_SELECTED | MOVE_TARGET_USER))
@@ -1583,7 +1580,7 @@ static void OpponentHandleChooseMove(void)
if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
}
- BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (gBattlerTarget << 8));
+ BtlController_EmitTwoReturnValues(BUFFER_B, 10, (chosenMoveId) | (gBattlerTarget << 8));
break;
}
OpponentBufferExecCompleted();
@@ -1598,11 +1595,11 @@ static void OpponentHandleChooseMove(void)
} while (move == MOVE_NONE);
if (gBattleMoves[move].target & (MOVE_TARGET_USER_OR_SELECTED | MOVE_TARGET_USER))
- BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (gActiveBattler << 8));
+ BtlController_EmitTwoReturnValues(BUFFER_B, 10, (chosenMoveId) | (gActiveBattler << 8));
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
- BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (GetBattlerAtPosition(Random() & 2) << 8));
+ BtlController_EmitTwoReturnValues(BUFFER_B, 10, (chosenMoveId) | (GetBattlerAtPosition(Random() & 2) << 8));
else
- BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) << 8));
+ BtlController_EmitTwoReturnValues(BUFFER_B, 10, (chosenMoveId) | (GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) << 8));
OpponentBufferExecCompleted();
}
@@ -1611,7 +1608,7 @@ static void OpponentHandleChooseMove(void)
static void OpponentHandleChooseItem(void)
{
- BtlController_EmitOneReturnValue(1, *(gBattleStruct->chosenItem + (gActiveBattler / 2) * 2));
+ BtlController_EmitOneReturnValue(BUFFER_B, *(gBattleStruct->chosenItem + (gActiveBattler / 2) * 2));
OpponentBufferExecCompleted();
}
@@ -1668,7 +1665,7 @@ static void OpponentHandleChoosePokemon(void)
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = chosenMonId;
- BtlController_EmitChosenMonReturnValue(1, chosenMonId, NULL);
+ BtlController_EmitChosenMonReturnValue(BUFFER_B, chosenMonId, NULL);
OpponentBufferExecCompleted();
}
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index 94e25fadc..ac8babb60 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -36,9 +36,6 @@
#include "constants/trainers.h"
#include "constants/rgb.h"
-extern struct MusicPlayerInfo gMPlayInfo_BGM;
-
-// this file's functions
static void PlayerHandleGetMonData(void);
static void PlayerHandleSetMonData(void);
static void PlayerHandleSetRawMonData(void);
@@ -251,17 +248,17 @@ static void HandleInputChooseAction(void)
switch (gActionSelectionCursor[gActiveBattler])
{
- case 0:
- BtlController_EmitTwoReturnValues(1, B_ACTION_USE_MOVE, 0);
+ case 0: // Top left
+ BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_USE_MOVE, 0);
break;
- case 1:
- BtlController_EmitTwoReturnValues(1, B_ACTION_USE_ITEM, 0);
+ case 1: // Top right
+ BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_USE_ITEM, 0);
break;
- case 2:
- BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
+ case 2: // Bottom left
+ BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0);
break;
- case 3:
- BtlController_EmitTwoReturnValues(1, B_ACTION_RUN, 0);
+ case 3: // Bottom right
+ BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_RUN, 0);
break;
}
PlayerBufferExecCompleted();
@@ -322,7 +319,7 @@ static void HandleInputChooseAction(void)
return;
}
PlaySE(SE_SELECT);
- BtlController_EmitTwoReturnValues(1, B_ACTION_CANCEL_PARTNER, 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_CANCEL_PARTNER, 0);
PlayerBufferExecCompleted();
}
}
@@ -368,7 +365,7 @@ static void HandleInputChooseTarget(void)
{
PlaySE(SE_SELECT);
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_HideAsMoveTarget;
- BtlController_EmitTwoReturnValues(1, 10, gMoveSelectionCursor[gActiveBattler] | (gMultiUsePlayerCursor << 8));
+ BtlController_EmitTwoReturnValues(BUFFER_B, 10, gMoveSelectionCursor[gActiveBattler] | (gMultiUsePlayerCursor << 8));
EndBounceEffect(gMultiUsePlayerCursor, BOUNCE_HEALTHBOX);
PlayerBufferExecCompleted();
}
@@ -526,7 +523,7 @@ static void HandleInputChooseMove(void)
if (!canSelectTarget)
{
- BtlController_EmitTwoReturnValues(1, 10, gMoveSelectionCursor[gActiveBattler] | (gMultiUsePlayerCursor << 8));
+ BtlController_EmitTwoReturnValues(BUFFER_B, 10, gMoveSelectionCursor[gActiveBattler] | (gMultiUsePlayerCursor << 8));
PlayerBufferExecCompleted();
}
else
@@ -546,7 +543,7 @@ static void HandleInputChooseMove(void)
else if (JOY_NEW(B_BUTTON) || gPlayerDpadHoldFrames > 59)
{
PlaySE(SE_SELECT);
- BtlController_EmitTwoReturnValues(1, 10, 0xFFFF);
+ BtlController_EmitTwoReturnValues(BUFFER_B, 10, 0xFFFF);
PlayerBufferExecCompleted();
}
else if (JOY_NEW(DPAD_LEFT))
@@ -611,7 +608,7 @@ static void HandleInputChooseMove(void)
gMultiUsePlayerCursor = gMoveSelectionCursor[gActiveBattler] + 1;
MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 27);
- BattlePutTextOnWindow(gText_BattleSwitchWhich, 0xB);
+ BattlePutTextOnWindow(gText_BattleSwitchWhich, B_WIN_SWITCH_PROMPT);
gBattlerControllerFuncs[gActiveBattler] = HandleMoveSwitching;
}
}
@@ -858,7 +855,7 @@ static void SetLinkBattleEndCallbacks(void)
if (gReceivedRemoteLinkPlayers == 0)
{
m4aSongNumStop(SE_LOW_HEALTH);
- gMain.inBattle = 0;
+ gMain.inBattle = FALSE;
gMain.callback1 = gPreBattleCallback1;
SetMainCallback2(CB2_InitEndLinkBattle);
if (gBattleOutcome == B_OUTCOME_WON)
@@ -871,7 +868,7 @@ static void SetLinkBattleEndCallbacks(void)
if (IsLinkTaskFinished())
{
m4aSongNumStop(SE_LOW_HEALTH);
- gMain.inBattle = 0;
+ gMain.inBattle = FALSE;
gMain.callback1 = gPreBattleCallback1;
SetMainCallback2(CB2_InitEndLinkBattle);
if (gBattleOutcome == B_OUTCOME_WON)
@@ -901,7 +898,7 @@ void SetBattleEndCallbacks(void)
else
{
m4aSongNumStop(SE_LOW_HEALTH);
- gMain.inBattle = 0;
+ gMain.inBattle = FALSE;
gMain.callback1 = gPreBattleCallback1;
SetMainCallback2(gMain.savedCallback);
}
@@ -1145,7 +1142,7 @@ static void CompleteOnHealthbarDone(void)
static void CompleteOnInactiveTextPrinter(void)
{
- if (!IsTextPrinterActive(0))
+ if (!IsTextPrinterActive(B_WIN_MSG))
PlayerBufferExecCompleted();
}
@@ -1177,7 +1174,7 @@ static void Task_GiveExpToMon(u8 taskId)
gainedExp -= nextLvlExp - currExp;
savedActiveBattler = gActiveBattler;
gActiveBattler = battlerId;
- BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp);
+ BtlController_EmitTwoReturnValues(BUFFER_B, RET_VALUE_LEVELED_UP, gainedExp);
gActiveBattler = savedActiveBattler;
if (IsDoubleBattle() == TRUE
@@ -1256,7 +1253,7 @@ static void Task_GiveExpWithExpBar(u8 taskId)
gainedExp -= expOnNextLvl - currExp;
savedActiveBattler = gActiveBattler;
gActiveBattler = battlerId;
- BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp);
+ BtlController_EmitTwoReturnValues(BUFFER_B, RET_VALUE_LEVELED_UP, gainedExp);
gActiveBattler = savedActiveBattler;
gTasks[taskId].func = Task_LaunchLvlUpAnim;
}
@@ -1341,7 +1338,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
static void CompleteOnInactiveTextPrinter2(void)
{
- if (!IsTextPrinterActive(0))
+ if (!IsTextPrinterActive(B_WIN_MSG))
PlayerBufferExecCompleted();
}
@@ -1364,9 +1361,9 @@ static void WaitForMonSelection(void)
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{
if (gPartyMenuUseExitCallback == TRUE)
- BtlController_EmitChosenMonReturnValue(1, gSelectedMonPartyId, gBattlePartyCurrentOrder);
+ BtlController_EmitChosenMonReturnValue(BUFFER_B, gSelectedMonPartyId, gBattlePartyCurrentOrder);
else
- BtlController_EmitChosenMonReturnValue(1, PARTY_SIZE, NULL);
+ BtlController_EmitChosenMonReturnValue(BUFFER_B, PARTY_SIZE, NULL);
if ((gBattleBufferA[gActiveBattler][1] & 0xF) == 1)
PrintLinkStandbyMsg();
@@ -1390,7 +1387,7 @@ static void CompleteWhenChoseItem(void)
{
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{
- BtlController_EmitOneReturnValue(1, gSpecialVar_ItemId);
+ BtlController_EmitOneReturnValue(BUFFER_B, gSpecialVar_ItemId);
PlayerBufferExecCompleted();
}
}
@@ -1442,9 +1439,9 @@ static void PlayerHandleYesNoInput(void)
PlaySE(SE_SELECT);
if (gMultiUsePlayerCursor != 0)
- BtlController_EmitTwoReturnValues(1, 0xE, 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, 0xE, 0);
else
- BtlController_EmitTwoReturnValues(1, 0xD, 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, 0xD, 0);
PlayerBufferExecCompleted();
}
@@ -1466,7 +1463,8 @@ static void MoveSelectionDisplayMoveNames(void)
{
MoveSelectionDestroyCursorAt(i);
StringCopy(gDisplayedStringBattle, gMoveNames[moveInfo->moves[i]]);
- BattlePutTextOnWindow(gDisplayedStringBattle, i + 3);
+ // Prints on windows B_WIN_MOVE_NAME_1, B_WIN_MOVE_NAME_2, B_WIN_MOVE_NAME_3, B_WIN_MOVE_NAME_4
+ BattlePutTextOnWindow(gDisplayedStringBattle, i + B_WIN_MOVE_NAME_1);
if (moveInfo->moves[i] != MOVE_NONE)
gNumberOfMovesToChoose++;
}
@@ -1475,7 +1473,7 @@ static void MoveSelectionDisplayMoveNames(void)
static void MoveSelectionDisplayPpString(void)
{
StringCopy(gDisplayedStringBattle, gText_MoveInterfacePP);
- BattlePutTextOnWindow(gDisplayedStringBattle, 7);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_PP);
}
static void MoveSelectionDisplayPpNumber(void)
@@ -1492,7 +1490,7 @@ static void MoveSelectionDisplayPpNumber(void)
*(txtPtr)++ = CHAR_SLASH;
ConvertIntToDecimalStringN(txtPtr, moveInfo->maxPp[gMoveSelectionCursor[gActiveBattler]], STR_CONV_MODE_RIGHT_ALIGN, 2);
- BattlePutTextOnWindow(gDisplayedStringBattle, 9);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_PP_REMAINING);
}
static void MoveSelectionDisplayMoveType(void)
@@ -1506,7 +1504,7 @@ static void MoveSelectionDisplayMoveType(void)
*(txtPtr)++ = 1;
StringCopy(txtPtr, gTypeNames[gBattleMoves[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].type]);
- BattlePutTextOnWindow(gDisplayedStringBattle, 10);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MOVE_TYPE);
}
static void MoveSelectionCreateCursorAt(u8 cursorPosition, u8 arg1)
@@ -1577,7 +1575,7 @@ static void PrintLinkStandbyMsg(void)
{
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- BattlePutTextOnWindow(gText_LinkStandby, 0);
+ BattlePutTextOnWindow(gText_LinkStandby, B_WIN_MSG);
}
}
@@ -1602,7 +1600,7 @@ static void PlayerHandleGetMonData(void)
monToCheck >>= 1;
}
}
- BtlController_EmitDataTransfer(1, size, monData);
+ BtlController_EmitDataTransfer(BUFFER_B, size, monData);
PlayerBufferExecCompleted();
}
@@ -1922,7 +1920,7 @@ void PlayerHandleGetRawMonData(void)
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++)
dst[i] = src[i];
- BtlController_EmitDataTransfer(1, gBattleBufferA[gActiveBattler][2], dst);
+ BtlController_EmitDataTransfer(BUFFER_B, gBattleBufferA[gActiveBattler][2], dst);
PlayerBufferExecCompleted();
}
@@ -2228,13 +2226,14 @@ static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit)
static void PlayerHandleReturnMonToBall(void)
{
- if (gBattleBufferA[gActiveBattler][1] == 0)
+ if (!gBattleBufferA[gActiveBattler][1])
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
gBattlerControllerFuncs[gActiveBattler] = DoSwitchOutAnimation;
}
else
{
+ // Skip animation, just remove battler
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
@@ -2549,7 +2548,7 @@ static void PlayerHandlePrintString(void)
gBattle_BG0_Y = 0;
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId);
- BattlePutTextOnWindow(gDisplayedStringBattle, 0);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter2;
BattleTv_SetDataBasedOnString(*stringId);
BattleArena_DeductMindPoints(gActiveBattler, *stringId);
@@ -2579,14 +2578,14 @@ static void PlayerHandleChooseAction(void)
gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3;
BattleTv_ClearExplosionFaintCause();
- BattlePutTextOnWindow(gText_BattleMenu, 2);
+ BattlePutTextOnWindow(gText_BattleMenu, B_WIN_ACTION_MENU);
for (i = 0; i < 4; i++)
ActionSelectionDestroyCursorAt(i);
ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillPkmnDo);
- BattlePutTextOnWindow(gDisplayedStringBattle, 1);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_ACTION_PROMPT);
}
static void PlayerHandleYesNoBox(void)
@@ -2594,7 +2593,7 @@ static void PlayerHandleYesNoBox(void)
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0);
- BattlePutTextOnWindow(gText_BattleYesNoChoice, 12);
+ BattlePutTextOnWindow(gText_BattleYesNoChoice, B_WIN_YESNO);
gMultiUsePlayerCursor = 1;
BattleCreateYesNoCursorAt(1);
gBattlerControllerFuncs[gActiveBattler] = PlayerHandleYesNoInput;
@@ -2622,7 +2621,7 @@ static void PlayerChooseMoveInBattlePalace(void)
if (--*(gBattleStruct->arenaMindPoints + gActiveBattler) == 0)
{
gBattlePalaceMoveSelectionRngValue = gRngValue;
- BtlController_EmitTwoReturnValues(1, 10, ChooseMoveAndTargetInBattlePalace());
+ BtlController_EmitTwoReturnValues(BUFFER_B, 10, ChooseMoveAndTargetInBattlePalace());
PlayerBufferExecCompleted();
}
}
@@ -2672,7 +2671,7 @@ static void PlayerHandleChoosePokemon(void)
if (gBattleTypeFlags & BATTLE_TYPE_ARENA && (gBattleBufferA[gActiveBattler][1] & 0xF) != PARTY_ACTION_CANT_SWITCH)
{
- BtlController_EmitChosenMonReturnValue(1, gBattlerPartyIndexes[gActiveBattler] + 1, gBattlePartyCurrentOrder);
+ BtlController_EmitChosenMonReturnValue(BUFFER_B, gBattlerPartyIndexes[gActiveBattler] + 1, gBattlePartyCurrentOrder);
PlayerBufferExecCompleted();
}
else
@@ -2829,25 +2828,25 @@ static void PlayerHandleCmd32(void)
static void PlayerHandleTwoReturnValues(void)
{
- BtlController_EmitTwoReturnValues(1, 0, 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, 0, 0);
PlayerBufferExecCompleted();
}
static void PlayerHandleChosenMonReturnValue(void)
{
- BtlController_EmitChosenMonReturnValue(1, 0, NULL);
+ BtlController_EmitChosenMonReturnValue(BUFFER_B, 0, NULL);
PlayerBufferExecCompleted();
}
static void PlayerHandleOneReturnValue(void)
{
- BtlController_EmitOneReturnValue(1, 0);
+ BtlController_EmitOneReturnValue(BUFFER_B, 0);
PlayerBufferExecCompleted();
}
static void PlayerHandleOneReturnValue_Duplicate(void)
{
- BtlController_EmitOneReturnValue_Duplicate(1, 0);
+ BtlController_EmitOneReturnValue_Duplicate(BUFFER_B, 0);
PlayerBufferExecCompleted();
}
@@ -3100,14 +3099,14 @@ static void PlayerHandleLinkStandbyMsg(void)
RecordedBattle_RecordAllBattlerData(&gBattleBufferA[gActiveBattler][2]);
switch (gBattleBufferA[gActiveBattler][1])
{
- case 0:
+ case LINK_STANDBY_MSG_STOP_BOUNCE:
PrintLinkStandbyMsg();
// fall through
- case 1:
+ case LINK_STANDBY_STOP_BOUNCE_ONLY:
EndBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX);
EndBounceEffect(gActiveBattler, BOUNCE_MON);
break;
- case 2:
+ case LINK_STANDBY_MSG_ONLY:
PrintLinkStandbyMsg();
break;
}
diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c
index d1d23099a..91fea6cde 100644
--- a/src/battle_controller_player_partner.c
+++ b/src/battle_controller_player_partner.c
@@ -27,7 +27,6 @@
#include "constants/songs.h"
#include "constants/trainers.h"
-// this file's functions
static void PlayerPartnerHandleGetMonData(void);
static void PlayerPartnerHandleGetRawMonData(void);
static void PlayerPartnerHandleSetMonData(void);
@@ -300,7 +299,7 @@ static void CompleteOnHealthbarDone(void)
static void CompleteOnInactiveTextPrinter(void)
{
- if (!IsTextPrinterActive(0))
+ if (!IsTextPrinterActive(B_WIN_MSG))
PlayerPartnerBufferExecCompleted();
}
@@ -333,7 +332,7 @@ static void Task_GiveExpToMon(u8 taskId)
gainedExp -= nextLvlExp - currExp;
savedActiveBank = gActiveBattler;
gActiveBattler = battlerId;
- BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp);
+ BtlController_EmitTwoReturnValues(BUFFER_B, RET_VALUE_LEVELED_UP, gainedExp);
gActiveBattler = savedActiveBank;
if (IsDoubleBattle() == TRUE
@@ -412,7 +411,7 @@ static void Task_GiveExpWithExpBar(u8 taskId)
gainedExp -= expOnNextLvl - currExp;
savedActiveBank = gActiveBattler;
gActiveBattler = battlerId;
- BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp);
+ BtlController_EmitTwoReturnValues(BUFFER_B, RET_VALUE_LEVELED_UP, gainedExp);
gActiveBattler = savedActiveBank;
gTasks[taskId].func = Task_LaunchLvlUpAnim;
}
@@ -497,7 +496,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
static void CompleteOnInactiveTextPrinter2(void)
{
- if (!IsTextPrinterActive(0))
+ if (!IsTextPrinterActive(B_WIN_MSG))
PlayerPartnerBufferExecCompleted();
}
@@ -627,7 +626,7 @@ static void PlayerPartnerHandleGetMonData(void)
monToCheck >>= 1;
}
}
- BtlController_EmitDataTransfer(1, size, monData);
+ BtlController_EmitDataTransfer(BUFFER_B, size, monData);
PlayerPartnerBufferExecCompleted();
}
@@ -1491,7 +1490,7 @@ static void PlayerPartnerHandlePrintString(void)
gBattle_BG0_Y = 0;
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId);
- BattlePutTextOnWindow(gDisplayedStringBattle, 0);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter2;
}
@@ -1528,7 +1527,7 @@ static void PlayerPartnerHandleChooseMove(void)
gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
}
- BtlController_EmitTwoReturnValues(1, 10, chosenMoveId | (gBattlerTarget << 8));
+ BtlController_EmitTwoReturnValues(BUFFER_B, 10, chosenMoveId | (gBattlerTarget << 8));
PlayerPartnerBufferExecCompleted();
}
@@ -1558,7 +1557,7 @@ static void PlayerPartnerHandleChoosePokemon(void)
}
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = chosenMonId;
- BtlController_EmitChosenMonReturnValue(1, chosenMonId, NULL);
+ BtlController_EmitChosenMonReturnValue(BUFFER_B, chosenMonId, NULL);
PlayerPartnerBufferExecCompleted();
}
diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c
index acf595918..c6e649508 100644
--- a/src/battle_controller_recorded_opponent.c
+++ b/src/battle_controller_recorded_opponent.c
@@ -29,9 +29,6 @@
#include "constants/songs.h"
#include "constants/trainers.h"
-extern struct MusicPlayerInfo gMPlayInfo_BGM;
-
-// this file's functions
static void RecordedOpponentHandleGetMonData(void);
static void RecordedOpponentHandleGetRawMonData(void);
static void RecordedOpponentHandleSetMonData(void);
@@ -408,7 +405,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
static void CompleteOnInactiveTextPrinter(void)
{
- if (!IsTextPrinterActive(0))
+ if (!IsTextPrinterActive(B_WIN_MSG))
RecordedOpponentBufferExecCompleted();
}
@@ -541,7 +538,7 @@ static void RecordedOpponentHandleGetMonData(void)
monToCheck >>= 1;
}
}
- BtlController_EmitDataTransfer(1, size, monData);
+ BtlController_EmitDataTransfer(BUFFER_B, size, monData);
RecordedOpponentBufferExecCompleted();
}
@@ -1398,7 +1395,7 @@ static void RecordedOpponentHandlePrintString(void)
gBattle_BG0_Y = 0;
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId);
- BattlePutTextOnWindow(gDisplayedStringBattle, 0);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
}
@@ -1409,7 +1406,7 @@ static void RecordedOpponentHandlePrintSelectionString(void)
static void RecordedOpponentHandleChooseAction(void)
{
- BtlController_EmitTwoReturnValues(1, RecordedBattle_GetBattlerAction(gActiveBattler), 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, RecordedBattle_GetBattlerAction(gActiveBattler), 0);
RecordedOpponentBufferExecCompleted();
}
@@ -1422,13 +1419,13 @@ static void RecordedOpponentHandleChooseMove(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- BtlController_EmitTwoReturnValues(1, 10, ChooseMoveAndTargetInBattlePalace());
+ BtlController_EmitTwoReturnValues(BUFFER_B, 10, ChooseMoveAndTargetInBattlePalace());
}
else
{
u8 moveId = RecordedBattle_GetBattlerAction(gActiveBattler);
u8 target = RecordedBattle_GetBattlerAction(gActiveBattler);
- BtlController_EmitTwoReturnValues(1, 10, moveId | (target << 8));
+ BtlController_EmitTwoReturnValues(BUFFER_B, 10, moveId | (target << 8));
}
RecordedOpponentBufferExecCompleted();
@@ -1442,7 +1439,7 @@ static void RecordedOpponentHandleChooseItem(void)
static void RecordedOpponentHandleChoosePokemon(void)
{
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = RecordedBattle_GetBattlerAction(gActiveBattler);
- BtlController_EmitChosenMonReturnValue(1, *(gBattleStruct->monToSwitchIntoId + gActiveBattler), NULL);
+ BtlController_EmitChosenMonReturnValue(BUFFER_B, *(gBattleStruct->monToSwitchIntoId + gActiveBattler), NULL);
RecordedOpponentBufferExecCompleted();
}
diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c
index ac2133592..93d059fe9 100644
--- a/src/battle_controller_recorded_player.c
+++ b/src/battle_controller_recorded_player.c
@@ -25,9 +25,6 @@
#include "constants/battle_anim.h"
#include "constants/songs.h"
-extern struct MusicPlayerInfo gMPlayInfo_BGM;
-
-// this file's functions
static void RecordedPlayerHandleGetMonData(void);
static void RecordedPlayerHandleGetRawMonData(void);
static void RecordedPlayerHandleSetMonData(void);
@@ -390,7 +387,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
static void CompleteOnInactiveTextPrinter(void)
{
- if (!IsTextPrinterActive(0))
+ if (!IsTextPrinterActive(B_WIN_MSG))
RecordedPlayerBufferExecCompleted();
}
@@ -520,7 +517,7 @@ static void RecordedPlayerHandleGetMonData(void)
monToCheck >>= 1;
}
}
- BtlController_EmitDataTransfer(1, size, monData);
+ BtlController_EmitDataTransfer(BUFFER_B, size, monData);
RecordedPlayerBufferExecCompleted();
}
@@ -1404,7 +1401,7 @@ static void RecordedPlayerHandlePrintString(void)
gBattle_BG0_Y = 0;
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId);
- BattlePutTextOnWindow(gDisplayedStringBattle, 0);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
}
@@ -1417,7 +1414,7 @@ static void ChooseActionInBattlePalace(void)
{
if (gBattleCommunication[4] >= gBattlersCount / 2)
{
- BtlController_EmitTwoReturnValues(1, RecordedBattle_GetBattlerAction(gActiveBattler), 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, RecordedBattle_GetBattlerAction(gActiveBattler), 0);
RecordedPlayerBufferExecCompleted();
}
}
@@ -1430,7 +1427,7 @@ static void RecordedPlayerHandleChooseAction(void)
}
else
{
- BtlController_EmitTwoReturnValues(1, RecordedBattle_GetBattlerAction(gActiveBattler), 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, RecordedBattle_GetBattlerAction(gActiveBattler), 0);
RecordedPlayerBufferExecCompleted();
}
}
@@ -1444,13 +1441,13 @@ static void RecordedPlayerHandleChooseMove(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- BtlController_EmitTwoReturnValues(1, 10, ChooseMoveAndTargetInBattlePalace());
+ BtlController_EmitTwoReturnValues(BUFFER_B, 10, ChooseMoveAndTargetInBattlePalace());
}
else
{
u8 moveId = RecordedBattle_GetBattlerAction(gActiveBattler);
u8 target = RecordedBattle_GetBattlerAction(gActiveBattler);
- BtlController_EmitTwoReturnValues(1, 10, moveId | (target << 8));
+ BtlController_EmitTwoReturnValues(BUFFER_B, 10, moveId | (target << 8));
}
RecordedPlayerBufferExecCompleted();
@@ -1464,7 +1461,7 @@ static void RecordedPlayerHandleChooseItem(void)
static void RecordedPlayerHandleChoosePokemon(void)
{
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = RecordedBattle_GetBattlerAction(gActiveBattler);
- BtlController_EmitChosenMonReturnValue(1, *(gBattleStruct->monToSwitchIntoId + gActiveBattler), NULL);
+ BtlController_EmitChosenMonReturnValue(BUFFER_B, *(gBattleStruct->monToSwitchIntoId + gActiveBattler), NULL);
RecordedPlayerBufferExecCompleted();
}
diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c
index a82538741..a26f31b92 100644
--- a/src/battle_controller_safari.c
+++ b/src/battle_controller_safari.c
@@ -24,7 +24,6 @@
#include "constants/songs.h"
#include "constants/rgb.h"
-// this file's functions
static void SafariHandleGetMonData(void);
static void SafariHandleGetRawMonData(void);
static void SafariHandleSetMonData(void);
@@ -177,16 +176,16 @@ static void HandleInputChooseAction(void)
switch (gActionSelectionCursor[gActiveBattler])
{
case 0:
- BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_BALL, 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SAFARI_BALL, 0);
break;
case 1:
- BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_POKEBLOCK, 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SAFARI_POKEBLOCK, 0);
break;
case 2:
- BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_GO_NEAR, 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SAFARI_GO_NEAR, 0);
break;
case 3:
- BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_RUN, 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SAFARI_RUN, 0);
break;
}
SafariBufferExecCompleted();
@@ -241,7 +240,7 @@ static void CompleteOnBattlerSpriteCallbackDummy(void)
static void CompleteOnInactiveTextPrinter(void)
{
- if (!IsTextPrinterActive(0))
+ if (!IsTextPrinterActive(B_WIN_MSG))
SafariBufferExecCompleted();
}
@@ -281,7 +280,7 @@ static void CompleteWhenChosePokeblock(void)
{
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{
- BtlController_EmitOneReturnValue(1, gSpecialVar_ItemId);
+ BtlController_EmitOneReturnValue(BUFFER_B, gSpecialVar_ItemId);
SafariBufferExecCompleted();
}
}
@@ -425,7 +424,7 @@ static void SafariHandlePrintString(void)
gBattle_BG0_Y = 0;
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId);
- BattlePutTextOnWindow(gDisplayedStringBattle, 0);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
}
@@ -452,14 +451,14 @@ static void SafariHandleChooseAction(void)
s32 i;
gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3;
- BattlePutTextOnWindow(gText_SafariZoneMenu, 2);
+ BattlePutTextOnWindow(gText_SafariZoneMenu, B_WIN_ACTION_MENU);
for (i = 0; i < 4; i++)
ActionSelectionDestroyCursorAt(i);
ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillPkmnDo2);
- BattlePutTextOnWindow(gDisplayedStringBattle, 1);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_ACTION_PROMPT);
}
static void SafariHandleYesNoBox(void)
diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c
index 048600d9a..d018fe1c0 100644
--- a/src/battle_controller_wally.c
+++ b/src/battle_controller_wally.c
@@ -196,7 +196,7 @@ static void WallyHandleActions(void)
if (--gBattleStruct->wallyWaitFrames == 0)
{
PlaySE(SE_SELECT);
- BtlController_EmitTwoReturnValues(1, B_ACTION_USE_MOVE, 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_USE_MOVE, 0);
WallyBufferExecCompleted();
gBattleStruct->wallyBattleState++;
gBattleStruct->wallyMovesState = 0;
@@ -207,7 +207,7 @@ static void WallyHandleActions(void)
if (--gBattleStruct->wallyWaitFrames == 0)
{
PlaySE(SE_SELECT);
- BtlController_EmitTwoReturnValues(1, B_ACTION_USE_MOVE, 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_USE_MOVE, 0);
WallyBufferExecCompleted();
gBattleStruct->wallyBattleState++;
gBattleStruct->wallyMovesState = 0;
@@ -217,7 +217,7 @@ static void WallyHandleActions(void)
case 3:
if (--gBattleStruct->wallyWaitFrames == 0)
{
- BtlController_EmitTwoReturnValues(1, B_ACTION_WALLY_THROW, 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_WALLY_THROW, 0);
WallyBufferExecCompleted();
gBattleStruct->wallyBattleState++;
gBattleStruct->wallyMovesState = 0;
@@ -238,7 +238,7 @@ static void WallyHandleActions(void)
if (--gBattleStruct->wallyWaitFrames == 0)
{
PlaySE(SE_SELECT);
- BtlController_EmitTwoReturnValues(1, B_ACTION_USE_ITEM, 0);
+ BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_USE_ITEM, 0);
WallyBufferExecCompleted();
}
break;
@@ -253,7 +253,7 @@ static void CompleteOnBattlerSpriteCallbackDummy(void)
static void CompleteOnInactiveTextPrinter(void)
{
- if (!IsTextPrinterActive(0))
+ if (!IsTextPrinterActive(B_WIN_MSG))
WallyBufferExecCompleted();
}
@@ -278,7 +278,7 @@ static void CompleteOnChosenItem(void)
{
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{
- BtlController_EmitOneReturnValue(1, gSpecialVar_ItemId);
+ BtlController_EmitOneReturnValue(BUFFER_B, gSpecialVar_ItemId);
WallyBufferExecCompleted();
}
}
@@ -444,7 +444,7 @@ static void WallyHandleGetMonData(void)
monToCheck >>= 1;
}
}
- BtlController_EmitDataTransfer(1, size, monData);
+ BtlController_EmitDataTransfer(BUFFER_B, size, monData);
WallyBufferExecCompleted();
}
@@ -1178,7 +1178,7 @@ static void WallyHandlePrintString(void)
gBattle_BG0_Y = 0;
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId);
- BattlePutTextOnWindow(gDisplayedStringBattle, 0);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
}
@@ -1205,14 +1205,14 @@ static void WallyHandleChooseAction(void)
s32 i;
gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3;
- BattlePutTextOnWindow(gText_BattleMenu, 2);
+ BattlePutTextOnWindow(gText_BattleMenu, B_WIN_ACTION_MENU);
for (i = 0; i < 4; i++)
ActionSelectionDestroyCursorAt(i);
ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillWallyDo);
- BattlePutTextOnWindow(gDisplayedStringBattle, 1);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_ACTION_PROMPT);
}
static void WallyHandleYesNoBox(void)
@@ -1241,7 +1241,7 @@ static void WallyHandleChooseMove(void)
if (--gBattleStruct->wallyMoveFrames == 0)
{
PlaySE(SE_SELECT);
- BtlController_EmitTwoReturnValues(1, 10, 0x100);
+ BtlController_EmitTwoReturnValues(BUFFER_B, 10, 0x100);
WallyBufferExecCompleted();
}
break;
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
index 0a8ecac02..7d2717e2c 100644
--- a/src/battle_controllers.c
+++ b/src/battle_controllers.c
@@ -660,14 +660,14 @@ static void PrepareBufferDataTransfer(u8 bufferId, u8 *data, u16 size)
{
switch (bufferId)
{
- case 0:
+ case BUFFER_A:
for (i = 0; i < size; i++)
{
gBattleBufferA[gActiveBattler][i] = *data;
data++;
}
break;
- case 1:
+ case BUFFER_B:
for (i = 0; i < size; i++)
{
gBattleBufferB[gActiveBattler][i] = *data;
@@ -737,7 +737,7 @@ void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data)
static void Task_HandleSendLinkBuffersData(u8 taskId)
{
- u16 var;
+ u16 numPlayers;
u16 blockSize;
switch (gTasks[taskId].data[11])
@@ -759,11 +759,11 @@ static void Task_HandleSendLinkBuffersData(u8 taskId)
else
{
if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
- var = 2;
+ numPlayers = 2;
else
- var = (gBattleTypeFlags & BATTLE_TYPE_MULTI) ? 4 : 2;
+ numPlayers = (gBattleTypeFlags & BATTLE_TYPE_MULTI) ? 4 : 2;
- if (GetLinkPlayerCount_2() >= var)
+ if (GetLinkPlayerCount_2() >= numPlayers)
{
if (IsLinkMaster())
{
@@ -964,10 +964,10 @@ void BtlController_EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubs
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void BtlController_EmitReturnMonToBall(u8 bufferId, u8 arg1)
+void BtlController_EmitReturnMonToBall(u8 bufferId, bool8 skipAnim)
{
sBattleBuffersTransferData[0] = CONTROLLER_RETURNMONTOBALL;
- sBattleBuffersTransferData[1] = arg1;
+ sBattleBuffersTransferData[1] = skipAnim;
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
}
@@ -1134,12 +1134,13 @@ void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringID)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct BattleMsgData) + 4);
}
-void BtlController_EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2)
+// itemId only relevant for B_ACTION_USE_ITEM
+void BtlController_EmitChooseAction(u8 bufferId, u8 action, u16 itemId)
{
sBattleBuffersTransferData[0] = CONTROLLER_CHOOSEACTION;
- sBattleBuffersTransferData[1] = arg1;
- sBattleBuffersTransferData[2] = arg2;
- sBattleBuffersTransferData[3] = (arg2 & 0xFF00) >> 8;
+ sBattleBuffersTransferData[1] = action;
+ sBattleBuffersTransferData[2] = itemId;
+ sBattleBuffersTransferData[3] = (itemId & 0xFF00) >> 8;
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
@@ -1177,7 +1178,7 @@ void BtlController_EmitChooseItem(u8 bufferId, u8 *arg1)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 slotId, u8 abilityId, u8 *arg4)
+void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 slotId, u8 abilityId, u8 *data)
{
s32 i;
@@ -1186,7 +1187,7 @@ void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 slotId, u8 abili
sBattleBuffersTransferData[2] = slotId;
sBattleBuffersTransferData[3] = abilityId;
for (i = 0; i < 3; i++)
- sBattleBuffersTransferData[4 + i] = arg4[i];
+ sBattleBuffersTransferData[4 + i] = data[i];
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 8); // Only 7 bytes were written.
}
@@ -1280,15 +1281,19 @@ void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 7);
}
-void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter)
+// Unused
+void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *data)
{
s32 i;
sBattleBuffersTransferData[0] = CONTROLLER_PLAYBGM;
sBattleBuffersTransferData[1] = songId;
sBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8;
- for (i = 0; i < songId; i++) // ????
- sBattleBuffersTransferData[3 + i] = *(u8*)(unusedDumbDataParameter++);
+
+ // Nonsense loop using songId as a size
+ // Would go out of bounds for any song id after SE_RG_BAG_POCKET (253)
+ for (i = 0; i < songId; i++)
+ sBattleBuffersTransferData[3 + i] = *(u8*)(data++);
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, songId + 3);
}
@@ -1442,8 +1447,8 @@ void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* h
s32 i;
sBattleBuffersTransferData[0] = CONTROLLER_DRAWPARTYSTATUSSUMMARY;
- sBattleBuffersTransferData[1] = flags & 0x7F;
- sBattleBuffersTransferData[2] = (flags & 0x80) >> 7; // If true, skip delay after drawing. True during intro
+ sBattleBuffersTransferData[1] = flags & ~PARTY_SUMM_SKIP_DRAW_DELAY; // If true, skip player side
+ sBattleBuffersTransferData[2] = (flags & PARTY_SUMM_SKIP_DRAW_DELAY) >> 7; // If true, skip delay after drawing. True during intro
sBattleBuffersTransferData[3] = CONTROLLER_DRAWPARTYSTATUSSUMMARY;
for (i = 0; i < (s32)(sizeof(struct HpAndStatus) * PARTY_SIZE); i++)
sBattleBuffersTransferData[4 + i] = *(i + (u8*)(hpAndStatus));
@@ -1486,11 +1491,12 @@ void BtlController_EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void BtlController_EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 record)
+// mode is a LINK_STANDBY_* constant
+void BtlController_EmitLinkStandbyMsg(u8 bufferId, u8 mode, bool32 record)
{
bool8 record_ = record;
sBattleBuffersTransferData[0] = CONTROLLER_LINKSTANDBYMSG;
- sBattleBuffersTransferData[1] = arg1;
+ sBattleBuffersTransferData[1] = mode;
if (record_)
sBattleBuffersTransferData[3] = sBattleBuffersTransferData[2] = RecordedBattle_BufferNewBattlerData(&sBattleBuffersTransferData[4]);
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index da15c07a0..c01c76b7c 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -26,10 +26,6 @@
#include "constants/rgb.h"
#include "constants/battle_palace.h"
-extern struct MusicPlayerInfo gMPlayInfo_SE1;
-extern struct MusicPlayerInfo gMPlayInfo_SE2;
-extern struct MusicPlayerInfo gMPlayInfo_BGM;
-
extern const u8 gBattlePalaceNatureToMoveTarget[];
extern const u8 * const gBattleAnims_General[];
extern const u8 * const gBattleAnims_Special[];
@@ -115,7 +111,7 @@ u16 ChooseMoveAndTargetInBattlePalace(void)
s32 i, var1, var2;
s32 chosenMoveId = -1;
struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBattler][4]);
- u8 unusableMovesBits = CheckMoveLimitations(gActiveBattler, 0, 0xFF);
+ u8 unusableMovesBits = CheckMoveLimitations(gActiveBattler, 0, MOVE_LIMITATIONS_ALL);
s32 percent = Random() % 100;
// Heavy variable re-use here makes this hard to read without defines
@@ -438,9 +434,10 @@ bool8 TryHandleLaunchBattleTableAnimation(u8 activeBattler, u8 atkBattler, u8 de
{
u8 taskId;
- if (tableId == B_ANIM_CASTFORM_CHANGE && (argument & 0x80))
+ if (tableId == B_ANIM_CASTFORM_CHANGE && (argument & CASTFORM_SUBSTITUTE))
{
- gBattleMonForms[activeBattler] = (argument & ~(0x80));
+ // If Castform is behind substitute, set the new form but skip the animation
+ gBattleMonForms[activeBattler] = (argument & ~CASTFORM_SUBSTITUTE);
return TRUE;
}
if (gBattleSpritesDataPtr->battlerData[activeBattler].behindSubstitute
@@ -593,7 +590,7 @@ void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId)
if (species == SPECIES_CASTFORM)
{
paletteOffset = 0x100 + battlerId * 16;
- LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]);
+ LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[CASTFORM_NORMAL]);
LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20);
}
@@ -656,7 +653,7 @@ void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId)
if (species == SPECIES_CASTFORM)
{
paletteOffset = 0x100 + battlerId * 16;
- LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]);
+ LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[CASTFORM_NORMAL]);
LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20);
}
@@ -895,7 +892,7 @@ void CopyBattleSpriteInvisibility(u8 battlerId)
gBattleSpritesDataPtr->battlerData[battlerId].invisible = gSprites[gBattlerSpriteIds[battlerId]].invisible;
}
-void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform)
+void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 castform)
{
u16 paletteOffset;
u32 personalityValue;
@@ -903,7 +900,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
u8 position;
const u32 *lzPaletteData;
- if (notTransform)
+ if (castform)
{
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerAtk]], gBattleSpritesDataPtr->animationData->animArg);
paletteOffset = 0x100 + battlerAtk * 16;
@@ -976,8 +973,8 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
if (targetSpecies == SPECIES_CASTFORM)
{
gSprites[gBattlerSpriteIds[battlerAtk]].anims = gMonFrontAnimsPtrTable[targetSpecies];
- LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]);
- LoadPalette(gBattleStruct->castformPalette[0] + gBattleMonForms[battlerDef] * 16, paletteOffset, 32);
+ LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[CASTFORM_NORMAL]);
+ LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerDef]], paletteOffset, 32);
}
BlendPalette(paletteOffset, 16, 6, RGB_WHITE);
@@ -1251,11 +1248,11 @@ void AllocateMonSpritesGfx(void)
gMonSpritesGfxPtr = NULL;
gMonSpritesGfxPtr = AllocZeroed(sizeof(*gMonSpritesGfxPtr));
- gMonSpritesGfxPtr->firstDecompressed = AllocZeroed(0x8000);
+ gMonSpritesGfxPtr->firstDecompressed = AllocZeroed(MON_PIC_SIZE * 4 * MAX_BATTLERS_COUNT);
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
- gMonSpritesGfxPtr->sprites.ptr[i] = gMonSpritesGfxPtr->firstDecompressed + (i * 0x2000);
+ gMonSpritesGfxPtr->sprites.ptr[i] = gMonSpritesGfxPtr->firstDecompressed + (i * MON_PIC_SIZE * 4);
*(gMonSpritesGfxPtr->templates + i) = gBattlerSpriteTemplates[i];
for (j = 0; j < 4; j++)
diff --git a/src/battle_intro.c b/src/battle_intro.c
index 0ea65dab1..42fe65974 100644
--- a/src/battle_intro.c
+++ b/src/battle_intro.c
@@ -584,36 +584,35 @@ static void BattleIntroSlidePartner(u8 taskId)
}
}
-void sub_8118FBC(int bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *arg5, u16 *arg6, u16 tilesOffset)
+void DrawBattlerOnBg(int bgId, u8 x, u8 y, u8 battlerPosition, u8 paletteId, u8 *tiles, u16 *tilemap, u16 tilesOffset)
{
int i, j;
u8 battler = GetBattlerAtPosition(battlerPosition);
int offset = tilesOffset;
- CpuCopy16(gMonSpritesGfxPtr->sprites.ptr[battlerPosition] + BG_SCREEN_SIZE * gBattleMonForms[battler], arg5, BG_SCREEN_SIZE);
- LoadBgTiles(bgId, arg5, 0x1000, tilesOffset);
- for (i = arg2; i < arg2 + 8; i++)
+ CpuCopy16(gMonSpritesGfxPtr->sprites.ptr[battlerPosition] + BG_SCREEN_SIZE * gBattleMonForms[battler], tiles, BG_SCREEN_SIZE);
+ LoadBgTiles(bgId, tiles, 0x1000, tilesOffset);
+ for (i = y; i < y + 8; i++)
{
- for (j = arg1; j < arg1 + 8; j++)
+ for (j = x; j < x + 8; j++)
{
- arg6[i * 32 + j] = offset | (arg4 << 12);
+ tilemap[i * 32 + j] = offset | (paletteId << 12);
offset++;
}
}
-
- LoadBgTilemap(bgId, arg6, BG_SCREEN_SIZE, 0);
+ LoadBgTilemap(bgId, tilemap, BG_SCREEN_SIZE, 0);
}
-void unref_sub_8119094(u8 arg0, u8 arg1, u8 battlerPosition, u8 arg3, u8 arg4, u16 arg5, u8 arg6, u8 arg7)
+static void DrawBattlerOnBgDMA(u8 x, u8 y, u8 battlerPosition, u8 arg3, u8 paletteId, u16 arg5, u8 arg6, u8 arg7)
{
int i, j, offset;
DmaCopy16(3, gMonSpritesGfxPtr->sprites.ptr[battlerPosition] + BG_SCREEN_SIZE * arg3, (void *)BG_SCREEN_ADDR(0) + arg5, BG_SCREEN_SIZE);
offset = (arg5 >> 5) - (arg7 << 9);
- for (i = arg1; i < arg1 + 8; i++)
+ for (i = y; i < y + 8; i++)
{
- for (j = arg0; j < arg0 + 8; j++)
+ for (j = x; j < x + 8; j++)
{
- *((u16 *)(BG_VRAM) + (i * 32) + (j + (arg6 << 10))) = offset | (arg4 << 12);
+ *((u16 *)(BG_VRAM) + (i * 32) + (j + (arg6 << 10))) = offset | (paletteId << 12);
offset++;
}
}
diff --git a/src/battle_main.c b/src/battle_main.c
index 970473407..ec093ecc7 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -61,13 +61,9 @@
#include "constants/trainers.h"
#include "cable_club.h"
-extern struct MusicPlayerInfo gMPlayInfo_SE1;
-extern struct MusicPlayerInfo gMPlayInfo_SE2;
-
extern const struct BgTemplate gBattleBgTemplates[];
extern const struct WindowTemplate *const gBattleWindowTemplates[];
-// this file's functions
static void CB2_InitBattleInternal(void);
static void CB2_PreInitMultiBattle(void);
static void CB2_PreInitIngamePlayerPartnerBattle(void);
@@ -77,19 +73,18 @@ static void CB2_HandleStartBattle(void);
static void TryCorrectShedinjaLanguage(struct Pokemon *mon);
static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 firstTrainer);
static void BattleMainCB1(void);
-static void sub_8038538(struct Sprite *sprite);
static void CB2_EndLinkBattle(void);
static void EndLinkBattleInSteps(void);
-static void sub_80392A8(void);
-static void sub_803937C(void);
-static void sub_803939C(void);
+static void CB2_InitAskRecordBattle(void);
+static void CB2_AskRecordBattle(void);
+static void AskRecordBattle(void);
static void SpriteCb_MoveWildMonToRight(struct Sprite *sprite);
static void SpriteCb_WildMonShowHealthbox(struct Sprite *sprite);
static void SpriteCb_WildMonAnimate(struct Sprite *sprite);
-static void sub_80398D0(struct Sprite *sprite);
+static void SpriteCB_Flicker(struct Sprite *sprite);
static void SpriteCB_AnimFaintOpponent(struct Sprite *sprite);
static void SpriteCb_BlinkVisible(struct Sprite *sprite);
-static void SpriteCallbackDummy_3(struct Sprite *sprite);
+static void SpriteCB_Idle(struct Sprite *sprite);
static void SpriteCB_BattleSpriteSlideLeft(struct Sprite *sprite);
static void TurnValuesCleanUp(bool8 var0);
static void SpriteCB_BounceEffect(struct Sprite *sprite);
@@ -110,7 +105,7 @@ static void TryDoEventsBeforeFirstTurn(void);
static void HandleTurnActionSelectionState(void);
static void RunTurnActionsFunctions(void);
static void SetActionsAndBattlersTurnOrder(void);
-static void sub_803CDF8(void);
+static void UpdateBattlerPartyOrdersOnSwitch(void);
static bool8 AllAtActionConfirmed(void);
static void CheckFocusPunch_ClearVarsBeforeTurnStarts(void);
static void FreeResetData_ReturnToOvOrDoEvolutions(void);
@@ -123,8 +118,9 @@ static void HandleEndTurn_BattleLost(void);
static void HandleEndTurn_RanFromBattle(void);
static void HandleEndTurn_MonFled(void);
static void HandleEndTurn_FinishBattle(void);
+static void SpriteCB_UnusedBattleInit(struct Sprite* sprite);
+static void SpriteCB_UnusedBattleInit_Main(struct Sprite *sprite);
-// EWRAM vars
EWRAM_DATA u16 gBattle_BG0_X = 0;
EWRAM_DATA u16 gBattle_BG0_Y = 0;
EWRAM_DATA u16 gBattle_BG1_X = 0;
@@ -141,14 +137,19 @@ EWRAM_DATA u8 gDisplayedStringBattle[300] = {0};
EWRAM_DATA u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT] = {0};
EWRAM_DATA u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT] = {0};
EWRAM_DATA u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT] = {0};
-EWRAM_DATA static u32 sUnusedUnknownArray[25] = {0};
+// The below array is never intentionally used. However, Juan's
+// defeat text (SootopolisCity_Gym_1F_Text_JuanDefeat) is too long
+// for gDisplayedStringBattle and overflows into this array. If it
+// is removed (and none of the buffers above are increased in size)
+// it will instead overflow into useful data.
+EWRAM_DATA static u32 sFlickerArray[25] = {0};
EWRAM_DATA u32 gBattleTypeFlags = 0;
EWRAM_DATA u8 gBattleTerrain = 0;
EWRAM_DATA u32 gUnusedFirstBattleVar1 = 0; // Never read
-EWRAM_DATA struct UnknownPokemonStruct4 gMultiPartnerParty[MULTI_PARTY_SIZE] = {0};
-EWRAM_DATA static struct UnknownPokemonStruct4* sMultiPartnerPartyBuffer = NULL;
-EWRAM_DATA u8 *gUnknown_0202305C = NULL;
-EWRAM_DATA u8 *gUnknown_02023060 = NULL;
+EWRAM_DATA struct MultiPartnerMenuPokemon gMultiPartnerParty[MULTI_PARTY_SIZE] = {0};
+EWRAM_DATA static struct MultiPartnerMenuPokemon* sMultiPartnerPartyBuffer = NULL;
+EWRAM_DATA u8 *gBattleAnimBgTileBuffer = NULL;
+EWRAM_DATA u8 *gBattleAnimBgTilemapBuffer = NULL;
EWRAM_DATA u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200] = {0};
EWRAM_DATA u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200] = {0};
EWRAM_DATA u8 gActiveBattler = 0;
@@ -236,7 +237,6 @@ EWRAM_DATA u16 gBattleMovePower = 0;
EWRAM_DATA u16 gMoveToLearn = 0;
EWRAM_DATA u8 gBattleMonForms[MAX_BATTLERS_COUNT] = {0};
-// IWRAM common vars
void (*gPreBattleCallback1)(void);
void (*gBattleMainFunc)(void);
struct BattleResults gBattleResults;
@@ -247,7 +247,6 @@ u8 gMultiUsePlayerCursor;
u8 gNumberOfMovesToChoose;
u8 gBattleControllerData[MAX_BATTLERS_COUNT]; // Used by the battle controllers to store misc sprite/task IDs for each battler
-// rom const data
static const struct ScanlineEffectParams sIntroScanlineParams16Bit =
{
(void *)REG_ADDR_BG3HOFS, SCANLINE_EFFECT_DMACNT_16BIT, 1
@@ -259,7 +258,7 @@ static const struct ScanlineEffectParams sIntroScanlineParams32Bit =
(void *)REG_ADDR_BG3HOFS, SCANLINE_EFFECT_DMACNT_32BIT, 1
};
-const struct SpriteTemplate gUnknown_0831AC88 =
+const struct SpriteTemplate gUnusedBattleInitSprite =
{
.tileTag = 0,
.paletteTag = 0,
@@ -267,7 +266,7 @@ const struct SpriteTemplate gUnknown_0831AC88 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_8038528,
+ .callback = SpriteCB_UnusedBattleInit,
};
static const u8 sText_ShedinjaJpnName[] = _("ヌケニン"); // Nukenin
@@ -512,53 +511,53 @@ const struct TrainerMoney gTrainerMoneyTable[] =
{TRAINER_CLASS_HIKER, 10},
{TRAINER_CLASS_YOUNG_COUPLE, 8},
{TRAINER_CLASS_WINSTRATE, 10},
- {0xFF, 5},
+ {0xFF, 5}, // Any trainer class not listed above uses this
};
#include "data/text/abilities.h"
static void (* const sTurnActionsFuncsTable[])(void) =
{
- [B_ACTION_USE_MOVE] = HandleAction_UseMove,
- [B_ACTION_USE_ITEM] = HandleAction_UseItem,
- [B_ACTION_SWITCH] = HandleAction_Switch,
- [B_ACTION_RUN] = HandleAction_Run,
+ [B_ACTION_USE_MOVE] = HandleAction_UseMove,
+ [B_ACTION_USE_ITEM] = HandleAction_UseItem,
+ [B_ACTION_SWITCH] = HandleAction_Switch,
+ [B_ACTION_RUN] = HandleAction_Run,
[B_ACTION_SAFARI_WATCH_CAREFULLY] = HandleAction_WatchesCarefully,
- [B_ACTION_SAFARI_BALL] = HandleAction_SafariZoneBallThrow,
- [B_ACTION_SAFARI_POKEBLOCK] = HandleAction_ThrowPokeblock,
- [B_ACTION_SAFARI_GO_NEAR] = HandleAction_GoNear,
- [B_ACTION_SAFARI_RUN] = HandleAction_SafariZoneRun,
- [B_ACTION_WALLY_THROW] = HandleAction_WallyBallThrow,
- [B_ACTION_EXEC_SCRIPT] = HandleAction_RunBattleScript,
- [B_ACTION_TRY_FINISH] = HandleAction_TryFinish,
- [B_ACTION_FINISHED] = HandleAction_ActionFinished,
- [B_ACTION_NOTHING_FAINTED] = HandleAction_NothingIsFainted,
+ [B_ACTION_SAFARI_BALL] = HandleAction_SafariZoneBallThrow,
+ [B_ACTION_SAFARI_POKEBLOCK] = HandleAction_ThrowPokeblock,
+ [B_ACTION_SAFARI_GO_NEAR] = HandleAction_GoNear,
+ [B_ACTION_SAFARI_RUN] = HandleAction_SafariZoneRun,
+ [B_ACTION_WALLY_THROW] = HandleAction_WallyBallThrow,
+ [B_ACTION_EXEC_SCRIPT] = HandleAction_RunBattleScript,
+ [B_ACTION_TRY_FINISH] = HandleAction_TryFinish,
+ [B_ACTION_FINISHED] = HandleAction_ActionFinished,
+ [B_ACTION_NOTHING_FAINTED] = HandleAction_NothingIsFainted,
};
static void (* const sEndTurnFuncsTable[])(void) =
{
- [0] = HandleEndTurn_ContinueBattle, //B_OUTCOME_NONE?
- [B_OUTCOME_WON] = HandleEndTurn_BattleWon,
- [B_OUTCOME_LOST] = HandleEndTurn_BattleLost,
- [B_OUTCOME_DREW] = HandleEndTurn_BattleLost,
- [B_OUTCOME_RAN] = HandleEndTurn_RanFromBattle,
+ [0] = HandleEndTurn_ContinueBattle,
+ [B_OUTCOME_WON] = HandleEndTurn_BattleWon,
+ [B_OUTCOME_LOST] = HandleEndTurn_BattleLost,
+ [B_OUTCOME_DREW] = HandleEndTurn_BattleLost,
+ [B_OUTCOME_RAN] = HandleEndTurn_RanFromBattle,
[B_OUTCOME_PLAYER_TELEPORTED] = HandleEndTurn_FinishBattle,
- [B_OUTCOME_MON_FLED] = HandleEndTurn_MonFled,
- [B_OUTCOME_CAUGHT] = HandleEndTurn_FinishBattle,
- [B_OUTCOME_NO_SAFARI_BALLS] = HandleEndTurn_FinishBattle,
- [B_OUTCOME_FORFEITED] = HandleEndTurn_FinishBattle,
- [B_OUTCOME_MON_TELEPORTED] = HandleEndTurn_FinishBattle,
+ [B_OUTCOME_MON_FLED] = HandleEndTurn_MonFled,
+ [B_OUTCOME_CAUGHT] = HandleEndTurn_FinishBattle,
+ [B_OUTCOME_NO_SAFARI_BALLS] = HandleEndTurn_FinishBattle,
+ [B_OUTCOME_FORFEITED] = HandleEndTurn_FinishBattle,
+ [B_OUTCOME_MON_TELEPORTED] = HandleEndTurn_FinishBattle,
};
-const u8 gStatusConditionString_PoisonJpn[8] = _("どく$$$$$");
-const u8 gStatusConditionString_SleepJpn[8] = _("ねむり$$$$");
-const u8 gStatusConditionString_ParalysisJpn[8] = _("まひ$$$$$");
-const u8 gStatusConditionString_BurnJpn[8] = _("やけど$$$$");
-const u8 gStatusConditionString_IceJpn[8] = _("こおり$$$$");
-const u8 gStatusConditionString_ConfusionJpn[8] = _("こんらん$$$");
-const u8 gStatusConditionString_LoveJpn[8] = _("メロメロ$$$");
+const u8 gStatusConditionString_PoisonJpn[] = _("どく$$$$$");
+const u8 gStatusConditionString_SleepJpn[] = _("ねむり$$$$");
+const u8 gStatusConditionString_ParalysisJpn[] = _("まひ$$$$$");
+const u8 gStatusConditionString_BurnJpn[] = _("やけど$$$$");
+const u8 gStatusConditionString_IceJpn[] = _("こおり$$$$");
+const u8 gStatusConditionString_ConfusionJpn[] = _("こんらん$$$");
+const u8 gStatusConditionString_LoveJpn[] = _("メロメロ$$$");
-const u8 * const gStatusConditionStringsTable[7][2] =
+const u8 * const gStatusConditionStringsTable[][2] =
{
{gStatusConditionString_PoisonJpn, gText_Poison},
{gStatusConditionString_SleepJpn, gText_Sleep},
@@ -569,7 +568,6 @@ const u8 * const gStatusConditionStringsTable[7][2] =
{gStatusConditionString_LoveJpn, gText_Love}
};
-// code
void CB2_InitBattle(void)
{
MoveSaveBlocks_ResetHeap();
@@ -1022,8 +1020,10 @@ static void CB2_HandleStartBattle(void)
}
break;
case 3:
+ // Link battle, send/receive party Pokémon 2 at a time
if (IsLinkTaskFinished())
{
+ // Send Pokémon 1-2
SendBlock(BitmaskAllOtherLinkPlayers(), gPlayerParty, sizeof(struct Pokemon) * 2);
gBattleCommunication[MULTIUSE_STATE]++;
}
@@ -1031,6 +1031,7 @@ static void CB2_HandleStartBattle(void)
case 4:
if ((GetBlockReceivedStatus() & 3) == 3)
{
+ // Recv Pokémon 1-2
ResetBlockReceivedFlags();
memcpy(gEnemyParty, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2);
gBattleCommunication[MULTIUSE_STATE]++;
@@ -1039,30 +1040,35 @@ static void CB2_HandleStartBattle(void)
case 7:
if (IsLinkTaskFinished())
{
- SendBlock(BitmaskAllOtherLinkPlayers(), gPlayerParty + 2, sizeof(struct Pokemon) * 2);
+ // Send Pokémon 3-4
+ SendBlock(BitmaskAllOtherLinkPlayers(), &gPlayerParty[2], sizeof(struct Pokemon) * 2);
gBattleCommunication[MULTIUSE_STATE]++;
}
break;
case 8:
if ((GetBlockReceivedStatus() & 3) == 3)
{
+ // Recv Pokémon 3-4
ResetBlockReceivedFlags();
- memcpy(gEnemyParty + 2, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2);
+ memcpy(&gEnemyParty[2], gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2);
gBattleCommunication[MULTIUSE_STATE]++;
}
break;
case 11:
if (IsLinkTaskFinished())
{
- SendBlock(BitmaskAllOtherLinkPlayers(), gPlayerParty + 4, sizeof(struct Pokemon) * 2);
+ // Send Pokémon 5-6
+ SendBlock(BitmaskAllOtherLinkPlayers(), &gPlayerParty[4], sizeof(struct Pokemon) * 2);
gBattleCommunication[MULTIUSE_STATE]++;
}
break;
case 12:
if ((GetBlockReceivedStatus() & 3) == 3)
{
+ // Recv Pokémon 5-6
ResetBlockReceivedFlags();
- memcpy(gEnemyParty + 4, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2);
+ memcpy(&gEnemyParty[4], gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2);
+
TryCorrectShedinjaLanguage(&gEnemyParty[0]);
TryCorrectShedinjaLanguage(&gEnemyParty[1]);
TryCorrectShedinjaLanguage(&gEnemyParty[2]);
@@ -1074,13 +1080,15 @@ static void CB2_HandleStartBattle(void)
break;
case 15:
InitBattleControllers();
- sub_8184E58();
+ RecordedBattle_SetTrainerInfo();
gBattleCommunication[SPRITES_INIT_STATE1] = 0;
gBattleCommunication[SPRITES_INIT_STATE2] = 0;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
+ // Check if both players are using Emerald
+ // to determine if the recorded battle rng
+ // seed needs to be sent
s32 i;
-
for (i = 0; i < 2 && (gLinkPlayers[i].version & 0xFF) == VERSION_EMERALD; i++);
if (i == 2)
@@ -1094,6 +1102,7 @@ static void CB2_HandleStartBattle(void)
}
break;
case 16:
+ // Both players are using Emerald, send rng seed for recorded battle
if (IsLinkTaskFinished())
{
SendBlock(BitmaskAllOtherLinkPlayers(), &gRecordedBattleRngSeed, sizeof(gRecordedBattleRngSeed));
@@ -1101,6 +1110,7 @@ static void CB2_HandleStartBattle(void)
}
break;
case 17:
+ // Receive rng seed for recorded battle (only read it if partner is the link master)
if ((GetBlockReceivedStatus() & 3) == 3)
{
ResetBlockReceivedFlags();
@@ -1110,17 +1120,17 @@ static void CB2_HandleStartBattle(void)
}
break;
case 18:
+ // Finish, start battle
if (BattleInitAllSprites(&gBattleCommunication[SPRITES_INIT_STATE1], &gBattleCommunication[SPRITES_INIT_STATE2]))
{
gPreBattleCallback1 = gMain.callback1;
gMain.callback1 = BattleMainCB1;
SetMainCallback2(BattleMainCB2);
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
- {
gBattleTypeFlags |= BATTLE_TYPE_LINK_IN_BATTLE;
- }
}
break;
+ // Introduce short delays between sending party Pokémon for link
case 5:
case 9:
case 13:
@@ -1138,7 +1148,7 @@ static void CB2_HandleStartBattle(void)
static void CB2_HandleStartMultiPartnerBattle(void)
{
u8 playerMultiplayerId;
- u8 enemyMultiplayerId;
+ u8 partnerMultiplayerId;
RunTasks();
AnimateSprites();
@@ -1146,7 +1156,7 @@ static void CB2_HandleStartMultiPartnerBattle(void)
playerMultiplayerId = GetMultiplayerId();
gBattleScripting.multiplayerId = playerMultiplayerId;
- enemyMultiplayerId = playerMultiplayerId ^ BIT_SIDE;
+ partnerMultiplayerId = playerMultiplayerId ^ BIT_SIDE;
switch (gBattleCommunication[MULTIUSE_STATE])
{
@@ -1222,8 +1232,10 @@ static void CB2_HandleStartMultiPartnerBattle(void)
}
break;
case 3:
+ // Link battle, send/receive party Pokémon in groups
if (IsLinkTaskFinished())
{
+ // Send Pokémon 1-2
SendBlock(BitmaskAllOtherLinkPlayers(), gPlayerParty, sizeof(struct Pokemon) * 2);
gBattleCommunication[MULTIUSE_STATE]++;
}
@@ -1231,16 +1243,17 @@ static void CB2_HandleStartMultiPartnerBattle(void)
case 4:
if ((GetBlockReceivedStatus() & 3) == 3)
{
+ // Recv partner's Pokémon 1-2, and copy partner's and own Pokémon into party positions
ResetBlockReceivedFlags();
if (gLinkPlayers[playerMultiplayerId].id != 0)
{
- memcpy(gPlayerParty, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2);
- memcpy(gPlayerParty + MULTI_PARTY_SIZE, gBlockRecvBuffer[playerMultiplayerId], sizeof(struct Pokemon) * 2);
+ memcpy(gPlayerParty, gBlockRecvBuffer[partnerMultiplayerId], sizeof(struct Pokemon) * 2);
+ memcpy(&gPlayerParty[MULTI_PARTY_SIZE], gBlockRecvBuffer[playerMultiplayerId], sizeof(struct Pokemon) * 2);
}
else
{
memcpy(gPlayerParty, gBlockRecvBuffer[playerMultiplayerId], sizeof(struct Pokemon) * 2);
- memcpy(gPlayerParty + MULTI_PARTY_SIZE, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2);
+ memcpy(&gPlayerParty[MULTI_PARTY_SIZE], gBlockRecvBuffer[partnerMultiplayerId], sizeof(struct Pokemon) * 2);
}
gBattleCommunication[MULTIUSE_STATE]++;
}
@@ -1248,23 +1261,25 @@ static void CB2_HandleStartMultiPartnerBattle(void)
case 5:
if (IsLinkTaskFinished())
{
- SendBlock(BitmaskAllOtherLinkPlayers(), gPlayerParty + 2, sizeof(struct Pokemon));
+ // Send Pokémon 3
+ SendBlock(BitmaskAllOtherLinkPlayers(), &gPlayerParty[2], sizeof(struct Pokemon));
gBattleCommunication[MULTIUSE_STATE]++;
}
break;
case 6:
if ((GetBlockReceivedStatus() & 3) == 3)
{
+ // Recv partner's Pokémon 3, and copy partner's and own Pokémon into party positions
ResetBlockReceivedFlags();
if (gLinkPlayers[playerMultiplayerId].id != 0)
{
- memcpy(gPlayerParty + 2, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon));
- memcpy(gPlayerParty + 5, gBlockRecvBuffer[playerMultiplayerId], sizeof(struct Pokemon));
+ memcpy(&gPlayerParty[2], gBlockRecvBuffer[partnerMultiplayerId], sizeof(struct Pokemon));
+ memcpy(&gPlayerParty[2 + MULTI_PARTY_SIZE], gBlockRecvBuffer[playerMultiplayerId], sizeof(struct Pokemon));
}
else
{
- memcpy(gPlayerParty + 2, gBlockRecvBuffer[playerMultiplayerId], sizeof(struct Pokemon));
- memcpy(gPlayerParty + 5, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon));
+ memcpy(&gPlayerParty[2], gBlockRecvBuffer[playerMultiplayerId], sizeof(struct Pokemon));
+ memcpy(&gPlayerParty[2 + MULTI_PARTY_SIZE], gBlockRecvBuffer[partnerMultiplayerId], sizeof(struct Pokemon));
}
gBattleCommunication[MULTIUSE_STATE]++;
}
@@ -1272,6 +1287,7 @@ static void CB2_HandleStartMultiPartnerBattle(void)
case 7:
if (IsLinkTaskFinished())
{
+ // Send enemy Pokémon 1-2 to partner
SendBlock(BitmaskAllOtherLinkPlayers(), gEnemyParty, sizeof(struct Pokemon) * 2);
gBattleCommunication[MULTIUSE_STATE]++;
}
@@ -1279,45 +1295,47 @@ static void CB2_HandleStartMultiPartnerBattle(void)
case 8:
if ((GetBlockReceivedStatus() & 3) == 3)
{
+ // Recv enemy Pokémon 1-2 (if not master)
ResetBlockReceivedFlags();
if (GetMultiplayerId() != 0)
- {
memcpy(gEnemyParty, gBlockRecvBuffer[0], sizeof(struct Pokemon) * 2);
- }
gBattleCommunication[MULTIUSE_STATE]++;
}
break;
case 9:
if (IsLinkTaskFinished())
{
- SendBlock(BitmaskAllOtherLinkPlayers(), gEnemyParty + 2, sizeof(struct Pokemon) * 2);
+ // Send enemy Pokémon 3-4 to partner
+ SendBlock(BitmaskAllOtherLinkPlayers(), &gEnemyParty[2], sizeof(struct Pokemon) * 2);
gBattleCommunication[MULTIUSE_STATE]++;
}
break;
case 10:
if ((GetBlockReceivedStatus() & 3) == 3)
{
+ // Recv enemy Pokémon 3-4 (if not master)
ResetBlockReceivedFlags();
if (GetMultiplayerId() != 0)
- {
- memcpy(gEnemyParty + 2, gBlockRecvBuffer[0], sizeof(struct Pokemon) * 2);
- }
+ memcpy(&gEnemyParty[2], gBlockRecvBuffer[0], sizeof(struct Pokemon) * 2);
gBattleCommunication[MULTIUSE_STATE]++;
}
break;
case 11:
if (IsLinkTaskFinished())
{
- SendBlock(BitmaskAllOtherLinkPlayers(), gEnemyParty + 4, sizeof(struct Pokemon) * 2);
+ // Send enemy Pokémon 5-6 to partner
+ SendBlock(BitmaskAllOtherLinkPlayers(), &gEnemyParty[4], sizeof(struct Pokemon) * 2);
gBattleCommunication[MULTIUSE_STATE]++;
}
break;
case 12:
if ((GetBlockReceivedStatus() & 3) == 3)
{
+ // Recv enemy Pokémon 5-6 (if not master)
ResetBlockReceivedFlags();
if (GetMultiplayerId() != 0)
- memcpy(gEnemyParty + 4, gBlockRecvBuffer[0], sizeof(struct Pokemon) * 2);
+ memcpy(&gEnemyParty[4], gBlockRecvBuffer[0], sizeof(struct Pokemon) * 2);
+
TryCorrectShedinjaLanguage(&gPlayerParty[0]);
TryCorrectShedinjaLanguage(&gPlayerParty[1]);
TryCorrectShedinjaLanguage(&gPlayerParty[2]);
@@ -1335,19 +1353,16 @@ static void CB2_HandleStartMultiPartnerBattle(void)
break;
case 13:
InitBattleControllers();
- sub_8184E58();
+ RecordedBattle_SetTrainerInfo();
gBattleCommunication[SPRITES_INIT_STATE1] = 0;
gBattleCommunication[SPRITES_INIT_STATE2] = 0;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
- {
gBattleCommunication[MULTIUSE_STATE] = 14;
- }
else
- {
gBattleCommunication[MULTIUSE_STATE] = 16;
- }
break;
case 14:
+ // Send rng seed for recorded battle
if (IsLinkTaskFinished())
{
SendBlock(BitmaskAllOtherLinkPlayers(), &gRecordedBattleRngSeed, sizeof(gRecordedBattleRngSeed));
@@ -1355,15 +1370,17 @@ static void CB2_HandleStartMultiPartnerBattle(void)
}
break;
case 15:
+ // Receive rng seed for recorded battle (only read it if partner is the link master)
if ((GetBlockReceivedStatus() & 3) == 3)
{
ResetBlockReceivedFlags();
if (!(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER))
- memcpy(&gRecordedBattleRngSeed, gBlockRecvBuffer[enemyMultiplayerId], sizeof(gRecordedBattleRngSeed));
+ memcpy(&gRecordedBattleRngSeed, gBlockRecvBuffer[partnerMultiplayerId], sizeof(gRecordedBattleRngSeed));
gBattleCommunication[MULTIUSE_STATE]++;
}
break;
case 16:
+ // Finish, start battle
if (BattleInitAllSprites(&gBattleCommunication[SPRITES_INIT_STATE1], &gBattleCommunication[SPRITES_INIT_STATE2]))
{
TrySetLinkBattleTowerEnemyPartyLevel();
@@ -1371,31 +1388,29 @@ static void CB2_HandleStartMultiPartnerBattle(void)
gMain.callback1 = BattleMainCB1;
SetMainCallback2(BattleMainCB2);
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
- {
gBattleTypeFlags |= BATTLE_TYPE_LINK_IN_BATTLE;
- }
}
break;
}
}
-static void sub_80379F8(u8 arrayIdPlus)
+static void SetMultiPartnerMenuParty(u8 offset)
{
s32 i;
- for (i = 0; i < (int)ARRAY_COUNT(gMultiPartnerParty); i++)
- {
- gMultiPartnerParty[i].species = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_SPECIES);
- gMultiPartnerParty[i].heldItem = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_HELD_ITEM);
- GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_NICKNAME, gMultiPartnerParty[i].nickname);
- gMultiPartnerParty[i].level = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_LEVEL);
- gMultiPartnerParty[i].hp = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_HP);
- gMultiPartnerParty[i].maxhp = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_MAX_HP);
- gMultiPartnerParty[i].status = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_STATUS);
- gMultiPartnerParty[i].personality = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_PERSONALITY);
- gMultiPartnerParty[i].gender = GetMonGender(&gPlayerParty[arrayIdPlus + i]);
+ for (i = 0; i < MULTI_PARTY_SIZE; i++)
+ {
+ gMultiPartnerParty[i].species = GetMonData(&gPlayerParty[offset + i], MON_DATA_SPECIES);
+ gMultiPartnerParty[i].heldItem = GetMonData(&gPlayerParty[offset + i], MON_DATA_HELD_ITEM);
+ GetMonData(&gPlayerParty[offset + i], MON_DATA_NICKNAME, gMultiPartnerParty[i].nickname);
+ gMultiPartnerParty[i].level = GetMonData(&gPlayerParty[offset + i], MON_DATA_LEVEL);
+ gMultiPartnerParty[i].hp = GetMonData(&gPlayerParty[offset + i], MON_DATA_HP);
+ gMultiPartnerParty[i].maxhp = GetMonData(&gPlayerParty[offset + i], MON_DATA_MAX_HP);
+ gMultiPartnerParty[i].status = GetMonData(&gPlayerParty[offset + i], MON_DATA_STATUS);
+ gMultiPartnerParty[i].personality = GetMonData(&gPlayerParty[offset + i], MON_DATA_PERSONALITY);
+ gMultiPartnerParty[i].gender = GetMonGender(&gPlayerParty[offset + i]);
StripExtCtrlCodes(gMultiPartnerParty[i].nickname);
- if (GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_LANGUAGE) != LANGUAGE_JAPANESE)
+ if (GetMonData(&gPlayerParty[offset + i], MON_DATA_LANGUAGE) != LANGUAGE_JAPANESE)
PadNameString(gMultiPartnerParty[i].nickname, CHAR_SPACE);
}
memcpy(sMultiPartnerPartyBuffer, gMultiPartnerParty, sizeof(gMultiPartnerParty));
@@ -1405,15 +1420,15 @@ static void CB2_PreInitMultiBattle(void)
{
s32 i;
u8 playerMultiplierId;
- s32 numPlayers = 4;
- u8 r4 = 0xF;
+ s32 numPlayers = MAX_BATTLERS_COUNT;
+ u8 blockMask = 0xF;
u32 *savedBattleTypeFlags;
void (**savedCallback)(void);
if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
{
numPlayers = 2;
- r4 = 3;
+ blockMask = 3;
}
playerMultiplierId = GetMultiplayerId();
@@ -1430,14 +1445,14 @@ static void CB2_PreInitMultiBattle(void)
case 0:
if (gReceivedRemoteLinkPlayers != 0 && IsLinkTaskFinished())
{
- sMultiPartnerPartyBuffer = Alloc(sizeof(struct UnknownPokemonStruct4) * ARRAY_COUNT(gMultiPartnerParty));
- sub_80379F8(0);
- SendBlock(BitmaskAllOtherLinkPlayers(), sMultiPartnerPartyBuffer, sizeof(struct UnknownPokemonStruct4) * ARRAY_COUNT(gMultiPartnerParty));
+ sMultiPartnerPartyBuffer = Alloc(sizeof(gMultiPartnerParty));
+ SetMultiPartnerMenuParty(0);
+ SendBlock(BitmaskAllOtherLinkPlayers(), sMultiPartnerPartyBuffer, sizeof(gMultiPartnerParty));
gBattleCommunication[MULTIUSE_STATE]++;
}
break;
case 1:
- if ((GetBlockReceivedStatus() & r4) == r4)
+ if ((GetBlockReceivedStatus() & blockMask) == blockMask)
{
ResetBlockReceivedFlags();
for (i = 0; i < numPlayers; i++)
@@ -1450,12 +1465,12 @@ static void CB2_PreInitMultiBattle(void)
if ((!(gLinkPlayers[i].id & 1) && !(gLinkPlayers[playerMultiplierId].id & 1))
|| (gLinkPlayers[i].id & 1 && gLinkPlayers[playerMultiplierId].id & 1))
{
- memcpy(gMultiPartnerParty, gBlockRecvBuffer[i], sizeof(struct UnknownPokemonStruct4) * ARRAY_COUNT(gMultiPartnerParty));
+ memcpy(gMultiPartnerParty, gBlockRecvBuffer[i], sizeof(gMultiPartnerParty));
}
}
else
{
- memcpy(gMultiPartnerParty, gBlockRecvBuffer[i], sizeof(struct UnknownPokemonStruct4) * ARRAY_COUNT(gMultiPartnerParty));
+ memcpy(gMultiPartnerParty, gBlockRecvBuffer[i], sizeof(gMultiPartnerParty));
}
}
gBattleCommunication[MULTIUSE_STATE]++;
@@ -1514,8 +1529,8 @@ static void CB2_PreInitIngamePlayerPartnerBattle(void)
switch (gBattleCommunication[MULTIUSE_STATE])
{
case 0:
- sMultiPartnerPartyBuffer = Alloc(sizeof(struct UnknownPokemonStruct4) * ARRAY_COUNT(gMultiPartnerParty));
- sub_80379F8(3);
+ sMultiPartnerPartyBuffer = Alloc(sizeof(gMultiPartnerParty));
+ SetMultiPartnerMenuParty(MULTI_PARTY_SIZE);
gBattleCommunication[MULTIUSE_STATE]++;
*savedCallback = gMain.savedCallback;
*savedBattleTypeFlags = gBattleTypeFlags;
@@ -1773,7 +1788,7 @@ static void CB2_HandleStartMultiBattle(void)
break;
case 7:
InitBattleControllers();
- sub_8184E58();
+ RecordedBattle_SetTrainerInfo();
gBattleCommunication[SPRITES_INIT_STATE1] = 0;
gBattleCommunication[SPRITES_INIT_STATE2] = 0;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
@@ -1841,11 +1856,12 @@ void BattleMainCB2(void)
UpdatePaletteFade();
RunTasks();
- if (JOY_HELD(B_BUTTON) && gBattleTypeFlags & BATTLE_TYPE_RECORDED && sub_8186450())
+ if (JOY_HELD(B_BUTTON) && gBattleTypeFlags & BATTLE_TYPE_RECORDED && RecordedBattle_CanStopPlayback())
{
+ // Player pressed B during recorded battle playback, end battle
gSpecialVar_Result = gBattleOutcome = B_OUTCOME_PLAYER_TELEPORTED;
ResetPaletteFadeControl();
- BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK);
+ BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
SetMainCallback2(CB2_QuitRecordedBattle);
}
}
@@ -1854,7 +1870,7 @@ static void FreeRestoreBattleData(void)
{
gMain.callback1 = gPreBattleCallback1;
gScanlineEffect.state = 3;
- gMain.inBattle = 0;
+ gMain.inBattle = FALSE;
ZeroEnemyPartyMons();
m4aSongNumStop(SE_LOW_HEALTH);
FreeMonSpritesGfx();
@@ -1875,34 +1891,37 @@ void CB2_QuitRecordedBattle(void)
}
}
-void sub_8038528(struct Sprite* sprite)
+#define sState data[0]
+#define sDelay data[4]
+
+static void SpriteCB_UnusedBattleInit(struct Sprite* sprite)
{
- sprite->data[0] = 0;
- sprite->callback = sub_8038538;
+ sprite->sState = 0;
+ sprite->callback = SpriteCB_UnusedBattleInit_Main;
}
-static void sub_8038538(struct Sprite *sprite)
+static void SpriteCB_UnusedBattleInit_Main(struct Sprite *sprite)
{
- u16 *arr = (u16*)(gDecompressionBuffer);
+ u16 *arr = (u16*)gDecompressionBuffer;
- switch (sprite->data[0])
+ switch (sprite->sState)
{
case 0:
- sprite->data[0]++;
+ sprite->sState++;
sprite->data[1] = 0;
sprite->data[2] = 0x281;
sprite->data[3] = 0;
- sprite->data[4] = 1;
+ sprite->sDelay = 1;
// fall through
case 1:
- sprite->data[4]--;
- if (sprite->data[4] == 0)
+ sprite->sDelay--;
+ if (sprite->sDelay == 0)
{
s32 i;
s32 r2;
s32 r0;
- sprite->data[4] = 2;
+ sprite->sDelay = 2;
r2 = sprite->data[1] + sprite->data[3] * 32;
r0 = sprite->data[2] - sprite->data[3] * 32;
for (i = 0; i < 29; i += 2)
@@ -1913,7 +1932,7 @@ static void sub_8038538(struct Sprite *sprite)
sprite->data[3]++;
if (sprite->data[3] == 21)
{
- sprite->data[0]++;
+ sprite->sState++;
sprite->data[1] = 32;
}
}
@@ -1946,8 +1965,8 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
{
- if (gTrainers[trainerNum].partySize > 3)
- monsCount = 3;
+ if (gTrainers[trainerNum].partySize > PARTY_SIZE / 2)
+ monsCount = PARTY_SIZE / 2;
else
monsCount = gTrainers[trainerNum].partySize;
}
@@ -2044,9 +2063,10 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
return gTrainers[trainerNum].partySize;
}
-void sub_8038A04(void) // unused
+// Unused
+static void HBlankCB_Battle(void)
{
- if (REG_VCOUNT < 0xA0 && REG_VCOUNT >= 0x6F)
+ if (REG_VCOUNT < DISPLAY_HEIGHT && REG_VCOUNT >= 111)
SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_SCREENBASE(24) | BGCNT_TXT256x512);
}
@@ -2246,33 +2266,35 @@ static void EndLinkBattleInSteps(void)
case 1:
if (--gBattleCommunication[1] == 0)
{
- BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK);
+ BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
gBattleCommunication[MULTIUSE_STATE]++;
}
break;
case 2:
if (!gPaletteFade.active)
{
- u8 monsCount;
+ u8 battlerCount;
gMain.anyLinkBattlerHasFrontierPass = RecordedBattle_GetFrontierPassFlag();
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
- monsCount = 4;
+ battlerCount = 4;
else
- monsCount = 2;
+ battlerCount = 2;
- for (i = 0; i < monsCount && (gLinkPlayers[i].version & 0xFF) == VERSION_EMERALD; i++);
+ for (i = 0; i < battlerCount && (gLinkPlayers[i].version & 0xFF) == VERSION_EMERALD; i++);
- if (!gSaveBlock2Ptr->frontier.disableRecordBattle && i == monsCount)
+ if (!gSaveBlock2Ptr->frontier.disableRecordBattle && i == battlerCount)
{
if (FlagGet(FLAG_SYS_FRONTIER_PASS))
{
+ // Ask player if they want to record the battle
FreeAllWindowBuffers();
- SetMainCallback2(sub_80392A8);
+ SetMainCallback2(CB2_InitAskRecordBattle);
}
else if (!gMain.anyLinkBattlerHasFrontierPass)
{
+ // No players can record this battle, end
SetMainCallback2(gMain.savedCallback);
FreeBattleResources();
FreeBattleSpritesData();
@@ -2280,6 +2302,8 @@ static void EndLinkBattleInSteps(void)
}
else if (gReceivedRemoteLinkPlayers == 0)
{
+ // Player can't record battle but
+ // another player can, reconnect with them
CreateTask(Task_ReconnectWithLinkPlayers, 5);
gBattleCommunication[MULTIUSE_STATE]++;
}
@@ -2298,12 +2322,12 @@ static void EndLinkBattleInSteps(void)
}
break;
case 3:
- CpuFill32(0, (void*)(VRAM), VRAM_SIZE);
+ CpuFill32(0, (void*)VRAM, VRAM_SIZE);
for (i = 0; i < 2; i++)
LoadChosenBattleElement(i);
- BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_BLACK);
+ BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK);
gBattleCommunication[MULTIUSE_STATE]++;
break;
case 4:
@@ -2318,12 +2342,12 @@ static void EndLinkBattleInSteps(void)
if (IsLinkTaskFinished() == TRUE)
{
SetLinkStandbyCallback();
- BattlePutTextOnWindow(gText_LinkStandby3, 0);
+ BattlePutTextOnWindow(gText_LinkStandby3, B_WIN_MSG);
gBattleCommunication[MULTIUSE_STATE]++;
}
break;
case 7:
- if (!IsTextPrinterActive(0))
+ if (!IsTextPrinterActive(B_WIN_MSG))
{
if (IsLinkTaskFinished() == TRUE)
gBattleCommunication[MULTIUSE_STATE]++;
@@ -2337,7 +2361,7 @@ static void EndLinkBattleInSteps(void)
case 9:
if (!gMain.anyLinkBattlerHasFrontierPass || gWirelessCommType || gReceivedRemoteLinkPlayers != 1)
{
- gMain.anyLinkBattlerHasFrontierPass = 0;
+ gMain.anyLinkBattlerHasFrontierPass = FALSE;
SetMainCallback2(gMain.savedCallback);
FreeBattleResources();
FreeBattleSpritesData();
@@ -2379,7 +2403,7 @@ u32 GetBattleBgTemplateData(u8 arrayId, u8 caseId)
return ret;
}
-static void sub_80392A8(void)
+static void CB2_InitAskRecordBattle(void)
{
s32 i;
@@ -2407,14 +2431,14 @@ static void sub_80392A8(void)
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 4;
SetVBlankCallback(VBlankCB_Battle);
- SetMainCallback2(sub_803937C);
+ SetMainCallback2(CB2_AskRecordBattle);
BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_BLACK);
gBattleCommunication[MULTIUSE_STATE] = 0;
}
-static void sub_803937C(void)
+static void CB2_AskRecordBattle(void)
{
- sub_803939C();
+ AskRecordBattle();
AnimateSprites();
BuildOamBuffer();
RunTextPrinters();
@@ -2422,47 +2446,65 @@ static void sub_803937C(void)
RunTasks();
}
-static void sub_803939C(void)
+
+// States for AskRecordBattle
+#define STATE_INIT 0
+#define STATE_LINK 1
+#define STATE_WAIT_LINK 2
+#define STATE_ASK_RECORD 3
+#define STATE_PRINT_YES_NO 4
+#define STATE_HANDLE_YES_NO 5
+#define STATE_RECORD_NO 6
+#define STATE_END_RECORD_NO 7
+#define STATE_WAIT_END 8
+#define STATE_END 9
+#define STATE_RECORD_YES 10
+#define STATE_RECORD_WAIT 11
+#define STATE_END_RECORD_YES 12
+
+static void AskRecordBattle(void)
{
switch (gBattleCommunication[MULTIUSE_STATE])
{
- case 0:
+ case STATE_INIT:
ShowBg(0);
ShowBg(1);
ShowBg(2);
gBattleCommunication[MULTIUSE_STATE]++;
break;
- case 1:
+ case STATE_LINK:
if (gMain.anyLinkBattlerHasFrontierPass && gReceivedRemoteLinkPlayers == 0)
CreateTask(Task_ReconnectWithLinkPlayers, 5);
gBattleCommunication[MULTIUSE_STATE]++;
break;
- case 2:
+ case STATE_WAIT_LINK:
if (!FuncIsActiveTask(Task_ReconnectWithLinkPlayers))
gBattleCommunication[MULTIUSE_STATE]++;
break;
- case 3:
+ case STATE_ASK_RECORD:
if (!gPaletteFade.active)
{
- BattlePutTextOnWindow(gText_RecordBattleToPass, 0);
+ // "Would you like to record your battle on your FRONTIER PASS?"
+ BattlePutTextOnWindow(gText_RecordBattleToPass, B_WIN_MSG);
gBattleCommunication[MULTIUSE_STATE]++;
}
break;
- case 4:
- if (!IsTextPrinterActive(0))
+ case STATE_PRINT_YES_NO:
+ if (!IsTextPrinterActive(B_WIN_MSG))
{
HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0);
- BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xC);
+ BattlePutTextOnWindow(gText_BattleYesNoChoice, B_WIN_YESNO);
gBattleCommunication[CURSOR_POSITION] = 1;
BattleCreateYesNoCursorAt(1);
gBattleCommunication[MULTIUSE_STATE]++;
}
break;
- case 5:
+ case STATE_HANDLE_YES_NO:
if (JOY_NEW(DPAD_UP))
{
if (gBattleCommunication[CURSOR_POSITION] != 0)
{
+ // Moved cursor onto Yes
PlaySE(SE_SELECT);
BattleDestroyYesNoCursorAt(gBattleCommunication[CURSOR_POSITION]);
gBattleCommunication[CURSOR_POSITION] = 0;
@@ -2473,6 +2515,7 @@ static void sub_803939C(void)
{
if (gBattleCommunication[CURSOR_POSITION] == 0)
{
+ // Moved cursor onto No
PlaySE(SE_SELECT);
BattleDestroyYesNoCursorAt(gBattleCommunication[CURSOR_POSITION]);
gBattleCommunication[CURSOR_POSITION] = 1;
@@ -2484,12 +2527,14 @@ static void sub_803939C(void)
PlaySE(SE_SELECT);
if (gBattleCommunication[CURSOR_POSITION] == 0)
{
+ // Selected Yes
HandleBattleWindow(0x18, 8, 0x1D, 0xD, WINDOW_CLEAR);
gBattleCommunication[1] = MoveRecordedBattleToSaveData();
- gBattleCommunication[MULTIUSE_STATE] = 10;
+ gBattleCommunication[MULTIUSE_STATE] = STATE_RECORD_YES;
}
else
{
+ // Selected No
gBattleCommunication[MULTIUSE_STATE]++;
}
}
@@ -2499,19 +2544,20 @@ static void sub_803939C(void)
gBattleCommunication[MULTIUSE_STATE]++;
}
break;
- case 6:
+ case STATE_RECORD_NO:
if (IsLinkTaskFinished() == TRUE)
{
HandleBattleWindow(0x18, 8, 0x1D, 0xD, WINDOW_CLEAR);
if (gMain.anyLinkBattlerHasFrontierPass)
{
+ // Other battlers may be recording, wait for them
SetLinkStandbyCallback();
- BattlePutTextOnWindow(gText_LinkStandby3, 0);
+ BattlePutTextOnWindow(gText_LinkStandby3, B_WIN_MSG);
}
- gBattleCommunication[MULTIUSE_STATE]++;
+ gBattleCommunication[MULTIUSE_STATE]++; // STATE_END_RECORD_NO
}
break;
- case 8:
+ case STATE_WAIT_END:
if (--gBattleCommunication[1] == 0)
{
if (gMain.anyLinkBattlerHasFrontierPass && !gWirelessCommType)
@@ -2519,10 +2565,10 @@ static void sub_803939C(void)
gBattleCommunication[MULTIUSE_STATE]++;
}
break;
- case 9:
+ case STATE_END:
if (!gMain.anyLinkBattlerHasFrontierPass || gWirelessCommType || gReceivedRemoteLinkPlayers != 1)
{
- gMain.anyLinkBattlerHasFrontierPass = 0;
+ gMain.anyLinkBattlerHasFrontierPass = FALSE;
if (!gPaletteFade.active)
{
SetMainCallback2(gMain.savedCallback);
@@ -2532,53 +2578,53 @@ static void sub_803939C(void)
}
}
break;
- case 10:
+ case STATE_RECORD_YES:
if (gBattleCommunication[1] == 1)
{
PlaySE(SE_SAVE);
BattleStringExpandPlaceholdersToDisplayedString(gText_BattleRecordedOnPass);
- BattlePutTextOnWindow(gDisplayedStringBattle, 0);
- gBattleCommunication[1] = 0x80;
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
+ gBattleCommunication[1] = 128; // Delay
gBattleCommunication[MULTIUSE_STATE]++;
}
else
{
BattleStringExpandPlaceholdersToDisplayedString(BattleFrontier_BattleTowerBattleRoom_Text_RecordCouldntBeSaved);
- BattlePutTextOnWindow(gDisplayedStringBattle, 0);
- gBattleCommunication[1] = 0x80;
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
+ gBattleCommunication[1] = 128; // Delay
gBattleCommunication[MULTIUSE_STATE]++;
}
break;
- case 11:
- if (IsLinkTaskFinished() == TRUE && !IsTextPrinterActive(0) && --gBattleCommunication[1] == 0)
+ case STATE_RECORD_WAIT:
+ if (IsLinkTaskFinished() == TRUE && !IsTextPrinterActive(B_WIN_MSG) && --gBattleCommunication[1] == 0)
{
if (gMain.anyLinkBattlerHasFrontierPass)
{
SetLinkStandbyCallback();
- BattlePutTextOnWindow(gText_LinkStandby3, 0);
+ BattlePutTextOnWindow(gText_LinkStandby3, B_WIN_MSG);
}
gBattleCommunication[MULTIUSE_STATE]++;
}
break;
- case 12:
- case 7:
- if (!IsTextPrinterActive(0))
+ case STATE_END_RECORD_YES:
+ case STATE_END_RECORD_NO:
+ if (!IsTextPrinterActive(B_WIN_MSG))
{
if (gMain.anyLinkBattlerHasFrontierPass)
{
if (IsLinkTaskFinished() == TRUE)
{
- BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK);
- gBattleCommunication[1] = 0x20;
- gBattleCommunication[MULTIUSE_STATE] = 8;
+ BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
+ gBattleCommunication[1] = 32; // Delay
+ gBattleCommunication[MULTIUSE_STATE] = STATE_WAIT_END;
}
}
else
{
- BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK);
- gBattleCommunication[1] = 0x20;
- gBattleCommunication[MULTIUSE_STATE] = 8;
+ BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
+ gBattleCommunication[1] = 32; // Delay
+ gBattleCommunication[MULTIUSE_STATE] = STATE_WAIT_END;
}
}
break;
@@ -2599,9 +2645,9 @@ static void TryCorrectShedinjaLanguage(struct Pokemon *mon)
}
}
-u32 GetBattleWindowTemplatePixelWidth(u32 setId, u32 tableId)
+u32 GetBattleWindowTemplatePixelWidth(u32 windowsType, u32 tableId)
{
- return gBattleWindowTemplates[setId][tableId].width * 8;
+ return gBattleWindowTemplates[windowsType][tableId].width * 8;
}
#define sBattler data[0]
@@ -2651,31 +2697,37 @@ void SpriteCallbackDummy_2(struct Sprite *sprite)
}
+#define sNumFlickers data[3]
+#define sDelay data[4]
+
// Unused
-static void sub_80398BC(struct Sprite *sprite)
+static void SpriteCB_InitFlicker(struct Sprite *sprite)
{
- sprite->data[3] = 6;
- sprite->data[4] = 1;
- sprite->callback = sub_80398D0;
+ sprite->sNumFlickers = 6;
+ sprite->sDelay = 1;
+ sprite->callback = SpriteCB_Flicker;
}
-static void sub_80398D0(struct Sprite *sprite)
+static void SpriteCB_Flicker(struct Sprite *sprite)
{
- sprite->data[4]--;
- if (sprite->data[4] == 0)
+ sprite->sDelay--;
+ if (sprite->sDelay == 0)
{
- sprite->data[4] = 8;
+ sprite->sDelay = 8;
sprite->invisible ^= 1;
- sprite->data[3]--;
- if (sprite->data[3] == 0)
+ sprite->sNumFlickers--;
+ if (sprite->sNumFlickers == 0)
{
sprite->invisible = FALSE;
sprite->callback = SpriteCallbackDummy_2;
- sUnusedUnknownArray[0] = 0;
+ sFlickerArray[0] = 0;
}
}
}
+#undef sNumFlickers
+#undef sDelay
+
extern const struct MonCoords gMonFrontPicCoords[];
extern const struct MonCoords gCastformFrontSpriteCoords[];
@@ -2772,7 +2824,7 @@ void SpriteCb_HideAsMoveTarget(struct Sprite *sprite)
sprite->callback = SpriteCallbackDummy_2;
}
-void SpriteCb_OpponentMonFromBall(struct Sprite *sprite)
+void SpriteCB_OpponentMonFromBall(struct Sprite *sprite)
{
if (sprite->affineAnimEnded)
{
@@ -2798,19 +2850,19 @@ static void SpriteCB_BattleSpriteSlideLeft(struct Sprite *sprite)
sprite->x2 -= 2;
if (sprite->x2 == 0)
{
- sprite->callback = SpriteCallbackDummy_3;
+ sprite->callback = SpriteCB_Idle;
sprite->data[1] = 0;
}
}
}
// Unused
-static void sub_80105DC(struct Sprite *sprite)
+static void SetIdleSpriteCallback(struct Sprite *sprite)
{
- sprite->callback = SpriteCallbackDummy_3;
+ sprite->callback = SpriteCB_Idle;
}
-static void SpriteCallbackDummy_3(struct Sprite *sprite)
+static void SpriteCB_Idle(struct Sprite *sprite)
{
}
@@ -2923,23 +2975,25 @@ static void SpriteCB_BounceEffect(struct Sprite *sprite)
#undef sBouncerSpriteId
#undef sWhich
-void SpriteCb_PlayerMonFromBall(struct Sprite *sprite)
+void SpriteCB_PlayerMonFromBall(struct Sprite *sprite)
{
if (sprite->affineAnimEnded)
BattleAnimateBackSprite(sprite, sprite->sSpeciesId);
}
-void sub_8039E60(struct Sprite *sprite)
+static void SpriteCB_TrainerThrowObject_Main(struct Sprite *sprite)
{
sub_8039E9C(sprite);
if (sprite->animEnded)
- sprite->callback = SpriteCallbackDummy_3;
+ sprite->callback = SpriteCB_Idle;
}
+// Sprite callback for a trainer back pic to throw an object
+// (Wally throwing a ball, throwing Pokéblocks/balls in the Safari Zone)
void SpriteCB_TrainerThrowObject(struct Sprite *sprite)
{
StartSpriteAnim(sprite, 1);
- sprite->callback = sub_8039E60;
+ sprite->callback = SpriteCB_TrainerThrowObject_Main;
}
void sub_8039E9C(struct Sprite *sprite)
@@ -3235,7 +3289,7 @@ void FaintClearSetData(void)
gProtectStructs[gActiveBattler].confusionSelfDmg = 0;
gProtectStructs[gActiveBattler].targetNotAffected = 0;
gProtectStructs[gActiveBattler].chargingTurn = 0;
- gProtectStructs[gActiveBattler].fleeFlag = 0;
+ gProtectStructs[gActiveBattler].fleeType = 0;
gProtectStructs[gActiveBattler].usedImprisonedMove = 0;
gProtectStructs[gActiveBattler].loveImmobility = 0;
gProtectStructs[gActiveBattler].usedDisabledMove = 0;
@@ -3295,7 +3349,7 @@ static void BattleIntroGetMonsData(void)
{
case 0:
gActiveBattler = gBattleCommunication[1];
- BtlController_EmitGetMonData(0, REQUEST_ALL_BATTLE, 0);
+ BtlController_EmitGetMonData(BUFFER_A, REQUEST_ALL_BATTLE, 0);
MarkBattlerForControllerExec(gActiveBattler);
gBattleCommunication[MULTIUSE_STATE]++;
break;
@@ -3317,7 +3371,7 @@ static void BattleIntroPrepareBackgroundSlide(void)
if (gBattleControllerExecFlags == 0)
{
gActiveBattler = GetBattlerAtPosition(0);
- BtlController_EmitIntroSlide(0, gBattleTerrain);
+ BtlController_EmitIntroSlide(BUFFER_A, gBattleTerrain);
MarkBattlerForControllerExec(gActiveBattler);
gBattleMainFunc = BattleIntroDrawTrainersOrMonsSprites;
gBattleCommunication[0] = 0;
@@ -3362,7 +3416,7 @@ static void BattleIntroDrawTrainersOrMonsSprites(void)
if (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_LEFT)
{
- BtlController_EmitDrawTrainerPic(0);
+ BtlController_EmitDrawTrainerPic(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
}
@@ -3370,7 +3424,7 @@ static void BattleIntroDrawTrainersOrMonsSprites(void)
{
if (GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_LEFT)
{
- BtlController_EmitDrawTrainerPic(0);
+ BtlController_EmitDrawTrainerPic(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
}
if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT
@@ -3395,7 +3449,7 @@ static void BattleIntroDrawTrainersOrMonsSprites(void)
{
HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality);
}
- BtlController_EmitLoadMonSprite(0);
+ BtlController_EmitLoadMonSprite(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
gBattleResults.lastOpponentSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES, NULL);
}
@@ -3406,14 +3460,14 @@ static void BattleIntroDrawTrainersOrMonsSprites(void)
if (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_RIGHT
|| GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_RIGHT)
{
- BtlController_EmitDrawTrainerPic(0);
+ BtlController_EmitDrawTrainerPic(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
}
}
if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS && GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_RIGHT)
{
- BtlController_EmitDrawTrainerPic(0);
+ BtlController_EmitDrawTrainerPic(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
}
@@ -3448,7 +3502,7 @@ static void BattleIntroDrawPartySummaryScreens(void)
}
}
gActiveBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
- BtlController_EmitDrawPartyStatusSummary(0, hpStatus, 0x80);
+ BtlController_EmitDrawPartyStatusSummary(BUFFER_A, hpStatus, PARTY_SUMM_SKIP_DRAW_DELAY);
MarkBattlerForControllerExec(gActiveBattler);
for (i = 0; i < PARTY_SIZE; i++)
@@ -3466,7 +3520,7 @@ static void BattleIntroDrawPartySummaryScreens(void)
}
}
gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
- BtlController_EmitDrawPartyStatusSummary(0, hpStatus, 0x80);
+ BtlController_EmitDrawPartyStatusSummary(BUFFER_A, hpStatus, PARTY_SUMM_SKIP_DRAW_DELAY);
MarkBattlerForControllerExec(gActiveBattler);
gBattleMainFunc = BattleIntroPrintTrainerWantsToBattle;
@@ -3559,7 +3613,7 @@ static void BattleIntroOpponent2SendsOutMonAnimation(void)
{
if (GetBattlerPosition(gActiveBattler) == position)
{
- BtlController_EmitIntroTrainerBallThrow(0);
+ BtlController_EmitIntroTrainerBallThrow(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
}
}
@@ -3593,7 +3647,7 @@ static void BattleIntroOpponent1SendsOutMonAnimation(void)
{
if (GetBattlerPosition(gActiveBattler) == position)
{
- BtlController_EmitIntroTrainerBallThrow(0);
+ BtlController_EmitIntroTrainerBallThrow(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
if (gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_TWO_OPPONENTS))
{
@@ -3626,7 +3680,8 @@ static void BattleIntroRecordMonsToDex(void)
}
}
-void sub_803B3AC(void) // unused
+// Unused
+static void BattleIntroSkipRecordMonsToDex(void)
{
if (gBattleControllerExecFlags == 0)
gBattleMainFunc = BattleIntroPrintPlayerSendsOut;
@@ -3677,7 +3732,7 @@ static void BattleIntroPlayer2SendsOutMonAnimation(void)
{
if (GetBattlerPosition(gActiveBattler) == position)
{
- BtlController_EmitIntroTrainerBallThrow(0);
+ BtlController_EmitIntroTrainerBallThrow(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
}
}
@@ -3712,7 +3767,7 @@ static void BattleIntroPlayer1SendsOutMonAnimation(void)
{
if (GetBattlerPosition(gActiveBattler) == position)
{
- BtlController_EmitIntroTrainerBallThrow(0);
+ BtlController_EmitIntroTrainerBallThrow(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
if (gBattleTypeFlags & (BATTLE_TYPE_MULTI))
{
@@ -3729,7 +3784,8 @@ static void BattleIntroPlayer1SendsOutMonAnimation(void)
gBattleMainFunc = TryDoEventsBeforeFirstTurn;
}
-void sub_803B598(void) // unused
+// Unused
+static void BattleIntroSwitchInPlayerMons(void)
{
if (gBattleControllerExecFlags == 0)
{
@@ -3737,7 +3793,7 @@ void sub_803B598(void) // unused
{
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
- BtlController_EmitSwitchInAnim(0, gBattlerPartyIndexes[gActiveBattler], FALSE);
+ BtlController_EmitSwitchInAnim(BUFFER_A, gBattlerPartyIndexes[gActiveBattler], FALSE);
MarkBattlerForControllerExec(gActiveBattler);
}
}
@@ -3812,8 +3868,8 @@ static void TryDoEventsBeforeFirstTurn(void)
}
TurnValuesCleanUp(FALSE);
SpecialStatusesClear();
- *(&gBattleStruct->field_91) = gAbsentBattlerFlags;
- BattlePutTextOnWindow(gText_EmptyString3, 0);
+ *(&gBattleStruct->absentBattlerFlags) = gAbsentBattlerFlags;
+ BattlePutTextOnWindow(gText_EmptyString3, B_WIN_MSG);
gBattleMainFunc = HandleTurnActionSelectionState;
ResetSentPokesToOpponentValue();
@@ -3919,8 +3975,8 @@ void BattleTurnPassed(void)
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
*(gBattleStruct->monToSwitchIntoId + i) = PARTY_SIZE;
- *(&gBattleStruct->field_91) = gAbsentBattlerFlags;
- BattlePutTextOnWindow(gText_EmptyString3, 0);
+ *(&gBattleStruct->absentBattlerFlags) = gAbsentBattlerFlags;
+ BattlePutTextOnWindow(gText_EmptyString3, B_WIN_MSG);
gBattleMainFunc = HandleTurnActionSelectionState;
gRandomTurnNumber = Random();
@@ -4001,10 +4057,8 @@ void SwitchPartyOrder(u8 battler)
u8 partyId1;
u8 partyId2;
- // gBattleStruct->field_60[battler][i]
-
for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++)
- gBattlePartyCurrentOrder[i] = *(battler * 3 + i + (u8*)(gBattleStruct->field_60));
+ gBattlePartyCurrentOrder[i] = *(battler * 3 + i + (u8*)(gBattleStruct->battlerPartyOrders));
partyId1 = GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[battler]);
partyId2 = GetPartyIdFromBattlePartyId(*(gBattleStruct->monToSwitchIntoId + battler));
@@ -4014,15 +4068,15 @@ void SwitchPartyOrder(u8 battler)
{
for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++)
{
- *(battler * 3 + i + (u8*)(gBattleStruct->field_60)) = gBattlePartyCurrentOrder[i];
- *(BATTLE_PARTNER(battler) * 3 + i + (u8*)(gBattleStruct->field_60)) = gBattlePartyCurrentOrder[i];
+ *(battler * 3 + i + (u8*)(gBattleStruct->battlerPartyOrders)) = gBattlePartyCurrentOrder[i];
+ *(BATTLE_PARTNER(battler) * 3 + i + (u8*)(gBattleStruct->battlerPartyOrders)) = gBattlePartyCurrentOrder[i];
}
}
else
{
for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++)
{
- *(battler * 3 + i + (u8*)(gBattleStruct->field_60)) = gBattlePartyCurrentOrder[i];
+ *(battler * 3 + i + (u8*)(gBattleStruct->battlerPartyOrders)) = gBattlePartyCurrentOrder[i];
}
}
}
@@ -4058,10 +4112,10 @@ static void HandleTurnActionSelectionState(void)
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
if (gBattleTypeFlags & BATTLE_TYPE_MULTI
|| (position & BIT_FLANK) == B_FLANK_LEFT
- || gBattleStruct->field_91 & gBitTable[GetBattlerAtPosition(BATTLE_PARTNER(position))]
+ || gBattleStruct->absentBattlerFlags & gBitTable[GetBattlerAtPosition(BATTLE_PARTNER(position))]
|| gBattleCommunication[GetBattlerAtPosition(BATTLE_PARTNER(position))] == STATE_WAIT_ACTION_CONFIRMED)
{
- if (gBattleStruct->field_91 & gBitTable[gActiveBattler])
+ if (gBattleStruct->absentBattlerFlags & gBitTable[gActiveBattler])
{
gChosenActionByBattler[gActiveBattler] = B_ACTION_NOTHING_FAINTED;
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
@@ -4079,7 +4133,7 @@ static void HandleTurnActionSelectionState(void)
}
else
{
- BtlController_EmitChooseAction(0, gChosenActionByBattler[0], gBattleBufferB[0][1] | (gBattleBufferB[0][2] << 8));
+ BtlController_EmitChooseAction(BUFFER_A, gChosenActionByBattler[0], gBattleBufferB[0][1] | (gBattleBufferB[0][2] << 8));
MarkBattlerForControllerExec(gActiveBattler);
gBattleCommunication[gActiveBattler]++;
}
@@ -4128,7 +4182,7 @@ static void HandleTurnActionSelectionState(void)
i);
}
- BtlController_EmitChooseMove(0, (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) != 0, FALSE, &moveInfo);
+ BtlController_EmitChooseMove(BUFFER_A, (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) != 0, FALSE, &moveInfo);
MarkBattlerForControllerExec(gActiveBattler);
}
break;
@@ -4147,17 +4201,17 @@ static void HandleTurnActionSelectionState(void)
}
else
{
- BtlController_EmitChooseItem(0, gBattleStruct->field_60[gActiveBattler]);
+ BtlController_EmitChooseItem(BUFFER_A, gBattleStruct->battlerPartyOrders[gActiveBattler]);
MarkBattlerForControllerExec(gActiveBattler);
}
break;
case B_ACTION_SWITCH:
- *(gBattleStruct->field_58 + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
+ *(gBattleStruct->battlerPartyIndexes + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
if (gBattleMons[gActiveBattler].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION)
|| gBattleTypeFlags & BATTLE_TYPE_ARENA
|| gStatuses3[gActiveBattler] & STATUS3_ROOTED)
{
- BtlController_EmitChoosePokemon(0, PARTY_ACTION_CANT_SWITCH, PARTY_SIZE, ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
+ BtlController_EmitChoosePokemon(BUFFER_A, PARTY_ACTION_CANT_SWITCH, PARTY_SIZE, ABILITY_NONE, gBattleStruct->battlerPartyOrders[gActiveBattler]);
}
else if ((i = ABILITY_ON_OPPOSING_FIELD(gActiveBattler, ABILITY_SHADOW_TAG))
|| ((i = ABILITY_ON_OPPOSING_FIELD(gActiveBattler, ABILITY_ARENA_TRAP))
@@ -4166,16 +4220,16 @@ static void HandleTurnActionSelectionState(void)
|| ((i = AbilityBattleEffects(ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER, gActiveBattler, ABILITY_MAGNET_PULL, 0, 0))
&& IS_BATTLER_OF_TYPE(gActiveBattler, TYPE_STEEL)))
{
- BtlController_EmitChoosePokemon(0, ((i - 1) << 4) | PARTY_ACTION_ABILITY_PREVENTS, PARTY_SIZE, gLastUsedAbility, gBattleStruct->field_60[gActiveBattler]);
+ BtlController_EmitChoosePokemon(BUFFER_A, ((i - 1) << 4) | PARTY_ACTION_ABILITY_PREVENTS, PARTY_SIZE, gLastUsedAbility, gBattleStruct->battlerPartyOrders[gActiveBattler]);
}
else
{
if (gActiveBattler == 2 && gChosenActionByBattler[0] == B_ACTION_SWITCH)
- BtlController_EmitChoosePokemon(0, PARTY_ACTION_CHOOSE_MON, *(gBattleStruct->monToSwitchIntoId + 0), ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
+ BtlController_EmitChoosePokemon(BUFFER_A, PARTY_ACTION_CHOOSE_MON, *(gBattleStruct->monToSwitchIntoId + 0), ABILITY_NONE, gBattleStruct->battlerPartyOrders[gActiveBattler]);
else if (gActiveBattler == 3 && gChosenActionByBattler[1] == B_ACTION_SWITCH)
- BtlController_EmitChoosePokemon(0, PARTY_ACTION_CHOOSE_MON, *(gBattleStruct->monToSwitchIntoId + 1), ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
+ BtlController_EmitChoosePokemon(BUFFER_A, PARTY_ACTION_CHOOSE_MON, *(gBattleStruct->monToSwitchIntoId + 1), ABILITY_NONE, gBattleStruct->battlerPartyOrders[gActiveBattler]);
else
- BtlController_EmitChoosePokemon(0, PARTY_ACTION_CHOOSE_MON, PARTY_SIZE, ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
+ BtlController_EmitChoosePokemon(BUFFER_A, PARTY_ACTION_CHOOSE_MON, PARTY_SIZE, ABILITY_NONE, gBattleStruct->battlerPartyOrders[gActiveBattler]);
}
MarkBattlerForControllerExec(gActiveBattler);
break;
@@ -4190,7 +4244,7 @@ static void HandleTurnActionSelectionState(void)
}
break;
case B_ACTION_SAFARI_POKEBLOCK:
- BtlController_EmitChooseItem(0, gBattleStruct->field_60[gActiveBattler]);
+ BtlController_EmitChooseItem(BUFFER_A, gBattleStruct->battlerPartyOrders[gActiveBattler]);
MarkBattlerForControllerExec(gActiveBattler);
break;
case B_ACTION_CANCEL_PARTNER:
@@ -4200,7 +4254,7 @@ static void HandleTurnActionSelectionState(void)
if (gBattleMons[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)))].status2 & STATUS2_MULTIPLETURNS
|| gBattleMons[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)))].status2 & STATUS2_RECHARGE)
{
- BtlController_EmitEndBounceEffect(0);
+ BtlController_EmitEndBounceEffect(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
return;
}
@@ -4228,7 +4282,7 @@ static void HandleTurnActionSelectionState(void)
{
RecordedBattle_ClearBattlerAction(GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler))), 3);
}
- BtlController_EmitEndBounceEffect(0);
+ BtlController_EmitEndBounceEffect(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
return;
}
@@ -4284,10 +4338,10 @@ static void HandleTurnActionSelectionState(void)
return;
case 15:
gChosenActionByBattler[gActiveBattler] = B_ACTION_SWITCH;
- sub_803CDF8();
+ UpdateBattlerPartyOrdersOnSwitch();
return;
default:
- sub_818603C(2);
+ RecordedBattle_CheckMovesetChanges(B_RECORD_MODE_PLAYBACK);
if ((gBattleBufferB[gActiveBattler][2] | (gBattleBufferB[gActiveBattler][3] << 8)) == 0xFFFF)
{
gBattleCommunication[gActiveBattler] = STATE_BEFORE_ACTION_CHOSEN;
@@ -4336,7 +4390,7 @@ static void HandleTurnActionSelectionState(void)
}
else
{
- sub_803CDF8();
+ UpdateBattlerPartyOrdersOnSwitch();
gBattleCommunication[gActiveBattler]++;
}
break;
@@ -4352,13 +4406,9 @@ static void HandleTurnActionSelectionState(void)
break;
case B_ACTION_SAFARI_POKEBLOCK:
if ((gBattleBufferB[gActiveBattler][1] | (gBattleBufferB[gActiveBattler][2] << 8)) != 0)
- {
gBattleCommunication[gActiveBattler]++;
- }
else
- {
gBattleCommunication[gActiveBattler] = STATE_BEFORE_ACTION_CHOSEN;
- }
break;
case B_ACTION_SAFARI_GO_NEAR:
gBattleCommunication[gActiveBattler]++;
@@ -4385,15 +4435,15 @@ static void HandleTurnActionSelectionState(void)
else
i = FALSE;
- if (((gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_DOUBLE)) != BATTLE_TYPE_DOUBLE)
+ if (((gBattleTypeFlags & BATTLE_TYPE_MULTI) || !(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
|| (position & BIT_FLANK) != B_FLANK_LEFT
- || (*(&gBattleStruct->field_91) & gBitTable[GetBattlerAtPosition(position ^ BIT_FLANK)]))
+ || (*(&gBattleStruct->absentBattlerFlags) & gBitTable[GetBattlerAtPosition(position ^ BIT_FLANK)]))
{
- BtlController_EmitLinkStandbyMsg(0, 0, i);
+ BtlController_EmitLinkStandbyMsg(BUFFER_A, LINK_STANDBY_MSG_STOP_BOUNCE, i);
}
else
{
- BtlController_EmitLinkStandbyMsg(0, 1, i);
+ BtlController_EmitLinkStandbyMsg(BUFFER_A, LINK_STANDBY_STOP_BOUNCE_ONLY, i);
}
MarkBattlerForControllerExec(gActiveBattler);
gBattleCommunication[gActiveBattler]++;
@@ -4459,7 +4509,7 @@ static void HandleTurnActionSelectionState(void)
// Check if everyone chose actions.
if (gBattleCommunication[ACTIONS_CONFIRMED_COUNT] == gBattlersCount)
{
- sub_818603C(1);
+ RecordedBattle_CheckMovesetChanges(B_RECORD_MODE_RECORDING);
gBattleMainFunc = SetActionsAndBattlersTurnOrder;
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
@@ -4489,20 +4539,20 @@ static bool8 AllAtActionConfirmed(void)
return FALSE;
}
-static void sub_803CDF8(void)
+static void UpdateBattlerPartyOrdersOnSwitch(void)
{
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = gBattleBufferB[gActiveBattler][1];
RecordedBattle_SetBattlerAction(gActiveBattler, gBattleBufferB[gActiveBattler][1]);
if (gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- *(gActiveBattler * 3 + (u8*)(gBattleStruct->field_60) + 0) &= 0xF;
- *(gActiveBattler * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0);
- *(gActiveBattler * 3 + (u8*)(gBattleStruct->field_60) + 1) = gBattleBufferB[gActiveBattler][3];
+ *(gActiveBattler * 3 + (u8*)(gBattleStruct->battlerPartyOrders) + 0) &= 0xF;
+ *(gActiveBattler * 3 + (u8*)(gBattleStruct->battlerPartyOrders) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0);
+ *(gActiveBattler * 3 + (u8*)(gBattleStruct->battlerPartyOrders) + 1) = gBattleBufferB[gActiveBattler][3];
- *((gActiveBattler ^ BIT_FLANK) * 3 + (u8*)(gBattleStruct->field_60) + 0) &= (0xF0);
- *((gActiveBattler ^ BIT_FLANK) * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4;
- *((gActiveBattler ^ BIT_FLANK) * 3 + (u8*)(gBattleStruct->field_60) + 2) = gBattleBufferB[gActiveBattler][3];
+ *((gActiveBattler ^ BIT_FLANK) * 3 + (u8*)(gBattleStruct->battlerPartyOrders) + 0) &= (0xF0);
+ *((gActiveBattler ^ BIT_FLANK) * 3 + (u8*)(gBattleStruct->battlerPartyOrders) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4;
+ *((gActiveBattler ^ BIT_FLANK) * 3 + (u8*)(gBattleStruct->battlerPartyOrders) + 2) = gBattleBufferB[gActiveBattler][3];
}
}
@@ -4984,15 +5034,15 @@ static void HandleEndTurn_RanFromBattle(void)
}
else
{
- switch (gProtectStructs[gBattlerAttacker].fleeFlag)
+ switch (gProtectStructs[gBattlerAttacker].fleeType)
{
default:
gBattlescriptCurrInstr = BattleScript_GotAwaySafely;
break;
- case 1:
+ case FLEE_ITEM:
gBattlescriptCurrInstr = BattleScript_SmokeBallEscape;
break;
- case 2:
+ case FLEE_ABILITY:
gBattlescriptCurrInstr = BattleScript_RanAwayUsingMonAbility;
break;
}
@@ -5055,7 +5105,7 @@ static void HandleEndTurn_FinishBattle(void)
TryPutBreakingNewsOnAir();
}
- sub_8186444();
+ RecordedBattle_SetPlaybackFinished();
BeginFastPaletteFade(3);
FadeOutMapMusic(5);
gBattleMainFunc = FreeResetData_ReturnToOvOrDoEvolutions;
@@ -5142,7 +5192,7 @@ static void ReturnFromBattleToOverworld(void)
return;
gSpecialVar_Result = gBattleOutcome;
- gMain.inBattle = 0;
+ gMain.inBattle = FALSE;
gMain.callback1 = gPreBattleCallback1;
if (gBattleTypeFlags & BATTLE_TYPE_ROAMER)
diff --git a/src/battle_message.c b/src/battle_message.c
index 1f4bd893f..b69a171a1 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -1480,8 +1480,7 @@ static const u8 sDummyWeirdStatusString[] = {EOS, EOS, EOS, EOS, EOS, EOS, EOS,
static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
{
-// The corresponding WindowTemplate is gStandardBattleWindowTemplates[] within src/battle_bg.c
- { // 0 Standard battle message
+ [B_WIN_MSG] = {
.fillValue = PIXEL_FILL(0xF),
.fontId = 1,
.x = 0,
@@ -1489,11 +1488,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 1,
- .fgColor = 1,
- .bgColor = 15,
- .shadowColor = 6,
+ .fgColor = TEXT_COLOR_WHITE,
+ .bgColor = TEXT_DYNAMIC_COLOR_6,
+ .shadowColor = TEXT_COLOR_GREEN,
},
- { // 1 "What will (pokemon) do?"
+ [B_WIN_ACTION_PROMPT] = {
.fillValue = PIXEL_FILL(0xF),
.fontId = 1,
.x = 1,
@@ -1501,11 +1500,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 1,
- .bgColor = 15,
- .shadowColor = 6,
+ .fgColor = TEXT_COLOR_WHITE,
+ .bgColor = TEXT_DYNAMIC_COLOR_6,
+ .shadowColor = TEXT_COLOR_GREEN,
},
- { // 2 "Fight/Pokemon/Bag/Run"
+ [B_WIN_ACTION_MENU] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 0,
@@ -1513,11 +1512,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 3 Top left move
+ [B_WIN_MOVE_NAME_1] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
@@ -1525,11 +1524,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 4 Top right move
+ [B_WIN_MOVE_NAME_2] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
@@ -1537,11 +1536,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 5 Bottom left move
+ [B_WIN_MOVE_NAME_3] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
@@ -1549,11 +1548,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 6 Bottom right move
+ [B_WIN_MOVE_NAME_4] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
@@ -1561,11 +1560,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 7 "PP"
+ [B_WIN_PP] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
@@ -1573,11 +1572,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 12,
- .bgColor = 14,
- .shadowColor = 11,
+ .fgColor = TEXT_DYNAMIC_COLOR_3,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_2,
},
- { // 8
+ [B_WIN_DUMMY] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 0,
@@ -1585,11 +1584,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 9 PP remaining
+ [B_WIN_PP_REMAINING] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 2,
@@ -1597,11 +1596,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 12,
- .bgColor = 14,
- .shadowColor = 11,
+ .fgColor = TEXT_DYNAMIC_COLOR_3,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_2,
},
- { // 10 "type"
+ [B_WIN_MOVE_TYPE] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
@@ -1609,11 +1608,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 11 "switch which?"
+ [B_WIN_SWITCH_PROMPT] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
@@ -1621,11 +1620,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 12 "gText_BattleYesNoChoice"
+ [B_WIN_YESNO] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 0,
@@ -1633,11 +1632,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 13
+ [B_WIN_LEVEL_UP_BOX] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 0,
@@ -1645,11 +1644,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 14
+ [B_WIN_LEVEL_UP_BANNER] = {
.fillValue = PIXEL_FILL(0),
.fontId = 1,
.x = 32,
@@ -1657,11 +1656,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 1,
- .bgColor = 0,
- .shadowColor = 2,
+ .fgColor = TEXT_COLOR_WHITE,
+ .bgColor = TEXT_COLOR_TRANSPARENT,
+ .shadowColor = TEXT_COLOR_DARK_GRAY,
},
- { // 15
+ [B_WIN_VS_PLAYER] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
@@ -1669,11 +1668,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 16
+ [B_WIN_VS_OPPONENT] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
@@ -1681,11 +1680,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 17
+ [B_WIN_VS_MULTI_PLAYER_1] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
@@ -1693,11 +1692,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 18
+ [B_WIN_VS_MULTI_PLAYER_2] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
@@ -1705,11 +1704,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 19
+ [B_WIN_VS_MULTI_PLAYER_3] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
@@ -1717,11 +1716,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 20
+ [B_WIN_VS_MULTI_PLAYER_4] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
@@ -1729,11 +1728,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 21
+ [B_WIN_VS_OUTCOME_DRAW] = {
.fillValue = PIXEL_FILL(0),
.fontId = 1,
.x = -1,
@@ -1741,11 +1740,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 1,
- .bgColor = 0,
- .shadowColor = 6,
+ .fgColor = TEXT_COLOR_WHITE,
+ .bgColor = TEXT_COLOR_TRANSPARENT,
+ .shadowColor = TEXT_COLOR_GREEN,
},
- { // 22
+ [B_WIN_VS_OUTCOME_LEFT] = {
.fillValue = PIXEL_FILL(0),
.fontId = 1,
.x = -1,
@@ -1753,11 +1752,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 1,
- .bgColor = 0,
- .shadowColor = 6,
+ .fgColor = TEXT_COLOR_WHITE,
+ .bgColor = TEXT_COLOR_TRANSPARENT,
+ .shadowColor = TEXT_COLOR_GREEN,
},
- { // 23
+ [B_WIN_VS_OUTCOME_RIGHT] = {
.fillValue = PIXEL_FILL(0x0),
.fontId = 1,
.x = -1,
@@ -1765,15 +1764,15 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 1,
- .bgColor = 0,
- .shadowColor = 6,
+ .fgColor = TEXT_COLOR_WHITE,
+ .bgColor = TEXT_COLOR_TRANSPARENT,
+ .shadowColor = TEXT_COLOR_GREEN,
},
};
static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
{
- { // 0
+ [B_WIN_MSG] = {
.fillValue = PIXEL_FILL(0xF),
.fontId = 1,
.x = 0,
@@ -1781,11 +1780,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 1,
- .fgColor = 1,
- .bgColor = 15,
- .shadowColor = 6,
+ .fgColor = TEXT_COLOR_WHITE,
+ .bgColor = TEXT_DYNAMIC_COLOR_6,
+ .shadowColor = TEXT_COLOR_GREEN,
},
- { // 1
+ [B_WIN_ACTION_PROMPT] = {
.fillValue = PIXEL_FILL(0xF),
.fontId = 1,
.x = 1,
@@ -1793,11 +1792,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 1,
- .bgColor = 15,
- .shadowColor = 6,
+ .fgColor = TEXT_COLOR_WHITE,
+ .bgColor = TEXT_DYNAMIC_COLOR_6,
+ .shadowColor = TEXT_COLOR_GREEN,
},
- { // 2
+ [B_WIN_ACTION_MENU] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 0,
@@ -1805,11 +1804,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 3
+ [B_WIN_MOVE_NAME_1] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
@@ -1817,11 +1816,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 4
+ [B_WIN_MOVE_NAME_2] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
@@ -1829,11 +1828,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 5
+ [B_WIN_MOVE_NAME_3] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
@@ -1841,11 +1840,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 6
+ [B_WIN_MOVE_NAME_4] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
@@ -1853,11 +1852,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 7
+ [B_WIN_PP] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
@@ -1865,11 +1864,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 12,
- .bgColor = 14,
- .shadowColor = 11,
+ .fgColor = TEXT_DYNAMIC_COLOR_3,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_2,
},
- { // 8
+ [B_WIN_DUMMY] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 0,
@@ -1877,11 +1876,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 9
+ [B_WIN_PP_REMAINING] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 2,
@@ -1889,11 +1888,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 12,
- .bgColor = 14,
- .shadowColor = 11,
+ .fgColor = TEXT_DYNAMIC_COLOR_3,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_2,
},
- { // 10
+ [B_WIN_MOVE_TYPE] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
@@ -1901,11 +1900,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 11
+ [B_WIN_SWITCH_PROMPT] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 7,
.x = 0,
@@ -1913,11 +1912,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 12
+ [B_WIN_YESNO] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 0,
@@ -1925,11 +1924,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 13
+ [B_WIN_LEVEL_UP_BOX] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = 0,
@@ -1937,11 +1936,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 14
+ [B_WIN_LEVEL_UP_BANNER] = {
.fillValue = PIXEL_FILL(0),
.fontId = 1,
.x = 32,
@@ -1949,11 +1948,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 1,
- .bgColor = 0,
- .shadowColor = 2,
+ .fgColor = TEXT_COLOR_WHITE,
+ .bgColor = TEXT_COLOR_TRANSPARENT,
+ .shadowColor = TEXT_COLOR_DARK_GRAY,
},
- { // 15
+ [ARENA_WIN_PLAYER_NAME] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
@@ -1961,11 +1960,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 1,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_COLOR_WHITE,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 16
+ [ARENA_WIN_VS] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
@@ -1973,11 +1972,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 17
+ [ARENA_WIN_OPPONENT_NAME] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
@@ -1985,11 +1984,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 18
+ [ARENA_WIN_MIND] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
@@ -1997,11 +1996,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 19
+ [ARENA_WIN_SKILL] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
@@ -2009,11 +2008,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 20
+ [ARENA_WIN_BODY] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
@@ -2021,11 +2020,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 21
+ [ARENA_WIN_JUDGEMENT_TITLE] = {
.fillValue = PIXEL_FILL(0xE),
.fontId = 1,
.x = -1,
@@ -2033,11 +2032,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
- .fgColor = 13,
- .bgColor = 14,
- .shadowColor = 15,
+ .fgColor = TEXT_DYNAMIC_COLOR_4,
+ .bgColor = TEXT_DYNAMIC_COLOR_5,
+ .shadowColor = TEXT_DYNAMIC_COLOR_6,
},
- { // 22
+ [ARENA_WIN_JUDGEMENT_TEXT] = {
.fillValue = PIXEL_FILL(0x1),
.fontId = 1,
.x = 0,
@@ -2045,15 +2044,16 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 1,
- .fgColor = 2,
- .bgColor = 1,
- .shadowColor = 3,
+ .fgColor = TEXT_COLOR_DARK_GRAY,
+ .bgColor = TEXT_COLOR_WHITE,
+ .shadowColor = TEXT_COLOR_LIGHT_GRAY,
},
};
static const struct BattleWindowText *const sBattleTextOnWindowsInfo[] =
{
- sTextOnWindowsInfo_Normal, sTextOnWindowsInfo_Arena
+ [B_WIN_TYPE_NORMAL] = sTextOnWindowsInfo_Normal,
+ [B_WIN_TYPE_ARENA] = sTextOnWindowsInfo_Arena
};
static const u8 sRecordedBattleTextSpeeds[] = {8, 4, 1, 0};
@@ -3054,9 +3054,9 @@ void BattlePutTextOnWindow(const u8 *text, u8 windowId)
struct TextPrinterTemplate printerTemplate;
u8 speed;
- if (windowId & 0x80)
+ if (windowId & B_WIN_COPYTOVRAM)
{
- windowId &= ~(0x80);
+ windowId &= ~B_WIN_COPYTOVRAM;
copyToVram = FALSE;
}
else
@@ -3086,17 +3086,17 @@ void BattlePutTextOnWindow(const u8 *text, u8 windowId)
printerTemplate.x = printerTemplate.currentX = alignX;
}
- if (windowId == 0x16)
- gTextFlags.useAlternateDownArrow = 0;
+ if (windowId == ARENA_WIN_JUDGEMENT_TEXT)
+ gTextFlags.useAlternateDownArrow = FALSE;
else
- gTextFlags.useAlternateDownArrow = 1;
+ gTextFlags.useAlternateDownArrow = TRUE;
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED))
- gTextFlags.autoScroll = 1;
+ gTextFlags.autoScroll = TRUE;
else
- gTextFlags.autoScroll = 0;
+ gTextFlags.autoScroll = FALSE;
- if (windowId == 0 || windowId == 0x16)
+ if (windowId == B_WIN_MSG || windowId == ARENA_WIN_JUDGEMENT_TEXT)
{
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
speed = 1;
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 91f89137a..84854ebb8 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -1,25 +1,15 @@
#include "global.h"
#include "battle.h"
-#include "constants/battle_move_effects.h"
-#include "constants/battle_script_commands.h"
#include "battle_message.h"
#include "battle_anim.h"
#include "battle_ai_script_commands.h"
#include "battle_scripts.h"
-#include "constants/moves.h"
-#include "constants/abilities.h"
#include "item.h"
-#include "constants/items.h"
-#include "constants/hold_effects.h"
#include "util.h"
#include "pokemon.h"
#include "random.h"
#include "battle_controllers.h"
#include "battle_interface.h"
-#include "constants/songs.h"
-#include "constants/trainers.h"
-#include "constants/battle_anim.h"
-#include "constants/map_types.h"
#include "text.h"
#include "sound.h"
#include "pokedex.h"
@@ -38,7 +28,6 @@
#include "pokemon_storage_system.h"
#include "task.h"
#include "naming_screen.h"
-#include "constants/battle_string_ids.h"
#include "battle_setup.h"
#include "overworld.h"
#include "party_menu.h"
@@ -49,32 +38,43 @@
#include "pokemon_summary_screen.h"
#include "pokenav.h"
#include "menu_specialized.h"
-#include "constants/rgb.h"
#include "data.h"
+#include "constants/abilities.h"
+#include "constants/battle_anim.h"
+#include "constants/battle_move_effects.h"
+#include "constants/battle_string_ids.h"
+#include "constants/hold_effects.h"
+#include "constants/items.h"
+#include "constants/map_types.h"
+#include "constants/moves.h"
#include "constants/party_menu.h"
-
-extern struct MusicPlayerInfo gMPlayInfo_BGM;
+#include "constants/rgb.h"
+#include "constants/songs.h"
+#include "constants/trainers.h"
extern const u8* const gBattleScriptsForMoveEffects[];
#define DEFENDER_IS_PROTECTED ((gProtectStructs[gBattlerTarget].protected) && (gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED))
-// this file's functions
+#define LEVEL_UP_BANNER_START 416
+#define LEVEL_UP_BANNER_END 512
+
+#define TAG_LVLUP_BANNER_MON_ICON 55130
+
static bool8 IsTwoTurnsMove(u16 move);
static void TrySetDestinyBondToHappen(void);
static u8 AttacksThisTurn(u8 battlerId, u16 move); // Note: returns 1 if it's a charging turn, otherwise 2.
static void CheckWonderGuardAndLevitate(void);
static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8, const u8* BS_ptr);
static bool32 IsMonGettingExpSentOut(void);
-static void sub_804F17C(void);
-static bool8 sub_804F1CC(void);
+static void InitLevelUpBanner(void);
+static bool8 SlideInLevelUpBanner(void);
+static bool8 SlideOutLevelUpBanner(void);
static void DrawLevelUpWindow1(void);
static void DrawLevelUpWindow2(void);
-static bool8 sub_804F344(void);
-static void PutMonIconOnLvlUpBox(void);
-static void PutLevelAndGenderOnLvlUpBox(void);
-
-static void SpriteCB_MonIconOnLvlUpBox(struct Sprite* sprite);
+static void PutMonIconOnLvlUpBanner(void);
+static void DrawLevelUpBannerText(void);
+static void SpriteCB_MonIconOnLvlUpBanner(struct Sprite* sprite);
static void Cmd_attackcanceler(void);
static void Cmd_accuracycheck(void);
@@ -112,7 +112,7 @@ static void Cmd_jumpifstat(void);
static void Cmd_jumpifstatus3condition(void);
static void Cmd_jumpiftype(void);
static void Cmd_getexp(void);
-static void Cmd_unknown_24(void);
+static void Cmd_checkteamslost(void);
static void Cmd_movevaluescleanup(void);
static void Cmd_setmultihit(void);
static void Cmd_decrementmultihit(void);
@@ -146,7 +146,7 @@ static void Cmd_jumpiftype2(void);
static void Cmd_jumpifabilitypresent(void);
static void Cmd_endselectionscript(void);
static void Cmd_playanimation(void);
-static void Cmd_playanimation2(void);
+static void Cmd_playanimation_var(void);
static void Cmd_setgraphicalstatchangevalues(void);
static void Cmd_playstatchangeanimation(void);
static void Cmd_moveend(void);
@@ -170,7 +170,7 @@ static void Cmd_yesnoboxlearnmove(void);
static void Cmd_yesnoboxstoplearningmove(void);
static void Cmd_hitanimation(void);
static void Cmd_getmoneyreward(void);
-static void Cmd_unknown_5E(void);
+static void Cmd_updatebattlermoves(void);
static void Cmd_swapattackerwithtarget(void);
static void Cmd_incrementgamestat(void);
static void Cmd_drawpartystatussummary(void);
@@ -312,7 +312,7 @@ static void Cmd_settypebasedhalvers(void);
static void Cmd_setweatherballtype(void);
static void Cmd_tryrecycleitem(void);
static void Cmd_settypetoterrain(void);
-static void Cmd_pursuitrelated(void);
+static void Cmd_pursuitdoubles(void);
static void Cmd_snatchsetbattlers(void);
static void Cmd_removelightscreenreflect(void);
static void Cmd_handleballthrow(void);
@@ -364,7 +364,7 @@ void (* const gBattleScriptingCommandsTable[])(void) =
Cmd_jumpifstatus3condition, //0x21
Cmd_jumpiftype, //0x22
Cmd_getexp, //0x23
- Cmd_unknown_24, //0x24
+ Cmd_checkteamslost, //0x24
Cmd_movevaluescleanup, //0x25
Cmd_setmultihit, //0x26
Cmd_decrementmultihit, //0x27
@@ -398,7 +398,7 @@ void (* const gBattleScriptingCommandsTable[])(void) =
Cmd_jumpifabilitypresent, //0x43
Cmd_endselectionscript, //0x44
Cmd_playanimation, //0x45
- Cmd_playanimation2, //0x46
+ Cmd_playanimation_var, //0x46
Cmd_setgraphicalstatchangevalues, //0x47
Cmd_playstatchangeanimation, //0x48
Cmd_moveend, //0x49
@@ -422,7 +422,7 @@ void (* const gBattleScriptingCommandsTable[])(void) =
Cmd_yesnoboxstoplearningmove, //0x5B
Cmd_hitanimation, //0x5C
Cmd_getmoneyreward, //0x5D
- Cmd_unknown_5E, //0x5E
+ Cmd_updatebattlermoves, //0x5E
Cmd_swapattackerwithtarget, //0x5F
Cmd_incrementgamestat, //0x60
Cmd_drawpartystatussummary, //0x61
@@ -564,7 +564,7 @@ void (* const gBattleScriptingCommandsTable[])(void) =
Cmd_setweatherballtype, //0xE9
Cmd_tryrecycleitem, //0xEA
Cmd_settypetoterrain, //0xEB
- Cmd_pursuitrelated, //0xEC
+ Cmd_pursuitdoubles, //0xEC
Cmd_snatchsetbattlers, //0xED
Cmd_removelightscreenreflect, //0xEE
Cmd_handleballthrow, //0xEF
@@ -667,10 +667,18 @@ static const u8* const sMoveEffectBS_Ptrs[] =
[MOVE_EFFECT_RECOIL_33] = BattleScript_MoveEffectRecoil,
};
-static const struct WindowTemplate sUnusedWinTemplate = {0, 1, 3, 7, 0xF, 0x1F, 0x3F};
+static const struct WindowTemplate sUnusedWinTemplate = {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 3,
+ .width = 7,
+ .height = 15,
+ .paletteNum = 31,
+ .baseBlock = 0x3F
+};
-static const u16 sUnknown_0831C2C8[] = INCBIN_U16("graphics/battle_interface/unk_battlebox.gbapal");
-static const u32 sUnknown_0831C2E8[] = INCBIN_U32("graphics/battle_interface/unk_battlebox.4bpp.lz");
+static const u16 sLevelUpBanner_Pal[] = INCBIN_U16("graphics/battle_interface/level_up_banner.gbapal");
+static const u32 sLevelUpBanner_Gfx[] = INCBIN_U32("graphics/battle_interface/level_up_banner.4bpp.lz");
// unused
static const u8 sRubyLevelUpStatBoxStats[] =
@@ -679,9 +687,7 @@ static const u8 sRubyLevelUpStatBoxStats[] =
MON_DATA_SPDEF, MON_DATA_DEF, MON_DATA_SPEED
};
-#define MON_ICON_LVLUP_BOX_TAG 0xD75A
-
-static const struct OamData sOamData_MonIconOnLvlUpBox =
+static const struct OamData sOamData_MonIconOnLvlUpBanner =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -698,15 +704,15 @@ static const struct OamData sOamData_MonIconOnLvlUpBox =
.affineParam = 0,
};
-static const struct SpriteTemplate sSpriteTemplate_MonIconOnLvlUpBox =
+static const struct SpriteTemplate sSpriteTemplate_MonIconOnLvlUpBanner =
{
- .tileTag = MON_ICON_LVLUP_BOX_TAG,
- .paletteTag = MON_ICON_LVLUP_BOX_TAG,
- .oam = &sOamData_MonIconOnLvlUpBox,
+ .tileTag = TAG_LVLUP_BANNER_MON_ICON,
+ .paletteTag = TAG_LVLUP_BANNER_MON_ICON,
+ .oam = &sOamData_MonIconOnLvlUpBanner,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = SpriteCB_MonIconOnLvlUpBox
+ .callback = SpriteCB_MonIconOnLvlUpBanner
};
static const u16 sProtectSuccessRates[] = {USHRT_MAX, USHRT_MAX / 2, USHRT_MAX / 4, USHRT_MAX / 8};
@@ -1108,7 +1114,7 @@ static void Cmd_accuracycheck(void)
s8 buff;
u16 calc;
- if (move == 0)
+ if (move == ACC_CURR_MOVE)
move = gCurrentMove;
GET_MOVE_TYPE(move, type);
@@ -1228,11 +1234,12 @@ static void Cmd_ppreduce(void)
else
gBattleMons[gBattlerAttacker].pp[gCurrMovePos] = 0;
- if (!(gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED)
- && !((gDisableStructs[gBattlerAttacker].mimickedMoves) & gBitTable[gCurrMovePos]))
+ if (MOVE_IS_PERMANENT(gBattlerAttacker, gCurrMovePos))
{
gActiveBattler = gBattlerAttacker;
- BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + gCurrMovePos, 0, 1, &gBattleMons[gBattlerAttacker].pp[gCurrMovePos]);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_PPMOVE1_BATTLE + gCurrMovePos, 0,
+ sizeof(gBattleMons[gBattlerAttacker].pp[gCurrMovePos]),
+ &gBattleMons[gBattlerAttacker].pp[gCurrMovePos]);
MarkBattlerForControllerExec(gBattlerAttacker);
}
}
@@ -1769,7 +1776,7 @@ static void Cmd_attackanimation(void)
else
multihit = gMultiHitCounter;
- BtlController_EmitMoveAnimation(0, gCurrentMove, gBattleScripting.animTurn, gBattleMovePower, gBattleMoveDamage, gBattleMons[gBattlerAttacker].friendship, &gDisableStructs[gBattlerAttacker], multihit);
+ BtlController_EmitMoveAnimation(BUFFER_A, gCurrentMove, gBattleScripting.animTurn, gBattleMovePower, gBattleMoveDamage, gBattleMons[gBattlerAttacker].friendship, &gDisableStructs[gBattlerAttacker], multihit);
gBattleScripting.animTurn += 1;
gBattleScripting.animTargetsHit += 1;
MarkBattlerForControllerExec(gBattlerAttacker);
@@ -1814,7 +1821,7 @@ static void Cmd_healthbarupdate(void)
else
healthValue = maxPossibleDmgValue;
- BtlController_EmitHealthBarUpdate(0, healthValue);
+ BtlController_EmitHealthBarUpdate(BUFFER_A, healthValue);
MarkBattlerForControllerExec(gActiveBattler);
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER && gBattleMoveDamage > 0)
@@ -1834,8 +1841,8 @@ static void Cmd_datahpupdate(void)
if (gBattleStruct->dynamicMoveType == 0)
moveType = gBattleMoves[gCurrentMove].type;
- else if (!(gBattleStruct->dynamicMoveType & 0x40))
- moveType = gBattleStruct->dynamicMoveType & 0x3F;
+ else if (!(gBattleStruct->dynamicMoveType & F_DYNAMIC_TYPE_1))
+ moveType = gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK;
else
moveType = gBattleMoves[gCurrentMove].type;
@@ -1938,7 +1945,7 @@ static void Cmd_datahpupdate(void)
}
}
gHitMarker &= ~HITMARKER_PASSIVE_DAMAGE;
- BtlController_EmitSetMonData(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBattler].hp);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_HP_BATTLE, 0, sizeof(gBattleMons[gActiveBattler].hp), &gBattleMons[gActiveBattler].hp);
MarkBattlerForControllerExec(gActiveBattler);
}
}
@@ -1975,11 +1982,11 @@ static void Cmd_effectivenesssound(void)
switch (gMoveResultFlags & (u8)(~MOVE_RESULT_MISSED))
{
case MOVE_RESULT_SUPER_EFFECTIVE:
- BtlController_EmitPlaySE(0, SE_SUPER_EFFECTIVE);
+ BtlController_EmitPlaySE(BUFFER_A, SE_SUPER_EFFECTIVE);
MarkBattlerForControllerExec(gActiveBattler);
break;
case MOVE_RESULT_NOT_VERY_EFFECTIVE:
- BtlController_EmitPlaySE(0, SE_NOT_EFFECTIVE);
+ BtlController_EmitPlaySE(BUFFER_A, SE_NOT_EFFECTIVE);
MarkBattlerForControllerExec(gActiveBattler);
break;
case MOVE_RESULT_DOESNT_AFFECT_FOE:
@@ -1992,17 +1999,17 @@ static void Cmd_effectivenesssound(void)
default:
if (gMoveResultFlags & MOVE_RESULT_SUPER_EFFECTIVE)
{
- BtlController_EmitPlaySE(0, SE_SUPER_EFFECTIVE);
+ BtlController_EmitPlaySE(BUFFER_A, SE_SUPER_EFFECTIVE);
MarkBattlerForControllerExec(gActiveBattler);
}
else if (gMoveResultFlags & MOVE_RESULT_NOT_VERY_EFFECTIVE)
{
- BtlController_EmitPlaySE(0, SE_NOT_EFFECTIVE);
+ BtlController_EmitPlaySE(BUFFER_A, SE_NOT_EFFECTIVE);
MarkBattlerForControllerExec(gActiveBattler);
}
else if (!(gMoveResultFlags & (MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED)))
{
- BtlController_EmitPlaySE(0, SE_EFFECTIVE);
+ BtlController_EmitPlaySE(BUFFER_A, SE_EFFECTIVE);
MarkBattlerForControllerExec(gActiveBattler);
}
break;
@@ -2115,7 +2122,7 @@ static void Cmd_printselectionstring(void)
{
gActiveBattler = gBattlerAttacker;
- BtlController_EmitPrintSelectionString(0, T2_READ_16(gBattlescriptCurrInstr + 1));
+ BtlController_EmitPrintSelectionString(BUFFER_A, T2_READ_16(gBattlescriptCurrInstr + 1));
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 3;
@@ -2165,7 +2172,7 @@ static void Cmd_printselectionstringfromtable(void)
ptr += gBattleCommunication[MULTISTRING_CHOOSER];
gActiveBattler = gBattlerAttacker;
- BtlController_EmitPrintSelectionString(0, *ptr);
+ BtlController_EmitPrintSelectionString(BUFFER_A, *ptr);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 5;
@@ -2447,7 +2454,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
gActiveBattler = gEffectBattler;
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBattler].status1);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gEffectBattler].status1), &gBattleMons[gEffectBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
@@ -2750,11 +2757,11 @@ void SetMoveEffect(bool8 primary, u8 certain)
gBattleMons[gBattlerTarget].item = 0;
gActiveBattler = gBattlerAttacker;
- BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedItem);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gLastUsedItem), &gLastUsedItem);
MarkBattlerForControllerExec(gBattlerAttacker);
gActiveBattler = gBattlerTarget;
- BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBattlerTarget].item);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].item), &gBattleMons[gBattlerTarget].item);
MarkBattlerForControllerExec(gBattlerTarget);
BattleScriptPush(gBattlescriptCurrInstr + 1);
@@ -2793,7 +2800,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
gBattleMons[gBattlerTarget].status1 &= ~STATUS1_PARALYSIS;
gActiveBattler = gBattlerTarget;
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gActiveBattler].status1), &gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
BattleScriptPush(gBattlescriptCurrInstr + 1);
@@ -2971,13 +2978,13 @@ static void Cmd_tryfaintmon(void)
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
gHitMarker |= HITMARKER_PLAYER_FAINTED;
- if (gBattleResults.playerFaintCounter < 0xFF)
+ if (gBattleResults.playerFaintCounter < 255)
gBattleResults.playerFaintCounter++;
AdjustFriendshipOnBattleFaint(gActiveBattler);
}
else
{
- if (gBattleResults.opponentFaintCounter < 0xFF)
+ if (gBattleResults.opponentFaintCounter < 255)
gBattleResults.opponentFaintCounter++;
gBattleResults.lastOpponentSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES, NULL);
}
@@ -3000,7 +3007,7 @@ static void Cmd_tryfaintmon(void)
BattleScriptPush(gBattlescriptCurrInstr);
gBattlescriptCurrInstr = BattleScript_GrudgeTakesPp;
gActiveBattler = gBattlerAttacker;
- BtlController_EmitSetMonData(0, moveIndex + REQUEST_PPMOVE1_BATTLE, 0, 1, &gBattleMons[gActiveBattler].pp[moveIndex]);
+ BtlController_EmitSetMonData(BUFFER_A, moveIndex + REQUEST_PPMOVE1_BATTLE, 0, sizeof(gBattleMons[gActiveBattler].pp[moveIndex]), &gBattleMons[gActiveBattler].pp[moveIndex]);
MarkBattlerForControllerExec(gActiveBattler);
PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleMons[gBattlerAttacker].moves[moveIndex])
@@ -3018,7 +3025,7 @@ static void Cmd_dofaintanimation(void)
if (gBattleControllerExecFlags == 0)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- BtlController_EmitFaintAnimation(0);
+ BtlController_EmitFaintAnimation(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
@@ -3033,7 +3040,7 @@ static void Cmd_cleareffectsonfaint(void)
if (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || gBattleMons[gActiveBattler].hp == 0)
{
gBattleMons[gActiveBattler].status1 = 0;
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 0x4, &gBattleMons[gActiveBattler].status1);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gActiveBattler].status1), &gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
}
@@ -3175,23 +3182,23 @@ static void Cmd_jumpifstat(void)
static void Cmd_jumpifstatus3condition(void)
{
- u32 flags;
+ u32 status;
const u8 *jumpPtr;
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- flags = T2_READ_32(gBattlescriptCurrInstr + 2);
+ status = T2_READ_32(gBattlescriptCurrInstr + 2);
jumpPtr = T2_READ_PTR(gBattlescriptCurrInstr + 7);
if (gBattlescriptCurrInstr[6])
{
- if ((gStatuses3[gActiveBattler] & flags) != 0)
+ if ((gStatuses3[gActiveBattler] & status) != 0)
gBattlescriptCurrInstr += 11;
else
gBattlescriptCurrInstr = jumpPtr;
}
else
{
- if ((gStatuses3[gActiveBattler] & flags) != 0)
+ if ((gStatuses3[gActiveBattler] & status) != 0)
gBattlescriptCurrInstr = jumpPtr;
else
gBattlescriptCurrInstr += 11;
@@ -3399,7 +3406,7 @@ static void Cmd_getexp(void)
gBattleResources->beforeLvlUp->stats[STAT_SPDEF] = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPDEF);
gActiveBattler = gBattleStruct->expGetterBattlerId;
- BtlController_EmitExpUpdate(0, gBattleStruct->expGetterMonId, gBattleMoveDamage);
+ BtlController_EmitExpUpdate(BUFFER_A, gBattleStruct->expGetterMonId, gBattleMoveDamage);
MarkBattlerForControllerExec(gActiveBattler);
}
gBattleScripting.getexpState++;
@@ -3489,7 +3496,10 @@ static void Cmd_getexp(void)
}
}
-static void Cmd_unknown_24(void)
+// For battles that aren't BATTLE_TYPE_LINK or BATTLE_TYPE_RECORDED_LINK, the only thing this
+// command does is check whether the player has won/lost by totaling each team's HP. It then
+// sets gBattleOutcome accordingly, if necessary.
+static void Cmd_checkteamslost(void)
{
u16 HP_count = 0;
s32 i;
@@ -3497,8 +3507,10 @@ static void Cmd_unknown_24(void)
if (gBattleControllerExecFlags)
return;
+ // Get total HP for the player's party to determine if the player has lost
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gPartnerTrainerId == TRAINER_STEVEN_PARTNER)
{
+ // In multi battle with Steven, skip his Pokémon
for (i = 0; i < MULTI_PARTY_SIZE; i++)
{
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
@@ -3516,53 +3528,53 @@ static void Cmd_unknown_24(void)
}
}
}
-
if (HP_count == 0)
gBattleOutcome |= B_OUTCOME_LOST;
-
HP_count = 0;
+ // Get total HP for the enemy's party to determine if the player has won
for (i = 0; i < PARTY_SIZE; i++)
{
if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES) && !GetMonData(&gEnemyParty[i], MON_DATA_IS_EGG)
- && (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || !(gBattleStruct->arenaLostOpponentMons & gBitTable[i])))
+ && (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || !(gBattleStruct->arenaLostOpponentMons & gBitTable[i])))
{
HP_count += GetMonData(&gEnemyParty[i], MON_DATA_HP);
}
}
-
if (HP_count == 0)
gBattleOutcome |= B_OUTCOME_WON;
+ // For link battles that haven't ended, count number of empty battler spots
+ // In link multi battles, jump to pointer if more than 1 spot empty
+ // In non-multi battles, jump to pointer if 1 spot is missing on both sides
if (gBattleOutcome == 0 && (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK)))
{
- s32 foundPlayer = 0;
- s32 foundOpponent;
+ s32 emptyPlayerSpots = 0;
+ s32 emptyOpponentSpots;
for (i = 0; i < gBattlersCount; i += 2)
{
- if ((gHitMarker & HITMARKER_FAINTED2(i)) && (!gSpecialStatuses[i].flag40))
- foundPlayer++;
+ if ((gHitMarker & HITMARKER_FAINTED2(i)) && (!gSpecialStatuses[i].faintedHasReplacement))
+ emptyPlayerSpots++;
}
- foundOpponent = 0;
-
+ emptyOpponentSpots = 0;
for (i = 1; i < gBattlersCount; i += 2)
{
- if ((gHitMarker & HITMARKER_FAINTED2(i)) && (!gSpecialStatuses[i].flag40))
- foundOpponent++;
+ if ((gHitMarker & HITMARKER_FAINTED2(i)) && (!gSpecialStatuses[i].faintedHasReplacement))
+ emptyOpponentSpots++;
}
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- if (foundOpponent + foundPlayer > 1)
+ if (emptyOpponentSpots + emptyPlayerSpots > 1)
gBattlescriptCurrInstr = T2_READ_PTR(gBattlescriptCurrInstr + 1);
else
gBattlescriptCurrInstr += 5;
}
else
{
- if (foundOpponent != 0 && foundPlayer != 0)
+ if (emptyOpponentSpots != 0 && emptyPlayerSpots != 0)
gBattlescriptCurrInstr = T2_READ_PTR(gBattlescriptCurrInstr + 1);
else
gBattlescriptCurrInstr += 5;
@@ -3758,9 +3770,7 @@ static void Cmd_jumpifarraynotequal(void)
for (i = 0; i < size; i++)
{
if (*mem1 == *mem2)
- {
equalBytes++;
- }
mem1++, mem2++;
}
@@ -3800,9 +3810,7 @@ static void Cmd_copyarray(void)
s32 i;
for (i = 0; i < size; i++)
- {
dest[i] = src[i];
- }
gBattlescriptCurrInstr += 10;
}
@@ -3816,9 +3824,7 @@ static void Cmd_copyarraywithindex(void)
s32 i;
for (i = 0; i < size; i++)
- {
dest[i] = src[i + *index];
- }
gBattlescriptCurrInstr += 14;
}
@@ -3899,7 +3905,7 @@ static void Cmd_healthbar_update(void)
else
gActiveBattler = gBattlerAttacker;
- BtlController_EmitHealthBarUpdate(0, gBattleMoveDamage);
+ BtlController_EmitHealthBarUpdate(BUFFER_A, gBattleMoveDamage);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
@@ -3970,10 +3976,10 @@ static void Cmd_playanimation(void)
argumentPtr = T2_READ_PTR(gBattlescriptCurrInstr + 3);
if (gBattlescriptCurrInstr[2] == B_ANIM_STATS_CHANGE
- || gBattlescriptCurrInstr[2] == B_ANIM_SNATCH_MOVE
- || gBattlescriptCurrInstr[2] == B_ANIM_SUBSTITUTE_FADE)
+ || gBattlescriptCurrInstr[2] == B_ANIM_SNATCH_MOVE
+ || gBattlescriptCurrInstr[2] == B_ANIM_SUBSTITUTE_FADE)
{
- BtlController_EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr);
+ BtlController_EmitBattleAnimation(BUFFER_A, gBattlescriptCurrInstr[2], *argumentPtr);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 7;
}
@@ -3983,11 +3989,11 @@ static void Cmd_playanimation(void)
gBattlescriptCurrInstr = BattleScript_Pausex20;
}
else if (gBattlescriptCurrInstr[2] == B_ANIM_RAIN_CONTINUES
- || gBattlescriptCurrInstr[2] == B_ANIM_SUN_CONTINUES
- || gBattlescriptCurrInstr[2] == B_ANIM_SANDSTORM_CONTINUES
- || gBattlescriptCurrInstr[2] == B_ANIM_HAIL_CONTINUES)
+ || gBattlescriptCurrInstr[2] == B_ANIM_SUN_CONTINUES
+ || gBattlescriptCurrInstr[2] == B_ANIM_SANDSTORM_CONTINUES
+ || gBattlescriptCurrInstr[2] == B_ANIM_HAIL_CONTINUES)
{
- BtlController_EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr);
+ BtlController_EmitBattleAnimation(BUFFER_A, gBattlescriptCurrInstr[2], *argumentPtr);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 7;
}
@@ -3997,13 +4003,14 @@ static void Cmd_playanimation(void)
}
else
{
- BtlController_EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr);
+ BtlController_EmitBattleAnimation(BUFFER_A, gBattlescriptCurrInstr[2], *argumentPtr);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 7;
}
}
-static void Cmd_playanimation2(void) // animation Id is stored in the first pointer
+// Same as playanimation, expect it takes a pointer to some animation id, instead of taking the value directly
+static void Cmd_playanimation_var(void)
{
const u16* argumentPtr;
const u8* animationIdPtr;
@@ -4013,10 +4020,10 @@ static void Cmd_playanimation2(void) // animation Id is stored in the first poin
argumentPtr = T2_READ_PTR(gBattlescriptCurrInstr + 6);
if (*animationIdPtr == B_ANIM_STATS_CHANGE
- || *animationIdPtr == B_ANIM_SNATCH_MOVE
- || *animationIdPtr == B_ANIM_SUBSTITUTE_FADE)
+ || *animationIdPtr == B_ANIM_SNATCH_MOVE
+ || *animationIdPtr == B_ANIM_SUBSTITUTE_FADE)
{
- BtlController_EmitBattleAnimation(0, *animationIdPtr, *argumentPtr);
+ BtlController_EmitBattleAnimation(BUFFER_A, *animationIdPtr, *argumentPtr);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 10;
}
@@ -4025,11 +4032,11 @@ static void Cmd_playanimation2(void) // animation Id is stored in the first poin
gBattlescriptCurrInstr += 10;
}
else if (*animationIdPtr == B_ANIM_RAIN_CONTINUES
- || *animationIdPtr == B_ANIM_SUN_CONTINUES
- || *animationIdPtr == B_ANIM_SANDSTORM_CONTINUES
- || *animationIdPtr == B_ANIM_HAIL_CONTINUES)
+ || *animationIdPtr == B_ANIM_SUN_CONTINUES
+ || *animationIdPtr == B_ANIM_SANDSTORM_CONTINUES
+ || *animationIdPtr == B_ANIM_HAIL_CONTINUES)
{
- BtlController_EmitBattleAnimation(0, *animationIdPtr, *argumentPtr);
+ BtlController_EmitBattleAnimation(BUFFER_A, *animationIdPtr, *argumentPtr);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 10;
}
@@ -4039,7 +4046,7 @@ static void Cmd_playanimation2(void) // animation Id is stored in the first poin
}
else
{
- BtlController_EmitBattleAnimation(0, *animationIdPtr, *argumentPtr);
+ BtlController_EmitBattleAnimation(BUFFER_A, *animationIdPtr, *argumentPtr);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 10;
}
@@ -4155,7 +4162,7 @@ static void Cmd_playstatchangeanimation(void)
}
else if (changeableStatsCount != 0 && !gBattleScripting.statAnimPlayed)
{
- BtlController_EmitBattleAnimation(0, B_ANIM_STATS_CHANGE, statAnimId);
+ BtlController_EmitBattleAnimation(BUFFER_A, B_ANIM_STATS_CHANGE, statAnimId);
MarkBattlerForControllerExec(gActiveBattler);
if (gBattlescriptCurrInstr[3] & STAT_CHANGE_MULTIPLE_STATS && changeableStatsCount > 1)
gBattleScripting.statAnimPlayed = TRUE;
@@ -4174,7 +4181,7 @@ static void Cmd_moveend(void)
u8 moveType = 0;
u8 holdEffectAtk = 0;
u16 *choicedMoveAtk = NULL;
- u8 arg1, arg2;
+ u8 endMode, endState;
u16 originallyUsedMove;
if (gChosenMove == 0xFFFF)
@@ -4182,8 +4189,8 @@ static void Cmd_moveend(void)
else
originallyUsedMove = gChosenMove;
- arg1 = gBattlescriptCurrInstr[1];
- arg2 = gBattlescriptCurrInstr[2];
+ endMode = gBattlescriptCurrInstr[1];
+ endState = gBattlescriptCurrInstr[2];
if (gBattleMons[gBattlerAttacker].item == ITEM_ENIGMA_BERRY)
holdEffectAtk = gEnigmaBerries[gBattlerAttacker].holdEffect;
@@ -4219,7 +4226,7 @@ static void Cmd_moveend(void)
{
gBattleMons[gBattlerTarget].status1 &= ~STATUS1_FREEZE;
gActiveBattler = gBattlerTarget;
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBattlerTarget].status1);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1);
MarkBattlerForControllerExec(gActiveBattler);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_DefrostedViaFireMove;
@@ -4298,7 +4305,7 @@ static void Cmd_moveend(void)
&& gHitMarker & HITMARKER_NO_ANIMATIONS)
{
gActiveBattler = gBattlerAttacker;
- BtlController_EmitSpriteInvisibility(0, TRUE);
+ BtlController_EmitSpriteInvisibility(BUFFER_A, TRUE);
MarkBattlerForControllerExec(gActiveBattler);
gBattleScripting.moveendState++;
return;
@@ -4311,7 +4318,7 @@ static void Cmd_moveend(void)
|| WasUnableToUseMove(gBattlerAttacker))
{
gActiveBattler = gBattlerAttacker;
- BtlController_EmitSpriteInvisibility(0, FALSE);
+ BtlController_EmitSpriteInvisibility(BUFFER_A, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
gStatuses3[gBattlerAttacker] &= ~STATUS3_SEMI_INVULNERABLE;
gSpecialStatuses[gBattlerAttacker].restoredBattlerSprite = 1;
@@ -4325,7 +4332,7 @@ static void Cmd_moveend(void)
&& !(gStatuses3[gBattlerTarget] & STATUS3_SEMI_INVULNERABLE))
{
gActiveBattler = gBattlerTarget;
- BtlController_EmitSpriteInvisibility(0, FALSE);
+ BtlController_EmitSpriteInvisibility(BUFFER_A, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
gStatuses3[gBattlerTarget] &= ~STATUS3_SEMI_INVULNERABLE;
gBattleScripting.moveendState++;
@@ -4354,7 +4361,7 @@ static void Cmd_moveend(void)
gLastPrintedMoves[gBattlerAttacker] = gChosenMove;
}
if (!(gAbsentBattlerFlags & gBitTable[gBattlerAttacker])
- && !(gBattleStruct->field_91 & gBitTable[gBattlerAttacker])
+ && !(gBattleStruct->absentBattlerFlags & gBitTable[gBattlerAttacker])
&& gBattleMoves[originallyUsedMove].effect != EFFECT_BATON_PASS)
{
if (gHitMarker & HITMARKER_OBEYS)
@@ -4391,7 +4398,7 @@ static void Cmd_moveend(void)
gBattleScripting.moveendState++;
break;
case MOVEEND_MIRROR_MOVE: // mirror move
- if (!(gAbsentBattlerFlags & gBitTable[gBattlerAttacker]) && !(gBattleStruct->field_91 & gBitTable[gBattlerAttacker])
+ if (!(gAbsentBattlerFlags & gBitTable[gBattlerAttacker]) && !(gBattleStruct->absentBattlerFlags & gBitTable[gBattlerAttacker])
&& gBattleMoves[originallyUsedMove].flags & FLAG_MIRROR_MOVE_AFFECTED && gHitMarker & HITMARKER_OBEYS
&& gBattlerAttacker != gBattlerTarget && !(gHitMarker & HITMARKER_FAINTED(gBattlerTarget))
&& !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
@@ -4438,9 +4445,9 @@ static void Cmd_moveend(void)
break;
}
- if (arg1 == 1 && effect == FALSE)
+ if (endMode == 1 && effect == FALSE)
gBattleScripting.moveendState = MOVEEND_COUNT;
- if (arg1 == 2 && arg2 == gBattleScripting.moveendState)
+ if (endMode == 2 && endState == gBattleScripting.moveendState)
gBattleScripting.moveendState = MOVEEND_COUNT;
} while (gBattleScripting.moveendState != MOVEEND_COUNT && effect == FALSE);
@@ -4549,7 +4556,7 @@ static void Cmd_returnatktoball(void)
gActiveBattler = gBattlerAttacker;
if (!(gHitMarker & HITMARKER_FAINTED(gActiveBattler)))
{
- BtlController_EmitReturnMonToBall(0, 0);
+ BtlController_EmitReturnMonToBall(BUFFER_A, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
}
gBattlescriptCurrInstr++;
@@ -4564,7 +4571,7 @@ static void Cmd_getswitchedmondata(void)
gBattlerPartyIndexes[gActiveBattler] = *(gBattleStruct->monToSwitchIntoId + gActiveBattler);
- BtlController_EmitGetMonData(0, REQUEST_ALL_BATTLE, gBitTable[gBattlerPartyIndexes[gActiveBattler]]);
+ BtlController_EmitGetMonData(BUFFER_A, REQUEST_ALL_BATTLE, gBitTable[gBattlerPartyIndexes[gActiveBattler]]);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
@@ -4584,9 +4591,7 @@ static void Cmd_switchindataupdate(void)
monData = (u8*)(&gBattleMons[gActiveBattler]);
for (i = 0; i < sizeof(struct BattlePokemon); i++)
- {
monData[i] = gBattleBufferB[gActiveBattler][4 + i];
- }
gBattleMons[gActiveBattler].type1 = gBaseStats[gBattleMons[gActiveBattler].species].type1;
gBattleMons[gActiveBattler].type2 = gBaseStats[gBattleMons[gActiveBattler].species].type2;
@@ -4642,7 +4647,7 @@ static void Cmd_switchinanim(void)
gAbsentBattlerFlags &= ~(gBitTable[gActiveBattler]);
- BtlController_EmitSwitchInAnim(0, gBattlerPartyIndexes[gActiveBattler], gBattlescriptCurrInstr[2]);
+ BtlController_EmitSwitchInAnim(BUFFER_A, gBattlerPartyIndexes[gActiveBattler], gBattlescriptCurrInstr[2]);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 3;
@@ -4674,9 +4679,9 @@ static void Cmd_jumpifcantswitch(void)
lastMonId = 0;
if (gActiveBattler & 2)
- lastMonId = 3;
+ lastMonId = MULTI_PARTY_SIZE;
- for (i = lastMonId; i < lastMonId + 3; i++)
+ for (i = lastMonId; i < lastMonId + MULTI_PARTY_SIZE; i++)
{
if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE
&& !GetMonData(&party[i], MON_DATA_IS_EGG)
@@ -4685,7 +4690,7 @@ static void Cmd_jumpifcantswitch(void)
break;
}
- if (i == lastMonId + 3)
+ if (i == lastMonId + MULTI_PARTY_SIZE)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2);
else
gBattlescriptCurrInstr += 6;
@@ -4700,7 +4705,7 @@ static void Cmd_jumpifcantswitch(void)
lastMonId = 0;
if (GetLinkTrainerFlankId(GetBattlerMultiplayerId(gActiveBattler)) == TRUE)
- lastMonId = 3;
+ lastMonId = MULTI_PARTY_SIZE;
}
else
{
@@ -4709,7 +4714,7 @@ static void Cmd_jumpifcantswitch(void)
if (gActiveBattler == 1)
lastMonId = 0;
else
- lastMonId = 3;
+ lastMonId = MULTI_PARTY_SIZE;
}
}
else
@@ -4721,10 +4726,10 @@ static void Cmd_jumpifcantswitch(void)
lastMonId = 0;
if (GetLinkTrainerFlankId(GetBattlerMultiplayerId(gActiveBattler)) == TRUE)
- lastMonId = 3;
+ lastMonId = MULTI_PARTY_SIZE;
}
- for (i = lastMonId; i < lastMonId + 3; i++)
+ for (i = lastMonId; i < lastMonId + MULTI_PARTY_SIZE; i++)
{
if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE
&& !GetMonData(&party[i], MON_DATA_IS_EGG)
@@ -4733,7 +4738,7 @@ static void Cmd_jumpifcantswitch(void)
break;
}
- if (i == lastMonId + 3)
+ if (i == lastMonId + MULTI_PARTY_SIZE)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2);
else
gBattlescriptCurrInstr += 6;
@@ -4744,9 +4749,9 @@ static void Cmd_jumpifcantswitch(void)
lastMonId = 0;
if (gActiveBattler == B_POSITION_OPPONENT_RIGHT)
- lastMonId = 3;
+ lastMonId = PARTY_SIZE / 2;
- for (i = lastMonId; i < lastMonId + 3; i++)
+ for (i = lastMonId; i < lastMonId + (PARTY_SIZE / 2); i++)
{
if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE
&& !GetMonData(&party[i], MON_DATA_IS_EGG)
@@ -4755,7 +4760,7 @@ static void Cmd_jumpifcantswitch(void)
break;
}
- if (i == lastMonId + 3)
+ if (i == lastMonId + (PARTY_SIZE / 2))
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2);
else
gBattlescriptCurrInstr += 6;
@@ -4803,15 +4808,16 @@ static void Cmd_jumpifcantswitch(void)
}
}
-// Opens the party screen to choose a new Pokémon to send out
-// slotId is the Pokémon to replace
+// Opens the party screen to choose a new Pokémon to send out.
+// slotId is the Pokémon to replace.
+// Note that this is not used by the Switch action, only replacing fainted Pokémon or Baton Pass
static void ChooseMonToSendOut(u8 slotId)
{
- *(gBattleStruct->field_58 + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
+ *(gBattleStruct->battlerPartyIndexes + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
gBattleStruct->field_93 &= ~(gBitTable[gActiveBattler]);
- BtlController_EmitChoosePokemon(0, PARTY_ACTION_SEND_OUT, slotId, ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
+ BtlController_EmitChoosePokemon(BUFFER_A, PARTY_ACTION_SEND_OUT, slotId, ABILITY_NONE, gBattleStruct->battlerPartyOrders[gActiveBattler]);
MarkBattlerForControllerExec(gActiveBattler);
}
@@ -4826,9 +4832,9 @@ static void Cmd_openpartyscreen(void)
flags = 0;
jumpPtr = T1_READ_PTR(gBattlescriptCurrInstr + 2);
- if (gBattlescriptCurrInstr[1] == BS_UNK_5)
+ if (gBattlescriptCurrInstr[1] == BS_FAINTED_LINK_MULTIPLE_1)
{
- if ((gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI)) != BATTLE_TYPE_DOUBLE)
+ if ((gBattleTypeFlags & BATTLE_TYPE_MULTI) || !(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
{
for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
@@ -4838,46 +4844,46 @@ static void Cmd_openpartyscreen(void)
{
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
gHitMarker &= ~HITMARKER_FAINTED(gActiveBattler);
- BtlController_EmitLinkStandbyMsg(0, 2, FALSE);
+ BtlController_EmitLinkStandbyMsg(BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
}
- else if (!gSpecialStatuses[gActiveBattler].flag40)
+ else if (!gSpecialStatuses[gActiveBattler].faintedHasReplacement)
{
ChooseMonToSendOut(PARTY_SIZE);
- gSpecialStatuses[gActiveBattler].flag40 = 1;
+ gSpecialStatuses[gActiveBattler].faintedHasReplacement = TRUE;
}
}
else
{
- BtlController_EmitLinkStandbyMsg(0, 2, FALSE);
+ BtlController_EmitLinkStandbyMsg(BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
}
}
}
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
- u8 flag40_0, flag40_1, flag40_2, flag40_3;
+ bool8 hasReplacement_0, hasReplacement_1, hasReplacement_2, hasReplacement_3;
hitmarkerFaintBits = gHitMarker >> 28;
if (gBitTable[0] & hitmarkerFaintBits)
{
gActiveBattler = 0;
- if (HasNoMonsToSwitch(0, PARTY_SIZE, PARTY_SIZE))
+ if (HasNoMonsToSwitch(gActiveBattler, PARTY_SIZE, PARTY_SIZE))
{
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
gHitMarker &= ~HITMARKER_FAINTED(gActiveBattler);
- BtlController_EmitCantSwitch(0);
+ BtlController_EmitCantSwitch(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
}
- else if (!gSpecialStatuses[gActiveBattler].flag40)
+ else if (!gSpecialStatuses[gActiveBattler].faintedHasReplacement)
{
ChooseMonToSendOut(gBattleStruct->monToSwitchIntoId[2]);
- gSpecialStatuses[gActiveBattler].flag40 = 1;
+ gSpecialStatuses[gActiveBattler].faintedHasReplacement = TRUE;
}
else
{
- BtlController_EmitLinkStandbyMsg(0, 2, FALSE);
+ BtlController_EmitLinkStandbyMsg(BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
flags |= 1;
}
@@ -4885,42 +4891,42 @@ static void Cmd_openpartyscreen(void)
if (gBitTable[2] & hitmarkerFaintBits && !(gBitTable[0] & hitmarkerFaintBits))
{
gActiveBattler = 2;
- if (HasNoMonsToSwitch(2, PARTY_SIZE, PARTY_SIZE))
+ if (HasNoMonsToSwitch(gActiveBattler, PARTY_SIZE, PARTY_SIZE))
{
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
gHitMarker &= ~HITMARKER_FAINTED(gActiveBattler);
- BtlController_EmitCantSwitch(0);
+ BtlController_EmitCantSwitch(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
}
- else if (!gSpecialStatuses[gActiveBattler].flag40)
+ else if (!gSpecialStatuses[gActiveBattler].faintedHasReplacement)
{
ChooseMonToSendOut(gBattleStruct->monToSwitchIntoId[0]);
- gSpecialStatuses[gActiveBattler].flag40 = 1;
+ gSpecialStatuses[gActiveBattler].faintedHasReplacement = TRUE;
}
else if (!(flags & 1))
{
- BtlController_EmitLinkStandbyMsg(0, 2, FALSE);
+ BtlController_EmitLinkStandbyMsg(BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
}
}
if (gBitTable[1] & hitmarkerFaintBits)
{
gActiveBattler = 1;
- if (HasNoMonsToSwitch(1, PARTY_SIZE, PARTY_SIZE))
+ if (HasNoMonsToSwitch(gActiveBattler, PARTY_SIZE, PARTY_SIZE))
{
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
gHitMarker &= ~HITMARKER_FAINTED(gActiveBattler);
- BtlController_EmitCantSwitch(0);
+ BtlController_EmitCantSwitch(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
}
- else if (!gSpecialStatuses[gActiveBattler].flag40)
+ else if (!gSpecialStatuses[gActiveBattler].faintedHasReplacement)
{
ChooseMonToSendOut(gBattleStruct->monToSwitchIntoId[3]);
- gSpecialStatuses[gActiveBattler].flag40 = 1;
+ gSpecialStatuses[gActiveBattler].faintedHasReplacement = TRUE;
}
else
{
- BtlController_EmitLinkStandbyMsg(0, 2, FALSE);
+ BtlController_EmitLinkStandbyMsg(BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
flags |= 2;
}
@@ -4928,60 +4934,60 @@ static void Cmd_openpartyscreen(void)
if (gBitTable[3] & hitmarkerFaintBits && !(gBitTable[1] & hitmarkerFaintBits))
{
gActiveBattler = 3;
- if (HasNoMonsToSwitch(3, PARTY_SIZE, PARTY_SIZE))
+ if (HasNoMonsToSwitch(gActiveBattler, PARTY_SIZE, PARTY_SIZE))
{
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
gHitMarker &= ~HITMARKER_FAINTED(gActiveBattler);
- BtlController_EmitCantSwitch(0);
+ BtlController_EmitCantSwitch(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
}
- else if (!gSpecialStatuses[gActiveBattler].flag40)
+ else if (!gSpecialStatuses[gActiveBattler].faintedHasReplacement)
{
ChooseMonToSendOut(gBattleStruct->monToSwitchIntoId[1]);
- gSpecialStatuses[gActiveBattler].flag40 = 1;
+ gSpecialStatuses[gActiveBattler].faintedHasReplacement = TRUE;
}
else if (!(flags & 2))
{
- BtlController_EmitLinkStandbyMsg(0, 2, FALSE);
+ BtlController_EmitLinkStandbyMsg(BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
}
}
- flag40_0 = gSpecialStatuses[0].flag40;
- if (!flag40_0)
+ hasReplacement_0 = gSpecialStatuses[0].faintedHasReplacement;
+ if (!hasReplacement_0)
{
- flag40_2 = gSpecialStatuses[2].flag40;
- if (!flag40_2 && hitmarkerFaintBits != 0)
+ hasReplacement_2 = gSpecialStatuses[2].faintedHasReplacement;
+ if (!hasReplacement_2 && hitmarkerFaintBits != 0)
{
if (gAbsentBattlerFlags & gBitTable[0])
gActiveBattler = 2;
else
gActiveBattler = 0;
- BtlController_EmitLinkStandbyMsg(0, 2, FALSE);
+ BtlController_EmitLinkStandbyMsg(BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
}
}
- flag40_1 = gSpecialStatuses[1].flag40;
- if (!flag40_1)
+ hasReplacement_1 = gSpecialStatuses[1].faintedHasReplacement;
+ if (!hasReplacement_1)
{
- flag40_3 = gSpecialStatuses[3].flag40;
- if (!flag40_3 && hitmarkerFaintBits != 0)
+ hasReplacement_3 = gSpecialStatuses[3].faintedHasReplacement;
+ if (!hasReplacement_3 && hitmarkerFaintBits != 0)
{
if (gAbsentBattlerFlags & gBitTable[1])
gActiveBattler = 3;
else
gActiveBattler = 1;
- BtlController_EmitLinkStandbyMsg(0, 2, FALSE);
+ BtlController_EmitLinkStandbyMsg(BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
}
}
}
gBattlescriptCurrInstr += 6;
}
- else if (gBattlescriptCurrInstr[1] == BS_UNK_6)
+ else if (gBattlescriptCurrInstr[1] == BS_FAINTED_LINK_MULTIPLE_2)
{
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
@@ -4991,44 +4997,46 @@ static void Cmd_openpartyscreen(void)
if (gBitTable[2] & hitmarkerFaintBits && gBitTable[0] & hitmarkerFaintBits)
{
gActiveBattler = 2;
- if (HasNoMonsToSwitch(2, gBattleBufferB[0][1], PARTY_SIZE))
+ if (HasNoMonsToSwitch(gActiveBattler, gBattleBufferB[0][1], PARTY_SIZE))
{
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
gHitMarker &= ~HITMARKER_FAINTED(gActiveBattler);
- BtlController_EmitCantSwitch(0);
+ BtlController_EmitCantSwitch(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
}
- else if (!gSpecialStatuses[gActiveBattler].flag40)
+ else if (!gSpecialStatuses[gActiveBattler].faintedHasReplacement)
{
ChooseMonToSendOut(gBattleStruct->monToSwitchIntoId[0]);
- gSpecialStatuses[gActiveBattler].flag40 = 1;
+ gSpecialStatuses[gActiveBattler].faintedHasReplacement = TRUE;
}
}
if (gBitTable[3] & hitmarkerFaintBits && hitmarkerFaintBits & gBitTable[1])
{
gActiveBattler = 3;
- if (HasNoMonsToSwitch(3, gBattleBufferB[1][1], PARTY_SIZE))
+ if (HasNoMonsToSwitch(gActiveBattler, gBattleBufferB[1][1], PARTY_SIZE))
{
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
gHitMarker &= ~HITMARKER_FAINTED(gActiveBattler);
- BtlController_EmitCantSwitch(0);
+ BtlController_EmitCantSwitch(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
}
- else if (!gSpecialStatuses[gActiveBattler].flag40)
+ else if (!gSpecialStatuses[gActiveBattler].faintedHasReplacement)
{
ChooseMonToSendOut(gBattleStruct->monToSwitchIntoId[1]);
- gSpecialStatuses[gActiveBattler].flag40 = 1;
+ gSpecialStatuses[gActiveBattler].faintedHasReplacement = TRUE;
}
}
gBattlescriptCurrInstr += 6;
}
else
{
+ // Not multi or double battle
gBattlescriptCurrInstr += 6;
}
}
else
{
+ // Multi battle
gBattlescriptCurrInstr += 6;
}
@@ -5050,7 +5058,7 @@ static void Cmd_openpartyscreen(void)
hitmarkerFaintBits = PARTY_ACTION_SEND_OUT;
battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1] & ~PARTY_SCREEN_OPTIONAL);
- if (gSpecialStatuses[battlerId].flag40)
+ if (gSpecialStatuses[battlerId].faintedHasReplacement)
{
gBattlescriptCurrInstr += 6;
}
@@ -5064,16 +5072,16 @@ static void Cmd_openpartyscreen(void)
else
{
gActiveBattler = battlerId;
- *(gBattleStruct->field_58 + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
- *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = 6;
+ *(gBattleStruct->battlerPartyIndexes + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
+ *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
gBattleStruct->field_93 &= ~(gBitTable[gActiveBattler]);
- BtlController_EmitChoosePokemon(0, hitmarkerFaintBits, *(gBattleStruct->monToSwitchIntoId + (gActiveBattler ^ 2)), ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
+ BtlController_EmitChoosePokemon(BUFFER_A, hitmarkerFaintBits, *(gBattleStruct->monToSwitchIntoId + (gActiveBattler ^ 2)), ABILITY_NONE, gBattleStruct->battlerPartyOrders[gActiveBattler]);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 6;
- if (GetBattlerPosition(gActiveBattler) == 0 && gBattleResults.playerSwitchesCounter < 0xFF)
+ if (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_LEFT && gBattleResults.playerSwitchesCounter < 255)
gBattleResults.playerSwitchesCounter++;
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
@@ -5082,7 +5090,7 @@ static void Cmd_openpartyscreen(void)
{
if (gActiveBattler != battlerId)
{
- BtlController_EmitLinkStandbyMsg(0, 2, FALSE);
+ BtlController_EmitLinkStandbyMsg(BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
}
}
@@ -5093,7 +5101,7 @@ static void Cmd_openpartyscreen(void)
if (gAbsentBattlerFlags & gBitTable[gActiveBattler])
gActiveBattler ^= BIT_FLANK;
- BtlController_EmitLinkStandbyMsg(0, 2, FALSE);
+ BtlController_EmitLinkStandbyMsg(BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
}
}
@@ -5113,7 +5121,7 @@ static void Cmd_switchhandleorder(void)
case 0:
for (i = 0; i < gBattlersCount; i++)
{
- if (gBattleBufferB[i][0] == 0x22)
+ if (gBattleBufferB[i][0] == CONTROLLER_CHOSENMONRETURNVALUE)
{
*(gBattleStruct->monToSwitchIntoId + i) = gBattleBufferB[i][1];
if (!(gBattleStruct->field_93 & gBitTable[i]))
@@ -5141,13 +5149,13 @@ static void Cmd_switchhandleorder(void)
if (gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- *(gActiveBattler * 3 + (u8*)(gBattleStruct->field_60) + 0) &= 0xF;
- *(gActiveBattler * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0);
- *(gActiveBattler * 3 + (u8*)(gBattleStruct->field_60) + 1) = gBattleBufferB[gActiveBattler][3];
+ *(gActiveBattler * 3 + (u8*)(gBattleStruct->battlerPartyOrders) + 0) &= 0xF;
+ *(gActiveBattler * 3 + (u8*)(gBattleStruct->battlerPartyOrders) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0);
+ *(gActiveBattler * 3 + (u8*)(gBattleStruct->battlerPartyOrders) + 1) = gBattleBufferB[gActiveBattler][3];
- *((gActiveBattler ^ BIT_FLANK) * 3 + (u8*)(gBattleStruct->field_60) + 0) &= (0xF0);
- *((gActiveBattler ^ BIT_FLANK) * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4;
- *((gActiveBattler ^ BIT_FLANK) * 3 + (u8*)(gBattleStruct->field_60) + 2) = gBattleBufferB[gActiveBattler][3];
+ *((gActiveBattler ^ BIT_FLANK) * 3 + (u8*)(gBattleStruct->battlerPartyOrders) + 0) &= (0xF0);
+ *((gActiveBattler ^ BIT_FLANK) * 3 + (u8*)(gBattleStruct->battlerPartyOrders) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4;
+ *((gActiveBattler ^ BIT_FLANK) * 3 + (u8*)(gBattleStruct->battlerPartyOrders) + 2) = gBattleBufferB[gActiveBattler][3];
}
else if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
{
@@ -5175,7 +5183,7 @@ static void Cmd_switchineffects(void)
UpdateSentPokesToOpponentValue(gActiveBattler);
gHitMarker &= ~HITMARKER_FAINTED(gActiveBattler);
- gSpecialStatuses[gActiveBattler].flag40 = 0;
+ gSpecialStatuses[gActiveBattler].faintedHasReplacement = FALSE;
if (!(gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_SPIKES_DAMAGED)
&& (gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_SPIKES)
@@ -5230,7 +5238,7 @@ static void Cmd_switchineffects(void)
*hpOnSwitchout = gBattleMons[i].hp;
}
- if (gBattlescriptCurrInstr[1] == 5)
+ if (gBattlescriptCurrInstr[1] == BS_FAINTED_LINK_MULTIPLE_1)
{
u32 hitmarkerFaintBits = gHitMarker >> 28;
@@ -5252,7 +5260,7 @@ static void Cmd_switchineffects(void)
static void Cmd_trainerslidein(void)
{
gActiveBattler = GetBattlerAtPosition(gBattlescriptCurrInstr[1]);
- BtlController_EmitTrainerSlide(0);
+ BtlController_EmitTrainerSlide(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
@@ -5261,7 +5269,7 @@ static void Cmd_trainerslidein(void)
static void Cmd_playse(void)
{
gActiveBattler = gBattlerAttacker;
- BtlController_EmitPlaySE(0, T2_READ_16(gBattlescriptCurrInstr + 1));
+ BtlController_EmitPlaySE(BUFFER_A, T2_READ_16(gBattlescriptCurrInstr + 1));
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 3;
@@ -5270,7 +5278,7 @@ static void Cmd_playse(void)
static void Cmd_fanfare(void)
{
gActiveBattler = gBattlerAttacker;
- BtlController_EmitPlayFanfareOrBGM(0, T2_READ_16(gBattlescriptCurrInstr + 1), FALSE);
+ BtlController_EmitPlayFanfareOrBGM(BUFFER_A, T2_READ_16(gBattlescriptCurrInstr + 1), FALSE);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 3;
@@ -5279,7 +5287,7 @@ static void Cmd_fanfare(void)
static void Cmd_playfaintcry(void)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- BtlController_EmitFaintingCry(0);
+ BtlController_EmitFaintingCry(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
@@ -5288,7 +5296,7 @@ static void Cmd_playfaintcry(void)
static void Cmd_endlinkbattle(void)
{
gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
- BtlController_EmitEndLinkBattle(0, gBattleOutcome);
+ BtlController_EmitEndLinkBattle(BUFFER_A, gBattleOutcome);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 1;
@@ -5297,7 +5305,7 @@ static void Cmd_endlinkbattle(void)
static void Cmd_returntoball(void)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- BtlController_EmitReturnMonToBall(0, 1);
+ BtlController_EmitReturnMonToBall(BUFFER_A, TRUE);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
@@ -5305,16 +5313,16 @@ static void Cmd_returntoball(void)
static void Cmd_handlelearnnewmove(void)
{
- const u8 *jumpPtr1 = T1_READ_PTR(gBattlescriptCurrInstr + 1);
- const u8 *jumpPtr2 = T1_READ_PTR(gBattlescriptCurrInstr + 5);
+ const u8 *learnedMovePtr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
+ const u8 *nothingToLearnPtr = T1_READ_PTR(gBattlescriptCurrInstr + 5);
u16 learnMove = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], gBattlescriptCurrInstr[9]);
while (learnMove == MON_ALREADY_KNOWS_MOVE)
learnMove = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], FALSE);
- if (learnMove == 0)
+ if (learnMove == MOVE_NONE)
{
- gBattlescriptCurrInstr = jumpPtr2;
+ gBattlescriptCurrInstr = nothingToLearnPtr;
}
else if (learnMove == MON_HAS_MAX_MOVES)
{
@@ -5339,7 +5347,7 @@ static void Cmd_handlelearnnewmove(void)
}
}
- gBattlescriptCurrInstr = jumpPtr1;
+ gBattlescriptCurrInstr = learnedMovePtr;
}
}
@@ -5350,8 +5358,8 @@ static void Cmd_yesnoboxlearnmove(void)
switch (gBattleScripting.learnMoveState)
{
case 0:
- HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0);
- BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xC);
+ HandleBattleWindow(24, 8, 29, 13, 0);
+ BattlePutTextOnWindow(gText_BattleYesNoChoice, B_WIN_YESNO);
gBattleScripting.learnMoveState++;
gBattleCommunication[CURSOR_POSITION] = 0;
BattleCreateYesNoCursorAt(0);
@@ -5376,8 +5384,8 @@ static void Cmd_yesnoboxlearnmove(void)
PlaySE(SE_SELECT);
if (gBattleCommunication[1] == 0)
{
- HandleBattleWindow(0x18, 0x8, 0x1D, 0xD, WINDOW_CLEAR);
- BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK);
+ HandleBattleWindow(24, 8, 29, 13, WINDOW_CLEAR);
+ BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
gBattleScripting.learnMoveState++;
}
else
@@ -5430,17 +5438,14 @@ static void Cmd_yesnoboxlearnmove(void)
RemoveMonPPBonus(&gPlayerParty[gBattleStruct->expGetterMonId], movePosition);
SetMonMoveSlot(&gPlayerParty[gBattleStruct->expGetterMonId], gMoveToLearn, movePosition);
- if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId
- && !(gBattleMons[0].status2 & STATUS2_TRANSFORMED)
- && !(gDisableStructs[0].mimickedMoves & gBitTable[movePosition]))
+ if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId && MOVE_IS_PERMANENT(0, movePosition))
{
RemoveBattleMonPPBonus(&gBattleMons[0], movePosition);
SetBattleMonMoveSlot(&gBattleMons[0], gMoveToLearn, movePosition);
}
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
&& gBattlerPartyIndexes[2] == gBattleStruct->expGetterMonId
- && !(gBattleMons[2].status2 & STATUS2_TRANSFORMED)
- && !(gDisableStructs[2].mimickedMoves & gBitTable[movePosition]))
+ && MOVE_IS_PERMANENT(2, movePosition))
{
RemoveBattleMonPPBonus(&gBattleMons[2], movePosition);
SetBattleMonMoveSlot(&gBattleMons[2], gMoveToLearn, movePosition);
@@ -5450,7 +5455,7 @@ static void Cmd_yesnoboxlearnmove(void)
}
break;
case 5:
- HandleBattleWindow(0x18, 8, 0x1D, 0xD, WINDOW_CLEAR);
+ HandleBattleWindow(24, 8, 29, 13, WINDOW_CLEAR);
gBattlescriptCurrInstr += 5;
break;
case 6:
@@ -5467,8 +5472,8 @@ static void Cmd_yesnoboxstoplearningmove(void)
switch (gBattleScripting.learnMoveState)
{
case 0:
- HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0);
- BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xC);
+ HandleBattleWindow(24, 8, 29, 13, 0);
+ BattlePutTextOnWindow(gText_BattleYesNoChoice, B_WIN_YESNO);
gBattleScripting.learnMoveState++;
gBattleCommunication[CURSOR_POSITION] = 0;
BattleCreateYesNoCursorAt(0);
@@ -5497,13 +5502,13 @@ static void Cmd_yesnoboxstoplearningmove(void)
else
gBattlescriptCurrInstr += 5;
- HandleBattleWindow(0x18, 0x8, 0x1D, 0xD, WINDOW_CLEAR);
+ HandleBattleWindow(24, 8, 29, 13, WINDOW_CLEAR);
}
else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
- HandleBattleWindow(0x18, 0x8, 0x1D, 0xD, WINDOW_CLEAR);
+ HandleBattleWindow(24, 8, 29, 13, WINDOW_CLEAR);
}
break;
}
@@ -5519,7 +5524,7 @@ static void Cmd_hitanimation(void)
}
else if (!(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE) || !(gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE) || gDisableStructs[gActiveBattler].substituteHP == 0)
{
- BtlController_EmitHitAnimation(0);
+ BtlController_EmitHitAnimation(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
@@ -5598,14 +5603,15 @@ static void Cmd_getmoneyreward(void)
gBattlescriptCurrInstr++;
}
-static void Cmd_unknown_5E(void)
+// Command is never used
+static void Cmd_updatebattlermoves(void)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
switch (gBattleCommunication[0])
{
case 0:
- BtlController_EmitGetMonData(0, REQUEST_ALL_BATTLE, 0);
+ BtlController_EmitGetMonData(BUFFER_A, REQUEST_ALL_BATTLE, 0);
MarkBattlerForControllerExec(gActiveBattler);
gBattleCommunication[0]++;
break;
@@ -5678,7 +5684,7 @@ static void Cmd_drawpartystatussummary(void)
}
}
- BtlController_EmitDrawPartyStatusSummary(0, hpStatuses, 1);
+ BtlController_EmitDrawPartyStatusSummary(BUFFER_A, hpStatuses, 1);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
@@ -5687,7 +5693,7 @@ static void Cmd_drawpartystatussummary(void)
static void Cmd_hidepartystatussummary(void)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- BtlController_EmitHidePartyStatusSummary(0);
+ BtlController_EmitHidePartyStatusSummary(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
@@ -5712,7 +5718,7 @@ static void Cmd_statusanimation(void)
&& gDisableStructs[gActiveBattler].substituteHP == 0
&& !(gHitMarker & HITMARKER_NO_ANIMATIONS))
{
- BtlController_EmitStatusAnimation(0, FALSE, gBattleMons[gActiveBattler].status1);
+ BtlController_EmitStatusAnimation(BUFFER_A, FALSE, gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
}
gBattlescriptCurrInstr += 2;
@@ -5731,7 +5737,7 @@ static void Cmd_status2animation(void)
&& gDisableStructs[gActiveBattler].substituteHP == 0
&& !(gHitMarker & HITMARKER_NO_ANIMATIONS))
{
- BtlController_EmitStatusAnimation(0, TRUE, gBattleMons[gActiveBattler].status2 & wantedToAnimate);
+ BtlController_EmitStatusAnimation(BUFFER_A, TRUE, gBattleMons[gActiveBattler].status2 & wantedToAnimate);
MarkBattlerForControllerExec(gActiveBattler);
}
gBattlescriptCurrInstr += 6;
@@ -5750,7 +5756,7 @@ static void Cmd_chosenstatusanimation(void)
&& gDisableStructs[gActiveBattler].substituteHP == 0
&& !(gHitMarker & HITMARKER_NO_ANIMATIONS))
{
- BtlController_EmitStatusAnimation(0, gBattlescriptCurrInstr[2], wantedStatus);
+ BtlController_EmitStatusAnimation(BUFFER_A, gBattlescriptCurrInstr[2], wantedStatus);
MarkBattlerForControllerExec(gActiveBattler);
}
gBattlescriptCurrInstr += 7;
@@ -5762,8 +5768,8 @@ static void Cmd_yesnobox(void)
switch (gBattleCommunication[0])
{
case 0:
- HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0);
- BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xC);
+ HandleBattleWindow(24, 8, 29, 13, 0);
+ BattlePutTextOnWindow(gText_BattleYesNoChoice, B_WIN_YESNO);
gBattleCommunication[0]++;
gBattleCommunication[CURSOR_POSITION] = 0;
BattleCreateYesNoCursorAt(0);
@@ -5787,13 +5793,13 @@ static void Cmd_yesnobox(void)
{
gBattleCommunication[CURSOR_POSITION] = 1;
PlaySE(SE_SELECT);
- HandleBattleWindow(0x18, 8, 0x1D, 0xD, WINDOW_CLEAR);
+ HandleBattleWindow(24, 8, 29, 13, WINDOW_CLEAR);
gBattlescriptCurrInstr++;
}
else if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
- HandleBattleWindow(0x18, 8, 0x1D, 0xD, WINDOW_CLEAR);
+ HandleBattleWindow(24, 8, 29, 13, WINDOW_CLEAR);
gBattlescriptCurrInstr++;
}
break;
@@ -5860,7 +5866,7 @@ static void Cmd_removeitem(void)
*usedHeldItem = gBattleMons[gActiveBattler].item;
gBattleMons[gActiveBattler].item = 0;
- BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBattler].item);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gActiveBattler].item), &gBattleMons[gActiveBattler].item);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
@@ -5877,6 +5883,9 @@ static void Cmd_drawlvlupbox(void)
{
if (gBattleScripting.drawlvlupboxState == 0)
{
+ // If the Pokémon getting exp is not in-battle then
+ // slide out a banner with their name and icon on it.
+ // Otherwise skip ahead.
if (IsMonGettingExpSentOut())
gBattleScripting.drawlvlupboxState = 3;
else
@@ -5886,34 +5895,38 @@ static void Cmd_drawlvlupbox(void)
switch (gBattleScripting.drawlvlupboxState)
{
case 1:
- gBattle_BG2_Y = 0x60;
+ // Start level up banner
+ gBattle_BG2_Y = 96;
SetBgAttribute(2, BG_ATTR_PRIORITY, 0);
ShowBg(2);
- sub_804F17C();
+ InitLevelUpBanner();
gBattleScripting.drawlvlupboxState = 2;
break;
case 2:
- if (!sub_804F1CC())
+ if (!SlideInLevelUpBanner())
gBattleScripting.drawlvlupboxState = 3;
break;
case 3:
+ // Init level up box
gBattle_BG1_X = 0;
- gBattle_BG1_Y = 0x100;
+ gBattle_BG1_Y = 256;
SetBgAttribute(0, BG_ATTR_PRIORITY, 1);
SetBgAttribute(1, BG_ATTR_PRIORITY, 0);
ShowBg(0);
ShowBg(1);
- HandleBattleWindow(0x12, 7, 0x1D, 0x13, WINDOW_x80);
+ HandleBattleWindow(18, 7, 29, 19, WINDOW_BG1);
gBattleScripting.drawlvlupboxState = 4;
break;
case 4:
+ // Draw page 1 of level up box
DrawLevelUpWindow1();
- PutWindowTilemap(13);
- CopyWindowToVram(13, 3);
+ PutWindowTilemap(B_WIN_LEVEL_UP_BOX);
+ CopyWindowToVram(B_WIN_LEVEL_UP_BOX, 3);
gBattleScripting.drawlvlupboxState++;
break;
case 5:
case 7:
+ // Wait for draw after each page
if (!IsDma3ManagerBusyWithBgCopy())
{
gBattle_BG1_Y = 0;
@@ -5923,28 +5936,30 @@ static void Cmd_drawlvlupbox(void)
case 6:
if (gMain.newKeys != 0)
{
+ // Draw page 2 of level up box
PlaySE(SE_SELECT);
DrawLevelUpWindow2();
- CopyWindowToVram(13, 2);
+ CopyWindowToVram(B_WIN_LEVEL_UP_BOX, 2);
gBattleScripting.drawlvlupboxState++;
}
break;
case 8:
if (gMain.newKeys != 0)
{
+ // Close level up box
PlaySE(SE_SELECT);
- HandleBattleWindow(0x12, 7, 0x1D, 0x13, WINDOW_x80 | WINDOW_CLEAR);
+ HandleBattleWindow(18, 7, 29, 19, WINDOW_BG1 | WINDOW_CLEAR);
gBattleScripting.drawlvlupboxState++;
}
break;
case 9:
- if (!sub_804F344())
+ if (!SlideOutLevelUpBanner())
{
- ClearWindowTilemap(14);
- CopyWindowToVram(14, 1);
+ ClearWindowTilemap(B_WIN_LEVEL_UP_BANNER);
+ CopyWindowToVram(B_WIN_LEVEL_UP_BANNER, 1);
- ClearWindowTilemap(13);
- CopyWindowToVram(13, 1);
+ ClearWindowTilemap(B_WIN_LEVEL_UP_BOX);
+ CopyWindowToVram(B_WIN_LEVEL_UP_BOX, 1);
SetBgAttribute(2, BG_ATTR_PRIORITY, 2);
ShowBg(2);
@@ -5970,7 +5985,7 @@ static void DrawLevelUpWindow1(void)
u16 currStats[NUM_STATS];
GetMonLevelUpWindowStats(&gPlayerParty[gBattleStruct->expGetterMonId], currStats);
- DrawLevelUpWindowPg1(0xD, gBattleResources->beforeLvlUp->stats, currStats, TEXT_DYNAMIC_COLOR_5, TEXT_DYNAMIC_COLOR_4, TEXT_DYNAMIC_COLOR_6);
+ DrawLevelUpWindowPg1(B_WIN_LEVEL_UP_BOX, gBattleResources->beforeLvlUp->stats, currStats, TEXT_DYNAMIC_COLOR_5, TEXT_DYNAMIC_COLOR_4, TEXT_DYNAMIC_COLOR_6);
}
static void DrawLevelUpWindow2(void)
@@ -5978,41 +5993,41 @@ static void DrawLevelUpWindow2(void)
u16 currStats[NUM_STATS];
GetMonLevelUpWindowStats(&gPlayerParty[gBattleStruct->expGetterMonId], currStats);
- DrawLevelUpWindowPg2(0xD, currStats, TEXT_DYNAMIC_COLOR_5, TEXT_DYNAMIC_COLOR_4, TEXT_DYNAMIC_COLOR_6);
+ DrawLevelUpWindowPg2(B_WIN_LEVEL_UP_BOX, currStats, TEXT_DYNAMIC_COLOR_5, TEXT_DYNAMIC_COLOR_4, TEXT_DYNAMIC_COLOR_6);
}
-static void sub_804F17C(void)
+static void InitLevelUpBanner(void)
{
gBattle_BG2_Y = 0;
- gBattle_BG2_X = 0x1A0;
+ gBattle_BG2_X = LEVEL_UP_BANNER_START;
- LoadPalette(sUnknown_0831C2C8, 0x60, 0x20);
- CopyToWindowPixelBuffer(14, sUnknown_0831C2E8, 0, 0);
- PutWindowTilemap(14);
- CopyWindowToVram(14, 3);
+ LoadPalette(sLevelUpBanner_Pal, 0x60, 0x20);
+ CopyToWindowPixelBuffer(B_WIN_LEVEL_UP_BANNER, sLevelUpBanner_Gfx, 0, 0);
+ PutWindowTilemap(B_WIN_LEVEL_UP_BANNER);
+ CopyWindowToVram(B_WIN_LEVEL_UP_BANNER, 3);
- PutMonIconOnLvlUpBox();
+ PutMonIconOnLvlUpBanner();
}
-static bool8 sub_804F1CC(void)
+static bool8 SlideInLevelUpBanner(void)
{
if (IsDma3ManagerBusyWithBgCopy())
return TRUE;
- if (gBattle_BG2_X == 0x200)
+ if (gBattle_BG2_X == LEVEL_UP_BANNER_END)
return FALSE;
- if (gBattle_BG2_X == 0x1A0)
- PutLevelAndGenderOnLvlUpBox();
+ if (gBattle_BG2_X == LEVEL_UP_BANNER_START)
+ DrawLevelUpBannerText();
gBattle_BG2_X += 8;
- if (gBattle_BG2_X >= 0x200)
- gBattle_BG2_X = 0x200;
+ if (gBattle_BG2_X >= LEVEL_UP_BANNER_END)
+ gBattle_BG2_X = LEVEL_UP_BANNER_END;
- return (gBattle_BG2_X != 0x200);
+ return (gBattle_BG2_X != LEVEL_UP_BANNER_END);
}
-static void PutLevelAndGenderOnLvlUpBox(void)
+static void DrawLevelUpBannerText(void)
{
u16 monLevel;
u8 monGender;
@@ -6025,7 +6040,7 @@ static void PutLevelAndGenderOnLvlUpBox(void)
GetMonNickname(&gPlayerParty[gBattleStruct->expGetterMonId], gStringVar4);
printerTemplate.currentChar = gStringVar4;
- printerTemplate.windowId = 14;
+ printerTemplate.windowId = B_WIN_LEVEL_UP_BANNER;
printerTemplate.fontId = 0;
printerTemplate.x = 32;
printerTemplate.y = 0;
@@ -6038,7 +6053,7 @@ static void PutLevelAndGenderOnLvlUpBox(void)
printerTemplate.bgColor = TEXT_COLOR_TRANSPARENT;
printerTemplate.shadowColor = TEXT_COLOR_DARK_GRAY;
- AddTextPrinter(&printerTemplate, 0xFF, NULL);
+ AddTextPrinter(&printerTemplate, TEXT_SPEED_FF, NULL);
txtPtr = gStringVar4;
*(txtPtr)++ = CHAR_EXTRA_SYMBOL;
@@ -6053,14 +6068,14 @@ static void PutLevelAndGenderOnLvlUpBox(void)
{
if (monGender == MON_MALE)
{
- txtPtr = WriteColorChangeControlCode(txtPtr, 0, 0xC);
- txtPtr = WriteColorChangeControlCode(txtPtr, 1, 0xD);
+ txtPtr = WriteColorChangeControlCode(txtPtr, 0, TEXT_DYNAMIC_COLOR_3);
+ txtPtr = WriteColorChangeControlCode(txtPtr, 1, TEXT_DYNAMIC_COLOR_4);
*(txtPtr++) = CHAR_MALE;
}
else
{
- txtPtr = WriteColorChangeControlCode(txtPtr, 0, 0xE);
- txtPtr = WriteColorChangeControlCode(txtPtr, 1, 0xF);
+ txtPtr = WriteColorChangeControlCode(txtPtr, 0, TEXT_DYNAMIC_COLOR_5);
+ txtPtr = WriteColorChangeControlCode(txtPtr, 1, TEXT_DYNAMIC_COLOR_6);
*(txtPtr++) = CHAR_FEMALE;
}
*(txtPtr++) = EOS;
@@ -6068,28 +6083,28 @@ static void PutLevelAndGenderOnLvlUpBox(void)
printerTemplate.y = 10;
printerTemplate.currentY = 10;
- AddTextPrinter(&printerTemplate, 0xFF, NULL);
+ AddTextPrinter(&printerTemplate, TEXT_SPEED_FF, NULL);
- CopyWindowToVram(14, 2);
+ CopyWindowToVram(B_WIN_LEVEL_UP_BANNER, 2);
}
-static bool8 sub_804F344(void)
+static bool8 SlideOutLevelUpBanner(void)
{
- if (gBattle_BG2_X == 0x1A0)
+ if (gBattle_BG2_X == LEVEL_UP_BANNER_START)
return FALSE;
- if (gBattle_BG2_X - 16 < 0x1A0)
- gBattle_BG2_X = 0x1A0;
+ if (gBattle_BG2_X - 16 < LEVEL_UP_BANNER_START)
+ gBattle_BG2_X = LEVEL_UP_BANNER_START;
else
gBattle_BG2_X -= 16;
- return (gBattle_BG2_X != 0x1A0);
+ return (gBattle_BG2_X != LEVEL_UP_BANNER_START);
}
-#define sDestroy data[0]
-#define sSavedLvlUpBoxXPosition data[1]
+#define sDestroy data[0]
+#define sXOffset data[1]
-static void PutMonIconOnLvlUpBox(void)
+static void PutMonIconOnLvlUpBanner(void)
{
u8 spriteId;
const u16* iconPal;
@@ -6102,23 +6117,23 @@ static void PutMonIconOnLvlUpBox(void)
const u8* iconPtr = GetMonIconPtr(species, personality, 1);
iconSheet.data = iconPtr;
iconSheet.size = 0x200;
- iconSheet.tag = MON_ICON_LVLUP_BOX_TAG;
+ iconSheet.tag = TAG_LVLUP_BANNER_MON_ICON;
iconPal = GetValidMonIconPalettePtr(species);
iconPalSheet.data = iconPal;
- iconPalSheet.tag = MON_ICON_LVLUP_BOX_TAG;
+ iconPalSheet.tag = TAG_LVLUP_BANNER_MON_ICON;
LoadSpriteSheet(&iconSheet);
LoadSpritePalette(&iconPalSheet);
- spriteId = CreateSprite(&sSpriteTemplate_MonIconOnLvlUpBox, 256, 10, 0);
+ spriteId = CreateSprite(&sSpriteTemplate_MonIconOnLvlUpBanner, 256, 10, 0);
gSprites[spriteId].sDestroy = FALSE;
- gSprites[spriteId].sSavedLvlUpBoxXPosition = gBattle_BG2_X;
+ gSprites[spriteId].sXOffset = gBattle_BG2_X;
}
-static void SpriteCB_MonIconOnLvlUpBox(struct Sprite* sprite)
+static void SpriteCB_MonIconOnLvlUpBanner(struct Sprite* sprite)
{
- sprite->x2 = sprite->sSavedLvlUpBoxXPosition - gBattle_BG2_X;
+ sprite->x2 = sprite->sXOffset - gBattle_BG2_X;
if (sprite->x2 != 0)
{
@@ -6127,13 +6142,13 @@ static void SpriteCB_MonIconOnLvlUpBox(struct Sprite* sprite)
else if (sprite->sDestroy)
{
DestroySprite(sprite);
- FreeSpriteTilesByTag(MON_ICON_LVLUP_BOX_TAG);
- FreeSpritePaletteByTag(MON_ICON_LVLUP_BOX_TAG);
+ FreeSpriteTilesByTag(TAG_LVLUP_BANNER_MON_ICON);
+ FreeSpritePaletteByTag(TAG_LVLUP_BANNER_MON_ICON);
}
}
#undef sDestroy
-#undef sSavedLvlUpBoxXPosition
+#undef sXOffset
static bool32 IsMonGettingExpSentOut(void)
{
@@ -6160,7 +6175,7 @@ static void Cmd_setatktoplayer0(void)
static void Cmd_makevisible(void)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- BtlController_EmitSpriteInvisibility(0, FALSE);
+ BtlController_EmitSpriteInvisibility(BUFFER_A, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
@@ -6282,7 +6297,7 @@ static void Cmd_various(void)
gBattleCommunication[0] = IsRunningFromBattleImpossible();
break;
case VARIOUS_GET_MOVE_TARGET:
- gBattlerTarget = GetMoveTarget(gCurrentMove, 0);
+ gBattlerTarget = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE);
break;
case VARIOUS_GET_BATTLER_FAINTED:
if (gHitMarker & HITMARKER_FAINTED(gActiveBattler))
@@ -6371,7 +6386,7 @@ static void Cmd_various(void)
gDisableStructs[1].truantSwitchInHack = 1;
break;
case VARIOUS_EMIT_YESNOBOX:
- BtlController_EmitYesNoBox(0);
+ BtlController_EmitYesNoBox(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
break;
case VARIOUS_DRAW_ARENA_REF_TEXT_BOX:
@@ -6382,10 +6397,10 @@ static void Cmd_various(void)
break;
case VARIOUS_ARENA_JUDGMENT_STRING:
BattleStringExpandPlaceholdersToDisplayedString(gRefereeStringsTable[gBattlescriptCurrInstr[1]]);
- BattlePutTextOnWindow(gDisplayedStringBattle, 22);
+ BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TEXT);
break;
case VARIOUS_ARENA_WAIT_STRING:
- if (IsTextPrinterActive(22))
+ if (IsTextPrinterActive(ARENA_WIN_JUDGEMENT_TEXT))
return;
break;
case VARIOUS_WAIT_CRY:
@@ -6396,7 +6411,7 @@ static void Cmd_various(void)
gActiveBattler = 1;
if (gBattleMons[gActiveBattler].hp != 0)
{
- BtlController_EmitReturnMonToBall(0, 0);
+ BtlController_EmitReturnMonToBall(BUFFER_A, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
}
break;
@@ -6406,7 +6421,7 @@ static void Cmd_various(void)
gActiveBattler = 3;
if (gBattleMons[gActiveBattler].hp != 0)
{
- BtlController_EmitReturnMonToBall(0, 0);
+ BtlController_EmitReturnMonToBall(BUFFER_A, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
}
}
@@ -6431,7 +6446,7 @@ static void Cmd_various(void)
gBattleOutcome = B_OUTCOME_MON_TELEPORTED;
break;
case VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC:
- BtlController_EmitPlayFanfareOrBGM(0, MUS_VICTORY_TRAINER, TRUE);
+ BtlController_EmitPlayFanfareOrBGM(BUFFER_A, MUS_VICTORY_TRAINER, TRUE);
MarkBattlerForControllerExec(gActiveBattler);
break;
}
@@ -6489,7 +6504,7 @@ static void Cmd_faintifabilitynotdamp(void)
{
gActiveBattler = gBattlerAttacker;
gBattleMoveDamage = gBattleMons[gActiveBattler].hp;
- BtlController_EmitHealthBarUpdate(0, INSTANT_HP_BAR_DROP);
+ BtlController_EmitHealthBarUpdate(BUFFER_A, INSTANT_HP_BAR_DROP);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr++;
@@ -6516,7 +6531,7 @@ static void Cmd_setatkhptozero(void)
gActiveBattler = gBattlerAttacker;
gBattleMons[gActiveBattler].hp = 0;
- BtlController_EmitSetMonData(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBattler].hp);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_HP_BATTLE, 0, sizeof(gBattleMons[gActiveBattler].hp), &gBattleMons[gActiveBattler].hp);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr++;
@@ -6597,7 +6612,7 @@ static void Cmd_trymirrormove(void)
{
gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED;
gCurrentMove = move;
- gBattlerTarget = GetMoveTarget(gCurrentMove, 0);
+ gBattlerTarget = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE);
gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect];
}
else if (validMovesCount)
@@ -6605,7 +6620,7 @@ static void Cmd_trymirrormove(void)
gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED;
i = Random() % validMovesCount;
gCurrentMove = movesArray[i];
- gBattlerTarget = GetMoveTarget(gCurrentMove, 0);
+ gBattlerTarget = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE);
gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect];
}
else
@@ -6714,7 +6729,7 @@ static void Cmd_trysetrest(void)
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_REST;
gBattleMons[gBattlerTarget].status1 = STATUS1_SLEEP_TURN(3);
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gActiveBattler].status1), &gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 5;
}
@@ -7108,7 +7123,7 @@ static bool8 TryDoForceSwitchOut(void)
{
if (gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level)
{
- *(gBattleStruct->field_58 + gBattlerTarget) = gBattlerPartyIndexes[gBattlerTarget];
+ *(gBattleStruct->battlerPartyIndexes + gBattlerTarget) = gBattlerPartyIndexes[gBattlerTarget];
}
else
{
@@ -7118,7 +7133,7 @@ static bool8 TryDoForceSwitchOut(void)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
return FALSE;
}
- *(gBattleStruct->field_58 + gBattlerTarget) = gBattlerPartyIndexes[gBattlerTarget];
+ *(gBattleStruct->battlerPartyIndexes + gBattlerTarget) = gBattlerPartyIndexes[gBattlerTarget];
}
gBattlescriptCurrInstr = BattleScript_SuccessForceOut;
@@ -7600,7 +7615,7 @@ static void Cmd_updatestatusicon(void)
if (gBattlescriptCurrInstr[1] != BS_ATTACKER_WITH_PARTNER)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- BtlController_EmitStatusIconUpdate(0, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2);
+ BtlController_EmitStatusIconUpdate(BUFFER_A, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
@@ -7609,7 +7624,7 @@ static void Cmd_updatestatusicon(void)
gActiveBattler = gBattlerAttacker;
if (!(gAbsentBattlerFlags & gBitTable[gActiveBattler]))
{
- BtlController_EmitStatusIconUpdate(0, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2);
+ BtlController_EmitStatusIconUpdate(BUFFER_A, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2);
MarkBattlerForControllerExec(gActiveBattler);
}
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
@@ -7617,7 +7632,7 @@ static void Cmd_updatestatusicon(void)
gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK);
if (!(gAbsentBattlerFlags & gBitTable[gActiveBattler]))
{
- BtlController_EmitStatusIconUpdate(0, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2);
+ BtlController_EmitStatusIconUpdate(BUFFER_A, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2);
MarkBattlerForControllerExec(gActiveBattler);
}
}
@@ -7695,7 +7710,7 @@ static void Cmd_transformdataexecution(void)
}
gActiveBattler = gBattlerAttacker;
- BtlController_EmitResetActionMoveSelection(0, RESET_MOVE_SELECTION);
+ BtlController_EmitResetActionMoveSelection(BUFFER_A, RESET_MOVE_SELECTION);
MarkBattlerForControllerExec(gActiveBattler);
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TRANSFORMED;
}
@@ -7805,7 +7820,7 @@ static void Cmd_metronome(void)
{
gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED;
gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect];
- gBattlerTarget = GetMoveTarget(gCurrentMove, 0);
+ gBattlerTarget = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE);
return;
}
}
@@ -7821,7 +7836,7 @@ static void Cmd_psywavedamageeffect(void)
{
s32 randDamage;
- while ((randDamage = (Random() & 0xF)) > 10);
+ while ((randDamage = Random() % 16) > 10);
randDamage *= 10;
gBattleMoveDamage = gBattleMons[gBattlerAttacker].level * (randDamage + 50) / 100;
@@ -7959,8 +7974,8 @@ static void Cmd_painsplitdmgcalc(void)
static void Cmd_settypetorandomresistance(void) // conversion 2
{
- if (gLastLandedMoves[gBattlerAttacker] == 0
- || gLastLandedMoves[gBattlerAttacker] == 0xFFFF)
+ if (gLastLandedMoves[gBattlerAttacker] == MOVE_NONE
+ || gLastLandedMoves[gBattlerAttacker] == 0xFFFF)
{
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
}
@@ -7975,7 +7990,7 @@ static void Cmd_settypetorandomresistance(void) // conversion 2
for (rands = 0; rands < 1000; rands++)
{
- while (((i = (Random() & 0x7F)) > sizeof(gTypeEffectiveness) / 3));
+ while (((i = Random() % 128) > sizeof(gTypeEffectiveness) / 3));
i *= 3;
@@ -8064,7 +8079,7 @@ static void Cmd_copymovepermanently(void) // sketch
}
movePpData.ppBonuses = gBattleMons[gBattlerAttacker].ppBonuses;
- BtlController_EmitSetMonData(0, REQUEST_MOVES_PP_BATTLE, 0, sizeof(struct MovePpInfo), &movePpData);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_MOVES_PP_BATTLE, 0, sizeof(movePpData), &movePpData);
MarkBattlerForControllerExec(gActiveBattler);
PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastPrintedMoves[gBattlerTarget])
@@ -8138,7 +8153,7 @@ static void Cmd_trychoosesleeptalkmove(void)
}
unusableMovesBits = CheckMoveLimitations(gBattlerAttacker, unusableMovesBits, ~MOVE_LIMITATION_PP);
- if (unusableMovesBits == 0xF) // all 4 moves cannot be chosen
+ if (unusableMovesBits == (1 << MAX_MON_MOVES) - 1) // all 4 moves cannot be chosen
{
gBattlescriptCurrInstr += 5;
}
@@ -8154,7 +8169,7 @@ static void Cmd_trychoosesleeptalkmove(void)
gCalledMove = gBattleMons[gBattlerAttacker].moves[movePosition];
gCurrMovePos = movePosition;
gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED;
- gBattlerTarget = GetMoveTarget(gCalledMove, 0);
+ gBattlerTarget = GetMoveTarget(gCalledMove, NO_TARGET_OVERRIDE);
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
}
}
@@ -8226,10 +8241,11 @@ static void Cmd_tryspiteppreduce(void)
gBattleMons[gBattlerTarget].pp[i] -= ppToDeduct;
gActiveBattler = gBattlerTarget;
+ // if (MOVE_IS_PERMANENT(gActiveBattler, i)), but backwards
if (!(gDisableStructs[gActiveBattler].mimickedMoves & gBitTable[i])
&& !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED))
{
- BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBattler].pp[i]);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_PPMOVE1_BATTLE + i, 0, sizeof(gBattleMons[gActiveBattler].pp[i]), &gBattleMons[gActiveBattler].pp[i]);
MarkBattlerForControllerExec(gActiveBattler);
}
@@ -8322,7 +8338,7 @@ static void Cmd_healpartystatus(void)
else // Aromatherapy
{
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SOOTHING_AROMA;
- toHeal = 0x3F;
+ toHeal = (1 << PARTY_SIZE) - 1;
gBattleMons[gBattlerAttacker].status1 = 0;
gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_NIGHTMARE;
@@ -8340,7 +8356,7 @@ static void Cmd_healpartystatus(void)
if (toHeal)
{
gActiveBattler = gBattlerAttacker;
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, toHeal, 4, &zero);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, toHeal, sizeof(zero), &zero);
MarkBattlerForControllerExec(gActiveBattler);
}
@@ -8758,29 +8774,28 @@ static void Cmd_recoverbasedonsunlight(void)
static void Cmd_hiddenpowercalc(void)
{
- u8 powerBits;
- u8 typeBits;
-
- powerBits = ((gBattleMons[gBattlerAttacker].hpIV & 2) >> 1)
- | ((gBattleMons[gBattlerAttacker].attackIV & 2) << 0)
- | ((gBattleMons[gBattlerAttacker].defenseIV & 2) << 1)
- | ((gBattleMons[gBattlerAttacker].speedIV & 2) << 2)
- | ((gBattleMons[gBattlerAttacker].spAttackIV & 2) << 3)
- | ((gBattleMons[gBattlerAttacker].spDefenseIV & 2) << 4);
+ u8 powerBits = ((gBattleMons[gBattlerAttacker].hpIV & 2) >> 1)
+ | ((gBattleMons[gBattlerAttacker].attackIV & 2) << 0)
+ | ((gBattleMons[gBattlerAttacker].defenseIV & 2) << 1)
+ | ((gBattleMons[gBattlerAttacker].speedIV & 2) << 2)
+ | ((gBattleMons[gBattlerAttacker].spAttackIV & 2) << 3)
+ | ((gBattleMons[gBattlerAttacker].spDefenseIV & 2) << 4);
- typeBits = ((gBattleMons[gBattlerAttacker].hpIV & 1) << 0)
- | ((gBattleMons[gBattlerAttacker].attackIV & 1) << 1)
- | ((gBattleMons[gBattlerAttacker].defenseIV & 1) << 2)
- | ((gBattleMons[gBattlerAttacker].speedIV & 1) << 3)
- | ((gBattleMons[gBattlerAttacker].spAttackIV & 1) << 4)
- | ((gBattleMons[gBattlerAttacker].spDefenseIV & 1) << 5);
+ u8 typeBits = ((gBattleMons[gBattlerAttacker].hpIV & 1) << 0)
+ | ((gBattleMons[gBattlerAttacker].attackIV & 1) << 1)
+ | ((gBattleMons[gBattlerAttacker].defenseIV & 1) << 2)
+ | ((gBattleMons[gBattlerAttacker].speedIV & 1) << 3)
+ | ((gBattleMons[gBattlerAttacker].spAttackIV & 1) << 4)
+ | ((gBattleMons[gBattlerAttacker].spDefenseIV & 1) << 5);
gDynamicBasePower = (40 * powerBits) / 63 + 30;
- gBattleStruct->dynamicMoveType = (15 * typeBits) / 63 + 1;
+ // Subtract 3 instead of 1 below because 2 types are excluded (TYPE_NORMAL and TYPE_MYSTERY)
+ // The final + 1 skips past Normal, and the following conditional skips TYPE_MYSTERY
+ gBattleStruct->dynamicMoveType = ((NUMBER_OF_MON_TYPES - 3) * typeBits) / 63 + 1;
if (gBattleStruct->dynamicMoveType >= TYPE_MYSTERY)
gBattleStruct->dynamicMoveType++;
- gBattleStruct->dynamicMoveType |= 0xC0;
+ gBattleStruct->dynamicMoveType |= F_DYNAMIC_TYPE_1 | F_DYNAMIC_TYPE_2;
gBattlescriptCurrInstr++;
}
@@ -8947,7 +8962,7 @@ static void Cmd_jumpifattackandspecialattackcannotfall(void) // memento
{
gActiveBattler = gBattlerAttacker;
gBattleMoveDamage = gBattleMons[gActiveBattler].hp;
- BtlController_EmitHealthBarUpdate(0, INSTANT_HP_BAR_DROP);
+ BtlController_EmitHealthBarUpdate(BUFFER_A, INSTANT_HP_BAR_DROP);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 5;
}
@@ -8972,7 +8987,7 @@ static void Cmd_callterrainattack(void) // nature power
{
gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED;
gCurrentMove = sNaturePowerMoves[gBattleTerrain];
- gBattlerTarget = GetMoveTarget(gCurrentMove, 0);
+ gBattlerTarget = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE);
BattleScriptPush(gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]);
gBattlescriptCurrInstr++;
}
@@ -8984,7 +8999,7 @@ static void Cmd_cureifburnedparalysedorpoisoned(void) // refresh
gBattleMons[gBattlerAttacker].status1 = 0;
gBattlescriptCurrInstr += 5;
gActiveBattler = gBattlerAttacker;
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gActiveBattler].status1), &gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
}
else
@@ -9101,15 +9116,15 @@ static void Cmd_tryswapitems(void) // trick
oldItemAtk = gBattleMons[gBattlerAttacker].item;
*newItemAtk = gBattleMons[gBattlerTarget].item;
- gBattleMons[gBattlerAttacker].item = 0;
+ gBattleMons[gBattlerAttacker].item = ITEM_NONE;
gBattleMons[gBattlerTarget].item = oldItemAtk;
gActiveBattler = gBattlerAttacker;
- BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, newItemAtk);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(*newItemAtk), newItemAtk);
MarkBattlerForControllerExec(gBattlerAttacker);
gActiveBattler = gBattlerTarget;
- BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBattlerTarget].item);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].item), &gBattleMons[gBattlerTarget].item);
MarkBattlerForControllerExec(gBattlerTarget);
*(u8*)((u8*)(&gBattleStruct->choicedMove[gBattlerTarget]) + 0) = 0;
@@ -9123,9 +9138,9 @@ static void Cmd_tryswapitems(void) // trick
PREPARE_ITEM_BUFFER(gBattleTextBuff1, *newItemAtk)
PREPARE_ITEM_BUFFER(gBattleTextBuff2, oldItemAtk)
- if (oldItemAtk != 0 && *newItemAtk != 0)
+ if (oldItemAtk != ITEM_NONE && *newItemAtk != ITEM_NONE)
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ITEM_SWAP_BOTH; // attacker's item -> <- target's item
- else if (oldItemAtk == 0 && *newItemAtk != 0)
+ else if (oldItemAtk == ITEM_NONE && *newItemAtk != ITEM_NONE)
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ITEM_SWAP_TAKEN; // nothing -> <- target's item
else
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ITEM_SWAP_GIVEN; // attacker's item -> <- nothing
@@ -9382,7 +9397,7 @@ static void Cmd_assistattackselect(void)
{
gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED;
gCalledMove = movesArray[((Random() & 0xFF) * chooseableMovesNo) >> 8];
- gBattlerTarget = GetMoveTarget(gCalledMove, 0);
+ gBattlerTarget = GetMoveTarget(gCalledMove, NO_TARGET_OVERRIDE);
gBattlescriptCurrInstr += 5;
}
else
@@ -9451,7 +9466,10 @@ static void Cmd_switchoutabilities(void)
{
case ABILITY_NATURAL_CURE:
gBattleMons[gActiveBattler].status1 = 0;
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, gBitTable[*(gBattleStruct->field_58 + gActiveBattler)], 4, &gBattleMons[gActiveBattler].status1);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE,
+ gBitTable[*(gBattleStruct->battlerPartyIndexes + gActiveBattler)],
+ sizeof(gBattleMons[gActiveBattler].status1),
+ &gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
break;
}
@@ -9527,7 +9545,7 @@ static void Cmd_pickup(void)
ability = gBaseStats[species].abilities[0];
if (ability == ABILITY_PICKUP
- && species != 0
+ && species != SPECIES_NONE
&& species != SPECIES_EGG
&& heldItem == ITEM_NONE
&& (Random() % 10) == 0)
@@ -9550,7 +9568,7 @@ static void Cmd_pickup(void)
ability = gBaseStats[species].abilities[0];
if (ability == ABILITY_PICKUP
- && species != 0
+ && species != SPECIES_NONE
&& species != SPECIES_EGG
&& heldItem == ITEM_NONE
&& (Random() % 10) == 0)
@@ -9586,9 +9604,9 @@ static void Cmd_docastformchangeanimation(void)
gActiveBattler = gBattleScripting.battler;
if (gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE)
- *(&gBattleStruct->formToChangeInto) |= 0x80;
+ *(&gBattleStruct->formToChangeInto) |= CASTFORM_SUBSTITUTE;
- BtlController_EmitBattleAnimation(0, B_ANIM_CASTFORM_CHANGE, gBattleStruct->formToChangeInto);
+ BtlController_EmitBattleAnimation(BUFFER_A, B_ANIM_CASTFORM_CHANGE, gBattleStruct->formToChangeInto);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr++;
@@ -9643,15 +9661,15 @@ static void Cmd_setweatherballtype(void)
if (gBattleWeather & B_WEATHER_ANY)
gBattleScripting.dmgMultiplier = 2;
if (gBattleWeather & B_WEATHER_RAIN)
- *(&gBattleStruct->dynamicMoveType) = TYPE_WATER | 0x80;
+ *(&gBattleStruct->dynamicMoveType) = TYPE_WATER | F_DYNAMIC_TYPE_2;
else if (gBattleWeather & B_WEATHER_SANDSTORM)
- *(&gBattleStruct->dynamicMoveType) = TYPE_ROCK | 0x80;
+ *(&gBattleStruct->dynamicMoveType) = TYPE_ROCK | F_DYNAMIC_TYPE_2;
else if (gBattleWeather & B_WEATHER_SUN)
- *(&gBattleStruct->dynamicMoveType) = TYPE_FIRE | 0x80;
+ *(&gBattleStruct->dynamicMoveType) = TYPE_FIRE | F_DYNAMIC_TYPE_2;
else if (gBattleWeather & B_WEATHER_HAIL)
- *(&gBattleStruct->dynamicMoveType) = TYPE_ICE | 0x80;
+ *(&gBattleStruct->dynamicMoveType) = TYPE_ICE | F_DYNAMIC_TYPE_2;
else
- *(&gBattleStruct->dynamicMoveType) = TYPE_NORMAL | 0x80;
+ *(&gBattleStruct->dynamicMoveType) = TYPE_NORMAL | F_DYNAMIC_TYPE_2;
}
gBattlescriptCurrInstr++;
@@ -9663,13 +9681,13 @@ static void Cmd_tryrecycleitem(void)
gActiveBattler = gBattlerAttacker;
usedHeldItem = &gBattleStruct->usedHeldItems[gActiveBattler];
- if (*usedHeldItem != 0 && gBattleMons[gActiveBattler].item == 0)
+ if (*usedHeldItem != ITEM_NONE && gBattleMons[gActiveBattler].item == ITEM_NONE)
{
gLastUsedItem = *usedHeldItem;
- *usedHeldItem = 0;
+ *usedHeldItem = ITEM_NONE;
gBattleMons[gActiveBattler].item = gLastUsedItem;
- BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBattler].item);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gActiveBattler].item), &gBattleMons[gActiveBattler].item);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 5;
@@ -9695,7 +9713,8 @@ static void Cmd_settypetoterrain(void)
}
}
-static void Cmd_pursuitrelated(void)
+// Unused
+static void Cmd_pursuitdoubles(void)
{
gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK);
@@ -9704,11 +9723,11 @@ static void Cmd_pursuitrelated(void)
&& gChosenActionByBattler[gActiveBattler] == B_ACTION_USE_MOVE
&& gChosenMoveByBattler[gActiveBattler] == MOVE_PURSUIT)
{
- gActionsByTurnOrder[gActiveBattler] = 11;
+ gActionsByTurnOrder[gActiveBattler] = B_ACTION_TRY_FINISH;
gCurrentMove = MOVE_PURSUIT;
gBattlescriptCurrInstr += 5;
gBattleScripting.animTurn = 1;
- gBattleScripting.field_20 = gBattlerAttacker;
+ gBattleScripting.pursuitDoublesAttacker = gBattlerAttacker;
gBattlerAttacker = gActiveBattler;
}
else
@@ -9764,13 +9783,13 @@ static void Cmd_handleballthrow(void)
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{
- BtlController_EmitBallThrowAnim(0, BALL_TRAINER_BLOCK);
+ BtlController_EmitBallThrowAnim(BUFFER_A, BALL_TRAINER_BLOCK);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr = BattleScript_TrainerBallBlock;
}
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
{
- BtlController_EmitBallThrowAnim(0, BALL_3_SHAKES_SUCCESS);
+ BtlController_EmitBallThrowAnim(BUFFER_A, BALL_3_SHAKES_SUCCESS);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr = BattleScript_WallyBallThrow;
}
@@ -9849,14 +9868,14 @@ static void Cmd_handleballthrow(void)
}
else
{
- if (gBattleResults.catchAttempts[gLastUsedItem - ITEM_ULTRA_BALL] < 0xFF)
+ if (gBattleResults.catchAttempts[gLastUsedItem - ITEM_ULTRA_BALL] < 255)
gBattleResults.catchAttempts[gLastUsedItem - ITEM_ULTRA_BALL]++;
}
}
if (odds > 254) // mon caught
{
- BtlController_EmitBallThrowAnim(0, BALL_3_SHAKES_SUCCESS);
+ BtlController_EmitBallThrowAnim(BUFFER_A, BALL_3_SHAKES_SUCCESS);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_POKEBALL, &gLastUsedItem);
@@ -9878,7 +9897,7 @@ static void Cmd_handleballthrow(void)
if (gLastUsedItem == ITEM_MASTER_BALL)
shakes = BALL_3_SHAKES_SUCCESS; // why calculate the shakes before that check?
- BtlController_EmitBallThrowAnim(0, shakes);
+ BtlController_EmitBallThrowAnim(BUFFER_A, shakes);
MarkBattlerForControllerExec(gActiveBattler);
if (shakes == BALL_3_SHAKES_SUCCESS) // mon caught, copy of the code above
@@ -9953,7 +9972,7 @@ static void Cmd_displaydexinfo(void)
switch (gBattleCommunication[0])
{
case 0:
- BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK);
+ BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
gBattleCommunication[0]++;
break;
case 1:
@@ -9978,13 +9997,13 @@ static void Cmd_displaydexinfo(void)
case 3:
InitBattleBgsVideo();
LoadBattleTextboxAndBackground();
- gBattle_BG3_X = 0x100;
+ gBattle_BG3_X = 256;
gBattleCommunication[0]++;
break;
case 4:
if (!IsDma3ManagerBusyWithBgCopy())
{
- BeginNormalPaletteFade(PALETTES_BG, 0, 0x10, 0, RGB_BLACK);
+ BeginNormalPaletteFade(PALETTES_BG, 0, 16, 0, RGB_BLACK);
ShowBg(0);
ShowBg(3);
gBattleCommunication[0]++;
@@ -10037,7 +10056,7 @@ void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags)
if (flags & WINDOW_CLEAR)
var = 0;
- if (flags & WINDOW_x80)
+ if (flags & WINDOW_BG1)
CopyToBgTilemapBufferRect_ChangePalette(1, &var, destX, destY, 1, 1, 0x11);
else
CopyToBgTilemapBufferRect_ChangePalette(0, &var, destX, destY, 1, 1, 0x11);
@@ -10070,8 +10089,8 @@ static void Cmd_trygivecaughtmonnick(void)
switch (gBattleCommunication[MULTIUSE_STATE])
{
case 0:
- HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0);
- BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xC);
+ HandleBattleWindow(24, 8, 29, 13, 0);
+ BattlePutTextOnWindow(gText_BattleYesNoChoice, B_WIN_YESNO);
gBattleCommunication[MULTIUSE_STATE]++;
gBattleCommunication[CURSOR_POSITION] = 0;
BattleCreateYesNoCursorAt(0);
@@ -10167,7 +10186,7 @@ static void Cmd_finishturn(void)
static void Cmd_trainerslideout(void)
{
gActiveBattler = GetBattlerAtPosition(gBattlescriptCurrInstr[1]);
- BtlController_EmitTrainerSlideBack(0);
+ BtlController_EmitTrainerSlideBack(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 4337ec29c..172bfc5be 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -319,7 +319,7 @@ const struct RematchTrainer gRematchTable[REMATCH_TABLE_ENTRIES] =
[REMATCH_TRENT] = REMATCH(TRAINER_TRENT_1, TRAINER_TRENT_2, TRAINER_TRENT_3, TRAINER_TRENT_4, TRAINER_TRENT_5, ROUTE112),
[REMATCH_SAWYER] = REMATCH(TRAINER_SAWYER_1, TRAINER_SAWYER_2, TRAINER_SAWYER_3, TRAINER_SAWYER_4, TRAINER_SAWYER_5, MT_CHIMNEY),
[REMATCH_KIRA_AND_DAN] = REMATCH(TRAINER_KIRA_AND_DAN_1, TRAINER_KIRA_AND_DAN_2, TRAINER_KIRA_AND_DAN_3, TRAINER_KIRA_AND_DAN_4, TRAINER_KIRA_AND_DAN_5, ABANDONED_SHIP_ROOMS2_1F),
- [REMATCH_WALLY_3] = REMATCH(TRAINER_WALLY_VR_2, TRAINER_WALLY_VR_3, TRAINER_WALLY_VR_4, TRAINER_WALLY_VR_5, TRAINER_WALLY_VR_5, VICTORY_ROAD_1F),
+ [REMATCH_WALLY_VR] = REMATCH(TRAINER_WALLY_VR_2, TRAINER_WALLY_VR_3, TRAINER_WALLY_VR_4, TRAINER_WALLY_VR_5, TRAINER_WALLY_VR_5, VICTORY_ROAD_1F),
[REMATCH_ROXANNE] = REMATCH(TRAINER_ROXANNE_1, TRAINER_ROXANNE_2, TRAINER_ROXANNE_3, TRAINER_ROXANNE_4, TRAINER_ROXANNE_5, RUSTBORO_CITY),
[REMATCH_BRAWLY] = REMATCH(TRAINER_BRAWLY_1, TRAINER_BRAWLY_2, TRAINER_BRAWLY_3, TRAINER_BRAWLY_4, TRAINER_BRAWLY_5, DEWFORD_TOWN),
[REMATCH_WATTSON] = REMATCH(TRAINER_WATTSON_1, TRAINER_WATTSON_2, TRAINER_WATTSON_3, TRAINER_WATTSON_4, TRAINER_WATTSON_5, MAUVILLE_CITY),
@@ -460,12 +460,12 @@ static void DoTrainerBattle(void)
TryUpdateGymLeaderRematchFromTrainer();
}
-static void sub_80B0828(void)
+static void DoBattlePyramidTrainerHillBattle(void)
{
if (InBattlePyramid())
- CreateBattleStartTask(GetSpecialBattleTransition(10), 0);
+ CreateBattleStartTask(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_PYRAMID), 0);
else
- CreateBattleStartTask(GetSpecialBattleTransition(11), 0);
+ CreateBattleStartTask(GetSpecialBattleTransition(B_TRANSITION_GROUP_TRAINER_HILL), 0);
IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
IncrementGameStat(GAME_STAT_TRAINER_BATTLES);
@@ -853,16 +853,7 @@ static u8 GetTrainerBattleTransition(void)
return sBattleTransitionTable_Trainer[transitionType][1];
}
-// 0: Battle Tower
-// 3: Battle Dome
-// 4: Battle Palace
-// 5: Battle Arena
-// 6: Battle Factory
-// 7: Battle Pike
-// 10: Battle Pyramid
-// 11: Trainer Hill
-// 12: Secret Base
-// 13: E-Reader
+#define RANDOM_TRANSITION(table)(table[Random() % ARRAY_COUNT(table)])
u8 GetSpecialBattleTransition(s32 id)
{
u16 var;
@@ -873,35 +864,35 @@ u8 GetSpecialBattleTransition(s32 id)
{
switch (id)
{
- case 11:
- case 12:
- case 13:
+ case B_TRANSITION_GROUP_TRAINER_HILL:
+ case B_TRANSITION_GROUP_SECRET_BASE:
+ case B_TRANSITION_GROUP_E_READER:
return B_TRANSITION_POKEBALLS_TRAIL;
- case 10:
- return sBattleTransitionTable_BattlePyramid[Random() % ARRAY_COUNT(sBattleTransitionTable_BattlePyramid)];
- case 3:
- return sBattleTransitionTable_BattleDome[Random() % ARRAY_COUNT(sBattleTransitionTable_BattleDome)];
+ case B_TRANSITION_GROUP_B_PYRAMID:
+ return RANDOM_TRANSITION(sBattleTransitionTable_BattlePyramid);
+ case B_TRANSITION_GROUP_B_DOME:
+ return RANDOM_TRANSITION(sBattleTransitionTable_BattleDome);
}
if (VarGet(VAR_FRONTIER_BATTLE_MODE) != FRONTIER_MODE_LINK_MULTIS)
- return sBattleTransitionTable_BattleFrontier[Random() % ARRAY_COUNT(sBattleTransitionTable_BattleFrontier)];
+ return RANDOM_TRANSITION(sBattleTransitionTable_BattleFrontier);
}
else
{
switch (id)
{
- case 11:
- case 12:
- case 13:
+ case B_TRANSITION_GROUP_TRAINER_HILL:
+ case B_TRANSITION_GROUP_SECRET_BASE:
+ case B_TRANSITION_GROUP_E_READER:
return B_TRANSITION_BIG_POKEBALL;
- case 10:
- return sBattleTransitionTable_BattlePyramid[Random() % ARRAY_COUNT(sBattleTransitionTable_BattlePyramid)];
- case 3:
- return sBattleTransitionTable_BattleDome[Random() % ARRAY_COUNT(sBattleTransitionTable_BattleDome)];
+ case B_TRANSITION_GROUP_B_PYRAMID:
+ return RANDOM_TRANSITION(sBattleTransitionTable_BattlePyramid);
+ case B_TRANSITION_GROUP_B_DOME:
+ return RANDOM_TRANSITION(sBattleTransitionTable_BattleDome);
}
if (VarGet(VAR_FRONTIER_BATTLE_MODE) != FRONTIER_MODE_LINK_MULTIS)
- return sBattleTransitionTable_BattleFrontier[Random() % ARRAY_COUNT(sBattleTransitionTable_BattleFrontier)];
+ return RANDOM_TRANSITION(sBattleTransitionTable_BattleFrontier);
}
var = gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum * 2 + 0]
@@ -1319,7 +1310,7 @@ void BattleSetup_StartTrainerBattle(void)
gMain.savedCallback = CB2_EndTrainerBattle;
if (InBattlePyramid() || InTrainerHillChallenge())
- sub_80B0828();
+ DoBattlePyramidTrainerHillBattle();
else
DoTrainerBattle();
@@ -1575,12 +1566,14 @@ static s32 TrainerIdToRematchTableId(const struct RematchTrainer *table, u16 tra
return -1;
}
-static bool32 sub_80B1D94(s32 rematchTableId)
+// Returns TRUE if the given trainer (by their entry in the rematch table) is not allowed to have rematches.
+// This applies to the Elite Four and Victory Road Wally (if he's not been defeated yet)
+static bool32 IsRematchForbidden(s32 rematchTableId)
{
if (rematchTableId >= REMATCH_ELITE_FOUR_ENTRIES)
return TRUE;
- else if (rematchTableId == REMATCH_WALLY_3)
- return (FlagGet(FLAG_DEFEATED_WALLY_VICTORY_ROAD) == FALSE);
+ else if (rematchTableId == REMATCH_WALLY_VR)
+ return !FlagGet(FLAG_DEFEATED_WALLY_VICTORY_ROAD);
else
return FALSE;
}
@@ -1609,7 +1602,7 @@ static bool32 UpdateRandomTrainerRematches(const struct RematchTrainer *table, u
for (i = 0; i <= REMATCH_SPECIAL_TRAINER_START; i++)
{
- if (table[i].mapGroup == mapGroup && table[i].mapNum == mapNum && !sub_80B1D94(i))
+ if (table[i].mapGroup == mapGroup && table[i].mapNum == mapNum && !IsRematchForbidden(i))
{
if (gSaveBlock1Ptr->trainerRematches[i] != 0)
{
diff --git a/src/battle_tower.c b/src/battle_tower.c
index 9c85882a4..e3712def2 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -2025,7 +2025,7 @@ void DoSpecialTrainerBattle(void)
}
CreateTask(Task_StartBattleAfterTransition, 1);
PlayMapChosenOrBattleBGM(0);
- BattleTransition_StartOnField(GetSpecialBattleTransition(0));
+ BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_TOWER));
break;
case SPECIAL_BATTLE_SECRET_BASE:
for (i = 0; i < PARTY_SIZE; i++)
@@ -2035,7 +2035,7 @@ void DoSpecialTrainerBattle(void)
}
CreateTask(Task_StartBattleAfterTransition, 1);
PlayMapChosenOrBattleBGM(0);
- BattleTransition_StartOnField(GetSpecialBattleTransition(12));
+ BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_SECRET_BASE));
break;
case SPECIAL_BATTLE_EREADER:
ZeroEnemyPartyMons();
@@ -2045,7 +2045,7 @@ void DoSpecialTrainerBattle(void)
gTrainerBattleOpponent_A = 0;
CreateTask(Task_StartBattleAfterTransition, 1);
PlayMapChosenOrBattleBGM(0);
- BattleTransition_StartOnField(GetSpecialBattleTransition(13));
+ BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_E_READER));
break;
case SPECIAL_BATTLE_DOME:
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_DOME;
@@ -2055,7 +2055,7 @@ void DoSpecialTrainerBattle(void)
FillFrontierTrainerParty(DOME_BATTLE_PARTY_SIZE);
CreateTask(Task_StartBattleAfterTransition, 1);
CreateTask_PlayMapChosenOrBattleBGM(0);
- BattleTransition_StartOnField(GetSpecialBattleTransition(3));
+ BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_DOME));
break;
case SPECIAL_BATTLE_PALACE:
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_PALACE;
@@ -2067,7 +2067,7 @@ void DoSpecialTrainerBattle(void)
FillTentTrainerParty(FRONTIER_PARTY_SIZE);
CreateTask(Task_StartBattleAfterTransition, 1);
PlayMapChosenOrBattleBGM(0);
- BattleTransition_StartOnField(GetSpecialBattleTransition(4));
+ BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_PALACE));
break;
case SPECIAL_BATTLE_ARENA:
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_ARENA;
@@ -2077,7 +2077,7 @@ void DoSpecialTrainerBattle(void)
FillTentTrainerParty(FRONTIER_PARTY_SIZE);
CreateTask(Task_StartBattleAfterTransition, 1);
PlayMapChosenOrBattleBGM(0);
- BattleTransition_StartOnField(GetSpecialBattleTransition(5));
+ BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_ARENA));
break;
case SPECIAL_BATTLE_FACTORY:
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_FACTORY;
@@ -2086,28 +2086,28 @@ void DoSpecialTrainerBattle(void)
FillFactoryTrainerParty();
CreateTask(Task_StartBattleAfterTransition, 1);
PlayMapChosenOrBattleBGM(0);
- BattleTransition_StartOnField(GetSpecialBattleTransition(6));
+ BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_FACTORY));
break;
case SPECIAL_BATTLE_PIKE_SINGLE:
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_BATTLE_TOWER;
FillFrontierTrainerParty(FRONTIER_PARTY_SIZE);
CreateTask(Task_StartBattleAfterTransition, 1);
PlayMapChosenOrBattleBGM(0);
- BattleTransition_StartOnField(GetSpecialBattleTransition(7));
+ BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_PIKE));
break;
case SPECIAL_BATTLE_PYRAMID:
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_PYRAMID;
FillFrontierTrainerParty(FRONTIER_PARTY_SIZE);
CreateTask(Task_StartBattleAfterTransition, 1);
PlayMapChosenOrBattleBGM(0);
- BattleTransition_StartOnField(GetSpecialBattleTransition(10));
+ BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_PYRAMID));
break;
case SPECIAL_BATTLE_PIKE_DOUBLE:
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_TWO_OPPONENTS;
FillFrontierTrainersParties(1);
CreateTask(Task_StartBattleAfterTransition, 1);
PlayMapChosenOrBattleBGM(0);
- BattleTransition_StartOnField(GetSpecialBattleTransition(7));
+ BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_PIKE));
break;
case SPECIAL_BATTLE_STEVEN:
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_MULTI | BATTLE_TYPE_INGAME_PARTNER;
diff --git a/src/battle_util.c b/src/battle_util.c
index 7b47bc994..6bb6d9ae4 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -82,7 +82,7 @@ void HandleAction_UseMove(void)
gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber];
- if (*(&gBattleStruct->field_91) & gBitTable[gBattlerAttacker])
+ if (*(&gBattleStruct->absentBattlerFlags) & gBitTable[gBattlerAttacker])
{
gCurrentActionFuncId = B_ACTION_FINISHED;
return;
@@ -99,10 +99,10 @@ void HandleAction_UseMove(void)
// choose move
if (gProtectStructs[gBattlerAttacker].noValidMoves)
{
- gProtectStructs[gBattlerAttacker].noValidMoves = 0;
+ gProtectStructs[gBattlerAttacker].noValidMoves = FALSE;
gCurrentMove = gChosenMove = MOVE_STRUGGLE;
gHitMarker |= HITMARKER_NO_PPDEDUCT;
- *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(MOVE_STRUGGLE, 0);
+ *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(MOVE_STRUGGLE, NO_TARGET_OVERRIDE);
}
else if (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS || gBattleMons[gBattlerAttacker].status2 & STATUS2_RECHARGE)
{
@@ -114,7 +114,7 @@ void HandleAction_UseMove(void)
{
gCurrentMove = gChosenMove = gDisableStructs[gBattlerAttacker].encoredMove;
gCurrMovePos = gChosenMovePos = gDisableStructs[gBattlerAttacker].encoredMovePos;
- *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, 0);
+ *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE);
}
// check if the encored move wasn't overwritten
else if (gDisableStructs[gBattlerAttacker].encoredMove != MOVE_NONE
@@ -125,12 +125,12 @@ void HandleAction_UseMove(void)
gDisableStructs[gBattlerAttacker].encoredMove = MOVE_NONE;
gDisableStructs[gBattlerAttacker].encoredMovePos = 0;
gDisableStructs[gBattlerAttacker].encoreTimer = 0;
- *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, 0);
+ *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE);
}
else if (gBattleMons[gBattlerAttacker].moves[gCurrMovePos] != gChosenMoveByBattler[gBattlerAttacker])
{
gCurrentMove = gChosenMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos];
- *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, 0);
+ *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE);
}
else
{
@@ -299,7 +299,7 @@ void HandleAction_Switch(void)
gActionSelectionCursor[gBattlerAttacker] = 0;
gMoveSelectionCursor[gBattlerAttacker] = 0;
- PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBattlerAttacker, *(gBattleStruct->field_58 + gBattlerAttacker))
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBattlerAttacker, *(gBattleStruct->battlerPartyIndexes + gBattlerAttacker))
gBattleScripting.battler = gBattlerAttacker;
gBattlescriptCurrInstr = BattleScript_ActionSwitch;
@@ -323,11 +323,11 @@ void HandleAction_UseItem(void)
}
else if (gLastUsedItem == ITEM_POKE_DOLL || gLastUsedItem == ITEM_FLUFFY_TAIL)
{
- gBattlescriptCurrInstr = gBattlescriptsForRunningByItem[0];
+ gBattlescriptCurrInstr = gBattlescriptsForRunningByItem[0]; // BattleScript_RunByUsingItem
}
else if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
{
- gBattlescriptCurrInstr = gBattlescriptsForUsingItem[0];
+ gBattlescriptCurrInstr = gBattlescriptsForUsingItem[0]; // BattleScript_PlayerUsesItem
}
else
{
@@ -417,7 +417,7 @@ bool8 TryRunFromBattle(u8 battler)
if (holdEffect == HOLD_EFFECT_CAN_ALWAYS_RUN)
{
gLastUsedItem = gBattleMons[battler].item;
- gProtectStructs[battler].fleeFlag = 1;
+ gProtectStructs[battler].fleeType = FLEE_ITEM;
effect++;
}
else if (gBattleMons[battler].ability == ABILITY_RUN_AWAY)
@@ -430,14 +430,14 @@ bool8 TryRunFromBattle(u8 battler)
if (speedVar > (Random() & 0xFF))
{
gLastUsedAbility = ABILITY_RUN_AWAY;
- gProtectStructs[battler].fleeFlag = 2;
+ gProtectStructs[battler].fleeType = FLEE_ABILITY;
effect++;
}
}
else
{
gLastUsedAbility = ABILITY_RUN_AWAY;
- gProtectStructs[battler].fleeFlag = 2;
+ gProtectStructs[battler].fleeType = FLEE_ABILITY;
effect++;
}
}
@@ -562,7 +562,7 @@ void HandleAction_ThrowPokeblock(void)
gBattleCommunication[MULTISTRING_CHOOSER] = gBattleBufferB[gBattlerAttacker][1] - 1;
gLastUsedItem = gBattleBufferB[gBattlerAttacker][2];
- if (gBattleResults.pokeblockThrows < 0xFF)
+ if (gBattleResults.pokeblockThrows < 255)
gBattleResults.pokeblockThrows++;
if (gBattleStruct->safariPkblThrowCounter < 3)
gBattleStruct->safariPkblThrowCounter++;
@@ -653,7 +653,7 @@ void HandleAction_NothingIsFainted(void)
void HandleAction_ActionFinished(void)
{
- *(gBattleStruct->monToSwitchIntoId + gBattlerByTurnOrder[gCurrentTurnActionNumber]) = 6;
+ *(gBattleStruct->monToSwitchIntoId + gBattlerByTurnOrder[gCurrentTurnActionNumber]) = PARTY_SIZE;
gCurrentTurnActionNumber++;
gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber];
SpecialStatusesClear();
@@ -679,7 +679,6 @@ void HandleAction_ActionFinished(void)
gBattleResources->battleScriptsStack->size = 0;
}
-// rom const data
static const u16 sSoundMovesTable[] =
{
MOVE_GROWL, MOVE_ROAR, MOVE_SING, MOVE_SUPERSONIC, MOVE_SCREECH, MOVE_SNORE,
@@ -709,13 +708,13 @@ u8 GetBattlerForBattleScript(u8 caseId)
case BS_FAINTED:
ret = gBattlerFainted;
break;
- case 5:
+ case BS_FAINTED_LINK_MULTIPLE_1:
ret = gBattlerFainted;
break;
- case 4:
- case 6:
- case 8:
- case 9:
+ case BS_ATTACKER_WITH_PARTNER:
+ case BS_FAINTED_LINK_MULTIPLE_2:
+ case BS_ATTACKER_SIDE:
+ case BS_NOT_ATTACKER_SIDE:
case BS_PLAYER1:
ret = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
break;
@@ -751,11 +750,10 @@ void PressurePPLose(u8 target, u8 attacker, u16 move)
if (gBattleMons[attacker].pp[moveIndex] != 0)
gBattleMons[attacker].pp[moveIndex]--;
- if (!(gBattleMons[attacker].status2 & STATUS2_TRANSFORMED)
- && !(gDisableStructs[attacker].mimickedMoves & gBitTable[moveIndex]))
+ if (MOVE_IS_PERMANENT(attacker, moveIndex))
{
gActiveBattler = attacker;
- BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + moveIndex, 0, 1, &gBattleMons[gActiveBattler].pp[moveIndex]);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_PPMOVE1_BATTLE + moveIndex, 0, 1, &gBattleMons[gActiveBattler].pp[moveIndex]);
MarkBattlerForControllerExec(gActiveBattler);
}
}
@@ -763,7 +761,7 @@ void PressurePPLose(u8 target, u8 attacker, u16 move)
void PressurePPLoseOnUsingImprison(u8 attacker)
{
int i, j;
- int imprisonPos = 4;
+ int imprisonPos = MAX_MON_MOVES;
u8 atkSide = GetBattlerSide(attacker);
for (i = 0; i < gBattlersCount; i++)
@@ -784,12 +782,10 @@ void PressurePPLoseOnUsingImprison(u8 attacker)
}
}
- if (imprisonPos != 4
- && !(gBattleMons[attacker].status2 & STATUS2_TRANSFORMED)
- && !(gDisableStructs[attacker].mimickedMoves & gBitTable[imprisonPos]))
+ if (imprisonPos != MAX_MON_MOVES && MOVE_IS_PERMANENT(attacker, imprisonPos))
{
gActiveBattler = attacker;
- BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + imprisonPos, 0, 1, &gBattleMons[gActiveBattler].pp[imprisonPos]);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_PPMOVE1_BATTLE + imprisonPos, 0, 1, &gBattleMons[gActiveBattler].pp[imprisonPos]);
MarkBattlerForControllerExec(gActiveBattler);
}
}
@@ -797,7 +793,7 @@ void PressurePPLoseOnUsingImprison(u8 attacker)
void PressurePPLoseOnUsingPerishSong(u8 attacker)
{
int i, j;
- int perishSongPos = 4;
+ int perishSongPos = MAX_MON_MOVES;
for (i = 0; i < gBattlersCount; i++)
{
@@ -817,12 +813,10 @@ void PressurePPLoseOnUsingPerishSong(u8 attacker)
}
}
- if (perishSongPos != MAX_MON_MOVES
- && !(gBattleMons[attacker].status2 & STATUS2_TRANSFORMED)
- && !(gDisableStructs[attacker].mimickedMoves & gBitTable[perishSongPos]))
+ if (perishSongPos != MAX_MON_MOVES && MOVE_IS_PERMANENT(attacker, perishSongPos))
{
gActiveBattler = attacker;
- BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + perishSongPos, 0, 1, &gBattleMons[gActiveBattler].pp[perishSongPos]);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_PPMOVE1_BATTLE + perishSongPos, 0, 1, &gBattleMons[gActiveBattler].pp[perishSongPos]);
MarkBattlerForControllerExec(gActiveBattler);
}
}
@@ -858,17 +852,17 @@ void MarkBattlerReceivedLinkData(u8 battlerId)
for (i = 0; i < GetLinkPlayerCount(); i++)
gBattleControllerExecFlags |= gBitTable[battlerId] << (i << 2);
- gBattleControllerExecFlags &= ~(0x10000000 << battlerId);
+ gBattleControllerExecFlags &= ~((1 << 28) << battlerId);
}
void CancelMultiTurnMoves(u8 battler)
{
- gBattleMons[battler].status2 &= ~(STATUS2_MULTIPLETURNS);
- gBattleMons[battler].status2 &= ~(STATUS2_LOCK_CONFUSE);
- gBattleMons[battler].status2 &= ~(STATUS2_UPROAR);
- gBattleMons[battler].status2 &= ~(STATUS2_BIDE);
+ gBattleMons[battler].status2 &= ~STATUS2_MULTIPLETURNS;
+ gBattleMons[battler].status2 &= ~STATUS2_LOCK_CONFUSE;
+ gBattleMons[battler].status2 &= ~STATUS2_UPROAR;
+ gBattleMons[battler].status2 &= ~STATUS2_BIDE;
- gStatuses3[battler] &= ~(STATUS3_SEMI_INVULNERABLE);
+ gStatuses3[battler] &= ~STATUS3_SEMI_INVULNERABLE;
gDisableStructs[battler].rolloutTimer = 0;
gDisableStructs[battler].furyCutterCounter = 0;
@@ -893,7 +887,7 @@ bool8 WasUnableToUseMove(u8 battler)
void PrepareStringBattle(u16 stringId, u8 battler)
{
gActiveBattler = battler;
- BtlController_EmitPrintString(0, stringId);
+ BtlController_EmitPrintString(BUFFER_A, stringId);
MarkBattlerForControllerExec(gActiveBattler);
}
@@ -927,7 +921,6 @@ void OpponentSwitchInResetSentPokesToOpponentValue(u8 battler)
if (!(gAbsentBattlerFlags & gBitTable[i]))
bits |= gBitTable[gBattlerPartyIndexes[i]];
}
-
gSentPokesToOpponent[flank] = bits;
}
}
@@ -975,7 +968,7 @@ u8 TrySetCantSelectMoveBattleScript(void)
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingDisabledMoveInPalace;
- gProtectStructs[gActiveBattler].palaceUnableToUseMove = 1;
+ gProtectStructs[gActiveBattler].palaceUnableToUseMove = TRUE;
}
else
{
@@ -990,7 +983,7 @@ u8 TrySetCantSelectMoveBattleScript(void)
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingTormentedMoveInPalace;
- gProtectStructs[gActiveBattler].palaceUnableToUseMove = 1;
+ gProtectStructs[gActiveBattler].palaceUnableToUseMove = TRUE;
}
else
{
@@ -1005,7 +998,7 @@ u8 TrySetCantSelectMoveBattleScript(void)
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingNotAllowedMoveTauntInPalace;
- gProtectStructs[gActiveBattler].palaceUnableToUseMove = 1;
+ gProtectStructs[gActiveBattler].palaceUnableToUseMove = TRUE;
}
else
{
@@ -1020,7 +1013,7 @@ u8 TrySetCantSelectMoveBattleScript(void)
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingImprisonedMoveInPalace;
- gProtectStructs[gActiveBattler].palaceUnableToUseMove = 1;
+ gProtectStructs[gActiveBattler].palaceUnableToUseMove = TRUE;
}
else
{
@@ -1036,13 +1029,13 @@ u8 TrySetCantSelectMoveBattleScript(void)
gPotentialItemEffectBattler = gActiveBattler;
- if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != move)
+ if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != MOVE_NONE && *choicedMove != 0xFFFF && *choicedMove != move)
{
gCurrentMove = *choicedMove;
gLastUsedItem = gBattleMons[gActiveBattler].item;
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- gProtectStructs[gActiveBattler].palaceUnableToUseMove = 1;
+ gProtectStructs[gActiveBattler].palaceUnableToUseMove = TRUE;
}
else
{
@@ -1055,7 +1048,7 @@ u8 TrySetCantSelectMoveBattleScript(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- gProtectStructs[gActiveBattler].palaceUnableToUseMove = 1;
+ gProtectStructs[gActiveBattler].palaceUnableToUseMove = TRUE;
}
else
{
@@ -1082,43 +1075,53 @@ u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u8 check)
for (i = 0; i < MAX_MON_MOVES; i++)
{
- if (gBattleMons[battlerId].moves[i] == 0 && check & MOVE_LIMITATION_ZEROMOVE)
+ // No move
+ if (gBattleMons[battlerId].moves[i] == MOVE_NONE && check & MOVE_LIMITATION_ZEROMOVE)
unusableMoves |= gBitTable[i];
+ // No PP
if (gBattleMons[battlerId].pp[i] == 0 && check & MOVE_LIMITATION_PP)
unusableMoves |= gBitTable[i];
+ // Disable
if (gBattleMons[battlerId].moves[i] == gDisableStructs[battlerId].disabledMove && check & MOVE_LIMITATION_DISABLED)
unusableMoves |= gBitTable[i];
+ // Torment
if (gBattleMons[battlerId].moves[i] == gLastMoves[battlerId] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[battlerId].status2 & STATUS2_TORMENT)
unusableMoves |= gBitTable[i];
+ // Taunt
if (gDisableStructs[battlerId].tauntTimer && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[battlerId].moves[i]].power == 0)
unusableMoves |= gBitTable[i];
+ // Imprison
if (GetImprisonedMovesCount(battlerId, gBattleMons[battlerId].moves[i]) && check & MOVE_LIMITATION_IMPRISON)
unusableMoves |= gBitTable[i];
+ // Encore
if (gDisableStructs[battlerId].encoreTimer && gDisableStructs[battlerId].encoredMove != gBattleMons[battlerId].moves[i])
unusableMoves |= gBitTable[i];
- if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != gBattleMons[battlerId].moves[i])
+ // Choice Band
+ if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != MOVE_NONE && *choicedMove != 0xFFFF && *choicedMove != gBattleMons[battlerId].moves[i])
unusableMoves |= gBitTable[i];
}
return unusableMoves;
}
+#define ALL_MOVES_MASK ((1 << MAX_MON_MOVES) - 1)
bool8 AreAllMovesUnusable(void)
{
u8 unusable;
- unusable = CheckMoveLimitations(gActiveBattler, 0, 0xFF);
+ unusable = CheckMoveLimitations(gActiveBattler, 0, MOVE_LIMITATIONS_ALL);
- if (unusable == 0xF) // All moves are unusable.
+ if (unusable == ALL_MOVES_MASK) // All moves are unusable.
{
- gProtectStructs[gActiveBattler].noValidMoves = 1;
+ gProtectStructs[gActiveBattler].noValidMoves = TRUE;
gSelectionBattleScripts[gActiveBattler] = BattleScript_NoMovesLeft;
}
else
{
- gProtectStructs[gActiveBattler].noValidMoves = 0;
+ gProtectStructs[gActiveBattler].noValidMoves = FALSE;
}
- return (unusable == 0xF);
+ return (unusable == ALL_MOVES_MASK);
}
+#undef ALL_MOVES_MASK
u8 GetImprisonedMovesCount(u8 battlerId, u16 move)
{
@@ -1475,12 +1478,12 @@ u8 DoBattlerEndTurnEffects(void)
gBattleStruct->turnEffectsTracker++;
break;
case ENDTURN_ITEMS1: // item effects
- if (ItemBattleEffects(1, gActiveBattler, FALSE))
+ if (ItemBattleEffects(ITEMEFFECT_NORMAL, gActiveBattler, FALSE))
effect++;
gBattleStruct->turnEffectsTracker++;
break;
case ENDTURN_ITEMS2: // item effects again
- if (ItemBattleEffects(1, gActiveBattler, TRUE))
+ if (ItemBattleEffects(ITEMEFFECT_NORMAL, gActiveBattler, TRUE))
effect++;
gBattleStruct->turnEffectsTracker++;
break;
@@ -1608,12 +1611,12 @@ u8 DoBattlerEndTurnEffects(void)
if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP)
&& gBattleMons[gBattlerAttacker].ability != ABILITY_SOUNDPROOF)
{
- gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_SLEEP);
- gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[gBattlerAttacker].status1 &= ~STATUS1_SLEEP;
+ gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_NIGHTMARE;
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
BattleScriptExecute(BattleScript_MonWokeUpInUproar);
gActiveBattler = gBattlerAttacker;
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
break;
}
@@ -1658,7 +1661,7 @@ u8 DoBattlerEndTurnEffects(void)
else if (!(gBattleMons[gActiveBattler].status2 & STATUS2_LOCK_CONFUSE)
&& (gBattleMons[gActiveBattler].status2 & STATUS2_MULTIPLETURNS))
{
- gBattleMons[gActiveBattler].status2 &= ~(STATUS2_MULTIPLETURNS);
+ gBattleMons[gActiveBattler].status2 &= ~STATUS2_MULTIPLETURNS;
if (!(gBattleMons[gActiveBattler].status2 & STATUS2_CONFUSION))
{
gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_CONFUSION | MOVE_EFFECT_AFFECTS_USER;
@@ -1738,7 +1741,7 @@ u8 DoBattlerEndTurnEffects(void)
{
CancelMultiTurnMoves(gActiveBattler);
gBattleMons[gActiveBattler].status1 |= STATUS1_SLEEP_TURN((Random() & 3) + 2); // 2-5 turns of sleep
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
gEffectBattler = gActiveBattler;
BattleScriptExecute(BattleScript_YawnMakesAsleep);
@@ -1797,7 +1800,7 @@ bool8 HandleWishPerishSongOnTurnEnd(void)
if (gWishFutureKnock.futureSightCounter[gActiveBattler] == 0
&& gWishFutureKnock.futureSightCounter[gActiveBattler ^ BIT_FLANK] == 0)
{
- gSideStatuses[GET_BATTLER_SIDE(gBattlerTarget)] &= ~(SIDE_STATUS_FUTUREATTACK);
+ gSideStatuses[GET_BATTLER_SIDE(gBattlerTarget)] &= ~SIDE_STATUS_FUTUREATTACK;
}
return TRUE;
}
@@ -1934,7 +1937,10 @@ bool8 HandleFaintedMonActions(void)
gBattleStruct->faintedActionsState = 4;
break;
case 6:
- if (AbilityBattleEffects(ABILITYEFFECT_INTIMIDATE1, 0, 0, 0, 0) || AbilityBattleEffects(ABILITYEFFECT_TRACE, 0, 0, 0, 0) || ItemBattleEffects(1, 0, TRUE) || AbilityBattleEffects(ABILITYEFFECT_FORECAST, 0, 0, 0, 0))
+ if (AbilityBattleEffects(ABILITYEFFECT_INTIMIDATE1, 0, 0, 0, 0)
+ || AbilityBattleEffects(ABILITYEFFECT_TRACE, 0, 0, 0, 0)
+ || ItemBattleEffects(ITEMEFFECT_NORMAL, 0, TRUE)
+ || AbilityBattleEffects(ABILITYEFFECT_FORECAST, 0, 0, 0, 0))
return TRUE;
gBattleStruct->faintedActionsState++;
break;
@@ -1951,7 +1957,7 @@ void TryClearRageStatuses(void)
for (i = 0; i < gBattlersCount; i++)
{
if ((gBattleMons[i].status2 & STATUS2_RAGE) && gChosenMoveByBattler[i] != MOVE_RAGE)
- gBattleMons[i].status2 &= ~(STATUS2_RAGE);
+ gBattleMons[i].status2 &= ~STATUS2_RAGE;
}
}
@@ -1983,8 +1989,8 @@ u8 AtkCanceller_UnableToUseMove(void)
switch (gBattleStruct->atkCancellerTracker)
{
case CANCELLER_FLAGS: // flags clear
- gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_DESTINY_BOND);
- gStatuses3[gBattlerAttacker] &= ~(STATUS3_GRUDGE);
+ gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_DESTINY_BOND;
+ gStatuses3[gBattlerAttacker] &= ~STATUS3_GRUDGE;
gBattleStruct->atkCancellerTracker++;
break;
case CANCELLER_ASLEEP: // check being asleep
@@ -1992,8 +1998,8 @@ u8 AtkCanceller_UnableToUseMove(void)
{
if (UproarWakeUpCheck(gBattlerAttacker))
{
- gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_SLEEP);
- gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[gBattlerAttacker].status1 &= ~STATUS1_SLEEP;
+ gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_NIGHTMARE;
BattleScriptPushCursor();
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WOKE_UP_UPROAR;
gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp;
@@ -2007,7 +2013,7 @@ u8 AtkCanceller_UnableToUseMove(void)
else
toSub = 1;
if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) < toSub)
- gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_SLEEP);
+ gBattleMons[gBattlerAttacker].status1 &= ~STATUS1_SLEEP;
else
gBattleMons[gBattlerAttacker].status1 -= toSub;
if (gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP)
@@ -2021,7 +2027,7 @@ u8 AtkCanceller_UnableToUseMove(void)
}
else
{
- gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_NIGHTMARE;
BattleScriptPushCursor();
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WOKE_UP;
gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp;
@@ -2049,7 +2055,7 @@ u8 AtkCanceller_UnableToUseMove(void)
}
else // unfreeze
{
- gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_FREEZE);
+ gBattleMons[gBattlerAttacker].status1 &= ~STATUS1_FREEZE;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze;
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DEFROSTED;
@@ -2073,7 +2079,7 @@ u8 AtkCanceller_UnableToUseMove(void)
case CANCELLER_RECHARGE: // recharge
if (gBattleMons[gBattlerAttacker].status2 & STATUS2_RECHARGE)
{
- gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_RECHARGE);
+ gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_RECHARGE;
gDisableStructs[gBattlerAttacker].rechargeTimer = 0;
CancelMultiTurnMoves(gBattlerAttacker);
gBattlescriptCurrInstr = BattleScript_MoveUsedMustRecharge;
@@ -2085,7 +2091,7 @@ u8 AtkCanceller_UnableToUseMove(void)
case CANCELLER_FLINCH: // flinch
if (gBattleMons[gBattlerAttacker].status2 & STATUS2_FLINCHED)
{
- gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_FLINCHED);
+ gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_FLINCHED;
gProtectStructs[gBattlerAttacker].flinchImmobility = 1;
CancelMultiTurnMoves(gBattlerAttacker);
gBattlescriptCurrInstr = BattleScript_MoveUsedFlinched;
@@ -2203,14 +2209,14 @@ u8 AtkCanceller_UnableToUseMove(void)
else
{
// This is removed in Emerald for some reason
- //gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_MULTIPLETURNS);
+ //gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_MULTIPLETURNS;
if (gTakenDmg[gBattlerAttacker])
{
gCurrentMove = MOVE_BIDE;
*bideDmg = gTakenDmg[gBattlerAttacker] * 2;
gBattlerTarget = gTakenDmgByBattler[gBattlerAttacker];
if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
- gBattlerTarget = GetMoveTarget(MOVE_BIDE, 1);
+ gBattlerTarget = GetMoveTarget(MOVE_BIDE, MOVE_TARGET_SELECTED + 1);
gBattlescriptCurrInstr = BattleScript_BideAttack;
}
else
@@ -2227,7 +2233,7 @@ u8 AtkCanceller_UnableToUseMove(void)
{
if (gBattleMoves[gCurrentMove].effect == EFFECT_THAW_HIT)
{
- gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_FREEZE);
+ gBattleMons[gBattlerAttacker].status1 &= ~STATUS1_FREEZE;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze;
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DEFROSTED_BY_MOVE;
@@ -2245,7 +2251,7 @@ u8 AtkCanceller_UnableToUseMove(void)
if (effect == 2)
{
gActiveBattler = gBattlerAttacker;
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
}
return effect;
@@ -2268,14 +2274,14 @@ bool8 HasNoMonsToSwitch(u8 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2)
party = gEnemyParty;
id1 = ((battler & BIT_FLANK) / 2);
- for (i = id1 * 3; i < id1 * 3 + 3; i++)
+ for (i = id1 * MULTI_PARTY_SIZE; i < id1 * MULTI_PARTY_SIZE + MULTI_PARTY_SIZE; i++)
{
if (GetMonData(&party[i], MON_DATA_HP) != 0
&& GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE
&& GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG)
break;
}
- return (i == id1 * 3 + 3);
+ return (i == id1 * MULTI_PARTY_SIZE + MULTI_PARTY_SIZE);
}
else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
@@ -2308,14 +2314,14 @@ bool8 HasNoMonsToSwitch(u8 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2)
id1 = GetLinkTrainerFlankId(id2);
}
- for (i = id1 * 3; i < id1 * 3 + 3; i++)
+ for (i = id1 * MULTI_PARTY_SIZE; i < id1 * MULTI_PARTY_SIZE + MULTI_PARTY_SIZE; i++)
{
if (GetMonData(&party[i], MON_DATA_HP) != 0
&& GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE
&& GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG)
break;
}
- return (i == id1 * 3 + 3);
+ return (i == id1 * MULTI_PARTY_SIZE + MULTI_PARTY_SIZE);
}
else if ((gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) && GetBattlerSide(battler) == B_SIDE_OPPONENT)
{
@@ -2324,9 +2330,9 @@ bool8 HasNoMonsToSwitch(u8 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2)
if (battler == 1)
id1 = 0;
else
- id1 = 3;
+ id1 = MULTI_PARTY_SIZE;
- for (i = id1; i < id1 + 3; i++)
+ for (i = id1; i < id1 + MULTI_PARTY_SIZE; i++)
{
if (GetMonData(&party[i], MON_DATA_HP) != 0
&& GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE
@@ -2368,51 +2374,41 @@ bool8 HasNoMonsToSwitch(u8 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2)
}
}
-enum
-{
- CASTFORM_NO_CHANGE, //0
- CASTFORM_TO_NORMAL, //1
- CASTFORM_TO_FIRE, //2
- CASTFORM_TO_WATER, //3
- CASTFORM_TO_ICE, //4
-};
-
u8 CastformDataTypeChange(u8 battler)
{
u8 formChange = 0;
if (gBattleMons[battler].species != SPECIES_CASTFORM || gBattleMons[battler].ability != ABILITY_FORECAST || gBattleMons[battler].hp == 0)
- return CASTFORM_NO_CHANGE;
+ return 0; // No change
if (!WEATHER_HAS_EFFECT && !IS_BATTLER_OF_TYPE(battler, TYPE_NORMAL))
{
SET_BATTLER_TYPE(battler, TYPE_NORMAL);
- return CASTFORM_TO_NORMAL;
+ return CASTFORM_NORMAL + 1;
}
if (!WEATHER_HAS_EFFECT)
- return CASTFORM_NO_CHANGE;
+ return 0; // No change
if (!(gBattleWeather & (B_WEATHER_RAIN | B_WEATHER_SUN | B_WEATHER_HAIL)) && !IS_BATTLER_OF_TYPE(battler, TYPE_NORMAL))
{
SET_BATTLER_TYPE(battler, TYPE_NORMAL);
- formChange = CASTFORM_TO_NORMAL;
+ formChange = CASTFORM_NORMAL + 1;
}
if (gBattleWeather & B_WEATHER_SUN && !IS_BATTLER_OF_TYPE(battler, TYPE_FIRE))
{
SET_BATTLER_TYPE(battler, TYPE_FIRE);
- formChange = CASTFORM_TO_FIRE;
+ formChange = CASTFORM_FIRE + 1;
}
if (gBattleWeather & B_WEATHER_RAIN && !IS_BATTLER_OF_TYPE(battler, TYPE_WATER))
{
SET_BATTLER_TYPE(battler, TYPE_WATER);
- formChange = CASTFORM_TO_WATER;
+ formChange = CASTFORM_WATER + 1;
}
if (gBattleWeather & B_WEATHER_HAIL && !IS_BATTLER_OF_TYPE(battler, TYPE_ICE))
{
SET_BATTLER_TYPE(battler, TYPE_ICE);
- formChange = CASTFORM_TO_ICE;
+ formChange = CASTFORM_ICE + 1;
}
return formChange;
}
-// The largest function in the game, but even it could not save itself from decompiling.
u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveArg)
{
u8 effect = 0;
@@ -2550,7 +2546,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
break;
case ABILITY_FORECAST:
effect = CastformDataTypeChange(battler);
- if (effect != 0)
+ if (effect)
{
BattleScriptPushCursorAndCallback(BattleScript_CastformChange);
gBattleScripting.battler = battler;
@@ -2571,7 +2567,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
for (target1 = 0; target1 < gBattlersCount; target1++)
{
effect = CastformDataTypeChange(target1);
- if (effect != 0)
+ if (effect)
{
BattleScriptPushCursorAndCallback(BattleScript_CastformChange);
gBattleScripting.battler = target1;
@@ -2616,10 +2612,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
if (gBattleMons[battler].status1 & STATUS1_FREEZE)
StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn);
gBattleMons[battler].status1 = 0;
- gBattleMons[battler].status2 &= ~(STATUS2_NIGHTMARE); // fix nightmare glitch
+ gBattleMons[battler].status2 &= ~STATUS2_NIGHTMARE; // fix nightmare glitch
gBattleScripting.battler = gActiveBattler = battler;
BattleScriptPushCursorAndCallback(BattleScript_ShedSkinActivates);
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1);
MarkBattlerForControllerExec(gActiveBattler);
effect++;
}
@@ -2884,7 +2880,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
case ABILITY_VITAL_SPIRIT:
if (gBattleMons[battler].status1 & STATUS1_SLEEP)
{
- gBattleMons[battler].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[battler].status2 &= ~STATUS2_NIGHTMARE;
StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn);
effect = 1;
}
@@ -2919,10 +2915,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
gBattleMons[battler].status1 = 0;
break;
case 2: // get rid of confusion
- gBattleMons[battler].status2 &= ~(STATUS2_CONFUSION);
+ gBattleMons[battler].status2 &= ~STATUS2_CONFUSION;
break;
case 3: // get rid of infatuation
- gBattleMons[battler].status2 &= ~(STATUS2_INFATUATION);
+ gBattleMons[battler].status2 &= ~STATUS2_INFATUATION;
break;
}
@@ -2930,7 +2926,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
gBattlescriptCurrInstr = BattleScript_AbilityCuredStatus;
gBattleScripting.battler = battler;
gActiveBattler = battler;
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
return effect;
}
@@ -2955,7 +2951,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
case ABILITYEFFECT_SYNCHRONIZE: // 7
if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT))
{
- gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT);
+ gHitMarker &= ~HITMARKER_SYNCHRONISE_EFFECT;
gBattleStruct->synchronizeMoveEffect &= ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN);
if (gBattleStruct->synchronizeMoveEffect == MOVE_EFFECT_TOXIC)
gBattleStruct->synchronizeMoveEffect = MOVE_EFFECT_POISON;
@@ -2971,7 +2967,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
case ABILITYEFFECT_ATK_SYNCHRONIZE: // 8
if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT))
{
- gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT);
+ gHitMarker &= ~HITMARKER_SYNCHRONISE_EFFECT;
gBattleStruct->synchronizeMoveEffect &= ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN);
if (gBattleStruct->synchronizeMoveEffect == MOVE_EFFECT_TOXIC)
gBattleStruct->synchronizeMoveEffect = MOVE_EFFECT_POISON;
@@ -2990,7 +2986,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
if (gBattleMons[i].ability == ABILITY_INTIMIDATE && gStatuses3[i] & STATUS3_INTIMIDATE_POKES)
{
gLastUsedAbility = ABILITY_INTIMIDATE;
- gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES);
+ gStatuses3[i] &= ~STATUS3_INTIMIDATE_POKES;
BattleScriptPushCursorAndCallback(BattleScript_IntimidateActivatesEnd3);
gBattleStruct->intimidateBattler = i;
effect++;
@@ -3045,7 +3041,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
if (effect)
{
BattleScriptPushCursorAndCallback(BattleScript_TraceActivates);
- gStatuses3[i] &= ~(STATUS3_TRACE);
+ gStatuses3[i] &= ~STATUS3_TRACE;
gBattleScripting.battler = i;
PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBattler, gBattlerPartyIndexes[gActiveBattler])
@@ -3061,7 +3057,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
if (gBattleMons[i].ability == ABILITY_INTIMIDATE && (gStatuses3[i] & STATUS3_INTIMIDATE_POKES))
{
gLastUsedAbility = ABILITY_INTIMIDATE;
- gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES);
+ gStatuses3[i] &= ~STATUS3_INTIMIDATE_POKES;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_IntimidateActivates;
gBattleStruct->intimidateBattler = i;
@@ -3200,14 +3196,44 @@ void BattleScriptPushCursorAndCallback(const u8 *BS_ptr)
enum
{
- ITEM_NO_EFFECT, // 0
- ITEM_STATUS_CHANGE, // 1
- ITEM_EFFECT_OTHER, // 2
- ITEM_PP_CHANGE, // 3
- ITEM_HP_CHANGE, // 4
- ITEM_STATS_CHANGE, // 5
+ ITEM_NO_EFFECT,
+ ITEM_STATUS_CHANGE,
+ ITEM_EFFECT_OTHER,
+ ITEM_PP_CHANGE,
+ ITEM_HP_CHANGE,
+ ITEM_STATS_CHANGE,
};
+#define TRY_EAT_CONFUSE_BERRY(flavor) \
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn) \
+ { \
+ PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, flavor); \
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP / battlerHoldEffectParam; \
+ if (gBattleMoveDamage == 0) \
+ gBattleMoveDamage = 1; \
+ if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP) \
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp; \
+ gBattleMoveDamage *= -1; \
+ if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, flavor) < 0) \
+ BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); \
+ else \
+ BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); \
+ effect = ITEM_HP_CHANGE; \
+ }
+
+#define TRY_EAT_STAT_UP_BERRY(stat) \
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam \
+ && !moveTurn && gBattleMons[battlerId].statStages[stat] < MAX_STAT_STAGE) \
+ { \
+ PREPARE_STAT_BUFFER(gBattleTextBuff1, stat); \
+ gEffectBattler = battlerId; \
+ SET_STATCHANGER(stat, 1, FALSE); \
+ gBattleScripting.animArg1 = 14 + (stat); \
+ gBattleScripting.animArg2 = 0; \
+ BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); \
+ effect = ITEM_STATS_CHANGE; \
+ }
+
u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
{
int i = 0;
@@ -3282,7 +3308,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
break;
}
break;
- case 1:
+ case ITEMEFFECT_NORMAL:
if (gBattleMons[battlerId].hp)
{
switch (battlerHoldEffect)
@@ -3295,7 +3321,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp;
gBattleMoveDamage *= -1;
BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
- effect = 4;
+ effect = ITEM_HP_CHANGE;
}
break;
case HOLD_EFFECT_RESTORE_PP:
@@ -3328,7 +3354,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
PREPARE_MOVE_BUFFER(gBattleTextBuff1, move);
BattleScriptExecute(BattleScript_BerryPPHealEnd2);
- BtlController_EmitSetMonData(0, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP);
+ BtlController_EmitSetMonData(BUFFER_A, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP);
MarkBattlerForControllerExec(gActiveBattler);
effect = ITEM_PP_CHANGE;
}
@@ -3365,105 +3391,27 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
RecordItemEffectBattle(battlerId, battlerHoldEffect);
}
break;
- // nice copy/paste there gamefreak, making a function for confuse berries was too much eh?
case HOLD_EFFECT_CONFUSE_SPICY:
- if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn)
- {
- PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_SPICY);
-
- gBattleMoveDamage = gBattleMons[battlerId].maxHP / battlerHoldEffectParam;
- if (gBattleMoveDamage == 0)
- gBattleMoveDamage = 1;
- if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP)
- gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp;
- gBattleMoveDamage *= -1;
- if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_SPICY) < 0)
- BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
- else
- BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
- effect = ITEM_HP_CHANGE;
- }
+ TRY_EAT_CONFUSE_BERRY(FLAVOR_SPICY);
break;
case HOLD_EFFECT_CONFUSE_DRY:
- if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn)
- {
- PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_DRY);
-
- gBattleMoveDamage = gBattleMons[battlerId].maxHP / battlerHoldEffectParam;
- if (gBattleMoveDamage == 0)
- gBattleMoveDamage = 1;
- if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP)
- gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp;
- gBattleMoveDamage *= -1;
- if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_DRY) < 0)
- BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
- else
- BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
- effect = ITEM_HP_CHANGE;
- }
+ TRY_EAT_CONFUSE_BERRY(FLAVOR_DRY);
break;
case HOLD_EFFECT_CONFUSE_SWEET:
- if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn)
- {
- PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_SWEET);
-
- gBattleMoveDamage = gBattleMons[battlerId].maxHP / battlerHoldEffectParam;
- if (gBattleMoveDamage == 0)
- gBattleMoveDamage = 1;
- if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP)
- gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp;
- gBattleMoveDamage *= -1;
- if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_SWEET) < 0)
- BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
- else
- BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
- effect = ITEM_HP_CHANGE;
- }
+ TRY_EAT_CONFUSE_BERRY(FLAVOR_SWEET);
break;
case HOLD_EFFECT_CONFUSE_BITTER:
- if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn)
- {
- PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_BITTER);
-
- gBattleMoveDamage = gBattleMons[battlerId].maxHP / battlerHoldEffectParam;
- if (gBattleMoveDamage == 0)
- gBattleMoveDamage = 1;
- if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP)
- gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp;
- gBattleMoveDamage *= -1;
- if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_BITTER) < 0)
- BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
- else
- BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
- effect = ITEM_HP_CHANGE;
- }
+ TRY_EAT_CONFUSE_BERRY(FLAVOR_BITTER);
break;
case HOLD_EFFECT_CONFUSE_SOUR:
- if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn)
- {
- PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_SOUR);
-
- gBattleMoveDamage = gBattleMons[battlerId].maxHP / battlerHoldEffectParam;
- if (gBattleMoveDamage == 0)
- gBattleMoveDamage = 1;
- if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP)
- gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp;
- gBattleMoveDamage *= -1;
- if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_SOUR) < 0)
- BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
- else
- BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
- effect = ITEM_HP_CHANGE;
- }
+ TRY_EAT_CONFUSE_BERRY(FLAVOR_SOUR);
break;
- // copy/paste again, smh
case HOLD_EFFECT_ATTACK_UP:
if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam
- && !moveTurn && gBattleMons[battlerId].statStages[STAT_ATK] < MAX_STAT_STAGE)
+ && !moveTurn && gBattleMons[battlerId].statStages[STAT_ATK] < MAX_STAT_STAGE)
{
PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK);
- PREPARE_STRING_BUFFER(gBattleTextBuff2, STRINGID_STATROSE);
-
+ PREPARE_STRING_BUFFER(gBattleTextBuff2, STRINGID_STATROSE); // Only the Attack stat-up berry has this
gEffectBattler = battlerId;
SET_STATCHANGER(STAT_ATK, 1, FALSE);
gBattleScripting.animArg1 = 14 + STAT_ATK;
@@ -3473,60 +3421,16 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
}
break;
case HOLD_EFFECT_DEFENSE_UP:
- if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam && !moveTurn
- && gBattleMons[battlerId].statStages[STAT_DEF] < MAX_STAT_STAGE)
- {
- PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_DEF);
-
- gEffectBattler = battlerId;
- SET_STATCHANGER(STAT_DEF, 1, FALSE);
- gBattleScripting.animArg1 = 14 + STAT_DEF;
- gBattleScripting.animArg2 = 0;
- BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
- effect = ITEM_STATS_CHANGE;
- }
+ TRY_EAT_STAT_UP_BERRY(STAT_DEF);
break;
case HOLD_EFFECT_SPEED_UP:
- if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam && !moveTurn
- && gBattleMons[battlerId].statStages[STAT_SPEED] < MAX_STAT_STAGE)
- {
- PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPEED);
-
- gEffectBattler = battlerId;
- SET_STATCHANGER(STAT_SPEED, 1, FALSE);
- gBattleScripting.animArg1 = 14 + STAT_SPEED;
- gBattleScripting.animArg2 = 0;
- BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
- effect = ITEM_STATS_CHANGE;
- }
+ TRY_EAT_STAT_UP_BERRY(STAT_SPEED);
break;
case HOLD_EFFECT_SP_ATTACK_UP:
- if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam && !moveTurn
- && gBattleMons[battlerId].statStages[STAT_SPATK] < MAX_STAT_STAGE)
- {
- PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPATK);
-
- gEffectBattler = battlerId;
- SET_STATCHANGER(STAT_SPATK, 1, FALSE);
- gBattleScripting.animArg1 = 14 + STAT_SPATK;
- gBattleScripting.animArg2 = 0;
- BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
- effect = ITEM_STATS_CHANGE;
- }
+ TRY_EAT_STAT_UP_BERRY(STAT_SPATK);
break;
case HOLD_EFFECT_SP_DEFENSE_UP:
- if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam && !moveTurn
- && gBattleMons[battlerId].statStages[STAT_SPDEF] < MAX_STAT_STAGE)
- {
- PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPDEF);
-
- gEffectBattler = battlerId;
- SET_STATCHANGER(STAT_SPDEF, 1, FALSE);
- gBattleScripting.animArg1 = 14 + STAT_SPDEF;
- gBattleScripting.animArg2 = 0;
- BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
- effect = ITEM_STATS_CHANGE;
- }
+ TRY_EAT_STAT_UP_BERRY(STAT_SPDEF);
break;
case HOLD_EFFECT_CRITICAL_UP:
if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam && !moveTurn
@@ -3540,16 +3444,16 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
case HOLD_EFFECT_RANDOM_STAT_UP:
if (!moveTurn && gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam)
{
- for (i = 0; i < 5; i++)
+ for (i = 0; i < NUM_STATS - 1; i++)
{
if (gBattleMons[battlerId].statStages[STAT_ATK + i] < MAX_STAT_STAGE)
break;
}
- if (i != 5)
+ if (i != NUM_STATS - 1)
{
do
{
- i = Random() % 5;
+ i = Random() % (NUM_STATS - 1);
} while (gBattleMons[battlerId].statStages[STAT_ATK + i] == MAX_STAT_STAGE);
PREPARE_STAT_BUFFER(gBattleTextBuff1, i + 1);
@@ -3575,7 +3479,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
case HOLD_EFFECT_CURE_PAR:
if (gBattleMons[battlerId].status1 & STATUS1_PARALYSIS)
{
- gBattleMons[battlerId].status1 &= ~(STATUS1_PARALYSIS);
+ gBattleMons[battlerId].status1 &= ~STATUS1_PARALYSIS;
BattleScriptExecute(BattleScript_BerryCurePrlzEnd2);
effect = ITEM_STATUS_CHANGE;
}
@@ -3591,7 +3495,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
case HOLD_EFFECT_CURE_BRN:
if (gBattleMons[battlerId].status1 & STATUS1_BURN)
{
- gBattleMons[battlerId].status1 &= ~(STATUS1_BURN);
+ gBattleMons[battlerId].status1 &= ~STATUS1_BURN;
BattleScriptExecute(BattleScript_BerryCureBrnEnd2);
effect = ITEM_STATUS_CHANGE;
}
@@ -3599,7 +3503,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
case HOLD_EFFECT_CURE_FRZ:
if (gBattleMons[battlerId].status1 & STATUS1_FREEZE)
{
- gBattleMons[battlerId].status1 &= ~(STATUS1_FREEZE);
+ gBattleMons[battlerId].status1 &= ~STATUS1_FREEZE;
BattleScriptExecute(BattleScript_BerryCureFrzEnd2);
effect = ITEM_STATUS_CHANGE;
}
@@ -3607,8 +3511,8 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
case HOLD_EFFECT_CURE_SLP:
if (gBattleMons[battlerId].status1 & STATUS1_SLEEP)
{
- gBattleMons[battlerId].status1 &= ~(STATUS1_SLEEP);
- gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[battlerId].status1 &= ~STATUS1_SLEEP;
+ gBattleMons[battlerId].status2 &= ~STATUS2_NIGHTMARE;
BattleScriptExecute(BattleScript_BerryCureSlpEnd2);
effect = ITEM_STATUS_CHANGE;
}
@@ -3616,7 +3520,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
case HOLD_EFFECT_CURE_CONFUSION:
if (gBattleMons[battlerId].status2 & STATUS2_CONFUSION)
{
- gBattleMons[battlerId].status2 &= ~(STATUS2_CONFUSION);
+ gBattleMons[battlerId].status2 &= ~STATUS2_CONFUSION;
BattleScriptExecute(BattleScript_BerryCureConfusionEnd2);
effect = ITEM_EFFECT_OTHER;
}
@@ -3632,7 +3536,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
}
if (gBattleMons[battlerId].status1 & STATUS1_SLEEP)
{
- gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[battlerId].status2 &= ~STATUS2_NIGHTMARE;
StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn);
i++;
}
@@ -3656,12 +3560,12 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn);
i++;
}
- if (!(i > 1))
+ if (i <= 1)
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_CURED_PROBLEM;
else
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_NORMALIZED_STATUS;
gBattleMons[battlerId].status1 = 0;
- gBattleMons[battlerId].status2 &= ~(STATUS2_CONFUSION);
+ gBattleMons[battlerId].status2 &= ~STATUS2_CONFUSION;
BattleScriptExecute(BattleScript_BerryCureChosenStatusEnd2);
effect = ITEM_STATUS_CHANGE;
}
@@ -3669,7 +3573,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
case HOLD_EFFECT_CURE_ATTRACT:
if (gBattleMons[battlerId].status2 & STATUS2_INFATUATION)
{
- gBattleMons[battlerId].status2 &= ~(STATUS2_INFATUATION);
+ gBattleMons[battlerId].status2 &= ~STATUS2_INFATUATION;
StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn);
BattleScriptExecute(BattleScript_BerryCureChosenStatusEnd2);
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_CURED_PROBLEM;
@@ -3685,18 +3589,18 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
switch (effect)
{
case ITEM_STATUS_CHANGE:
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battlerId].status1);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battlerId].status1);
MarkBattlerForControllerExec(gActiveBattler);
break;
case ITEM_PP_CHANGE:
- if (!(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED) && !(gDisableStructs[battlerId].mimickedMoves & gBitTable[i]))
+ if (MOVE_IS_PERMANENT(battlerId, i))
gBattleMons[battlerId].pp[i] = changedPP;
break;
}
}
}
break;
- case 2:
+ case ITEMEFFECT_DUMMY:
break;
case ITEMEFFECT_MOVE_END:
for (battlerId = 0; battlerId < gBattlersCount; battlerId++)
@@ -3717,7 +3621,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
case HOLD_EFFECT_CURE_PAR:
if (gBattleMons[battlerId].status1 & STATUS1_PARALYSIS)
{
- gBattleMons[battlerId].status1 &= ~(STATUS1_PARALYSIS);
+ gBattleMons[battlerId].status1 &= ~STATUS1_PARALYSIS;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryCureParRet;
effect = ITEM_STATUS_CHANGE;
@@ -3735,7 +3639,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
case HOLD_EFFECT_CURE_BRN:
if (gBattleMons[battlerId].status1 & STATUS1_BURN)
{
- gBattleMons[battlerId].status1 &= ~(STATUS1_BURN);
+ gBattleMons[battlerId].status1 &= ~STATUS1_BURN;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryCureBrnRet;
effect = ITEM_STATUS_CHANGE;
@@ -3744,7 +3648,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
case HOLD_EFFECT_CURE_FRZ:
if (gBattleMons[battlerId].status1 & STATUS1_FREEZE)
{
- gBattleMons[battlerId].status1 &= ~(STATUS1_FREEZE);
+ gBattleMons[battlerId].status1 &= ~STATUS1_FREEZE;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryCureFrzRet;
effect = ITEM_STATUS_CHANGE;
@@ -3753,8 +3657,8 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
case HOLD_EFFECT_CURE_SLP:
if (gBattleMons[battlerId].status1 & STATUS1_SLEEP)
{
- gBattleMons[battlerId].status1 &= ~(STATUS1_SLEEP);
- gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[battlerId].status1 &= ~STATUS1_SLEEP;
+ gBattleMons[battlerId].status2 &= ~STATUS2_NIGHTMARE;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryCureSlpRet;
effect = ITEM_STATUS_CHANGE;
@@ -3763,7 +3667,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
case HOLD_EFFECT_CURE_CONFUSION:
if (gBattleMons[battlerId].status2 & STATUS2_CONFUSION)
{
- gBattleMons[battlerId].status2 &= ~(STATUS2_CONFUSION);
+ gBattleMons[battlerId].status2 &= ~STATUS2_CONFUSION;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryCureConfusionRet;
effect = ITEM_EFFECT_OTHER;
@@ -3772,7 +3676,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
case HOLD_EFFECT_CURE_ATTRACT:
if (gBattleMons[battlerId].status2 & STATUS2_INFATUATION)
{
- gBattleMons[battlerId].status2 &= ~(STATUS2_INFATUATION);
+ gBattleMons[battlerId].status2 &= ~STATUS2_INFATUATION;
StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn);
BattleScriptPushCursor();
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_CURED_PROBLEM;
@@ -3784,32 +3688,28 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
if (gBattleMons[battlerId].status1 & STATUS1_ANY || gBattleMons[battlerId].status2 & STATUS2_CONFUSION)
{
if (gBattleMons[battlerId].status1 & STATUS1_PSN_ANY)
- {
StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn);
- }
+
if (gBattleMons[battlerId].status1 & STATUS1_SLEEP)
{
- gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[battlerId].status2 &= ~STATUS2_NIGHTMARE;
StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn);
}
+
if (gBattleMons[battlerId].status1 & STATUS1_PARALYSIS)
- {
StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn);
- }
+
if (gBattleMons[battlerId].status1 & STATUS1_BURN)
- {
StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn);
- }
+
if (gBattleMons[battlerId].status1 & STATUS1_FREEZE)
- {
StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn);
- }
+
if (gBattleMons[battlerId].status2 & STATUS2_CONFUSION)
- {
StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn);
- }
+
gBattleMons[battlerId].status1 = 0;
- gBattleMons[battlerId].status2 &= ~(STATUS2_CONFUSION);
+ gBattleMons[battlerId].status2 &= ~STATUS2_CONFUSION;
BattleScriptPushCursor();
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_CURED_PROBLEM;
gBattlescriptCurrInstr = BattleScript_BerryCureChosenStatusRet;
@@ -3840,7 +3740,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
gBattleScripting.battler = battlerId;
gPotentialItemEffectBattler = battlerId;
gActiveBattler = battlerId;
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
break;
}
@@ -3895,8 +3795,8 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
void ClearFuryCutterDestinyBondGrudge(u8 battlerId)
{
gDisableStructs[battlerId].furyCutterCounter = 0;
- gBattleMons[battlerId].status2 &= ~(STATUS2_DESTINY_BOND);
- gStatuses3[battlerId] &= ~(STATUS3_GRUDGE);
+ gBattleMons[battlerId].status2 &= ~STATUS2_DESTINY_BOND;
+ gStatuses3[battlerId] &= ~STATUS3_GRUDGE;
}
void HandleAction_RunBattleScript(void) // identical to RunBattleScriptCommands
@@ -3911,7 +3811,7 @@ u8 GetMoveTarget(u16 move, u8 setTarget)
u8 moveTarget;
u8 side;
- if (setTarget)
+ if (setTarget != NO_TARGET_OVERRIDE)
moveTarget = setTarget - 1;
else
moveTarget = gBattleMoves[move].target;
@@ -4037,7 +3937,7 @@ u8 IsMonDisobedient(void)
// is not obedient
if (gCurrentMove == MOVE_RAGE)
- gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_RAGE);
+ gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_RAGE;
if (gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP && (gCurrentMove == MOVE_SNORE || gCurrentMove == MOVE_SLEEP_TALK))
{
gBattlescriptCurrInstr = BattleScript_IgnoresWhileAsleep;
@@ -4048,7 +3948,7 @@ u8 IsMonDisobedient(void)
calc = (gBattleMons[gBattlerAttacker].level + obedienceLevel) * rnd >> 8;
if (calc < obedienceLevel)
{
- calc = CheckMoveLimitations(gBattlerAttacker, gBitTable[gCurrMovePos], 0xFF);
+ calc = CheckMoveLimitations(gBattlerAttacker, gBitTable[gCurrMovePos], MOVE_LIMITATIONS_ALL);
if (calc == 0xF) // all moves cannot be used
{
// Randomly select, then print a disobedient string
@@ -4066,7 +3966,7 @@ u8 IsMonDisobedient(void)
gCalledMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos];
gBattlescriptCurrInstr = BattleScript_IgnoresAndUsesRandomMove;
- gBattlerTarget = GetMoveTarget(gCalledMove, 0);
+ gBattlerTarget = GetMoveTarget(gCalledMove, NO_TARGET_OVERRIDE);
gHitMarker |= HITMARKER_DISOBEDIENT_MOVE;
return 2;
}
diff --git a/src/battle_util2.c b/src/battle_util2.c
index 3838f22bb..767e31492 100644
--- a/src/battle_util2.c
+++ b/src/battle_util2.c
@@ -34,8 +34,8 @@ void AllocateBattleResources(void)
gLinkBattleSendBuffer = AllocZeroed(BATTLE_BUFFER_LINK_SIZE);
gLinkBattleRecvBuffer = AllocZeroed(BATTLE_BUFFER_LINK_SIZE);
- gUnknown_0202305C = AllocZeroed(0x2000);
- gUnknown_02023060 = AllocZeroed(0x1000);
+ gBattleAnimBgTileBuffer = AllocZeroed(0x2000);
+ gBattleAnimBgTilemapBuffer = AllocZeroed(0x1000);
if (gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE)
{
@@ -66,8 +66,8 @@ void FreeBattleResources(void)
FREE_AND_SET_NULL(gLinkBattleSendBuffer);
FREE_AND_SET_NULL(gLinkBattleRecvBuffer);
- FREE_AND_SET_NULL(gUnknown_0202305C);
- FREE_AND_SET_NULL(gUnknown_02023060);
+ FREE_AND_SET_NULL(gBattleAnimBgTileBuffer);
+ FREE_AND_SET_NULL(gBattleAnimBgTilemapBuffer);
}
}
@@ -108,16 +108,13 @@ void SwitchPartyOrderInGameMulti(u8 battlerId, u8 arg1)
if (GetBattlerSide(battlerId) != B_SIDE_OPPONENT)
{
s32 i;
-
- // gBattleStruct->field_60[0][i]
-
for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++)
- gBattlePartyCurrentOrder[i] = *(0 * 3 + i + (u8*)(gBattleStruct->field_60));
+ gBattlePartyCurrentOrder[i] = *(0 * 3 + i + (u8*)(gBattleStruct->battlerPartyOrders));
SwitchPartyMonSlots(GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[battlerId]), GetPartyIdFromBattlePartyId(arg1));
for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++)
- *(0 * 3 + i + (u8*)(gBattleStruct->field_60)) = gBattlePartyCurrentOrder[i];
+ *(0 * 3 + i + (u8*)(gBattleStruct->battlerPartyOrders)) = gBattlePartyCurrentOrder[i];
}
}
@@ -207,7 +204,7 @@ u32 BattlePalace_TryEscapeStatus(u8 battlerId)
if (effect == 2)
{
gActiveBattler = battlerId;
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
}
diff --git a/src/contest.c b/src/contest.c
index 175b9da30..05dd39483 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -1136,9 +1136,9 @@ static void AllocContestResources(void)
gContestResources->contestBgTilemaps[3] = AllocZeroed(0x1000);
gContestResources->boxBlinkTiles1 = AllocZeroed(0x800);
gContestResources->boxBlinkTiles2 = AllocZeroed(0x800);
- gContestResources->field_3c = AllocZeroed(0x2000);
- gUnknown_0202305C = gContestResources->field_3c;
- gUnknown_02023060 = gContestResources->contestBgTilemaps[1];
+ gContestResources->animBgTileBuffer = AllocZeroed(0x2000);
+ gBattleAnimBgTileBuffer = gContestResources->animBgTileBuffer;
+ gBattleAnimBgTilemapBuffer = gContestResources->contestBgTilemaps[1];
}
static void FreeContestResources(void)
@@ -1158,10 +1158,10 @@ static void FreeContestResources(void)
FREE_AND_SET_NULL(gContestResources->contestBgTilemaps[3]);
FREE_AND_SET_NULL(gContestResources->boxBlinkTiles1);
FREE_AND_SET_NULL(gContestResources->boxBlinkTiles2);
- FREE_AND_SET_NULL(gContestResources->field_3c);
+ FREE_AND_SET_NULL(gContestResources->animBgTileBuffer);
FREE_AND_SET_NULL(gContestResources);
- gUnknown_0202305C = NULL;
- gUnknown_02023060 = NULL;
+ gBattleAnimBgTileBuffer = NULL;
+ gBattleAnimBgTilemapBuffer = NULL;
}
void CB2_StartContest(void)
diff --git a/src/data/battle_anim.h b/src/data/battle_anim.h
new file mode 100644
index 000000000..5b24981d5
--- /dev/null
+++ b/src/data/battle_anim.h
@@ -0,0 +1,1625 @@
+const struct OamData gOamData_AffineOff_ObjNormal_8x8 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(8x8),
+ .x = 0,
+ .size = SPRITE_SIZE(8x8),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+
+const struct OamData gOamData_AffineOff_ObjNormal_16x16 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x16),
+ .x = 0,
+ .size = SPRITE_SIZE(16x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineOff_ObjNormal_32x32 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x32),
+ .x = 0,
+ .size = SPRITE_SIZE(32x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineOff_ObjNormal_64x64 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(64x64),
+ .x = 0,
+ .size = SPRITE_SIZE(64x64),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineOff_ObjNormal_16x8 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x8),
+ .x = 0,
+ .size = SPRITE_SIZE(16x8),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineOff_ObjNormal_32x8 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x8),
+ .x = 0,
+ .size = SPRITE_SIZE(32x8),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineOff_ObjNormal_32x16 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x16),
+ .x = 0,
+ .size = SPRITE_SIZE(32x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineOff_ObjNormal_64x32 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(64x32),
+ .x = 0,
+ .size = SPRITE_SIZE(64x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineOff_ObjNormal_8x16 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(8x16),
+ .x = 0,
+ .size = SPRITE_SIZE(8x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineOff_ObjNormal_8x32 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(8x32),
+ .x = 0,
+ .size = SPRITE_SIZE(8x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineOff_ObjNormal_16x32 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x32),
+ .x = 0,
+ .size = SPRITE_SIZE(16x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineOff_ObjNormal_32x64 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x64),
+ .x = 0,
+ .size = SPRITE_SIZE(32x64),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineNormal_ObjNormal_8x8 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(8x8),
+ .x = 0,
+ .size = SPRITE_SIZE(8x8),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineNormal_ObjNormal_16x16 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x16),
+ .x = 0,
+ .size = SPRITE_SIZE(16x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineNormal_ObjNormal_32x32 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x32),
+ .x = 0,
+ .size = SPRITE_SIZE(32x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineNormal_ObjNormal_64x64 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(64x64),
+ .x = 0,
+ .size = SPRITE_SIZE(64x64),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineNormal_ObjNormal_16x8 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x8),
+ .x = 0,
+ .size = SPRITE_SIZE(16x8),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineNormal_ObjNormal_32x8 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x8),
+ .x = 0,
+ .size = SPRITE_SIZE(32x8),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineNormal_ObjNormal_32x16 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x16),
+ .x = 0,
+ .size = SPRITE_SIZE(32x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineNormal_ObjNormal_64x32 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(64x32),
+ .x = 0,
+ .size = SPRITE_SIZE(64x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineNormal_ObjNormal_8x16 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(8x16),
+ .x = 0,
+ .size = SPRITE_SIZE(8x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineNormal_ObjNormal_8x32 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(8x32),
+ .x = 0,
+ .size = SPRITE_SIZE(8x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineNormal_ObjNormal_16x32 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x32),
+ .x = 0,
+ .size = SPRITE_SIZE(16x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineNormal_ObjNormal_32x64 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x64),
+ .x = 0,
+ .size = SPRITE_SIZE(32x64),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineDouble_ObjNormal_8x8 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(8x8),
+ .x = 0,
+ .size = SPRITE_SIZE(8x8),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineDouble_ObjNormal_16x16 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x16),
+ .x = 0,
+ .size = SPRITE_SIZE(16x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineDouble_ObjNormal_32x32 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x32),
+ .x = 0,
+ .size = SPRITE_SIZE(32x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineDouble_ObjNormal_64x64 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(64x64),
+ .x = 0,
+ .size = SPRITE_SIZE(64x64),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineDouble_ObjNormal_16x8 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x8),
+ .x = 0,
+ .size = SPRITE_SIZE(16x8),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineDouble_ObjNormal_32x8 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x8),
+ .x = 0,
+ .size = SPRITE_SIZE(32x8),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineDouble_ObjNormal_32x16 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x16),
+ .x = 0,
+ .size = SPRITE_SIZE(32x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineDouble_ObjNormal_64x32 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(64x32),
+ .x = 0,
+ .size = SPRITE_SIZE(64x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineDouble_ObjNormal_8x16 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(8x16),
+ .x = 0,
+ .size = SPRITE_SIZE(8x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineDouble_ObjNormal_8x32 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(8x32),
+ .x = 0,
+ .size = SPRITE_SIZE(8x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineDouble_ObjNormal_16x32 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x32),
+ .x = 0,
+ .size = SPRITE_SIZE(16x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineDouble_ObjNormal_32x64 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x64),
+ .x = 0,
+ .size = SPRITE_SIZE(32x64),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineOff_ObjBlend_8x8 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(8x8),
+ .x = 0,
+ .size = SPRITE_SIZE(8x8),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineOff_ObjBlend_16x16 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x16),
+ .x = 0,
+ .size = SPRITE_SIZE(16x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineOff_ObjBlend_32x32 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x32),
+ .x = 0,
+ .size = SPRITE_SIZE(32x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineOff_ObjBlend_64x64 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(64x64),
+ .x = 0,
+ .size = SPRITE_SIZE(64x64),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineOff_ObjBlend_16x8 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x8),
+ .x = 0,
+ .size = SPRITE_SIZE(16x8),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineOff_ObjBlend_32x8 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x8),
+ .x = 0,
+ .size = SPRITE_SIZE(32x8),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineOff_ObjBlend_32x16 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x16),
+ .x = 0,
+ .size = SPRITE_SIZE(32x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineOff_ObjBlend_64x32 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(64x32),
+ .x = 0,
+ .size = SPRITE_SIZE(64x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineOff_ObjBlend_8x16 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(8x16),
+ .x = 0,
+ .size = SPRITE_SIZE(8x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineOff_ObjBlend_8x32 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(8x32),
+ .x = 0,
+ .size = SPRITE_SIZE(8x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineOff_ObjBlend_16x32 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x32),
+ .x = 0,
+ .size = SPRITE_SIZE(16x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineOff_ObjBlend_32x64 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x64),
+ .x = 0,
+ .size = SPRITE_SIZE(32x64),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineNormal_ObjBlend_8x8 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(8x8),
+ .x = 0,
+ .size = SPRITE_SIZE(8x8),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineNormal_ObjBlend_16x16 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x16),
+ .x = 0,
+ .size = SPRITE_SIZE(16x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineNormal_ObjBlend_32x32 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x32),
+ .x = 0,
+ .size = SPRITE_SIZE(32x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineNormal_ObjBlend_64x64 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(64x64),
+ .x = 0,
+ .size = SPRITE_SIZE(64x64),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineNormal_ObjBlend_16x8 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x8),
+ .x = 0,
+ .size = SPRITE_SIZE(16x8),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineNormal_ObjBlend_32x8 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x8),
+ .x = 0,
+ .size = SPRITE_SIZE(32x8),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineNormal_ObjBlend_32x16 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x16),
+ .x = 0,
+ .size = SPRITE_SIZE(32x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineNormal_ObjBlend_64x32 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(64x32),
+ .x = 0,
+ .size = SPRITE_SIZE(64x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineNormal_ObjBlend_8x16 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(8x16),
+ .x = 0,
+ .size = SPRITE_SIZE(8x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineNormal_ObjBlend_8x32 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(8x32),
+ .x = 0,
+ .size = SPRITE_SIZE(8x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineNormal_ObjBlend_16x32 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x32),
+ .x = 0,
+ .size = SPRITE_SIZE(16x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineNormal_ObjBlend_32x64 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x64),
+ .x = 0,
+ .size = SPRITE_SIZE(32x64),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineDouble_ObjBlend_8x8 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(8x8),
+ .x = 0,
+ .size = SPRITE_SIZE(8x8),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineDouble_ObjBlend_16x16 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x16),
+ .x = 0,
+ .size = SPRITE_SIZE(16x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineDouble_ObjBlend_32x32 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x32),
+ .x = 0,
+ .size = SPRITE_SIZE(32x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineDouble_ObjBlend_64x64 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(64x64),
+ .x = 0,
+ .size = SPRITE_SIZE(64x64),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineDouble_ObjBlend_16x8 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x8),
+ .x = 0,
+ .size = SPRITE_SIZE(16x8),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineDouble_ObjBlend_32x8 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x8),
+ .x = 0,
+ .size = SPRITE_SIZE(32x8),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineDouble_ObjBlend_32x16 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x16),
+ .x = 0,
+ .size = SPRITE_SIZE(32x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineDouble_ObjBlend_64x32 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(64x32),
+ .x = 0,
+ .size = SPRITE_SIZE(64x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineDouble_ObjBlend_8x16 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(8x16),
+ .x = 0,
+ .size = SPRITE_SIZE(8x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineDouble_ObjBlend_8x32 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(8x32),
+ .x = 0,
+ .size = SPRITE_SIZE(8x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineDouble_ObjBlend_16x32 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x32),
+ .x = 0,
+ .size = SPRITE_SIZE(16x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct OamData gOamData_AffineDouble_ObjBlend_32x64 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_DOUBLE,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x64),
+ .x = 0,
+ .size = SPRITE_SIZE(32x64),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+};
+
+const struct CompressedSpriteSheet gBattleAnimPicTable[] =
+{
+ {gBattleAnimSpriteGfx_Bone, 0x0200, ANIM_TAG_BONE},
+ {gBattleAnimSpriteGfx_Spark, 0x0300, ANIM_TAG_SPARK},
+ {gBattleAnimSpriteGfx_Pencil, 0x0200, ANIM_TAG_PENCIL},
+ {gBattleAnimSpriteGfx_AirWave, 0x0100, ANIM_TAG_AIR_WAVE},
+ {gBattleAnimSpriteGfx_Orb, 0x0200, ANIM_TAG_ORB},
+ {gBattleAnimSpriteGfx_Sword, 0x0400, ANIM_TAG_SWORD},
+ {gBattleAnimSpriteGfx_Seed, 0x0180, ANIM_TAG_SEED},
+ {gBattleAnimSpriteGfx_Explosion6, 0x0800, ANIM_TAG_EXPLOSION_6},
+ {gBattleAnimSpriteGfx_PinkOrb, 0x0020, ANIM_TAG_PINK_ORB},
+ {gBattleAnimSpriteGfx_Gust, 0x0400, ANIM_TAG_GUST},
+ {gBattleAnimSpriteGfx_IceCube, 0x1200, ANIM_TAG_ICE_CUBE},
+ {gBattleAnimSpriteGfx_Spark2, 0x0180, ANIM_TAG_SPARK_2},
+ {gBattleAnimSpriteGfx_Orange, 0x0080, ANIM_TAG_ORANGE},
+ {gBattleAnimSpriteGfx_YellowBall, 0x0080, ANIM_TAG_YELLOW_BALL},
+ {gBattleAnimSpriteGfx_LockOn, 0x0280, ANIM_TAG_LOCK_ON},
+ {gBattleAnimSpriteGfx_TiedBag, 0x0080, ANIM_TAG_TIED_BAG},
+ {gBattleAnimSpriteGfx_BlackSmoke, 0x0100, ANIM_TAG_BLACK_SMOKE},
+ {gBattleAnimSpriteGfx_BlackBall, 0x0020, ANIM_TAG_BLACK_BALL},
+ {gBattleAnimSpriteGfx_Conversion, 0x0080, ANIM_TAG_CONVERSION},
+ {gBattleAnimSpriteGfx_Glass, 0x0400, ANIM_TAG_GLASS},
+ {gBattleAnimSpriteGfx_HornHit, 0x0200, ANIM_TAG_HORN_HIT},
+ {gBattleAnimSpriteGfx_Hit, 0x0A00, ANIM_TAG_HIT},
+ {gBattleAnimSpriteGfx_Hit, 0x0A00, ANIM_TAG_HIT_2},
+ {gBattleAnimSpriteGfx_BlueShards, 0x0380, ANIM_TAG_BLUE_SHARDS},
+ {gBattleAnimSpriteGfx_ClosingEye, 0x0300, ANIM_TAG_CLOSING_EYE},
+ {gBattleAnimSpriteGfx_WavingHand, 0x0A00, ANIM_TAG_WAVING_HAND},
+ {gBattleAnimSpriteGfx_HitDuplicate, 0x0A00, ANIM_TAG_HIT_DUPLICATE},
+ {gBattleAnimSpriteGfx_Leer, 0x0A00, ANIM_TAG_LEER},
+ {gBattleAnimSpriteGfx_BlueBurst, 0x0A00, ANIM_TAG_BLUE_BURST},
+ {gBattleAnimSpriteGfx_SmallEmber, 0x0A00, ANIM_TAG_SMALL_EMBER},
+ {gBattleAnimSpriteGfx_GraySmoke, 0x0A00, ANIM_TAG_GRAY_SMOKE},
+ {gBattleAnimSpriteGfx_BlueStar, 0x0E00, ANIM_TAG_BLUE_STAR},
+ {gBattleAnimSpriteGfx_BubbleBurst, 0x0380, ANIM_TAG_BUBBLE_BURST},
+ {gBattleAnimSpriteGfx_Fire, 0x1000, ANIM_TAG_FIRE},
+ {gBattleAnimSpriteGfx_SpinningFire, 0x0800, ANIM_TAG_SPINNING_FIRE},
+ {gBattleAnimSpriteGfx_FirePlume, 0x0A00, ANIM_TAG_FIRE_PLUME},
+ {gBattleAnimSpriteGfx_Lightning2, 0x0800, ANIM_TAG_LIGHTNING_2},
+ {gBattleAnimSpriteGfx_Lightning, 0x0A00, ANIM_TAG_LIGHTNING},
+ {gBattleAnimSpriteGfx_ClawSlash2, 0x0A00, ANIM_TAG_CLAW_SLASH_2},
+ {gBattleAnimSpriteGfx_ClawSlash, 0x0A00, ANIM_TAG_CLAW_SLASH},
+ {gBattleAnimSpriteGfx_Scratch3, 0x0A00, ANIM_TAG_SCRATCH_3},
+ {gBattleAnimSpriteGfx_Scratch2, 0x0A00, ANIM_TAG_SCRATCH_2},
+ {gBattleAnimSpriteGfx_BubbleBurst2, 0x0A00, ANIM_TAG_BUBBLE_BURST_2},
+ {gBattleAnimSpriteGfx_IceChunk, 0x0A00, ANIM_TAG_ICE_CHUNK},
+ {gBattleAnimSpriteGfx_Glass2, 0x0A00, ANIM_TAG_GLASS_2},
+ {gBattleAnimSpriteGfx_PinkHeart2, 0x0A00, ANIM_TAG_PINK_HEART_2},
+ {gBattleAnimSpriteGfx_SapDrip, 0x1000, ANIM_TAG_SAP_DRIP},
+ {gBattleAnimSpriteGfx_SapDrip, 0x1000, ANIM_TAG_SAP_DRIP_2},
+ {gBattleAnimSpriteGfx_Sparkle1, 0x1000, ANIM_TAG_SPARKLE_1},
+ {gBattleAnimSpriteGfx_Sparkle1, 0x1000, ANIM_TAG_SPARKLE_2},
+ {gBattleAnimSpriteGfx_HumanoidFoot, 0x0200, ANIM_TAG_HUMANOID_FOOT},
+ {gBattleAnimSpriteGfx_MonsterFoot, 0x0200, ANIM_TAG_MONSTER_FOOT},
+ {gBattleAnimSpriteGfx_HumanoidHand, 0x0200, ANIM_TAG_HUMANOID_HAND},
+ {gBattleAnimSpriteGfx_NoiseLine, 0x0800, ANIM_TAG_NOISE_LINE},
+ {gBattleAnimSpriteGfx_YellowUnk, 0x0080, ANIM_TAG_YELLOW_UNK},
+ {gBattleAnimSpriteGfx_RedFist, 0x0200, ANIM_TAG_RED_FIST},
+ {gBattleAnimSpriteGfx_SlamHit, 0x1000, ANIM_TAG_SLAM_HIT},
+ {gBattleAnimSpriteGfx_Ring, 0x0180, ANIM_TAG_RING},
+ {gBattleAnimSpriteGfx_Rocks, 0x0C00, ANIM_TAG_ROCKS},
+ {gBattleAnimSpriteGfx_Z, 0x0100, ANIM_TAG_Z},
+ {gBattleAnimSpriteGfx_YellowUnk2, 0x0040, ANIM_TAG_YELLOW_UNK_2},
+ {gBattleAnimSpriteGfx_AirSlash, 0x0180, ANIM_TAG_AIR_SLASH},
+ {gBattleAnimSpriteGfx_SpinningGreenOrbs, 0x0800, ANIM_TAG_SPINNING_GREEN_ORBS},
+ {gBattleAnimSpriteGfx_Leaf, 0x0480, ANIM_TAG_LEAF},
+ {gBattleAnimSpriteGfx_Finger, 0x0200, ANIM_TAG_FINGER},
+ {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_POISON_POWDER},
+ {gBattleAnimSpriteGfx_BrownTriangle, 0x0100, ANIM_TAG_BROWN_TRIANGLE},
+ {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_SLEEP_POWDER},
+ {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_STUN_SPORE},
+ {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_POWDER},
+ {gBattleAnimSpriteGfx_Sparkle3, 0x0200, ANIM_TAG_SPARKLE_3},
+ {gBattleAnimSpriteGfx_Sparkle4, 0x0A00, ANIM_TAG_SPARKLE_4},
+ {gBattleAnimSpriteGfx_MusicNotes, 0x0300, ANIM_TAG_MUSIC_NOTES},
+ {gBattleAnimSpriteGfx_Duck, 0x0180, ANIM_TAG_DUCK},
+ {gBattleAnimSpriteGfx_MudSand, 0x00A0, ANIM_TAG_MUD_SAND},
+ {gBattleAnimSpriteGfx_Alert, 0x0700, ANIM_TAG_ALERT},
+ {gBattleAnimSpriteGfx_BlueFlames, 0x0400, ANIM_TAG_BLUE_FLAMES},
+ {gBattleAnimSpriteGfx_BlueFlames2, 0x0200, ANIM_TAG_BLUE_FLAMES_2},
+ {gBattleAnimSpriteGfx_Shock4, 0x0300, ANIM_TAG_SHOCK_4},
+ {gBattleAnimSpriteGfx_Shock, 0x0C00, ANIM_TAG_SHOCK},
+ {gBattleAnimSpriteGfx_Bell2, 0x0A00, ANIM_TAG_BELL_2},
+ {gBattleAnimSpriteGfx_PinkGlove, 0x0080, ANIM_TAG_PINK_GLOVE},
+ {gBattleAnimSpriteGfx_BlueLines, 0x0040, ANIM_TAG_BLUE_LINES},
+ {gBattleAnimSpriteGfx_Impact3, 0x0E00, ANIM_TAG_IMPACT_3},
+ {gBattleAnimSpriteGfx_Impact2, 0x0E00, ANIM_TAG_IMPACT_2},
+ {gBattleAnimSpriteGfx_Reticle, 0x0280, ANIM_TAG_RETICLE},
+ {gBattleAnimSpriteGfx_Breath, 0x0200, ANIM_TAG_BREATH},
+ {gBattleAnimSpriteGfx_Anger, 0x0080, ANIM_TAG_ANGER},
+ {gBattleAnimSpriteGfx_Snowball, 0x00C0, ANIM_TAG_SNOWBALL},
+ {gBattleAnimSpriteGfx_Vine, 0x0A00, ANIM_TAG_VINE},
+ {gBattleAnimSpriteGfx_Sword2, 0x0200, ANIM_TAG_SWORD_2},
+ {gBattleAnimSpriteGfx_Clapping, 0x0180, ANIM_TAG_CLAPPING},
+ {gBattleAnimSpriteGfx_RedTube, 0x0080, ANIM_TAG_RED_TUBE},
+ {gBattleAnimSpriteGfx_Amnesia, 0x1000, ANIM_TAG_AMNESIA},
+ {gBattleAnimSpriteGfx_String2, 0x0A00, ANIM_TAG_STRING_2},
+ {gBattleAnimSpriteGfx_Pencil2, 0x0180, ANIM_TAG_PENCIL_2},
+ {gBattleAnimSpriteGfx_Petal, 0x0380, ANIM_TAG_PETAL},
+ {gBattleAnimSpriteGfx_BentSpoon, 0x0C00, ANIM_TAG_BENT_SPOON},
+ {gBattleAnimSpriteGfx_Web, 0x0200, ANIM_TAG_WEB},
+ {gBattleAnimSpriteGfx_MilkBottle, 0x0200, ANIM_TAG_MILK_BOTTLE},
+ {gBattleAnimSpriteGfx_Coin, 0x0200, ANIM_TAG_COIN},
+ {gBattleAnimSpriteGfx_CrackedEgg, 0x0200, ANIM_TAG_CRACKED_EGG},
+ {gBattleAnimSpriteGfx_HatchedEgg, 0x0400, ANIM_TAG_HATCHED_EGG},
+ {gBattleAnimSpriteGfx_FreshEgg, 0x0080, ANIM_TAG_FRESH_EGG},
+ {gBattleAnimSpriteGfx_Fangs, 0x0400, ANIM_TAG_FANGS},
+ {gBattleAnimSpriteGfx_Explosion2, 0x0c00, ANIM_TAG_EXPLOSION_2},
+ {gBattleAnimSpriteGfx_Explosion3, 0x0200, ANIM_TAG_EXPLOSION_3},
+ {gBattleAnimSpriteGfx_WaterDroplet, 0x1000, ANIM_TAG_WATER_DROPLET},
+ {gBattleAnimSpriteGfx_WaterDroplet2, 0x0a00, ANIM_TAG_WATER_DROPLET_2},
+ {gBattleAnimSpriteGfx_Seed2, 0x0020, ANIM_TAG_SEED_2},
+ {gBattleAnimSpriteGfx_Sprout, 0x0e00, ANIM_TAG_SPROUT},
+ {gBattleAnimSpriteGfx_RedWand, 0x0080, ANIM_TAG_RED_WAND},
+ {gBattleAnimSpriteGfx_PurpleGreenUnk, 0x0a00, ANIM_TAG_PURPLE_GREEN_UNK},
+ {gBattleAnimSpriteGfx_WaterColumn, 0x0400, ANIM_TAG_WATER_COLUMN},
+ {gBattleAnimSpriteGfx_MudUnk, 0x0200, ANIM_TAG_MUD_UNK},
+ {gBattleAnimSpriteGfx_RainDrops, 0x0700, ANIM_TAG_RAIN_DROPS},
+ {gBattleAnimSpriteGfx_FurySwipes, 0x0800, ANIM_TAG_FURY_SWIPES},
+ {gBattleAnimSpriteGfx_Vine2, 0x0a00, ANIM_TAG_VINE_2},
+ {gBattleAnimSpriteGfx_Teeth, 0x0600, ANIM_TAG_TEETH},
+ {gBattleAnimSpriteGfx_Bone2, 0x0800, ANIM_TAG_BONE_2},
+ {gBattleAnimSpriteGfx_WhiteBag, 0x0200, ANIM_TAG_WHITE_BAG},
+ {gBattleAnimSpriteGfx_Unknown, 0x0040, ANIM_TAG_UNKNOWN},
+ {gBattleAnimSpriteGfx_PurpleCoral, 0x0180, ANIM_TAG_PURPLE_CORAL},
+ {gBattleAnimSpriteGfx_PurpleDroplet, 0x0600, ANIM_TAG_PURPLE_DROPLET},
+ {gBattleAnimSpriteGfx_Shock2, 0x0600, ANIM_TAG_SHOCK_2},
+ {gBattleAnimSpriteGfx_ClosingEye2, 0x0200, ANIM_TAG_CLOSING_EYE_2},
+ {gBattleAnimSpriteGfx_MetalBall, 0x0080, ANIM_TAG_METAL_BALL},
+ {gBattleAnimSpriteGfx_MonsterDoll, 0x0200, ANIM_TAG_MONSTER_DOLL},
+ {gBattleAnimSpriteGfx_Whirlwind, 0x0800, ANIM_TAG_WHIRLWIND},
+ {gBattleAnimSpriteGfx_Whirlwind2, 0x0080, ANIM_TAG_WHIRLWIND_2},
+ {gBattleAnimSpriteGfx_Explosion4, 0x0a00, ANIM_TAG_EXPLOSION_4},
+ {gBattleAnimSpriteGfx_Explosion5, 0x0280, ANIM_TAG_EXPLOSION_5},
+ {gBattleAnimSpriteGfx_Tongue, 0x0280, ANIM_TAG_TONGUE},
+ {gBattleAnimSpriteGfx_Smoke, 0x0100, ANIM_TAG_SMOKE},
+ {gBattleAnimSpriteGfx_Smoke2, 0x0200, ANIM_TAG_SMOKE_2},
+ {gBattleAnimSpriteGfx_Impact, 0x0200, ANIM_TAG_IMPACT},
+ {gBattleAnimSpriteGfx_CircleImpact, 0x0020, ANIM_TAG_CIRCLE_IMPACT},
+ {gBattleAnimSpriteGfx_Scratch, 0x0a00, ANIM_TAG_SCRATCH},
+ {gBattleAnimSpriteGfx_Cut, 0x0800, ANIM_TAG_CUT},
+ {gBattleAnimSpriteGfx_SharpTeeth, 0x0800, ANIM_TAG_SHARP_TEETH},
+ {gBattleAnimSpriteGfx_RainbowRings, 0x00c0, ANIM_TAG_RAINBOW_RINGS},
+ {gBattleAnimSpriteGfx_IceCrystals, 0x01c0, ANIM_TAG_ICE_CRYSTALS},
+ {gBattleAnimSpriteGfx_IceSpikes, 0x0100, ANIM_TAG_ICE_SPIKES},
+ {gBattleAnimSpriteGfx_HandsAndFeet, 0x0800, ANIM_TAG_HANDS_AND_FEET},
+ {gBattleAnimSpriteGfx_MistCloud, 0x0200, ANIM_TAG_MIST_CLOUD},
+ {gBattleAnimSpriteGfx_Clamp, 0x0800, ANIM_TAG_CLAMP},
+ {gBattleAnimSpriteGfx_Bubble, 0x0180, ANIM_TAG_BUBBLE},
+ {gBattleAnimSpriteGfx_Orbs, 0x0180, ANIM_TAG_ORBS},
+ {gBattleAnimSpriteGfx_WaterImpact, 0x0200, ANIM_TAG_WATER_IMPACT},
+ {gBattleAnimSpriteGfx_WaterOrb, 0x0200, ANIM_TAG_WATER_ORB},
+ {gBattleAnimSpriteGfx_PoisonBubble, 0x0180, ANIM_TAG_POISON_BUBBLE},
+ {gBattleAnimSpriteGfx_ToxicBubble, 0x0400, ANIM_TAG_TOXIC_BUBBLE},
+ {gBattleAnimSpriteGfx_Spikes, 0x0080, ANIM_TAG_SPIKES},
+ {gBattleAnimSpriteGfx_HornHit2, 0x0100, ANIM_TAG_HORN_HIT_2},
+ {gBattleAnimSpriteGfx_AirWave2, 0x0100, ANIM_TAG_AIR_WAVE_2},
+ {gBattleAnimSpriteGfx_SmallBubbles, 0x0140, ANIM_TAG_SMALL_BUBBLES},
+ {gBattleAnimSpriteGfx_RoundShadow, 0x0800, ANIM_TAG_ROUND_SHADOW},
+ {gBattleAnimSpriteGfx_Sunlight, 0x0200, ANIM_TAG_SUNLIGHT},
+ {gBattleAnimSpriteGfx_Spore, 0x0100, ANIM_TAG_SPORE},
+ {gBattleAnimSpriteGfx_Flower, 0x00a0, ANIM_TAG_FLOWER},
+ {gBattleAnimSpriteGfx_RazorLeaf, 0x0100, ANIM_TAG_RAZOR_LEAF},
+ {gBattleAnimSpriteGfx_Needle, 0x0080, ANIM_TAG_NEEDLE},
+ {gBattleAnimSpriteGfx_WhirlwindLines, 0x0300, ANIM_TAG_WHIRLWIND_LINES},
+ {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_GOLD_RING},
+ {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_PURPLE_RING},
+ {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_BLUE_RING},
+ {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_GREEN_LIGHT_WALL},
+ {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_BLUE_LIGHT_WALL},
+ {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_RED_LIGHT_WALL},
+ {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_GRAY_LIGHT_WALL},
+ {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_ORANGE_LIGHT_WALL},
+ {gBattleAnimSpriteGfx_BlackBall2, 0x0080, ANIM_TAG_BLACK_BALL_2},
+ {gBattleAnimSpriteGfx_MistCloud, 0x0200, ANIM_TAG_PURPLE_GAS_CLOUD},
+ {gBattleAnimSpriteGfx_SparkH, 0x0200, ANIM_TAG_SPARK_H},
+ {gBattleAnimSpriteGfx_YellowStar, 0x0200, ANIM_TAG_YELLOW_STAR},
+ {gBattleAnimSpriteGfx_LargeFreshEgg, 0x0080, ANIM_TAG_LARGE_FRESH_EGG},
+ {gBattleAnimSpriteGfx_ShadowBall, 0x0200, ANIM_TAG_SHADOW_BALL},
+ {gBattleAnimSpriteGfx_Lick, 0x0500, ANIM_TAG_LICK},
+ {gBattleAnimSpriteGfx_VoidLines, 0x0800, ANIM_TAG_VOID_LINES},
+ {gBattleAnimSpriteGfx_String, 0x0400, ANIM_TAG_STRING},
+ {gBattleAnimSpriteGfx_WebThread, 0x0020, ANIM_TAG_WEB_THREAD},
+ {gBattleAnimSpriteGfx_SpiderWeb, 0x0800, ANIM_TAG_SPIDER_WEB},
+ {gBattleAnimSpriteGfx_Lightbulb, 0x0100, ANIM_TAG_LIGHTBULB},
+ {gBattleAnimSpriteGfx_Slash, 0x0800, ANIM_TAG_SLASH},
+ {gBattleAnimSpriteGfx_FocusEnergy, 0x0400, ANIM_TAG_FOCUS_ENERGY},
+ {gBattleAnimSpriteGfx_SphereToCube, 0x0a00, ANIM_TAG_SPHERE_TO_CUBE},
+ {gBattleAnimSpriteGfx_Tendrils, 0x1000, ANIM_TAG_TENDRILS},
+ {gBattleAnimSpriteGfx_Eye, 0x0800, ANIM_TAG_EYE},
+ {gBattleAnimSpriteGfx_WhiteShadow, 0x0400, ANIM_TAG_WHITE_SHADOW},
+ {gBattleAnimSpriteGfx_TealAlert, 0x0200, ANIM_TAG_TEAL_ALERT},
+ {gBattleAnimSpriteGfx_OpeningEye, 0x0800, ANIM_TAG_OPENING_EYE},
+ {gBattleAnimSpriteGfx_RoundWhiteHalo, 0x0800, ANIM_TAG_ROUND_WHITE_HALO},
+ {gBattleAnimSpriteGfx_FangAttack, 0x0800, ANIM_TAG_FANG_ATTACK},
+ {gBattleAnimSpriteGfx_PurpleHandOutline, 0x0200, ANIM_TAG_PURPLE_HAND_OUTLINE},
+ {gBattleAnimSpriteGfx_Moon, 0x0800, ANIM_TAG_MOON},
+ {gBattleAnimSpriteGfx_GreenSparkle, 0x0200, ANIM_TAG_GREEN_SPARKLE},
+ {gBattleAnimSpriteGfx_Spiral, 0x0800, ANIM_TAG_SPIRAL},
+ {gBattleAnimSpriteGfx_SnoreZ, 0x0200, ANIM_TAG_SNORE_Z},
+ {gBattleAnimSpriteGfx_Explosion, 0x0800, ANIM_TAG_EXPLOSION},
+ {gBattleAnimSpriteGfx_Nail, 0x0400, ANIM_TAG_NAIL},
+ {gBattleAnimSpriteGfx_GhostlySpirit, 0x0200, ANIM_TAG_GHOSTLY_SPIRIT},
+ {gBattleAnimSpriteGfx_WarmRock, 0x0a80, ANIM_TAG_WARM_ROCK},
+ {gBattleAnimSpriteGfx_BreakingEgg, 0x0600, ANIM_TAG_BREAKING_EGG},
+ {gBattleAnimSpriteGfx_ThinRing, 0x0800, ANIM_TAG_THIN_RING},
+ {gBattleAnimSpriteGfx_PunchImpact, 0x0200, ANIM_TAG_PUNCH_IMPACT},
+ {gBattleAnimSpriteGfx_Bell, 0x0600, ANIM_TAG_BELL},
+ {gBattleAnimSpriteGfx_MusicNotes2, 0x0800, ANIM_TAG_MUSIC_NOTES_2},
+ {gBattleAnimSpriteGfx_SpeedDust, 0x0180, ANIM_TAG_SPEED_DUST},
+ {gBattleAnimSpriteGfx_TornMetal, 0x0800, ANIM_TAG_TORN_METAL},
+ {gBattleAnimSpriteGfx_ThoughtBubble, 0x0800, ANIM_TAG_THOUGHT_BUBBLE},
+ {gBattleAnimSpriteGfx_MagentaHeart, 0x0080, ANIM_TAG_MAGENTA_HEART},
+ {gBattleAnimSpriteGfx_ElectricOrbs, 0x0080, ANIM_TAG_ELECTRIC_ORBS},
+ {gBattleAnimSpriteGfx_CircleOfLight, 0x0800, ANIM_TAG_CIRCLE_OF_LIGHT},
+ {gBattleAnimSpriteGfx_Electricity, 0x0800, ANIM_TAG_ELECTRICITY},
+ {gBattleAnimSpriteGfx_Finger2, 0x0600, ANIM_TAG_FINGER_2},
+ {gBattleAnimSpriteGfx_MovementWaves, 0x0600, ANIM_TAG_MOVEMENT_WAVES},
+ {gBattleAnimSpriteGfx_MagentaHeart, 0x0080, ANIM_TAG_RED_HEART},
+ {gBattleAnimSpriteGfx_RedOrb, 0x0080, ANIM_TAG_RED_ORB},
+ {gBattleAnimSpriteGfx_EyeSparkle, 0x0180, ANIM_TAG_EYE_SPARKLE},
+ {gBattleAnimSpriteGfx_MagentaHeart, 0x0080, ANIM_TAG_PINK_HEART},
+ {gBattleAnimSpriteGfx_Angel, 0x0200, ANIM_TAG_ANGEL},
+ {gBattleAnimSpriteGfx_Devil, 0x0400, ANIM_TAG_DEVIL},
+ {gBattleAnimSpriteGfx_Swipe, 0x0a00, ANIM_TAG_SWIPE},
+ {gBattleAnimSpriteGfx_Roots, 0x0800, ANIM_TAG_ROOTS},
+ {gBattleAnimSpriteGfx_ItemBag, 0x0200, ANIM_TAG_ITEM_BAG},
+ {gBattleAnimSpriteGfx_JaggedMusicNote, 0x0400, ANIM_TAG_JAGGED_MUSIC_NOTE},
+ {gBattleAnimSpriteGfx_Pokeball, 0x0080, ANIM_TAG_POKEBALL},
+ {gBattleAnimSpriteGfx_Spotlight, 0x0800, ANIM_TAG_SPOTLIGHT},
+ {gBattleAnimSpriteGfx_LetterZ, 0x0200, ANIM_TAG_LETTER_Z},
+ {gBattleAnimSpriteGfx_RapidSpin, 0x0300, ANIM_TAG_RAPID_SPIN},
+ {gBattleAnimSpriteGfx_TriAttackTriangle, 0x0800, ANIM_TAG_TRI_ATTACK_TRIANGLE},
+ {gBattleAnimSpriteGfx_WispOrb, 0x0380, ANIM_TAG_WISP_ORB},
+ {gBattleAnimSpriteGfx_WispFire, 0x0800, ANIM_TAG_WISP_FIRE},
+ {gBattleAnimSpriteGfx_GoldStars, 0x00c0, ANIM_TAG_GOLD_STARS},
+ {gBattleAnimSpriteGfx_EclipsingOrb, 0x0800, ANIM_TAG_ECLIPSING_ORB},
+ {gBattleAnimSpriteGfx_GrayOrb, 0x0060, ANIM_TAG_GRAY_ORB},
+ {gBattleAnimSpriteGfx_GrayOrb, 0x0060, ANIM_TAG_BLUE_ORB},
+ {gBattleAnimSpriteGfx_GrayOrb, 0x0060, ANIM_TAG_RED_ORB_2},
+ {gBattleAnimSpriteGfx_PinkPetal, 0x0080, ANIM_TAG_PINK_PETAL},
+ {gBattleAnimSpriteGfx_PainSplit, 0x0180, ANIM_TAG_PAIN_SPLIT},
+ {gBattleAnimSpriteGfx_Confetti, 0x0180, ANIM_TAG_CONFETTI},
+ {gBattleAnimSpriteGfx_GreenStar, 0x0200, ANIM_TAG_GREEN_STAR},
+ {gBattleAnimSpriteGfx_PinkCloud, 0x0200, ANIM_TAG_PINK_CLOUD},
+ {gBattleAnimSpriteGfx_SweatDrop, 0x0020, ANIM_TAG_SWEAT_DROP},
+ {gBattleAnimSpriteGfx_GuardRing, 0x0400, ANIM_TAG_GUARD_RING},
+ {gBattleAnimSpriteGfx_PurpleScratch, 0x0600, ANIM_TAG_PURPLE_SCRATCH},
+ {gBattleAnimSpriteGfx_PurpleSwipe, 0x1000, ANIM_TAG_PURPLE_SWIPE},
+ {gBattleAnimSpriteGfx_TagHand, 0x0400, ANIM_TAG_TAG_HAND},
+ {gBattleAnimSpriteGfx_SmallRedEye, 0x0020, ANIM_TAG_SMALL_RED_EYE},
+ {gBattleAnimSpriteGfx_HollowOrb, 0x0080, ANIM_TAG_HOLLOW_ORB},
+ {gBattleAnimSpriteGfx_XSign, 0x0800, ANIM_TAG_X_SIGN},
+ {gBattleAnimSpriteGfx_BluegreenOrb, 0x0080, ANIM_TAG_BLUEGREEN_ORB},
+ {gBattleAnimSpriteGfx_PawPrint, 0x0200, ANIM_TAG_PAW_PRINT},
+ {gBattleAnimSpriteGfx_PurpleFlame, 0x0400, ANIM_TAG_PURPLE_FLAME},
+ {gBattleAnimSpriteGfx_RedBall, 0x0200, ANIM_TAG_RED_BALL},
+ {gBattleAnimSpriteGfx_SmellingsaltEffect, 0x0200, ANIM_TAG_SMELLINGSALT_EFFECT},
+ {gBattleAnimSpriteGfx_Meteor, 0x0800, ANIM_TAG_METEOR},
+ {gBattleAnimSpriteGfx_FlatRock, 0x0280, ANIM_TAG_FLAT_ROCK},
+ {gBattleAnimSpriteGfx_MagnifyingGlass, 0x0200, ANIM_TAG_MAGNIFYING_GLASS},
+ {gBattleAnimSpriteGfx_WaterOrb, 0x0200, ANIM_TAG_BROWN_ORB},
+ {gBattleAnimSpriteGfx_MetalSoundWaves, 0x0400, ANIM_TAG_METAL_SOUND_WAVES},
+ {gBattleAnimSpriteGfx_FlyingDirt, 0x0200, ANIM_TAG_FLYING_DIRT},
+ {gBattleAnimSpriteGfx_IcicleSpear, 0x0200, ANIM_TAG_ICICLE_SPEAR},
+ {gBattleAnimSpriteGfx_Hail, 0x0080, ANIM_TAG_HAIL},
+ {gBattleAnimSpriteGfx_GlowyRedOrb, 0x0020, ANIM_TAG_GLOWY_RED_ORB},
+ {gBattleAnimSpriteGfx_GlowyRedOrb, 0x0020, ANIM_TAG_GLOWY_GREEN_ORB},
+ {gBattleAnimSpriteGfx_GreenSpike, 0x0080, ANIM_TAG_GREEN_SPIKE},
+ {gBattleAnimSpriteGfx_CircleOfLight, 0x0800, ANIM_TAG_WHITE_CIRCLE_OF_LIGHT},
+ {gBattleAnimSpriteGfx_GlowyRedOrb, 0x0020, ANIM_TAG_GLOWY_BLUE_ORB},
+ {gBattleAnimSpriteGfx_Pokeblock, 0x0080, ANIM_TAG_POKEBLOCK},
+ {gBattleAnimSpriteGfx_WhiteFeather, 0x0400, ANIM_TAG_WHITE_FEATHER},
+ {gBattleAnimSpriteGfx_Sparkle6, 0x0080, ANIM_TAG_SPARKLE_6},
+ {gBattleAnimSpriteGfx_Splash, 0x0800, ANIM_TAG_SPLASH},
+ {gBattleAnimSpriteGfx_SweatBead, 0x0020, ANIM_TAG_SWEAT_BEAD},
+ {gBattleAnimSpriteGfx_Gem1, 0x0800, ANIM_TAG_GEM_1},
+ {gBattleAnimSpriteGfx_Gem2, 0x0800, ANIM_TAG_GEM_2},
+ {gBattleAnimSpriteGfx_Gem3, 0x0800, ANIM_TAG_GEM_3},
+ {gBattleAnimSpriteGfx_SlamHit2, 0x1000, ANIM_TAG_SLAM_HIT_2},
+ {gBattleAnimSpriteGfx_Recycle, 0x0800, ANIM_TAG_RECYCLE},
+ {gBattleAnimSpriteGfx_RedParticles, 0x00a0, ANIM_TAG_RED_PARTICLES},
+ {gBattleAnimSpriteGfx_Protect, 0x0800, ANIM_TAG_PROTECT},
+ {gBattleAnimSpriteGfx_DirtMound, 0x0200, ANIM_TAG_DIRT_MOUND},
+ {gBattleAnimSpriteGfx_Shock3, 0x0600, ANIM_TAG_SHOCK_3},
+ {gBattleAnimSpriteGfx_WeatherBall, 0x0200, ANIM_TAG_WEATHER_BALL},
+ {gBattleAnimSpriteGfx_Bird, 0x0800, ANIM_TAG_BIRD},
+ {gBattleAnimSpriteGfx_CrossImpact, 0x0200, ANIM_TAG_CROSS_IMPACT},
+ {gBattleAnimSpriteGfx_Slash, 0x0800, ANIM_TAG_SLASH_2},
+ {gBattleAnimSpriteGfx_SlamHit, 0x1000, ANIM_TAG_WHIP_HIT},
+ {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_BLUE_RING_2},
+};
+
+const struct CompressedSpritePalette gBattleAnimPaletteTable[] =
+{
+ {gBattleAnimSpritePal_Bone, ANIM_TAG_BONE},
+ {gBattleAnimSpritePal_Spark, ANIM_TAG_SPARK},
+ {gBattleAnimSpritePal_Pencil, ANIM_TAG_PENCIL},
+ {gBattleAnimSpritePal_AirWave, ANIM_TAG_AIR_WAVE},
+ {gBattleAnimSpritePal_Orb, ANIM_TAG_ORB},
+ {gBattleAnimSpritePal_Sword, ANIM_TAG_SWORD},
+ {gBattleAnimSpritePal_Seed, ANIM_TAG_SEED},
+ {gBattleAnimSpritePal_Explosion6, ANIM_TAG_EXPLOSION_6},
+ {gBattleAnimSpritePal_PinkOrb, ANIM_TAG_PINK_ORB},
+ {gBattleAnimSpritePal_Gust, ANIM_TAG_GUST},
+ {gBattleAnimSpritePal_IceCube, ANIM_TAG_ICE_CUBE},
+ {gBattleAnimSpritePal_Spark2, ANIM_TAG_SPARK_2},
+ {gBattleAnimSpritePal_Orange, ANIM_TAG_ORANGE},
+ {gBattleAnimSpritePal_YellowBall, ANIM_TAG_YELLOW_BALL},
+ {gBattleAnimSpritePal_LockOn, ANIM_TAG_LOCK_ON},
+ {gBattleAnimSpritePal_TiedBag, ANIM_TAG_TIED_BAG},
+ {gBattleAnimSpritePal_BlackSmoke, ANIM_TAG_BLACK_SMOKE},
+ {gBattleAnimSpritePal_BlackSmoke, ANIM_TAG_BLACK_BALL},
+ {gBattleAnimSpritePal_Conversion, ANIM_TAG_CONVERSION},
+ {gBattleAnimSpritePal_Glass, ANIM_TAG_GLASS},
+ {gBattleAnimSpritePal_HornHit, ANIM_TAG_HORN_HIT},
+ {gBattleAnimSpritePal_Hit, ANIM_TAG_HIT},
+ {gBattleAnimSpritePal_Hit2, ANIM_TAG_HIT_2},
+ {gBattleAnimSpritePal_BlueShards, ANIM_TAG_BLUE_SHARDS},
+ {gBattleAnimSpritePal_ClosingEye, ANIM_TAG_CLOSING_EYE},
+ {gBattleAnimSpritePal_WavingHand, ANIM_TAG_WAVING_HAND},
+ {gBattleAnimSpritePal_HitDuplicate, ANIM_TAG_HIT_DUPLICATE},
+ {gBattleAnimSpritePal_Leer, ANIM_TAG_LEER},
+ {gBattleAnimSpritePal_BlueBurst, ANIM_TAG_BLUE_BURST},
+ {gBattleAnimSpritePal_SmallEmber, ANIM_TAG_SMALL_EMBER},
+ {gBattleAnimSpritePal_GraySmoke, ANIM_TAG_GRAY_SMOKE},
+ {gBattleAnimSpritePal_BlueStar, ANIM_TAG_BLUE_STAR},
+ {gBattleAnimSpritePal_BubbleBurst, ANIM_TAG_BUBBLE_BURST},
+ {gBattleAnimSpritePal_Fire, ANIM_TAG_FIRE},
+ {gBattleAnimSpritePal_Fire, ANIM_TAG_SPINNING_FIRE},
+ {gBattleAnimSpritePal_Fire, ANIM_TAG_FIRE_PLUME},
+ {gBattleAnimSpritePal_Lightning2, ANIM_TAG_LIGHTNING_2},
+ {gBattleAnimSpritePal_Lightning2, ANIM_TAG_LIGHTNING},
+ {gBattleAnimSpritePal_ClawSlash2, ANIM_TAG_CLAW_SLASH_2},
+ {gBattleAnimSpritePal_ClawSlash, ANIM_TAG_CLAW_SLASH},
+ {gBattleAnimSpritePal_ClawSlash2, ANIM_TAG_SCRATCH_3},
+ {gBattleAnimSpritePal_ClawSlash2, ANIM_TAG_SCRATCH_2},
+ {gBattleAnimSpritePal_BubbleBurst2, ANIM_TAG_BUBBLE_BURST_2},
+ {gBattleAnimSpritePal_IceChunk, ANIM_TAG_ICE_CHUNK},
+ {gBattleAnimSpritePal_Glass2, ANIM_TAG_GLASS_2},
+ {gBattleAnimSpritePal_PinkHeart2, ANIM_TAG_PINK_HEART_2},
+ {gBattleAnimSpritePal_SapDrip, ANIM_TAG_SAP_DRIP},
+ {gBattleAnimSpritePal_SapDrip2, ANIM_TAG_SAP_DRIP},
+ {gBattleAnimSpritePal_Sparkle1, ANIM_TAG_SPARKLE_1},
+ {gBattleAnimSpritePal_Sparkle2, ANIM_TAG_SPARKLE_2},
+ {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_HUMANOID_FOOT},
+ {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_MONSTER_FOOT},
+ {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_HUMANOID_HAND},
+ {gBattleAnimSpritePal_HitDuplicate, ANIM_TAG_NOISE_LINE},
+ {gBattleAnimSpritePal_YellowUnk, ANIM_TAG_YELLOW_UNK},
+ {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_RED_FIST},
+ {gBattleAnimSpritePal_SlamHit, ANIM_TAG_SLAM_HIT},
+ {gBattleAnimSpritePal_Ring, ANIM_TAG_RING},
+ {gBattleAnimSpritePal_Rocks, ANIM_TAG_ROCKS},
+ {gBattleAnimSpritePal_Z, ANIM_TAG_Z},
+ {gBattleAnimSpritePal_YellowUnk2, ANIM_TAG_YELLOW_UNK_2},
+ {gBattleAnimSpritePal_AirSlash, ANIM_TAG_AIR_SLASH},
+ {gBattleAnimSpritePal_SpinningGreenOrbs, ANIM_TAG_SPINNING_GREEN_ORBS},
+ {gBattleAnimSpritePal_Leaf, ANIM_TAG_LEAF},
+ {gBattleAnimSpritePal_Finger, ANIM_TAG_FINGER},
+ {gBattleAnimSpritePal_PoisonPowder, ANIM_TAG_POISON_POWDER},
+ {gBattleAnimSpritePal_BrownTriangle, ANIM_TAG_BROWN_TRIANGLE},
+ {gBattleAnimSpritePal_SleepPowder, ANIM_TAG_SLEEP_POWDER},
+ {gBattleAnimSpritePal_StunSpore, ANIM_TAG_STUN_SPORE},
+ {gBattleAnimSpritePal_PoisonPowder, ANIM_TAG_POWDER},
+ {gBattleAnimSpritePal_Sparkle3, ANIM_TAG_SPARKLE_3},
+ {gBattleAnimSpritePal_Sparkle3, ANIM_TAG_SPARKLE_4},
+ {gBattleAnimSpritePal_MusicNotes, ANIM_TAG_MUSIC_NOTES},
+ {gBattleAnimSpritePal_Duck, ANIM_TAG_DUCK},
+ {gBattleAnimSpritePal_MudSand, ANIM_TAG_MUD_SAND},
+ {gBattleAnimSpritePal_Alert, ANIM_TAG_ALERT},
+ {gBattleAnimSpritePal_BlueFlames, ANIM_TAG_BLUE_FLAMES},
+ {gBattleAnimSpritePal_BlueFlames, ANIM_TAG_BLUE_FLAMES_2},
+ {gBattleAnimSpritePal_Shock4, ANIM_TAG_SHOCK_4},
+ {gBattleAnimSpritePal_Shock4, ANIM_TAG_SHOCK},
+ {gBattleAnimSpritePal_Bell2, ANIM_TAG_BELL_2},
+ {gBattleAnimSpritePal_PinkGlove, ANIM_TAG_PINK_GLOVE},
+ {gBattleAnimSpritePal_BlueLines, ANIM_TAG_BLUE_LINES},
+ {gBattleAnimSpritePal_Impact3, ANIM_TAG_IMPACT_3},
+ {gBattleAnimSpritePal_Impact2, ANIM_TAG_IMPACT_2},
+ {gBattleAnimSpritePal_Reticle, ANIM_TAG_RETICLE},
+ {gBattleAnimSpritePal_Breath, ANIM_TAG_BREATH},
+ {gBattleAnimSpritePal_Anger, ANIM_TAG_ANGER},
+ {gBattleAnimSpritePal_Snowball, ANIM_TAG_SNOWBALL},
+ {gBattleAnimSpritePal_Vine, ANIM_TAG_VINE},
+ {gBattleAnimSpritePal_Sword2, ANIM_TAG_SWORD_2},
+ {gBattleAnimSpritePal_Clapping, ANIM_TAG_CLAPPING},
+ {gBattleAnimSpritePal_RedTube, ANIM_TAG_RED_TUBE},
+ {gBattleAnimSpritePal_Amnesia, ANIM_TAG_AMNESIA},
+ {gBattleAnimSpritePal_String2, ANIM_TAG_STRING_2},
+ {gBattleAnimSpritePal_Pencil2, ANIM_TAG_PENCIL_2},
+ {gBattleAnimSpritePal_Petal, ANIM_TAG_PETAL},
+ {gBattleAnimSpritePal_BentSpoon, ANIM_TAG_BENT_SPOON},
+ {gBattleAnimSpritePal_String2, ANIM_TAG_WEB},
+ {gBattleAnimSpritePal_MilkBottle, ANIM_TAG_MILK_BOTTLE},
+ {gBattleAnimSpritePal_Coin, ANIM_TAG_COIN},
+ {gBattleAnimSpritePal_CrackedEgg, ANIM_TAG_CRACKED_EGG},
+ {gBattleAnimSpritePal_CrackedEgg, ANIM_TAG_HATCHED_EGG},
+ {gBattleAnimSpritePal_FreshEgg, ANIM_TAG_FRESH_EGG},
+ {gBattleAnimSpritePal_Fangs, ANIM_TAG_FANGS},
+ {gBattleAnimSpritePal_Explosion2, ANIM_TAG_EXPLOSION_2},
+ {gBattleAnimSpritePal_Explosion2, ANIM_TAG_EXPLOSION_3},
+ {gBattleAnimSpritePal_WaterDroplet, ANIM_TAG_WATER_DROPLET},
+ {gBattleAnimSpritePal_WaterDroplet, ANIM_TAG_WATER_DROPLET_2},
+ {gBattleAnimSpritePal_Seed2, ANIM_TAG_SEED_2},
+ {gBattleAnimSpritePal_Seed2, ANIM_TAG_SPROUT},
+ {gBattleAnimSpritePal_RedWand, ANIM_TAG_RED_WAND},
+ {gBattleAnimSpritePal_PurpleGreenUnk, ANIM_TAG_PURPLE_GREEN_UNK},
+ {gBattleAnimSpritePal_WaterColumn, ANIM_TAG_WATER_COLUMN},
+ {gBattleAnimSpritePal_MudUnk, ANIM_TAG_MUD_UNK},
+ {gBattleAnimSpritePal_RainDrops, ANIM_TAG_RAIN_DROPS},
+ {gBattleAnimSpritePal_FurySwipes, ANIM_TAG_FURY_SWIPES},
+ {gBattleAnimSpritePal_Vine2, ANIM_TAG_VINE_2},
+ {gBattleAnimSpritePal_Teeth, ANIM_TAG_TEETH},
+ {gBattleAnimSpritePal_Bone2, ANIM_TAG_BONE_2},
+ {gBattleAnimSpritePal_WhiteBag, ANIM_TAG_WHITE_BAG},
+ {gBattleAnimSpritePal_Unknown, ANIM_TAG_UNKNOWN},
+ {gBattleAnimSpritePal_PurpleCoral, ANIM_TAG_PURPLE_CORAL},
+ {gBattleAnimSpritePal_PurpleCoral, ANIM_TAG_PURPLE_DROPLET},
+ {gBattleAnimSpritePal_Shock2, ANIM_TAG_SHOCK_2},
+ {gBattleAnimSpritePal_ClosingEye2, ANIM_TAG_CLOSING_EYE_2},
+ {gBattleAnimSpritePal_MetalBall, ANIM_TAG_METAL_BALL},
+ {gBattleAnimSpritePal_MonsterDoll, ANIM_TAG_MONSTER_DOLL},
+ {gBattleAnimSpritePal_Whirlwind, ANIM_TAG_WHIRLWIND},
+ {gBattleAnimSpritePal_Whirlwind, ANIM_TAG_WHIRLWIND_2},
+ {gBattleAnimSpritePal_Explosion4, ANIM_TAG_EXPLOSION_4},
+ {gBattleAnimSpritePal_Explosion4, ANIM_TAG_EXPLOSION_5},
+ {gBattleAnimSpritePal_Tongue, ANIM_TAG_TONGUE},
+ {gBattleAnimSpritePal_Smoke, ANIM_TAG_SMOKE},
+ {gBattleAnimSpritePal_Smoke, ANIM_TAG_SMOKE_2},
+ {gBattleAnimSpritePal_Impact, ANIM_TAG_IMPACT},
+ {gBattleAnimSpritePal_CircleImpact, ANIM_TAG_CIRCLE_IMPACT},
+ {gBattleAnimSpritePal_Impact, ANIM_TAG_SCRATCH},
+ {gBattleAnimSpritePal_Impact, ANIM_TAG_CUT},
+ {gBattleAnimSpritePal_SharpTeeth, ANIM_TAG_SHARP_TEETH},
+ {gBattleAnimSpritePal_RainbowRings, ANIM_TAG_RAINBOW_RINGS},
+ {gBattleAnimSpritePal_IceCrystals, ANIM_TAG_ICE_CRYSTALS},
+ {gBattleAnimSpritePal_IceCrystals, ANIM_TAG_ICE_SPIKES},
+ {gBattleAnimSpritePal_HandsAndFeet, ANIM_TAG_HANDS_AND_FEET},
+ {gBattleAnimSpritePal_MistCloud, ANIM_TAG_MIST_CLOUD},
+ {gBattleAnimSpritePal_SharpTeeth, ANIM_TAG_CLAMP},
+ {gBattleAnimSpritePal_RainDrops, ANIM_TAG_BUBBLE},
+ {gBattleAnimSpritePal_Orbs, ANIM_TAG_ORBS},
+ {gBattleAnimSpritePal_WaterImpact, ANIM_TAG_WATER_IMPACT},
+ {gBattleAnimSpritePal_WaterImpact, ANIM_TAG_WATER_ORB},
+ {gBattleAnimSpritePal_PoisonBubble, ANIM_TAG_POISON_BUBBLE},
+ {gBattleAnimSpritePal_PoisonBubble, ANIM_TAG_TOXIC_BUBBLE},
+ {gBattleAnimSpritePal_Spikes, ANIM_TAG_SPIKES},
+ {gBattleAnimSpritePal_HornHit2, ANIM_TAG_HORN_HIT_2},
+ {gBattleAnimSpritePal_AirWave2, ANIM_TAG_AIR_WAVE_2},
+ {gBattleAnimSpritePal_SmallBubbles, ANIM_TAG_SMALL_BUBBLES},
+ {gBattleAnimSpritePal_RoundShadow, ANIM_TAG_ROUND_SHADOW},
+ {gBattleAnimSpritePal_Sunlight, ANIM_TAG_SUNLIGHT},
+ {gBattleAnimSpritePal_Spore, ANIM_TAG_SPORE},
+ {gBattleAnimSpritePal_Flower, ANIM_TAG_FLOWER},
+ {gBattleAnimSpritePal_RazorLeaf, ANIM_TAG_RAZOR_LEAF},
+ {gBattleAnimSpritePal_Needle, ANIM_TAG_NEEDLE},
+ {gBattleAnimSpritePal_WhirlwindLines, ANIM_TAG_WHIRLWIND_LINES},
+ {gBattleAnimSpritePal_GoldRing, ANIM_TAG_GOLD_RING},
+ {gBattleAnimSpritePal_PurpleRing, ANIM_TAG_PURPLE_RING},
+ {gBattleAnimSpritePal_BlueRing, ANIM_TAG_BLUE_RING},
+ {gBattleAnimSpritePal_GreenLightWall, ANIM_TAG_GREEN_LIGHT_WALL},
+ {gBattleAnimSpritePal_BlueLightWall, ANIM_TAG_BLUE_LIGHT_WALL},
+ {gBattleAnimSpritePal_RedLightWall, ANIM_TAG_RED_LIGHT_WALL},
+ {gBattleAnimSpritePal_GrayLightWall, ANIM_TAG_GRAY_LIGHT_WALL},
+ {gBattleAnimSpritePal_OrangeLightWall, ANIM_TAG_ORANGE_LIGHT_WALL},
+ {gBattleAnimSpritePal_BlackBall2, ANIM_TAG_BLACK_BALL_2},
+ {gBattleAnimSpritePal_PurpleGasCloud, ANIM_TAG_PURPLE_GAS_CLOUD},
+ {gBattleAnimSpritePal_Spark, ANIM_TAG_SPARK_H},
+ {gBattleAnimSpritePal_YellowStar, ANIM_TAG_YELLOW_STAR},
+ {gBattleAnimSpritePal_LargeFreshEgg, ANIM_TAG_LARGE_FRESH_EGG},
+ {gBattleAnimSpritePal_ShadowBall, ANIM_TAG_SHADOW_BALL},
+ {gBattleAnimSpritePal_Lick, ANIM_TAG_LICK},
+ {gBattleAnimSpritePal_VoidLines, ANIM_TAG_VOID_LINES},
+ {gBattleAnimSpritePal_String, ANIM_TAG_STRING},
+ {gBattleAnimSpritePal_String, ANIM_TAG_WEB_THREAD},
+ {gBattleAnimSpritePal_String, ANIM_TAG_SPIDER_WEB},
+ {gBattleAnimSpritePal_Lightbulb, ANIM_TAG_LIGHTBULB},
+ {gBattleAnimSpritePal_Slash, ANIM_TAG_SLASH},
+ {gBattleAnimSpritePal_FocusEnergy, ANIM_TAG_FOCUS_ENERGY},
+ {gBattleAnimSpritePal_SphereToCube, ANIM_TAG_SPHERE_TO_CUBE},
+ {gBattleAnimSpritePal_Tendrils, ANIM_TAG_TENDRILS},
+ {gBattleAnimSpritePal_Eye, ANIM_TAG_EYE},
+ {gBattleAnimSpritePal_WhiteShadow, ANIM_TAG_WHITE_SHADOW},
+ {gBattleAnimSpritePal_TealAlert, ANIM_TAG_TEAL_ALERT},
+ {gBattleAnimSpritePal_OpeningEye, ANIM_TAG_OPENING_EYE},
+ {gBattleAnimSpritePal_RoundWhiteHalo, ANIM_TAG_ROUND_WHITE_HALO},
+ {gBattleAnimSpritePal_FangAttack, ANIM_TAG_FANG_ATTACK},
+ {gBattleAnimSpritePal_PurpleHandOutline, ANIM_TAG_PURPLE_HAND_OUTLINE},
+ {gBattleAnimSpritePal_Moon, ANIM_TAG_MOON},
+ {gBattleAnimSpritePal_GreenSparkle, ANIM_TAG_GREEN_SPARKLE},
+ {gBattleAnimSpritePal_Spiral, ANIM_TAG_SPIRAL},
+ {gBattleAnimSpritePal_SnoreZ, ANIM_TAG_SNORE_Z},
+ {gBattleAnimSpritePal_Explosion, ANIM_TAG_EXPLOSION},
+ {gBattleAnimSpritePal_Nail, ANIM_TAG_NAIL},
+ {gBattleAnimSpritePal_GhostlySpirit, ANIM_TAG_GHOSTLY_SPIRIT},
+ {gBattleAnimSpritePal_WarmRock, ANIM_TAG_WARM_ROCK},
+ {gBattleAnimSpritePal_BreakingEgg, ANIM_TAG_BREAKING_EGG},
+ {gBattleAnimSpritePal_ThinRing, ANIM_TAG_THIN_RING},
+ {gBattleAnimSpritePal_PunchImpact, ANIM_TAG_PUNCH_IMPACT},
+ {gBattleAnimSpritePal_Bell, ANIM_TAG_BELL},
+ {gBattleAnimSpritePal_MusicNotes2, ANIM_TAG_MUSIC_NOTES_2},
+ {gBattleAnimSpritePal_SpeedDust, ANIM_TAG_SPEED_DUST},
+ {gBattleAnimSpritePal_BlueLightWall, ANIM_TAG_TORN_METAL},
+ {gBattleAnimSpritePal_ThoughtBubble, ANIM_TAG_THOUGHT_BUBBLE},
+ {gBattleAnimSpritePal_MagentaHeart, ANIM_TAG_MAGENTA_HEART},
+ {gBattleAnimSpritePal_ElectricOrbs, ANIM_TAG_ELECTRIC_ORBS},
+ {gBattleAnimSpritePal_ElectricOrbs, ANIM_TAG_CIRCLE_OF_LIGHT},
+ {gBattleAnimSpritePal_ElectricOrbs, ANIM_TAG_ELECTRICITY},
+ {gBattleAnimSpritePal_Finger, ANIM_TAG_FINGER_2},
+ {gBattleAnimSpritePal_MovementWaves, ANIM_TAG_MOVEMENT_WAVES},
+ {gBattleAnimSpritePal_RedHeart, ANIM_TAG_RED_HEART},
+ {gBattleAnimSpritePal_RedOrb, ANIM_TAG_RED_ORB},
+ {gBattleAnimSpritePal_EyeSparkle, ANIM_TAG_EYE_SPARKLE},
+ {gBattleAnimSpritePal_PinkHeart, ANIM_TAG_PINK_HEART},
+ {gBattleAnimSpritePal_Angel, ANIM_TAG_ANGEL},
+ {gBattleAnimSpritePal_Devil, ANIM_TAG_DEVIL},
+ {gBattleAnimSpritePal_Swipe, ANIM_TAG_SWIPE},
+ {gBattleAnimSpritePal_Roots, ANIM_TAG_ROOTS},
+ {gBattleAnimSpritePal_ItemBag, ANIM_TAG_ITEM_BAG},
+ {gBattleAnimSpritePal_JaggedMusicNote, ANIM_TAG_JAGGED_MUSIC_NOTE},
+ {gBattleAnimSpritePal_Pokeball, ANIM_TAG_POKEBALL},
+ {gBattleAnimSpritePal_Pokeball, ANIM_TAG_SPOTLIGHT},
+ {gBattleAnimSpritePal_LetterZ, ANIM_TAG_LETTER_Z},
+ {gBattleAnimSpritePal_RapidSpin, ANIM_TAG_RAPID_SPIN},
+ {gBattleAnimSpritePal_TriAttackTriangle, ANIM_TAG_TRI_ATTACK_TRIANGLE},
+ {gBattleAnimSpritePal_WispOrb, ANIM_TAG_WISP_ORB},
+ {gBattleAnimSpritePal_WispOrb, ANIM_TAG_WISP_FIRE},
+ {gBattleAnimSpritePal_GoldStars, ANIM_TAG_GOLD_STARS},
+ {gBattleAnimSpritePal_EclipsingOrb, ANIM_TAG_ECLIPSING_ORB},
+ {gBattleAnimSpritePal_GrayOrb, ANIM_TAG_GRAY_ORB},
+ {gBattleAnimSpritePal_BlueOrb, ANIM_TAG_BLUE_ORB},
+ {gBattleAnimSpritePal_RedOrb2, ANIM_TAG_RED_ORB_2},
+ {gBattleAnimSpritePal_PinkPetal, ANIM_TAG_PINK_PETAL},
+ {gBattleAnimSpritePal_PainSplit, ANIM_TAG_PAIN_SPLIT},
+ {gBattleAnimSpritePal_Confetti, ANIM_TAG_CONFETTI},
+ {gBattleAnimSpritePal_GreenStar, ANIM_TAG_GREEN_STAR},
+ {gBattleAnimSpritePal_PinkCloud, ANIM_TAG_PINK_CLOUD},
+ {gBattleAnimSpritePal_SweatDrop, ANIM_TAG_SWEAT_DROP},
+ {gBattleAnimSpritePal_GuardRing, ANIM_TAG_GUARD_RING},
+ {gBattleAnimSpritePal_PurpleScratch, ANIM_TAG_PURPLE_SCRATCH},
+ {gBattleAnimSpritePal_PurpleScratch, ANIM_TAG_PURPLE_SWIPE},
+ {gBattleAnimSpritePal_Finger, ANIM_TAG_TAG_HAND},
+ {gBattleAnimSpritePal_SmallRedEye, ANIM_TAG_SMALL_RED_EYE},
+ {gBattleAnimSpritePal_HollowOrb, ANIM_TAG_HOLLOW_ORB},
+ {gBattleAnimSpritePal_HollowOrb, ANIM_TAG_X_SIGN},
+ {gBattleAnimSpritePal_BluegreenOrb, ANIM_TAG_BLUEGREEN_ORB},
+ {gBattleAnimSpritePal_PawPrint, ANIM_TAG_PAW_PRINT},
+ {gBattleAnimSpritePal_PurpleFlame, ANIM_TAG_PURPLE_FLAME},
+ {gBattleAnimSpritePal_RedBall, ANIM_TAG_RED_BALL},
+ {gBattleAnimSpritePal_SmellingsaltEffect, ANIM_TAG_SMELLINGSALT_EFFECT},
+ {gBattleAnimSpritePal_Meteor, ANIM_TAG_METEOR},
+ {gBattleAnimSpritePal_FlatRock, ANIM_TAG_FLAT_ROCK},
+ {gBattleAnimSpritePal_MagnifyingGlass, ANIM_TAG_MAGNIFYING_GLASS},
+ {gBattleAnimSpritePal_BrownOrb, ANIM_TAG_BROWN_ORB},
+ {gBattleAnimSpritePal_MetalSoundWaves, ANIM_TAG_METAL_SOUND_WAVES},
+ {gBattleAnimSpritePal_FlyingDirt, ANIM_TAG_FLYING_DIRT},
+ {gBattleAnimSpritePal_IcicleSpear, ANIM_TAG_ICICLE_SPEAR},
+ {gBattleAnimSpritePal_Hail, ANIM_TAG_HAIL},
+ {gBattleAnimSpritePal_GlowyRedOrb, ANIM_TAG_GLOWY_RED_ORB},
+ {gBattleAnimSpritePal_GlowyGreenOrb, ANIM_TAG_GLOWY_GREEN_ORB},
+ {gBattleAnimSpritePal_GreenSpike, ANIM_TAG_GREEN_SPIKE},
+ {gBattleAnimSpritePal_WhiteCircleOfLight, ANIM_TAG_WHITE_CIRCLE_OF_LIGHT},
+ {gBattleAnimSpritePal_GlowyBlueOrb, ANIM_TAG_GLOWY_BLUE_ORB},
+ {gBattleAnimSpritePal_Pokeblock, ANIM_TAG_POKEBLOCK},
+ {gBattleAnimSpritePal_WhiteFeather, ANIM_TAG_WHITE_FEATHER},
+ {gBattleAnimSpritePal_Sparkle6, ANIM_TAG_SPARKLE_6},
+ {gBattleAnimSpritePal_Splash, ANIM_TAG_SPLASH},
+ {gBattleAnimSpritePal_Splash, ANIM_TAG_SWEAT_BEAD},
+ {gBattleAnimSpritePal_Gem1, ANIM_TAG_GEM_1},
+ {gBattleAnimSpritePal_Gem1, ANIM_TAG_GEM_2},
+ {gBattleAnimSpritePal_Gem1, ANIM_TAG_GEM_3},
+ {gBattleAnimSpritePal_SlamHit2, ANIM_TAG_SLAM_HIT_2},
+ {gBattleAnimSpritePal_Recycle, ANIM_TAG_RECYCLE},
+ {gBattleAnimSpritePal_RedParticles, ANIM_TAG_RED_PARTICLES},
+ {gBattleAnimSpritePal_Protect, ANIM_TAG_PROTECT},
+ {gBattleAnimSpritePal_DirtMound, ANIM_TAG_DIRT_MOUND},
+ {gBattleAnimSpritePal_Shock3, ANIM_TAG_SHOCK_3},
+ {gBattleAnimSpritePal_WeatherBall, ANIM_TAG_WEATHER_BALL},
+ {gBattleAnimSpritePal_Bird, ANIM_TAG_BIRD},
+ {gBattleAnimSpritePal_CrossImpact, ANIM_TAG_CROSS_IMPACT},
+ {gBattleAnimSpritePal_Slash2, ANIM_TAG_SLASH_2},
+ {gBattleAnimSpritePal_WhipHit, ANIM_TAG_WHIP_HIT},
+ {gBattleAnimSpritePal_BlueRing2, ANIM_TAG_BLUE_RING_2},
+};
+
+const struct BattleAnimBackground gBattleAnimBackgroundTable[] =
+{
+ [BG_NONE] = {gBattleAnimBgImage_Dark, gBattleAnimBgPalette_Dark, gBattleAnimBgTilemap_Dark},
+ [BG_DARK] = {gBattleAnimBgImage_Dark, gBattleAnimBgPalette_Dark, gBattleAnimBgTilemap_Dark},
+ [BG_GHOST] = {gBattleAnimBgImage_Ghost, gBattleAnimBgPalette_Ghost, gBattleAnimBgTilemap_Ghost},
+ [BG_PSYCHIC] = {gBattleAnimBgImage_Psychic, gBattleAnimBgPalette_Psychic, gBattleAnimBgTilemap_Psychic},
+ [BG_IMPACT_OPPONENT] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Impact, gBattleAnimBgTilemap_ImpactOpponent},
+ [BG_IMPACT_PLAYER] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Impact, gBattleAnimBgTilemap_ImpactPlayer},
+ [BG_IMPACT_CONTESTS] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Impact, gBattleAnimBgTilemap_ImpactContests},
+ [BG_DRILL] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Drill, gBattleAnimBgTilemap_Drill},
+ [BG_DRILL_CONTESTS] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Drill, gBattleAnimBgTilemap_DrillContests},
+ [BG_HIGHSPEED_OPPONENT] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Highspeed, gBattleAnimBgTilemap_HighspeedOpponent},
+ [BG_HIGHSPEED_PLAYER] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Highspeed, gBattleAnimBgTilemap_HighspeedPlayer},
+ [BG_THUNDER] = {gBattleAnimBgImage_Thunder, gBattleAnimBgPalette_Thunder, gBattleAnimBgTilemap_Thunder},
+ [BG_GUILLOTINE_OPPONENT] = {gBattleAnimBgImage_Guillotine, gBattleAnimBgPalette_Guillotine, gBattleAnimBgTilemap_GuillotineOpponent},
+ [BG_GUILLOTINE_PLAYER] = {gBattleAnimBgImage_Guillotine, gBattleAnimBgPalette_Guillotine, gBattleAnimBgTilemap_GuillotinePlayer},
+ [BG_GUILLOTINE_CONTESTS] = {gBattleAnimBgImage_Guillotine, gBattleAnimBgPalette_Guillotine, gBattleAnimBgTilemap_GuillotineContests},
+ [BG_ICE] = {gBattleAnimBgImage_Ice, gBattleAnimBgPalette_Ice, gBattleAnimBgTilemap_Ice},
+ [BG_COSMIC] = {gBattleAnimBgImage_Cosmic, gBattleAnimBgPalette_Cosmic, gBattleAnimBgTilemap_Cosmic},
+ [BG_IN_AIR] = {gBattleAnimBgImage_InAir, gBattleAnimBgPalette_InAir, gBattleAnimBgTilemap_InAir},
+ [BG_SKY] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Sky, gBattleAnimBgTilemap_Drill},
+ [BG_SKY_CONTESTS] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Sky, gBattleAnimBgTilemap_DrillContests},
+ [BG_AURORA] = {gBattleAnimBgImage_Aurora, gBattleAnimBgPalette_Aurora, gBattleAnimBgTilemap_Aurora},
+ [BG_FISSURE] = {gBattleAnimBgImage_Fissure, gBattleAnimBgPalette_Fissure, gBattleAnimBgTilemap_Fissure},
+ [BG_BUG_OPPONENT] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Bug, gBattleAnimBgTilemap_HighspeedOpponent},
+ [BG_BUG_PLAYER] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Bug, gBattleAnimBgTilemap_HighspeedPlayer},
+ [BG_SOLARBEAM_OPPONENT] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Solarbeam, gBattleAnimBgTilemap_ImpactOpponent},
+ [BG_SOLARBEAM_PLAYER] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Solarbeam, gBattleAnimBgTilemap_ImpactPlayer},
+ [BG_SOLARBEAM_CONTESTS] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Solarbeam, gBattleAnimBgTilemap_ImpactContests},
+};
diff --git a/src/data/text/match_call_messages.h b/src/data/text/match_call_messages.h
index c86329ee2..22790c5fb 100644
--- a/src/data/text/match_call_messages.h
+++ b/src/data/text/match_call_messages.h
@@ -454,7 +454,7 @@ const u8 *const gMatchCallFlavorTexts[REMATCH_TABLE_ENTRIES][CHECK_PAGE_ENTRY_CO
[REMATCH_TRENT] = MCFLAVOR(Hiker_Trent),
[REMATCH_SAWYER] = MCFLAVOR(Hiker_Sawyer),
[REMATCH_KIRA_AND_DAN] = MCFLAVOR(YoungCouple_LoisAndHal),
- [REMATCH_WALLY_3] = MCFLAVOR(PkmnTrainer_Wally),
+ [REMATCH_WALLY_VR] = MCFLAVOR(PkmnTrainer_Wally),
[REMATCH_ROXANNE] = MCFLAVOR(RockinWhiz_Roxanne),
[REMATCH_BRAWLY] = MCFLAVOR(TheBigHit_Brawly),
[REMATCH_WATTSON] = MCFLAVOR(SwellShock_Wattson),
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index 91834876f..1d583343f 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -661,7 +661,7 @@ static void Task_EvolutionScene(u8 taskId)
if (!gPaletteFade.active)
{
StringExpandPlaceholders(gStringVar4, gText_PkmnIsEvolving);
- BattlePutTextOnWindow(gStringVar4, 0);
+ BattlePutTextOnWindow(gStringVar4, B_WIN_MSG);
gTasks[taskId].tState++;
}
break;
@@ -758,7 +758,7 @@ static void Task_EvolutionScene(u8 taskId)
if (IsCryFinished())
{
StringExpandPlaceholders(gStringVar4, gText_CongratsPkmnEvolved);
- BattlePutTextOnWindow(gStringVar4, 0);
+ BattlePutTextOnWindow(gStringVar4, B_WIN_MSG);
PlayBGM(MUS_EVOLVED);
gTasks[taskId].tState++;
SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskId].tPostEvoSpecies));
@@ -845,7 +845,7 @@ static void Task_EvolutionScene(u8 taskId)
else // Fire Red leftover probably
StringExpandPlaceholders(gStringVar4, gText_PkmnStoppedEvolving);
- BattlePutTextOnWindow(gStringVar4, 0);
+ BattlePutTextOnWindow(gStringVar4, B_WIN_MSG);
gTasks[taskId].tEvoWasStopped = TRUE;
gTasks[taskId].tState = EVOSTATE_TRY_LEARN_MOVE;
}
@@ -856,7 +856,7 @@ static void Task_EvolutionScene(u8 taskId)
BufferMoveToLearnIntoBattleTextBuff2();
PlayFanfare(MUS_LEVEL_UP);
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNLEARNEDMOVE - BATTLESTRINGS_ID_ADDER]);
- BattlePutTextOnWindow(gDisplayedStringBattle, 0);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gTasks[taskId].tLearnsFirstMove = 0x40; // re-used as a counter
gTasks[taskId].tState++;
}
@@ -874,7 +874,7 @@ static void Task_EvolutionScene(u8 taskId)
// "{mon} is trying to learn {move}"
BufferMoveToLearnIntoBattleTextBuff2();
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE1 - BATTLESTRINGS_ID_ADDER]);
- BattlePutTextOnWindow(gDisplayedStringBattle, 0);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gTasks[taskId].tLearnMoveState++;
}
break;
@@ -883,7 +883,7 @@ static void Task_EvolutionScene(u8 taskId)
{
// "But, {mon} can't learn more than four moves"
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE2 - BATTLESTRINGS_ID_ADDER]);
- BattlePutTextOnWindow(gDisplayedStringBattle, 0);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gTasks[taskId].tLearnMoveState++;
}
break;
@@ -892,7 +892,7 @@ static void Task_EvolutionScene(u8 taskId)
{
// "Delete a move to make room for {move}?"
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE3 - BATTLESTRINGS_ID_ADDER]);
- BattlePutTextOnWindow(gDisplayedStringBattle, 0);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gTasks[taskId].tLearnMoveYesState = MVSTATE_SHOW_MOVE_SELECT;
gTasks[taskId].tLearnMoveNoState = MVSTATE_ASK_CANCEL;
gTasks[taskId].tLearnMoveState++;
@@ -901,7 +901,7 @@ static void Task_EvolutionScene(u8 taskId)
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0);
- BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xC);
+ BattlePutTextOnWindow(gText_BattleYesNoChoice, B_WIN_YESNO);
gTasks[taskId].tLearnMoveState++;
sEvoCursorPos = 0;
BattleCreateYesNoCursorAt(0);
@@ -980,7 +980,7 @@ static void Task_EvolutionScene(u8 taskId)
{
// Can't forget HMs
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_HMMOVESCANTBEFORGOTTEN - BATTLESTRINGS_ID_ADDER]);
- BattlePutTextOnWindow(gDisplayedStringBattle, 0);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gTasks[taskId].tLearnMoveState = MVSTATE_RETRY_AFTER_HM;
}
else
@@ -997,14 +997,14 @@ static void Task_EvolutionScene(u8 taskId)
break;
case MVSTATE_FORGET_MSG_1:
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_123POOF - BATTLESTRINGS_ID_ADDER]);
- BattlePutTextOnWindow(gDisplayedStringBattle, 0);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gTasks[taskId].tLearnMoveState++;
break;
case MVSTATE_FORGET_MSG_2:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNFORGOTMOVE - BATTLESTRINGS_ID_ADDER]);
- BattlePutTextOnWindow(gDisplayedStringBattle, 0);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gTasks[taskId].tLearnMoveState++;
}
break;
@@ -1012,20 +1012,20 @@ static void Task_EvolutionScene(u8 taskId)
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_ANDELLIPSIS - BATTLESTRINGS_ID_ADDER]);
- BattlePutTextOnWindow(gDisplayedStringBattle, 0);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gTasks[taskId].tState = EVOSTATE_LEARNED_MOVE;
}
break;
case MVSTATE_ASK_CANCEL:
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_STOPLEARNINGMOVE - BATTLESTRINGS_ID_ADDER]);
- BattlePutTextOnWindow(gDisplayedStringBattle, 0);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gTasks[taskId].tLearnMoveYesState = MVSTATE_CANCEL;
gTasks[taskId].tLearnMoveNoState = MVSTATE_INTRO_MSG_1;
gTasks[taskId].tLearnMoveState = MVSTATE_PRINT_YES_NO;
break;
case MVSTATE_CANCEL:
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_DIDNOTLEARNMOVE - BATTLESTRINGS_ID_ADDER]);
- BattlePutTextOnWindow(gDisplayedStringBattle, 0);
+ BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gTasks[taskId].tState = EVOSTATE_TRY_LEARN_MOVE;
break;
case MVSTATE_RETRY_AFTER_HM:
diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c
index 3485f3ba3..ca9a40b6e 100644
--- a/src/hall_of_fame.c
+++ b/src/hall_of_fame.c
@@ -64,8 +64,6 @@ static EWRAM_DATA u32 sHofFadePalettes = 0;
static EWRAM_DATA struct HallofFameTeam *sHofMonPtr = NULL;
static EWRAM_DATA struct HofGfx *sHofGfxPtr = NULL;
-extern struct MusicPlayerInfo gMPlayInfo_BGM;
-
static void ClearVramOamPltt_LoadHofPal(void);
static void LoadHofGfx(void);
static void InitHofBgs(void);
diff --git a/src/party_menu.c b/src/party_menu.c
index 0381509c6..9829d62e9 100755
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -944,7 +944,7 @@ static void DisplayPartyPokemonDataToTeachMove(u8 slot, u16 item, u8 tutor)
static void DisplayPartyPokemonDataForMultiBattle(u8 slot)
{
struct PartyMenuBox *menuBox = &sPartyMenuBoxes[slot];
- u8 actualSlot = slot - (3);
+ u8 actualSlot = slot - MULTI_PARTY_SIZE;
if (gMultiPartnerParty[actualSlot].species == SPECIES_NONE)
{
@@ -5840,7 +5840,7 @@ static void BufferBattlePartyOrder(u8 *partyBattleOrder, u8 flankId)
void BufferBattlePartyCurrentOrderBySide(u8 battlerId, u8 flankId)
{
- BufferBattlePartyOrderBySide(gBattleStruct->field_60[battlerId], flankId, battlerId);
+ BufferBattlePartyOrderBySide(gBattleStruct->battlerPartyOrders[battlerId], flankId, battlerId);
}
// when GetBattlerSide(battlerId) == B_SIDE_PLAYER, this function is identical the one above
@@ -5920,8 +5920,8 @@ void SwitchPartyOrderLinkMulti(u8 battlerId, u8 slot, u8 slot2)
if (IsMultiBattle())
{
- partyBattleOrder = gBattleStruct->field_60[battlerId];
- for (i = j = 0; i < 3; j++, i++)
+ partyBattleOrder = gBattleStruct->battlerPartyOrders[battlerId];
+ for (i = j = 0; i < PARTY_SIZE / 2; j++, i++)
{
partyIds[j] = partyBattleOrder[i] >> 4;
j++;
@@ -6103,7 +6103,7 @@ static void SlideMultiPartyMenuBoxSpritesOneStep(u8 taskId)
s16 *data = gTasks[taskId].data;
u8 i;
- for (i = 3; i < PARTY_SIZE; i++)
+ for (i = MULTI_PARTY_SIZE; i < PARTY_SIZE; i++)
{
if (gMultiPartnerParty[i - MULTI_PARTY_SIZE].species != SPECIES_NONE)
{
diff --git a/src/pokeball.c b/src/pokeball.c
index 3aa969fbd..11f03eefe 100644
--- a/src/pokeball.c
+++ b/src/pokeball.c
@@ -15,9 +15,6 @@
#include "data.h"
#include "constants/songs.h"
-extern struct MusicPlayerInfo gMPlayInfo_BGM;
-
-// this file's functions
static void Task_DoPokeballSendOutAnim(u8 taskId);
static void SpriteCB_PlayerMonSendOut_1(struct Sprite *sprite);
static void SpriteCB_PlayerMonSendOut_2(struct Sprite *sprite);
@@ -801,9 +798,9 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[sprite->sBattler]], BATTLER_AFFINE_EMERGE);
if (GetBattlerSide(sprite->sBattler) == B_SIDE_OPPONENT)
- gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = SpriteCb_OpponentMonFromBall;
+ gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = SpriteCB_OpponentMonFromBall;
else
- gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = SpriteCb_PlayerMonFromBall;
+ gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = SpriteCB_PlayerMonFromBall;
AnimateSprite(&gSprites[gBattlerSpriteIds[sprite->sBattler]]);
gSprites[gBattlerSpriteIds[sprite->sBattler]].data[1] = 0x1000;
diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c
index 99585407a..a4395d760 100644
--- a/src/pokeblock_feed.c
+++ b/src/pokeblock_feed.c
@@ -116,8 +116,6 @@ struct PokeblockFeed
u8 unused4;
};
-extern struct MusicPlayerInfo gMPlayInfo_BGM;
-
extern const u16 gUnknown_0860F074[];
static void HandleInitBackgrounds(void);
diff --git a/src/pokedex.c b/src/pokedex.c
index fa64b155c..eba97beb7 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -148,8 +148,6 @@ struct SearchMenuItem
u8 selectionBgWidth;
};
-extern struct MusicPlayerInfo gMPlayInfo_BGM;
-
struct PokedexListItem
{
u16 dexNum;
diff --git a/src/pokemon.c b/src/pokemon.c
index 62c444121..6e3d37ae3 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -38,6 +38,7 @@
#include "constants/abilities.h"
#include "constants/battle_frontier.h"
#include "constants/battle_move_effects.h"
+#include "constants/battle_script_commands.h"
#include "constants/hold_effects.h"
#include "constants/item_effects.h"
#include "constants/items.h"
@@ -3103,7 +3104,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if (!typeOverride)
type = gBattleMoves[move].type;
else
- type = typeOverride & 0x3F;
+ type = typeOverride & DYNAMIC_TYPE_MASK;
attack = attacker->attack;
defense = defender->defense;
@@ -5041,7 +5042,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
temp2 = gActiveBattler;
gActiveBattler = battlerId;
- BtlController_EmitGetMonData(0, REQUEST_ALL_BATTLE, 0);
+ BtlController_EmitGetMonData(BUFFER_A, REQUEST_ALL_BATTLE, 0);
MarkBattlerForControllerExec(gActiveBattler);
gActiveBattler = temp2;
}
@@ -5077,9 +5078,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
SetMonData(mon, MON_DATA_PP1 + temp2, &dataUnsigned);
// Heal battler PP too (if applicable)
- if (gMain.inBattle
- && battlerId != MAX_BATTLERS_COUNT && !(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED)
- && !(gDisableStructs[battlerId].mimickedMoves & gBitTable[temp2]))
+ if (gMain.inBattle && battlerId != MAX_BATTLERS_COUNT && MOVE_IS_PERMANENT(battlerId, temp2))
gBattleMons[battlerId].pp[temp2] = dataUnsigned;
retVal = FALSE;
@@ -5105,9 +5104,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
SetMonData(mon, MON_DATA_PP1 + moveIndex, &dataUnsigned);
// Heal battler PP too (if applicable)
- if (gMain.inBattle
- && battlerId != MAX_BATTLERS_COUNT && !(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED)
- && !(gDisableStructs[battlerId].mimickedMoves & gBitTable[moveIndex]))
+ if (gMain.inBattle && battlerId != MAX_BATTLERS_COUNT && MOVE_IS_PERMANENT(battlerId, moveIndex))
gBattleMons[battlerId].pp[moveIndex] = dataUnsigned;
retVal = FALSE;
@@ -6875,7 +6872,7 @@ static bool8 ShouldSkipFriendshipChange(void)
#define ALLOC_FAIL_BUFFER (1 << 0)
#define ALLOC_FAIL_STRUCT (1 << 1)
#define GFX_MANAGER_ACTIVE 0xA3 // Arbitrary value
-#define GFX_MANAGER_SPR_SIZE (MON_PIC_SIZE * 4) // * 4 is unnecessary, MON_PIC_SIZE is sufficient
+#define GFX_MANAGER_SPR_SIZE (MON_PIC_SIZE * 4) // Only Castform uses more than MON_PIC_SIZE, despite not displaying its forms.
#define GFX_MANAGER_NUM_FRAMES 4 // Only 2 frames are needed
static void InitMonSpritesGfx_Battle(struct MonSpritesGfxManager* gfx)
diff --git a/src/pokenav_match_call_data.c b/src/pokenav_match_call_data.c
index 46ce43d4c..29dd62621 100644
--- a/src/pokenav_match_call_data.c
+++ b/src/pokenav_match_call_data.c
@@ -336,7 +336,7 @@ static const struct MatchCallWally sWallyMatchCallHeader =
.type = MC_TYPE_WALLY,
.mapSec = 0,
.flag = FLAG_ENABLE_WALLY_MATCH_CALL,
- .rematchTableIdx = REMATCH_WALLY_3,
+ .rematchTableIdx = REMATCH_WALLY_VR,
.desc = gText_WallyMatchCallDesc,
.textData = sWallyTextScripts,
.locationData = sWallyLocationData
diff --git a/src/recorded_battle.c b/src/recorded_battle.c
index e29792766..e6d5b165b 100644
--- a/src/recorded_battle.c
+++ b/src/recorded_battle.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "battle.h"
#include "battle_anim.h"
+#include "battle_controllers.h"
#include "recorded_battle.h"
#include "main.h"
#include "pokemon.h"
@@ -35,12 +36,6 @@ struct PlayerInfo
u16 language;
};
-struct MovePp
-{
- u16 moves[MAX_MON_MOVES];
- u8 pp[MAX_MON_MOVES];
-};
-
struct RecordedBattleSave
{
struct Pokemon playerParty[PARTY_SIZE];
@@ -65,7 +60,7 @@ struct RecordedBattleSave
u8 recordMixFriendName[PLAYER_NAME_LENGTH + 1];
u8 recordMixFriendClass;
u8 apprenticeId;
- u16 easyChatSpeech[6];
+ u16 easyChatSpeech[EASY_CHAT_BATTLE_WORDS_COUNT];
u8 recordMixFriendLanguage;
u8 apprenticeLanguage;
u8 battleRecord[MAX_BATTLERS_COUNT][BATTLER_RECORD_SIZE];
@@ -91,13 +86,13 @@ EWRAM_DATA static u32 sBattleFlags = 0;
EWRAM_DATA static u32 sAI_Scripts = 0;
EWRAM_DATA static struct Pokemon sSavedPlayerParty[PARTY_SIZE] = {0};
EWRAM_DATA static struct Pokemon sSavedOpponentParty[PARTY_SIZE] = {0};
-EWRAM_DATA static u16 sPlayerMonMoves[2][MAX_MON_MOVES] = {0};
+EWRAM_DATA static u16 sPlayerMonMoves[MAX_BATTLERS_COUNT / 2][MAX_MON_MOVES] = {0};
EWRAM_DATA static struct PlayerInfo sPlayers[MAX_BATTLERS_COUNT] = {0};
-EWRAM_DATA static bool8 sUnknown_0203CCD0 = 0;
+EWRAM_DATA static bool8 sIsPlaybackFinished = 0;
EWRAM_DATA static u8 sRecordMixFriendName[PLAYER_NAME_LENGTH + 1] = {0};
EWRAM_DATA static u8 sRecordMixFriendClass = 0;
EWRAM_DATA static u8 sApprenticeId = 0;
-EWRAM_DATA static u16 sEasyChatSpeech[6] = {0};
+EWRAM_DATA static u16 sEasyChatSpeech[EASY_CHAT_BATTLE_WORDS_COUNT] = {0};
EWRAM_DATA static u8 sBattleOutcome = 0;
static u8 sRecordMixFriendLanguage;
@@ -113,7 +108,7 @@ void RecordedBattle_Init(u8 mode)
s32 i, j;
sRecordMode = mode;
- sUnknown_0203CCD0 = FALSE;
+ sIsPlaybackFinished = FALSE;
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
@@ -124,16 +119,14 @@ void RecordedBattle_Init(u8 mode)
if (mode == B_RECORD_MODE_RECORDING)
{
for (j = 0; j < BATTLER_RECORD_SIZE; j++)
- {
sBattleRecords[i][j] = 0xFF;
- }
sBattleFlags = gBattleTypeFlags;
sAI_Scripts = gBattleResources->ai->aiFlags;
}
}
}
-void sub_8184E58(void)
+void RecordedBattle_SetTrainerInfo(void)
{
s32 i, j;
@@ -150,6 +143,7 @@ void sub_8184E58(void)
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
+ // Link recorded battle, record info for all trainers
u8 linkPlayersCount;
u8 text[30];
@@ -163,6 +157,7 @@ void sub_8184E58(void)
sPlayers[i].battlerId = gLinkPlayers[i].id;
sPlayers[i].language = gLinkPlayers[i].language;
+ // Record names
if (i < linkPlayersCount)
{
StringCopy(text, gLinkPlayers[i].name);
@@ -178,10 +173,11 @@ void sub_8184E58(void)
}
else
{
+ // Local battle, just record own info
sPlayers[0].trainerId = (gSaveBlock2Ptr->playerTrainerId[0])
- | (gSaveBlock2Ptr->playerTrainerId[1] << 8)
- | (gSaveBlock2Ptr->playerTrainerId[2] << 16)
- | (gSaveBlock2Ptr->playerTrainerId[3] << 24);
+ | (gSaveBlock2Ptr->playerTrainerId[1] << 8)
+ | (gSaveBlock2Ptr->playerTrainerId[2] << 16)
+ | (gSaveBlock2Ptr->playerTrainerId[3] << 24);
sPlayers[0].gender = gSaveBlock2Ptr->playerGender;
sPlayers[0].battlerId = 0;
@@ -195,9 +191,7 @@ void sub_8184E58(void)
void RecordedBattle_SetBattlerAction(u8 battlerId, u8 action)
{
if (sBattlerRecordSizes[battlerId] < BATTLER_RECORD_SIZE && sRecordMode != B_RECORD_MODE_PLAYBACK)
- {
sBattleRecords[battlerId][sBattlerRecordSizes[battlerId]++] = action;
- }
}
void RecordedBattle_ClearBattlerAction(u8 battlerId, u8 bytesToClear)
@@ -220,7 +214,7 @@ u8 RecordedBattle_GetBattlerAction(u8 battlerId)
{
gSpecialVar_Result = gBattleOutcome = B_OUTCOME_PLAYER_TELEPORTED; // hah
ResetPaletteFadeControl();
- BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK);
+ BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
SetMainCallback2(CB2_QuitRecordedBattle);
return 0xFF;
}
@@ -249,9 +243,7 @@ u8 RecordedBattle_BufferNewBattlerData(u8 *dst)
dst[idx++] = sBattlerRecordSizes[i] - sBattlerPrevRecordSizes[i];
for (j = 0; j < sBattlerRecordSizes[i] - sBattlerPrevRecordSizes[i]; j++)
- {
dst[idx++] = sBattleRecords[i][sBattlerPrevRecordSizes[i] + j];
- }
sBattlerPrevRecordSizes[i] = sBattlerRecordSizes[i];
}
@@ -283,9 +275,7 @@ void RecordedBattle_RecordAllBattlerData(u8 *src)
u8 numActions = GetNextRecordedDataByte(src, &idx, &size);
for (i = 0; i < numActions; i++)
- {
sBattleRecords[battlerId][sBattlerSavedRecordSizes[battlerId]++] = GetNextRecordedDataByte(src, &idx, &size);
- }
}
}
}
@@ -318,7 +308,7 @@ static bool32 IsRecordedBattleSaveValid(struct RecordedBattleSave *save)
static bool32 RecordedBattleToSave(struct RecordedBattleSave *battleSave, struct RecordedBattleSave *saveSection)
{
- memset(saveSection, 0, 0x1000);
+ memset(saveSection, 0, SECTOR_SIZE);
memcpy(saveSection, battleSave, sizeof(*battleSave));
saveSection->checksum = CalcByteArraySum((void*)(saveSection), sizeof(*saveSection) - 4);
@@ -338,7 +328,7 @@ bool32 MoveRecordedBattleToSaveData(void)
saveAttempts = 0;
battleSave = AllocZeroed(sizeof(struct RecordedBattleSave));
- savSection = AllocZeroed(0x1000);
+ savSection = AllocZeroed(SECTOR_SIZE);
for (i = 0; i < PARTY_SIZE; i++)
{
@@ -349,9 +339,7 @@ bool32 MoveRecordedBattleToSaveData(void)
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
for (j = 0; j < PLAYER_NAME_LENGTH + 1; j++)
- {
battleSave->playersName[i][j] = sPlayers[i].name[j];
- }
battleSave->playersGender[i] = sPlayers[i].gender;
battleSave->playersLanguage[i] = sPlayers[i].language;
battleSave->playersBattlers[i] = sPlayers[i].battlerId;
@@ -471,12 +459,8 @@ bool32 MoveRecordedBattleToSaveData(void)
}
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
- {
for (j = 0; j < BATTLER_RECORD_SIZE; j++)
- {
battleSave->battleRecord[i][j] = sBattleRecords[i][j];
- }
- }
while (1)
{
@@ -585,29 +569,21 @@ static void SetVariablesForRecordedBattle(struct RecordedBattleSave *src)
sAI_Scripts = src->AI_scripts;
for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
- {
sRecordMixFriendName[i] = src->recordMixFriendName[i];
- }
sRecordMixFriendClass = src->recordMixFriendClass;
sApprenticeId = src->apprenticeId;
sRecordMixFriendLanguage = src->recordMixFriendLanguage;
sApprenticeLanguage = src->apprenticeLanguage;
- for (i = 0; i < 6; i++)
- {
+ for (i = 0; i < EASY_CHAT_BATTLE_WORDS_COUNT; i++)
sEasyChatSpeech[i] = src->easyChatSpeech[i];
- }
gSaveBlock2Ptr->frontier.lvlMode = src->lvlMode;
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
- {
for (j = 0; j < BATTLER_RECORD_SIZE; j++)
- {
sBattleRecords[i][j] = src->battleRecord[i][j];
- }
- }
}
void PlayRecordedBattle(void (*CB2_After)(void))
@@ -693,9 +669,9 @@ void RecordedBattle_ClearFrontierPassFlag(void)
}
// Set sFrontierPassFlag to received state of FLAG_SYS_FRONTIER_PASS
-void RecordedBattle_SetFrontierPassFlagFromHword(u16 arg0)
+void RecordedBattle_SetFrontierPassFlagFromHword(u16 flags)
{
- sFrontierPassFlag |= (arg0 & 0x8000) >> 15;
+ sFrontierPassFlag |= (flags & (1 << 15)) >> 15;
}
u8 RecordedBattle_GetFrontierPassFlag(void)
@@ -725,14 +701,14 @@ void RecordedBattle_CopyBattlerMoves(void)
return;
for (i = 0; i < MAX_MON_MOVES; i++)
- {
sPlayerMonMoves[gActiveBattler / 2][i] = gBattleMons[gActiveBattler].moves[i];
- }
}
+// This is a special battle action only used by this function
+// It shares a value with B_ACTION_SAFARI_POKEBLOCK, which can never occur in a recorded battle.
#define ACTION_MOVE_CHANGE 6
-void sub_818603C(u8 arg0)
+void RecordedBattle_CheckMovesetChanges(u8 mode)
{
s32 battlerId, j, k;
@@ -741,17 +717,20 @@ void sub_818603C(u8 arg0)
for (battlerId = 0; battlerId < gBattlersCount; battlerId++)
{
- if (GetBattlerSide(battlerId) != B_SIDE_OPPONENT) // player's side only
+ // Player's side only
+ if (GetBattlerSide(battlerId) != B_SIDE_OPPONENT)
{
- if (arg0 == 1)
+ if (mode == B_RECORD_MODE_RECORDING)
{
+ // Check if any of the battler's moves have changed.
for (j = 0; j < MAX_MON_MOVES; j++)
{
if (gBattleMons[battlerId].moves[j] != sPlayerMonMoves[battlerId / 2][j])
break;
}
- if (j != MAX_MON_MOVES) // player's mon's move has been changed
+ if (j != MAX_MON_MOVES)
{
+ // At least one of the moves has been changed
RecordedBattle_SetBattlerAction(battlerId, ACTION_MOVE_CHANGE);
for (j = 0; j < MAX_MON_MOVES; j++)
{
@@ -766,68 +745,66 @@ void sub_818603C(u8 arg0)
}
}
}
- else
+ else // B_RECORD_MODE_PLAYBACK
{
if (sBattleRecords[battlerId][sBattlerRecordSizes[battlerId]] == ACTION_MOVE_CHANGE)
{
u8 ppBonuses[MAX_MON_MOVES];
- u8 array1[MAX_MON_MOVES];
- u8 array2[MAX_MON_MOVES];
- struct MovePp movePp;
- u8 array3[(MAX_MON_MOVES * 2)];
- u8 var;
+ u8 moveSlots[MAX_MON_MOVES];
+ u8 mimickedMoveSlots[MAX_MON_MOVES];
+ struct ChooseMoveStruct movePp;
+ u8 ppBonusSet;
+ // We know the current action is ACTION_MOVE_CHANGE, retrieve
+ // it without saving it to move on to the next action.
RecordedBattle_GetBattlerAction(battlerId);
+
for (j = 0; j < MAX_MON_MOVES; j++)
- {
- ppBonuses[j] = ((gBattleMons[battlerId].ppBonuses & ((3 << (j << 1)))) >> (j << 1));
- }
+ ppBonuses[j] = ((gBattleMons[battlerId].ppBonuses & (3 << (j << 1))) >> (j << 1));
+
for (j = 0; j < MAX_MON_MOVES; j++)
{
- array1[j] = RecordedBattle_GetBattlerAction(battlerId);
- movePp.moves[j] = gBattleMons[battlerId].moves[array1[j]];
- movePp.pp[j] = gBattleMons[battlerId].pp[array1[j]];
- array3[j] = ppBonuses[array1[j]];
- array2[j] = (gDisableStructs[battlerId].mimickedMoves & gBitTable[j]) >> j;
+ moveSlots[j] = RecordedBattle_GetBattlerAction(battlerId);
+ movePp.moves[j] = gBattleMons[battlerId].moves[moveSlots[j]];
+ movePp.currentPp[j] = gBattleMons[battlerId].pp[moveSlots[j]];
+ movePp.maxPp[j] = ppBonuses[moveSlots[j]];
+ mimickedMoveSlots[j] = (gDisableStructs[battlerId].mimickedMoves & gBitTable[j]) >> j;
}
for (j = 0; j < MAX_MON_MOVES; j++)
{
gBattleMons[battlerId].moves[j] = movePp.moves[j];
- gBattleMons[battlerId].pp[j] = movePp.pp[j];
+ gBattleMons[battlerId].pp[j] = movePp.currentPp[j];
}
gBattleMons[battlerId].ppBonuses = 0;
gDisableStructs[battlerId].mimickedMoves = 0;
for (j = 0; j < MAX_MON_MOVES; j++)
{
- gBattleMons[battlerId].ppBonuses |= (array3[j]) << (j << 1);
- gDisableStructs[battlerId].mimickedMoves |= (array2[j]) << (j);
+ gBattleMons[battlerId].ppBonuses |= movePp.maxPp[j] << (j << 1);
+ gDisableStructs[battlerId].mimickedMoves |= mimickedMoveSlots[j] << j;
}
if (!(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED))
{
for (j = 0; j < MAX_MON_MOVES; j++)
- {
- ppBonuses[j] = ((GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP_BONUSES, NULL) & ((3 << (j << 1)))) >> (j << 1));
- }
+ ppBonuses[j] = (GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP_BONUSES, NULL) & ((3 << (j << 1)))) >> (j << 1);
+
for (j = 0; j < MAX_MON_MOVES; j++)
{
- movePp.moves[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_MOVE1 + array1[j], NULL);
- movePp.pp[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP1 + array1[j], NULL);
- array3[j] = ppBonuses[array1[j]];
+ movePp.moves[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_MOVE1 + moveSlots[j], NULL);
+ movePp.currentPp[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP1 + moveSlots[j], NULL);
+ movePp.maxPp[j] = ppBonuses[moveSlots[j]];
}
for (j = 0; j < MAX_MON_MOVES; j++)
{
SetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_MOVE1 + j, &movePp.moves[j]);
- SetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP1 + j, &movePp.pp[j]);
+ SetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP1 + j, &movePp.currentPp[j]);
}
- var = 0;
+ ppBonusSet = 0;
for (j = 0; j < MAX_MON_MOVES; j++)
- {
- var |= (array3[j]) << (j << 1);
- }
- SetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP_BONUSES, &var);
- }
+ ppBonusSet |= movePp.maxPp[j] << (j << 1);
+ SetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP_BONUSES, &ppBonusSet);
+ }
gChosenMoveByBattler[battlerId] = gBattleMons[battlerId].moves[*(gBattleStruct->chosenMovePositions + battlerId)];
}
}
@@ -840,24 +817,24 @@ u32 GetAiScriptsInRecordedBattle(void)
return sAI_Scripts;
}
-void sub_8186444(void)
+// Used to determine when the player is allowed to press B to end a recorded battle's playback
+void RecordedBattle_SetPlaybackFinished(void)
{
- sUnknown_0203CCD0 = TRUE;
+ sIsPlaybackFinished = TRUE;
}
-bool8 sub_8186450(void)
+bool8 RecordedBattle_CanStopPlayback(void)
{
- return (sUnknown_0203CCD0 == FALSE);
+ return (sIsPlaybackFinished == FALSE);
}
void GetRecordedBattleRecordMixFriendName(u8 *dst)
{
s32 i;
- for (i = 0; i < 8; i++)
+ for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
dst[i] = sRecordMixFriendName[i];
-
- dst[7] = EOS;
+ dst[PLAYER_NAME_LENGTH] = EOS;
ConvertInternationalString(dst, sRecordMixFriendLanguage);
}
diff --git a/src/sound.c b/src/sound.c
index a12475f1e..8c3cd3997 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -14,24 +14,17 @@ struct Fanfare
u16 duration;
};
-// ewram
EWRAM_DATA struct MusicPlayerInfo* gMPlay_PokemonCry = NULL;
EWRAM_DATA u8 gPokemonCryBGMDuckingCounter = 0;
-// iwram bss
static u16 sCurrentMapMusic;
static u16 sNextMapMusic;
static u8 sMapMusicState;
static u8 sMapMusicFadeInSpeed;
static u16 sFanfareCounter;
-// iwram common
bool8 gDisableMusic;
-extern struct MusicPlayerInfo gMPlayInfo_BGM;
-extern struct MusicPlayerInfo gMPlayInfo_SE1;
-extern struct MusicPlayerInfo gMPlayInfo_SE2;
-extern struct MusicPlayerInfo gMPlayInfo_SE3;
extern struct ToneData gCryTable[];
extern struct ToneData gCryTable2[];
diff --git a/src/title_screen.c b/src/title_screen.c
index 3b60146b9..ee71b6895 100644
--- a/src/title_screen.c
+++ b/src/title_screen.c
@@ -35,9 +35,6 @@
#define BERRY_UPDATE_BUTTON_COMBO (B_BUTTON | SELECT_BUTTON)
#define A_B_START_SELECT (A_BUTTON | B_BUTTON | START_BUTTON | SELECT_BUTTON)
-extern struct MusicPlayerInfo gMPlayInfo_BGM;
-
-// this file's functions
static void MainCB2(void);
static void Task_TitleScreenPhase1(u8);
static void Task_TitleScreenPhase2(u8);