Merge pull request #1516 from GriffinRichards/doc-miscbattle

Miscellaneous battle documentation
This commit is contained in:
GriffinR
2021-10-19 08:09:17 -04:00
committed by GitHub
70 changed files with 4275 additions and 4235 deletions
+1
View File
@@ -34,3 +34,4 @@ porymap.project.cfg
*.a *.a
.fuse_hidden* .fuse_hidden*
*.sna *.sna
*.diff
+46 -46
View File
@@ -14,7 +14,7 @@
.byte 0x02 .byte 0x02
.4byte \template .4byte \template
.if \anim_battler == ANIM_TARGET .if \anim_battler == ANIM_TARGET
.byte 0x80 | (\subpriority_offset & 0x7F) .byte ANIMSPRITE_IS_TARGET | (\subpriority_offset & 0x7F)
.else .else
.byte (\subpriority_offset & 0x7F) .byte (\subpriority_offset & 0x7F)
.endif .endif
@@ -34,20 +34,20 @@
.Lcreatetask_\@_2: .Lcreatetask_\@_2:
.endm .endm
.macro delay param0:req .macro delay frames:req
.byte 0x4 .byte 0x4
.byte \param0 .byte \frames
.endm .endm
.macro waitforvisualfinish .macro waitforvisualfinish
.byte 0x5 .byte 0x5
.endm .endm
.macro hang1 .macro nop
.byte 0x6 .byte 0x6
.endm .endm
.macro hang2 .macro nop2
.byte 0x7 .byte 0x7
.endm .endm
@@ -79,30 +79,30 @@
.byte 0xd .byte 0xd
.endm .endm
.macro call param0:req .macro call ptr:req
.byte 0xe .byte 0xe
.4byte \param0 .4byte \ptr
.endm .endm
.macro return .macro return
.byte 0xf .byte 0xf
.endm .endm
.macro setarg param0:req, param1:req .macro setarg argId:req, value:req
.byte 0x10 .byte 0x10
.byte \param0 .byte \argId
.2byte \param1 .2byte \value
.endm .endm
.macro choosetwoturnanim param0:req, param1:req .macro choosetwoturnanim ptr1:req, ptr2:req
.byte 0x11 .byte 0x11
.4byte \param0 .4byte \ptr1
.4byte \param1 .4byte \ptr2
.endm .endm
.macro jumpifmoveturn param0:req, ptr:req .macro jumpifmoveturn value:req, ptr:req
.byte 0x12 .byte 0x12
.byte \param0 .byte \value
.4byte \ptr .4byte \ptr
.endm .endm
@@ -144,13 +144,13 @@
.byte \pan .byte \pan
.endm .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 .byte 0x1b
.2byte \se .2byte \se
.byte \param1 .byte \currentPan
.byte \param2 .byte \targetPan
.byte \param3 .byte \incrementPan
.byte \param4 .byte \delay
.endm .endm
.macro loopsewithpan se:req, pan:req, wait:req, times:req .macro loopsewithpan se:req, pan:req, wait:req, times:req
@@ -168,9 +168,9 @@
.byte \wait .byte \wait
.endm .endm
.macro setbldcnt param0:req .macro setbldcnt bldcnt:req
.byte 0x1e .byte 0x1e
.2byte \param0 .2byte \bldcnt
.endm .endm
.macro createsoundtask addr:req, argv:vararg .macro createsoundtask addr:req, argv:vararg
@@ -186,19 +186,19 @@
.byte 0x20 .byte 0x20
.endm .endm
.macro jumpargeq param0:req, param1:req, ptr:req .macro jumpargeq argId:req, value:req, ptr:req
.byte 0x21 .byte 0x21
.byte \param0 .byte \argId
.2byte \param1 .2byte \value
.4byte \ptr .4byte \ptr
.endm .endm
.macro monbg_22 battler:req .macro monbg_static battler:req
.byte 0x22 .byte 0x22
.byte \battler .byte \battler
.endm .endm
.macro clearmonbg_23 battler:req .macro clearmonbg_static battler:req
.byte 0x23 .byte 0x23
.byte \battler .byte \battler
.endm .endm
@@ -208,41 +208,41 @@
.4byte \ptr .4byte \ptr
.endm .endm
.macro fadetobgfromset param0:req, param1:req, param2:req .macro fadetobgfromset bgOpponent:req, bgPlayer:req, bgContest:req
.byte 0x25 .byte 0x25
.byte \param0 .byte \bgOpponent
.byte \param1 .byte \bgPlayer
.byte \param2 .byte \bgContest
.endm .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 .byte 0x26
.2byte \se .2byte \se
.byte \param1 .byte \currentPan
.byte \param2 .byte \targetPan
.byte \param3 .byte \incrementPan
.byte \param4 .byte \delay
.endm .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 .byte 0x27
.2byte \se .2byte \se
.byte \param1 .byte \currentPan
.byte \param2 .byte \targetPan
.byte \param3 .byte \incrementPan
.byte \param4 .byte \delay
.endm .endm
.macro monbgprio_28 battler:req .macro splitbgprio battler:req
.byte 0x28 .byte 0x28
.byte \battler .byte \battler
.endm .endm
.macro monbgprio_29 .macro splitbgprio_all
.byte 0x29 .byte 0x29
.endm .endm
.macro monbgprio_2A battler:req .macro splitbgprio_foes battler:req
.byte 0x2a .byte 0x2a
.byte \battler .byte \battler
.endm .endm
@@ -257,12 +257,12 @@
.byte \battler .byte \battler
.endm .endm
.macro doublebattle_2D battler:req .macro teamattack_moveback battler:req
.byte 0x2d .byte 0x2d
.byte \battler .byte \battler
.endm .endm
.macro doublebattle_2E battler:req .macro teamattack_movefwd battler:req
.byte 0x2e .byte 0x2e
.byte \battler .byte \battler
.endm .endm
+224 -217
View File
@@ -3,10 +3,10 @@
.byte 0x0 .byte 0x0
.endm .endm
.macro accuracycheck param0:req, param1:req .macro accuracycheck failPtr:req, move:req
.byte 0x1 .byte 0x1
.4byte \param0 .4byte \failPtr
.2byte \param1 .2byte \move
.endm .endm
.macro attackstring .macro attackstring
@@ -77,9 +77,9 @@
.2byte \id .2byte \id
.endm .endm
.macro waitmessage param0:req .macro waitmessage time:req
.byte 0x12 .byte 0x12
.2byte \param0 .2byte \time
.endm .endm
.macro printfromtable ptr:req .macro printfromtable ptr:req
@@ -109,10 +109,17 @@
.byte \battler .byte \battler
.endm .endm
.macro tryfaintmon battler:req, param1:req, ptr:req .macro tryfaintmon battler:req
.byte 0x19 .byte 0x19
.byte \battler .byte \battler
.byte \param1 .byte FALSE
.4byte NULL
.endm
.macro tryfaintmon_spikes battler:req, ptr:req
.byte 0x19
.byte \battler
.byte TRUE
.4byte \ptr .4byte \ptr
.endm .endm
@@ -140,9 +147,9 @@
.4byte \ptr .4byte \ptr
.endm .endm
.macro jumpifability param0:req, ability:req, ptr:req .macro jumpifability battler:req, ability:req, ptr:req
.byte 0x1e .byte 0x1e
.byte \param0 .byte \battler
.byte \ability .byte \ability
.4byte \ptr .4byte \ptr
.endm .endm
@@ -163,11 +170,11 @@
.4byte \ptr .4byte \ptr
.endm .endm
.macro jumpifstatus3condition battler:req, status3:req, param2:req, ptr:req .macro jumpifstatus3condition battler:req, status3:req, condition:req, ptr:req
.byte 0x21 .byte 0x21
.byte \battler .byte \battler
.4byte \status3 .4byte \status3
.byte \param2 .byte \condition
.4byte \ptr .4byte \ptr
.endm .endm
@@ -183,7 +190,7 @@
.byte \battler .byte \battler
.endm .endm
.macro atk24 ptr:req .macro checkteamslost ptr:req
.byte 0x24 .byte 0x24
.4byte \ptr .4byte \ptr
.endm .endm
@@ -207,118 +214,118 @@
.4byte \ptr .4byte \ptr
.endm .endm
.macro jumpifbyte ifflag:req, param1:req, param2:req, param3:req .macro jumpifbyte ifflag:req, val:req, byte:req, ptr:req
.byte 0x29 .byte 0x29
.byte \ifflag .byte \ifflag
.4byte \param1 .4byte \val
.byte \param2 .byte \byte
.4byte \param3 .4byte \ptr
.endm .endm
.macro jumpifhalfword ifflag:req, param1:req, param2:req, param3:req .macro jumpifhalfword ifflag:req, val:req, hword:req, ptr:req
.byte 0x2a .byte 0x2a
.byte \ifflag .byte \ifflag
.4byte \param1 .4byte \val
.2byte \param2 .2byte \hword
.4byte \param3 .4byte \ptr
.endm .endm
.macro jumpifword ifflag:req, param1:req, param2:req, param3:req .macro jumpifword ifflag:req, val:req, word:req, ptr:req
.byte 0x2b .byte 0x2b
.byte \ifflag .byte \ifflag
.4byte \param1 .4byte \val
.4byte \param2 .4byte \word
.4byte \param3 .4byte \ptr
.endm .endm
.macro jumpifarrayequal param0:req, param1:req, param2:req, param3:req .macro jumpifarrayequal val1:req, val2:req, size:req, ptr:req
.byte 0x2c .byte 0x2c
.4byte \param0 .4byte \val1
.4byte \param1 .4byte \val2
.byte \param2 .byte \size
.4byte \param3 .4byte \ptr
.endm .endm
.macro jumpifarraynotequal param0:req, param1:req, param2:req, param3:req .macro jumpifarraynotequal val1:req, val2:req, size:req, ptr:req
.byte 0x2d .byte 0x2d
.4byte \param0 .4byte \val1
.4byte \param1 .4byte \val2
.byte \param2 .byte \size
.4byte \param3 .4byte \ptr
.endm .endm
.macro setbyte ptr:req, param1:req .macro setbyte ptr:req, byte:req
.byte 0x2e .byte 0x2e
.4byte \ptr .4byte \ptr
.byte \param1 .byte \byte
.endm .endm
.macro addbyte ptr:req, param1:req .macro addbyte ptr:req, byte:req
.byte 0x2f .byte 0x2f
.4byte \ptr .4byte \ptr
.byte \param1 .byte \byte
.endm .endm
.macro subbyte ptr:req, param1:req .macro subbyte ptr:req, byte:req
.byte 0x30 .byte 0x30
.4byte \ptr .4byte \ptr
.byte \param1 .byte \byte
.endm .endm
.macro copyarray param0:req, param1:req, param2:req .macro copyarray dest:req, src:req, size:req
.byte 0x31 .byte 0x31
.4byte \param0 .4byte \dest
.4byte \param1 .4byte \src
.byte \param2 .byte \size
.endm .endm
.macro copyarraywithindex param0:req, param1:req, param2:req, param3:req .macro copyarraywithindex dest:req, src:req, index:req, size:req
.byte 0x32 .byte 0x32
.4byte \param0 .4byte \dest
.4byte \param1 .4byte \src
.4byte \param2 .4byte \index
.byte \param3 .byte \size
.endm .endm
.macro orbyte ptr:req, param1:req .macro orbyte ptr:req, byte:req
.byte 0x33 .byte 0x33
.4byte \ptr .4byte \ptr
.byte \param1 .byte \byte
.endm .endm
.macro orhalfword ptr:req, param1:req .macro orhalfword ptr:req, hword:req
.byte 0x34 .byte 0x34
.4byte \ptr .4byte \ptr
.2byte \param1 .2byte \hword
.endm .endm
.macro orword ptr:req, param1:req .macro orword ptr:req, word:req
.byte 0x35 .byte 0x35
.4byte \ptr .4byte \ptr
.4byte \param1 .4byte \word
.endm .endm
.macro bicbyte ptr:req, param1:req .macro bicbyte ptr:req, byte:req
.byte 0x36 .byte 0x36
.4byte \ptr .4byte \ptr
.byte \param1 .byte \byte
.endm .endm
.macro bichalfword ptr:req, param1:req .macro bichalfword ptr:req, hword:req
.byte 0x37 .byte 0x37
.4byte \ptr .4byte \ptr
.2byte \param1 .2byte \hword
.endm .endm
.macro bicword ptr:req, param1:req .macro bicword ptr:req, word:req
.byte 0x38 .byte 0x38
.4byte \ptr .4byte \ptr
.4byte \param1 .4byte \word
.endm .endm
.macro pause param0:req .macro pause time:req
.byte 0x39 .byte 0x39
.2byte \param0 .2byte \time
.endm .endm
.macro waitstate .macro waitstate
@@ -373,18 +380,18 @@
.byte 0x44 .byte 0x44
.endm .endm
.macro playanimation battler:req, param1:req, param2:req .macro playanimation battler:req, animType:req, arg=NULL
.byte 0x45 .byte 0x45
.byte \battler .byte \battler
.byte \param1 .byte \animType
.4byte \param2 .4byte \arg
.endm .endm
.macro playanimation2 battler:req, param1:req, param2:req .macro playanimation_var battler:req, animType:req, arg=NULL
.byte 0x46 .byte 0x46
.byte \battler .byte \battler
.4byte \param1 .4byte \animType
.4byte \param2 .4byte \arg
.endm .endm
.macro setgraphicalstatchangevalues .macro setgraphicalstatchangevalues
@@ -398,10 +405,10 @@
.byte \statchange .byte \statchange
.endm .endm
.macro moveend param0:req, param1:req .macro moveend endMode:req, endState:req
.byte 0x49 .byte 0x49
.byte \param0 .byte \endMode
.byte \param1 .byte \endState
.endm .endm
@ Help macros for 5 uses of moveend command @ Help macros for 5 uses of moveend command
@@ -466,16 +473,16 @@
.4byte \ptr .4byte \ptr
.endm .endm
.macro openpartyscreen param0:req, param1:req .macro openpartyscreen battler:req, ptr:req
.byte 0x50 .byte 0x50
.byte \param0 .byte \battler
.4byte \param1 .4byte \ptr
.endm .endm
.macro switchhandleorder battler:req, param1:req .macro switchhandleorder battler:req, state:req
.byte 0x51 .byte 0x51
.byte \battler .byte \battler
.byte \param1 .byte \state
.endm .endm
.macro switchineffects battler:req .macro switchineffects battler:req
@@ -488,14 +495,14 @@
.byte \battler .byte \battler
.endm .endm
.macro playse param0:req .macro playse song:req
.byte 0x54 .byte 0x54
.2byte \param0 .2byte \song
.endm .endm
.macro fanfare param0:req .macro fanfare song:req
.byte 0x55 .byte 0x55
.2byte \param0 .2byte \song
.endm .endm
.macro playfaintcry battler:req .macro playfaintcry battler:req
@@ -512,21 +519,21 @@
.byte \battler .byte \battler
.endm .endm
.macro handlelearnnewmove param0:req, param1:req, param2:req .macro handlelearnnewmove learnedMovePtr:req, nothingToLearnPtr:req, isFirstMove:req
.byte 0x59 .byte 0x59
.4byte \param0 .4byte \learnedMovePtr
.4byte \param1 .4byte \nothingToLearnPtr
.byte \param2 .byte \isFirstMove
.endm .endm
.macro yesnoboxlearnmove param0:req .macro yesnoboxlearnmove forgotMovePtr:req
.byte 0x5a .byte 0x5a
.4byte \param0 .4byte \forgotMovePtr
.endm .endm
.macro yesnoboxstoplearningmove param0:req .macro yesnoboxstoplearningmove noPtr:req
.byte 0x5b .byte 0x5b
.4byte \param0 .4byte \noPtr
.endm .endm
.macro hitanimation battler:req .macro hitanimation battler:req
@@ -538,7 +545,7 @@
.byte 0x5d .byte 0x5d
.endm .endm
.macro atk5E battler:req .macro updatebattlermoves battler:req
.byte 0x5e .byte 0x5e
.byte \battler .byte \battler
.endm .endm
@@ -547,9 +554,9 @@
.byte 0x5f .byte 0x5f
.endm .endm
.macro incrementgamestat param0:req .macro incrementgamestat stat:req
.byte 0x60 .byte 0x60
.byte \param0 .byte \stat
.endm .endm
.macro drawpartystatussummary battler:req .macro drawpartystatussummary battler:req
@@ -562,9 +569,9 @@
.byte \battler .byte \battler
.endm .endm
.macro jumptocalledmove param0:req .macro jumptocalledmove notChosenMove:req
.byte 0x63 .byte 0x63
.byte \param0 .byte \notChosenMove
.endm .endm
.macro statusanimation battler:req .macro statusanimation battler:req
@@ -578,11 +585,11 @@
.4byte \status2 .4byte \status2
.endm .endm
.macro chosenstatusanimation battler:req, param1:req, param2:req .macro chosenstatusanimation battler:req, isStatus2:req, status:req
.byte 0x66 .byte 0x66
.byte \battler .byte \battler
.byte \param1 .byte \isStatus2
.4byte \param2 .4byte \status
.endm .endm
.macro yesnobox .macro yesnobox
@@ -651,10 +658,10 @@
.byte 0x75 .byte 0x75
.endm .endm
.macro various battler:req, param1:req .macro various battler:req, id:req
.byte 0x76 .byte 0x76
.byte \battler .byte \battler
.byte \param1 .byte \id
.endm .endm
.macro setprotectlike .macro setprotectlike
@@ -674,9 +681,9 @@
.4byte \ptr .4byte \ptr
.endm .endm
.macro tryhealhalfhealth param0:req, battler:req .macro tryhealhalfhealth ptr:req, battler:req
.byte 0x7b .byte 0x7b
.4byte \param0 .4byte \ptr
.byte \battler .byte \battler
.endm .endm
@@ -696,14 +703,14 @@
.byte 0x7f .byte 0x7f
.endm .endm
.macro manipulatedamage param0:req .macro manipulatedamage mode:req
.byte 0x80 .byte 0x80
.byte \param0 .byte \mode
.endm .endm
.macro trysetrest param0:req .macro trysetrest ptr:req
.byte 0x81 .byte 0x81
.4byte \param0 .4byte \ptr
.endm .endm
.macro jumpifnotfirstturn ptr:req .macro jumpifnotfirstturn ptr:req
@@ -715,23 +722,23 @@
.byte 0x83 .byte 0x83
.endm .endm
.macro jumpifcantmakeasleep param0:req .macro jumpifcantmakeasleep ptr:req
.byte 0x84 .byte 0x84
.4byte \param0 .4byte \ptr
.endm .endm
.macro stockpile .macro stockpile
.byte 0x85 .byte 0x85
.endm .endm
.macro stockpiletobasedamage param0:req .macro stockpiletobasedamage ptr:req
.byte 0x86 .byte 0x86
.4byte \param0 .4byte \ptr
.endm .endm
.macro stockpiletohpheal param0:req .macro stockpiletohpheal ptr:req
.byte 0x87 .byte 0x87
.4byte \param0 .4byte \ptr
.endm .endm
.macro negativedamage .macro negativedamage
@@ -756,23 +763,23 @@
.byte 0x8c .byte 0x8c
.endm .endm
.macro setmultihitcounter param0:req .macro setmultihitcounter val:req
.byte 0x8d .byte 0x8d
.byte \param0 .byte \val
.endm .endm
.macro initmultihitstring .macro initmultihitstring
.byte 0x8e .byte 0x8e
.endm .endm
.macro forcerandomswitch param0:req .macro forcerandomswitch ptr:req
.byte 0x8f .byte 0x8f
.4byte \param0 .4byte \ptr
.endm .endm
.macro tryconversiontypechange param0:req .macro tryconversiontypechange ptr:req
.byte 0x90 .byte 0x90
.4byte \param0 .4byte \ptr
.endm .endm
.macro givepaydaymoney .macro givepaydaymoney
@@ -783,9 +790,9 @@
.byte 0x92 .byte 0x92
.endm .endm
.macro tryKO param0:req .macro tryKO ptr:req
.byte 0x93 .byte 0x93
.4byte \param0 .4byte \ptr
.endm .endm
.macro damagetohalftargethp .macro damagetohalftargethp
@@ -800,9 +807,9 @@
.byte 0x96 .byte 0x96
.endm .endm
.macro tryinfatuating param0:req .macro tryinfatuating ptr:req
.byte 0x97 .byte 0x97
.4byte \param0 .4byte \ptr
.endm .endm
.macro updatestatusicon battler:req .macro updatestatusicon battler:req
@@ -826,9 +833,9 @@
.byte 0x9c .byte 0x9c
.endm .endm
.macro mimicattackcopy param0:req .macro mimicattackcopy ptr:req
.byte 0x9d .byte 0x9d
.4byte \param0 .4byte \ptr
.endm .endm
.macro metronome .macro metronome
@@ -843,48 +850,48 @@
.byte 0xa0 .byte 0xa0
.endm .endm
.macro counterdamagecalculator param0:req .macro counterdamagecalculator ptr:req
.byte 0xa1 .byte 0xa1
.4byte \param0 .4byte \ptr
.endm .endm
.macro mirrorcoatdamagecalculator param0:req .macro mirrorcoatdamagecalculator ptr:req
.byte 0xa2 .byte 0xa2
.4byte \param0 .4byte \ptr
.endm .endm
.macro disablelastusedattack param0:req .macro disablelastusedattack ptr:req
.byte 0xa3 .byte 0xa3
.4byte \param0 .4byte \ptr
.endm .endm
.macro trysetencore param0:req .macro trysetencore ptr:req
.byte 0xa4 .byte 0xa4
.4byte \param0 .4byte \ptr
.endm .endm
.macro painsplitdmgcalc param0:req .macro painsplitdmgcalc ptr:req
.byte 0xa5 .byte 0xa5
.4byte \param0 .4byte \ptr
.endm .endm
.macro settypetorandomresistance param0:req .macro settypetorandomresistance ptr:req
.byte 0xa6 .byte 0xa6
.4byte \param0 .4byte \ptr
.endm .endm
.macro setalwayshitflag .macro setalwayshitflag
.byte 0xa7 .byte 0xa7
.endm .endm
.macro copymovepermanently param0:req .macro copymovepermanently ptr:req
.byte 0xa8 .byte 0xa8
.4byte \param0 .4byte \ptr
.endm .endm
.macro trychoosesleeptalkmove param0:req .macro trychoosesleeptalkmove ptr:req
.byte 0xa9 .byte 0xa9
.4byte \param0 .4byte \ptr
.endm .endm
.macro setdestinybond .macro setdestinybond
@@ -899,32 +906,32 @@
.byte 0xac .byte 0xac
.endm .endm
.macro tryspiteppreduce param0:req .macro tryspiteppreduce ptr:req
.byte 0xad .byte 0xad
.4byte \param0 .4byte \ptr
.endm .endm
.macro healpartystatus .macro healpartystatus
.byte 0xae .byte 0xae
.endm .endm
.macro cursetarget param0:req .macro cursetarget ptr:req
.byte 0xaf .byte 0xaf
.4byte \param0 .4byte \ptr
.endm .endm
.macro trysetspikes param0:req .macro trysetspikes ptr:req
.byte 0xb0 .byte 0xb0
.4byte \param0 .4byte \ptr
.endm .endm
.macro setforesight .macro setforesight
.byte 0xb1 .byte 0xb1
.endm .endm
.macro trysetperishsong param0:req .macro trysetperishsong ptr:req
.byte 0xb2 .byte 0xb2
.4byte \param0 .4byte \ptr
.endm .endm
.macro rolloutdamagecalculation .macro rolloutdamagecalculation
@@ -957,23 +964,23 @@
.byte 0xb9 .byte 0xb9
.endm .endm
.macro jumpifnopursuitswitchdmg param0:req .macro jumpifnopursuitswitchdmg ptr:req
.byte 0xba .byte 0xba
.4byte \param0 .4byte \ptr
.endm .endm
.macro setsunny .macro setsunny
.byte 0xbb .byte 0xbb
.endm .endm
.macro maxattackhalvehp param0:req .macro maxattackhalvehp ptr:req
.byte 0xbc .byte 0xbc
.4byte \param0 .4byte \ptr
.endm .endm
.macro copyfoestats param0:req .macro copyfoestats ptr:req
.byte 0xbd .byte 0xbd
.4byte \param0 .4byte \ptr
.endm .endm
.macro rapidspinfree .macro rapidspinfree
@@ -984,9 +991,9 @@
.byte 0xbf .byte 0xbf
.endm .endm
.macro recoverbasedonsunlight param0:req .macro recoverbasedonsunlight ptr:req
.byte 0xc0 .byte 0xc0
.4byte \param0 .4byte \ptr
.endm .endm
.macro hiddenpowercalc .macro hiddenpowercalc
@@ -997,15 +1004,15 @@
.byte 0xc2 .byte 0xc2
.endm .endm
.macro trysetfutureattack param0:req .macro trysetfutureattack ptr:req
.byte 0xc3 .byte 0xc3
.4byte \param0 .4byte \ptr
.endm .endm
.macro trydobeatup param0:req, param1:req .macro trydobeatup endPtr:req, failPtr:req
.byte 0xc4 .byte 0xc4
.4byte \param0 .4byte \endPtr
.4byte \param1 .4byte \failPtr
.endm .endm
.macro setsemiinvulnerablebit .macro setsemiinvulnerablebit
@@ -1041,107 +1048,107 @@
.byte 0xcc .byte 0xcc
.endm .endm
.macro cureifburnedparalysedorpoisoned param0:req .macro cureifburnedparalysedorpoisoned ptr:req
.byte 0xcd .byte 0xcd
.4byte \param0 .4byte \ptr
.endm .endm
.macro settorment param0:req .macro settorment ptr:req
.byte 0xce .byte 0xce
.4byte \param0 .4byte \ptr
.endm .endm
.macro jumpifnodamage param0:req .macro jumpifnodamage ptr:req
.byte 0xcf .byte 0xcf
.4byte \param0 .4byte \ptr
.endm .endm
.macro settaunt param0:req .macro settaunt ptr:req
.byte 0xd0 .byte 0xd0
.4byte \param0 .4byte \ptr
.endm .endm
.macro trysethelpinghand param0:req .macro trysethelpinghand ptr:req
.byte 0xd1 .byte 0xd1
.4byte \param0 .4byte \ptr
.endm .endm
.macro tryswapitems param0:req .macro tryswapitems ptr:req
.byte 0xd2 .byte 0xd2
.4byte \param0 .4byte \ptr
.endm .endm
.macro trycopyability param0:req .macro trycopyability ptr:req
.byte 0xd3 .byte 0xd3
.4byte \param0 .4byte \ptr
.endm .endm
.macro trywish param0:req, param1:req .macro trywish turnNumber:req, ptr:req
.byte 0xd4 .byte 0xd4
.byte \param0 .byte \turnNumber
.4byte \param1 .4byte \ptr
.endm .endm
.macro trysetroots param0:req .macro trysetroots ptr:req
.byte 0xd5 .byte 0xd5
.4byte \param0 .4byte \ptr
.endm .endm
.macro doubledamagedealtifdamaged .macro doubledamagedealtifdamaged
.byte 0xd6 .byte 0xd6
.endm .endm
.macro setyawn param0:req .macro setyawn ptr:req
.byte 0xd7 .byte 0xd7
.4byte \param0 .4byte \ptr
.endm .endm
.macro setdamagetohealthdifference param0:req .macro setdamagetohealthdifference ptr:req
.byte 0xd8 .byte 0xd8
.4byte \param0 .4byte \ptr
.endm .endm
.macro scaledamagebyhealthratio .macro scaledamagebyhealthratio
.byte 0xd9 .byte 0xd9
.endm .endm
.macro tryswapabilities param0:req .macro tryswapabilities ptr:req
.byte 0xda .byte 0xda
.4byte \param0 .4byte \ptr
.endm .endm
.macro tryimprison param0:req .macro tryimprison ptr:req
.byte 0xdb .byte 0xdb
.4byte \param0 .4byte \ptr
.endm .endm
.macro trysetgrudge param0:req .macro trysetgrudge ptr:req
.byte 0xdc .byte 0xdc
.4byte \param0 .4byte \ptr
.endm .endm
.macro weightdamagecalculation .macro weightdamagecalculation
.byte 0xdd .byte 0xdd
.endm .endm
.macro assistattackselect param0:req .macro assistattackselect ptr:req
.byte 0xde .byte 0xde
.4byte \param0 .4byte \ptr
.endm .endm
.macro trysetmagiccoat param0:req .macro trysetmagiccoat ptr:req
.byte 0xdf .byte 0xdf
.4byte \param0 .4byte \ptr
.endm .endm
.macro trysetsnatch param0:req .macro trysetsnatch ptr:req
.byte 0xe0 .byte 0xe0
.4byte \param0 .4byte \ptr
.endm .endm
.macro trygetintimidatetarget param0:req .macro trygetintimidatetarget ptr:req
.byte 0xe1 .byte 0xe1
.4byte \param0 .4byte \ptr
.endm .endm
.macro switchoutabilities battler:req .macro switchoutabilities battler:req
@@ -1149,10 +1156,10 @@
.byte \battler .byte \battler
.endm .endm
.macro jumpifhasnohp battler:req, param1:req .macro jumpifhasnohp battler:req, ptr:req
.byte 0xe3 .byte 0xe3
.byte \battler .byte \battler
.4byte \param1 .4byte \ptr
.endm .endm
.macro getsecretpowereffect .macro getsecretpowereffect
@@ -1171,28 +1178,28 @@
.byte 0xe7 .byte 0xe7
.endm .endm
.macro settypebasedhalvers param0:req .macro settypebasedhalvers ptr:req
.byte 0xe8 .byte 0xe8
.4byte \param0 .4byte \ptr
.endm .endm
.macro setweatherballtype .macro setweatherballtype
.byte 0xe9 .byte 0xe9
.endm .endm
.macro tryrecycleitem param0:req .macro tryrecycleitem ptr:req
.byte 0xea .byte 0xea
.4byte \param0 .4byte \ptr
.endm .endm
.macro settypetoterrain param0:req .macro settypetoterrain ptr:req
.byte 0xeb .byte 0xeb
.4byte \param0 .4byte \ptr
.endm .endm
.macro pursuitrelated param0:req .macro pursuitdoubles ptr:req
.byte 0xec .byte 0xec
.4byte \param0 .4byte \ptr
.endm .endm
.macro snatchsetbattlers .macro snatchsetbattlers
@@ -1211,18 +1218,18 @@
.byte 0xf0 .byte 0xf0
.endm .endm
.macro trysetcaughtmondexflags param0:req .macro trysetcaughtmondexflags ptr:req
.byte 0xf1 .byte 0xf1
.4byte \param0 .4byte \ptr
.endm .endm
.macro displaydexinfo .macro displaydexinfo
.byte 0xf2 .byte 0xf2
.endm .endm
.macro trygivecaughtmonnick param0:req .macro trygivecaughtmonnick ptr:req
.byte 0xf3 .byte 0xf3
.4byte \param0 .4byte \ptr
.endm .endm
.macro subattackerhpbydmg .macro subattackerhpbydmg
@@ -1241,9 +1248,9 @@
.byte 0xf7 .byte 0xf7
.endm .endm
.macro trainerslideout param0:req .macro trainerslideout position:req
.byte 0xf8 .byte 0xf8
.byte \param0 .byte \position
.endm .endm
@ various command changed to more readable macros @ various command changed to more readable macros
@@ -1357,11 +1364,11 @@
@ helpful macros @ helpful macros
.macro setstatchanger stat:req, stages:req, down:req .macro setstatchanger stat:req, stages:req, down:req
setbyte sSTATCHANGER \stat | \stages << 4 | \down << 7 setbyte sSTATCHANGER, \stat | \stages << 4 | \down << 7
.endm .endm
.macro setmoveeffect effect:req .macro setmoveeffect effect:req
setbyte cEFFECT_CHOOSER \effect setbyte cEFFECT_CHOOSER, \effect
.endm .endm
.macro chosenstatus1animation battler:req, status:req .macro chosenstatus1animation battler:req, status:req
@@ -1413,11 +1420,11 @@
.endm .endm
.macro jumpifstatus3 battler:req, status:req, jumpptr:req .macro jumpifstatus3 battler:req, status:req, jumpptr:req
jumpifstatus3condition \battler, \status, 0x0, \jumpptr jumpifstatus3condition \battler, \status, FALSE, \jumpptr
.endm .endm
.macro jumpifnostatus3 battler:req, status:req, jumpptr:req .macro jumpifnostatus3 battler:req, status:req, jumpptr:req
jumpifstatus3condition \battler, \status, 0x1, \jumpptr jumpifstatus3condition \battler, \status, TRUE, \jumpptr
.endm .endm
.macro jumpifmovehadnoeffect jumpptr:req .macro jumpifmovehadnoeffect jumpptr:req
+91 -91
View File
@@ -622,7 +622,7 @@ Move_BODY_SLAM:
Move_SUPERSONIC: Move_SUPERSONIC:
loadspritegfx ANIM_TAG_GOLD_RING loadspritegfx ANIM_TAG_GOLD_RING
monbg ANIM_ATK_PARTNER monbg ANIM_ATK_PARTNER
monbgprio_2A ANIM_ATTACKER splitbgprio_foes ANIM_ATTACKER
setalpha 12, 8 setalpha 12, 8
createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 2, 0, 8, 1 createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 2, 0, 8, 1
call SupersonicRing call SupersonicRing
@@ -659,7 +659,7 @@ ScreechRing:
Move_FLAME_WHEEL: Move_FLAME_WHEEL:
loadspritegfx ANIM_TAG_SMALL_EMBER loadspritegfx ANIM_TAG_SMALL_EMBER
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_2A ANIM_TARGET splitbgprio_foes ANIM_TARGET
createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 0 createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 0
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
delay 2 delay 2
@@ -702,7 +702,7 @@ Move_PIN_MISSILE:
loadspritegfx ANIM_TAG_NEEDLE loadspritegfx ANIM_TAG_NEEDLE
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_TARGET monbg ANIM_TARGET
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER
createsprite gPinMissileSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, -8, -8, 20, -32 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_ICICLE_SPEAR
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_TARGET monbg ANIM_TARGET
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
playsewithpan SE_M_ICY_WIND, SOUND_PAN_ATTACKER playsewithpan SE_M_ICY_WIND, SOUND_PAN_ATTACKER
createsprite gIcicleSpearSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, -8, -8, 20, -32 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_IMPACT
loadspritegfx ANIM_TAG_POISON_BUBBLE loadspritegfx ANIM_TAG_POISON_BUBBLE
monbg ANIM_TARGET monbg ANIM_TARGET
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER
createsprite gLinearStingerSpriteTemplate, ANIM_TARGET, 2, 20, 0, -8, 0, 20 createsprite gLinearStingerSpriteTemplate, ANIM_TARGET, 2, 20, 0, -8, 0, 20
@@ -836,7 +836,7 @@ Move_TWINEEDLE:
loadspritegfx ANIM_TAG_NEEDLE loadspritegfx ANIM_TAG_NEEDLE
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_TARGET monbg ANIM_TARGET
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
loopsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER, 6, 2 loopsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER, 6, 2
createsprite gLinearStingerSpriteTemplate, ANIM_TARGET, 2, 10, -4, 0, -4, 20 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_AIR_WAVE
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
call SonicBoomProjectile call SonicBoomProjectile
call SonicBoomProjectile call SonicBoomProjectile
@@ -1300,7 +1300,7 @@ Move_SPIKE_CANNON:
loadspritegfx ANIM_TAG_NEEDLE loadspritegfx ANIM_TAG_NEEDLE
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_TARGET monbg ANIM_TARGET
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
createvisualtask AnimTask_WindUpLunge, 5, ANIM_ATTACKER, -4, 0, 4, 6, 8, 4 createvisualtask AnimTask_WindUpLunge, 5, ANIM_ATTACKER, -4, 0, 4, 6, 8, 4
waitforvisualfinish waitforvisualfinish
@@ -1668,7 +1668,7 @@ Move_DEFENSE_CURL:
Move_PROTECT: Move_PROTECT:
loadspritegfx ANIM_TAG_PROTECT loadspritegfx ANIM_TAG_PROTECT
monbg ANIM_ATK_PARTNER monbg ANIM_ATK_PARTNER
monbgprio_28 ANIM_ATTACKER splitbgprio ANIM_ATTACKER
waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 16 waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 16
createsprite gProtectSpriteTemplate, ANIM_ATTACKER, 2, 24, 0, 90 createsprite gProtectSpriteTemplate, ANIM_ATTACKER, 2, 24, 0, 90
waitforvisualfinish waitforvisualfinish
@@ -1882,7 +1882,7 @@ Move_PAY_DAY:
loadspritegfx ANIM_TAG_COIN loadspritegfx ANIM_TAG_COIN
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_TARGET monbg ANIM_TARGET
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER
createsprite gCoinThrowSpriteTemplate, ANIM_ATTACKER, 2, 20, 0, 0, 0, 1152 createsprite gCoinThrowSpriteTemplate, ANIM_ATTACKER, 2, 20, 0, 0, 0, 1152
@@ -2190,7 +2190,7 @@ Move_BUBBLE_BEAM:
loadspritegfx ANIM_TAG_BUBBLE loadspritegfx ANIM_TAG_BUBBLE
loadspritegfx ANIM_TAG_SMALL_BUBBLES loadspritegfx ANIM_TAG_SMALL_BUBBLES
monbg ANIM_TARGET monbg ANIM_TARGET
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
delay 1 delay 1
call BulbblebeamCreateBubbles call BulbblebeamCreateBubbles
@@ -2234,7 +2234,7 @@ Move_ICY_WIND:
playsewithpan SE_M_ICY_WIND, 0 playsewithpan SE_M_ICY_WIND, 0
waitbgfadein waitbgfadein
waitforvisualfinish 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 call IcyWindSwirlingSnowballs
delay 5 delay 5
call IcyWindSwirlingSnowballs call IcyWindSwirlingSnowballs
@@ -2287,7 +2287,7 @@ Move_SMOKESCREEN:
Move_CONVERSION: Move_CONVERSION:
loadspritegfx ANIM_TAG_CONVERSION loadspritegfx ANIM_TAG_CONVERSION
monbg ANIM_ATK_PARTNER monbg ANIM_ATK_PARTNER
monbgprio_28 ANIM_ATTACKER splitbgprio ANIM_ATTACKER
setalpha 16, 0 setalpha 16, 0
delay 0 delay 0
playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER
@@ -2339,7 +2339,7 @@ Move_CONVERSION:
Move_CONVERSION_2: Move_CONVERSION_2:
loadspritegfx ANIM_TAG_CONVERSION loadspritegfx ANIM_TAG_CONVERSION
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_2A ANIM_TARGET splitbgprio_foes ANIM_TARGET
setalpha 0, 16 setalpha 0, 16
delay 0 delay 0
playsewithpan SE_M_BARRIER, SOUND_PAN_TARGET playsewithpan SE_M_BARRIER, SOUND_PAN_TARGET
@@ -2551,7 +2551,7 @@ Move_SING:
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
createvisualtask AnimTask_MusicNotesRainbowBlend, 2 createvisualtask AnimTask_MusicNotesRainbowBlend, 2
waitforvisualfinish 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 createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 7, 0, 12
delay 5 delay 5
createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 6, 1, 12 createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 6, 1, 12
@@ -2657,7 +2657,7 @@ DigSetUp:
loadspritegfx ANIM_TAG_DIRT_MOUND loadspritegfx ANIM_TAG_DIRT_MOUND
createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, 180 createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, 180
createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0, 1, 180 createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0, 1, 180
monbg_22 ANIM_ATTACKER monbg_static ANIM_ATTACKER
delay 1 delay 1
createvisualtask AnimTask_DigDownMovement, 2, FALSE createvisualtask AnimTask_DigDownMovement, 2, FALSE
delay 6 delay 6
@@ -2667,7 +2667,7 @@ DigSetUp:
call DigThrowDirt call DigThrowDirt
call DigThrowDirt call DigThrowDirt
waitforvisualfinish waitforvisualfinish
clearmonbg_23 ANIM_ATTACKER clearmonbg_static ANIM_ATTACKER
delay 1 delay 1
createvisualtask AnimTask_DigDownMovement, 2, TRUE createvisualtask AnimTask_DigDownMovement, 2, TRUE
goto DigEnd goto DigEnd
@@ -3156,7 +3156,7 @@ MachPunchAgainstPlayer:
Move_FORESIGHT: Move_FORESIGHT:
loadspritegfx ANIM_TAG_MAGNIFYING_GLASS loadspritegfx ANIM_TAG_MAGNIFYING_GLASS
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 16, 0 setalpha 16, 0
createsprite gForesightMagnifyingGlassSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET createsprite gForesightMagnifyingGlassSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET
delay 17 delay 17
@@ -3236,7 +3236,7 @@ Move_ROLLOUT:
loadspritegfx ANIM_TAG_MUD_SAND loadspritegfx ANIM_TAG_MUD_SAND
loadspritegfx ANIM_TAG_ROCKS loadspritegfx ANIM_TAG_ROCKS
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
createvisualtask AnimTask_Rollout, 2 createvisualtask AnimTask_Rollout, 2
waitforvisualfinish waitforvisualfinish
@@ -3460,7 +3460,7 @@ Move_HEAT_WAVE:
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_FLYING_DIRT, 0, 6, 6, RGB_RED createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_FLYING_DIRT, 0, 6, 6, RGB_RED
createvisualtask AnimTask_LoadSandstormBackground, 5, TRUE createvisualtask AnimTask_LoadSandstormBackground, 5, TRUE
createvisualtask AnimTask_BlendBackground, 6, 6, RGB_RED 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 delay 4
createvisualtask AnimTask_MoveHeatWaveTargets, 5 createvisualtask AnimTask_MoveHeatWaveTargets, 5
delay 12 delay 12
@@ -3518,11 +3518,11 @@ Move_MEMENTO:
delay 12 delay 12
setalpha 0, 16 setalpha 0, 16
delay 1 delay 1
monbg_22 ANIM_TARGET monbg_static ANIM_TARGET
createvisualtask AnimTask_MoveTargetMementoShadow, 5 createvisualtask AnimTask_MoveTargetMementoShadow, 5
playsewithpan SE_M_PSYBEAM, SOUND_PAN_TARGET playsewithpan SE_M_PSYBEAM, SOUND_PAN_TARGET
waitforvisualfinish waitforvisualfinish
clearmonbg_23 ANIM_TARGET clearmonbg_static ANIM_TARGET
delay 1 delay 1
blendoff blendoff
delay 1 delay 1
@@ -3654,7 +3654,7 @@ Move_SUPERPOWER:
loadspritegfx ANIM_TAG_METEOR loadspritegfx ANIM_TAG_METEOR
loadspritegfx ANIM_TAG_FLAT_ROCK loadspritegfx ANIM_TAG_FLAT_ROCK
monbg ANIM_ATK_PARTNER monbg ANIM_ATK_PARTNER
monbgprio_28 ANIM_ATTACKER splitbgprio ANIM_ATTACKER
setalpha 12, 8 setalpha 12, 8
createsprite gSuperpowerOrbSpriteTemplate, ANIM_TARGET, 2, ANIM_ATTACKER createsprite gSuperpowerOrbSpriteTemplate, ANIM_TARGET, 2, ANIM_ATTACKER
playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER
@@ -3853,7 +3853,7 @@ Move_IMPRISON:
Move_GRUDGE: Move_GRUDGE:
loadspritegfx ANIM_TAG_PURPLE_FLAME loadspritegfx ANIM_TAG_PURPLE_FLAME
monbg ANIM_ATTACKER monbg ANIM_ATTACKER
monbgprio_29 splitbgprio_all
fadetobg BG_GHOST fadetobg BG_GHOST
playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER
waitbgfadein waitbgfadein
@@ -3870,7 +3870,7 @@ Move_GRUDGE:
Move_CAMOUFLAGE: Move_CAMOUFLAGE:
monbg ANIM_ATK_PARTNER monbg ANIM_ATK_PARTNER
monbgprio_28 ANIM_ATTACKER splitbgprio ANIM_ATTACKER
setalpha 16, 0 setalpha 16, 0
createvisualtask AnimTask_SetCamouflageBlend, 5, 2, 3, 0, 14 createvisualtask AnimTask_SetCamouflageBlend, 5, 2, 3, 0, 14
delay 16 delay 16
@@ -3968,7 +3968,7 @@ Move_MIST_BALL:
Move_FEATHER_DANCE: Move_FEATHER_DANCE:
loadspritegfx ANIM_TAG_WHITE_FEATHER loadspritegfx ANIM_TAG_WHITE_FEATHER
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_29 splitbgprio_all
playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_TARGET playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_TARGET
delay 0 delay 0
createsprite gFallingFeatherSpriteTemplate, ANIM_TARGET, 0, 0, -16, 64, 2, 104, 11304, 32, 1 createsprite gFallingFeatherSpriteTemplate, ANIM_TARGET, 0, 0, -16, 64, 2, 104, 11304, 32, 1
@@ -4232,7 +4232,7 @@ Move_GRASS_WHISTLE:
waitforvisualfinish waitforvisualfinish
createvisualtask AnimTask_MusicNotesRainbowBlend, 2 createvisualtask AnimTask_MusicNotesRainbowBlend, 2
waitforvisualfinish 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 createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 7, 1, 0
delay 5 delay 5
createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 6, 1, 0 createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 6, 1, 0
@@ -4464,7 +4464,7 @@ Move_WATER_SPORT:
delay 44 delay 44
playsewithpan SE_M_SURF, SOUND_PAN_ATTACKER playsewithpan SE_M_SURF, SOUND_PAN_ATTACKER
delay 44 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 end
Move_CALM_MIND: Move_CALM_MIND:
@@ -4518,7 +4518,7 @@ Move_LEAF_BLADE:
Move_DRAGON_DANCE: Move_DRAGON_DANCE:
loadspritegfx ANIM_TAG_HOLLOW_ORB loadspritegfx ANIM_TAG_HOLLOW_ORB
monbg ANIM_ATTACKER monbg ANIM_ATTACKER
monbgprio_28 ANIM_ATTACKER splitbgprio ANIM_ATTACKER
delay 1 delay 1
createvisualtask AnimTask_DragonDanceWaver, 5 createvisualtask AnimTask_DragonDanceWaver, 5
playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER
@@ -4924,7 +4924,7 @@ Move_SCRATCH:
Move_DRAGON_BREATH: Move_DRAGON_BREATH:
loadspritegfx ANIM_TAG_SMALL_EMBER loadspritegfx ANIM_TAG_SMALL_EMBER
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
loopsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER, 7, 7 loopsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER, 7, 7
createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20 createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20
delay 2 delay 2
@@ -4958,7 +4958,7 @@ Move_DRAGON_BREATH:
Move_ROAR: Move_ROAR:
loadspritegfx ANIM_TAG_NOISE_LINE loadspritegfx ANIM_TAG_NOISE_LINE
monbg ANIM_ATTACKER monbg ANIM_ATTACKER
monbgprio_28 ANIM_ATTACKER splitbgprio ANIM_ATTACKER
setalpha 8, 8 setalpha 8, 8
createvisualtask SoundTask_PlayDoubleCry, 2, ANIM_ATTACKER, 2 createvisualtask SoundTask_PlayDoubleCry, 2, ANIM_ATTACKER, 2
createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, ANIM_ATTACKER, 1 createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, ANIM_ATTACKER, 1
@@ -5122,7 +5122,7 @@ Move_BUBBLE:
Move_SMOG: Move_SMOG:
loadspritegfx ANIM_TAG_PURPLE_GAS_CLOUD loadspritegfx ANIM_TAG_PURPLE_GAS_CLOUD
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_29 splitbgprio_all
setalpha 12, 8 setalpha 12, 8
loopsewithpan SE_M_MIST, SOUND_PAN_TARGET, 17, 10 loopsewithpan SE_M_MIST, SOUND_PAN_TARGET, 17, 10
call SmogCloud call SmogCloud
@@ -5185,7 +5185,7 @@ Move_FAINT_ATTACK:
Move_SAND_ATTACK: Move_SAND_ATTACK:
loadspritegfx ANIM_TAG_MUD_SAND loadspritegfx ANIM_TAG_MUD_SAND
monbg ANIM_ATK_PARTNER monbg ANIM_ATK_PARTNER
monbgprio_28 ANIM_ATTACKER splitbgprio ANIM_ATTACKER
setalpha 12, 8 setalpha 12, 8
playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_ATTACKER playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_ATTACKER
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, -10, 0, 0, 3 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, -10, 0, 0, 3
@@ -5343,7 +5343,7 @@ Move_CLAMP:
Move_ICE_BEAM: Move_ICE_BEAM:
monbg ANIM_TARGET monbg ANIM_TARGET
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
loadspritegfx ANIM_TAG_ICE_CRYSTALS loadspritegfx ANIM_TAG_ICE_CRYSTALS
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, RGB_BLACK createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, RGB_BLACK
@@ -5475,7 +5475,7 @@ SolarBeamAbsorbEffect:
return return
SolarBeamUnleash: SolarBeamUnleash:
call SetSolarbeamBg 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 createvisualtask AnimTask_CreateSmallSolarbeamOrbs, 5
createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 0 createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 0
delay 4 delay 4
@@ -5527,7 +5527,7 @@ BlizzardContinue:
createvisualtask AnimTask_StartSlidingBg, 5, -2304, 0, 1, -1 createvisualtask AnimTask_StartSlidingBg, 5, -2304, 0, 1, -1
waitbgfadein waitbgfadein
waitforvisualfinish 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
call BlizzardIceCrystals call BlizzardIceCrystals
playsewithpan SE_M_BLIZZARD2, SOUND_PAN_TARGET playsewithpan SE_M_BLIZZARD2, SOUND_PAN_TARGET
@@ -5573,7 +5573,7 @@ Move_POWDER_SNOW:
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 1, 0, 3, RGB_BLACK createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 1, 0, 3, RGB_BLACK
waitforvisualfinish 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
call PowderSnowSnowballs call PowderSnowSnowballs
playsewithpan SE_M_GUST2, SOUND_PAN_TARGET playsewithpan SE_M_GUST2, SOUND_PAN_TARGET
@@ -5606,11 +5606,11 @@ Move_HYDRO_PUMP:
loadspritegfx ANIM_TAG_WATER_ORB loadspritegfx ANIM_TAG_WATER_ORB
loadspritegfx ANIM_TAG_WATER_IMPACT loadspritegfx ANIM_TAG_WATER_IMPACT
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 40, 1 createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 40, 1
delay 6 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 createvisualtask AnimTask_StartSinAnimTimer, 5, 100
call HydroPumpBeams call HydroPumpBeams
call HydroPumpBeams call HydroPumpBeams
@@ -5655,7 +5655,7 @@ Move_SIGNAL_BEAM:
loadspritegfx ANIM_TAG_DUCK loadspritegfx ANIM_TAG_DUCK
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 25, 1 createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 25, 1
delay 6 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 createvisualtask AnimTask_StartSinAnimTimer, 5, 100
call SignalBeamOrbs call SignalBeamOrbs
call SignalBeamOrbs call SignalBeamOrbs
@@ -5695,7 +5695,7 @@ Move_ABSORB:
loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_BLUE_STAR
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_2A ANIM_TARGET splitbgprio_foes ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 4, RGB(13, 31, 12) createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 4, RGB(13, 31, 12)
waitforvisualfinish waitforvisualfinish
@@ -5748,7 +5748,7 @@ Move_MEGA_DRAIN:
loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_BLUE_STAR
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_2A ANIM_TARGET splitbgprio_foes ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 8, RGB(13, 31, 12) createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 8, RGB(13, 31, 12)
waitforvisualfinish waitforvisualfinish
@@ -5809,7 +5809,7 @@ Move_GIGA_DRAIN:
loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_BLUE_STAR
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_2A ANIM_TARGET splitbgprio_foes ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 12, RGB(13, 31, 12) createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 12, RGB(13, 31, 12)
waitforvisualfinish waitforvisualfinish
@@ -5880,7 +5880,7 @@ Move_LEECH_LIFE:
loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_BLUE_STAR
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_2A ANIM_TARGET splitbgprio_foes ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
delay 1 delay 1
createsprite gLeechLifeNeedleSpriteTemplate, ANIM_ATTACKER, 2, -20, 15, 12 createsprite gLeechLifeNeedleSpriteTemplate, ANIM_ATTACKER, 2, -20, 15, 12
@@ -6032,7 +6032,7 @@ Move_BONEMERANG:
loadspritegfx ANIM_TAG_BONE loadspritegfx ANIM_TAG_BONE
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
playsewithpan SE_M_BONEMERANG, SOUND_PAN_ATTACKER playsewithpan SE_M_BONEMERANG, SOUND_PAN_ATTACKER
createsprite gBonemerangSpriteTemplate, ANIM_ATTACKER, 2 createsprite gBonemerangSpriteTemplate, ANIM_ATTACKER, 2
@@ -6052,7 +6052,7 @@ Move_BONE_CLUB:
loadspritegfx ANIM_TAG_BONE loadspritegfx ANIM_TAG_BONE
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
playsewithpan SE_M_BONEMERANG, SOUND_PAN_TARGET playsewithpan SE_M_BONEMERANG, SOUND_PAN_TARGET
createsprite gSpinningBoneSpriteTemplate, ANIM_ATTACKER, 2, -42, -25, 0, 0, 15 createsprite gSpinningBoneSpriteTemplate, ANIM_ATTACKER, 2, -42, -25, 0, 0, 15
@@ -6146,7 +6146,7 @@ Move_GUST:
loadspritegfx ANIM_TAG_GUST loadspritegfx ANIM_TAG_GUST
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
playsewithpan SE_M_GUST, SOUND_PAN_TARGET playsewithpan SE_M_GUST, SOUND_PAN_TARGET
createsprite gEllipticalGustSpriteTemplate, ANIM_ATTACKER, 2, 0, -16 createsprite gEllipticalGustSpriteTemplate, ANIM_ATTACKER, 2, 0, -16
@@ -6164,7 +6164,7 @@ Move_WING_ATTACK:
loadspritegfx ANIM_TAG_GUST loadspritegfx ANIM_TAG_GUST
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
loopsewithpan SE_M_WING_ATTACK, SOUND_PAN_ATTACKER, 20, 2 loopsewithpan SE_M_WING_ATTACK, SOUND_PAN_ATTACKER, 20, 2
createvisualtask AnimTask_TranslateMonElliptical, 2, 0, 12, 4, 1, 4 createvisualtask AnimTask_TranslateMonElliptical, 2, 0, 12, 4, 1, 4
@@ -6197,7 +6197,7 @@ Move_AEROBLAST:
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
call SetSkyBg call SetSkyBg
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
call AeroblastBeam call AeroblastBeam
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 5, 0, 50, 1 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_SMALL_BUBBLES
loadspritegfx ANIM_TAG_WATER_IMPACT loadspritegfx ANIM_TAG_WATER_IMPACT
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
createsprite gWaterGunProjectileSpriteTemplate, ANIM_ATTACKER, 2, 20, 0, 0, 0, 40, -25 createsprite gWaterGunProjectileSpriteTemplate, ANIM_ATTACKER, 2, 20, 0, 0, 0, 40, -25
playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER
@@ -6297,19 +6297,19 @@ Move_CRABHAMMER:
Move_SURF: Move_SURF:
createvisualtask AnimTask_CreateSurfWave, 2, FALSE createvisualtask AnimTask_CreateSurfWave, 2, FALSE
delay 24 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 waitforvisualfinish
end end
Move_FLAMETHROWER: Move_FLAMETHROWER:
loadspritegfx ANIM_TAG_SMALL_EMBER loadspritegfx ANIM_TAG_SMALL_EMBER
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 46, 1 createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 46, 1
delay 6 delay 6
createvisualtask AnimTask_StartSinAnimTimer, 5, 100 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 call FlamethrowerCreateFlames
call FlamethrowerCreateFlames call FlamethrowerCreateFlames
@@ -6358,7 +6358,7 @@ Move_SANDSTORM:
Move_WHIRLPOOL: Move_WHIRLPOOL:
loadspritegfx ANIM_TAG_WATER_ORB loadspritegfx ANIM_TAG_WATER_ORB
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
delay 0 delay 0
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, RGB(0, 13, 23) 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_HANDS_AND_FEET
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET
createsprite gKarateChopSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, 0, 0, 10, 1, 3, 0 createsprite gKarateChopSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, 0, 0, 10, 1, 3, 0
@@ -6722,7 +6722,7 @@ Move_SUNNY_DAY:
setalpha 13, 3 setalpha 13, 3
createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 1, 0, 6, RGB_WHITE createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 1, 0, 6, RGB_WHITE
waitforvisualfinish 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 call SunnyDayLightRay
call SunnyDayLightRay call SunnyDayLightRay
@@ -6742,7 +6742,7 @@ SunnyDayLightRay:
Move_COTTON_SPORE: Move_COTTON_SPORE:
loadspritegfx ANIM_TAG_SPORE loadspritegfx ANIM_TAG_SPORE
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 18, 10 loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 18, 10
call CreateCottonSpores call CreateCottonSpores
call CreateCottonSpores call CreateCottonSpores
@@ -6988,7 +6988,7 @@ FireSpreadEffect:
Move_LEER: Move_LEER:
loadspritegfx ANIM_TAG_LEER loadspritegfx ANIM_TAG_LEER
monbg ANIM_ATTACKER monbg ANIM_ATTACKER
monbgprio_28 ANIM_ATTACKER splitbgprio ANIM_ATTACKER
setalpha 8, 8 setalpha 8, 8
playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER
createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 24, -12 createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 24, -12
@@ -7008,7 +7008,7 @@ Move_DREAM_EATER:
loadspritegfx ANIM_TAG_ORBS loadspritegfx ANIM_TAG_ORBS
loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_BLUE_STAR
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_2A ANIM_TARGET splitbgprio_foes ANIM_TARGET
playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER
call SetPsychicBackground call SetPsychicBackground
setalpha 8, 8 setalpha 8, 8
@@ -7076,7 +7076,7 @@ Move_POISON_GAS:
loadspritegfx ANIM_TAG_POISON_BUBBLE loadspritegfx ANIM_TAG_POISON_BUBBLE
delay 0 delay 0
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_29 splitbgprio_all
setalpha 12, 8 setalpha 12, 8
delay 0 delay 0
playsewithpan SE_M_MIST, SOUND_PAN_ATTACKER playsewithpan SE_M_MIST, SOUND_PAN_ATTACKER
@@ -7221,7 +7221,7 @@ Move_STEEL_WING:
createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0 createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0
waitforvisualfinish waitforvisualfinish
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
loopsewithpan SE_M_WING_ATTACK, SOUND_PAN_ATTACKER, 20, 2 loopsewithpan SE_M_WING_ATTACK, SOUND_PAN_ATTACKER, 20, 2
createvisualtask AnimTask_TranslateMonElliptical, 2, 0, 12, 4, 1, 4 createvisualtask AnimTask_TranslateMonElliptical, 2, 0, 12, 4, 1, 4
@@ -7304,7 +7304,7 @@ Move_METAL_CLAW:
Move_NIGHT_SHADE: Move_NIGHT_SHADE:
monbg ANIM_ATTACKER monbg ANIM_ATTACKER
monbgprio_28 ANIM_ATTACKER splitbgprio ANIM_ATTACKER
playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER
fadetobg BG_GHOST fadetobg BG_GHOST
waitbgfadein waitbgfadein
@@ -7475,7 +7475,7 @@ Move_SPIDER_WEB:
delay 0 delay 0
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 0, 9, RGB_BLACK createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 0, 9, RGB_BLACK
waitforvisualfinish waitforvisualfinish
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
loopsewithpan SE_M_STRING_SHOT, SOUND_PAN_ATTACKER, 9, 6 loopsewithpan SE_M_STRING_SHOT, SOUND_PAN_ATTACKER, 9, 6
call SpiderWebThread call SpiderWebThread
call SpiderWebThread call SpiderWebThread
@@ -7546,7 +7546,7 @@ RazorWindUnleash:
Move_DISABLE: Move_DISABLE:
loadspritegfx ANIM_TAG_SPARKLE_4 loadspritegfx ANIM_TAG_SPARKLE_4
monbg ANIM_TARGET monbg ANIM_TARGET
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 8, 8 setalpha 8, 8
playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER
createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 24, -16 createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 24, -16
@@ -7597,9 +7597,9 @@ RecoverAbsorbEffect:
Move_MIMIC: Move_MIMIC:
loadspritegfx ANIM_TAG_ORBS loadspritegfx ANIM_TAG_ORBS
setalpha 11, 5 setalpha 11, 5
monbg_22 ANIM_DEF_PARTNER monbg_static ANIM_DEF_PARTNER
monbgprio_29 splitbgprio_all
panse_1B SE_M_MINIMIZE, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, -3, 0 panse SE_M_MINIMIZE, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, -3, 0
createvisualtask AnimTask_ShrinkTargetCopy, 5, 128, 24 createvisualtask AnimTask_ShrinkTargetCopy, 5, 128, 24
delay 15 delay 15
createsprite gMimicOrbSpriteTemplate, ANIM_TARGET, 2, -12, 24 createsprite gMimicOrbSpriteTemplate, ANIM_TARGET, 2, -12, 24
@@ -7609,7 +7609,7 @@ Move_MIMIC:
playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER
createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 11, RGB_WHITE createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 11, RGB_WHITE
waitforvisualfinish waitforvisualfinish
clearmonbg_23 ANIM_DEF_PARTNER clearmonbg_static ANIM_DEF_PARTNER
blendoff blendoff
end end
@@ -7943,7 +7943,7 @@ Move_PERISH_SONG:
createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 15, 0, 240 createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 15, 0, 240
createsprite gPerishSongMusicNote2SpriteTemplate, ANIM_ATTACKER, 4, 15, 0, 0 createsprite gPerishSongMusicNote2SpriteTemplate, ANIM_ATTACKER, 4, 15, 0, 0
delay 20 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 delay 80
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 16, RGB_BLACK createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 16, RGB_BLACK
createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 4, 0 createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 4, 0
@@ -8070,7 +8070,7 @@ Move_WILL_O_WISP:
loadspritegfx ANIM_TAG_WISP_FIRE loadspritegfx ANIM_TAG_WISP_FIRE
loadspritegfx ANIM_TAG_WISP_ORB loadspritegfx ANIM_TAG_WISP_ORB
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_2A ANIM_TARGET splitbgprio_foes ANIM_TARGET
playsewithpan SE_M_EMBER, SOUND_PAN_ATTACKER playsewithpan SE_M_EMBER, SOUND_PAN_ATTACKER
waitplaysewithpan SE_M_EMBER, SOUND_PAN_ATTACKER, 10 waitplaysewithpan SE_M_EMBER, SOUND_PAN_ATTACKER, 10
createvisualtask SoundTask_AdjustPanningVar, 2, SOUND_PAN_ATTACKER, SOUND_PAN_ATTACKER, 1, 0 createvisualtask SoundTask_AdjustPanningVar, 2, SOUND_PAN_ATTACKER, SOUND_PAN_ATTACKER, 1, 0
@@ -8084,7 +8084,7 @@ Move_WILL_O_WISP:
delay 40 delay 40
createvisualtask SoundTask_AdjustPanningVar, 2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0 createvisualtask SoundTask_AdjustPanningVar, 2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0
waitforvisualfinish waitforvisualfinish
monbgprio_29 splitbgprio_all
playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 13, 1 createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 13, 1
createsprite gWillOWispFireSpriteTemplate, ANIM_ATTACKER, 2, 0 createsprite gWillOWispFireSpriteTemplate, ANIM_ATTACKER, 2, 0
@@ -8150,7 +8150,7 @@ Move_WISH:
loadspritegfx ANIM_TAG_SPARKLE_2 loadspritegfx ANIM_TAG_SPARKLE_2
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 10, RGB_BLACK createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 10, RGB_BLACK
waitforvisualfinish 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 createsprite gWishStarSpriteTemplate, ANIM_ATTACKER, 40
waitforvisualfinish waitforvisualfinish
delay 60 delay 60
@@ -8552,7 +8552,7 @@ Move_SHEER_COLD:
waitbgfadein waitbgfadein
loadspritegfx ANIM_TAG_ICE_CUBE loadspritegfx ANIM_TAG_ICE_CUBE
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
createvisualtask AnimTask_FrozenIceCube, 2 createvisualtask AnimTask_FrozenIceCube, 2
waitplaysewithpan SE_M_HAIL, SOUND_PAN_TARGET, 17 waitplaysewithpan SE_M_HAIL, SOUND_PAN_TARGET, 17
@@ -8566,7 +8566,7 @@ Move_SHEER_COLD:
Move_ARM_THRUST: Move_ARM_THRUST:
loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_HANDS_AND_FEET
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, 0, 0 createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, 0, 0
delay 6 delay 6
@@ -8591,7 +8591,7 @@ ArmThrustLeft:
goto ArmThrustContinue goto ArmThrustContinue
Move_MUDDY_WATER: 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 createvisualtask AnimTask_CreateSurfWave, 2, TRUE
waitforvisualfinish waitforvisualfinish
end end
@@ -8684,12 +8684,12 @@ DragonClawFireSpiral:
Move_MUD_SHOT: Move_MUD_SHOT:
loadspritegfx ANIM_TAG_BROWN_ORB loadspritegfx ANIM_TAG_BROWN_ORB
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 46, 1 createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 46, 1
delay 6 delay 6
createvisualtask AnimTask_StartSinAnimTimer, 5, 100 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 call MudShotOrbs
call MudShotOrbs call MudShotOrbs
@@ -8717,7 +8717,7 @@ Move_METEOR_MASH:
loadspritegfx ANIM_TAG_GOLD_STARS loadspritegfx ANIM_TAG_GOLD_STARS
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
loadspritegfx ANIM_TAG_HANDS_AND_FEET 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 fadetobg BG_COSMIC
waitbgfadein waitbgfadein
waitforvisualfinish waitforvisualfinish
@@ -8789,7 +8789,7 @@ Move_FRENZY_PLANT:
loadspritegfx ANIM_TAG_ROOTS loadspritegfx ANIM_TAG_ROOTS
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_TARGET monbg ANIM_TARGET
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 2, 0, 5, RGB_BLACK createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 2, 0, 5, RGB_BLACK
waitforvisualfinish waitforvisualfinish
@@ -8848,7 +8848,7 @@ Move_FRENZY_PLANT:
Move_METAL_SOUND: Move_METAL_SOUND:
loadspritegfx ANIM_TAG_METAL_SOUND_WAVES loadspritegfx ANIM_TAG_METAL_SOUND_WAVES
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_2A ANIM_TARGET splitbgprio_foes ANIM_TARGET
createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 2, 0, 8, 1 createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 2, 0, 8, 1
call MetalSoundRings call MetalSoundRings
call MetalSoundRings call MetalSoundRings
@@ -8860,7 +8860,7 @@ Move_METAL_SOUND:
waitforvisualfinish waitforvisualfinish
end end
MetalSoundRings: 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 createsprite gMetalSoundSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0
delay 2 delay 2
return return
@@ -9154,11 +9154,11 @@ Move_ROCK_TOMB:
Move_SILVER_WIND: Move_SILVER_WIND:
loadspritegfx ANIM_TAG_SPARKLE_6 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 playsewithpan SE_M_MORNING_SUN, 0
delay 0 delay 0
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_29 splitbgprio_all
delay 0 delay 0
createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, ANIM_TARGET, 0, 0, 4, RGB_BLACK createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, ANIM_TARGET, 0, 0, 4, RGB_BLACK
createvisualtask AnimTask_GetTargetSide, 2 createvisualtask AnimTask_GetTargetSide, 2
@@ -9368,7 +9368,7 @@ Move_HYDRO_CANNON:
delay 10 delay 10
createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257
delay 30 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 call HydroCannonBeam
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 10, 0, 40, 1 createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 10, 0, 40, 1
createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 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_SMALL_BUBBLES
loadspritegfx ANIM_TAG_BLUE_RING_2 loadspritegfx ANIM_TAG_BLUE_RING_2
monbg ANIM_TARGET monbg ANIM_TARGET
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 7, RGB(0, 25, 28) createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 7, RGB(0, 25, 28)
delay 10 delay 10
@@ -9531,7 +9531,7 @@ Move_PSYCHO_BOOST:
delay 6 delay 6
createvisualtask AnimTask_BlendColorCycle, 2, 1, 2, 8, 0, 10, RGB_BLACK createvisualtask AnimTask_BlendColorCycle, 2, 1, 2, 8, 0, 10, RGB_BLACK
delay 0 delay 0
monbgprio_28 ANIM_ATTACKER splitbgprio ANIM_ATTACKER
setalpha 8, 8 setalpha 8, 8
delay 10 delay 10
createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 3, 0, 240, 0 createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 3, 0, 240, 0
@@ -9591,7 +9591,7 @@ Move_DOOM_DESIRE:
Move_SKY_UPPERCUT: Move_SKY_UPPERCUT:
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
fadetobg BG_IN_AIR fadetobg BG_IN_AIR
waitbgfadeout waitbgfadeout
playsewithpan SE_M_SKY_UPPERCUT, SOUND_PAN_ATTACKER playsewithpan SE_M_SKY_UPPERCUT, SOUND_PAN_ATTACKER
@@ -9650,7 +9650,7 @@ Move_TWISTER:
loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_IMPACT
loadspritegfx ANIM_TAG_ROCKS loadspritegfx ANIM_TAG_ROCKS
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
playsewithpan SE_M_TWISTER, SOUND_PAN_TARGET playsewithpan SE_M_TWISTER, SOUND_PAN_TARGET
createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 120, 70, 5, 70, 30 createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 120, 70, 5, 70, 30
delay 1 delay 1
@@ -10267,7 +10267,7 @@ Status_Freeze:
playsewithpan SE_M_ICY_WIND, 0 playsewithpan SE_M_ICY_WIND, 0
loadspritegfx ANIM_TAG_ICE_CUBE loadspritegfx ANIM_TAG_ICE_CUBE
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
waitplaysewithpan SE_M_HAIL, SOUND_PAN_TARGET, 17 waitplaysewithpan SE_M_HAIL, SOUND_PAN_TARGET, 17
createvisualtask AnimTask_FrozenIceCube, 2 createvisualtask AnimTask_FrozenIceCube, 2
waitforvisualfinish waitforvisualfinish
@@ -10296,7 +10296,7 @@ Status_Nightmare:
General_CastformChange: General_CastformChange:
createvisualtask AnimTask_IsMonInvisible, 2 createvisualtask AnimTask_IsMonInvisible, 2
jumpreteq 1, CastformChangeSkipAnim jumpreteq TRUE, CastformChangeSkipAnim
goto CastformChangeContinue goto CastformChangeContinue
CastformChangeContinue: CastformChangeContinue:
monbg ANIM_ATTACKER monbg ANIM_ATTACKER
@@ -10384,7 +10384,7 @@ Status_FireSpin:
Status_Whirlpool: Status_Whirlpool:
loadspritegfx ANIM_TAG_WATER_ORB loadspritegfx ANIM_TAG_WATER_ORB
monbg ANIM_DEF_PARTNER monbg ANIM_DEF_PARTNER
monbgprio_28 ANIM_TARGET splitbgprio ANIM_TARGET
setalpha 12, 8 setalpha 12, 8
delay 0 delay 0
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, RGB(0, 13, 23) createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, RGB(0, 13, 23)
+99 -94
View File
@@ -262,7 +262,7 @@ BattleScript_HitFromAtkAnimation::
resultmessage resultmessage
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
seteffectwithchance seteffectwithchance
tryfaintmon BS_TARGET, FALSE, NULL tryfaintmon BS_TARGET
BattleScript_MoveEnd:: BattleScript_MoveEnd::
moveendall moveendall
end end
@@ -354,8 +354,8 @@ BattleScript_AbsorbUpdateHp::
printfromtable gAbsorbDrainStringIds printfromtable gAbsorbDrainStringIds
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
BattleScript_AbsorbTryFainting:: BattleScript_AbsorbTryFainting::
tryfaintmon BS_ATTACKER, FALSE, NULL tryfaintmon BS_ATTACKER
tryfaintmon BS_TARGET, FALSE, NULL tryfaintmon BS_TARGET
goto BattleScript_MoveEnd goto BattleScript_MoveEnd
BattleScript_EffectBurnHit:: BattleScript_EffectBurnHit::
@@ -399,10 +399,10 @@ BattleScript_ExplosionLoop:
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
resultmessage resultmessage
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
tryfaintmon BS_TARGET, FALSE, NULL tryfaintmon BS_TARGET
moveendto MOVEEND_NEXT_TARGET moveendto MOVEEND_NEXT_TARGET
jumpifnexttargetvalid BattleScript_ExplosionLoop jumpifnexttargetvalid BattleScript_ExplosionLoop
tryfaintmon BS_ATTACKER, FALSE, NULL tryfaintmon BS_ATTACKER
end end
BattleScript_ExplosionMissed: BattleScript_ExplosionMissed:
effectivenesssound effectivenesssound
@@ -410,7 +410,7 @@ BattleScript_ExplosionMissed:
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
moveendto MOVEEND_NEXT_TARGET moveendto MOVEEND_NEXT_TARGET
jumpifnexttargetvalid BattleScript_ExplosionLoop jumpifnexttargetvalid BattleScript_ExplosionLoop
tryfaintmon BS_ATTACKER, FALSE, NULL tryfaintmon BS_ATTACKER
end end
BattleScript_PreserveMissedBitDoMoveAnim: BattleScript_PreserveMissedBitDoMoveAnim:
@@ -456,7 +456,7 @@ BattleScript_DreamEaterWorked:
printstring STRINGID_PKMNDREAMEATEN printstring STRINGID_PKMNDREAMEATEN
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
BattleScript_DreamEaterTryFaintEnd: BattleScript_DreamEaterTryFaintEnd:
tryfaintmon BS_TARGET, FALSE, NULL tryfaintmon BS_TARGET
goto BattleScript_MoveEnd goto BattleScript_MoveEnd
BattleScript_EffectMirrorMove:: BattleScript_EffectMirrorMove::
@@ -647,7 +647,7 @@ BattleScript_MultiHitPrintStrings::
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
BattleScript_MultiHitEnd:: BattleScript_MultiHitEnd::
seteffectwithchance seteffectwithchance
tryfaintmon BS_TARGET, FALSE, NULL tryfaintmon BS_TARGET
moveendcase MOVEEND_SYNCHRONIZE_TARGET moveendcase MOVEEND_SYNCHRONIZE_TARGET
moveendfrom MOVEEND_IMMUNITY_ABILITIES moveendfrom MOVEEND_IMMUNITY_ABILITIES
end end
@@ -865,7 +865,7 @@ BattleScript_MoveMissedDoDamage::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
healthbarupdate BS_ATTACKER healthbarupdate BS_ATTACKER
datahpupdate BS_ATTACKER datahpupdate BS_ATTACKER
tryfaintmon BS_ATTACKER, FALSE, NULL tryfaintmon BS_ATTACKER
orbyte gMoveResultFlags, MOVE_RESULT_MISSED orbyte gMoveResultFlags, MOVE_RESULT_MISSED
goto BattleScript_MoveEnd goto BattleScript_MoveEnd
@@ -1431,7 +1431,7 @@ BattleScript_TripleKickPrintStrings::
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
BattleScript_TripleKickEnd:: BattleScript_TripleKickEnd::
seteffectwithchance seteffectwithchance
tryfaintmon BS_TARGET, FALSE, NULL tryfaintmon BS_TARGET
moveendfrom MOVEEND_UPDATE_LAST_MOVES moveendfrom MOVEEND_UPDATE_LAST_MOVES
end end
@@ -1524,7 +1524,7 @@ BattleScript_DoGhostCurse::
datahpupdate BS_ATTACKER datahpupdate BS_ATTACKER
printstring STRINGID_PKMNLAIDCURSE printstring STRINGID_PKMNLAIDCURSE
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
tryfaintmon BS_ATTACKER, FALSE, NULL tryfaintmon BS_ATTACKER
goto BattleScript_MoveEnd goto BattleScript_MoveEnd
BattleScript_EffectProtect:: BattleScript_EffectProtect::
@@ -1862,7 +1862,7 @@ BattleScript_DoHitAllWithUndergroundBonus::
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
printstring STRINGID_EMPTYSTRING3 printstring STRINGID_EMPTYSTRING3
waitmessage 1 waitmessage 1
tryfaintmon BS_TARGET, FALSE, NULL tryfaintmon BS_TARGET
moveendto MOVEEND_NEXT_TARGET moveendto MOVEEND_NEXT_TARGET
jumpifnexttargetvalid BattleScript_HitsAllWithUndergroundBonusLoop jumpifnexttargetvalid BattleScript_HitsAllWithUndergroundBonusLoop
end end
@@ -1962,7 +1962,7 @@ BattleScript_BeatUpAttack::
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
resultmessage resultmessage
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
tryfaintmon BS_TARGET, FALSE, NULL tryfaintmon BS_TARGET
moveendto MOVEEND_NEXT_TARGET moveendto MOVEEND_NEXT_TARGET
goto BattleScript_BeatUpLoop goto BattleScript_BeatUpLoop
BattleScript_BeatUpEnd:: BattleScript_BeatUpEnd::
@@ -2227,7 +2227,7 @@ BattleScript_EffectMementoTrySpAtk:
printfromtable gStatDownStringIds printfromtable gStatDownStringIds
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
BattleScript_EffectMementoTryFaint: BattleScript_EffectMementoTryFaint:
tryfaintmon BS_ATTACKER, FALSE, NULL tryfaintmon BS_ATTACKER
goto BattleScript_MoveEnd goto BattleScript_MoveEnd
BattleScript_EffectMementoPrintNoEffect: BattleScript_EffectMementoPrintNoEffect:
printstring STRINGID_BUTNOEFFECT printstring STRINGID_BUTNOEFFECT
@@ -2243,7 +2243,7 @@ BattleScript_MementoFailEnd:
effectivenesssound effectivenesssound
resultmessage resultmessage
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
tryfaintmon BS_ATTACKER, FALSE, NULL tryfaintmon BS_ATTACKER
goto BattleScript_MoveEnd goto BattleScript_MoveEnd
BattleScript_EffectFacade:: BattleScript_EffectFacade::
@@ -2442,7 +2442,7 @@ BattleScript_BrickBreakDoHit::
resultmessage resultmessage
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
seteffectwithchance seteffectwithchance
tryfaintmon BS_TARGET, FALSE, NULL tryfaintmon BS_TARGET
goto BattleScript_MoveEnd goto BattleScript_MoveEnd
BattleScript_EffectYawn:: BattleScript_EffectYawn::
@@ -2825,35 +2825,40 @@ BattleScript_GiveExp::
end2 end2
BattleScript_HandleFaintedMon:: BattleScript_HandleFaintedMon::
atk24 BattleScript_HandleFaintedMonMultiple checkteamslost BattleScript_LinkHandleFaintedMonMultiple
jumpifbyte CMP_NOT_EQUAL, gBattleOutcome, 0, BattleScript_FaintedMonEnd jumpifbyte CMP_NOT_EQUAL, gBattleOutcome, 0, BattleScript_FaintedMonEnd
jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_FaintedMonTryChooseAnother jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_FaintedMonTryChoose
jumpifword CMP_NO_COMMON_BITS, gHitMarker, HITMARKER_PLAYER_FAINTED, BattleScript_FaintedMonTryChooseAnother 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 printstring STRINGID_USENEXTPKMN
setbyte gBattleCommunication, 0 setbyte gBattleCommunication, 0
yesnobox 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 jumpifplayerran BattleScript_FaintedMonEnd
printstring STRINGID_CANTESCAPE2 printstring STRINGID_CANTESCAPE2
BattleScript_FaintedMonTryChooseAnother:: BattleScript_FaintedMonTryChoose::
openpartyscreen BS_FAINTED, BattleScript_FaintedMonEnd openpartyscreen BS_FAINTED, BattleScript_FaintedMonEnd
switchhandleorder BS_FAINTED, 2 switchhandleorder BS_FAINTED, 2
jumpifnotbattletype BATTLE_TYPE_TRAINER, BattleScript_FaintedMonChooseAnother jumpifnotbattletype BATTLE_TYPE_TRAINER, BattleScript_FaintedMonSendOutNew
jumpifbattletype BATTLE_TYPE_LINK, BattleScript_FaintedMonChooseAnother jumpifbattletype BATTLE_TYPE_LINK, BattleScript_FaintedMonSendOutNew
jumpifbattletype BATTLE_TYPE_RECORDED_LINK, BattleScript_FaintedMonChooseAnother jumpifbattletype BATTLE_TYPE_RECORDED_LINK, BattleScript_FaintedMonSendOutNew
jumpifbattletype BATTLE_TYPE_FRONTIER, BattleScript_FaintedMonChooseAnother jumpifbattletype BATTLE_TYPE_FRONTIER, BattleScript_FaintedMonSendOutNew
jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_FaintedMonChooseAnother jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_FaintedMonSendOutNew
jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_PLAYER_FAINTED, BattleScript_FaintedMonChooseAnother jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_PLAYER_FAINTED, BattleScript_FaintedMonSendOutNew
jumpifbyte CMP_EQUAL, sBATTLE_STYLE, OPTIONS_BATTLE_STYLE_SET, BattleScript_FaintedMonChooseAnother jumpifbyte CMP_EQUAL, sBATTLE_STYLE, OPTIONS_BATTLE_STYLE_SET, BattleScript_FaintedMonSendOutNew
jumpifcantswitch BS_PLAYER1, BattleScript_FaintedMonChooseAnother jumpifcantswitch BS_PLAYER1, BattleScript_FaintedMonSendOutNew
@ Yes/No for sending out a new Pokémon when the opponent is switching
printstring STRINGID_ENEMYABOUTTOSWITCHPKMN printstring STRINGID_ENEMYABOUTTOSWITCHPKMN
setbyte gBattleCommunication, 0 setbyte gBattleCommunication, 0
yesnobox 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 setatktoplayer0
openpartyscreen BS_ATTACKER | PARTY_SCREEN_OPTIONAL, BattleScript_FaintedMonChooseAnother openpartyscreen BS_ATTACKER | PARTY_SCREEN_OPTIONAL, BattleScript_FaintedMonSendOutNew
switchhandleorder BS_ATTACKER, 2 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 atknameinbuff1
resetintimidatetracebits BS_ATTACKER resetintimidatetracebits BS_ATTACKER
hpthresholds2 BS_ATTACKER hpthresholds2 BS_ATTACKER
@@ -2872,7 +2877,7 @@ BattleScript_FaintedMonTryChooseAnother::
waitstate waitstate
switchineffects BS_ATTACKER switchineffects BS_ATTACKER
resetsentmonsvalue resetsentmonsvalue
BattleScript_FaintedMonChooseAnother:: BattleScript_FaintedMonSendOutNew::
drawpartystatussummary BS_FAINTED drawpartystatussummary BS_FAINTED
getswitchedmondata BS_FAINTED getswitchedmondata BS_FAINTED
switchindataupdate BS_FAINTED switchindataupdate BS_FAINTED
@@ -2888,13 +2893,13 @@ BattleScript_FaintedMonChooseAnother::
BattleScript_FaintedMonEnd:: BattleScript_FaintedMonEnd::
end2 end2
BattleScript_HandleFaintedMonMultiple:: BattleScript_LinkHandleFaintedMonMultiple::
openpartyscreen BS_UNK_5, BattleScript_HandleFaintedMonMultipleStart openpartyscreen BS_FAINTED_LINK_MULTIPLE_1, BattleScript_LinkHandleFaintedMonMultipleStart
BattleScript_HandleFaintedMonMultipleStart:: BattleScript_LinkHandleFaintedMonMultipleStart::
switchhandleorder BS_FAINTED, 0 switchhandleorder BS_FAINTED, 0
openpartyscreen BS_UNK_6, BattleScript_HandleFaintedMonMultipleEnd openpartyscreen BS_FAINTED_LINK_MULTIPLE_2, BattleScript_LinkHandleFaintedMonMultipleEnd
switchhandleorder BS_FAINTED, 0 switchhandleorder BS_FAINTED, 0
BattleScript_HandleFaintedMonLoop:: BattleScript_LinkHandleFaintedMonLoop::
switchhandleorder BS_FAINTED, 3 switchhandleorder BS_FAINTED, 3
drawpartystatussummary BS_FAINTED drawpartystatussummary BS_FAINTED
getswitchedmondata BS_FAINTED getswitchedmondata BS_FAINTED
@@ -2904,9 +2909,9 @@ BattleScript_HandleFaintedMonLoop::
hidepartystatussummary BS_FAINTED hidepartystatussummary BS_FAINTED
switchinanim BS_FAINTED, FALSE switchinanim BS_FAINTED, FALSE
waitstate waitstate
switchineffects 5 switchineffects BS_FAINTED_LINK_MULTIPLE_1
jumpifbytenotequal gBattlerFainted, gBattlersCount, BattleScript_HandleFaintedMonLoop jumpifbytenotequal gBattlerFainted, gBattlersCount, BattleScript_LinkHandleFaintedMonLoop
BattleScript_HandleFaintedMonMultipleEnd:: BattleScript_LinkHandleFaintedMonMultipleEnd::
end2 end2
BattleScript_LocalTrainerBattleWon:: BattleScript_LocalTrainerBattleWon::
@@ -3040,7 +3045,7 @@ BattleScript_FrontierTrainerBattleWon_End:
end2 end2
BattleScript_SmokeBallEscape:: BattleScript_SmokeBallEscape::
playanimation BS_ATTACKER, B_ANIM_SMOKEBALL_ESCAPE, NULL playanimation BS_ATTACKER, B_ANIM_SMOKEBALL_ESCAPE
printstring STRINGID_PKMNFLEDUSINGITS printstring STRINGID_PKMNFLEDUSINGITS
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
end2 end2
@@ -3131,7 +3136,7 @@ BattleScript_PursuitDmgOnSwitchOut::
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
resultmessage resultmessage
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
tryfaintmon BS_TARGET, FALSE, NULL tryfaintmon BS_TARGET
moveendfromto MOVEEND_ON_DAMAGE_ABILITIES, MOVEEND_CHOICE_MOVE moveendfromto MOVEEND_ON_DAMAGE_ABILITIES, MOVEEND_CHOICE_MOVE
getbattlerfainted BS_TARGET getbattlerfainted BS_TARGET
jumpifbyte CMP_EQUAL, gBattleCommunication, FALSE, BattleScript_PursuitDmgOnSwitchOutRet jumpifbyte CMP_EQUAL, gBattleCommunication, FALSE, BattleScript_PursuitDmgOnSwitchOutRet
@@ -3185,14 +3190,14 @@ BattleScript_RainContinuesOrEnds::
printfromtable gRainContinuesStringIds printfromtable gRainContinuesStringIds
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_RAIN_STOPPED, BattleScript_RainContinuesOrEndsEnd 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:: BattleScript_RainContinuesOrEndsEnd::
end2 end2
BattleScript_DamagingWeatherContinues:: BattleScript_DamagingWeatherContinues::
printfromtable gSandStormHailContinuesStringIds printfromtable gSandStormHailContinuesStringIds
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
playanimation2 BS_ATTACKER, sB_ANIM_ARG1, NULL playanimation_var BS_ATTACKER, sB_ANIM_ARG1
setbyte gBattleCommunication, 0 setbyte gBattleCommunication, 0
BattleScript_DamagingWeatherLoop:: BattleScript_DamagingWeatherLoop::
copyarraywithindex gBattlerAttacker, gBattlerByTurnOrder, gBattleCommunication, 1 copyarraywithindex gBattlerAttacker, gBattlerByTurnOrder, gBattleCommunication, 1
@@ -3205,8 +3210,8 @@ BattleScript_DamagingWeatherLoop::
hitanimation BS_ATTACKER hitanimation BS_ATTACKER
healthbarupdate BS_ATTACKER healthbarupdate BS_ATTACKER
datahpupdate BS_ATTACKER datahpupdate BS_ATTACKER
tryfaintmon BS_ATTACKER, FALSE, NULL tryfaintmon BS_ATTACKER
atk24 BattleScript_DamagingWeatherLoopIncrement checkteamslost BattleScript_DamagingWeatherLoopIncrement
BattleScript_DamagingWeatherLoopIncrement:: BattleScript_DamagingWeatherLoopIncrement::
jumpifbyte CMP_NOT_EQUAL, gBattleOutcome, 0, BattleScript_DamagingWeatherContinuesEnd jumpifbyte CMP_NOT_EQUAL, gBattleOutcome, 0, BattleScript_DamagingWeatherContinuesEnd
addbyte gBattleCommunication, 1 addbyte gBattleCommunication, 1
@@ -3223,7 +3228,7 @@ BattleScript_SandStormHailEnds::
BattleScript_SunlightContinues:: BattleScript_SunlightContinues::
printstring STRINGID_SUNLIGHTSTRONG printstring STRINGID_SUNLIGHTSTRONG
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
playanimation BS_ATTACKER, B_ANIM_SUN_CONTINUES, NULL playanimation BS_ATTACKER, B_ANIM_SUN_CONTINUES
end2 end2
BattleScript_SunlightFaded:: BattleScript_SunlightFaded::
@@ -3234,7 +3239,7 @@ BattleScript_SunlightFaded::
BattleScript_OverworldWeatherStarts:: BattleScript_OverworldWeatherStarts::
printfromtable gWeatherStartsStringIds printfromtable gWeatherStartsStringIds
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
playanimation2 BS_ATTACKER, sB_ANIM_ARG1, NULL playanimation_var BS_ATTACKER, sB_ANIM_ARG1
end3 end3
BattleScript_SideStatusWoreOff:: BattleScript_SideStatusWoreOff::
@@ -3272,8 +3277,8 @@ BattleScript_LeechSeedTurnPrintAndUpdateHp::
datahpupdate BS_TARGET datahpupdate BS_TARGET
printfromtable gLeechSeedStringIds printfromtable gLeechSeedStringIds
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
tryfaintmon BS_ATTACKER, FALSE, NULL tryfaintmon BS_ATTACKER
tryfaintmon BS_TARGET, FALSE, NULL tryfaintmon BS_TARGET
end2 end2
BattleScript_BideStoringEnergy:: BattleScript_BideStoringEnergy::
@@ -3302,7 +3307,7 @@ BattleScript_BideAttack::
datahpupdate BS_TARGET datahpupdate BS_TARGET
resultmessage resultmessage
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
tryfaintmon BS_TARGET, FALSE, NULL tryfaintmon BS_TARGET
goto BattleScript_MoveEnd goto BattleScript_MoveEnd
BattleScript_BideNoEnergyToAttack:: BattleScript_BideNoEnergyToAttack::
@@ -3374,7 +3379,7 @@ BattleScript_DestinyBondTakesLife::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE
healthbarupdate BS_ATTACKER healthbarupdate BS_ATTACKER
datahpupdate BS_ATTACKER datahpupdate BS_ATTACKER
tryfaintmon BS_ATTACKER, FALSE, NULL tryfaintmon BS_ATTACKER
return return
BattleScript_SpikesOnAttacker:: BattleScript_SpikesOnAttacker::
@@ -3382,8 +3387,8 @@ BattleScript_SpikesOnAttacker::
healthbarupdate BS_ATTACKER healthbarupdate BS_ATTACKER
datahpupdate BS_ATTACKER datahpupdate BS_ATTACKER
call BattleScript_PrintHurtBySpikes call BattleScript_PrintHurtBySpikes
tryfaintmon BS_ATTACKER, FALSE, NULL tryfaintmon BS_ATTACKER
tryfaintmon BS_ATTACKER, TRUE, BattleScript_SpikesOnAttackerFainted tryfaintmon_spikes BS_ATTACKER, BattleScript_SpikesOnAttackerFainted
return return
BattleScript_SpikesOnAttackerFainted:: BattleScript_SpikesOnAttackerFainted::
@@ -3397,8 +3402,8 @@ BattleScript_SpikesOnTarget::
healthbarupdate BS_TARGET healthbarupdate BS_TARGET
datahpupdate BS_TARGET datahpupdate BS_TARGET
call BattleScript_PrintHurtBySpikes call BattleScript_PrintHurtBySpikes
tryfaintmon BS_TARGET, FALSE, NULL tryfaintmon BS_TARGET
tryfaintmon BS_TARGET, TRUE, BattleScript_SpikesOnTargetFainted tryfaintmon_spikes BS_TARGET, BattleScript_SpikesOnTargetFainted
return return
BattleScript_SpikesOnTargetFainted:: BattleScript_SpikesOnTargetFainted::
@@ -3412,8 +3417,8 @@ BattleScript_SpikesOnFaintedBattler::
healthbarupdate BS_FAINTED healthbarupdate BS_FAINTED
datahpupdate BS_FAINTED datahpupdate BS_FAINTED
call BattleScript_PrintHurtBySpikes call BattleScript_PrintHurtBySpikes
tryfaintmon BS_FAINTED, FALSE, NULL tryfaintmon BS_FAINTED
tryfaintmon BS_FAINTED, TRUE, BattleScript_SpikesOnFaintedBattlerFainted tryfaintmon_spikes BS_FAINTED, BattleScript_SpikesOnFaintedBattlerFainted
return return
BattleScript_SpikesOnFaintedBattlerFainted:: BattleScript_SpikesOnFaintedBattlerFainted::
@@ -3433,7 +3438,7 @@ BattleScript_PerishSongTakesLife::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE
healthbarupdate BS_ATTACKER healthbarupdate BS_ATTACKER
datahpupdate BS_ATTACKER datahpupdate BS_ATTACKER
tryfaintmon BS_ATTACKER, FALSE, NULL tryfaintmon BS_ATTACKER
end2 end2
BattleScript_PerishSongCountGoesDown:: BattleScript_PerishSongCountGoesDown::
@@ -3508,10 +3513,10 @@ BattleScript_CheckDoomDesireMiss::
BattleScript_FutureAttackAnimate:: BattleScript_FutureAttackAnimate::
adjustnormaldamage2 adjustnormaldamage2
jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, B_MSG_FUTURE_SIGHT, BattleScript_FutureHitAnimDoomDesire 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 goto BattleScript_DoFutureAttackHit
BattleScript_FutureHitAnimDoomDesire:: BattleScript_FutureHitAnimDoomDesire::
playanimation BS_ATTACKER, B_ANIM_DOOM_DESIRE_HIT, NULL playanimation BS_ATTACKER, B_ANIM_DOOM_DESIRE_HIT
BattleScript_DoFutureAttackHit:: BattleScript_DoFutureAttackHit::
effectivenesssound effectivenesssound
hitanimation BS_TARGET hitanimation BS_TARGET
@@ -3520,8 +3525,8 @@ BattleScript_DoFutureAttackHit::
datahpupdate BS_TARGET datahpupdate BS_TARGET
resultmessage resultmessage
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
tryfaintmon BS_TARGET, FALSE, NULL tryfaintmon BS_TARGET
atk24 BattleScript_FutureAttackEnd checkteamslost BattleScript_FutureAttackEnd
BattleScript_FutureAttackEnd:: BattleScript_FutureAttackEnd::
moveendcase MOVEEND_RAGE moveendcase MOVEEND_RAGE
moveendfromto MOVEEND_ITEM_EFFECTS_ALL, MOVEEND_UPDATE_LAST_MOVES moveendfromto MOVEEND_ITEM_EFFECTS_ALL, MOVEEND_UPDATE_LAST_MOVES
@@ -3580,7 +3585,7 @@ BattleScript_SelectingNotAllowedMoveTauntInPalace::
BattleScript_WishComesTrue:: BattleScript_WishComesTrue::
trywish 1, BattleScript_WishButFullHp trywish 1, BattleScript_WishButFullHp
playanimation BS_TARGET, B_ANIM_WISH_HEAL, NULL playanimation BS_TARGET, B_ANIM_WISH_HEAL
printstring STRINGID_PKMNWISHCAMETRUE printstring STRINGID_PKMNWISHCAMETRUE
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
@@ -3599,7 +3604,7 @@ BattleScript_WishButFullHp::
end2 end2
BattleScript_IngrainTurnHeal:: BattleScript_IngrainTurnHeal::
playanimation BS_ATTACKER, B_ANIM_INGRAIN_HEAL, NULL playanimation BS_ATTACKER, B_ANIM_INGRAIN_HEAL
printstring STRINGID_PKMNABSORBEDNUTRIENTS printstring STRINGID_PKMNABSORBEDNUTRIENTS
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
@@ -3633,7 +3638,7 @@ BattleScript_AtkDefDown_End::
return return
BattleScript_KnockedOff:: BattleScript_KnockedOff::
playanimation BS_TARGET, B_ANIM_ITEM_KNOCKOFF, NULL playanimation BS_TARGET, B_ANIM_ITEM_KNOCKOFF
printstring STRINGID_PKMNKNOCKEDOFF printstring STRINGID_PKMNKNOCKEDOFF
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
return return
@@ -3670,7 +3675,7 @@ BattleScript_SnatchedMove::
attackstring attackstring
ppreduce ppreduce
snatchsetbattlers snatchsetbattlers
playanimation BS_TARGET, B_ANIM_SNATCH_MOVE, NULL playanimation BS_TARGET, B_ANIM_SNATCH_MOVE
printstring STRINGID_PKMNSNATCHEDMOVE printstring STRINGID_PKMNSNATCHEDMOVE
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
orword gHitMarker, HITMARKER_ATTACKSTRING_PRINTED | HITMARKER_NO_PPDEDUCT | HITMARKER_ALLOW_NO_PP orword gHitMarker, HITMARKER_ATTACKSTRING_PRINTED | HITMARKER_NO_PPDEDUCT | HITMARKER_ALLOW_NO_PP
@@ -3701,7 +3706,7 @@ BattleScript_SAtkDown2End::
BattleScript_FocusPunchSetUp:: BattleScript_FocusPunchSetUp::
printstring STRINGID_EMPTYSTRING3 printstring STRINGID_EMPTYSTRING3
waitmessage 1 waitmessage 1
playanimation BS_ATTACKER, B_ANIM_FOCUS_PUNCH_SETUP, NULL playanimation BS_ATTACKER, B_ANIM_FOCUS_PUNCH_SETUP
printstring STRINGID_PKMNTIGHTENINGFOCUS printstring STRINGID_PKMNTIGHTENINGFOCUS
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
end2 end2
@@ -3734,8 +3739,8 @@ BattleScript_DoTurnDmg::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE
healthbarupdate BS_ATTACKER healthbarupdate BS_ATTACKER
datahpupdate BS_ATTACKER datahpupdate BS_ATTACKER
tryfaintmon BS_ATTACKER, FALSE, NULL tryfaintmon BS_ATTACKER
atk24 BattleScript_DoTurnDmgEnd checkteamslost BattleScript_DoTurnDmgEnd
BattleScript_DoTurnDmgEnd:: BattleScript_DoTurnDmgEnd::
end2 end2
@@ -3803,7 +3808,7 @@ BattleScript_DoSelfConfusionDmg::
datahpupdate BS_ATTACKER datahpupdate BS_ATTACKER
resultmessage resultmessage
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
tryfaintmon BS_ATTACKER, FALSE, NULL tryfaintmon BS_ATTACKER
goto BattleScript_MoveEnd goto BattleScript_MoveEnd
BattleScript_MoveUsedIsConfusedRet:: BattleScript_MoveUsedIsConfusedRet::
return return
@@ -3936,12 +3941,12 @@ BattleScript_DoRecoil::
datahpupdate BS_ATTACKER datahpupdate BS_ATTACKER
printstring STRINGID_PKMNHITWITHRECOIL printstring STRINGID_PKMNHITWITHRECOIL
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
tryfaintmon BS_ATTACKER, FALSE, NULL tryfaintmon BS_ATTACKER
BattleScript_RecoilEnd:: BattleScript_RecoilEnd::
return return
BattleScript_ItemSteal:: BattleScript_ItemSteal::
playanimation BS_TARGET, B_ANIM_ITEM_STEAL, NULL playanimation BS_TARGET, B_ANIM_ITEM_STEAL
printstring STRINGID_PKMNSTOLEITEM printstring STRINGID_PKMNSTOLEITEM
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
return return
@@ -3950,7 +3955,7 @@ BattleScript_DrizzleActivates::
pause B_WAIT_TIME_SHORT pause B_WAIT_TIME_SHORT
printstring STRINGID_PKMNMADEITRAIN printstring STRINGID_PKMNMADEITRAIN
waitstate waitstate
playanimation BS_BATTLER_0, B_ANIM_RAIN_CONTINUES, NULL playanimation BS_BATTLER_0, B_ANIM_RAIN_CONTINUES
call BattleScript_WeatherFormChanges call BattleScript_WeatherFormChanges
end3 end3
@@ -3978,7 +3983,7 @@ BattleScript_SandstreamActivates::
pause B_WAIT_TIME_SHORT pause B_WAIT_TIME_SHORT
printstring STRINGID_PKMNSXWHIPPEDUPSANDSTORM printstring STRINGID_PKMNSXWHIPPEDUPSANDSTORM
waitstate waitstate
playanimation BS_BATTLER_0, B_ANIM_SANDSTORM_CONTINUES, NULL playanimation BS_BATTLER_0, B_ANIM_SANDSTORM_CONTINUES
call BattleScript_WeatherFormChanges call BattleScript_WeatherFormChanges
end3 end3
@@ -4043,7 +4048,7 @@ BattleScript_DroughtActivates::
pause B_WAIT_TIME_SHORT pause B_WAIT_TIME_SHORT
printstring STRINGID_PKMNSXINTENSIFIEDSUN printstring STRINGID_PKMNSXINTENSIFIEDSUN
waitstate waitstate
playanimation BS_BATTLER_0, B_ANIM_SUN_CONTINUES, NULL playanimation BS_BATTLER_0, B_ANIM_SUN_CONTINUES
call BattleScript_WeatherFormChanges call BattleScript_WeatherFormChanges
end3 end3
@@ -4179,7 +4184,7 @@ BattleScript_RoughSkinActivates::
datahpupdate BS_ATTACKER datahpupdate BS_ATTACKER
printstring STRINGID_PKMNHURTSWITH printstring STRINGID_PKMNHURTSWITH
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
tryfaintmon BS_ATTACKER, FALSE, NULL tryfaintmon BS_ATTACKER
return return
BattleScript_CuteCharmActivates:: BattleScript_CuteCharmActivates::
@@ -4247,7 +4252,7 @@ BattleScript_IgnoresAndHitsItself::
goto BattleScript_DoSelfConfusionDmg goto BattleScript_DoSelfConfusionDmg
BattleScript_SubstituteFade:: BattleScript_SubstituteFade::
playanimation BS_TARGET, B_ANIM_SUBSTITUTE_FADE, NULL playanimation BS_TARGET, B_ANIM_SUBSTITUTE_FADE
printstring STRINGID_PKMNSUBSTITUTEFADED printstring STRINGID_PKMNSUBSTITUTEFADED
return return
@@ -4256,7 +4261,7 @@ BattleScript_BerryCurePrlzEnd2::
end2 end2
BattleScript_BerryCureParRet:: BattleScript_BerryCureParRet::
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMCUREDPARALYSIS printstring STRINGID_PKMNSITEMCUREDPARALYSIS
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
updatestatusicon BS_SCRIPTING updatestatusicon BS_SCRIPTING
@@ -4268,7 +4273,7 @@ BattleScript_BerryCurePsnEnd2::
end2 end2
BattleScript_BerryCurePsnRet:: BattleScript_BerryCurePsnRet::
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMCUREDPOISON printstring STRINGID_PKMNSITEMCUREDPOISON
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
updatestatusicon BS_SCRIPTING updatestatusicon BS_SCRIPTING
@@ -4280,7 +4285,7 @@ BattleScript_BerryCureBrnEnd2::
end2 end2
BattleScript_BerryCureBrnRet:: BattleScript_BerryCureBrnRet::
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMHEALEDBURN printstring STRINGID_PKMNSITEMHEALEDBURN
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
updatestatusicon BS_SCRIPTING updatestatusicon BS_SCRIPTING
@@ -4292,7 +4297,7 @@ BattleScript_BerryCureFrzEnd2::
end2 end2
BattleScript_BerryCureFrzRet:: BattleScript_BerryCureFrzRet::
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMDEFROSTEDIT printstring STRINGID_PKMNSITEMDEFROSTEDIT
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
updatestatusicon BS_SCRIPTING updatestatusicon BS_SCRIPTING
@@ -4304,7 +4309,7 @@ BattleScript_BerryCureSlpEnd2::
end2 end2
BattleScript_BerryCureSlpRet:: BattleScript_BerryCureSlpRet::
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMWOKEIT printstring STRINGID_PKMNSITEMWOKEIT
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
updatestatusicon BS_SCRIPTING updatestatusicon BS_SCRIPTING
@@ -4316,7 +4321,7 @@ BattleScript_BerryCureConfusionEnd2::
end2 end2
BattleScript_BerryCureConfusionRet:: BattleScript_BerryCureConfusionRet::
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMSNAPPEDOUT printstring STRINGID_PKMNSITEMSNAPPEDOUT
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
removeitem BS_SCRIPTING removeitem BS_SCRIPTING
@@ -4327,7 +4332,7 @@ BattleScript_BerryCureChosenStatusEnd2::
end2 end2
BattleScript_BerryCureChosenStatusRet:: BattleScript_BerryCureChosenStatusRet::
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printfromtable gBerryEffectStringIds printfromtable gBerryEffectStringIds
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
updatestatusicon BS_SCRIPTING updatestatusicon BS_SCRIPTING
@@ -4339,14 +4344,14 @@ BattleScript_WhiteHerbEnd2::
end2 end2
BattleScript_WhiteHerbRet:: BattleScript_WhiteHerbRet::
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMRESTOREDSTATUS printstring STRINGID_PKMNSITEMRESTOREDSTATUS
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
removeitem BS_SCRIPTING removeitem BS_SCRIPTING
return return
BattleScript_ItemHealHP_RemoveItem:: BattleScript_ItemHealHP_RemoveItem::
playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT, NULL playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMRESTOREDHEALTH printstring STRINGID_PKMNSITEMRESTOREDHEALTH
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
@@ -4356,7 +4361,7 @@ BattleScript_ItemHealHP_RemoveItem::
end2 end2
BattleScript_BerryPPHealEnd2:: BattleScript_BerryPPHealEnd2::
playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT, NULL playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMRESTOREDPP printstring STRINGID_PKMNSITEMRESTOREDPP
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
removeitem BS_ATTACKER removeitem BS_ATTACKER
@@ -4367,7 +4372,7 @@ BattleScript_ItemHealHP_End2::
end2 end2
BattleScript_ItemHealHP_Ret:: BattleScript_ItemHealHP_Ret::
playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT, NULL playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMRESTOREDHPALITTLE printstring STRINGID_PKMNSITEMRESTOREDHPALITTLE
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
@@ -4380,13 +4385,13 @@ BattleScript_SelectingNotAllowedMoveChoiceItem::
endselectionscript endselectionscript
BattleScript_FocusBandActivates:: BattleScript_FocusBandActivates::
playanimation BS_TARGET, B_ANIM_FOCUS_BAND, NULL playanimation BS_TARGET, B_ANIM_FOCUS_BAND
printstring STRINGID_PKMNHUNGONWITHX printstring STRINGID_PKMNHUNGONWITHX
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
return return
BattleScript_BerryConfuseHealEnd2:: BattleScript_BerryConfuseHealEnd2::
playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT, NULL playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMRESTOREDHEALTH printstring STRINGID_PKMNSITEMRESTOREDHEALTH
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
@@ -4400,7 +4405,7 @@ BattleScript_BerryConfuseHealEnd2::
end2 end2
BattleScript_BerryStatRaiseEnd2:: 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 statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_BerryStatRaiseDoStatUp
BattleScript_BerryStatRaiseDoStatUp:: BattleScript_BerryStatRaiseDoStatUp::
setbyte cMULTISTRING_CHOOSER, B_MSG_STAT_ROSE_ITEM setbyte cMULTISTRING_CHOOSER, B_MSG_STAT_ROSE_ITEM
@@ -4409,7 +4414,7 @@ BattleScript_BerryStatRaiseDoStatUp::
end2 end2
BattleScript_BerryFocusEnergyEnd2:: BattleScript_BerryFocusEnergyEnd2::
playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT, NULL playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNUSEDXTOGETPUMPED printstring STRINGID_PKMNUSEDXTOGETPUMPED
waitmessage B_WAIT_TIME_LONG waitmessage B_WAIT_TIME_LONG
removeitem BS_ATTACKER removeitem BS_ATTACKER

Before

Width:  |  Height:  |  Size: 286 B

After

Width:  |  Height:  |  Size: 286 B

Before

Width:  |  Height:  |  Size: 174 B

After

Width:  |  Height:  |  Size: 174 B

+37 -40
View File
@@ -17,6 +17,11 @@
#define GET_BATTLER_SIDE(battler) (GetBattlerPosition(battler) & BIT_SIDE) #define GET_BATTLER_SIDE(battler) (GetBattlerPosition(battler) & BIT_SIDE)
#define GET_BATTLER_SIDE2(battler) (GET_BATTLER_POSITION(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 // Battle Actions
// These determine what each battler will do in a turn // These determine what each battler will do in a turn
#define B_ACTION_USE_MOVE 0 #define B_ACTION_USE_MOVE 0
@@ -32,32 +37,21 @@
#define B_ACTION_EXEC_SCRIPT 10 #define B_ACTION_EXEC_SCRIPT 10
#define B_ACTION_TRY_FINISH 11 #define B_ACTION_TRY_FINISH 11
#define B_ACTION_FINISHED 12 #define B_ACTION_FINISHED 12
#define B_ACTION_CANCEL_PARTNER 12 // when choosing an action #define B_ACTION_CANCEL_PARTNER 12 // when choosing an action
#define B_ACTION_NOTHING_FAINTED 13 // when choosing an action #define B_ACTION_NOTHING_FAINTED 13 // when choosing an action
#define B_ACTION_NONE 0xFF #define B_ACTION_NONE 0xFF
// array entries for battle communication #define MOVE_TARGET_SELECTED 0
#define MULTIUSE_STATE 0 #define MOVE_TARGET_DEPENDS (1 << 0)
#define CURSOR_POSITION 1 #define MOVE_TARGET_USER_OR_SELECTED (1 << 1)
#define TASK_ID 1 // task Id and cursor position share the same field #define MOVE_TARGET_RANDOM (1 << 2)
#define SPRITES_INIT_STATE1 1 // shares the Id as well #define MOVE_TARGET_BOTH (1 << 3)
#define SPRITES_INIT_STATE2 2 #define MOVE_TARGET_USER (1 << 4)
#define MOVE_EFFECT_BYTE 3 #define MOVE_TARGET_FOES_AND_ALLY (1 << 5)
#define ACTIONS_CONFIRMED_COUNT 4 #define MOVE_TARGET_OPPONENTS_FIELD (1 << 6)
#define MULTISTRING_CHOOSER 5
#define MISS_TYPE 6
#define MSG_DISPLAY 7
#define BATTLE_COMMUNICATION_ENTRIES_COUNT 8
#define MOVE_TARGET_SELECTED 0x0 // For the second argument of GetMoveTarget, when no target override is needed
#define MOVE_TARGET_DEPENDS 0x1 #define NO_TARGET_OVERRIDE 0
#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 BATTLE_BUFFER_LINK_SIZE 0x1000 #define BATTLE_BUFFER_LINK_SIZE 0x1000
@@ -115,7 +109,7 @@ struct ProtectStruct
u32 confusionSelfDmg:1; u32 confusionSelfDmg:1;
u32 targetNotAffected:1; u32 targetNotAffected:1;
u32 chargingTurn: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 usedImprisonedMove:1;
u32 loveImmobility:1; u32 loveImmobility:1;
u32 usedDisabledMove:1; u32 usedDisabledMove:1;
@@ -138,7 +132,7 @@ struct SpecialStatus
u32 intimidatedMon:1; u32 intimidatedMon:1;
u32 traced:1; u32 traced:1;
u32 ppNotAffectedByPressure:1; u32 ppNotAffectedByPressure:1;
u32 flag40:1; u32 faintedHasReplacement:1;
u32 focusBanded:1; u32 focusBanded:1;
s32 dmg; s32 dmg;
s32 physicalDmg; s32 physicalDmg;
@@ -377,9 +371,9 @@ struct BattleStruct
u8 field_52; u8 field_52;
u8 sentInPokes; u8 sentInPokes;
bool8 selectionScriptFinished[MAX_BATTLERS_COUNT]; bool8 selectionScriptFinished[MAX_BATTLERS_COUNT];
u8 field_58[4]; u8 battlerPartyIndexes[MAX_BATTLERS_COUNT];
u8 monToSwitchIntoId[MAX_BATTLERS_COUNT]; u8 monToSwitchIntoId[MAX_BATTLERS_COUNT];
u8 field_60[4][3]; u8 battlerPartyOrders[MAX_BATTLERS_COUNT][PARTY_SIZE / 2];
u8 runTries; u8 runTries;
u8 caughtMonNick[POKEMON_NAME_LENGTH + 1]; u8 caughtMonNick[POKEMON_NAME_LENGTH + 1];
u8 unused_2; u8 unused_2;
@@ -398,7 +392,7 @@ struct BattleStruct
u8 stringMoveType; u8 stringMoveType;
u8 expGetterBattlerId; u8 expGetterBattlerId;
u8 unused_5; 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 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 field_93; // related to choosing pokemon?
u8 wallyBattleState; u8 wallyBattleState;
@@ -426,7 +420,7 @@ struct BattleStruct
u8 unused_6[3]; u8 unused_6[3];
u8 givenExpMons; // Bits for enemy party's pokemon that gave exp to player's party. 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] 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 { union {
struct LinkBattlerHeader linkBattlerHeader; struct LinkBattlerHeader linkBattlerHeader;
u32 battleVideo[2]; 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. u8 alreadyStatusedMoveAttempt; // As bits for battlers; For example when using Thunder Wave on an already paralyzed pokemon.
}; };
#define GET_MOVE_TYPE(move, typeArg) \ #define F_DYNAMIC_TYPE_1 (1 << 6)
{ \ #define F_DYNAMIC_TYPE_2 (1 << 7)
if (gBattleStruct->dynamicMoveType) \ #define DYNAMIC_TYPE_MASK (F_DYNAMIC_TYPE_1 - 1)
typeArg = gBattleStruct->dynamicMoveType & 0x3F; \
else \ #define GET_MOVE_TYPE(move, typeArg) \
typeArg = gBattleMoves[move].type; \ { \
if (gBattleStruct->dynamicMoveType) \
typeArg = gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK; \
else \
typeArg = gBattleMoves[move].type; \
} }
#define IS_TYPE_PHYSICAL(moveType)(moveType < TYPE_MYSTERY) #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)) #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 struct BattleScripting
{ {
s32 painSplitHp; s32 painSplitHp;
@@ -498,18 +498,15 @@ struct BattleScripting
u8 battleStyle; u8 battleStyle;
u8 drawlvlupboxState; u8 drawlvlupboxState;
u8 learnMoveState; u8 learnMoveState;
u8 field_20; u8 pursuitDoublesAttacker;
u8 reshowMainState; u8 reshowMainState;
u8 reshowHelperState; u8 reshowHelperState;
u8 levelUpHP; u8 levelUpHP;
u8 windowsType; // 0 - normal, 1 - battle arena u8 windowsType; // B_WIN_TYPE_*
u8 multiplayerId; u8 multiplayerId;
u8 specialTrainerBattleType; u8 specialTrainerBattleType;
}; };
// rom_80A5C6C
struct BattleSpriteInfo struct BattleSpriteInfo
{ {
u16 invisible:1; // 0x1 u16 invisible:1; // 0x1
@@ -624,8 +621,8 @@ extern u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT];
extern u32 gBattleTypeFlags; extern u32 gBattleTypeFlags;
extern u8 gBattleTerrain; extern u8 gBattleTerrain;
extern u32 gUnusedFirstBattleVar1; extern u32 gUnusedFirstBattleVar1;
extern u8 *gUnknown_0202305C; extern u8 *gBattleAnimBgTileBuffer;
extern u8 *gUnknown_02023060; extern u8 *gBattleAnimBgTilemapBuffer;
extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200]; extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200]; extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
extern u8 gActiveBattler; extern u8 gActiveBattler;
+4 -4
View File
@@ -64,12 +64,12 @@ s8 BattleAnimAdjustPanning(s8 pan);
s8 BattleAnimAdjustPanning2(s8 pan); s8 BattleAnimAdjustPanning2(s8 pan);
s16 KeepPanInRange(s16 a, int oldPan); s16 KeepPanInRange(s16 a, int oldPan);
s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan); 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); void ResetBattleAnimBg(bool8);
// battle_intro.c // battle_intro.c
void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value); 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); void HandleIntroSlide(u8 terrainId);
int GetAnimBgAttribute(u8 bgId, u8 attributeId); int GetAnimBgAttribute(u8 bgId, u8 attributeId);
@@ -107,7 +107,7 @@ void AnimTranslateLinear_WaitEnd(struct Sprite *sprite);
u8 GetBattlerSpriteBGPriority(u8 battlerId); u8 GetBattlerSpriteBGPriority(u8 battlerId);
void *LoadPointerFromVars(s16 bottom, s16 top); void *LoadPointerFromVars(s16 bottom, s16 top);
void StorePointerInVars(s16 *bottom, s16 *top, const void *ptr); void StorePointerInVars(s16 *bottom, s16 *top, const void *ptr);
void sub_80A8278(void); void InitPrioritiesForVisibleBattlers(void);
void GetBattleAnimBg1Data(struct BattleAnimBgData*); void GetBattleAnimBg1Data(struct BattleAnimBgData*);
void GetBattleAnimBgData(struct BattleAnimBgData*, u32 arg1); void GetBattleAnimBgData(struct BattleAnimBgData*, u32 arg1);
u8 GetBattlerSpriteSubpriority(u8 battlerId); u8 GetBattlerSpriteSubpriority(u8 battlerId);
@@ -125,7 +125,7 @@ u8 AnimDummyReturnArg(u8 battler);
s16 CloneBattlerSpriteWithBlend(u8); s16 CloneBattlerSpriteWithBlend(u8);
void obj_delete_but_dont_free_vram(struct Sprite*); void obj_delete_but_dont_free_vram(struct Sprite*);
u8 CreateInvisibleSpriteCopy(int, u8, int); 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 AnimLoadCompressedBgGfx(u32, const u32*, u32);
void UpdateAnimBg3ScreenSize(bool8); void UpdateAnimBg3ScreenSize(bool8);
void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *); void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *);
-1
View File
@@ -7,7 +7,6 @@ void BattleArena_InitPoints(void);
void BattleArena_AddMindPoints(u8 battler); void BattleArena_AddMindPoints(u8 battler);
void BattleArena_AddSkillPoints(u8 battler); void BattleArena_AddSkillPoints(u8 battler);
void BattleArena_DeductMindPoints(u8 battler, u16 stringId); void BattleArena_DeductMindPoints(u8 battler, u16 stringId);
void sub_81A586C(u8 battler);
void DrawArenaRefereeTextBox(void); void DrawArenaRefereeTextBox(void);
void EraseArenaRefereeTextBox(void); void EraseArenaRefereeTextBox(void);
+32 -16
View File
@@ -1,8 +1,7 @@
#ifndef GUARD_BATTLE_CONTROLLERS_H #ifndef GUARD_BATTLE_CONTROLLERS_H
#define GUARD_BATTLE_CONTROLLERS_H #define GUARD_BATTLE_CONTROLLERS_H
enum enum {
{
REQUEST_ALL_BATTLE, REQUEST_ALL_BATTLE,
REQUEST_SPECIES_BATTLE, REQUEST_SPECIES_BATTLE,
REQUEST_HELDITEM_BATTLE, REQUEST_HELDITEM_BATTLE,
@@ -67,19 +66,36 @@ enum
// Special arguments for Battle Controller functions. // Special arguments for Battle Controller functions.
#define RESET_ACTION_MOVE_SELECTION 0 enum { // Values given to the emit functions to choose gBattleBufferA or gBattleBufferB
#define RESET_ACTION_SELECTION 1 BUFFER_A,
#define RESET_MOVE_SELECTION 2 BUFFER_B
};
#define BALL_NO_SHAKES 0 enum {
#define BALL_1_SHAKE 1 RESET_ACTION_MOVE_SELECTION,
#define BALL_2_SHAKES 2 RESET_ACTION_SELECTION,
#define BALL_3_SHAKES_FAIL 3 RESET_MOVE_SELECTION,
#define BALL_3_SHAKES_SUCCESS 4 };
#define BALL_TRAINER_BLOCK 5
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 INSTANT_HP_BAR_DROP 32767
#define PARTY_SUMM_SKIP_DRAW_DELAY (1 << 7)
// Special return values in gBattleBufferB from Battle Controller functions. // Special return values in gBattleBufferB from Battle Controller functions.
#define RET_VALUE_LEVELED_UP 11 #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_EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data); // unused
void BtlController_EmitLoadMonSprite(u8 bufferId); void BtlController_EmitLoadMonSprite(u8 bufferId);
void BtlController_EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit); 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_EmitDrawTrainerPic(u8 bufferId);
void BtlController_EmitTrainerSlide(u8 bufferId); void BtlController_EmitTrainerSlide(u8 bufferId);
void BtlController_EmitTrainerSlideBack(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_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_EmitPrintString(u8 bufferId, u16 stringId);
void BtlController_EmitPrintSelectionString(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_EmitYesNoBox(u8 bufferId);
void BtlController_EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData); void BtlController_EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData);
void BtlController_EmitChooseItem(u8 bufferId, u8* arg1); 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_EmitCmd23(u8 bufferId); // unused
void BtlController_EmitHealthBarUpdate(u8 bufferId, u16 hpValue); void BtlController_EmitHealthBarUpdate(u8 bufferId, u16 hpValue);
void BtlController_EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints); 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_EmitStatusXor(u8 bufferId, u8 b); // unused
void BtlController_EmitDataTransfer(u8 bufferId, u16 size, void *data); void BtlController_EmitDataTransfer(u8 bufferId, u16 size, void *data);
void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data); // unused 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_EmitCmd32(u8 bufferId, u16 size, void *c); // unused
void BtlController_EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2); void BtlController_EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2);
void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c); 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_EmitFaintingCry(u8 bufferId);
void BtlController_EmitIntroSlide(u8 bufferId, u8 terrainId); void BtlController_EmitIntroSlide(u8 bufferId, u8 terrainId);
void BtlController_EmitIntroTrainerBallThrow(u8 bufferId); 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_EmitHidePartyStatusSummary(u8 bufferId);
void BtlController_EmitEndBounceEffect(u8 bufferId); void BtlController_EmitEndBounceEffect(u8 bufferId);
void BtlController_EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible); void BtlController_EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible);
-1
View File
@@ -18,7 +18,6 @@ void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId);
void DecompressTrainerBackPic(u16 backPicId, u8 battlerId); void DecompressTrainerBackPic(u16 backPicId, u8 battlerId);
void BattleGfxSfxDummy3(u8 gender); void BattleGfxSfxDummy3(u8 gender);
void FreeTrainerFrontPicPalette(u16 frontPicId); void FreeTrainerFrontPicPalette(u16 frontPicId);
void sub_805DFFC(void);
bool8 BattleLoadAllHealthBoxesGfx(u8 state); bool8 BattleLoadAllHealthBoxesGfx(u8 state);
void LoadBattleBarGfx(u8 arg0); void LoadBattleBarGfx(u8 arg0);
bool8 BattleInitAllSprites(u8 *state1, u8 *battlerId); bool8 BattleInitAllSprites(u8 *state1, u8 *battlerId);
+6 -8
View File
@@ -7,7 +7,8 @@ struct TrainerMoney
u8 value; u8 value;
}; };
struct UnknownPokemonStruct4 // For displaying a multi battle partner's Pokémon in the party menu
struct MultiPartnerMenuPokemon
{ {
/*0x00*/ u16 species; /*0x00*/ u16 species;
/*0x02*/ u16 heldItem; /*0x02*/ u16 heldItem;
@@ -46,8 +47,6 @@ struct UnknownPokemonStruct4
void CB2_InitBattle(void); void CB2_InitBattle(void);
void BattleMainCB2(void); void BattleMainCB2(void);
void CB2_QuitRecordedBattle(void); void CB2_QuitRecordedBattle(void);
void sub_8038528(struct Sprite* sprite);
void sub_8038A04(void); // unused
void VBlankCB_Battle(void); void VBlankCB_Battle(void);
void SpriteCB_VsLetterDummy(struct Sprite *sprite); void SpriteCB_VsLetterDummy(struct Sprite *sprite);
void SpriteCB_VsLetterInit(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_FaintOpponentMon(struct Sprite *sprite);
void SpriteCb_ShowAsMoveTarget(struct Sprite *sprite); void SpriteCb_ShowAsMoveTarget(struct Sprite *sprite);
void SpriteCb_HideAsMoveTarget(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_BattleSpriteStartSlideLeft(struct Sprite *sprite);
void SpriteCB_FaintSlideAnim(struct Sprite *sprite); void SpriteCB_FaintSlideAnim(struct Sprite *sprite);
void DoBounceEffect(u8 battlerId, u8 b, s8 c, s8 d); void DoBounceEffect(u8 battlerId, u8 b, s8 c, s8 d);
void EndBounceEffect(u8 battlerId, bool8 b); void EndBounceEffect(u8 battlerId, bool8 b);
void SpriteCb_PlayerMonFromBall(struct Sprite *sprite); void SpriteCB_PlayerMonFromBall(struct Sprite *sprite);
void sub_8039E60(struct Sprite *sprite);
void SpriteCB_TrainerThrowObject(struct Sprite *sprite); void SpriteCB_TrainerThrowObject(struct Sprite *sprite);
void sub_8039E9C(struct Sprite *sprite); void sub_8039E9C(struct Sprite *sprite);
void BeginBattleIntroDummy(void); void BeginBattleIntroDummy(void);
@@ -82,9 +80,9 @@ void RunBattleScriptCommands(void);
bool8 TryRunFromBattle(u8 battlerId); bool8 TryRunFromBattle(u8 battlerId);
void SpecialStatusesClear(void); 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_BattleSpriteOpponentSide;
extern const struct OamData gOamData_BattleSpritePlayerSide; extern const struct OamData gOamData_BattleSpritePlayerSide;
extern const u8 gTypeEffectiveness[336]; extern const u8 gTypeEffectiveness[336];
-1
View File
@@ -63,7 +63,6 @@ void CB2_PyramidBagMenuFromStartMenu(void);
void CB2_ReturnToPyramidBagMenu(void); void CB2_ReturnToPyramidBagMenu(void);
void UpdatePyramidBagList(void); void UpdatePyramidBagList(void);
void UpdatePyramidBagCursorPos(void); void UpdatePyramidBagCursorPos(void);
void sub_81C4EFC(void);
void GoToBattlePyramidBagMenu(u8 location, void (*exitCallback)(void)); void GoToBattlePyramidBagMenu(u8 location, void (*exitCallback)(void));
void Task_CloseBattlePyramidBagMessage(u8 taskId); void Task_CloseBattlePyramidBagMessage(u8 taskId);
void TryStoreHeldItemsInPyramidBag(void); void TryStoreHeldItemsInPyramidBag(void);
+4 -2
View File
@@ -2,9 +2,11 @@
#define GUARD_BATTLE_SCRIPT_COMMANDS_H #define GUARD_BATTLE_SCRIPT_COMMANDS_H
#include "constants/pokemon.h" #include "constants/pokemon.h"
#include "constants/battle_script_commands.h"
#define WINDOW_CLEAR 0x1 // Arguments for 'flags' in HandleBattleWindow
#define WINDOW_x80 0x80 #define WINDOW_CLEAR (1 << 0)
#define WINDOW_BG1 (1 << 7)
void AI_CalcDmg(u8 battlerIdAtk, u8 battlerIdDef); void AI_CalcDmg(u8 battlerIdAtk, u8 battlerIdDef);
u8 TypeCalc(u16 move, u8 battlerIdAtk, u8 battlerIdDef); u8 TypeCalc(u16 move, u8 battlerIdAtk, u8 battlerIdDef);
+59 -48
View File
@@ -11,8 +11,7 @@ void GetBg0TilesDst(u16 **tilemap, u16 **tileset);
extern const struct SpritePalette gSpritePalette_Pokeball; extern const struct SpritePalette gSpritePalette_Pokeball;
enum // TRANSITION_MUGSHOT enum {
{
MUGSHOT_SIDNEY, MUGSHOT_SIDNEY,
MUGSHOT_PHOEBE, MUGSHOT_PHOEBE,
MUGSHOT_GLACIA, MUGSHOT_GLACIA,
@@ -21,52 +20,64 @@ enum // TRANSITION_MUGSHOT
MUGSHOTS_COUNT MUGSHOTS_COUNT
}; };
// credits for the names go to Dyskinesia, Tetrable and Farore enum {
// names are naturally subject to change 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 // IDs for GetSpecialBattleTransition
#define B_TRANSITION_SWIRL 1 enum {
#define B_TRANSITION_SHUFFLE 2 B_TRANSITION_GROUP_B_TOWER,
#define B_TRANSITION_BIG_POKEBALL 3 B_TRANSITION_GROUP_B_DOME = 3,
#define B_TRANSITION_POKEBALLS_TRAIL 4 B_TRANSITION_GROUP_B_PALACE,
#define B_TRANSITION_CLOCKWISE_BLACKFADE 5 B_TRANSITION_GROUP_B_ARENA,
#define B_TRANSITION_RIPPLE 6 B_TRANSITION_GROUP_B_FACTORY,
#define B_TRANSITION_WAVE 7 B_TRANSITION_GROUP_B_PIKE,
#define B_TRANSITION_SLICE 8 B_TRANSITION_GROUP_B_PYRAMID = 10,
#define B_TRANSITION_WHITEFADE 9 B_TRANSITION_GROUP_TRAINER_HILL,
#define B_TRANSITION_GRID_SQUARES 10 B_TRANSITION_GROUP_SECRET_BASE,
#define B_TRANSITION_SHARDS 11 B_TRANSITION_GROUP_E_READER,
#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
#endif // GUARD_BATTLE_TRANSITION_H #endif // GUARD_BATTLE_TRANSITION_H
+31 -27
View File
@@ -6,39 +6,43 @@
#define MOVE_LIMITATION_DISABLED (1 << 2) #define MOVE_LIMITATION_DISABLED (1 << 2)
#define MOVE_LIMITATION_TORMENTED (1 << 3) #define MOVE_LIMITATION_TORMENTED (1 << 3)
#define MOVE_LIMITATION_TAUNT (1 << 4) #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_ON_SWITCHIN 0
#define ABILITYEFFECT_ENDTURN 0x1 #define ABILITYEFFECT_ENDTURN 1
#define ABILITYEFFECT_MOVES_BLOCK 0x2 #define ABILITYEFFECT_MOVES_BLOCK 2
#define ABILITYEFFECT_ABSORBING 0x3 #define ABILITYEFFECT_ABSORBING 3
#define ABILITYEFFECT_ON_DAMAGE 0x4 #define ABILITYEFFECT_ON_DAMAGE 4
#define ABILITYEFFECT_IMMUNITY 0x5 #define ABILITYEFFECT_IMMUNITY 5
#define ABILITYEFFECT_FORECAST 0x6 #define ABILITYEFFECT_FORECAST 6
#define ABILITYEFFECT_SYNCHRONIZE 0x7 #define ABILITYEFFECT_SYNCHRONIZE 7
#define ABILITYEFFECT_ATK_SYNCHRONIZE 0x8 #define ABILITYEFFECT_ATK_SYNCHRONIZE 8
#define ABILITYEFFECT_INTIMIDATE1 0x9 #define ABILITYEFFECT_INTIMIDATE1 9
#define ABILITYEFFECT_INTIMIDATE2 0xA #define ABILITYEFFECT_INTIMIDATE2 10
#define ABILITYEFFECT_TRACE 0xB #define ABILITYEFFECT_TRACE 11
#define ABILITYEFFECT_CHECK_OTHER_SIDE 0xC #define ABILITYEFFECT_CHECK_OTHER_SIDE 12
#define ABILITYEFFECT_CHECK_BATTLER_SIDE 0xD #define ABILITYEFFECT_CHECK_BATTLER_SIDE 13
#define ABILITYEFFECT_FIELD_SPORT 0xE #define ABILITYEFFECT_FIELD_SPORT 14
#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER 0xF #define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER 15
#define ABILITYEFFECT_COUNT_OTHER_SIDE 0x10 #define ABILITYEFFECT_COUNT_OTHER_SIDE 16
#define ABILITYEFFECT_COUNT_BATTLER_SIDE 0x11 #define ABILITYEFFECT_COUNT_BATTLER_SIDE 17
#define ABILITYEFFECT_COUNT_ON_FIELD 0x12 #define ABILITYEFFECT_COUNT_ON_FIELD 18
#define ABILITYEFFECT_CHECK_ON_FIELD 0x13 #define ABILITYEFFECT_CHECK_ON_FIELD 19
#define ABILITYEFFECT_MUD_SPORT 0xFD #define ABILITYEFFECT_MUD_SPORT 253
#define ABILITYEFFECT_WATER_SPORT 0xFE #define ABILITYEFFECT_WATER_SPORT 254
#define ABILITYEFFECT_SWITCH_IN_WEATHER 0xFF #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_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_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 ABILITY_ON_FIELD2(abilityId)(AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, abilityId, 0, 0))
#define ITEMEFFECT_ON_SWITCH_IN 0x0 // For the first argument of ItemBattleEffects, to deteremine which block of item effects to try
#define ITEMEFFECT_MOVE_END 0x3 #define ITEMEFFECT_ON_SWITCH_IN 0
#define ITEMEFFECT_KINGSROCK_SHELLBELL 0x4 #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_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))) #define WEATHER_HAS_EFFECT2 ((!ABILITY_ON_FIELD2(ABILITY_CLOUD_NINE) && !ABILITY_ON_FIELD2(ABILITY_AIR_LOCK)))
+52
View File
@@ -306,4 +306,56 @@
#define B_WAIT_TIME_MED 48 #define B_WAIT_TIME_MED 48
#define B_WAIT_TIME_SHORT 32 #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 #endif // GUARD_CONSTANTS_BATTLE_H
+4 -1
View File
@@ -318,7 +318,7 @@
#define SOUND_PAN_TARGET 63 #define SOUND_PAN_TARGET 63
// move background ids // 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_DARK 1
#define BG_GHOST 2 #define BG_GHOST 2
#define BG_PSYCHIC 3 #define BG_PSYCHIC 3
@@ -395,6 +395,9 @@
// Tasks with return values often assign them to gBattleAnimArgs[7]. // Tasks with return values often assign them to gBattleAnimArgs[7].
#define ARG_RET_ID 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. // Trapping Wrap-like moves end turn animation.
#define TRAP_ANIM_BIND 0 #define TRAP_ANIM_BIND 0
#define TRAP_ANIM_WRAP 0 #define TRAP_ANIM_WRAP 0
+46 -33
View File
@@ -1,38 +1,51 @@
#ifndef GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H #ifndef GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H
#define GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H #define GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H
// Battle Scripting and BattleCommunication addresses // The following correspond to the struct members of BattleScripting by adding their offset
#define sPAINSPLIT_HP gBattleScripting #define sPAINSPLIT_HP (gBattleScripting + 0x00) // painSplitHp
#define sBIDE_DMG gBattleScripting + 4 #define sBIDE_DMG (gBattleScripting + 0x04) // bideDmg
#define sMULTIHIT_STRING gBattleScripting + 8 #define sMULTIHIT_STRING (gBattleScripting + 0x08) // multihitString
#define sDMG_MULTIPLIER gBattleScripting + 0xE #define sDMG_MULTIPLIER (gBattleScripting + 0x0E) // dmgMultiplier
#define sTWOTURN_STRINGID gBattleScripting + 0xF #define sTWOTURN_STRINGID (gBattleScripting + 0x0F) // twoTurnsMoveStringId
#define sB_ANIM_ARG1 gBattleScripting + 0x10 #define sB_ANIM_ARG1 (gBattleScripting + 0x10) // animArg1
#define sB_ANIM_ARG2 gBattleScripting + 0x11 #define sB_ANIM_ARG2 (gBattleScripting + 0x11) // animArg2
#define sTRIPLE_KICK_POWER gBattleScripting + 0x12 #define sTRIPLE_KICK_POWER (gBattleScripting + 0x12) // tripleKickPower
#define sMOVEEND_STATE gBattleScripting + 0x14 #define sMOVEEND_STATE (gBattleScripting + 0x14) // moveendState
#define sBATTLER_WITH_ABILITY gBattleScripting + 0x15 #define sBATTLER_WITH_ABILITY (gBattleScripting + 0x15) // battlerWithAbility
#define sMULTIHIT_EFFECT gBattleScripting + 0x16 #define sMULTIHIT_EFFECT (gBattleScripting + 0x16) // multihitMoveEffect
#define sBATTLER gBattleScripting + 0x17 #define sBATTLER (gBattleScripting + 0x17) // battler
#define sB_ANIM_TURN gBattleScripting + 0x18 #define sB_ANIM_TURN (gBattleScripting + 0x18) // animTurn
#define sB_ANIM_TARGETS_HIT gBattleScripting + 0x19 #define sB_ANIM_TARGETS_HIT (gBattleScripting + 0x19) // animTargetsHit
#define sSTATCHANGER gBattleScripting + 0x1A #define sSTATCHANGER (gBattleScripting + 0x1A) // statChanger
#define sSTAT_ANIM_PLAYED gBattleScripting + 0x1B #define sSTAT_ANIM_PLAYED (gBattleScripting + 0x1B) // statAnimPlayed
#define sGIVEEXP_STATE gBattleScripting + 0x1C #define sGIVEEXP_STATE (gBattleScripting + 0x1C) // getexpState
#define sBATTLE_STYLE gBattleScripting + 0x1D #define sBATTLE_STYLE (gBattleScripting + 0x1D) // battleStyle
#define sLVLBOX_STATE gBattleScripting + 0x1E #define sLVLBOX_STATE (gBattleScripting + 0x1E) // drawlvlupboxState
#define sLEARNMOVE_STATE gBattleScripting + 0x1F #define sLEARNMOVE_STATE (gBattleScripting + 0x1F) // learnMoveState
#define sFIELD_20 gBattleScripting + 0x20 #define sPURSUIT_DOUBLES_ATTACKER (gBattleScripting + 0x20) // pursuitDoublesAttacker
#define sRESHOW_MAIN_STATE gBattleScripting + 0x21 #define sRESHOW_MAIN_STATE (gBattleScripting + 0x21) // reshowMainState
#define sRESHOW_HELPER_STATE gBattleScripting + 0x22 #define sRESHOW_HELPER_STATE (gBattleScripting + 0x22) // reshowHelperState
#define sFIELD_23 gBattleScripting + 0x23 #define sLVLUP_HP (gBattleScripting + 0x23) // levelUpHP
#define sWINDOWS_TYPE gBattleScripting + 0x24 #define sWINDOWS_TYPE (gBattleScripting + 0x24) // windowsType
#define sMULTIPLAYER_ID gBattleScripting + 0x25 #define sMULTIPLAYER_ID (gBattleScripting + 0x25) // multiplayerId
#define sSPECIAL_TRAINER_BATTLE_TYPE gBattleScripting + 0x26 #define sSPECIAL_TRAINER_BATTLE_TYPE (gBattleScripting + 0x26) // specialTrainerBattleType
#define cEFFECT_CHOOSER gBattleCommunication + 3 // Array entries for battle communication
#define cMULTISTRING_CHOOSER gBattleCommunication + 5 #define MULTIUSE_STATE 0
#define cMISS_TYPE gBattleCommunication + 6 #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 // Battle Script defines for getting the wanted battler
#define BS_TARGET 0 #define BS_TARGET 0
@@ -40,8 +53,8 @@
#define BS_EFFECT_BATTLER 2 #define BS_EFFECT_BATTLER 2
#define BS_FAINTED 3 #define BS_FAINTED 3
#define BS_ATTACKER_WITH_PARTNER 4 // for Cmd_updatestatusicon #define BS_ATTACKER_WITH_PARTNER 4 // for Cmd_updatestatusicon
#define BS_UNK_5 5 #define BS_FAINTED_LINK_MULTIPLE_1 5
#define BS_UNK_6 6 #define BS_FAINTED_LINK_MULTIPLE_2 6
#define BS_BATTLER_0 7 #define BS_BATTLER_0 7
#define BS_ATTACKER_SIDE 8 // for Cmd_jumpifability #define BS_ATTACKER_SIDE 8 // for Cmd_jumpifability
#define BS_NOT_ATTACKER_SIDE 9 // for Cmd_jumpifability #define BS_NOT_ATTACKER_SIDE 9 // for Cmd_jumpifability
+1 -1
View File
@@ -294,7 +294,7 @@ struct ContestResources
u8 * contestBgTilemaps[CONTESTANT_COUNT]; u8 * contestBgTilemaps[CONTESTANT_COUNT];
void * boxBlinkTiles1; void * boxBlinkTiles1;
void * boxBlinkTiles2; void * boxBlinkTiles2;
void * field_3c; void * animBgTileBuffer;
}; };
#define eContest (*gContestResources->contest) #define eContest (*gContestResources->contest)
+3 -3
View File
@@ -66,7 +66,7 @@ enum {
REMATCH_TRENT, REMATCH_TRENT,
REMATCH_SAWYER, REMATCH_SAWYER,
REMATCH_KIRA_AND_DAN, 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_ROXANNE,
REMATCH_BRAWLY, REMATCH_BRAWLY,
REMATCH_WATTSON, REMATCH_WATTSON,
@@ -75,7 +75,7 @@ enum {
REMATCH_WINONA, REMATCH_WINONA,
REMATCH_TATE_AND_LIZA, REMATCH_TATE_AND_LIZA,
REMATCH_JUAN, 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_PHOEBE,
REMATCH_GLACIA, REMATCH_GLACIA,
REMATCH_DRAKE, REMATCH_DRAKE,
@@ -83,7 +83,7 @@ enum {
REMATCH_TABLE_ENTRIES // The total number of rematch entries. Must be last in 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 #define REMATCH_ELITE_FOUR_ENTRIES REMATCH_SIDNEY
void UpdateGymLeaderRematch(void); void UpdateGymLeaderRematch(void);
+11 -2
View File
@@ -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. /* 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 union PokemonSubstruct
{ {
struct PokemonSubstruct0 type0; struct PokemonSubstruct0 type0;
struct PokemonSubstruct1 type1; struct PokemonSubstruct1 type1;
struct PokemonSubstruct2 type2; struct PokemonSubstruct2 type2;
struct PokemonSubstruct3 type3; struct PokemonSubstruct3 type3;
u16 raw[6]; u16 raw[NUM_SUBSTRUCT_BYTES / 2]; // /2 because it's u16, not u8
}; };
struct BoxPokemon struct BoxPokemon
@@ -102,7 +111,7 @@ struct BoxPokemon
union 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]; union PokemonSubstruct substructs[4];
} secure; } secure;
}; };
+6 -6
View File
@@ -8,8 +8,8 @@ extern u8 gRecordedBattleMultiplayerId;
#define B_RECORD_MODE_RECORDING 1 #define B_RECORD_MODE_RECORDING 1
#define B_RECORD_MODE_PLAYBACK 2 #define B_RECORD_MODE_PLAYBACK 2
void RecordedBattle_Init(u8 arg0); void RecordedBattle_Init(u8 mode);
void sub_8184E58(void); void RecordedBattle_SetTrainerInfo(void);
void RecordedBattle_SetBattlerAction(u8 battlerId, u8 action); void RecordedBattle_SetBattlerAction(u8 battlerId, u8 action);
void RecordedBattle_ClearBattlerAction(u8 battlerId, u8 bytesToClear); void RecordedBattle_ClearBattlerAction(u8 battlerId, u8 bytesToClear);
u8 RecordedBattle_GetBattlerAction(u8 battlerId); u8 RecordedBattle_GetBattlerAction(u8 battlerId);
@@ -23,15 +23,15 @@ u8 GetRecordedBattleFronterBrainSymbol(void);
void RecordedBattle_SaveParties(void); void RecordedBattle_SaveParties(void);
u8 GetActiveBattlerLinkPlayerGender(void); u8 GetActiveBattlerLinkPlayerGender(void);
void RecordedBattle_ClearFrontierPassFlag(void); void RecordedBattle_ClearFrontierPassFlag(void);
void RecordedBattle_SetFrontierPassFlagFromHword(u16 arg0); void RecordedBattle_SetFrontierPassFlagFromHword(u16 flags);
u8 RecordedBattle_GetFrontierPassFlag(void); u8 RecordedBattle_GetFrontierPassFlag(void);
u8 GetBattleSceneInRecordedBattle(void); u8 GetBattleSceneInRecordedBattle(void);
u8 GetTextSpeedInRecordedBattle(void); u8 GetTextSpeedInRecordedBattle(void);
void RecordedBattle_CopyBattlerMoves(void); void RecordedBattle_CopyBattlerMoves(void);
void sub_818603C(u8 arg0); void RecordedBattle_CheckMovesetChanges(u8 mode);
u32 GetAiScriptsInRecordedBattle(void); u32 GetAiScriptsInRecordedBattle(void);
void sub_8186444(void); void RecordedBattle_SetPlaybackFinished(void);
bool8 sub_8186450(void); bool8 RecordedBattle_CanStopPlayback(void);
void GetRecordedBattleRecordMixFriendName(u8 *dst); void GetRecordedBattleRecordMixFriendName(u8 *dst);
u8 GetRecordedBattleRecordMixFriendClass(void); u8 GetRecordedBattleRecordMixFriendClass(void);
u8 GetRecordedBattleApprenticeId(void); u8 GetRecordedBattleApprenticeId(void);
+1 -1
View File
@@ -334,7 +334,7 @@ void BattleAI_SetupAIData(u8 defaultScoreMoves)
defaultScoreMoves >>= 1; defaultScoreMoves >>= 1;
} }
moveLimitations = CheckMoveLimitations(gActiveBattler, 0, 0xFF); moveLimitations = CheckMoveLimitations(gActiveBattler, 0, MOVE_LIMITATIONS_ALL);
// Ignore moves that aren't possible to use. // Ignore moves that aren't possible to use.
for (i = 0; i < MAX_MON_MOVES; i++) for (i = 0; i < MAX_MON_MOVES; i++)
+9 -9
View File
@@ -22,7 +22,7 @@ static bool8 ShouldSwitchIfPerishSong(void)
&& gDisableStructs[gActiveBattler].perishSongTimer == 0) && gDisableStructs[gActiveBattler].perishSongTimer == 0)
{ {
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE; *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0); BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0);
return TRUE; return TRUE;
} }
else else
@@ -106,7 +106,7 @@ static bool8 ShouldSwitchIfWonderGuard(void)
{ {
// We found a mon. // We found a mon.
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = i; *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = i;
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0); BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0);
return TRUE; return TRUE;
} }
} }
@@ -206,7 +206,7 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
{ {
// we found a mon. // we found a mon.
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = i; *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = i;
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0); BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0);
return TRUE; return TRUE;
} }
} }
@@ -226,13 +226,13 @@ static bool8 ShouldSwitchIfNaturalCure(void)
if ((gLastLandedMoves[gActiveBattler] == 0 || gLastLandedMoves[gActiveBattler] == 0xFFFF) && Random() & 1) if ((gLastLandedMoves[gActiveBattler] == 0 || gLastLandedMoves[gActiveBattler] == 0xFFFF) && Random() & 1)
{ {
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE; *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0); BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0);
return TRUE; return TRUE;
} }
else if (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0 && Random() & 1) else if (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0 && Random() & 1)
{ {
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE; *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0); BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0);
return TRUE; return TRUE;
} }
@@ -244,7 +244,7 @@ static bool8 ShouldSwitchIfNaturalCure(void)
if (Random() & 1) if (Random() & 1)
{ {
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE; *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0); BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0);
return TRUE; return TRUE;
} }
@@ -412,7 +412,7 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE && Random() % moduloPercent == 0) if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE && Random() % moduloPercent == 0)
{ {
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = i; *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = i;
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0); BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0);
return TRUE; 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) static void ModulateByTypeEffectiveness(u8 atkType, u8 defType1, u8 defType2, u8 *var)
@@ -923,7 +923,7 @@ static bool8 ShouldUseItem(void)
if (shouldUse) 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; *(gBattleStruct->chosenItem + (gActiveBattler / 2) * 2) = item;
gBattleResources->battleHistory->trainerItems[i] = 0; gBattleResources->battleHistory->trainerItems[i] = 0;
return shouldUse; return shouldUse;
+310 -1906
View File
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -3250,7 +3250,7 @@ void AnimTask_HeartsBackground(u8 taskId)
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
GetBattleAnimBg1Data(&animBg); GetBattleAnimBg1Data(&animBg);
AnimLoadCompressedBgGfx(animBg.bgId, &gBattleAnimBgImage_Attract, animBg.tilesOffset); AnimLoadCompressedBgGfx(animBg.bgId, &gBattleAnimBgImage_Attract, animBg.tilesOffset);
AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_Attract, 0); AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_Attract, FALSE);
LoadCompressedPalette(&gBattleAnimBgPalette_Attract, animBg.paletteId * 16, 32); LoadCompressedPalette(&gBattleAnimBgPalette_Attract, animBg.paletteId * 16, 32);
gTasks[taskId].func = AnimTask_HeartsBackground_Step; gTasks[taskId].func = AnimTask_HeartsBackground_Step;
} }
@@ -3328,11 +3328,11 @@ void AnimTask_ScaryFace(u8 taskId)
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
GetBattleAnimBg1Data(&animBg); GetBattleAnimBg1Data(&animBg);
if (IsContest()) if (IsContest())
AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_ScaryFaceContest, 0); AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_ScaryFaceContest, FALSE);
else if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT) else if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT)
AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_ScaryFacePlayer, 0); AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_ScaryFacePlayer, FALSE);
else else
AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_ScaryFaceOpponent, 0); AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_ScaryFaceOpponent, FALSE);
AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_ScaryFace, animBg.tilesOffset); AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_ScaryFace, animBg.tilesOffset);
LoadCompressedPalette(gBattleAnimBgPalette_ScaryFace, animBg.paletteId * 16, 32); LoadCompressedPalette(gBattleAnimBgPalette_ScaryFace, animBg.paletteId * 16, 32);
+2 -2
View File
@@ -2388,7 +2388,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId)
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1); SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
GetBattleAnimBg1Data(&animBg); GetBattleAnimBg1Data(&animBg);
AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimMaskTilemap_LightBeam, 0); AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimMaskTilemap_LightBeam, FALSE);
if (IsContest()) if (IsContest())
{ {
gBattle_BG1_X = -56; gBattle_BG1_X = -56;
@@ -2569,7 +2569,7 @@ void AnimTask_DoomDesireLightBeam(u8 taskId)
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1); SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
GetBattleAnimBg1Data(&animBg); GetBattleAnimBg1Data(&animBg);
AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimMaskTilemap_LightBeam, 0); AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimMaskTilemap_LightBeam, FALSE);
if (IsContest()) if (IsContest())
{ {
gBattle_BG1_X = -56; gBattle_BG1_X = -56;
+2 -2
View File
@@ -1000,7 +1000,7 @@ void AnimTask_HazeScrollingFog(u8 taskId)
GetBattleAnimBg1Data(&animBg); GetBattleAnimBg1Data(&animBg);
LoadBgTiles(animBg.bgId, gWeatherFogHorizontalTiles, 0x800, animBg.tilesOffset); LoadBgTiles(animBg.bgId, gWeatherFogHorizontalTiles, 0x800, animBg.tilesOffset);
AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimFogTilemap, 0); AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimFogTilemap, FALSE);
LoadPalette(&gFogPalette, animBg.paletteId * 16, 32); LoadPalette(&gFogPalette, animBg.paletteId * 16, 32);
gTasks[taskId].func = AnimTask_HazeScrollingFog_Step; gTasks[taskId].func = AnimTask_HazeScrollingFog_Step;
@@ -1105,7 +1105,7 @@ void AnimTask_LoadMistTiles(u8 taskId)
GetBattleAnimBg1Data(&animBg); GetBattleAnimBg1Data(&animBg);
LoadBgTiles(animBg.bgId, gWeatherFogHorizontalTiles, 0x800, animBg.tilesOffset); LoadBgTiles(animBg.bgId, gWeatherFogHorizontalTiles, 0x800, animBg.tilesOffset);
AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimFogTilemap, 0); AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimFogTilemap, FALSE);
LoadPalette(&gFogPalette, animBg.paletteId * 16, 32); LoadPalette(&gFogPalette, animBg.paletteId * 16, 32);
gTasks[taskId].data[15] = -1; gTasks[taskId].data[15] = -1;
+38 -37
View File
@@ -37,15 +37,15 @@ static void sub_80A8D78(struct Task *task, u8 taskId);
EWRAM_DATA static union AffineAnimCmd *gAnimTaskAffineAnim = NULL; EWRAM_DATA static union AffineAnimCmd *gAnimTaskAffineAnim = NULL;
// Const rom data // Const rom data
static const struct UCoords8 sBattlerCoords[][4] = static const struct UCoords8 sBattlerCoords[][MAX_BATTLERS_COUNT] =
{ {
{ { // Single battle
{ 72, 80 }, { 72, 80 },
{ 176, 40 }, { 176, 40 },
{ 48, 40 }, { 48, 40 },
{ 112, 80 }, { 112, 80 },
}, },
{ { // Double battle
{ 32, 80 }, { 32, 80 },
{ 200, 40 }, { 200, 40 },
{ 90, 88 }, { 90, 88 },
@@ -54,29 +54,29 @@ static const struct UCoords8 sBattlerCoords[][4] =
}; };
// One entry for each of the four Castform forms. // 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 [CASTFORM_NORMAL] = { .size = 0x44, .y_offset = 17 },
{ .size = 0x66, .y_offset = 9 }, // SUN [CASTFORM_FIRE] = { .size = 0x66, .y_offset = 9 },
{ .size = 0x46, .y_offset = 9 }, // RAIN [CASTFORM_WATER] = { .size = 0x46, .y_offset = 9 },
{ .size = 0x86, .y_offset = 8 }, // HAIL [CASTFORM_ICE] = { .size = 0x86, .y_offset = 8 },
}; };
static const u8 sCastformElevations[] = static const u8 sCastformElevations[NUM_CASTFORM_FORMS] =
{ {
13, // NORMAL [CASTFORM_NORMAL] = 13,
14, // SUN [CASTFORM_FIRE] = 14,
13, // RAIN [CASTFORM_WATER] = 13,
13, // HAIL [CASTFORM_ICE] = 13,
}; };
// Y position of the backsprite for each of the four Castform forms. // 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 [CASTFORM_NORMAL] = 0,
0, // SUN [CASTFORM_FIRE] = 0,
0, // RAIN [CASTFORM_WATER] = 0,
0, // HAIL [CASTFORM_ICE] = 0,
}; };
// Placeholders for pokemon sprites to be created for a move animation effect (e.g. Role Play / Snatch) // 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()) if (IsContest())
{ {
out->bgTiles = gUnknown_0202305C; out->bgTiles = gBattleAnimBgTileBuffer;
out->bgTilemap = (u16 *)gUnknown_02023060; out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer;
out->paletteId = 14; out->paletteId = 14;
out->bgId = 1; out->bgId = 1;
out->tilesOffset = 0; out->tilesOffset = 0;
@@ -862,8 +862,8 @@ void GetBattleAnimBg1Data(struct BattleAnimBgData *out)
} }
else else
{ {
out->bgTiles = gUnknown_0202305C; out->bgTiles = gBattleAnimBgTileBuffer;
out->bgTilemap = (u16 *)gUnknown_02023060; out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer;
out->paletteId = 8; out->paletteId = 8;
out->bgId = 1; out->bgId = 1;
out->tilesOffset = 0x200; out->tilesOffset = 0x200;
@@ -875,8 +875,8 @@ void GetBattleAnimBgData(struct BattleAnimBgData *out, u32 bgId)
{ {
if (IsContest()) if (IsContest())
{ {
out->bgTiles = gUnknown_0202305C; out->bgTiles = gBattleAnimBgTileBuffer;
out->bgTilemap = (u16 *)gUnknown_02023060; out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer;
out->paletteId = 14; out->paletteId = 14;
out->bgId = 1; out->bgId = 1;
out->tilesOffset = 0; out->tilesOffset = 0;
@@ -888,8 +888,8 @@ void GetBattleAnimBgData(struct BattleAnimBgData *out, u32 bgId)
} }
else else
{ {
out->bgTiles = gUnknown_0202305C; out->bgTiles = gBattleAnimBgTileBuffer;
out->bgTilemap = (u16 *)gUnknown_02023060; out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer;
out->paletteId = 9; out->paletteId = 9;
out->bgId = 2; out->bgId = 2;
out->tilesOffset = 0x300; out->tilesOffset = 0x300;
@@ -899,8 +899,8 @@ void GetBattleAnimBgData(struct BattleAnimBgData *out, u32 bgId)
void sub_80A6BFC(struct BattleAnimBgData *out, u8 unused) void sub_80A6BFC(struct BattleAnimBgData *out, u8 unused)
{ {
out->bgTiles = gUnknown_0202305C; out->bgTiles = gBattleAnimBgTileBuffer;
out->bgTilemap = (u16 *)gUnknown_02023060; out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer;
if (IsContest()) if (IsContest())
{ {
out->paletteId = 14; out->paletteId = 14;
@@ -937,9 +937,9 @@ void ClearBattleAnimBg(u32 bgId)
void AnimLoadCompressedBgGfx(u32 bgId, const u32 *src, u32 tilesOffset) void AnimLoadCompressedBgGfx(u32 bgId, const u32 *src, u32 tilesOffset)
{ {
CpuFill32(0, gUnknown_0202305C, 0x2000); CpuFill32(0, gBattleAnimBgTileBuffer, 0x2000);
LZDecompressWram(src, gUnknown_0202305C); LZDecompressWram(src, gBattleAnimBgTileBuffer);
LoadBgTiles(bgId, gUnknown_0202305C, 0x2000, tilesOffset); LoadBgTiles(bgId, gBattleAnimBgTileBuffer, 0x2000, tilesOffset);
} }
static void InitAnimBgTilemapBuffer(u32 bgId, const void *src) static void InitAnimBgTilemapBuffer(u32 bgId, const void *src)
@@ -954,12 +954,12 @@ void AnimLoadCompressedBgTilemap(u32 bgId, const void *src)
CopyBgTilemapBufferToVram(bgId); 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) if (IsContest() == TRUE)
sub_80A4720(unk->paletteId, unk->bgTilemap, 0, arg2); RelocateBattleBgPal(data->paletteId, data->bgTilemap, 0, largeScreen);
CopyBgTilemapBufferToVram(unk->bgId); CopyBgTilemapBufferToVram(data->bgId);
} }
u8 GetBattleBgPaletteNum(void) u8 GetBattleBgPaletteNum(void)
@@ -1947,7 +1947,8 @@ void AnimTask_GetFrustrationPowerLevel(u8 taskId)
DestroyAnimVisualTask(taskId); DestroyAnimVisualTask(taskId);
} }
void sub_80A8174(u8 priority) // Unused
static void SetPriorityForVisibleBattlers(u8 priority)
{ {
if (IsBattlerSpriteVisible(gBattleAnimTarget)) if (IsBattlerSpriteVisible(gBattleAnimTarget))
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].oam.priority = priority; gSprites[gBattlerSpriteIds[gBattleAnimTarget]].oam.priority = priority;
@@ -1959,7 +1960,7 @@ void sub_80A8174(u8 priority)
gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority = priority; gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority = priority;
} }
void sub_80A8278(void) void InitPrioritiesForVisibleBattlers(void)
{ {
int i; int i;
+1 -1
View File
@@ -409,7 +409,7 @@ void AnimTask_LoadSandstormBackground(u8 taskId)
GetBattleAnimBg1Data(&animBg); GetBattleAnimBg1Data(&animBg);
AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_Sandstorm, animBg.tilesOffset); AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_Sandstorm, animBg.tilesOffset);
AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimBgTilemap_Sandstorm, 0); AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimBgTilemap_Sandstorm, FALSE);
LoadCompressedPalette(gBattleAnimSpritePal_FlyingDirt, animBg.paletteId * 16, 32); LoadCompressedPalette(gBattleAnimSpritePal_FlyingDirt, animBg.paletteId * 16, 32);
if (gBattleAnimArgs[0] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) if (gBattleAnimArgs[0] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+4 -4
View File
@@ -331,7 +331,7 @@ void AnimTask_DrawFallingWhiteLinesOnAttacker(u8 taskId)
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
newSpriteId = CreateInvisibleSpriteCopy(gBattleAnimAttacker, spriteId, species); newSpriteId = CreateInvisibleSpriteCopy(gBattleAnimAttacker, spriteId, species);
GetBattleAnimBg1Data(&animBgData); GetBattleAnimBg1Data(&animBgData);
AnimLoadCompressedBgTilemapHandleContest(&animBgData, gBattleAnimMaskTilemap_Curse, 0); AnimLoadCompressedBgTilemapHandleContest(&animBgData, gBattleAnimMaskTilemap_Curse, FALSE);
AnimLoadCompressedBgGfx(animBgData.bgId, gBattleAnimMaskImage_Curse, animBgData.tilesOffset); AnimLoadCompressedBgGfx(animBgData.bgId, gBattleAnimMaskImage_Curse, animBgData.tilesOffset);
LoadPalette(sCurseLinesPalette, animBgData.paletteId * 16 + 1, 2); LoadPalette(sCurseLinesPalette, animBgData.paletteId * 16 + 1, 2);
@@ -470,9 +470,9 @@ static void StatsChangeAnimation_Step2(u8 taskId)
GetBattleAnimBg1Data(&animBgData); GetBattleAnimBg1Data(&animBgData);
if (sAnimStatsChangeData->data[0] == 0) if (sAnimStatsChangeData->data[0] == 0)
AnimLoadCompressedBgTilemapHandleContest(&animBgData, gBattleStatMask1_Tilemap, 0); AnimLoadCompressedBgTilemapHandleContest(&animBgData, gBattleStatMask1_Tilemap, FALSE);
else else
AnimLoadCompressedBgTilemapHandleContest(&animBgData, gBattleStatMask2_Tilemap, 0); AnimLoadCompressedBgTilemapHandleContest(&animBgData, gBattleStatMask2_Tilemap, FALSE);
AnimLoadCompressedBgGfx(animBgData.bgId, gBattleStatMask_Gfx, animBgData.tilesOffset); AnimLoadCompressedBgGfx(animBgData.bgId, gBattleStatMask_Gfx, animBgData.tilesOffset);
switch (sAnimStatsChangeData->data[1]) switch (sAnimStatsChangeData->data[1])
@@ -821,7 +821,7 @@ void StartMonScrollingBgMask(u8 taskId, int unused, u16 scrollSpeed, u8 battler,
spriteId2 = CreateInvisibleSpriteCopy(battler2, gBattlerSpriteIds[battler2], species); spriteId2 = CreateInvisibleSpriteCopy(battler2, gBattlerSpriteIds[battler2], species);
GetBattleAnimBg1Data(&animBgData); GetBattleAnimBg1Data(&animBgData);
AnimLoadCompressedBgTilemapHandleContest(&animBgData, tilemap, 0); AnimLoadCompressedBgTilemapHandleContest(&animBgData, tilemap, FALSE);
AnimLoadCompressedBgGfx(animBgData.bgId, gfx, animBgData.tilesOffset); AnimLoadCompressedBgGfx(animBgData.bgId, gfx, animBgData.tilesOffset);
LoadCompressedPalette(palette, animBgData.paletteId * 16, 32); LoadCompressedPalette(palette, animBgData.paletteId * 16, 32);
+3 -4
View File
@@ -54,9 +54,8 @@ static void AnimTask_WaterSport_Step(u8);
static void CreateWaterSportDroplet(struct Task*); static void CreateWaterSportDroplet(struct Task*);
static void CreateWaterPulseRingBubbles(struct Sprite*, int, int); static void CreateWaterPulseRingBubbles(struct Sprite*, int, int);
// Both unused static const u8 sUnusedWater_Gfx[] = INCBIN_U8("graphics/battle_anims/unused_water_gfx.4bpp");
const u8 gUnknown_8593C80[] = INCBIN_U8("graphics/unknown/unknown_593C80.4bpp"); static const u8 sUnusedWater[] = INCBIN_U8("graphics/battle_anims/unused_water.bin");
const u8 gUnknown_8593FFC[] = INCBIN_U8("graphics/unknown/unknown_593FFC.bin");
static const union AnimCmd sAnim_RainDrop[] = static const union AnimCmd sAnim_RainDrop[] =
{ {
@@ -822,7 +821,7 @@ void AnimTask_CreateSurfWave(u8 taskId)
} }
else else
{ {
AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimBgTilemap_SurfContest, 1); AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimBgTilemap_SurfContest, TRUE);
} }
AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_Surf, animBg.tilesOffset); AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_Surf, animBg.tilesOffset);
if (gBattleAnimArgs[0] == 0) if (gBattleAnimArgs[0] == 0)
+10 -13
View File
@@ -28,7 +28,6 @@
#include "constants/moves.h" #include "constants/moves.h"
#include "constants/rgb.h" #include "constants/rgb.h"
// This file's functions.
static void InitArenaChallenge(void); static void InitArenaChallenge(void);
static void GetArenaData(void); static void GetArenaData(void);
static void SetArenaData(void); static void SetArenaData(void);
@@ -39,7 +38,6 @@ static void BufferArenaOpponentName(void);
static void SpriteCb_JudgmentIcon(struct Sprite *sprite); static void SpriteCb_JudgmentIcon(struct Sprite *sprite);
static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler); static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler);
// Const rom data.
static const s8 sMindRatings[] = static const s8 sMindRatings[] =
{ {
[MOVE_NONE] = 0, [MOVE_NONE] = 0,
@@ -501,7 +499,6 @@ static const u16 sLongStreakPrizeItems[] =
ITEM_CHOICE_BAND, ITEM_CHOICE_BAND,
}; };
// code
void CallBattleArenaFunction(void) void CallBattleArenaFunction(void)
{ {
sArenaFunctions[gSpecialVar_0x8004](); sArenaFunctions[gSpecialVar_0x8004]();
@@ -537,15 +534,15 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
gBattleTextBuff2[0] = CHAR_0; gBattleTextBuff2[0] = CHAR_0;
gBattleTextBuff2[1] = EOS; gBattleTextBuff2[1] = EOS;
BattleStringExpandPlaceholdersToDisplayedString(gText_PlayerMon1Name); BattleStringExpandPlaceholdersToDisplayedString(gText_PlayerMon1Name);
BattlePutTextOnWindow(gDisplayedStringBattle, 15); BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_PLAYER_NAME);
BattlePutTextOnWindow(gText_Vs, 16); BattlePutTextOnWindow(gText_Vs, ARENA_WIN_VS);
BattleStringExpandPlaceholdersToDisplayedString(gText_OpponentMon1Name); BattleStringExpandPlaceholdersToDisplayedString(gText_OpponentMon1Name);
BattlePutTextOnWindow(gDisplayedStringBattle, 17); BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_OPPONENT_NAME);
BattlePutTextOnWindow(gText_Mind, 18); BattlePutTextOnWindow(gText_Mind, ARENA_WIN_MIND);
BattlePutTextOnWindow(gText_Skill, 19); BattlePutTextOnWindow(gText_Skill, ARENA_WIN_SKILL);
BattlePutTextOnWindow(gText_Body, 20); BattlePutTextOnWindow(gText_Body, ARENA_WIN_BODY);
BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement); BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
BattlePutTextOnWindow(gDisplayedStringBattle, 21); BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE);
(*state)++; (*state)++;
} }
break; break;
@@ -567,7 +564,7 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
ShowJudgmentSprite(80, 40, ARENA_CATEGORY_MIND, B_POSITION_PLAYER_LEFT); ShowJudgmentSprite(80, 40, ARENA_CATEGORY_MIND, B_POSITION_PLAYER_LEFT);
ShowJudgmentSprite(160, 40, ARENA_CATEGORY_MIND, B_POSITION_OPPONENT_LEFT); ShowJudgmentSprite(160, 40, ARENA_CATEGORY_MIND, B_POSITION_OPPONENT_LEFT);
BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement); BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
BattlePutTextOnWindow(gDisplayedStringBattle, 21); BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE);
(*state)++; (*state)++;
ret = 1; ret = 1;
break; break;
@@ -576,7 +573,7 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
ShowJudgmentSprite(80, 56, ARENA_CATEGORY_SKILL, B_POSITION_PLAYER_LEFT); ShowJudgmentSprite(80, 56, ARENA_CATEGORY_SKILL, B_POSITION_PLAYER_LEFT);
ShowJudgmentSprite(160, 56, ARENA_CATEGORY_SKILL, B_POSITION_OPPONENT_LEFT); ShowJudgmentSprite(160, 56, ARENA_CATEGORY_SKILL, B_POSITION_OPPONENT_LEFT);
BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement); BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
BattlePutTextOnWindow(gDisplayedStringBattle, 21); BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE);
(*state)++; (*state)++;
ret = 1; ret = 1;
break; break;
@@ -585,7 +582,7 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
ShowJudgmentSprite(80, 72, ARENA_CATEGORY_BODY, B_POSITION_PLAYER_LEFT); ShowJudgmentSprite(80, 72, ARENA_CATEGORY_BODY, B_POSITION_PLAYER_LEFT);
ShowJudgmentSprite(160, 72, ARENA_CATEGORY_BODY, B_POSITION_OPPONENT_LEFT); ShowJudgmentSprite(160, 72, ARENA_CATEGORY_BODY, B_POSITION_OPPONENT_LEFT);
BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement); BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
BattlePutTextOnWindow(gDisplayedStringBattle, 21); BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE);
(*state)++; (*state)++;
ret = 1; ret = 1;
break; break;
+89 -90
View File
@@ -161,7 +161,7 @@ const struct BgTemplate gBattleBgTemplates[] =
static const struct WindowTemplate gStandardBattleWindowTemplates[] = static const struct WindowTemplate gStandardBattleWindowTemplates[] =
{ {
{ // 0 Standard battle message [B_WIN_MSG] = {
.bg = 0, .bg = 0,
.tilemapLeft = 2, .tilemapLeft = 2,
.tilemapTop = 15, .tilemapTop = 15,
@@ -170,7 +170,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 0, .paletteNum = 0,
.baseBlock = 0x0090, .baseBlock = 0x0090,
}, },
{ // 1 "What will (pokemon) do?" [B_WIN_ACTION_PROMPT] = {
.bg = 0, .bg = 0,
.tilemapLeft = 1, .tilemapLeft = 1,
.tilemapTop = 35, .tilemapTop = 35,
@@ -179,7 +179,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 0, .paletteNum = 0,
.baseBlock = 0x01c0, .baseBlock = 0x01c0,
}, },
{ // 2 "Fight/Pokemon/Bag/Run" [B_WIN_ACTION_MENU] = {
.bg = 0, .bg = 0,
.tilemapLeft = 17, .tilemapLeft = 17,
.tilemapTop = 35, .tilemapTop = 35,
@@ -188,7 +188,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0190, .baseBlock = 0x0190,
}, },
{ // 3 Top left move [B_WIN_MOVE_NAME_1] = {
.bg = 0, .bg = 0,
.tilemapLeft = 2, .tilemapLeft = 2,
.tilemapTop = 55, .tilemapTop = 55,
@@ -197,7 +197,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0300, .baseBlock = 0x0300,
}, },
{ // 4 Top right move [B_WIN_MOVE_NAME_2] = {
.bg = 0, .bg = 0,
.tilemapLeft = 11, .tilemapLeft = 11,
.tilemapTop = 55, .tilemapTop = 55,
@@ -206,7 +206,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0310, .baseBlock = 0x0310,
}, },
{ // 5 Bottom left move [B_WIN_MOVE_NAME_3] = {
.bg = 0, .bg = 0,
.tilemapLeft = 2, .tilemapLeft = 2,
.tilemapTop = 57, .tilemapTop = 57,
@@ -215,7 +215,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0320, .baseBlock = 0x0320,
}, },
{ // 6 Bottom right move [B_WIN_MOVE_NAME_4] = {
.bg = 0, .bg = 0,
.tilemapLeft = 11, .tilemapLeft = 11,
.tilemapTop = 57, .tilemapTop = 57,
@@ -224,7 +224,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0330, .baseBlock = 0x0330,
}, },
{ [B_WIN_PP] = {
.bg = 0, .bg = 0,
.tilemapLeft = 21, .tilemapLeft = 21,
.tilemapTop = 55, .tilemapTop = 55,
@@ -233,7 +233,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0290, .baseBlock = 0x0290,
}, },
{ [B_WIN_DUMMY] = {
.bg = 0, .bg = 0,
.tilemapLeft = 21, .tilemapLeft = 21,
.tilemapTop = 57, .tilemapTop = 57,
@@ -242,7 +242,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0298, .baseBlock = 0x0298,
}, },
{ [B_WIN_PP_REMAINING] = {
.bg = 0, .bg = 0,
.tilemapLeft = 25, .tilemapLeft = 25,
.tilemapTop = 55, .tilemapTop = 55,
@@ -251,7 +251,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0298, .baseBlock = 0x0298,
}, },
{ [B_WIN_MOVE_TYPE] = {
.bg = 0, .bg = 0,
.tilemapLeft = 21, .tilemapLeft = 21,
.tilemapTop = 57, .tilemapTop = 57,
@@ -260,7 +260,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x02a0, .baseBlock = 0x02a0,
}, },
{ [B_WIN_SWITCH_PROMPT] = {
.bg = 0, .bg = 0,
.tilemapLeft = 21, .tilemapLeft = 21,
.tilemapTop = 55, .tilemapTop = 55,
@@ -269,7 +269,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x02b0, .baseBlock = 0x02b0,
}, },
{ [B_WIN_YESNO] = {
.bg = 0, .bg = 0,
.tilemapLeft = 26, .tilemapLeft = 26,
.tilemapTop = 9, .tilemapTop = 9,
@@ -278,7 +278,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0100, .baseBlock = 0x0100,
}, },
{ [B_WIN_LEVEL_UP_BOX] = {
.bg = 1, .bg = 1,
.tilemapLeft = 19, .tilemapLeft = 19,
.tilemapTop = 8, .tilemapTop = 8,
@@ -287,7 +287,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0100, .baseBlock = 0x0100,
}, },
{ [B_WIN_LEVEL_UP_BANNER] = {
.bg = 2, .bg = 2,
.tilemapLeft = 18, .tilemapLeft = 18,
.tilemapTop = 0, .tilemapTop = 0,
@@ -296,7 +296,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 6, .paletteNum = 6,
.baseBlock = 0x016e, .baseBlock = 0x016e,
}, },
{ [B_WIN_VS_PLAYER] = {
.bg = 1, .bg = 1,
.tilemapLeft = 2, .tilemapLeft = 2,
.tilemapTop = 3, .tilemapTop = 3,
@@ -305,7 +305,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0020, .baseBlock = 0x0020,
}, },
{ [B_WIN_VS_OPPONENT] = {
.bg = 2, .bg = 2,
.tilemapLeft = 2, .tilemapLeft = 2,
.tilemapTop = 3, .tilemapTop = 3,
@@ -314,7 +314,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0040, .baseBlock = 0x0040,
}, },
{ [B_WIN_VS_MULTI_PLAYER_1] = {
.bg = 1, .bg = 1,
.tilemapLeft = 2, .tilemapLeft = 2,
.tilemapTop = 2, .tilemapTop = 2,
@@ -323,7 +323,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0020, .baseBlock = 0x0020,
}, },
{ [B_WIN_VS_MULTI_PLAYER_2] = {
.bg = 2, .bg = 2,
.tilemapLeft = 2, .tilemapLeft = 2,
.tilemapTop = 2, .tilemapTop = 2,
@@ -332,7 +332,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0040, .baseBlock = 0x0040,
}, },
{ [B_WIN_VS_MULTI_PLAYER_3] = {
.bg = 1, .bg = 1,
.tilemapLeft = 2, .tilemapLeft = 2,
.tilemapTop = 6, .tilemapTop = 6,
@@ -341,7 +341,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0060, .baseBlock = 0x0060,
}, },
{ [B_WIN_VS_MULTI_PLAYER_4] = {
.bg = 2, .bg = 2,
.tilemapLeft = 2, .tilemapLeft = 2,
.tilemapTop = 6, .tilemapTop = 6,
@@ -350,7 +350,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0080, .baseBlock = 0x0080,
}, },
{ [B_WIN_VS_OUTCOME_DRAW] = {
.bg = 0, .bg = 0,
.tilemapLeft = 12, .tilemapLeft = 12,
.tilemapTop = 2, .tilemapTop = 2,
@@ -359,7 +359,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 0, .paletteNum = 0,
.baseBlock = 0x00a0, .baseBlock = 0x00a0,
}, },
{ [B_WIN_VS_OUTCOME_LEFT] = {
.bg = 0, .bg = 0,
.tilemapLeft = 4, .tilemapLeft = 4,
.tilemapTop = 2, .tilemapTop = 2,
@@ -368,7 +368,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.paletteNum = 0, .paletteNum = 0,
.baseBlock = 0x00a0, .baseBlock = 0x00a0,
}, },
{ [B_WIN_VS_OUTCOME_RIGHT] = {
.bg = 0, .bg = 0,
.tilemapLeft = 19, .tilemapLeft = 19,
.tilemapTop = 2, .tilemapTop = 2,
@@ -382,7 +382,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
static const struct WindowTemplate gBattleArenaWindowTemplates[] = static const struct WindowTemplate gBattleArenaWindowTemplates[] =
{ {
{ [B_WIN_MSG] = {
.bg = 0, .bg = 0,
.tilemapLeft = 2, .tilemapLeft = 2,
.tilemapTop = 15, .tilemapTop = 15,
@@ -391,7 +391,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 0, .paletteNum = 0,
.baseBlock = 0x0090, .baseBlock = 0x0090,
}, },
{ [B_WIN_ACTION_PROMPT] = {
.bg = 0, .bg = 0,
.tilemapLeft = 1, .tilemapLeft = 1,
.tilemapTop = 35, .tilemapTop = 35,
@@ -400,7 +400,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 0, .paletteNum = 0,
.baseBlock = 0x01c0, .baseBlock = 0x01c0,
}, },
{ [B_WIN_ACTION_MENU] = {
.bg = 0, .bg = 0,
.tilemapLeft = 17, .tilemapLeft = 17,
.tilemapTop = 35, .tilemapTop = 35,
@@ -409,7 +409,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0190, .baseBlock = 0x0190,
}, },
{ [B_WIN_MOVE_NAME_1] = {
.bg = 0, .bg = 0,
.tilemapLeft = 2, .tilemapLeft = 2,
.tilemapTop = 55, .tilemapTop = 55,
@@ -418,7 +418,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0300, .baseBlock = 0x0300,
}, },
{ [B_WIN_MOVE_NAME_2] = {
.bg = 0, .bg = 0,
.tilemapLeft = 11, .tilemapLeft = 11,
.tilemapTop = 55, .tilemapTop = 55,
@@ -427,7 +427,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0310, .baseBlock = 0x0310,
}, },
{ [B_WIN_MOVE_NAME_3] = {
.bg = 0, .bg = 0,
.tilemapLeft = 2, .tilemapLeft = 2,
.tilemapTop = 57, .tilemapTop = 57,
@@ -436,7 +436,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0320, .baseBlock = 0x0320,
}, },
{ [B_WIN_MOVE_NAME_4] = {
.bg = 0, .bg = 0,
.tilemapLeft = 11, .tilemapLeft = 11,
.tilemapTop = 57, .tilemapTop = 57,
@@ -445,7 +445,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0330, .baseBlock = 0x0330,
}, },
{ [B_WIN_PP] = {
.bg = 0, .bg = 0,
.tilemapLeft = 21, .tilemapLeft = 21,
.tilemapTop = 55, .tilemapTop = 55,
@@ -454,7 +454,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0290, .baseBlock = 0x0290,
}, },
{ [B_WIN_DUMMY] = {
.bg = 0, .bg = 0,
.tilemapLeft = 21, .tilemapLeft = 21,
.tilemapTop = 57, .tilemapTop = 57,
@@ -463,7 +463,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0298, .baseBlock = 0x0298,
}, },
{ [B_WIN_PP_REMAINING] = {
.bg = 0, .bg = 0,
.tilemapLeft = 25, .tilemapLeft = 25,
.tilemapTop = 55, .tilemapTop = 55,
@@ -472,7 +472,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0298, .baseBlock = 0x0298,
}, },
{ [B_WIN_MOVE_TYPE] = {
.bg = 0, .bg = 0,
.tilemapLeft = 21, .tilemapLeft = 21,
.tilemapTop = 57, .tilemapTop = 57,
@@ -481,7 +481,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x02a0, .baseBlock = 0x02a0,
}, },
{ [B_WIN_SWITCH_PROMPT] = {
.bg = 0, .bg = 0,
.tilemapLeft = 21, .tilemapLeft = 21,
.tilemapTop = 55, .tilemapTop = 55,
@@ -490,7 +490,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x02b0, .baseBlock = 0x02b0,
}, },
{ [B_WIN_YESNO] = {
.bg = 0, .bg = 0,
.tilemapLeft = 26, .tilemapLeft = 26,
.tilemapTop = 9, .tilemapTop = 9,
@@ -499,7 +499,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0100, .baseBlock = 0x0100,
}, },
{ [B_WIN_LEVEL_UP_BOX] = {
.bg = 1, .bg = 1,
.tilemapLeft = 19, .tilemapLeft = 19,
.tilemapTop = 8, .tilemapTop = 8,
@@ -508,7 +508,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0100, .baseBlock = 0x0100,
}, },
{ [B_WIN_LEVEL_UP_BANNER] = {
.bg = 2, .bg = 2,
.tilemapLeft = 18, .tilemapLeft = 18,
.tilemapTop = 0, .tilemapTop = 0,
@@ -517,7 +517,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 6, .paletteNum = 6,
.baseBlock = 0x016e, .baseBlock = 0x016e,
}, },
{ [ARENA_WIN_PLAYER_NAME] = {
.bg = 0, .bg = 0,
.tilemapLeft = 6, .tilemapLeft = 6,
.tilemapTop = 1, .tilemapTop = 1,
@@ -526,7 +526,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0100, .baseBlock = 0x0100,
}, },
{ [ARENA_WIN_VS] = {
.bg = 0, .bg = 0,
.tilemapLeft = 14, .tilemapLeft = 14,
.tilemapTop = 1, .tilemapTop = 1,
@@ -535,7 +535,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0110, .baseBlock = 0x0110,
}, },
{ [ARENA_WIN_OPPONENT_NAME] = {
.bg = 0, .bg = 0,
.tilemapLeft = 16, .tilemapLeft = 16,
.tilemapTop = 1, .tilemapTop = 1,
@@ -544,7 +544,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0114, .baseBlock = 0x0114,
}, },
{ [ARENA_WIN_MIND] = {
.bg = 0, .bg = 0,
.tilemapLeft = 12, .tilemapLeft = 12,
.tilemapTop = 4, .tilemapTop = 4,
@@ -553,7 +553,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0124, .baseBlock = 0x0124,
}, },
{ [ARENA_WIN_SKILL] = {
.bg = 0, .bg = 0,
.tilemapLeft = 12, .tilemapLeft = 12,
.tilemapTop = 6, .tilemapTop = 6,
@@ -562,7 +562,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0130, .baseBlock = 0x0130,
}, },
{ [ARENA_WIN_BODY] = {
.bg = 0, .bg = 0,
.tilemapLeft = 12, .tilemapLeft = 12,
.tilemapTop = 8, .tilemapTop = 8,
@@ -571,7 +571,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x013c, .baseBlock = 0x013c,
}, },
{ [ARENA_WIN_JUDGEMENT_TITLE] = {
.bg = 0, .bg = 0,
.tilemapLeft = 8, .tilemapLeft = 8,
.tilemapTop = 11, .tilemapTop = 11,
@@ -580,7 +580,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0148, .baseBlock = 0x0148,
}, },
{ [ARENA_WIN_JUDGEMENT_TEXT] = {
.bg = 0, .bg = 0,
.tilemapLeft = 2, .tilemapLeft = 2,
.tilemapTop = 15, .tilemapTop = 15,
@@ -594,8 +594,8 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
const struct WindowTemplate * const gBattleWindowTemplates[] = const struct WindowTemplate * const gBattleWindowTemplates[] =
{ {
gStandardBattleWindowTemplates, [B_WIN_TYPE_NORMAL] = gStandardBattleWindowTemplates,
gBattleArenaWindowTemplates, [B_WIN_TYPE_ARENA] = gBattleArenaWindowTemplates,
}; };
static const struct BattleBackground gBattleTerrainTable[] = 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 UnusedBattleInit(void)
static void sub_8035608(void)
{ {
u8 spriteId; u8 spriteId;
ResetSpriteData(); ResetSpriteData();
spriteId = CreateSprite(&gUnknown_0831AC88, 0, 0, 0); spriteId = CreateSprite(&gUnusedBattleInitSprite, 0, 0, 0);
gSprites[spriteId].invisible = TRUE; gSprites[spriteId].invisible = TRUE;
SetMainCallback2(sub_8035648); SetMainCallback2(CB2_UnusedBattleInit);
} }
static void sub_8035648(void) static void CB2_UnusedBattleInit(void)
{ {
AnimateSprites(); AnimateSprites();
BuildOamBuffer(); BuildOamBuffer();
@@ -717,13 +716,13 @@ void BattleInitBgsAndWindows(void)
if (gBattleTypeFlags & BATTLE_TYPE_ARENA) if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
{ {
gBattleScripting.windowsType = 1; gBattleScripting.windowsType = B_WIN_TYPE_ARENA;
SetBgTilemapBuffer(1, gUnknown_02023060); SetBgTilemapBuffer(1, gBattleAnimBgTilemapBuffer);
SetBgTilemapBuffer(2, gUnknown_02023060); SetBgTilemapBuffer(2, gBattleAnimBgTilemapBuffer);
} }
else else
{ {
gBattleScripting.windowsType = 0; gBattleScripting.windowsType = B_WIN_TYPE_NORMAL;
} }
InitWindows(gBattleWindowTemplates[gBattleScripting.windowsType]); InitWindows(gBattleWindowTemplates[gBattleScripting.windowsType]);
@@ -936,7 +935,7 @@ static void DrawLinkBattleVsScreenOutcomeText(void)
{ {
if (gBattleOutcome == B_OUTCOME_DREW) if (gBattleOutcome == B_OUTCOME_DREW)
{ {
BattlePutTextOnWindow(gText_Draw, 0x15); BattlePutTextOnWindow(gText_Draw, B_WIN_VS_OUTCOME_DRAW);
} }
else if (gBattleTypeFlags & BATTLE_TYPE_MULTI) else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{ {
@@ -945,20 +944,20 @@ static void DrawLinkBattleVsScreenOutcomeText(void)
switch (gLinkPlayers[gBattleScripting.multiplayerId].id) switch (gLinkPlayers[gBattleScripting.multiplayerId].id)
{ {
case 0: case 0:
BattlePutTextOnWindow(gText_Win, 0x16); BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_LEFT);
BattlePutTextOnWindow(gText_Loss, 0x17); BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_RIGHT);
break; break;
case 1: case 1:
BattlePutTextOnWindow(gText_Win, 0x17); BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_RIGHT);
BattlePutTextOnWindow(gText_Loss, 0x16); BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_LEFT);
break; break;
case 2: case 2:
BattlePutTextOnWindow(gText_Win, 0x16); BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_LEFT);
BattlePutTextOnWindow(gText_Loss, 0x17); BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_RIGHT);
break; break;
case 3: case 3:
BattlePutTextOnWindow(gText_Win, 0x17); BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_RIGHT);
BattlePutTextOnWindow(gText_Loss, 0x16); BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_LEFT);
break; break;
} }
} }
@@ -967,20 +966,20 @@ static void DrawLinkBattleVsScreenOutcomeText(void)
switch (gLinkPlayers[gBattleScripting.multiplayerId].id) switch (gLinkPlayers[gBattleScripting.multiplayerId].id)
{ {
case 0: case 0:
BattlePutTextOnWindow(gText_Win, 0x17); BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_RIGHT);
BattlePutTextOnWindow(gText_Loss, 0x16); BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_LEFT);
break; break;
case 1: case 1:
BattlePutTextOnWindow(gText_Win, 0x16); BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_LEFT);
BattlePutTextOnWindow(gText_Loss, 0x17); BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_RIGHT);
break; break;
case 2: case 2:
BattlePutTextOnWindow(gText_Win, 0x17); BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_RIGHT);
BattlePutTextOnWindow(gText_Loss, 0x16); BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_LEFT);
break; break;
case 3: case 3:
BattlePutTextOnWindow(gText_Win, 0x16); BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_LEFT);
BattlePutTextOnWindow(gText_Loss, 0x17); BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_RIGHT);
break; break;
} }
} }
@@ -989,26 +988,26 @@ static void DrawLinkBattleVsScreenOutcomeText(void)
{ {
if (gLinkPlayers[gBattleScripting.multiplayerId].id != 0) if (gLinkPlayers[gBattleScripting.multiplayerId].id != 0)
{ {
BattlePutTextOnWindow(gText_Win, 0x17); BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_RIGHT);
BattlePutTextOnWindow(gText_Loss, 0x16); BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_LEFT);
} }
else else
{ {
BattlePutTextOnWindow(gText_Win, 0x16); BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_LEFT);
BattlePutTextOnWindow(gText_Loss, 0x17); BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_RIGHT);
} }
} }
else else
{ {
if (gLinkPlayers[gBattleScripting.multiplayerId].id != 0) if (gLinkPlayers[gBattleScripting.multiplayerId].id != 0)
{ {
BattlePutTextOnWindow(gText_Win, 0x16); BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_LEFT);
BattlePutTextOnWindow(gText_Loss, 0x17); BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_RIGHT);
} }
else else
{ {
BattlePutTextOnWindow(gText_Win, 0x17); BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_RIGHT);
BattlePutTextOnWindow(gText_Loss, 0x16); BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_LEFT);
} }
} }
} }
@@ -1032,19 +1031,19 @@ void InitLinkBattleVsScreen(u8 taskId)
switch (linkPlayer->id) switch (linkPlayer->id)
{ {
case 0: case 0:
BattlePutTextOnWindow(name, 0x11); BattlePutTextOnWindow(name, B_WIN_VS_MULTI_PLAYER_1);
DrawLinkBattleParticipantPokeballs(taskId, linkPlayer->id, 1, 2, 4); DrawLinkBattleParticipantPokeballs(taskId, linkPlayer->id, 1, 2, 4);
break; break;
case 1: case 1:
BattlePutTextOnWindow(name, 0x12); BattlePutTextOnWindow(name, B_WIN_VS_MULTI_PLAYER_2);
DrawLinkBattleParticipantPokeballs(taskId, linkPlayer->id, 2, 2, 4); DrawLinkBattleParticipantPokeballs(taskId, linkPlayer->id, 2, 2, 4);
break; break;
case 2: case 2:
BattlePutTextOnWindow(name, 0x13); BattlePutTextOnWindow(name, B_WIN_VS_MULTI_PLAYER_3);
DrawLinkBattleParticipantPokeballs(taskId, linkPlayer->id, 1, 2, 8); DrawLinkBattleParticipantPokeballs(taskId, linkPlayer->id, 1, 2, 8);
break; break;
case 3: case 3:
BattlePutTextOnWindow(name, 0x14); BattlePutTextOnWindow(name, B_WIN_VS_MULTI_PLAYER_4);
DrawLinkBattleParticipantPokeballs(taskId, linkPlayer->id, 2, 2, 8); DrawLinkBattleParticipantPokeballs(taskId, linkPlayer->id, 2, 2, 8);
break; break;
} }
@@ -1060,10 +1059,10 @@ void InitLinkBattleVsScreen(u8 taskId)
opponentId = playerId, playerId = opponentId_copy; opponentId = playerId, playerId = opponentId_copy;
name = gLinkPlayers[playerId].name; name = gLinkPlayers[playerId].name;
BattlePutTextOnWindow(name, 0xF); BattlePutTextOnWindow(name, B_WIN_VS_PLAYER);
name = gLinkPlayers[opponentId].name; name = gLinkPlayers[opponentId].name;
BattlePutTextOnWindow(name, 0x10); BattlePutTextOnWindow(name, B_WIN_VS_OPPONENT);
DrawLinkBattleParticipantPokeballs(taskId, playerId, 1, 2, 7); DrawLinkBattleParticipantPokeballs(taskId, playerId, 1, 2, 7);
DrawLinkBattleParticipantPokeballs(taskId, opponentId, 2, 2, 7); DrawLinkBattleParticipantPokeballs(taskId, opponentId, 2, 2, 7);
+3 -6
View File
@@ -29,9 +29,6 @@
#include "constants/trainers.h" #include "constants/trainers.h"
#include "recorded_battle.h" #include "recorded_battle.h"
extern struct MusicPlayerInfo gMPlayInfo_BGM;
// this file's functions
static void LinkOpponentHandleGetMonData(void); static void LinkOpponentHandleGetMonData(void);
static void LinkOpponentHandleGetRawMonData(void); static void LinkOpponentHandleGetRawMonData(void);
static void LinkOpponentHandleSetMonData(void); static void LinkOpponentHandleSetMonData(void);
@@ -424,7 +421,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
static void CompleteOnInactiveTextPrinter(void) static void CompleteOnInactiveTextPrinter(void)
{ {
if (!IsTextPrinterActive(0)) if (!IsTextPrinterActive(B_WIN_MSG))
LinkOpponentBufferExecCompleted(); LinkOpponentBufferExecCompleted();
} }
@@ -558,7 +555,7 @@ static void LinkOpponentHandleGetMonData(void)
monToCheck >>= 1; monToCheck >>= 1;
} }
} }
BtlController_EmitDataTransfer(1, size, monData); BtlController_EmitDataTransfer(BUFFER_B, size, monData);
LinkOpponentBufferExecCompleted(); LinkOpponentBufferExecCompleted();
} }
@@ -1471,7 +1468,7 @@ static void LinkOpponentHandlePrintString(void)
gBattle_BG0_Y = 0; gBattle_BG0_Y = 0;
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]); stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId); BufferStringBattle(*stringId);
BattlePutTextOnWindow(gDisplayedStringBattle, 0); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter; gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
BattleTv_SetDataBasedOnString(*stringId); BattleTv_SetDataBasedOnString(*stringId);
} }
+3 -4
View File
@@ -29,7 +29,6 @@
#include "constants/trainers.h" #include "constants/trainers.h"
#include "recorded_battle.h" #include "recorded_battle.h"
// this file's functions
static void LinkPartnerHandleGetMonData(void); static void LinkPartnerHandleGetMonData(void);
static void LinkPartnerHandleGetRawMonData(void); static void LinkPartnerHandleGetRawMonData(void);
static void LinkPartnerHandleSetMonData(void); static void LinkPartnerHandleSetMonData(void);
@@ -313,7 +312,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
static void CompleteOnInactiveTextPrinter(void) static void CompleteOnInactiveTextPrinter(void)
{ {
if (!IsTextPrinterActive(0)) if (!IsTextPrinterActive(B_WIN_MSG))
LinkPartnerBufferExecCompleted(); LinkPartnerBufferExecCompleted();
} }
@@ -443,7 +442,7 @@ static void LinkPartnerHandleGetMonData(void)
monToCheck >>= 1; monToCheck >>= 1;
} }
} }
BtlController_EmitDataTransfer(1, size, monData); BtlController_EmitDataTransfer(BUFFER_B, size, monData);
LinkPartnerBufferExecCompleted(); LinkPartnerBufferExecCompleted();
} }
@@ -1301,7 +1300,7 @@ static void LinkPartnerHandlePrintString(void)
gBattle_BG0_Y = 0; gBattle_BG0_Y = 0;
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]); stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId); BufferStringBattle(*stringId);
BattlePutTextOnWindow(gDisplayedStringBattle, 0); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter; gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
BattleTv_SetDataBasedOnString(*stringId); BattleTv_SetDataBasedOnString(*stringId);
} }
+14 -17
View File
@@ -34,9 +34,6 @@
#include "constants/trainers.h" #include "constants/trainers.h"
#include "trainer_hill.h" #include "trainer_hill.h"
extern struct MusicPlayerInfo gMPlayInfo_BGM;
// this file's functions
static void OpponentHandleGetMonData(void); static void OpponentHandleGetMonData(void);
static void OpponentHandleGetRawMonData(void); static void OpponentHandleGetRawMonData(void);
static void OpponentHandleSetMonData(void); static void OpponentHandleSetMonData(void);
@@ -430,7 +427,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
static void CompleteOnInactiveTextPrinter(void) static void CompleteOnInactiveTextPrinter(void)
{ {
if (!IsTextPrinterActive(0)) if (!IsTextPrinterActive(B_WIN_MSG))
OpponentBufferExecCompleted(); OpponentBufferExecCompleted();
} }
@@ -558,7 +555,7 @@ static void OpponentHandleGetMonData(void)
monToCheck >>= 1; monToCheck >>= 1;
} }
} }
BtlController_EmitDataTransfer(1, size, monData); BtlController_EmitDataTransfer(BUFFER_B, size, monData);
OpponentBufferExecCompleted(); OpponentBufferExecCompleted();
} }
@@ -878,7 +875,7 @@ static void OpponentHandleGetRawMonData(void)
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++) for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++)
dst[i] = src[i]; dst[i] = src[i];
BtlController_EmitDataTransfer(1, gBattleBufferA[gActiveBattler][2], dst); BtlController_EmitDataTransfer(BUFFER_B, gBattleBufferA[gActiveBattler][2], dst);
OpponentBufferExecCompleted(); OpponentBufferExecCompleted();
} }
@@ -1524,7 +1521,7 @@ static void OpponentHandlePrintString(void)
gBattle_BG0_Y = 0; gBattle_BG0_Y = 0;
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]); stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId); BufferStringBattle(*stringId);
BattlePutTextOnWindow(gDisplayedStringBattle, 0); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter; gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
BattleArena_DeductMindPoints(gActiveBattler, *stringId); BattleArena_DeductMindPoints(gActiveBattler, *stringId);
} }
@@ -1549,7 +1546,7 @@ static void OpponentHandleChooseMove(void)
{ {
if (gBattleTypeFlags & BATTLE_TYPE_PALACE) if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{ {
BtlController_EmitTwoReturnValues(1, 10, ChooseMoveAndTargetInBattlePalace()); BtlController_EmitTwoReturnValues(BUFFER_B, 10, ChooseMoveAndTargetInBattlePalace());
OpponentBufferExecCompleted(); OpponentBufferExecCompleted();
} }
else else
@@ -1566,13 +1563,13 @@ static void OpponentHandleChooseMove(void)
switch (chosenMoveId) switch (chosenMoveId)
{ {
case AI_CHOICE_WATCH: case AI_CHOICE_WATCH:
BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_WATCH_CAREFULLY, 0); BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SAFARI_WATCH_CAREFULLY, 0);
break; break;
case AI_CHOICE_FLEE: case AI_CHOICE_FLEE:
BtlController_EmitTwoReturnValues(1, B_ACTION_RUN, 0); BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_RUN, 0);
break; break;
case 6: case 6:
BtlController_EmitTwoReturnValues(1, 15, gBattlerTarget); BtlController_EmitTwoReturnValues(BUFFER_B, 15, gBattlerTarget);
break; break;
default: default:
if (gBattleMoves[moveInfo->moves[chosenMoveId]].target & (MOVE_TARGET_USER_OR_SELECTED | MOVE_TARGET_USER)) 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]) if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT); gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
} }
BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (gBattlerTarget << 8)); BtlController_EmitTwoReturnValues(BUFFER_B, 10, (chosenMoveId) | (gBattlerTarget << 8));
break; break;
} }
OpponentBufferExecCompleted(); OpponentBufferExecCompleted();
@@ -1598,11 +1595,11 @@ static void OpponentHandleChooseMove(void)
} while (move == MOVE_NONE); } while (move == MOVE_NONE);
if (gBattleMoves[move].target & (MOVE_TARGET_USER_OR_SELECTED | MOVE_TARGET_USER)) 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) 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 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(); OpponentBufferExecCompleted();
} }
@@ -1611,7 +1608,7 @@ static void OpponentHandleChooseMove(void)
static void OpponentHandleChooseItem(void) static void OpponentHandleChooseItem(void)
{ {
BtlController_EmitOneReturnValue(1, *(gBattleStruct->chosenItem + (gActiveBattler / 2) * 2)); BtlController_EmitOneReturnValue(BUFFER_B, *(gBattleStruct->chosenItem + (gActiveBattler / 2) * 2));
OpponentBufferExecCompleted(); OpponentBufferExecCompleted();
} }
@@ -1668,7 +1665,7 @@ static void OpponentHandleChoosePokemon(void)
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = chosenMonId; *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = chosenMonId;
BtlController_EmitChosenMonReturnValue(1, chosenMonId, NULL); BtlController_EmitChosenMonReturnValue(BUFFER_B, chosenMonId, NULL);
OpponentBufferExecCompleted(); OpponentBufferExecCompleted();
} }
+48 -49
View File
@@ -36,9 +36,6 @@
#include "constants/trainers.h" #include "constants/trainers.h"
#include "constants/rgb.h" #include "constants/rgb.h"
extern struct MusicPlayerInfo gMPlayInfo_BGM;
// this file's functions
static void PlayerHandleGetMonData(void); static void PlayerHandleGetMonData(void);
static void PlayerHandleSetMonData(void); static void PlayerHandleSetMonData(void);
static void PlayerHandleSetRawMonData(void); static void PlayerHandleSetRawMonData(void);
@@ -251,17 +248,17 @@ static void HandleInputChooseAction(void)
switch (gActionSelectionCursor[gActiveBattler]) switch (gActionSelectionCursor[gActiveBattler])
{ {
case 0: case 0: // Top left
BtlController_EmitTwoReturnValues(1, B_ACTION_USE_MOVE, 0); BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_USE_MOVE, 0);
break; break;
case 1: case 1: // Top right
BtlController_EmitTwoReturnValues(1, B_ACTION_USE_ITEM, 0); BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_USE_ITEM, 0);
break; break;
case 2: case 2: // Bottom left
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0); BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0);
break; break;
case 3: case 3: // Bottom right
BtlController_EmitTwoReturnValues(1, B_ACTION_RUN, 0); BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_RUN, 0);
break; break;
} }
PlayerBufferExecCompleted(); PlayerBufferExecCompleted();
@@ -322,7 +319,7 @@ static void HandleInputChooseAction(void)
return; return;
} }
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
BtlController_EmitTwoReturnValues(1, B_ACTION_CANCEL_PARTNER, 0); BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_CANCEL_PARTNER, 0);
PlayerBufferExecCompleted(); PlayerBufferExecCompleted();
} }
} }
@@ -368,7 +365,7 @@ static void HandleInputChooseTarget(void)
{ {
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_HideAsMoveTarget; 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); EndBounceEffect(gMultiUsePlayerCursor, BOUNCE_HEALTHBOX);
PlayerBufferExecCompleted(); PlayerBufferExecCompleted();
} }
@@ -526,7 +523,7 @@ static void HandleInputChooseMove(void)
if (!canSelectTarget) if (!canSelectTarget)
{ {
BtlController_EmitTwoReturnValues(1, 10, gMoveSelectionCursor[gActiveBattler] | (gMultiUsePlayerCursor << 8)); BtlController_EmitTwoReturnValues(BUFFER_B, 10, gMoveSelectionCursor[gActiveBattler] | (gMultiUsePlayerCursor << 8));
PlayerBufferExecCompleted(); PlayerBufferExecCompleted();
} }
else else
@@ -546,7 +543,7 @@ static void HandleInputChooseMove(void)
else if (JOY_NEW(B_BUTTON) || gPlayerDpadHoldFrames > 59) else if (JOY_NEW(B_BUTTON) || gPlayerDpadHoldFrames > 59)
{ {
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
BtlController_EmitTwoReturnValues(1, 10, 0xFFFF); BtlController_EmitTwoReturnValues(BUFFER_B, 10, 0xFFFF);
PlayerBufferExecCompleted(); PlayerBufferExecCompleted();
} }
else if (JOY_NEW(DPAD_LEFT)) else if (JOY_NEW(DPAD_LEFT))
@@ -611,7 +608,7 @@ static void HandleInputChooseMove(void)
gMultiUsePlayerCursor = gMoveSelectionCursor[gActiveBattler] + 1; gMultiUsePlayerCursor = gMoveSelectionCursor[gActiveBattler] + 1;
MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 27); MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 27);
BattlePutTextOnWindow(gText_BattleSwitchWhich, 0xB); BattlePutTextOnWindow(gText_BattleSwitchWhich, B_WIN_SWITCH_PROMPT);
gBattlerControllerFuncs[gActiveBattler] = HandleMoveSwitching; gBattlerControllerFuncs[gActiveBattler] = HandleMoveSwitching;
} }
} }
@@ -858,7 +855,7 @@ static void SetLinkBattleEndCallbacks(void)
if (gReceivedRemoteLinkPlayers == 0) if (gReceivedRemoteLinkPlayers == 0)
{ {
m4aSongNumStop(SE_LOW_HEALTH); m4aSongNumStop(SE_LOW_HEALTH);
gMain.inBattle = 0; gMain.inBattle = FALSE;
gMain.callback1 = gPreBattleCallback1; gMain.callback1 = gPreBattleCallback1;
SetMainCallback2(CB2_InitEndLinkBattle); SetMainCallback2(CB2_InitEndLinkBattle);
if (gBattleOutcome == B_OUTCOME_WON) if (gBattleOutcome == B_OUTCOME_WON)
@@ -871,7 +868,7 @@ static void SetLinkBattleEndCallbacks(void)
if (IsLinkTaskFinished()) if (IsLinkTaskFinished())
{ {
m4aSongNumStop(SE_LOW_HEALTH); m4aSongNumStop(SE_LOW_HEALTH);
gMain.inBattle = 0; gMain.inBattle = FALSE;
gMain.callback1 = gPreBattleCallback1; gMain.callback1 = gPreBattleCallback1;
SetMainCallback2(CB2_InitEndLinkBattle); SetMainCallback2(CB2_InitEndLinkBattle);
if (gBattleOutcome == B_OUTCOME_WON) if (gBattleOutcome == B_OUTCOME_WON)
@@ -901,7 +898,7 @@ void SetBattleEndCallbacks(void)
else else
{ {
m4aSongNumStop(SE_LOW_HEALTH); m4aSongNumStop(SE_LOW_HEALTH);
gMain.inBattle = 0; gMain.inBattle = FALSE;
gMain.callback1 = gPreBattleCallback1; gMain.callback1 = gPreBattleCallback1;
SetMainCallback2(gMain.savedCallback); SetMainCallback2(gMain.savedCallback);
} }
@@ -1145,7 +1142,7 @@ static void CompleteOnHealthbarDone(void)
static void CompleteOnInactiveTextPrinter(void) static void CompleteOnInactiveTextPrinter(void)
{ {
if (!IsTextPrinterActive(0)) if (!IsTextPrinterActive(B_WIN_MSG))
PlayerBufferExecCompleted(); PlayerBufferExecCompleted();
} }
@@ -1177,7 +1174,7 @@ static void Task_GiveExpToMon(u8 taskId)
gainedExp -= nextLvlExp - currExp; gainedExp -= nextLvlExp - currExp;
savedActiveBattler = gActiveBattler; savedActiveBattler = gActiveBattler;
gActiveBattler = battlerId; gActiveBattler = battlerId;
BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp); BtlController_EmitTwoReturnValues(BUFFER_B, RET_VALUE_LEVELED_UP, gainedExp);
gActiveBattler = savedActiveBattler; gActiveBattler = savedActiveBattler;
if (IsDoubleBattle() == TRUE if (IsDoubleBattle() == TRUE
@@ -1256,7 +1253,7 @@ static void Task_GiveExpWithExpBar(u8 taskId)
gainedExp -= expOnNextLvl - currExp; gainedExp -= expOnNextLvl - currExp;
savedActiveBattler = gActiveBattler; savedActiveBattler = gActiveBattler;
gActiveBattler = battlerId; gActiveBattler = battlerId;
BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp); BtlController_EmitTwoReturnValues(BUFFER_B, RET_VALUE_LEVELED_UP, gainedExp);
gActiveBattler = savedActiveBattler; gActiveBattler = savedActiveBattler;
gTasks[taskId].func = Task_LaunchLvlUpAnim; gTasks[taskId].func = Task_LaunchLvlUpAnim;
} }
@@ -1341,7 +1338,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
static void CompleteOnInactiveTextPrinter2(void) static void CompleteOnInactiveTextPrinter2(void)
{ {
if (!IsTextPrinterActive(0)) if (!IsTextPrinterActive(B_WIN_MSG))
PlayerBufferExecCompleted(); PlayerBufferExecCompleted();
} }
@@ -1364,9 +1361,9 @@ static void WaitForMonSelection(void)
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{ {
if (gPartyMenuUseExitCallback == TRUE) if (gPartyMenuUseExitCallback == TRUE)
BtlController_EmitChosenMonReturnValue(1, gSelectedMonPartyId, gBattlePartyCurrentOrder); BtlController_EmitChosenMonReturnValue(BUFFER_B, gSelectedMonPartyId, gBattlePartyCurrentOrder);
else else
BtlController_EmitChosenMonReturnValue(1, PARTY_SIZE, NULL); BtlController_EmitChosenMonReturnValue(BUFFER_B, PARTY_SIZE, NULL);
if ((gBattleBufferA[gActiveBattler][1] & 0xF) == 1) if ((gBattleBufferA[gActiveBattler][1] & 0xF) == 1)
PrintLinkStandbyMsg(); PrintLinkStandbyMsg();
@@ -1390,7 +1387,7 @@ static void CompleteWhenChoseItem(void)
{ {
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{ {
BtlController_EmitOneReturnValue(1, gSpecialVar_ItemId); BtlController_EmitOneReturnValue(BUFFER_B, gSpecialVar_ItemId);
PlayerBufferExecCompleted(); PlayerBufferExecCompleted();
} }
} }
@@ -1442,9 +1439,9 @@ static void PlayerHandleYesNoInput(void)
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
if (gMultiUsePlayerCursor != 0) if (gMultiUsePlayerCursor != 0)
BtlController_EmitTwoReturnValues(1, 0xE, 0); BtlController_EmitTwoReturnValues(BUFFER_B, 0xE, 0);
else else
BtlController_EmitTwoReturnValues(1, 0xD, 0); BtlController_EmitTwoReturnValues(BUFFER_B, 0xD, 0);
PlayerBufferExecCompleted(); PlayerBufferExecCompleted();
} }
@@ -1466,7 +1463,8 @@ static void MoveSelectionDisplayMoveNames(void)
{ {
MoveSelectionDestroyCursorAt(i); MoveSelectionDestroyCursorAt(i);
StringCopy(gDisplayedStringBattle, gMoveNames[moveInfo->moves[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) if (moveInfo->moves[i] != MOVE_NONE)
gNumberOfMovesToChoose++; gNumberOfMovesToChoose++;
} }
@@ -1475,7 +1473,7 @@ static void MoveSelectionDisplayMoveNames(void)
static void MoveSelectionDisplayPpString(void) static void MoveSelectionDisplayPpString(void)
{ {
StringCopy(gDisplayedStringBattle, gText_MoveInterfacePP); StringCopy(gDisplayedStringBattle, gText_MoveInterfacePP);
BattlePutTextOnWindow(gDisplayedStringBattle, 7); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_PP);
} }
static void MoveSelectionDisplayPpNumber(void) static void MoveSelectionDisplayPpNumber(void)
@@ -1492,7 +1490,7 @@ static void MoveSelectionDisplayPpNumber(void)
*(txtPtr)++ = CHAR_SLASH; *(txtPtr)++ = CHAR_SLASH;
ConvertIntToDecimalStringN(txtPtr, moveInfo->maxPp[gMoveSelectionCursor[gActiveBattler]], STR_CONV_MODE_RIGHT_ALIGN, 2); 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) static void MoveSelectionDisplayMoveType(void)
@@ -1506,7 +1504,7 @@ static void MoveSelectionDisplayMoveType(void)
*(txtPtr)++ = 1; *(txtPtr)++ = 1;
StringCopy(txtPtr, gTypeNames[gBattleMoves[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].type]); 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) static void MoveSelectionCreateCursorAt(u8 cursorPosition, u8 arg1)
@@ -1577,7 +1575,7 @@ static void PrintLinkStandbyMsg(void)
{ {
gBattle_BG0_X = 0; gBattle_BG0_X = 0;
gBattle_BG0_Y = 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; monToCheck >>= 1;
} }
} }
BtlController_EmitDataTransfer(1, size, monData); BtlController_EmitDataTransfer(BUFFER_B, size, monData);
PlayerBufferExecCompleted(); PlayerBufferExecCompleted();
} }
@@ -1922,7 +1920,7 @@ void PlayerHandleGetRawMonData(void)
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++) for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++)
dst[i] = src[i]; dst[i] = src[i];
BtlController_EmitDataTransfer(1, gBattleBufferA[gActiveBattler][2], dst); BtlController_EmitDataTransfer(BUFFER_B, gBattleBufferA[gActiveBattler][2], dst);
PlayerBufferExecCompleted(); PlayerBufferExecCompleted();
} }
@@ -2228,13 +2226,14 @@ static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit)
static void PlayerHandleReturnMonToBall(void) static void PlayerHandleReturnMonToBall(void)
{ {
if (gBattleBufferA[gActiveBattler][1] == 0) if (!gBattleBufferA[gActiveBattler][1])
{ {
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
gBattlerControllerFuncs[gActiveBattler] = DoSwitchOutAnimation; gBattlerControllerFuncs[gActiveBattler] = DoSwitchOutAnimation;
} }
else else
{ {
// Skip animation, just remove battler
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]); FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]); DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]); SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
@@ -2549,7 +2548,7 @@ static void PlayerHandlePrintString(void)
gBattle_BG0_Y = 0; gBattle_BG0_Y = 0;
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]); stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId); BufferStringBattle(*stringId);
BattlePutTextOnWindow(gDisplayedStringBattle, 0); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter2; gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter2;
BattleTv_SetDataBasedOnString(*stringId); BattleTv_SetDataBasedOnString(*stringId);
BattleArena_DeductMindPoints(gActiveBattler, *stringId); BattleArena_DeductMindPoints(gActiveBattler, *stringId);
@@ -2579,14 +2578,14 @@ static void PlayerHandleChooseAction(void)
gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3; gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3;
BattleTv_ClearExplosionFaintCause(); BattleTv_ClearExplosionFaintCause();
BattlePutTextOnWindow(gText_BattleMenu, 2); BattlePutTextOnWindow(gText_BattleMenu, B_WIN_ACTION_MENU);
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
ActionSelectionDestroyCursorAt(i); ActionSelectionDestroyCursorAt(i);
ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillPkmnDo); BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillPkmnDo);
BattlePutTextOnWindow(gDisplayedStringBattle, 1); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_ACTION_PROMPT);
} }
static void PlayerHandleYesNoBox(void) static void PlayerHandleYesNoBox(void)
@@ -2594,7 +2593,7 @@ static void PlayerHandleYesNoBox(void)
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{ {
HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0); HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0);
BattlePutTextOnWindow(gText_BattleYesNoChoice, 12); BattlePutTextOnWindow(gText_BattleYesNoChoice, B_WIN_YESNO);
gMultiUsePlayerCursor = 1; gMultiUsePlayerCursor = 1;
BattleCreateYesNoCursorAt(1); BattleCreateYesNoCursorAt(1);
gBattlerControllerFuncs[gActiveBattler] = PlayerHandleYesNoInput; gBattlerControllerFuncs[gActiveBattler] = PlayerHandleYesNoInput;
@@ -2622,7 +2621,7 @@ static void PlayerChooseMoveInBattlePalace(void)
if (--*(gBattleStruct->arenaMindPoints + gActiveBattler) == 0) if (--*(gBattleStruct->arenaMindPoints + gActiveBattler) == 0)
{ {
gBattlePalaceMoveSelectionRngValue = gRngValue; gBattlePalaceMoveSelectionRngValue = gRngValue;
BtlController_EmitTwoReturnValues(1, 10, ChooseMoveAndTargetInBattlePalace()); BtlController_EmitTwoReturnValues(BUFFER_B, 10, ChooseMoveAndTargetInBattlePalace());
PlayerBufferExecCompleted(); PlayerBufferExecCompleted();
} }
} }
@@ -2672,7 +2671,7 @@ static void PlayerHandleChoosePokemon(void)
if (gBattleTypeFlags & BATTLE_TYPE_ARENA && (gBattleBufferA[gActiveBattler][1] & 0xF) != PARTY_ACTION_CANT_SWITCH) 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(); PlayerBufferExecCompleted();
} }
else else
@@ -2829,25 +2828,25 @@ static void PlayerHandleCmd32(void)
static void PlayerHandleTwoReturnValues(void) static void PlayerHandleTwoReturnValues(void)
{ {
BtlController_EmitTwoReturnValues(1, 0, 0); BtlController_EmitTwoReturnValues(BUFFER_B, 0, 0);
PlayerBufferExecCompleted(); PlayerBufferExecCompleted();
} }
static void PlayerHandleChosenMonReturnValue(void) static void PlayerHandleChosenMonReturnValue(void)
{ {
BtlController_EmitChosenMonReturnValue(1, 0, NULL); BtlController_EmitChosenMonReturnValue(BUFFER_B, 0, NULL);
PlayerBufferExecCompleted(); PlayerBufferExecCompleted();
} }
static void PlayerHandleOneReturnValue(void) static void PlayerHandleOneReturnValue(void)
{ {
BtlController_EmitOneReturnValue(1, 0); BtlController_EmitOneReturnValue(BUFFER_B, 0);
PlayerBufferExecCompleted(); PlayerBufferExecCompleted();
} }
static void PlayerHandleOneReturnValue_Duplicate(void) static void PlayerHandleOneReturnValue_Duplicate(void)
{ {
BtlController_EmitOneReturnValue_Duplicate(1, 0); BtlController_EmitOneReturnValue_Duplicate(BUFFER_B, 0);
PlayerBufferExecCompleted(); PlayerBufferExecCompleted();
} }
@@ -3100,14 +3099,14 @@ static void PlayerHandleLinkStandbyMsg(void)
RecordedBattle_RecordAllBattlerData(&gBattleBufferA[gActiveBattler][2]); RecordedBattle_RecordAllBattlerData(&gBattleBufferA[gActiveBattler][2]);
switch (gBattleBufferA[gActiveBattler][1]) switch (gBattleBufferA[gActiveBattler][1])
{ {
case 0: case LINK_STANDBY_MSG_STOP_BOUNCE:
PrintLinkStandbyMsg(); PrintLinkStandbyMsg();
// fall through // fall through
case 1: case LINK_STANDBY_STOP_BOUNCE_ONLY:
EndBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX); EndBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX);
EndBounceEffect(gActiveBattler, BOUNCE_MON); EndBounceEffect(gActiveBattler, BOUNCE_MON);
break; break;
case 2: case LINK_STANDBY_MSG_ONLY:
PrintLinkStandbyMsg(); PrintLinkStandbyMsg();
break; break;
} }
+8 -9
View File
@@ -27,7 +27,6 @@
#include "constants/songs.h" #include "constants/songs.h"
#include "constants/trainers.h" #include "constants/trainers.h"
// this file's functions
static void PlayerPartnerHandleGetMonData(void); static void PlayerPartnerHandleGetMonData(void);
static void PlayerPartnerHandleGetRawMonData(void); static void PlayerPartnerHandleGetRawMonData(void);
static void PlayerPartnerHandleSetMonData(void); static void PlayerPartnerHandleSetMonData(void);
@@ -300,7 +299,7 @@ static void CompleteOnHealthbarDone(void)
static void CompleteOnInactiveTextPrinter(void) static void CompleteOnInactiveTextPrinter(void)
{ {
if (!IsTextPrinterActive(0)) if (!IsTextPrinterActive(B_WIN_MSG))
PlayerPartnerBufferExecCompleted(); PlayerPartnerBufferExecCompleted();
} }
@@ -333,7 +332,7 @@ static void Task_GiveExpToMon(u8 taskId)
gainedExp -= nextLvlExp - currExp; gainedExp -= nextLvlExp - currExp;
savedActiveBank = gActiveBattler; savedActiveBank = gActiveBattler;
gActiveBattler = battlerId; gActiveBattler = battlerId;
BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp); BtlController_EmitTwoReturnValues(BUFFER_B, RET_VALUE_LEVELED_UP, gainedExp);
gActiveBattler = savedActiveBank; gActiveBattler = savedActiveBank;
if (IsDoubleBattle() == TRUE if (IsDoubleBattle() == TRUE
@@ -412,7 +411,7 @@ static void Task_GiveExpWithExpBar(u8 taskId)
gainedExp -= expOnNextLvl - currExp; gainedExp -= expOnNextLvl - currExp;
savedActiveBank = gActiveBattler; savedActiveBank = gActiveBattler;
gActiveBattler = battlerId; gActiveBattler = battlerId;
BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp); BtlController_EmitTwoReturnValues(BUFFER_B, RET_VALUE_LEVELED_UP, gainedExp);
gActiveBattler = savedActiveBank; gActiveBattler = savedActiveBank;
gTasks[taskId].func = Task_LaunchLvlUpAnim; gTasks[taskId].func = Task_LaunchLvlUpAnim;
} }
@@ -497,7 +496,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
static void CompleteOnInactiveTextPrinter2(void) static void CompleteOnInactiveTextPrinter2(void)
{ {
if (!IsTextPrinterActive(0)) if (!IsTextPrinterActive(B_WIN_MSG))
PlayerPartnerBufferExecCompleted(); PlayerPartnerBufferExecCompleted();
} }
@@ -627,7 +626,7 @@ static void PlayerPartnerHandleGetMonData(void)
monToCheck >>= 1; monToCheck >>= 1;
} }
} }
BtlController_EmitDataTransfer(1, size, monData); BtlController_EmitDataTransfer(BUFFER_B, size, monData);
PlayerPartnerBufferExecCompleted(); PlayerPartnerBufferExecCompleted();
} }
@@ -1491,7 +1490,7 @@ static void PlayerPartnerHandlePrintString(void)
gBattle_BG0_Y = 0; gBattle_BG0_Y = 0;
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]); stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId); BufferStringBattle(*stringId);
BattlePutTextOnWindow(gDisplayedStringBattle, 0); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter2; gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter2;
} }
@@ -1528,7 +1527,7 @@ static void PlayerPartnerHandleChooseMove(void)
gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
} }
BtlController_EmitTwoReturnValues(1, 10, chosenMoveId | (gBattlerTarget << 8)); BtlController_EmitTwoReturnValues(BUFFER_B, 10, chosenMoveId | (gBattlerTarget << 8));
PlayerPartnerBufferExecCompleted(); PlayerPartnerBufferExecCompleted();
} }
@@ -1558,7 +1557,7 @@ static void PlayerPartnerHandleChoosePokemon(void)
} }
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = chosenMonId; *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = chosenMonId;
BtlController_EmitChosenMonReturnValue(1, chosenMonId, NULL); BtlController_EmitChosenMonReturnValue(BUFFER_B, chosenMonId, NULL);
PlayerPartnerBufferExecCompleted(); PlayerPartnerBufferExecCompleted();
} }
+7 -10
View File
@@ -29,9 +29,6 @@
#include "constants/songs.h" #include "constants/songs.h"
#include "constants/trainers.h" #include "constants/trainers.h"
extern struct MusicPlayerInfo gMPlayInfo_BGM;
// this file's functions
static void RecordedOpponentHandleGetMonData(void); static void RecordedOpponentHandleGetMonData(void);
static void RecordedOpponentHandleGetRawMonData(void); static void RecordedOpponentHandleGetRawMonData(void);
static void RecordedOpponentHandleSetMonData(void); static void RecordedOpponentHandleSetMonData(void);
@@ -408,7 +405,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
static void CompleteOnInactiveTextPrinter(void) static void CompleteOnInactiveTextPrinter(void)
{ {
if (!IsTextPrinterActive(0)) if (!IsTextPrinterActive(B_WIN_MSG))
RecordedOpponentBufferExecCompleted(); RecordedOpponentBufferExecCompleted();
} }
@@ -541,7 +538,7 @@ static void RecordedOpponentHandleGetMonData(void)
monToCheck >>= 1; monToCheck >>= 1;
} }
} }
BtlController_EmitDataTransfer(1, size, monData); BtlController_EmitDataTransfer(BUFFER_B, size, monData);
RecordedOpponentBufferExecCompleted(); RecordedOpponentBufferExecCompleted();
} }
@@ -1398,7 +1395,7 @@ static void RecordedOpponentHandlePrintString(void)
gBattle_BG0_Y = 0; gBattle_BG0_Y = 0;
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]); stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId); BufferStringBattle(*stringId);
BattlePutTextOnWindow(gDisplayedStringBattle, 0); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter; gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
} }
@@ -1409,7 +1406,7 @@ static void RecordedOpponentHandlePrintSelectionString(void)
static void RecordedOpponentHandleChooseAction(void) static void RecordedOpponentHandleChooseAction(void)
{ {
BtlController_EmitTwoReturnValues(1, RecordedBattle_GetBattlerAction(gActiveBattler), 0); BtlController_EmitTwoReturnValues(BUFFER_B, RecordedBattle_GetBattlerAction(gActiveBattler), 0);
RecordedOpponentBufferExecCompleted(); RecordedOpponentBufferExecCompleted();
} }
@@ -1422,13 +1419,13 @@ static void RecordedOpponentHandleChooseMove(void)
{ {
if (gBattleTypeFlags & BATTLE_TYPE_PALACE) if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{ {
BtlController_EmitTwoReturnValues(1, 10, ChooseMoveAndTargetInBattlePalace()); BtlController_EmitTwoReturnValues(BUFFER_B, 10, ChooseMoveAndTargetInBattlePalace());
} }
else else
{ {
u8 moveId = RecordedBattle_GetBattlerAction(gActiveBattler); u8 moveId = RecordedBattle_GetBattlerAction(gActiveBattler);
u8 target = RecordedBattle_GetBattlerAction(gActiveBattler); u8 target = RecordedBattle_GetBattlerAction(gActiveBattler);
BtlController_EmitTwoReturnValues(1, 10, moveId | (target << 8)); BtlController_EmitTwoReturnValues(BUFFER_B, 10, moveId | (target << 8));
} }
RecordedOpponentBufferExecCompleted(); RecordedOpponentBufferExecCompleted();
@@ -1442,7 +1439,7 @@ static void RecordedOpponentHandleChooseItem(void)
static void RecordedOpponentHandleChoosePokemon(void) static void RecordedOpponentHandleChoosePokemon(void)
{ {
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = RecordedBattle_GetBattlerAction(gActiveBattler); *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = RecordedBattle_GetBattlerAction(gActiveBattler);
BtlController_EmitChosenMonReturnValue(1, *(gBattleStruct->monToSwitchIntoId + gActiveBattler), NULL); BtlController_EmitChosenMonReturnValue(BUFFER_B, *(gBattleStruct->monToSwitchIntoId + gActiveBattler), NULL);
RecordedOpponentBufferExecCompleted(); RecordedOpponentBufferExecCompleted();
} }
+8 -11
View File
@@ -25,9 +25,6 @@
#include "constants/battle_anim.h" #include "constants/battle_anim.h"
#include "constants/songs.h" #include "constants/songs.h"
extern struct MusicPlayerInfo gMPlayInfo_BGM;
// this file's functions
static void RecordedPlayerHandleGetMonData(void); static void RecordedPlayerHandleGetMonData(void);
static void RecordedPlayerHandleGetRawMonData(void); static void RecordedPlayerHandleGetRawMonData(void);
static void RecordedPlayerHandleSetMonData(void); static void RecordedPlayerHandleSetMonData(void);
@@ -390,7 +387,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
static void CompleteOnInactiveTextPrinter(void) static void CompleteOnInactiveTextPrinter(void)
{ {
if (!IsTextPrinterActive(0)) if (!IsTextPrinterActive(B_WIN_MSG))
RecordedPlayerBufferExecCompleted(); RecordedPlayerBufferExecCompleted();
} }
@@ -520,7 +517,7 @@ static void RecordedPlayerHandleGetMonData(void)
monToCheck >>= 1; monToCheck >>= 1;
} }
} }
BtlController_EmitDataTransfer(1, size, monData); BtlController_EmitDataTransfer(BUFFER_B, size, monData);
RecordedPlayerBufferExecCompleted(); RecordedPlayerBufferExecCompleted();
} }
@@ -1404,7 +1401,7 @@ static void RecordedPlayerHandlePrintString(void)
gBattle_BG0_Y = 0; gBattle_BG0_Y = 0;
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]); stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId); BufferStringBattle(*stringId);
BattlePutTextOnWindow(gDisplayedStringBattle, 0); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter; gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
} }
@@ -1417,7 +1414,7 @@ static void ChooseActionInBattlePalace(void)
{ {
if (gBattleCommunication[4] >= gBattlersCount / 2) if (gBattleCommunication[4] >= gBattlersCount / 2)
{ {
BtlController_EmitTwoReturnValues(1, RecordedBattle_GetBattlerAction(gActiveBattler), 0); BtlController_EmitTwoReturnValues(BUFFER_B, RecordedBattle_GetBattlerAction(gActiveBattler), 0);
RecordedPlayerBufferExecCompleted(); RecordedPlayerBufferExecCompleted();
} }
} }
@@ -1430,7 +1427,7 @@ static void RecordedPlayerHandleChooseAction(void)
} }
else else
{ {
BtlController_EmitTwoReturnValues(1, RecordedBattle_GetBattlerAction(gActiveBattler), 0); BtlController_EmitTwoReturnValues(BUFFER_B, RecordedBattle_GetBattlerAction(gActiveBattler), 0);
RecordedPlayerBufferExecCompleted(); RecordedPlayerBufferExecCompleted();
} }
} }
@@ -1444,13 +1441,13 @@ static void RecordedPlayerHandleChooseMove(void)
{ {
if (gBattleTypeFlags & BATTLE_TYPE_PALACE) if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{ {
BtlController_EmitTwoReturnValues(1, 10, ChooseMoveAndTargetInBattlePalace()); BtlController_EmitTwoReturnValues(BUFFER_B, 10, ChooseMoveAndTargetInBattlePalace());
} }
else else
{ {
u8 moveId = RecordedBattle_GetBattlerAction(gActiveBattler); u8 moveId = RecordedBattle_GetBattlerAction(gActiveBattler);
u8 target = RecordedBattle_GetBattlerAction(gActiveBattler); u8 target = RecordedBattle_GetBattlerAction(gActiveBattler);
BtlController_EmitTwoReturnValues(1, 10, moveId | (target << 8)); BtlController_EmitTwoReturnValues(BUFFER_B, 10, moveId | (target << 8));
} }
RecordedPlayerBufferExecCompleted(); RecordedPlayerBufferExecCompleted();
@@ -1464,7 +1461,7 @@ static void RecordedPlayerHandleChooseItem(void)
static void RecordedPlayerHandleChoosePokemon(void) static void RecordedPlayerHandleChoosePokemon(void)
{ {
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = RecordedBattle_GetBattlerAction(gActiveBattler); *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = RecordedBattle_GetBattlerAction(gActiveBattler);
BtlController_EmitChosenMonReturnValue(1, *(gBattleStruct->monToSwitchIntoId + gActiveBattler), NULL); BtlController_EmitChosenMonReturnValue(BUFFER_B, *(gBattleStruct->monToSwitchIntoId + gActiveBattler), NULL);
RecordedPlayerBufferExecCompleted(); RecordedPlayerBufferExecCompleted();
} }
+9 -10
View File
@@ -24,7 +24,6 @@
#include "constants/songs.h" #include "constants/songs.h"
#include "constants/rgb.h" #include "constants/rgb.h"
// this file's functions
static void SafariHandleGetMonData(void); static void SafariHandleGetMonData(void);
static void SafariHandleGetRawMonData(void); static void SafariHandleGetRawMonData(void);
static void SafariHandleSetMonData(void); static void SafariHandleSetMonData(void);
@@ -177,16 +176,16 @@ static void HandleInputChooseAction(void)
switch (gActionSelectionCursor[gActiveBattler]) switch (gActionSelectionCursor[gActiveBattler])
{ {
case 0: case 0:
BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_BALL, 0); BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SAFARI_BALL, 0);
break; break;
case 1: case 1:
BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_POKEBLOCK, 0); BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SAFARI_POKEBLOCK, 0);
break; break;
case 2: case 2:
BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_GO_NEAR, 0); BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SAFARI_GO_NEAR, 0);
break; break;
case 3: case 3:
BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_RUN, 0); BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SAFARI_RUN, 0);
break; break;
} }
SafariBufferExecCompleted(); SafariBufferExecCompleted();
@@ -241,7 +240,7 @@ static void CompleteOnBattlerSpriteCallbackDummy(void)
static void CompleteOnInactiveTextPrinter(void) static void CompleteOnInactiveTextPrinter(void)
{ {
if (!IsTextPrinterActive(0)) if (!IsTextPrinterActive(B_WIN_MSG))
SafariBufferExecCompleted(); SafariBufferExecCompleted();
} }
@@ -281,7 +280,7 @@ static void CompleteWhenChosePokeblock(void)
{ {
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{ {
BtlController_EmitOneReturnValue(1, gSpecialVar_ItemId); BtlController_EmitOneReturnValue(BUFFER_B, gSpecialVar_ItemId);
SafariBufferExecCompleted(); SafariBufferExecCompleted();
} }
} }
@@ -425,7 +424,7 @@ static void SafariHandlePrintString(void)
gBattle_BG0_Y = 0; gBattle_BG0_Y = 0;
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]); stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId); BufferStringBattle(*stringId);
BattlePutTextOnWindow(gDisplayedStringBattle, 0); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter; gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
} }
@@ -452,14 +451,14 @@ static void SafariHandleChooseAction(void)
s32 i; s32 i;
gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3; gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3;
BattlePutTextOnWindow(gText_SafariZoneMenu, 2); BattlePutTextOnWindow(gText_SafariZoneMenu, B_WIN_ACTION_MENU);
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
ActionSelectionDestroyCursorAt(i); ActionSelectionDestroyCursorAt(i);
ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillPkmnDo2); BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillPkmnDo2);
BattlePutTextOnWindow(gDisplayedStringBattle, 1); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_ACTION_PROMPT);
} }
static void SafariHandleYesNoBox(void) static void SafariHandleYesNoBox(void)
+11 -11
View File
@@ -196,7 +196,7 @@ static void WallyHandleActions(void)
if (--gBattleStruct->wallyWaitFrames == 0) if (--gBattleStruct->wallyWaitFrames == 0)
{ {
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
BtlController_EmitTwoReturnValues(1, B_ACTION_USE_MOVE, 0); BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_USE_MOVE, 0);
WallyBufferExecCompleted(); WallyBufferExecCompleted();
gBattleStruct->wallyBattleState++; gBattleStruct->wallyBattleState++;
gBattleStruct->wallyMovesState = 0; gBattleStruct->wallyMovesState = 0;
@@ -207,7 +207,7 @@ static void WallyHandleActions(void)
if (--gBattleStruct->wallyWaitFrames == 0) if (--gBattleStruct->wallyWaitFrames == 0)
{ {
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
BtlController_EmitTwoReturnValues(1, B_ACTION_USE_MOVE, 0); BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_USE_MOVE, 0);
WallyBufferExecCompleted(); WallyBufferExecCompleted();
gBattleStruct->wallyBattleState++; gBattleStruct->wallyBattleState++;
gBattleStruct->wallyMovesState = 0; gBattleStruct->wallyMovesState = 0;
@@ -217,7 +217,7 @@ static void WallyHandleActions(void)
case 3: case 3:
if (--gBattleStruct->wallyWaitFrames == 0) if (--gBattleStruct->wallyWaitFrames == 0)
{ {
BtlController_EmitTwoReturnValues(1, B_ACTION_WALLY_THROW, 0); BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_WALLY_THROW, 0);
WallyBufferExecCompleted(); WallyBufferExecCompleted();
gBattleStruct->wallyBattleState++; gBattleStruct->wallyBattleState++;
gBattleStruct->wallyMovesState = 0; gBattleStruct->wallyMovesState = 0;
@@ -238,7 +238,7 @@ static void WallyHandleActions(void)
if (--gBattleStruct->wallyWaitFrames == 0) if (--gBattleStruct->wallyWaitFrames == 0)
{ {
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
BtlController_EmitTwoReturnValues(1, B_ACTION_USE_ITEM, 0); BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_USE_ITEM, 0);
WallyBufferExecCompleted(); WallyBufferExecCompleted();
} }
break; break;
@@ -253,7 +253,7 @@ static void CompleteOnBattlerSpriteCallbackDummy(void)
static void CompleteOnInactiveTextPrinter(void) static void CompleteOnInactiveTextPrinter(void)
{ {
if (!IsTextPrinterActive(0)) if (!IsTextPrinterActive(B_WIN_MSG))
WallyBufferExecCompleted(); WallyBufferExecCompleted();
} }
@@ -278,7 +278,7 @@ static void CompleteOnChosenItem(void)
{ {
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{ {
BtlController_EmitOneReturnValue(1, gSpecialVar_ItemId); BtlController_EmitOneReturnValue(BUFFER_B, gSpecialVar_ItemId);
WallyBufferExecCompleted(); WallyBufferExecCompleted();
} }
} }
@@ -444,7 +444,7 @@ static void WallyHandleGetMonData(void)
monToCheck >>= 1; monToCheck >>= 1;
} }
} }
BtlController_EmitDataTransfer(1, size, monData); BtlController_EmitDataTransfer(BUFFER_B, size, monData);
WallyBufferExecCompleted(); WallyBufferExecCompleted();
} }
@@ -1178,7 +1178,7 @@ static void WallyHandlePrintString(void)
gBattle_BG0_Y = 0; gBattle_BG0_Y = 0;
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]); stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId); BufferStringBattle(*stringId);
BattlePutTextOnWindow(gDisplayedStringBattle, 0); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter; gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
} }
@@ -1205,14 +1205,14 @@ static void WallyHandleChooseAction(void)
s32 i; s32 i;
gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3; gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3;
BattlePutTextOnWindow(gText_BattleMenu, 2); BattlePutTextOnWindow(gText_BattleMenu, B_WIN_ACTION_MENU);
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
ActionSelectionDestroyCursorAt(i); ActionSelectionDestroyCursorAt(i);
ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillWallyDo); BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillWallyDo);
BattlePutTextOnWindow(gDisplayedStringBattle, 1); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_ACTION_PROMPT);
} }
static void WallyHandleYesNoBox(void) static void WallyHandleYesNoBox(void)
@@ -1241,7 +1241,7 @@ static void WallyHandleChooseMove(void)
if (--gBattleStruct->wallyMoveFrames == 0) if (--gBattleStruct->wallyMoveFrames == 0)
{ {
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
BtlController_EmitTwoReturnValues(1, 10, 0x100); BtlController_EmitTwoReturnValues(BUFFER_B, 10, 0x100);
WallyBufferExecCompleted(); WallyBufferExecCompleted();
} }
break; break;
+27 -21
View File
@@ -660,14 +660,14 @@ static void PrepareBufferDataTransfer(u8 bufferId, u8 *data, u16 size)
{ {
switch (bufferId) switch (bufferId)
{ {
case 0: case BUFFER_A:
for (i = 0; i < size; i++) for (i = 0; i < size; i++)
{ {
gBattleBufferA[gActiveBattler][i] = *data; gBattleBufferA[gActiveBattler][i] = *data;
data++; data++;
} }
break; break;
case 1: case BUFFER_B:
for (i = 0; i < size; i++) for (i = 0; i < size; i++)
{ {
gBattleBufferB[gActiveBattler][i] = *data; gBattleBufferB[gActiveBattler][i] = *data;
@@ -737,7 +737,7 @@ void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data)
static void Task_HandleSendLinkBuffersData(u8 taskId) static void Task_HandleSendLinkBuffersData(u8 taskId)
{ {
u16 var; u16 numPlayers;
u16 blockSize; u16 blockSize;
switch (gTasks[taskId].data[11]) switch (gTasks[taskId].data[11])
@@ -759,11 +759,11 @@ static void Task_HandleSendLinkBuffersData(u8 taskId)
else else
{ {
if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
var = 2; numPlayers = 2;
else 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()) if (IsLinkMaster())
{ {
@@ -964,10 +964,10 @@ void BtlController_EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubs
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
void BtlController_EmitReturnMonToBall(u8 bufferId, u8 arg1) void BtlController_EmitReturnMonToBall(u8 bufferId, bool8 skipAnim)
{ {
sBattleBuffersTransferData[0] = CONTROLLER_RETURNMONTOBALL; sBattleBuffersTransferData[0] = CONTROLLER_RETURNMONTOBALL;
sBattleBuffersTransferData[1] = arg1; sBattleBuffersTransferData[1] = skipAnim;
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
} }
@@ -1134,12 +1134,13 @@ void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringID)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct BattleMsgData) + 4); 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[0] = CONTROLLER_CHOOSEACTION;
sBattleBuffersTransferData[1] = arg1; sBattleBuffersTransferData[1] = action;
sBattleBuffersTransferData[2] = arg2; sBattleBuffersTransferData[2] = itemId;
sBattleBuffersTransferData[3] = (arg2 & 0xFF00) >> 8; sBattleBuffersTransferData[3] = (itemId & 0xFF00) >> 8;
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
} }
@@ -1177,7 +1178,7 @@ void BtlController_EmitChooseItem(u8 bufferId, u8 *arg1)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); 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; s32 i;
@@ -1186,7 +1187,7 @@ void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 slotId, u8 abili
sBattleBuffersTransferData[2] = slotId; sBattleBuffersTransferData[2] = slotId;
sBattleBuffersTransferData[3] = abilityId; sBattleBuffersTransferData[3] = abilityId;
for (i = 0; i < 3; i++) 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. 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); 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; s32 i;
sBattleBuffersTransferData[0] = CONTROLLER_PLAYBGM; sBattleBuffersTransferData[0] = CONTROLLER_PLAYBGM;
sBattleBuffersTransferData[1] = songId; sBattleBuffersTransferData[1] = songId;
sBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8; 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); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, songId + 3);
} }
@@ -1442,8 +1447,8 @@ void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* h
s32 i; s32 i;
sBattleBuffersTransferData[0] = CONTROLLER_DRAWPARTYSTATUSSUMMARY; sBattleBuffersTransferData[0] = CONTROLLER_DRAWPARTYSTATUSSUMMARY;
sBattleBuffersTransferData[1] = flags & 0x7F; sBattleBuffersTransferData[1] = flags & ~PARTY_SUMM_SKIP_DRAW_DELAY; // If true, skip player side
sBattleBuffersTransferData[2] = (flags & 0x80) >> 7; // If true, skip delay after drawing. True during intro sBattleBuffersTransferData[2] = (flags & PARTY_SUMM_SKIP_DRAW_DELAY) >> 7; // If true, skip delay after drawing. True during intro
sBattleBuffersTransferData[3] = CONTROLLER_DRAWPARTYSTATUSSUMMARY; sBattleBuffersTransferData[3] = CONTROLLER_DRAWPARTYSTATUSSUMMARY;
for (i = 0; i < (s32)(sizeof(struct HpAndStatus) * PARTY_SIZE); i++) for (i = 0; i < (s32)(sizeof(struct HpAndStatus) * PARTY_SIZE); i++)
sBattleBuffersTransferData[4 + i] = *(i + (u8*)(hpAndStatus)); sBattleBuffersTransferData[4 + i] = *(i + (u8*)(hpAndStatus));
@@ -1486,11 +1491,12 @@ void BtlController_EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); 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; bool8 record_ = record;
sBattleBuffersTransferData[0] = CONTROLLER_LINKSTANDBYMSG; sBattleBuffersTransferData[0] = CONTROLLER_LINKSTANDBYMSG;
sBattleBuffersTransferData[1] = arg1; sBattleBuffersTransferData[1] = mode;
if (record_) if (record_)
sBattleBuffersTransferData[3] = sBattleBuffersTransferData[2] = RecordedBattle_BufferNewBattlerData(&sBattleBuffersTransferData[4]); sBattleBuffersTransferData[3] = sBattleBuffersTransferData[2] = RecordedBattle_BufferNewBattlerData(&sBattleBuffersTransferData[4]);
+12 -15
View File
@@ -26,10 +26,6 @@
#include "constants/rgb.h" #include "constants/rgb.h"
#include "constants/battle_palace.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 gBattlePalaceNatureToMoveTarget[];
extern const u8 * const gBattleAnims_General[]; extern const u8 * const gBattleAnims_General[];
extern const u8 * const gBattleAnims_Special[]; extern const u8 * const gBattleAnims_Special[];
@@ -115,7 +111,7 @@ u16 ChooseMoveAndTargetInBattlePalace(void)
s32 i, var1, var2; s32 i, var1, var2;
s32 chosenMoveId = -1; s32 chosenMoveId = -1;
struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBattler][4]); 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; s32 percent = Random() % 100;
// Heavy variable re-use here makes this hard to read without defines // 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; 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; return TRUE;
} }
if (gBattleSpritesDataPtr->battlerData[activeBattler].behindSubstitute if (gBattleSpritesDataPtr->battlerData[activeBattler].behindSubstitute
@@ -593,7 +590,7 @@ void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId)
if (species == SPECIES_CASTFORM) if (species == SPECIES_CASTFORM)
{ {
paletteOffset = 0x100 + battlerId * 16; paletteOffset = 0x100 + battlerId * 16;
LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]); LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[CASTFORM_NORMAL]);
LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20); LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20);
} }
@@ -656,7 +653,7 @@ void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId)
if (species == SPECIES_CASTFORM) if (species == SPECIES_CASTFORM)
{ {
paletteOffset = 0x100 + battlerId * 16; paletteOffset = 0x100 + battlerId * 16;
LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]); LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[CASTFORM_NORMAL]);
LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20); LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20);
} }
@@ -895,7 +892,7 @@ void CopyBattleSpriteInvisibility(u8 battlerId)
gBattleSpritesDataPtr->battlerData[battlerId].invisible = gSprites[gBattlerSpriteIds[battlerId]].invisible; 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; u16 paletteOffset;
u32 personalityValue; u32 personalityValue;
@@ -903,7 +900,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
u8 position; u8 position;
const u32 *lzPaletteData; const u32 *lzPaletteData;
if (notTransform) if (castform)
{ {
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerAtk]], gBattleSpritesDataPtr->animationData->animArg); StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerAtk]], gBattleSpritesDataPtr->animationData->animArg);
paletteOffset = 0x100 + battlerAtk * 16; paletteOffset = 0x100 + battlerAtk * 16;
@@ -976,8 +973,8 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
if (targetSpecies == SPECIES_CASTFORM) if (targetSpecies == SPECIES_CASTFORM)
{ {
gSprites[gBattlerSpriteIds[battlerAtk]].anims = gMonFrontAnimsPtrTable[targetSpecies]; gSprites[gBattlerSpriteIds[battlerAtk]].anims = gMonFrontAnimsPtrTable[targetSpecies];
LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]); LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[CASTFORM_NORMAL]);
LoadPalette(gBattleStruct->castformPalette[0] + gBattleMonForms[battlerDef] * 16, paletteOffset, 32); LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerDef]], paletteOffset, 32);
} }
BlendPalette(paletteOffset, 16, 6, RGB_WHITE); BlendPalette(paletteOffset, 16, 6, RGB_WHITE);
@@ -1251,11 +1248,11 @@ void AllocateMonSpritesGfx(void)
gMonSpritesGfxPtr = NULL; gMonSpritesGfxPtr = NULL;
gMonSpritesGfxPtr = AllocZeroed(sizeof(*gMonSpritesGfxPtr)); 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++) 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]; *(gMonSpritesGfxPtr->templates + i) = gBattlerSpriteTemplates[i];
for (j = 0; j < 4; j++) for (j = 0; j < 4; j++)
+11 -12
View File
@@ -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; int i, j;
u8 battler = GetBattlerAtPosition(battlerPosition); u8 battler = GetBattlerAtPosition(battlerPosition);
int offset = tilesOffset; int offset = tilesOffset;
CpuCopy16(gMonSpritesGfxPtr->sprites.ptr[battlerPosition] + BG_SCREEN_SIZE * gBattleMonForms[battler], arg5, BG_SCREEN_SIZE); CpuCopy16(gMonSpritesGfxPtr->sprites.ptr[battlerPosition] + BG_SCREEN_SIZE * gBattleMonForms[battler], tiles, BG_SCREEN_SIZE);
LoadBgTiles(bgId, arg5, 0x1000, tilesOffset); LoadBgTiles(bgId, tiles, 0x1000, tilesOffset);
for (i = arg2; i < arg2 + 8; i++) 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++; offset++;
} }
} }
LoadBgTilemap(bgId, tilemap, BG_SCREEN_SIZE, 0);
LoadBgTilemap(bgId, arg6, 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; int i, j, offset;
DmaCopy16(3, gMonSpritesGfxPtr->sprites.ptr[battlerPosition] + BG_SCREEN_SIZE * arg3, (void *)BG_SCREEN_ADDR(0) + arg5, BG_SCREEN_SIZE); DmaCopy16(3, gMonSpritesGfxPtr->sprites.ptr[battlerPosition] + BG_SCREEN_SIZE * arg3, (void *)BG_SCREEN_ADDR(0) + arg5, BG_SCREEN_SIZE);
offset = (arg5 >> 5) - (arg7 << 9); 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++; offset++;
} }
} }
+318 -268
View File
File diff suppressed because it is too large Load Diff
+198 -198
View File
@@ -1480,8 +1480,7 @@ static const u8 sDummyWeirdStatusString[] = {EOS, EOS, EOS, EOS, EOS, EOS, EOS,
static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
{ {
// The corresponding WindowTemplate is gStandardBattleWindowTemplates[] within src/battle_bg.c [B_WIN_MSG] = {
{ // 0 Standard battle message
.fillValue = PIXEL_FILL(0xF), .fillValue = PIXEL_FILL(0xF),
.fontId = 1, .fontId = 1,
.x = 0, .x = 0,
@@ -1489,11 +1488,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 1, .speed = 1,
.fgColor = 1, .fgColor = TEXT_COLOR_WHITE,
.bgColor = 15, .bgColor = TEXT_DYNAMIC_COLOR_6,
.shadowColor = 6, .shadowColor = TEXT_COLOR_GREEN,
}, },
{ // 1 "What will (pokemon) do?" [B_WIN_ACTION_PROMPT] = {
.fillValue = PIXEL_FILL(0xF), .fillValue = PIXEL_FILL(0xF),
.fontId = 1, .fontId = 1,
.x = 1, .x = 1,
@@ -1501,11 +1500,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 1, .fgColor = TEXT_COLOR_WHITE,
.bgColor = 15, .bgColor = TEXT_DYNAMIC_COLOR_6,
.shadowColor = 6, .shadowColor = TEXT_COLOR_GREEN,
}, },
{ // 2 "Fight/Pokemon/Bag/Run" [B_WIN_ACTION_MENU] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 1, .fontId = 1,
.x = 0, .x = 0,
@@ -1513,11 +1512,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 3 Top left move [B_WIN_MOVE_NAME_1] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 7, .fontId = 7,
.x = 0, .x = 0,
@@ -1525,11 +1524,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 4 Top right move [B_WIN_MOVE_NAME_2] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 7, .fontId = 7,
.x = 0, .x = 0,
@@ -1537,11 +1536,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 5 Bottom left move [B_WIN_MOVE_NAME_3] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 7, .fontId = 7,
.x = 0, .x = 0,
@@ -1549,11 +1548,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 6 Bottom right move [B_WIN_MOVE_NAME_4] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 7, .fontId = 7,
.x = 0, .x = 0,
@@ -1561,11 +1560,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 7 "PP" [B_WIN_PP] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 7, .fontId = 7,
.x = 0, .x = 0,
@@ -1573,11 +1572,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 12, .fgColor = TEXT_DYNAMIC_COLOR_3,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 11, .shadowColor = TEXT_DYNAMIC_COLOR_2,
}, },
{ // 8 [B_WIN_DUMMY] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 1, .fontId = 1,
.x = 0, .x = 0,
@@ -1585,11 +1584,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 9 PP remaining [B_WIN_PP_REMAINING] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 1, .fontId = 1,
.x = 2, .x = 2,
@@ -1597,11 +1596,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 12, .fgColor = TEXT_DYNAMIC_COLOR_3,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 11, .shadowColor = TEXT_DYNAMIC_COLOR_2,
}, },
{ // 10 "type" [B_WIN_MOVE_TYPE] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 7, .fontId = 7,
.x = 0, .x = 0,
@@ -1609,11 +1608,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 11 "switch which?" [B_WIN_SWITCH_PROMPT] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 7, .fontId = 7,
.x = 0, .x = 0,
@@ -1621,11 +1620,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 12 "gText_BattleYesNoChoice" [B_WIN_YESNO] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 1, .fontId = 1,
.x = 0, .x = 0,
@@ -1633,11 +1632,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 13 [B_WIN_LEVEL_UP_BOX] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 1, .fontId = 1,
.x = 0, .x = 0,
@@ -1645,11 +1644,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 14 [B_WIN_LEVEL_UP_BANNER] = {
.fillValue = PIXEL_FILL(0), .fillValue = PIXEL_FILL(0),
.fontId = 1, .fontId = 1,
.x = 32, .x = 32,
@@ -1657,11 +1656,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 1, .fgColor = TEXT_COLOR_WHITE,
.bgColor = 0, .bgColor = TEXT_COLOR_TRANSPARENT,
.shadowColor = 2, .shadowColor = TEXT_COLOR_DARK_GRAY,
}, },
{ // 15 [B_WIN_VS_PLAYER] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 1, .fontId = 1,
.x = -1, .x = -1,
@@ -1669,11 +1668,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 16 [B_WIN_VS_OPPONENT] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 1, .fontId = 1,
.x = -1, .x = -1,
@@ -1681,11 +1680,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 17 [B_WIN_VS_MULTI_PLAYER_1] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 1, .fontId = 1,
.x = -1, .x = -1,
@@ -1693,11 +1692,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 18 [B_WIN_VS_MULTI_PLAYER_2] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 1, .fontId = 1,
.x = -1, .x = -1,
@@ -1705,11 +1704,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 19 [B_WIN_VS_MULTI_PLAYER_3] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 1, .fontId = 1,
.x = -1, .x = -1,
@@ -1717,11 +1716,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 20 [B_WIN_VS_MULTI_PLAYER_4] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 1, .fontId = 1,
.x = -1, .x = -1,
@@ -1729,11 +1728,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 21 [B_WIN_VS_OUTCOME_DRAW] = {
.fillValue = PIXEL_FILL(0), .fillValue = PIXEL_FILL(0),
.fontId = 1, .fontId = 1,
.x = -1, .x = -1,
@@ -1741,11 +1740,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 1, .fgColor = TEXT_COLOR_WHITE,
.bgColor = 0, .bgColor = TEXT_COLOR_TRANSPARENT,
.shadowColor = 6, .shadowColor = TEXT_COLOR_GREEN,
}, },
{ // 22 [B_WIN_VS_OUTCOME_LEFT] = {
.fillValue = PIXEL_FILL(0), .fillValue = PIXEL_FILL(0),
.fontId = 1, .fontId = 1,
.x = -1, .x = -1,
@@ -1753,11 +1752,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 1, .fgColor = TEXT_COLOR_WHITE,
.bgColor = 0, .bgColor = TEXT_COLOR_TRANSPARENT,
.shadowColor = 6, .shadowColor = TEXT_COLOR_GREEN,
}, },
{ // 23 [B_WIN_VS_OUTCOME_RIGHT] = {
.fillValue = PIXEL_FILL(0x0), .fillValue = PIXEL_FILL(0x0),
.fontId = 1, .fontId = 1,
.x = -1, .x = -1,
@@ -1765,15 +1764,15 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 1, .fgColor = TEXT_COLOR_WHITE,
.bgColor = 0, .bgColor = TEXT_COLOR_TRANSPARENT,
.shadowColor = 6, .shadowColor = TEXT_COLOR_GREEN,
}, },
}; };
static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
{ {
{ // 0 [B_WIN_MSG] = {
.fillValue = PIXEL_FILL(0xF), .fillValue = PIXEL_FILL(0xF),
.fontId = 1, .fontId = 1,
.x = 0, .x = 0,
@@ -1781,11 +1780,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 1, .speed = 1,
.fgColor = 1, .fgColor = TEXT_COLOR_WHITE,
.bgColor = 15, .bgColor = TEXT_DYNAMIC_COLOR_6,
.shadowColor = 6, .shadowColor = TEXT_COLOR_GREEN,
}, },
{ // 1 [B_WIN_ACTION_PROMPT] = {
.fillValue = PIXEL_FILL(0xF), .fillValue = PIXEL_FILL(0xF),
.fontId = 1, .fontId = 1,
.x = 1, .x = 1,
@@ -1793,11 +1792,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 1, .fgColor = TEXT_COLOR_WHITE,
.bgColor = 15, .bgColor = TEXT_DYNAMIC_COLOR_6,
.shadowColor = 6, .shadowColor = TEXT_COLOR_GREEN,
}, },
{ // 2 [B_WIN_ACTION_MENU] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 1, .fontId = 1,
.x = 0, .x = 0,
@@ -1805,11 +1804,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 3 [B_WIN_MOVE_NAME_1] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 7, .fontId = 7,
.x = 0, .x = 0,
@@ -1817,11 +1816,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 4 [B_WIN_MOVE_NAME_2] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 7, .fontId = 7,
.x = 0, .x = 0,
@@ -1829,11 +1828,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 5 [B_WIN_MOVE_NAME_3] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 7, .fontId = 7,
.x = 0, .x = 0,
@@ -1841,11 +1840,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 6 [B_WIN_MOVE_NAME_4] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 7, .fontId = 7,
.x = 0, .x = 0,
@@ -1853,11 +1852,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 7 [B_WIN_PP] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 7, .fontId = 7,
.x = 0, .x = 0,
@@ -1865,11 +1864,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 12, .fgColor = TEXT_DYNAMIC_COLOR_3,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 11, .shadowColor = TEXT_DYNAMIC_COLOR_2,
}, },
{ // 8 [B_WIN_DUMMY] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 1, .fontId = 1,
.x = 0, .x = 0,
@@ -1877,11 +1876,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 9 [B_WIN_PP_REMAINING] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 1, .fontId = 1,
.x = 2, .x = 2,
@@ -1889,11 +1888,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 12, .fgColor = TEXT_DYNAMIC_COLOR_3,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 11, .shadowColor = TEXT_DYNAMIC_COLOR_2,
}, },
{ // 10 [B_WIN_MOVE_TYPE] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 7, .fontId = 7,
.x = 0, .x = 0,
@@ -1901,11 +1900,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 11 [B_WIN_SWITCH_PROMPT] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 7, .fontId = 7,
.x = 0, .x = 0,
@@ -1913,11 +1912,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 12 [B_WIN_YESNO] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 1, .fontId = 1,
.x = 0, .x = 0,
@@ -1925,11 +1924,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 13 [B_WIN_LEVEL_UP_BOX] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 1, .fontId = 1,
.x = 0, .x = 0,
@@ -1937,11 +1936,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 14 [B_WIN_LEVEL_UP_BANNER] = {
.fillValue = PIXEL_FILL(0), .fillValue = PIXEL_FILL(0),
.fontId = 1, .fontId = 1,
.x = 32, .x = 32,
@@ -1949,11 +1948,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 1, .fgColor = TEXT_COLOR_WHITE,
.bgColor = 0, .bgColor = TEXT_COLOR_TRANSPARENT,
.shadowColor = 2, .shadowColor = TEXT_COLOR_DARK_GRAY,
}, },
{ // 15 [ARENA_WIN_PLAYER_NAME] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 1, .fontId = 1,
.x = -1, .x = -1,
@@ -1961,11 +1960,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 1, .fgColor = TEXT_COLOR_WHITE,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 16 [ARENA_WIN_VS] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 1, .fontId = 1,
.x = -1, .x = -1,
@@ -1973,11 +1972,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 17 [ARENA_WIN_OPPONENT_NAME] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 1, .fontId = 1,
.x = -1, .x = -1,
@@ -1985,11 +1984,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 18 [ARENA_WIN_MIND] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 1, .fontId = 1,
.x = -1, .x = -1,
@@ -1997,11 +1996,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 19 [ARENA_WIN_SKILL] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 1, .fontId = 1,
.x = -1, .x = -1,
@@ -2009,11 +2008,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 20 [ARENA_WIN_BODY] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 1, .fontId = 1,
.x = -1, .x = -1,
@@ -2021,11 +2020,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 21 [ARENA_WIN_JUDGEMENT_TITLE] = {
.fillValue = PIXEL_FILL(0xE), .fillValue = PIXEL_FILL(0xE),
.fontId = 1, .fontId = 1,
.x = -1, .x = -1,
@@ -2033,11 +2032,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 0, .speed = 0,
.fgColor = 13, .fgColor = TEXT_DYNAMIC_COLOR_4,
.bgColor = 14, .bgColor = TEXT_DYNAMIC_COLOR_5,
.shadowColor = 15, .shadowColor = TEXT_DYNAMIC_COLOR_6,
}, },
{ // 22 [ARENA_WIN_JUDGEMENT_TEXT] = {
.fillValue = PIXEL_FILL(0x1), .fillValue = PIXEL_FILL(0x1),
.fontId = 1, .fontId = 1,
.x = 0, .x = 0,
@@ -2045,15 +2044,16 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
.letterSpacing = 0, .letterSpacing = 0,
.lineSpacing = 0, .lineSpacing = 0,
.speed = 1, .speed = 1,
.fgColor = 2, .fgColor = TEXT_COLOR_DARK_GRAY,
.bgColor = 1, .bgColor = TEXT_COLOR_WHITE,
.shadowColor = 3, .shadowColor = TEXT_COLOR_LIGHT_GRAY,
}, },
}; };
static const struct BattleWindowText *const sBattleTextOnWindowsInfo[] = 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}; static const u8 sRecordedBattleTextSpeeds[] = {8, 4, 1, 0};
@@ -3054,9 +3054,9 @@ void BattlePutTextOnWindow(const u8 *text, u8 windowId)
struct TextPrinterTemplate printerTemplate; struct TextPrinterTemplate printerTemplate;
u8 speed; u8 speed;
if (windowId & 0x80) if (windowId & B_WIN_COPYTOVRAM)
{ {
windowId &= ~(0x80); windowId &= ~B_WIN_COPYTOVRAM;
copyToVram = FALSE; copyToVram = FALSE;
} }
else else
@@ -3086,17 +3086,17 @@ void BattlePutTextOnWindow(const u8 *text, u8 windowId)
printerTemplate.x = printerTemplate.currentX = alignX; printerTemplate.x = printerTemplate.currentX = alignX;
} }
if (windowId == 0x16) if (windowId == ARENA_WIN_JUDGEMENT_TEXT)
gTextFlags.useAlternateDownArrow = 0; gTextFlags.useAlternateDownArrow = FALSE;
else else
gTextFlags.useAlternateDownArrow = 1; gTextFlags.useAlternateDownArrow = TRUE;
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED)) if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED))
gTextFlags.autoScroll = 1; gTextFlags.autoScroll = TRUE;
else 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)) if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
speed = 1; speed = 1;
File diff suppressed because it is too large Load Diff
+28 -35
View File
@@ -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_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_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_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_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_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), [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(); TryUpdateGymLeaderRematchFromTrainer();
} }
static void sub_80B0828(void) static void DoBattlePyramidTrainerHillBattle(void)
{ {
if (InBattlePyramid()) if (InBattlePyramid())
CreateBattleStartTask(GetSpecialBattleTransition(10), 0); CreateBattleStartTask(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_PYRAMID), 0);
else else
CreateBattleStartTask(GetSpecialBattleTransition(11), 0); CreateBattleStartTask(GetSpecialBattleTransition(B_TRANSITION_GROUP_TRAINER_HILL), 0);
IncrementGameStat(GAME_STAT_TOTAL_BATTLES); IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
IncrementGameStat(GAME_STAT_TRAINER_BATTLES); IncrementGameStat(GAME_STAT_TRAINER_BATTLES);
@@ -853,16 +853,7 @@ static u8 GetTrainerBattleTransition(void)
return sBattleTransitionTable_Trainer[transitionType][1]; return sBattleTransitionTable_Trainer[transitionType][1];
} }
// 0: Battle Tower #define RANDOM_TRANSITION(table)(table[Random() % ARRAY_COUNT(table)])
// 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
u8 GetSpecialBattleTransition(s32 id) u8 GetSpecialBattleTransition(s32 id)
{ {
u16 var; u16 var;
@@ -873,35 +864,35 @@ u8 GetSpecialBattleTransition(s32 id)
{ {
switch (id) switch (id)
{ {
case 11: case B_TRANSITION_GROUP_TRAINER_HILL:
case 12: case B_TRANSITION_GROUP_SECRET_BASE:
case 13: case B_TRANSITION_GROUP_E_READER:
return B_TRANSITION_POKEBALLS_TRAIL; return B_TRANSITION_POKEBALLS_TRAIL;
case 10: case B_TRANSITION_GROUP_B_PYRAMID:
return sBattleTransitionTable_BattlePyramid[Random() % ARRAY_COUNT(sBattleTransitionTable_BattlePyramid)]; return RANDOM_TRANSITION(sBattleTransitionTable_BattlePyramid);
case 3: case B_TRANSITION_GROUP_B_DOME:
return sBattleTransitionTable_BattleDome[Random() % ARRAY_COUNT(sBattleTransitionTable_BattleDome)]; return RANDOM_TRANSITION(sBattleTransitionTable_BattleDome);
} }
if (VarGet(VAR_FRONTIER_BATTLE_MODE) != FRONTIER_MODE_LINK_MULTIS) if (VarGet(VAR_FRONTIER_BATTLE_MODE) != FRONTIER_MODE_LINK_MULTIS)
return sBattleTransitionTable_BattleFrontier[Random() % ARRAY_COUNT(sBattleTransitionTable_BattleFrontier)]; return RANDOM_TRANSITION(sBattleTransitionTable_BattleFrontier);
} }
else else
{ {
switch (id) switch (id)
{ {
case 11: case B_TRANSITION_GROUP_TRAINER_HILL:
case 12: case B_TRANSITION_GROUP_SECRET_BASE:
case 13: case B_TRANSITION_GROUP_E_READER:
return B_TRANSITION_BIG_POKEBALL; return B_TRANSITION_BIG_POKEBALL;
case 10: case B_TRANSITION_GROUP_B_PYRAMID:
return sBattleTransitionTable_BattlePyramid[Random() % ARRAY_COUNT(sBattleTransitionTable_BattlePyramid)]; return RANDOM_TRANSITION(sBattleTransitionTable_BattlePyramid);
case 3: case B_TRANSITION_GROUP_B_DOME:
return sBattleTransitionTable_BattleDome[Random() % ARRAY_COUNT(sBattleTransitionTable_BattleDome)]; return RANDOM_TRANSITION(sBattleTransitionTable_BattleDome);
} }
if (VarGet(VAR_FRONTIER_BATTLE_MODE) != FRONTIER_MODE_LINK_MULTIS) 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] var = gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum * 2 + 0]
@@ -1319,7 +1310,7 @@ void BattleSetup_StartTrainerBattle(void)
gMain.savedCallback = CB2_EndTrainerBattle; gMain.savedCallback = CB2_EndTrainerBattle;
if (InBattlePyramid() || InTrainerHillChallenge()) if (InBattlePyramid() || InTrainerHillChallenge())
sub_80B0828(); DoBattlePyramidTrainerHillBattle();
else else
DoTrainerBattle(); DoTrainerBattle();
@@ -1575,12 +1566,14 @@ static s32 TrainerIdToRematchTableId(const struct RematchTrainer *table, u16 tra
return -1; 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) if (rematchTableId >= REMATCH_ELITE_FOUR_ENTRIES)
return TRUE; return TRUE;
else if (rematchTableId == REMATCH_WALLY_3) else if (rematchTableId == REMATCH_WALLY_VR)
return (FlagGet(FLAG_DEFEATED_WALLY_VICTORY_ROAD) == FALSE); return !FlagGet(FLAG_DEFEATED_WALLY_VICTORY_ROAD);
else else
return FALSE; return FALSE;
} }
@@ -1609,7 +1602,7 @@ static bool32 UpdateRandomTrainerRematches(const struct RematchTrainer *table, u
for (i = 0; i <= REMATCH_SPECIAL_TRAINER_START; i++) 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) if (gSaveBlock1Ptr->trainerRematches[i] != 0)
{ {
+10 -10
View File
@@ -2025,7 +2025,7 @@ void DoSpecialTrainerBattle(void)
} }
CreateTask(Task_StartBattleAfterTransition, 1); CreateTask(Task_StartBattleAfterTransition, 1);
PlayMapChosenOrBattleBGM(0); PlayMapChosenOrBattleBGM(0);
BattleTransition_StartOnField(GetSpecialBattleTransition(0)); BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_TOWER));
break; break;
case SPECIAL_BATTLE_SECRET_BASE: case SPECIAL_BATTLE_SECRET_BASE:
for (i = 0; i < PARTY_SIZE; i++) for (i = 0; i < PARTY_SIZE; i++)
@@ -2035,7 +2035,7 @@ void DoSpecialTrainerBattle(void)
} }
CreateTask(Task_StartBattleAfterTransition, 1); CreateTask(Task_StartBattleAfterTransition, 1);
PlayMapChosenOrBattleBGM(0); PlayMapChosenOrBattleBGM(0);
BattleTransition_StartOnField(GetSpecialBattleTransition(12)); BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_SECRET_BASE));
break; break;
case SPECIAL_BATTLE_EREADER: case SPECIAL_BATTLE_EREADER:
ZeroEnemyPartyMons(); ZeroEnemyPartyMons();
@@ -2045,7 +2045,7 @@ void DoSpecialTrainerBattle(void)
gTrainerBattleOpponent_A = 0; gTrainerBattleOpponent_A = 0;
CreateTask(Task_StartBattleAfterTransition, 1); CreateTask(Task_StartBattleAfterTransition, 1);
PlayMapChosenOrBattleBGM(0); PlayMapChosenOrBattleBGM(0);
BattleTransition_StartOnField(GetSpecialBattleTransition(13)); BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_E_READER));
break; break;
case SPECIAL_BATTLE_DOME: case SPECIAL_BATTLE_DOME:
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_DOME; gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_DOME;
@@ -2055,7 +2055,7 @@ void DoSpecialTrainerBattle(void)
FillFrontierTrainerParty(DOME_BATTLE_PARTY_SIZE); FillFrontierTrainerParty(DOME_BATTLE_PARTY_SIZE);
CreateTask(Task_StartBattleAfterTransition, 1); CreateTask(Task_StartBattleAfterTransition, 1);
CreateTask_PlayMapChosenOrBattleBGM(0); CreateTask_PlayMapChosenOrBattleBGM(0);
BattleTransition_StartOnField(GetSpecialBattleTransition(3)); BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_DOME));
break; break;
case SPECIAL_BATTLE_PALACE: case SPECIAL_BATTLE_PALACE:
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_PALACE; gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_PALACE;
@@ -2067,7 +2067,7 @@ void DoSpecialTrainerBattle(void)
FillTentTrainerParty(FRONTIER_PARTY_SIZE); FillTentTrainerParty(FRONTIER_PARTY_SIZE);
CreateTask(Task_StartBattleAfterTransition, 1); CreateTask(Task_StartBattleAfterTransition, 1);
PlayMapChosenOrBattleBGM(0); PlayMapChosenOrBattleBGM(0);
BattleTransition_StartOnField(GetSpecialBattleTransition(4)); BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_PALACE));
break; break;
case SPECIAL_BATTLE_ARENA: case SPECIAL_BATTLE_ARENA:
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_ARENA; gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_ARENA;
@@ -2077,7 +2077,7 @@ void DoSpecialTrainerBattle(void)
FillTentTrainerParty(FRONTIER_PARTY_SIZE); FillTentTrainerParty(FRONTIER_PARTY_SIZE);
CreateTask(Task_StartBattleAfterTransition, 1); CreateTask(Task_StartBattleAfterTransition, 1);
PlayMapChosenOrBattleBGM(0); PlayMapChosenOrBattleBGM(0);
BattleTransition_StartOnField(GetSpecialBattleTransition(5)); BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_ARENA));
break; break;
case SPECIAL_BATTLE_FACTORY: case SPECIAL_BATTLE_FACTORY:
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_FACTORY; gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_FACTORY;
@@ -2086,28 +2086,28 @@ void DoSpecialTrainerBattle(void)
FillFactoryTrainerParty(); FillFactoryTrainerParty();
CreateTask(Task_StartBattleAfterTransition, 1); CreateTask(Task_StartBattleAfterTransition, 1);
PlayMapChosenOrBattleBGM(0); PlayMapChosenOrBattleBGM(0);
BattleTransition_StartOnField(GetSpecialBattleTransition(6)); BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_FACTORY));
break; break;
case SPECIAL_BATTLE_PIKE_SINGLE: case SPECIAL_BATTLE_PIKE_SINGLE:
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_BATTLE_TOWER; gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_BATTLE_TOWER;
FillFrontierTrainerParty(FRONTIER_PARTY_SIZE); FillFrontierTrainerParty(FRONTIER_PARTY_SIZE);
CreateTask(Task_StartBattleAfterTransition, 1); CreateTask(Task_StartBattleAfterTransition, 1);
PlayMapChosenOrBattleBGM(0); PlayMapChosenOrBattleBGM(0);
BattleTransition_StartOnField(GetSpecialBattleTransition(7)); BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_PIKE));
break; break;
case SPECIAL_BATTLE_PYRAMID: case SPECIAL_BATTLE_PYRAMID:
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_PYRAMID; gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_PYRAMID;
FillFrontierTrainerParty(FRONTIER_PARTY_SIZE); FillFrontierTrainerParty(FRONTIER_PARTY_SIZE);
CreateTask(Task_StartBattleAfterTransition, 1); CreateTask(Task_StartBattleAfterTransition, 1);
PlayMapChosenOrBattleBGM(0); PlayMapChosenOrBattleBGM(0);
BattleTransition_StartOnField(GetSpecialBattleTransition(10)); BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_PYRAMID));
break; break;
case SPECIAL_BATTLE_PIKE_DOUBLE: case SPECIAL_BATTLE_PIKE_DOUBLE:
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_TWO_OPPONENTS; gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_TWO_OPPONENTS;
FillFrontierTrainersParties(1); FillFrontierTrainersParties(1);
CreateTask(Task_StartBattleAfterTransition, 1); CreateTask(Task_StartBattleAfterTransition, 1);
PlayMapChosenOrBattleBGM(0); PlayMapChosenOrBattleBGM(0);
BattleTransition_StartOnField(GetSpecialBattleTransition(7)); BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_PIKE));
break; break;
case SPECIAL_BATTLE_STEVEN: case SPECIAL_BATTLE_STEVEN:
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_MULTI | BATTLE_TYPE_INGAME_PARTNER; gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_MULTI | BATTLE_TYPE_INGAME_PARTNER;
+198 -298
View File
File diff suppressed because it is too large Load Diff
+7 -10
View File
@@ -34,8 +34,8 @@ void AllocateBattleResources(void)
gLinkBattleSendBuffer = AllocZeroed(BATTLE_BUFFER_LINK_SIZE); gLinkBattleSendBuffer = AllocZeroed(BATTLE_BUFFER_LINK_SIZE);
gLinkBattleRecvBuffer = AllocZeroed(BATTLE_BUFFER_LINK_SIZE); gLinkBattleRecvBuffer = AllocZeroed(BATTLE_BUFFER_LINK_SIZE);
gUnknown_0202305C = AllocZeroed(0x2000); gBattleAnimBgTileBuffer = AllocZeroed(0x2000);
gUnknown_02023060 = AllocZeroed(0x1000); gBattleAnimBgTilemapBuffer = AllocZeroed(0x1000);
if (gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE) if (gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE)
{ {
@@ -66,8 +66,8 @@ void FreeBattleResources(void)
FREE_AND_SET_NULL(gLinkBattleSendBuffer); FREE_AND_SET_NULL(gLinkBattleSendBuffer);
FREE_AND_SET_NULL(gLinkBattleRecvBuffer); FREE_AND_SET_NULL(gLinkBattleRecvBuffer);
FREE_AND_SET_NULL(gUnknown_0202305C); FREE_AND_SET_NULL(gBattleAnimBgTileBuffer);
FREE_AND_SET_NULL(gUnknown_02023060); FREE_AND_SET_NULL(gBattleAnimBgTilemapBuffer);
} }
} }
@@ -108,16 +108,13 @@ void SwitchPartyOrderInGameMulti(u8 battlerId, u8 arg1)
if (GetBattlerSide(battlerId) != B_SIDE_OPPONENT) if (GetBattlerSide(battlerId) != B_SIDE_OPPONENT)
{ {
s32 i; s32 i;
// gBattleStruct->field_60[0][i]
for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); 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)); SwitchPartyMonSlots(GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[battlerId]), GetPartyIdFromBattlePartyId(arg1));
for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++) 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) if (effect == 2)
{ {
gActiveBattler = 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); MarkBattlerForControllerExec(gActiveBattler);
} }
+6 -6
View File
@@ -1136,9 +1136,9 @@ static void AllocContestResources(void)
gContestResources->contestBgTilemaps[3] = AllocZeroed(0x1000); gContestResources->contestBgTilemaps[3] = AllocZeroed(0x1000);
gContestResources->boxBlinkTiles1 = AllocZeroed(0x800); gContestResources->boxBlinkTiles1 = AllocZeroed(0x800);
gContestResources->boxBlinkTiles2 = AllocZeroed(0x800); gContestResources->boxBlinkTiles2 = AllocZeroed(0x800);
gContestResources->field_3c = AllocZeroed(0x2000); gContestResources->animBgTileBuffer = AllocZeroed(0x2000);
gUnknown_0202305C = gContestResources->field_3c; gBattleAnimBgTileBuffer = gContestResources->animBgTileBuffer;
gUnknown_02023060 = gContestResources->contestBgTilemaps[1]; gBattleAnimBgTilemapBuffer = gContestResources->contestBgTilemaps[1];
} }
static void FreeContestResources(void) static void FreeContestResources(void)
@@ -1158,10 +1158,10 @@ static void FreeContestResources(void)
FREE_AND_SET_NULL(gContestResources->contestBgTilemaps[3]); FREE_AND_SET_NULL(gContestResources->contestBgTilemaps[3]);
FREE_AND_SET_NULL(gContestResources->boxBlinkTiles1); FREE_AND_SET_NULL(gContestResources->boxBlinkTiles1);
FREE_AND_SET_NULL(gContestResources->boxBlinkTiles2); FREE_AND_SET_NULL(gContestResources->boxBlinkTiles2);
FREE_AND_SET_NULL(gContestResources->field_3c); FREE_AND_SET_NULL(gContestResources->animBgTileBuffer);
FREE_AND_SET_NULL(gContestResources); FREE_AND_SET_NULL(gContestResources);
gUnknown_0202305C = NULL; gBattleAnimBgTileBuffer = NULL;
gUnknown_02023060 = NULL; gBattleAnimBgTilemapBuffer = NULL;
} }
void CB2_StartContest(void) void CB2_StartContest(void)
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -454,7 +454,7 @@ const u8 *const gMatchCallFlavorTexts[REMATCH_TABLE_ENTRIES][CHECK_PAGE_ENTRY_CO
[REMATCH_TRENT] = MCFLAVOR(Hiker_Trent), [REMATCH_TRENT] = MCFLAVOR(Hiker_Trent),
[REMATCH_SAWYER] = MCFLAVOR(Hiker_Sawyer), [REMATCH_SAWYER] = MCFLAVOR(Hiker_Sawyer),
[REMATCH_KIRA_AND_DAN] = MCFLAVOR(YoungCouple_LoisAndHal), [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_ROXANNE] = MCFLAVOR(RockinWhiz_Roxanne),
[REMATCH_BRAWLY] = MCFLAVOR(TheBigHit_Brawly), [REMATCH_BRAWLY] = MCFLAVOR(TheBigHit_Brawly),
[REMATCH_WATTSON] = MCFLAVOR(SwellShock_Wattson), [REMATCH_WATTSON] = MCFLAVOR(SwellShock_Wattson),
+14 -14
View File
@@ -661,7 +661,7 @@ static void Task_EvolutionScene(u8 taskId)
if (!gPaletteFade.active) if (!gPaletteFade.active)
{ {
StringExpandPlaceholders(gStringVar4, gText_PkmnIsEvolving); StringExpandPlaceholders(gStringVar4, gText_PkmnIsEvolving);
BattlePutTextOnWindow(gStringVar4, 0); BattlePutTextOnWindow(gStringVar4, B_WIN_MSG);
gTasks[taskId].tState++; gTasks[taskId].tState++;
} }
break; break;
@@ -758,7 +758,7 @@ static void Task_EvolutionScene(u8 taskId)
if (IsCryFinished()) if (IsCryFinished())
{ {
StringExpandPlaceholders(gStringVar4, gText_CongratsPkmnEvolved); StringExpandPlaceholders(gStringVar4, gText_CongratsPkmnEvolved);
BattlePutTextOnWindow(gStringVar4, 0); BattlePutTextOnWindow(gStringVar4, B_WIN_MSG);
PlayBGM(MUS_EVOLVED); PlayBGM(MUS_EVOLVED);
gTasks[taskId].tState++; gTasks[taskId].tState++;
SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskId].tPostEvoSpecies)); SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskId].tPostEvoSpecies));
@@ -845,7 +845,7 @@ static void Task_EvolutionScene(u8 taskId)
else // Fire Red leftover probably else // Fire Red leftover probably
StringExpandPlaceholders(gStringVar4, gText_PkmnStoppedEvolving); StringExpandPlaceholders(gStringVar4, gText_PkmnStoppedEvolving);
BattlePutTextOnWindow(gStringVar4, 0); BattlePutTextOnWindow(gStringVar4, B_WIN_MSG);
gTasks[taskId].tEvoWasStopped = TRUE; gTasks[taskId].tEvoWasStopped = TRUE;
gTasks[taskId].tState = EVOSTATE_TRY_LEARN_MOVE; gTasks[taskId].tState = EVOSTATE_TRY_LEARN_MOVE;
} }
@@ -856,7 +856,7 @@ static void Task_EvolutionScene(u8 taskId)
BufferMoveToLearnIntoBattleTextBuff2(); BufferMoveToLearnIntoBattleTextBuff2();
PlayFanfare(MUS_LEVEL_UP); PlayFanfare(MUS_LEVEL_UP);
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNLEARNEDMOVE - BATTLESTRINGS_ID_ADDER]); 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].tLearnsFirstMove = 0x40; // re-used as a counter
gTasks[taskId].tState++; gTasks[taskId].tState++;
} }
@@ -874,7 +874,7 @@ static void Task_EvolutionScene(u8 taskId)
// "{mon} is trying to learn {move}" // "{mon} is trying to learn {move}"
BufferMoveToLearnIntoBattleTextBuff2(); BufferMoveToLearnIntoBattleTextBuff2();
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE1 - BATTLESTRINGS_ID_ADDER]); BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE1 - BATTLESTRINGS_ID_ADDER]);
BattlePutTextOnWindow(gDisplayedStringBattle, 0); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gTasks[taskId].tLearnMoveState++; gTasks[taskId].tLearnMoveState++;
} }
break; break;
@@ -883,7 +883,7 @@ static void Task_EvolutionScene(u8 taskId)
{ {
// "But, {mon} can't learn more than four moves" // "But, {mon} can't learn more than four moves"
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE2 - BATTLESTRINGS_ID_ADDER]); BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE2 - BATTLESTRINGS_ID_ADDER]);
BattlePutTextOnWindow(gDisplayedStringBattle, 0); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gTasks[taskId].tLearnMoveState++; gTasks[taskId].tLearnMoveState++;
} }
break; break;
@@ -892,7 +892,7 @@ static void Task_EvolutionScene(u8 taskId)
{ {
// "Delete a move to make room for {move}?" // "Delete a move to make room for {move}?"
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE3 - BATTLESTRINGS_ID_ADDER]); BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE3 - BATTLESTRINGS_ID_ADDER]);
BattlePutTextOnWindow(gDisplayedStringBattle, 0); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gTasks[taskId].tLearnMoveYesState = MVSTATE_SHOW_MOVE_SELECT; gTasks[taskId].tLearnMoveYesState = MVSTATE_SHOW_MOVE_SELECT;
gTasks[taskId].tLearnMoveNoState = MVSTATE_ASK_CANCEL; gTasks[taskId].tLearnMoveNoState = MVSTATE_ASK_CANCEL;
gTasks[taskId].tLearnMoveState++; gTasks[taskId].tLearnMoveState++;
@@ -901,7 +901,7 @@ static void Task_EvolutionScene(u8 taskId)
if (!IsTextPrinterActive(0) && !IsSEPlaying()) if (!IsTextPrinterActive(0) && !IsSEPlaying())
{ {
HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0); HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0);
BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xC); BattlePutTextOnWindow(gText_BattleYesNoChoice, B_WIN_YESNO);
gTasks[taskId].tLearnMoveState++; gTasks[taskId].tLearnMoveState++;
sEvoCursorPos = 0; sEvoCursorPos = 0;
BattleCreateYesNoCursorAt(0); BattleCreateYesNoCursorAt(0);
@@ -980,7 +980,7 @@ static void Task_EvolutionScene(u8 taskId)
{ {
// Can't forget HMs // Can't forget HMs
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_HMMOVESCANTBEFORGOTTEN - BATTLESTRINGS_ID_ADDER]); BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_HMMOVESCANTBEFORGOTTEN - BATTLESTRINGS_ID_ADDER]);
BattlePutTextOnWindow(gDisplayedStringBattle, 0); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gTasks[taskId].tLearnMoveState = MVSTATE_RETRY_AFTER_HM; gTasks[taskId].tLearnMoveState = MVSTATE_RETRY_AFTER_HM;
} }
else else
@@ -997,14 +997,14 @@ static void Task_EvolutionScene(u8 taskId)
break; break;
case MVSTATE_FORGET_MSG_1: case MVSTATE_FORGET_MSG_1:
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_123POOF - BATTLESTRINGS_ID_ADDER]); BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_123POOF - BATTLESTRINGS_ID_ADDER]);
BattlePutTextOnWindow(gDisplayedStringBattle, 0); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gTasks[taskId].tLearnMoveState++; gTasks[taskId].tLearnMoveState++;
break; break;
case MVSTATE_FORGET_MSG_2: case MVSTATE_FORGET_MSG_2:
if (!IsTextPrinterActive(0) && !IsSEPlaying()) if (!IsTextPrinterActive(0) && !IsSEPlaying())
{ {
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNFORGOTMOVE - BATTLESTRINGS_ID_ADDER]); BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNFORGOTMOVE - BATTLESTRINGS_ID_ADDER]);
BattlePutTextOnWindow(gDisplayedStringBattle, 0); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gTasks[taskId].tLearnMoveState++; gTasks[taskId].tLearnMoveState++;
} }
break; break;
@@ -1012,20 +1012,20 @@ static void Task_EvolutionScene(u8 taskId)
if (!IsTextPrinterActive(0) && !IsSEPlaying()) if (!IsTextPrinterActive(0) && !IsSEPlaying())
{ {
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_ANDELLIPSIS - BATTLESTRINGS_ID_ADDER]); BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_ANDELLIPSIS - BATTLESTRINGS_ID_ADDER]);
BattlePutTextOnWindow(gDisplayedStringBattle, 0); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gTasks[taskId].tState = EVOSTATE_LEARNED_MOVE; gTasks[taskId].tState = EVOSTATE_LEARNED_MOVE;
} }
break; break;
case MVSTATE_ASK_CANCEL: case MVSTATE_ASK_CANCEL:
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_STOPLEARNINGMOVE - BATTLESTRINGS_ID_ADDER]); BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_STOPLEARNINGMOVE - BATTLESTRINGS_ID_ADDER]);
BattlePutTextOnWindow(gDisplayedStringBattle, 0); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gTasks[taskId].tLearnMoveYesState = MVSTATE_CANCEL; gTasks[taskId].tLearnMoveYesState = MVSTATE_CANCEL;
gTasks[taskId].tLearnMoveNoState = MVSTATE_INTRO_MSG_1; gTasks[taskId].tLearnMoveNoState = MVSTATE_INTRO_MSG_1;
gTasks[taskId].tLearnMoveState = MVSTATE_PRINT_YES_NO; gTasks[taskId].tLearnMoveState = MVSTATE_PRINT_YES_NO;
break; break;
case MVSTATE_CANCEL: case MVSTATE_CANCEL:
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_DIDNOTLEARNMOVE - BATTLESTRINGS_ID_ADDER]); BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_DIDNOTLEARNMOVE - BATTLESTRINGS_ID_ADDER]);
BattlePutTextOnWindow(gDisplayedStringBattle, 0); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
gTasks[taskId].tState = EVOSTATE_TRY_LEARN_MOVE; gTasks[taskId].tState = EVOSTATE_TRY_LEARN_MOVE;
break; break;
case MVSTATE_RETRY_AFTER_HM: case MVSTATE_RETRY_AFTER_HM:
-2
View File
@@ -64,8 +64,6 @@ static EWRAM_DATA u32 sHofFadePalettes = 0;
static EWRAM_DATA struct HallofFameTeam *sHofMonPtr = NULL; static EWRAM_DATA struct HallofFameTeam *sHofMonPtr = NULL;
static EWRAM_DATA struct HofGfx *sHofGfxPtr = NULL; static EWRAM_DATA struct HofGfx *sHofGfxPtr = NULL;
extern struct MusicPlayerInfo gMPlayInfo_BGM;
static void ClearVramOamPltt_LoadHofPal(void); static void ClearVramOamPltt_LoadHofPal(void);
static void LoadHofGfx(void); static void LoadHofGfx(void);
static void InitHofBgs(void); static void InitHofBgs(void);
+5 -5
View File
@@ -944,7 +944,7 @@ static void DisplayPartyPokemonDataToTeachMove(u8 slot, u16 item, u8 tutor)
static void DisplayPartyPokemonDataForMultiBattle(u8 slot) static void DisplayPartyPokemonDataForMultiBattle(u8 slot)
{ {
struct PartyMenuBox *menuBox = &sPartyMenuBoxes[slot]; struct PartyMenuBox *menuBox = &sPartyMenuBoxes[slot];
u8 actualSlot = slot - (3); u8 actualSlot = slot - MULTI_PARTY_SIZE;
if (gMultiPartnerParty[actualSlot].species == SPECIES_NONE) if (gMultiPartnerParty[actualSlot].species == SPECIES_NONE)
{ {
@@ -5840,7 +5840,7 @@ static void BufferBattlePartyOrder(u8 *partyBattleOrder, u8 flankId)
void BufferBattlePartyCurrentOrderBySide(u8 battlerId, 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 // 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()) if (IsMultiBattle())
{ {
partyBattleOrder = gBattleStruct->field_60[battlerId]; partyBattleOrder = gBattleStruct->battlerPartyOrders[battlerId];
for (i = j = 0; i < 3; j++, i++) for (i = j = 0; i < PARTY_SIZE / 2; j++, i++)
{ {
partyIds[j] = partyBattleOrder[i] >> 4; partyIds[j] = partyBattleOrder[i] >> 4;
j++; j++;
@@ -6103,7 +6103,7 @@ static void SlideMultiPartyMenuBoxSpritesOneStep(u8 taskId)
s16 *data = gTasks[taskId].data; s16 *data = gTasks[taskId].data;
u8 i; 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) if (gMultiPartnerParty[i - MULTI_PARTY_SIZE].species != SPECIES_NONE)
{ {
+2 -5
View File
@@ -15,9 +15,6 @@
#include "data.h" #include "data.h"
#include "constants/songs.h" #include "constants/songs.h"
extern struct MusicPlayerInfo gMPlayInfo_BGM;
// this file's functions
static void Task_DoPokeballSendOutAnim(u8 taskId); static void Task_DoPokeballSendOutAnim(u8 taskId);
static void SpriteCB_PlayerMonSendOut_1(struct Sprite *sprite); static void SpriteCB_PlayerMonSendOut_1(struct Sprite *sprite);
static void SpriteCB_PlayerMonSendOut_2(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); StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[sprite->sBattler]], BATTLER_AFFINE_EMERGE);
if (GetBattlerSide(sprite->sBattler) == B_SIDE_OPPONENT) if (GetBattlerSide(sprite->sBattler) == B_SIDE_OPPONENT)
gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = SpriteCb_OpponentMonFromBall; gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = SpriteCB_OpponentMonFromBall;
else else
gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = SpriteCb_PlayerMonFromBall; gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = SpriteCB_PlayerMonFromBall;
AnimateSprite(&gSprites[gBattlerSpriteIds[sprite->sBattler]]); AnimateSprite(&gSprites[gBattlerSpriteIds[sprite->sBattler]]);
gSprites[gBattlerSpriteIds[sprite->sBattler]].data[1] = 0x1000; gSprites[gBattlerSpriteIds[sprite->sBattler]].data[1] = 0x1000;
-2
View File
@@ -116,8 +116,6 @@ struct PokeblockFeed
u8 unused4; u8 unused4;
}; };
extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern const u16 gUnknown_0860F074[]; extern const u16 gUnknown_0860F074[];
static void HandleInitBackgrounds(void); static void HandleInitBackgrounds(void);
-2
View File
@@ -148,8 +148,6 @@ struct SearchMenuItem
u8 selectionBgWidth; u8 selectionBgWidth;
}; };
extern struct MusicPlayerInfo gMPlayInfo_BGM;
struct PokedexListItem struct PokedexListItem
{ {
u16 dexNum; u16 dexNum;
+6 -9
View File
@@ -38,6 +38,7 @@
#include "constants/abilities.h" #include "constants/abilities.h"
#include "constants/battle_frontier.h" #include "constants/battle_frontier.h"
#include "constants/battle_move_effects.h" #include "constants/battle_move_effects.h"
#include "constants/battle_script_commands.h"
#include "constants/hold_effects.h" #include "constants/hold_effects.h"
#include "constants/item_effects.h" #include "constants/item_effects.h"
#include "constants/items.h" #include "constants/items.h"
@@ -3103,7 +3104,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if (!typeOverride) if (!typeOverride)
type = gBattleMoves[move].type; type = gBattleMoves[move].type;
else else
type = typeOverride & 0x3F; type = typeOverride & DYNAMIC_TYPE_MASK;
attack = attacker->attack; attack = attacker->attack;
defense = defender->defense; defense = defender->defense;
@@ -5041,7 +5042,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
temp2 = gActiveBattler; temp2 = gActiveBattler;
gActiveBattler = battlerId; gActiveBattler = battlerId;
BtlController_EmitGetMonData(0, REQUEST_ALL_BATTLE, 0); BtlController_EmitGetMonData(BUFFER_A, REQUEST_ALL_BATTLE, 0);
MarkBattlerForControllerExec(gActiveBattler); MarkBattlerForControllerExec(gActiveBattler);
gActiveBattler = temp2; gActiveBattler = temp2;
} }
@@ -5077,9 +5078,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
SetMonData(mon, MON_DATA_PP1 + temp2, &dataUnsigned); SetMonData(mon, MON_DATA_PP1 + temp2, &dataUnsigned);
// Heal battler PP too (if applicable) // Heal battler PP too (if applicable)
if (gMain.inBattle if (gMain.inBattle && battlerId != MAX_BATTLERS_COUNT && MOVE_IS_PERMANENT(battlerId, temp2))
&& battlerId != MAX_BATTLERS_COUNT && !(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED)
&& !(gDisableStructs[battlerId].mimickedMoves & gBitTable[temp2]))
gBattleMons[battlerId].pp[temp2] = dataUnsigned; gBattleMons[battlerId].pp[temp2] = dataUnsigned;
retVal = FALSE; retVal = FALSE;
@@ -5105,9 +5104,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
SetMonData(mon, MON_DATA_PP1 + moveIndex, &dataUnsigned); SetMonData(mon, MON_DATA_PP1 + moveIndex, &dataUnsigned);
// Heal battler PP too (if applicable) // Heal battler PP too (if applicable)
if (gMain.inBattle if (gMain.inBattle && battlerId != MAX_BATTLERS_COUNT && MOVE_IS_PERMANENT(battlerId, moveIndex))
&& battlerId != MAX_BATTLERS_COUNT && !(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED)
&& !(gDisableStructs[battlerId].mimickedMoves & gBitTable[moveIndex]))
gBattleMons[battlerId].pp[moveIndex] = dataUnsigned; gBattleMons[battlerId].pp[moveIndex] = dataUnsigned;
retVal = FALSE; retVal = FALSE;
@@ -6875,7 +6872,7 @@ static bool8 ShouldSkipFriendshipChange(void)
#define ALLOC_FAIL_BUFFER (1 << 0) #define ALLOC_FAIL_BUFFER (1 << 0)
#define ALLOC_FAIL_STRUCT (1 << 1) #define ALLOC_FAIL_STRUCT (1 << 1)
#define GFX_MANAGER_ACTIVE 0xA3 // Arbitrary value #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 #define GFX_MANAGER_NUM_FRAMES 4 // Only 2 frames are needed
static void InitMonSpritesGfx_Battle(struct MonSpritesGfxManager* gfx) static void InitMonSpritesGfx_Battle(struct MonSpritesGfxManager* gfx)
+1 -1
View File
@@ -336,7 +336,7 @@ static const struct MatchCallWally sWallyMatchCallHeader =
.type = MC_TYPE_WALLY, .type = MC_TYPE_WALLY,
.mapSec = 0, .mapSec = 0,
.flag = FLAG_ENABLE_WALLY_MATCH_CALL, .flag = FLAG_ENABLE_WALLY_MATCH_CALL,
.rematchTableIdx = REMATCH_WALLY_3, .rematchTableIdx = REMATCH_WALLY_VR,
.desc = gText_WallyMatchCallDesc, .desc = gText_WallyMatchCallDesc,
.textData = sWallyTextScripts, .textData = sWallyTextScripts,
.locationData = sWallyLocationData .locationData = sWallyLocationData
+64 -87
View File
@@ -1,6 +1,7 @@
#include "global.h" #include "global.h"
#include "battle.h" #include "battle.h"
#include "battle_anim.h" #include "battle_anim.h"
#include "battle_controllers.h"
#include "recorded_battle.h" #include "recorded_battle.h"
#include "main.h" #include "main.h"
#include "pokemon.h" #include "pokemon.h"
@@ -35,12 +36,6 @@ struct PlayerInfo
u16 language; u16 language;
}; };
struct MovePp
{
u16 moves[MAX_MON_MOVES];
u8 pp[MAX_MON_MOVES];
};
struct RecordedBattleSave struct RecordedBattleSave
{ {
struct Pokemon playerParty[PARTY_SIZE]; struct Pokemon playerParty[PARTY_SIZE];
@@ -65,7 +60,7 @@ struct RecordedBattleSave
u8 recordMixFriendName[PLAYER_NAME_LENGTH + 1]; u8 recordMixFriendName[PLAYER_NAME_LENGTH + 1];
u8 recordMixFriendClass; u8 recordMixFriendClass;
u8 apprenticeId; u8 apprenticeId;
u16 easyChatSpeech[6]; u16 easyChatSpeech[EASY_CHAT_BATTLE_WORDS_COUNT];
u8 recordMixFriendLanguage; u8 recordMixFriendLanguage;
u8 apprenticeLanguage; u8 apprenticeLanguage;
u8 battleRecord[MAX_BATTLERS_COUNT][BATTLER_RECORD_SIZE]; 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 u32 sAI_Scripts = 0;
EWRAM_DATA static struct Pokemon sSavedPlayerParty[PARTY_SIZE] = {0}; EWRAM_DATA static struct Pokemon sSavedPlayerParty[PARTY_SIZE] = {0};
EWRAM_DATA static struct Pokemon sSavedOpponentParty[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 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 sRecordMixFriendName[PLAYER_NAME_LENGTH + 1] = {0};
EWRAM_DATA static u8 sRecordMixFriendClass = 0; EWRAM_DATA static u8 sRecordMixFriendClass = 0;
EWRAM_DATA static u8 sApprenticeId = 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; EWRAM_DATA static u8 sBattleOutcome = 0;
static u8 sRecordMixFriendLanguage; static u8 sRecordMixFriendLanguage;
@@ -113,7 +108,7 @@ void RecordedBattle_Init(u8 mode)
s32 i, j; s32 i, j;
sRecordMode = mode; sRecordMode = mode;
sUnknown_0203CCD0 = FALSE; sIsPlaybackFinished = FALSE;
for (i = 0; i < MAX_BATTLERS_COUNT; i++) for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{ {
@@ -124,16 +119,14 @@ void RecordedBattle_Init(u8 mode)
if (mode == B_RECORD_MODE_RECORDING) if (mode == B_RECORD_MODE_RECORDING)
{ {
for (j = 0; j < BATTLER_RECORD_SIZE; j++) for (j = 0; j < BATTLER_RECORD_SIZE; j++)
{
sBattleRecords[i][j] = 0xFF; sBattleRecords[i][j] = 0xFF;
}
sBattleFlags = gBattleTypeFlags; sBattleFlags = gBattleTypeFlags;
sAI_Scripts = gBattleResources->ai->aiFlags; sAI_Scripts = gBattleResources->ai->aiFlags;
} }
} }
} }
void sub_8184E58(void) void RecordedBattle_SetTrainerInfo(void)
{ {
s32 i, j; s32 i, j;
@@ -150,6 +143,7 @@ void sub_8184E58(void)
if (gBattleTypeFlags & BATTLE_TYPE_LINK) if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{ {
// Link recorded battle, record info for all trainers
u8 linkPlayersCount; u8 linkPlayersCount;
u8 text[30]; u8 text[30];
@@ -163,6 +157,7 @@ void sub_8184E58(void)
sPlayers[i].battlerId = gLinkPlayers[i].id; sPlayers[i].battlerId = gLinkPlayers[i].id;
sPlayers[i].language = gLinkPlayers[i].language; sPlayers[i].language = gLinkPlayers[i].language;
// Record names
if (i < linkPlayersCount) if (i < linkPlayersCount)
{ {
StringCopy(text, gLinkPlayers[i].name); StringCopy(text, gLinkPlayers[i].name);
@@ -178,10 +173,11 @@ void sub_8184E58(void)
} }
else else
{ {
// Local battle, just record own info
sPlayers[0].trainerId = (gSaveBlock2Ptr->playerTrainerId[0]) sPlayers[0].trainerId = (gSaveBlock2Ptr->playerTrainerId[0])
| (gSaveBlock2Ptr->playerTrainerId[1] << 8) | (gSaveBlock2Ptr->playerTrainerId[1] << 8)
| (gSaveBlock2Ptr->playerTrainerId[2] << 16) | (gSaveBlock2Ptr->playerTrainerId[2] << 16)
| (gSaveBlock2Ptr->playerTrainerId[3] << 24); | (gSaveBlock2Ptr->playerTrainerId[3] << 24);
sPlayers[0].gender = gSaveBlock2Ptr->playerGender; sPlayers[0].gender = gSaveBlock2Ptr->playerGender;
sPlayers[0].battlerId = 0; sPlayers[0].battlerId = 0;
@@ -195,9 +191,7 @@ void sub_8184E58(void)
void RecordedBattle_SetBattlerAction(u8 battlerId, u8 action) void RecordedBattle_SetBattlerAction(u8 battlerId, u8 action)
{ {
if (sBattlerRecordSizes[battlerId] < BATTLER_RECORD_SIZE && sRecordMode != B_RECORD_MODE_PLAYBACK) if (sBattlerRecordSizes[battlerId] < BATTLER_RECORD_SIZE && sRecordMode != B_RECORD_MODE_PLAYBACK)
{
sBattleRecords[battlerId][sBattlerRecordSizes[battlerId]++] = action; sBattleRecords[battlerId][sBattlerRecordSizes[battlerId]++] = action;
}
} }
void RecordedBattle_ClearBattlerAction(u8 battlerId, u8 bytesToClear) void RecordedBattle_ClearBattlerAction(u8 battlerId, u8 bytesToClear)
@@ -220,7 +214,7 @@ u8 RecordedBattle_GetBattlerAction(u8 battlerId)
{ {
gSpecialVar_Result = gBattleOutcome = B_OUTCOME_PLAYER_TELEPORTED; // hah gSpecialVar_Result = gBattleOutcome = B_OUTCOME_PLAYER_TELEPORTED; // hah
ResetPaletteFadeControl(); ResetPaletteFadeControl();
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
SetMainCallback2(CB2_QuitRecordedBattle); SetMainCallback2(CB2_QuitRecordedBattle);
return 0xFF; return 0xFF;
} }
@@ -249,9 +243,7 @@ u8 RecordedBattle_BufferNewBattlerData(u8 *dst)
dst[idx++] = sBattlerRecordSizes[i] - sBattlerPrevRecordSizes[i]; dst[idx++] = sBattlerRecordSizes[i] - sBattlerPrevRecordSizes[i];
for (j = 0; j < sBattlerRecordSizes[i] - sBattlerPrevRecordSizes[i]; j++) for (j = 0; j < sBattlerRecordSizes[i] - sBattlerPrevRecordSizes[i]; j++)
{
dst[idx++] = sBattleRecords[i][sBattlerPrevRecordSizes[i] + j]; dst[idx++] = sBattleRecords[i][sBattlerPrevRecordSizes[i] + j];
}
sBattlerPrevRecordSizes[i] = sBattlerRecordSizes[i]; sBattlerPrevRecordSizes[i] = sBattlerRecordSizes[i];
} }
@@ -283,9 +275,7 @@ void RecordedBattle_RecordAllBattlerData(u8 *src)
u8 numActions = GetNextRecordedDataByte(src, &idx, &size); u8 numActions = GetNextRecordedDataByte(src, &idx, &size);
for (i = 0; i < numActions; i++) for (i = 0; i < numActions; i++)
{
sBattleRecords[battlerId][sBattlerSavedRecordSizes[battlerId]++] = GetNextRecordedDataByte(src, &idx, &size); 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) static bool32 RecordedBattleToSave(struct RecordedBattleSave *battleSave, struct RecordedBattleSave *saveSection)
{ {
memset(saveSection, 0, 0x1000); memset(saveSection, 0, SECTOR_SIZE);
memcpy(saveSection, battleSave, sizeof(*battleSave)); memcpy(saveSection, battleSave, sizeof(*battleSave));
saveSection->checksum = CalcByteArraySum((void*)(saveSection), sizeof(*saveSection) - 4); saveSection->checksum = CalcByteArraySum((void*)(saveSection), sizeof(*saveSection) - 4);
@@ -338,7 +328,7 @@ bool32 MoveRecordedBattleToSaveData(void)
saveAttempts = 0; saveAttempts = 0;
battleSave = AllocZeroed(sizeof(struct RecordedBattleSave)); battleSave = AllocZeroed(sizeof(struct RecordedBattleSave));
savSection = AllocZeroed(0x1000); savSection = AllocZeroed(SECTOR_SIZE);
for (i = 0; i < PARTY_SIZE; i++) for (i = 0; i < PARTY_SIZE; i++)
{ {
@@ -349,9 +339,7 @@ bool32 MoveRecordedBattleToSaveData(void)
for (i = 0; i < MAX_BATTLERS_COUNT; i++) for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{ {
for (j = 0; j < PLAYER_NAME_LENGTH + 1; j++) for (j = 0; j < PLAYER_NAME_LENGTH + 1; j++)
{
battleSave->playersName[i][j] = sPlayers[i].name[j]; battleSave->playersName[i][j] = sPlayers[i].name[j];
}
battleSave->playersGender[i] = sPlayers[i].gender; battleSave->playersGender[i] = sPlayers[i].gender;
battleSave->playersLanguage[i] = sPlayers[i].language; battleSave->playersLanguage[i] = sPlayers[i].language;
battleSave->playersBattlers[i] = sPlayers[i].battlerId; battleSave->playersBattlers[i] = sPlayers[i].battlerId;
@@ -471,12 +459,8 @@ bool32 MoveRecordedBattleToSaveData(void)
} }
for (i = 0; i < MAX_BATTLERS_COUNT; i++) for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
for (j = 0; j < BATTLER_RECORD_SIZE; j++) for (j = 0; j < BATTLER_RECORD_SIZE; j++)
{
battleSave->battleRecord[i][j] = sBattleRecords[i][j]; battleSave->battleRecord[i][j] = sBattleRecords[i][j];
}
}
while (1) while (1)
{ {
@@ -585,29 +569,21 @@ static void SetVariablesForRecordedBattle(struct RecordedBattleSave *src)
sAI_Scripts = src->AI_scripts; sAI_Scripts = src->AI_scripts;
for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++) for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
{
sRecordMixFriendName[i] = src->recordMixFriendName[i]; sRecordMixFriendName[i] = src->recordMixFriendName[i];
}
sRecordMixFriendClass = src->recordMixFriendClass; sRecordMixFriendClass = src->recordMixFriendClass;
sApprenticeId = src->apprenticeId; sApprenticeId = src->apprenticeId;
sRecordMixFriendLanguage = src->recordMixFriendLanguage; sRecordMixFriendLanguage = src->recordMixFriendLanguage;
sApprenticeLanguage = src->apprenticeLanguage; sApprenticeLanguage = src->apprenticeLanguage;
for (i = 0; i < 6; i++) for (i = 0; i < EASY_CHAT_BATTLE_WORDS_COUNT; i++)
{
sEasyChatSpeech[i] = src->easyChatSpeech[i]; sEasyChatSpeech[i] = src->easyChatSpeech[i];
}
gSaveBlock2Ptr->frontier.lvlMode = src->lvlMode; gSaveBlock2Ptr->frontier.lvlMode = src->lvlMode;
for (i = 0; i < MAX_BATTLERS_COUNT; i++) for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
for (j = 0; j < BATTLER_RECORD_SIZE; j++) for (j = 0; j < BATTLER_RECORD_SIZE; j++)
{
sBattleRecords[i][j] = src->battleRecord[i][j]; sBattleRecords[i][j] = src->battleRecord[i][j];
}
}
} }
void PlayRecordedBattle(void (*CB2_After)(void)) void PlayRecordedBattle(void (*CB2_After)(void))
@@ -693,9 +669,9 @@ void RecordedBattle_ClearFrontierPassFlag(void)
} }
// Set sFrontierPassFlag to received state of FLAG_SYS_FRONTIER_PASS // 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) u8 RecordedBattle_GetFrontierPassFlag(void)
@@ -725,14 +701,14 @@ void RecordedBattle_CopyBattlerMoves(void)
return; return;
for (i = 0; i < MAX_MON_MOVES; i++) for (i = 0; i < MAX_MON_MOVES; i++)
{
sPlayerMonMoves[gActiveBattler / 2][i] = gBattleMons[gActiveBattler].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 #define ACTION_MOVE_CHANGE 6
void sub_818603C(u8 arg0) void RecordedBattle_CheckMovesetChanges(u8 mode)
{ {
s32 battlerId, j, k; s32 battlerId, j, k;
@@ -741,17 +717,20 @@ void sub_818603C(u8 arg0)
for (battlerId = 0; battlerId < gBattlersCount; battlerId++) 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++) for (j = 0; j < MAX_MON_MOVES; j++)
{ {
if (gBattleMons[battlerId].moves[j] != sPlayerMonMoves[battlerId / 2][j]) if (gBattleMons[battlerId].moves[j] != sPlayerMonMoves[battlerId / 2][j])
break; 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); RecordedBattle_SetBattlerAction(battlerId, ACTION_MOVE_CHANGE);
for (j = 0; j < MAX_MON_MOVES; j++) 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) if (sBattleRecords[battlerId][sBattlerRecordSizes[battlerId]] == ACTION_MOVE_CHANGE)
{ {
u8 ppBonuses[MAX_MON_MOVES]; u8 ppBonuses[MAX_MON_MOVES];
u8 array1[MAX_MON_MOVES]; u8 moveSlots[MAX_MON_MOVES];
u8 array2[MAX_MON_MOVES]; u8 mimickedMoveSlots[MAX_MON_MOVES];
struct MovePp movePp; struct ChooseMoveStruct movePp;
u8 array3[(MAX_MON_MOVES * 2)]; u8 ppBonusSet;
u8 var;
// We know the current action is ACTION_MOVE_CHANGE, retrieve
// it without saving it to move on to the next action.
RecordedBattle_GetBattlerAction(battlerId); RecordedBattle_GetBattlerAction(battlerId);
for (j = 0; j < MAX_MON_MOVES; j++)
ppBonuses[j] = ((gBattleMons[battlerId].ppBonuses & (3 << (j << 1))) >> (j << 1));
for (j = 0; j < MAX_MON_MOVES; j++) for (j = 0; j < MAX_MON_MOVES; j++)
{ {
ppBonuses[j] = ((gBattleMons[battlerId].ppBonuses & ((3 << (j << 1)))) >> (j << 1)); moveSlots[j] = RecordedBattle_GetBattlerAction(battlerId);
} movePp.moves[j] = gBattleMons[battlerId].moves[moveSlots[j]];
for (j = 0; j < MAX_MON_MOVES; j++) movePp.currentPp[j] = gBattleMons[battlerId].pp[moveSlots[j]];
{ movePp.maxPp[j] = ppBonuses[moveSlots[j]];
array1[j] = RecordedBattle_GetBattlerAction(battlerId); mimickedMoveSlots[j] = (gDisableStructs[battlerId].mimickedMoves & gBitTable[j]) >> j;
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;
} }
for (j = 0; j < MAX_MON_MOVES; j++) for (j = 0; j < MAX_MON_MOVES; j++)
{ {
gBattleMons[battlerId].moves[j] = movePp.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; gBattleMons[battlerId].ppBonuses = 0;
gDisableStructs[battlerId].mimickedMoves = 0; gDisableStructs[battlerId].mimickedMoves = 0;
for (j = 0; j < MAX_MON_MOVES; j++) for (j = 0; j < MAX_MON_MOVES; j++)
{ {
gBattleMons[battlerId].ppBonuses |= (array3[j]) << (j << 1); gBattleMons[battlerId].ppBonuses |= movePp.maxPp[j] << (j << 1);
gDisableStructs[battlerId].mimickedMoves |= (array2[j]) << (j); gDisableStructs[battlerId].mimickedMoves |= mimickedMoveSlots[j] << j;
} }
if (!(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED)) if (!(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED))
{ {
for (j = 0; j < MAX_MON_MOVES; j++) 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++) for (j = 0; j < MAX_MON_MOVES; j++)
{ {
movePp.moves[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_MOVE1 + array1[j], NULL); movePp.moves[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_MOVE1 + moveSlots[j], NULL);
movePp.pp[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP1 + array1[j], NULL); movePp.currentPp[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP1 + moveSlots[j], NULL);
array3[j] = ppBonuses[array1[j]]; movePp.maxPp[j] = ppBonuses[moveSlots[j]];
} }
for (j = 0; j < MAX_MON_MOVES; 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_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++) for (j = 0; j < MAX_MON_MOVES; j++)
{ ppBonusSet |= movePp.maxPp[j] << (j << 1);
var |= (array3[j]) << (j << 1);
}
SetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP_BONUSES, &var);
}
SetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP_BONUSES, &ppBonusSet);
}
gChosenMoveByBattler[battlerId] = gBattleMons[battlerId].moves[*(gBattleStruct->chosenMovePositions + battlerId)]; gChosenMoveByBattler[battlerId] = gBattleMons[battlerId].moves[*(gBattleStruct->chosenMovePositions + battlerId)];
} }
} }
@@ -840,24 +817,24 @@ u32 GetAiScriptsInRecordedBattle(void)
return sAI_Scripts; 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) void GetRecordedBattleRecordMixFriendName(u8 *dst)
{ {
s32 i; s32 i;
for (i = 0; i < 8; i++) for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
dst[i] = sRecordMixFriendName[i]; dst[i] = sRecordMixFriendName[i];
dst[PLAYER_NAME_LENGTH] = EOS;
dst[7] = EOS;
ConvertInternationalString(dst, sRecordMixFriendLanguage); ConvertInternationalString(dst, sRecordMixFriendLanguage);
} }
-7
View File
@@ -14,24 +14,17 @@ struct Fanfare
u16 duration; u16 duration;
}; };
// ewram
EWRAM_DATA struct MusicPlayerInfo* gMPlay_PokemonCry = NULL; EWRAM_DATA struct MusicPlayerInfo* gMPlay_PokemonCry = NULL;
EWRAM_DATA u8 gPokemonCryBGMDuckingCounter = 0; EWRAM_DATA u8 gPokemonCryBGMDuckingCounter = 0;
// iwram bss
static u16 sCurrentMapMusic; static u16 sCurrentMapMusic;
static u16 sNextMapMusic; static u16 sNextMapMusic;
static u8 sMapMusicState; static u8 sMapMusicState;
static u8 sMapMusicFadeInSpeed; static u8 sMapMusicFadeInSpeed;
static u16 sFanfareCounter; static u16 sFanfareCounter;
// iwram common
bool8 gDisableMusic; 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 gCryTable[];
extern struct ToneData gCryTable2[]; extern struct ToneData gCryTable2[];
-3
View File
@@ -35,9 +35,6 @@
#define BERRY_UPDATE_BUTTON_COMBO (B_BUTTON | SELECT_BUTTON) #define BERRY_UPDATE_BUTTON_COMBO (B_BUTTON | SELECT_BUTTON)
#define A_B_START_SELECT (A_BUTTON | B_BUTTON | START_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 MainCB2(void);
static void Task_TitleScreenPhase1(u8); static void Task_TitleScreenPhase1(u8);
static void Task_TitleScreenPhase2(u8); static void Task_TitleScreenPhase2(u8);