summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/battle_script_commands.s1463
-rw-r--r--include/battle.h1
-rw-r--r--include/battle_bg.h6
-rw-r--r--include/battle_controllers.h1
-rw-r--r--include/battle_script_commands.h17
-rw-r--r--include/battle_scripts.h2
-rw-r--r--include/field_specials.h1
-rw-r--r--include/overworld.h1
-rw-r--r--include/pokedex.h2
-rw-r--r--include/trainer_pokemon_sprites.h1
-rw-r--r--ld_script.txt1
-rw-r--r--src/battle_script_commands.c1495
12 files changed, 974 insertions, 2017 deletions
diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s
deleted file mode 100644
index 00d3e49c7..000000000
--- a/asm/battle_script_commands.s
+++ /dev/null
@@ -1,1463 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start atkEF_handleballthrow
-atkEF_handleballthrow: @ 802D434
- push {r4-r6,lr}
- movs r4, 0
- ldr r0, _0802D474 @ =gBattleControllerExecFlags
- ldr r0, [r0]
- cmp r0, 0
- beq _0802D442
- b _0802D7EE
-_0802D442:
- ldr r5, _0802D478 @ =gActiveBattler
- ldr r0, _0802D47C @ =gBattlerAttacker
- ldrb r0, [r0]
- strb r0, [r5]
- ldr r6, _0802D480 @ =gBattlerTarget
- movs r1, 0x1
- eors r0, r1
- strb r0, [r6]
- ldr r0, _0802D484 @ =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _0802D490
- movs r0, 0
- movs r1, 0x6
- bl BtlController_EmitBallThrowAnim
- ldrb r0, [r5]
- bl MarkBattlerForControllerExec
- ldr r1, _0802D488 @ =gBattlescriptCurrInstr
- ldr r0, _0802D48C @ =BattleScript_GhostBallDodge
- b _0802D7EC
- .align 2, 0
-_0802D474: .4byte gBattleControllerExecFlags
-_0802D478: .4byte gActiveBattler
-_0802D47C: .4byte gBattlerAttacker
-_0802D480: .4byte gBattlerTarget
-_0802D484: .4byte gBattleTypeFlags
-_0802D488: .4byte gBattlescriptCurrInstr
-_0802D48C: .4byte BattleScript_GhostBallDodge
-_0802D490:
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0802D4B4
- movs r0, 0
- movs r1, 0x5
- bl BtlController_EmitBallThrowAnim
- ldrb r0, [r5]
- bl MarkBattlerForControllerExec
- ldr r1, _0802D4AC @ =gBattlescriptCurrInstr
- ldr r0, _0802D4B0 @ =BattleScript_TrainerBallBlock
- b _0802D7EC
- .align 2, 0
-_0802D4AC: .4byte gBattlescriptCurrInstr
-_0802D4B0: .4byte BattleScript_TrainerBallBlock
-_0802D4B4:
- movs r0, 0x81
- lsls r0, 9
- ands r1, r0
- cmp r1, 0
- beq _0802D4DC
- movs r0, 0
- movs r1, 0x4
- bl BtlController_EmitBallThrowAnim
- ldrb r0, [r5]
- bl MarkBattlerForControllerExec
- ldr r1, _0802D4D4 @ =gBattlescriptCurrInstr
- ldr r0, _0802D4D8 @ =gUnknown_81D9A88
- b _0802D7EC
- .align 2, 0
-_0802D4D4: .4byte gBattlescriptCurrInstr
-_0802D4D8: .4byte gUnknown_81D9A88
-_0802D4DC:
- ldr r0, _0802D500 @ =gLastUsedItem
- ldrh r0, [r0]
- cmp r0, 0x5
- bne _0802D508
- ldr r0, _0802D504 @ =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x7C
- ldrb r0, [r0]
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 8
- subs r0, r1
- movs r1, 0x64
- bl __divsi3
- lsls r0, 24
- lsrs r5, r0, 24
- b _0802D520
- .align 2, 0
-_0802D500: .4byte gLastUsedItem
-_0802D504: .4byte gBattleStruct
-_0802D508:
- ldr r3, _0802D53C @ =gBaseStats
- ldr r2, _0802D540 @ =gBattleMons
- ldrb r1, [r6]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r5, [r0, 0x8]
-_0802D520:
- ldr r2, _0802D544 @ =gLastUsedItem
- ldrh r0, [r2]
- cmp r0, 0x5
- bhi _0802D52A
- b _0802D620
-_0802D52A:
- subs r0, 0x6
- cmp r0, 0x6
- bls _0802D532
- b _0802D62A
-_0802D532:
- lsls r0, 2
- ldr r1, _0802D548 @ =_0802D54C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802D53C: .4byte gBaseStats
-_0802D540: .4byte gBattleMons
-_0802D544: .4byte gLastUsedItem
-_0802D548: .4byte _0802D54C
- .align 2, 0
-_0802D54C:
- .4byte _0802D568
- .4byte _0802D598
- .4byte _0802D5AA
- .4byte _0802D5D8
- .4byte _0802D608
- .4byte _0802D5CA
- .4byte _0802D5CA
-_0802D568:
- ldr r2, _0802D590 @ =gBattleMons
- ldr r0, _0802D594 @ =gBattlerTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r1, r0, 0
- adds r1, 0x21
- ldrb r1, [r1]
- cmp r1, 0xB
- beq _0802D5FC
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0xB
- beq _0802D5FC
- cmp r1, 0x6
- beq _0802D5FC
- cmp r0, 0x6
- beq _0802D5FC
- b _0802D5CA
- .align 2, 0
-_0802D590: .4byte gBattleMons
-_0802D594: .4byte gBattlerTarget
-_0802D598:
- bl GetCurrentMapType
- lsls r0, 24
- lsrs r0, 24
- movs r4, 0xA
- cmp r0, 0x5
- bne _0802D62A
- movs r4, 0x23
- b _0802D62A
-_0802D5AA:
- ldr r2, _0802D5D0 @ =gBattleMons
- ldr r0, _0802D5D4 @ =gBattlerTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x2A
- ldrb r1, [r0]
- cmp r1, 0x27
- bhi _0802D5CA
- movs r0, 0x28
- subs r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x9
- bhi _0802D62A
-_0802D5CA:
- movs r4, 0xA
- b _0802D62A
- .align 2, 0
-_0802D5D0: .4byte gBattleMons
-_0802D5D4: .4byte gBattlerTarget
-_0802D5D8:
- ldr r2, _0802D600 @ =gBattleMons
- ldr r0, _0802D604 @ =gBattlerTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl GetSetPokedexFlag
- lsls r0, 24
- movs r4, 0xA
- cmp r0, 0
- beq _0802D62A
-_0802D5FC:
- movs r4, 0x1E
- b _0802D62A
- .align 2, 0
-_0802D600: .4byte gBattleMons
-_0802D604: .4byte gBattlerTarget
-_0802D608:
- ldr r0, _0802D61C @ =gBattleResults
- ldrb r0, [r0, 0x13]
- adds r0, 0xA
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x28
- bls _0802D62A
- movs r4, 0x28
- b _0802D62A
- .align 2, 0
-_0802D61C: .4byte gBattleResults
-_0802D620:
- ldr r1, _0802D694 @ =sBallCatchBonuses
- ldrh r0, [r2]
- subs r0, 0x2
- adds r0, r1
- ldrb r4, [r0]
-_0802D62A:
- adds r0, r5, 0
- muls r0, r4
- movs r1, 0xA
- bl __divsi3
- ldr r5, _0802D698 @ =gBattleMons
- ldr r1, _0802D69C @ =gBattlerTarget
- ldrb r2, [r1]
- movs r1, 0x58
- adds r4, r2, 0
- muls r4, r1
- adds r3, r4, r5
- ldrh r2, [r3, 0x2C]
- lsls r1, r2, 1
- adds r1, r2
- ldrh r2, [r3, 0x28]
- lsls r2, 1
- subs r2, r1, r2
- muls r0, r2
- bl __divsi3
- adds r6, r0, 0
- adds r5, 0x4C
- adds r4, r5
- ldr r4, [r4]
- movs r0, 0x27
- ands r0, r4
- cmp r0, 0
- beq _0802D666
- lsls r6, 1
-_0802D666:
- movs r0, 0xD8
- ands r4, r0
- cmp r4, 0
- beq _0802D67A
- lsls r0, r6, 4
- subs r0, r6
- movs r1, 0xA
- bl __udivsi3
- adds r6, r0, 0
-_0802D67A:
- ldr r1, _0802D6A0 @ =gLastUsedItem
- ldrh r0, [r1]
- cmp r0, 0x5
- beq _0802D6BC
- cmp r0, 0x1
- bne _0802D6A8
- ldr r0, _0802D6A4 @ =gBattleResults
- ldrb r1, [r0, 0x5]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r0, 0x5]
- b _0802D6BC
- .align 2, 0
-_0802D694: .4byte sBallCatchBonuses
-_0802D698: .4byte gBattleMons
-_0802D69C: .4byte gBattlerTarget
-_0802D6A0: .4byte gLastUsedItem
-_0802D6A4: .4byte gBattleResults
-_0802D6A8:
- ldr r0, _0802D700 @ =gBattleResults
- ldrh r1, [r1]
- adds r0, r1
- adds r1, r0, 0
- adds r1, 0x34
- ldrb r0, [r1]
- cmp r0, 0xFE
- bhi _0802D6BC
- adds r0, 0x1
- strb r0, [r1]
-_0802D6BC:
- cmp r6, 0xFE
- bls _0802D720
- movs r0, 0
- movs r1, 0x4
- bl BtlController_EmitBallThrowAnim
- ldr r0, _0802D704 @ =gActiveBattler
- ldrb r0, [r0]
- bl MarkBattlerForControllerExec
- ldr r1, _0802D708 @ =gBattlescriptCurrInstr
- ldr r0, _0802D70C @ =BattleScript_SuccessBallThrow
- str r0, [r1]
- ldr r1, _0802D710 @ =gBattlerPartyIndexes
- ldr r0, _0802D714 @ =gBattlerTarget
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0802D718 @ =gEnemyParty
- adds r0, r1
- ldr r2, _0802D71C @ =gLastUsedItem
- movs r1, 0x26
- bl SetMonData
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6
- beq _0802D7AE
- b _0802D7D8
- .align 2, 0
-_0802D700: .4byte gBattleResults
-_0802D704: .4byte gActiveBattler
-_0802D708: .4byte gBattlescriptCurrInstr
-_0802D70C: .4byte BattleScript_SuccessBallThrow
-_0802D710: .4byte gBattlerPartyIndexes
-_0802D714: .4byte gBattlerTarget
-_0802D718: .4byte gEnemyParty
-_0802D71C: .4byte gLastUsedItem
-_0802D720:
- movs r0, 0xFF
- lsls r0, 16
- adds r1, r6, 0
- bl __udivsi3
- bl Sqrt
- lsls r0, 16
- lsrs r0, 16
- bl Sqrt
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r0, _0802D748 @ =0x000ffff0
- adds r1, r6, 0
- bl __udivsi3
- adds r6, r0, 0
- movs r4, 0
- b _0802D752
- .align 2, 0
-_0802D748: .4byte 0x000ffff0
-_0802D74C:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_0802D752:
- cmp r4, 0x3
- bhi _0802D762
- bl Random
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r6
- bcc _0802D74C
-_0802D762:
- ldr r5, _0802D7B8 @ =gLastUsedItem
- ldrh r0, [r5]
- cmp r0, 0x1
- bne _0802D76C
- movs r4, 0x4
-_0802D76C:
- movs r0, 0
- adds r1, r4, 0
- bl BtlController_EmitBallThrowAnim
- ldr r0, _0802D7BC @ =gActiveBattler
- ldrb r0, [r0]
- bl MarkBattlerForControllerExec
- cmp r4, 0x4
- bne _0802D7E4
- ldr r1, _0802D7C0 @ =gBattlescriptCurrInstr
- ldr r0, _0802D7C4 @ =BattleScript_SuccessBallThrow
- str r0, [r1]
- ldr r1, _0802D7C8 @ =gBattlerPartyIndexes
- ldr r0, _0802D7CC @ =gBattlerTarget
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0802D7D0 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x26
- adds r2, r5, 0
- bl SetMonData
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6
- bne _0802D7D8
-_0802D7AE:
- ldr r1, _0802D7D4 @ =gBattleCommunication
- movs r0, 0
- strb r0, [r1, 0x5]
- b _0802D7EE
- .align 2, 0
-_0802D7B8: .4byte gLastUsedItem
-_0802D7BC: .4byte gActiveBattler
-_0802D7C0: .4byte gBattlescriptCurrInstr
-_0802D7C4: .4byte BattleScript_SuccessBallThrow
-_0802D7C8: .4byte gBattlerPartyIndexes
-_0802D7CC: .4byte gBattlerTarget
-_0802D7D0: .4byte gEnemyParty
-_0802D7D4: .4byte gBattleCommunication
-_0802D7D8:
- ldr r1, _0802D7E0 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- b _0802D7EE
- .align 2, 0
-_0802D7E0: .4byte gBattleCommunication
-_0802D7E4:
- ldr r0, _0802D7F4 @ =gBattleCommunication
- strb r4, [r0, 0x5]
- ldr r1, _0802D7F8 @ =gBattlescriptCurrInstr
- ldr r0, _0802D7FC @ =BattleScript_ShakeBallThrow
-_0802D7EC:
- str r0, [r1]
-_0802D7EE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802D7F4: .4byte gBattleCommunication
-_0802D7F8: .4byte gBattlescriptCurrInstr
-_0802D7FC: .4byte BattleScript_ShakeBallThrow
- thumb_func_end atkEF_handleballthrow
-
- thumb_func_start atkF0_givecaughtmon
-atkF0_givecaughtmon: @ 802D800
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r0, _0802D870 @ =gBattlerPartyIndexes
- mov r9, r0
- ldr r5, _0802D874 @ =gBattlerAttacker
- ldrb r0, [r5]
- movs r6, 0x1
- eors r0, r6
- lsls r0, 1
- add r0, r9
- ldrh r0, [r0]
- movs r7, 0x64
- muls r0, r7
- ldr r1, _0802D878 @ =gEnemyParty
- mov r8, r1
- add r0, r8
- bl GiveMonToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0802D8EA
- bl sub_80CC7B4
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0802D88C
- ldr r0, _0802D87C @ =gBattleCommunication
- strb r1, [r0, 0x5]
- ldr r4, _0802D880 @ =gStringVar1
- ldr r0, _0802D884 @ =0x00004037
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- bl GetBoxNamePtr
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldrb r0, [r5]
- eors r0, r6
- lsls r0, 1
- add r0, r9
- ldrh r0, [r0]
- muls r0, r7
- add r0, r8
- ldr r2, _0802D888 @ =gStringVar2
- movs r1, 0x2
- bl GetMonData
- b _0802D8D6
- .align 2, 0
-_0802D870: .4byte gBattlerPartyIndexes
-_0802D874: .4byte gBattlerAttacker
-_0802D878: .4byte gEnemyParty
-_0802D87C: .4byte gBattleCommunication
-_0802D880: .4byte gStringVar1
-_0802D884: .4byte 0x00004037
-_0802D888: .4byte gStringVar2
-_0802D88C:
- ldr r4, _0802D92C @ =gStringVar1
- ldr r0, _0802D930 @ =0x00004037
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- bl GetBoxNamePtr
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldrb r0, [r5]
- eors r0, r6
- lsls r0, 1
- add r0, r9
- ldrh r0, [r0]
- muls r0, r7
- add r0, r8
- ldr r2, _0802D934 @ =gStringVar2
- movs r1, 0x2
- bl GetMonData
- ldr r4, _0802D938 @ =gStringVar3
- bl get_unknown_box_id
- lsls r0, 24
- lsrs r0, 24
- bl GetBoxNamePtr
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldr r1, _0802D93C @ =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
-_0802D8D6:
- ldr r0, _0802D940 @ =0x00000834
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0802D8EA
- ldr r1, _0802D93C @ =gBattleCommunication
- ldrb r0, [r1, 0x5]
- adds r0, 0x1
- strb r0, [r1, 0x5]
-_0802D8EA:
- ldr r2, _0802D944 @ =gBattleResults
- ldr r3, _0802D948 @ =gBattleMons
- ldr r0, _0802D94C @ =gBattlerAttacker
- ldrb r0, [r0]
- movs r1, 0x1
- eors r1, r0
- movs r0, 0x58
- muls r0, r1
- adds r0, r3
- ldrh r0, [r0]
- strh r0, [r2, 0x28]
- ldr r0, _0802D950 @ =gBattlerPartyIndexes
- lsls r1, 1
- adds r1, r0
- ldrh r1, [r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0802D954 @ =gEnemyParty
- adds r0, r1
- adds r2, 0x2A
- movs r1, 0x2
- bl GetMonData
- ldr r1, _0802D958 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802D92C: .4byte gStringVar1
-_0802D930: .4byte 0x00004037
-_0802D934: .4byte gStringVar2
-_0802D938: .4byte gStringVar3
-_0802D93C: .4byte gBattleCommunication
-_0802D940: .4byte 0x00000834
-_0802D944: .4byte gBattleResults
-_0802D948: .4byte gBattleMons
-_0802D94C: .4byte gBattlerAttacker
-_0802D950: .4byte gBattlerPartyIndexes
-_0802D954: .4byte gEnemyParty
-_0802D958: .4byte gBattlescriptCurrInstr
- thumb_func_end atkF0_givecaughtmon
-
- thumb_func_start atkF1_trysetcaughtmondexflags
-atkF1_trysetcaughtmondexflags: @ 802D95C
- push {r4,r5,lr}
- ldr r4, _0802D9AC @ =gEnemyParty
- adds r0, r4, 0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0
- bl GetMonData
- adds r4, r0, 0
- adds r0, r5, 0
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl GetSetPokedexFlag
- lsls r0, 24
- cmp r0, 0
- beq _0802D9B4
- ldr r3, _0802D9B0 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802D9CE
- .align 2, 0
-_0802D9AC: .4byte gEnemyParty
-_0802D9B0: .4byte gBattlescriptCurrInstr
-_0802D9B4:
- adds r0, r5, 0
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- adds r2, r4, 0
- bl HandleSetPokedexFlag
- ldr r1, _0802D9D4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0802D9CE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802D9D4: .4byte gBattlescriptCurrInstr
- thumb_func_end atkF1_trysetcaughtmondexflags
-
- thumb_func_start atkF2_displaydexinfo
-atkF2_displaydexinfo: @ 802D9D8
- push {r4,r5,lr}
- sub sp, 0x18
- ldr r0, _0802DA00 @ =gEnemyParty
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, _0802DA04 @ =gBattleCommunication
- ldrb r0, [r0]
- cmp r0, 0x5
- bls _0802D9F4
- b _0802DB6C
-_0802D9F4:
- lsls r0, 2
- ldr r1, _0802DA08 @ =_0802DA0C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802DA00: .4byte gEnemyParty
-_0802DA04: .4byte gBattleCommunication
-_0802DA08: .4byte _0802DA0C
- .align 2, 0
-_0802DA0C:
- .4byte _0802DA24
- .4byte _0802DA3C
- .4byte _0802DA64
- .4byte _0802DAC8
- .4byte _0802DAE0
- .4byte _0802DB58
-_0802DA24:
- movs r0, 0x1
- negs r0, r0
- ldr r1, _0802DA38 @ =0x00007fff
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _0802DB34
- .align 2, 0
-_0802DA38: .4byte 0x00007fff
-_0802DA3C:
- ldr r0, _0802DA5C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0802DA4A
- b _0802DB6C
-_0802DA4A:
- bl FreeAllWindowBuffers
- adds r0, r5, 0
- bl sub_8106B60
- ldr r1, _0802DA60 @ =gBattleCommunication
- strb r0, [r1, 0x1]
- b _0802DB36
- .align 2, 0
-_0802DA5C: .4byte gPaletteFade
-_0802DA60: .4byte gBattleCommunication
-_0802DA64:
- ldr r0, _0802DAAC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0802DA72
- b _0802DB6C
-_0802DA72:
- ldr r0, _0802DAB0 @ =gMain
- ldr r1, [r0, 0x4]
- ldr r0, _0802DAB4 @ =BattleMainCB2
- cmp r1, r0
- bne _0802DB6C
- ldr r2, _0802DAB8 @ =gTasks
- ldr r4, _0802DABC @ =gBattleCommunication
- ldrb r1, [r4, 0x1]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- bne _0802DB6C
- str r0, [sp, 0x10]
- movs r1, 0xC0
- lsls r1, 19
- ldr r2, _0802DAC0 @ =0x05006000
- add r0, sp, 0x10
- bl CpuSet
- ldr r0, _0802DAC4 @ =VBlankCB_Battle
- bl SetVBlankCallback
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _0802DB6C
- .align 2, 0
-_0802DAAC: .4byte gPaletteFade
-_0802DAB0: .4byte gMain
-_0802DAB4: .4byte BattleMainCB2
-_0802DAB8: .4byte gTasks
-_0802DABC: .4byte gBattleCommunication
-_0802DAC0: .4byte 0x05006000
-_0802DAC4: .4byte VBlankCB_Battle
-_0802DAC8:
- bl sub_800F34C
- bl LoadBattleTextboxAndBackground
- ldr r1, _0802DADC @ =gBattle_BG3_X
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- b _0802DB34
- .align 2, 0
-_0802DADC: .4byte gBattle_BG3_X
-_0802DAE0:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _0802DB6C
- ldr r0, _0802DB40 @ =gBattleMons
- adds r1, r0, 0
- adds r1, 0xAC
- ldr r1, [r1]
- adds r0, 0xA0
- ldr r2, [r0]
- movs r0, 0x78
- str r0, [sp]
- movs r0, 0x40
- str r0, [sp, 0x4]
- str r4, [sp, 0x8]
- ldr r0, _0802DB44 @ =0x0000ffff
- str r0, [sp, 0xC]
- adds r0, r5, 0
- movs r3, 0x1
- bl CreateMonPicSprite_HandleDeoxys
- str r4, [sp, 0x14]
- add r0, sp, 0x14
- ldr r1, _0802DB48 @ =gPlttBufferFaded
- ldr r2, _0802DB4C @ =0x05000080
- bl CpuSet
- ldr r0, _0802DB50 @ =0x0001ffff
- str r4, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r0, 0
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
-_0802DB34:
- ldr r1, _0802DB54 @ =gBattleCommunication
-_0802DB36:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0802DB6C
- .align 2, 0
-_0802DB40: .4byte gBattleMons
-_0802DB44: .4byte 0x0000ffff
-_0802DB48: .4byte gPlttBufferFaded
-_0802DB4C: .4byte 0x05000080
-_0802DB50: .4byte 0x0001ffff
-_0802DB54: .4byte gBattleCommunication
-_0802DB58:
- ldr r0, _0802DB74 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0802DB6C
- ldr r1, _0802DB78 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_0802DB6C:
- add sp, 0x18
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802DB74: .4byte gPaletteFade
-_0802DB78: .4byte gBattlescriptCurrInstr
- thumb_func_end atkF2_displaydexinfo
-
- thumb_func_start HandleBattleWindow
-HandleBattleWindow: @ 802DB7C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- ldr r4, [sp, 0x40]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x10]
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x1C]
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x14]
- lsls r4, 24
- lsrs r4, 24
- mov r10, r4
- movs r1, 0
- add r0, sp, 0xC
- strh r1, [r0]
- ldr r6, [sp, 0x10]
- cmp r6, r3
- ble _0802DBB6
- b _0802DCA2
-_0802DBB6:
- mov r4, r8
- adds r0, r6, 0x1
- str r0, [sp, 0x18]
- ldr r2, [sp, 0x1C]
- cmp r4, r2
- bgt _0802DC98
- add r5, sp, 0xC
- lsls r7, r6, 24
- mov r9, r7
-_0802DBC8:
- ldr r0, [sp, 0x10]
- cmp r6, r0
- bne _0802DBF4
- cmp r4, r8
- bne _0802DBDC
- ldr r0, _0802DBD8 @ =0x00001022
- b _0802DC3E
- .align 2, 0
-_0802DBD8: .4byte 0x00001022
-_0802DBDC:
- ldr r2, [sp, 0x1C]
- cmp r4, r2
- bne _0802DBEC
- ldr r0, _0802DBE8 @ =0x00001024
- b _0802DC3E
- .align 2, 0
-_0802DBE8: .4byte 0x00001024
-_0802DBEC:
- ldr r0, _0802DBF0 @ =0x00001023
- b _0802DC3E
- .align 2, 0
-_0802DBF0: .4byte 0x00001023
-_0802DBF4:
- ldr r7, [sp, 0x14]
- cmp r6, r7
- bne _0802DC20
- cmp r4, r8
- bne _0802DC08
- ldr r0, _0802DC04 @ =0x00001028
- b _0802DC3E
- .align 2, 0
-_0802DC04: .4byte 0x00001028
-_0802DC08:
- ldr r0, [sp, 0x1C]
- cmp r4, r0
- bne _0802DC18
- ldr r0, _0802DC14 @ =0x0000102a
- b _0802DC3E
- .align 2, 0
-_0802DC14: .4byte 0x0000102a
-_0802DC18:
- ldr r0, _0802DC1C @ =0x00001029
- b _0802DC3E
- .align 2, 0
-_0802DC1C: .4byte 0x00001029
-_0802DC20:
- cmp r4, r8
- bne _0802DC2C
- ldr r0, _0802DC28 @ =0x00001025
- b _0802DC3E
- .align 2, 0
-_0802DC28: .4byte 0x00001025
-_0802DC2C:
- ldr r2, [sp, 0x1C]
- cmp r4, r2
- bne _0802DC3C
- ldr r0, _0802DC38 @ =0x00001027
- b _0802DC3E
- .align 2, 0
-_0802DC38: .4byte 0x00001027
-_0802DC3C:
- ldr r0, _0802DC74 @ =0x00001026
-_0802DC3E:
- strh r0, [r5]
- movs r1, 0x1
- mov r0, r10
- ands r0, r1
- cmp r0, 0
- beq _0802DC4E
- movs r0, 0
- strh r0, [r5]
-_0802DC4E:
- movs r0, 0x80
- mov r7, r10
- ands r0, r7
- cmp r0, 0
- beq _0802DC78
- lsls r2, r4, 24
- lsrs r2, 24
- str r1, [sp]
- str r1, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0x1
- add r1, sp, 0xC
- mov r7, r9
- lsrs r3, r7, 24
- bl CopyToBgTilemapBufferRect_ChangePalette
- b _0802DC90
- .align 2, 0
-_0802DC74: .4byte 0x00001026
-_0802DC78:
- lsls r2, r4, 24
- lsrs r2, 24
- str r1, [sp]
- str r1, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0
- add r1, sp, 0xC
- mov r7, r9
- lsrs r3, r7, 24
- bl CopyToBgTilemapBufferRect_ChangePalette
-_0802DC90:
- adds r4, 0x1
- ldr r0, [sp, 0x1C]
- cmp r4, r0
- ble _0802DBC8
-_0802DC98:
- ldr r6, [sp, 0x18]
- ldr r2, [sp, 0x14]
- cmp r6, r2
- bgt _0802DCA2
- b _0802DBB6
-_0802DCA2:
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end HandleBattleWindow
-
- thumb_func_start BattleCreateYesNoCursorAt
-BattleCreateYesNoCursorAt: @ 802DCB8
- push {lr}
- sub sp, 0x10
- add r0, sp, 0xC
- movs r2, 0x1
- strh r2, [r0]
- movs r1, 0x2
- strh r1, [r0, 0x2]
- ldr r0, _0802DCF4 @ =gBattleCommunication
- ldrb r3, [r0, 0x1]
- lsls r3, 25
- movs r0, 0x90
- lsls r0, 20
- adds r3, r0
- lsrs r3, 24
- str r2, [sp]
- str r1, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0
- add r1, sp, 0xC
- movs r2, 0x18
- bl CopyToBgTilemapBufferRect_ChangePalette
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- add sp, 0x10
- pop {r0}
- bx r0
- .align 2, 0
-_0802DCF4: .4byte gBattleCommunication
- thumb_func_end BattleCreateYesNoCursorAt
-
- thumb_func_start BattleDestroyYesNoCursorAt
-BattleDestroyYesNoCursorAt: @ 802DCF8
- push {lr}
- sub sp, 0x10
- add r0, sp, 0xC
- movs r1, 0x20
- strh r1, [r0]
- strh r1, [r0, 0x2]
- ldr r0, _0802DD34 @ =gBattleCommunication
- ldrb r3, [r0, 0x1]
- lsls r3, 25
- movs r0, 0x90
- lsls r0, 20
- adds r3, r0
- lsrs r3, 24
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0
- add r1, sp, 0xC
- movs r2, 0x18
- bl CopyToBgTilemapBufferRect_ChangePalette
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- add sp, 0x10
- pop {r0}
- bx r0
- .align 2, 0
-_0802DD34: .4byte gBattleCommunication
- thumb_func_end BattleDestroyYesNoCursorAt
-
- thumb_func_start atkF3_trygivecaughtmonnick
-atkF3_trygivecaughtmonnick: @ 802DD38
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- ldr r0, _0802DD5C @ =gBattleCommunication
- ldrb r1, [r0]
- adds r4, r0, 0
- cmp r1, 0x4
- bls _0802DD50
- b _0802DFA6
-_0802DD50:
- lsls r0, r1, 2
- ldr r1, _0802DD60 @ =_0802DD64
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802DD5C: .4byte gBattleCommunication
-_0802DD60: .4byte _0802DD64
- .align 2, 0
-_0802DD64:
- .4byte _0802DD78
- .4byte _0802DDA8
- .4byte _0802DE40
- .4byte _0802DF18
- .4byte _0802DF70
-_0802DD78:
- movs r4, 0
- str r4, [sp]
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl HandleBattleWindow
- ldr r0, _0802DDA0 @ =gText_BattleYesNoChoice
- movs r1, 0xE
- bl BattlePutTextOnWindow
- ldr r1, _0802DDA4 @ =gBattleCommunication
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- strb r4, [r1, 0x1]
- bl BattleCreateYesNoCursorAt
- b _0802DFA6
- .align 2, 0
-_0802DDA0: .4byte gText_BattleYesNoChoice
-_0802DDA4: .4byte gBattleCommunication
-_0802DDA8:
- ldr r0, _0802DE1C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0802DDCC
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _0802DDCC
- movs r0, 0x5
- bl PlaySE
- bl BattleDestroyYesNoCursorAt
- movs r0, 0
- strb r0, [r4, 0x1]
- bl BattleCreateYesNoCursorAt
-_0802DDCC:
- ldr r0, _0802DE1C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0802DDF2
- ldr r4, _0802DE20 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _0802DDF2
- movs r0, 0x5
- bl PlaySE
- bl BattleDestroyYesNoCursorAt
- movs r0, 0x1
- strb r0, [r4, 0x1]
- bl BattleCreateYesNoCursorAt
-_0802DDF2:
- ldr r0, _0802DE1C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0802DE24
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0802DE20 @ =gBattleCommunication
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- bne _0802DE36
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0x3
- bl BeginFastPaletteFade
- b _0802DFA6
- .align 2, 0
-_0802DE1C: .4byte gMain
-_0802DE20: .4byte gBattleCommunication
-_0802DE24:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0802DE2E
- b _0802DFA6
-_0802DE2E:
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0802DE3C @ =gBattleCommunication
-_0802DE36:
- movs r0, 0x4
- strb r0, [r1]
- b _0802DFA6
- .align 2, 0
-_0802DE3C: .4byte gBattleCommunication
-_0802DE40:
- ldr r0, _0802DEFC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0802DE4E
- b _0802DFA6
-_0802DE4E:
- ldr r7, _0802DF00 @ =gBattlerPartyIndexes
- ldr r0, _0802DF04 @ =gBattlerAttacker
- mov r10, r0
- ldrb r0, [r0]
- movs r4, 0x1
- eors r0, r4
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- movs r1, 0x64
- mov r9, r1
- mov r2, r9
- muls r2, r0
- adds r0, r2, 0
- ldr r1, _0802DF08 @ =gEnemyParty
- mov r8, r1
- add r0, r8
- ldr r1, _0802DF0C @ =gBattleStruct
- ldr r2, [r1]
- adds r2, 0x6D
- movs r1, 0x2
- bl GetMonData
- bl FreeAllWindowBuffers
- mov r2, r10
- ldrb r0, [r2]
- eors r0, r4
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- add r0, r8
- movs r1, 0xB
- bl GetMonData
- adds r6, r0, 0
- lsls r6, 16
- lsrs r6, 16
- mov r2, r10
- ldrb r0, [r2]
- eors r0, r4
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- add r0, r8
- bl GetMonGender
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- mov r2, r10
- ldrb r0, [r2]
- eors r4, r0
- lsls r4, 1
- adds r4, r7
- ldrh r0, [r4]
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- add r0, r8
- movs r1, 0
- movs r2, 0
- bl GetMonData
- ldr r2, _0802DF0C @ =gBattleStruct
- ldr r1, [r2]
- adds r1, 0x6D
- str r0, [sp]
- ldr r0, _0802DF10 @ =BattleMainCB2
- str r0, [sp, 0x4]
- movs r0, 0x2
- adds r2, r6, 0
- adds r3, r5, 0
- bl DoNamingScreen
- ldr r1, _0802DF14 @ =gBattleCommunication
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0802DFA6
- .align 2, 0
-_0802DEFC: .4byte gPaletteFade
-_0802DF00: .4byte gBattlerPartyIndexes
-_0802DF04: .4byte gBattlerAttacker
-_0802DF08: .4byte gEnemyParty
-_0802DF0C: .4byte gBattleStruct
-_0802DF10: .4byte BattleMainCB2
-_0802DF14: .4byte gBattleCommunication
-_0802DF18:
- ldr r0, _0802DF54 @ =gMain
- ldr r1, [r0, 0x4]
- ldr r0, _0802DF58 @ =BattleMainCB2
- cmp r1, r0
- bne _0802DFA6
- ldr r0, _0802DF5C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0802DFA6
- ldr r2, _0802DF60 @ =gBattlerPartyIndexes
- ldr r0, _0802DF64 @ =gBattlerAttacker
- ldrb r1, [r0]
- movs r0, 0x1
- eors r0, r1
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0802DF68 @ =gEnemyParty
- adds r0, r1
- ldr r1, _0802DF6C @ =gBattleStruct
- ldr r2, [r1]
- adds r2, 0x6D
- movs r1, 0x2
- bl SetMonData
- b _0802DF8C
- .align 2, 0
-_0802DF54: .4byte gMain
-_0802DF58: .4byte BattleMainCB2
-_0802DF5C: .4byte gPaletteFade
-_0802DF60: .4byte gBattlerPartyIndexes
-_0802DF64: .4byte gBattlerAttacker
-_0802DF68: .4byte gEnemyParty
-_0802DF6C: .4byte gBattleStruct
-_0802DF70:
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6
- bne _0802DF8C
- ldr r1, _0802DF88 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0802DFA6
- .align 2, 0
-_0802DF88: .4byte gBattlescriptCurrInstr
-_0802DF8C:
- ldr r3, _0802DFB8 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802DFA6:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802DFB8: .4byte gBattlescriptCurrInstr
- thumb_func_end atkF3_trygivecaughtmonnick
-
- thumb_func_start atkF4_subattackerhpbydmg
-atkF4_subattackerhpbydmg: @ 802DFBC
- ldr r2, _0802DFDC @ =gBattleMons
- ldr r0, _0802DFE0 @ =gBattlerAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r1, r0
- adds r1, r2
- ldr r0, _0802DFE4 @ =gBattleMoveDamage
- ldr r2, [r0]
- ldrh r0, [r1, 0x28]
- subs r0, r2
- strh r0, [r1, 0x28]
- ldr r1, _0802DFE8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_0802DFDC: .4byte gBattleMons
-_0802DFE0: .4byte gBattlerAttacker
-_0802DFE4: .4byte gBattleMoveDamage
-_0802DFE8: .4byte gBattlescriptCurrInstr
- thumb_func_end atkF4_subattackerhpbydmg
-
- thumb_func_start atkF5_removeattackerstatus1
-atkF5_removeattackerstatus1: @ 802DFEC
- ldr r1, _0802E008 @ =gBattleMons
- ldr r0, _0802E00C @ =gBattlerAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x4C
- adds r0, r1
- movs r1, 0
- str r1, [r0]
- ldr r1, _0802E010 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_0802E008: .4byte gBattleMons
-_0802E00C: .4byte gBattlerAttacker
-_0802E010: .4byte gBattlescriptCurrInstr
- thumb_func_end atkF5_removeattackerstatus1
-
- thumb_func_start atkF6_finishaction
-atkF6_finishaction: @ 802E014
- ldr r1, _0802E01C @ =gCurrentActionFuncId
- movs r0, 0xC
- strb r0, [r1]
- bx lr
- .align 2, 0
-_0802E01C: .4byte gCurrentActionFuncId
- thumb_func_end atkF6_finishaction
-
- thumb_func_start atkF7_finishturn
-atkF7_finishturn: @ 802E020
- ldr r1, _0802E030 @ =gCurrentActionFuncId
- movs r0, 0xC
- strb r0, [r1]
- ldr r1, _0802E034 @ =gCurrentTurnActionNumber
- ldr r0, _0802E038 @ =gBattlersCount
- ldrb r0, [r0]
- strb r0, [r1]
- bx lr
- .align 2, 0
-_0802E030: .4byte gCurrentActionFuncId
-_0802E034: .4byte gCurrentTurnActionNumber
-_0802E038: .4byte gBattlersCount
- thumb_func_end atkF7_finishturn
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/include/battle.h b/include/battle.h
index 2420a406c..1f7fc5bf6 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -9,6 +9,7 @@
#include "battle_ai_switch_items.h"
#include "battle_gfx_sfx_util.h"
#include "battle_util2.h"
+#include "battle_bg.h"
/*
Banks are a name given to what could be called a 'battlerId' or 'monControllerId'.
diff --git a/include/battle_bg.h b/include/battle_bg.h
new file mode 100644
index 000000000..6bf90a104
--- /dev/null
+++ b/include/battle_bg.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_BATTLE_BG_H
+#define GUARD_BATTLE_BG_H
+
+void sub_800F34C(void);
+
+#endif // GUARD_BATTLE_BG_H
diff --git a/include/battle_controllers.h b/include/battle_controllers.h
index 4ed292e04..3ee67eac8 100644
--- a/include/battle_controllers.h
+++ b/include/battle_controllers.h
@@ -77,6 +77,7 @@ enum
#define BALL_3_SHAKES_FAIL 3
#define BALL_3_SHAKES_SUCCESS 4
#define BALL_TRAINER_BLOCK 5
+#define BALL_GHOST_DODGE 6
#define RET_VALUE_LEVELLED_UP 11
diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h
index d45675ff8..3f2699064 100644
--- a/include/battle_script_commands.h
+++ b/include/battle_script_commands.h
@@ -34,19 +34,18 @@
#define WINDOW_CLEAR 0x1
#define WINDOW_x80 0x80
-void AI_CalcDmg(u8 bankAtk, u8 bankDef);
-u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef);
-u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility);
-u8 GetBattlerTurnOrderNum(u8 bank);
void SetMoveEffect(bool8 primary, u8 certain);
-void BattleDestroyYesNoCursorAt(void);
+bool8 UproarWakeUpCheck(u8 battlerId);
+u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility);
+u8 TypeCalc(u16 move, u8 attacker, u8 defender);
+void AI_CalcDmg(u8 attacker, u8 defender);
+bool32 IsMonGettingExpSentOut(void);
void BattleCreateYesNoCursorAt(void);
-void BufferMoveToLearnIntoBattleTextBuff2(void);
+void BattleDestroyYesNoCursorAt(void);
void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags);
-bool8 UproarWakeUpCheck(u8 bank);
-bool32 IsMonGettingExpSentOut(void);
+u8 GetBattlerTurnOrderNum(u8 battlerId);
+void BufferMoveToLearnIntoBattleTextBuff2(void);
extern void (* const gBattleScriptingCommandsTable[])(void);
-extern const u8 gUnknown_0831C494[][4];
#endif // GUARD_BATTLE_SCRIPT_COMMANDS_H
diff --git a/include/battle_scripts.h b/include/battle_scripts.h
index 769c4a84a..a13a8c097 100644
--- a/include/battle_scripts.h
+++ b/include/battle_scripts.h
@@ -225,5 +225,7 @@ extern const u8 BattleScript_IgnoresAndHitsItself[];
extern const u8 BattleScript_MoveEffectRecoil[];
extern const u8 BattleScript_FlushMessageBox[];
extern const u8 BattleScript_SpikesOnFaintedBattler[];
+extern const u8 BattleScript_GhostBallDodge[];
+extern const u8 gUnknown_81D9A88[];
#endif // GUARD_BATTLE_SCRIPTS_H
diff --git a/include/field_specials.h b/include/field_specials.h
index a82cb20a2..9a85a8b49 100644
--- a/include/field_specials.h
+++ b/include/field_specials.h
@@ -13,5 +13,6 @@ void nullsub_61(void);
u8 ContextNpcGetTextColor(void);
void set_unknown_box_id(u8);
u16 get_unknown_box_id(void);
+bool8 sub_80CC7B4(void);
#endif // GUARD_FIELD_SPECIALS_H
diff --git a/include/overworld.h b/include/overworld.h
index ea877730e..8f15f5a85 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -119,5 +119,6 @@ bool8 is_light_level_8_or_9(u8 mapType);
bool32 sub_8055C9C(void);
void Overworld_ResetStateAfterDigEscRope(void);
bool32 sub_8058244(void);
+u8 GetCurrentMapType(void);
#endif //GUARD_ROM4_H
diff --git a/include/pokedex.h b/include/pokedex.h
index 718d2e853..a08d4ed26 100644
--- a/include/pokedex.h
+++ b/include/pokedex.h
@@ -45,4 +45,6 @@ u16 GetNationalPokedexCount(u8);
u16 sub_80C0844(u8);
u16 GetKantoPokedexCount(u8);
+u32 sub_8106B60(u16 species);
+
#endif // GUARD_POKEDEX_H
diff --git a/include/trainer_pokemon_sprites.h b/include/trainer_pokemon_sprites.h
index 2a520715f..833268d48 100644
--- a/include/trainer_pokemon_sprites.h
+++ b/include/trainer_pokemon_sprites.h
@@ -14,5 +14,6 @@ u8 sub_818D97C(u8 a0, u8 a1);
u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag);
u16 FreeAndDestroyTrainerPicSprite(u16);
u16 PlayerGenderToFrontTrainerPicId_Debug(u8 gender, bool8 getClass);
+u16 CreateMonPicSprite_HandleDeoxys(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag);
#endif // GUARD_TRAINER_POKEMON_SPRITES_H
diff --git a/ld_script.txt b/ld_script.txt
index 77e31190e..a4cd0d557 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -69,7 +69,6 @@ SECTIONS {
asm/battle_2.o(.text);
src/battle_util.o(.text);
src/battle_script_commands.o(.text);
- asm/battle_script_commands.o(.text);
src/battle_util2.o(.text);
src/battle_controller_player.o(.text);
src/battle_gfx_sfx_util.o(.text);
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index fb4681158..ac8b87ace 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -25,6 +25,7 @@
#include "naming_screen.h"
#include "overworld.h"
#include "party_menu.h"
+#include "trainer_pokemon_sprites.h"
#include "field_specials.h"
#include "battle.h"
#include "battle_message.h"
@@ -58,270 +59,269 @@ struct StatFractions
extern const u8 *const gBattleScriptsForMoveEffects[];
-bool8 IsTwoTurnsMove(u16 move);
-void TrySetDestinyBondToHappen(void);
-u8 AttacksThisTurn(u8 battlerId, u16 move); // Note: returns 1 if it's a charging turn, otherwise 2.
-void CheckWonderGuardAndLevitate(void);
-u8 ChangeStatBuffs(s8 statValue, u8 statId, u8, const u8 *BS_ptr);
-bool32 IsMonGettingExpSentOut(void);
-void sub_8026480(void);
-bool8 sub_80264D0(void);
-void DrawLevelUpWindow1(void);
-void DrawLevelUpWindow2(void);
-bool8 sub_8026648(void);
-void PutMonIconOnLvlUpBox(void);
-void PutLevelAndGenderOnLvlUpBox(void);
-
-void SpriteCB_MonIconOnLvlUpBox(struct Sprite *sprite);
-
-void atk00_attackcanceler(void);
-void atk01_accuracycheck(void);
-void atk02_attackstring(void);
-void atk03_ppreduce(void);
-void atk04_critcalc(void);
-void atk05_damagecalc(void);
-void atk06_typecalc(void);
-void atk07_adjustnormaldamage(void);
-void atk08_adjustnormaldamage2(void);
-void atk09_attackanimation(void);
-void atk0A_waitanimation(void);
-void atk0B_healthbarupdate(void);
-void atk0C_datahpupdate(void);
-void atk0D_critmessage(void);
-void atk0E_effectivenesssound(void);
-void atk0F_resultmessage(void);
-void atk10_printstring(void);
-void atk11_printselectionstring(void);
-void atk12_waitmessage(void);
-void atk13_printfromtable(void);
-void atk14_printselectionstringfromtable(void);
-void atk15_seteffectwithchance(void);
-void atk16_seteffectprimary(void);
-void atk17_seteffectsecondary(void);
-void atk18_clearstatusfromeffect(void);
-void atk19_tryfaintmon(void);
-void atk1A_dofaintanimation(void);
-void atk1B_cleareffectsonfaint(void);
-void atk1C_jumpifstatus(void);
-void atk1D_jumpifstatus2(void);
-void atk1E_jumpifability(void);
-void atk1F_jumpifsideaffecting(void);
-void atk20_jumpifstat(void);
-void atk21_jumpifstatus3condition(void);
-void atk22_jumpiftype(void);
-void atk23_getexp(void);
-void atk24(void);
-void atk25_movevaluescleanup(void);
-void atk26_setmultihit(void);
-void atk27_decrementmultihit(void);
-void atk28_goto(void);
-void atk29_jumpifbyte(void);
-void atk2A_jumpifhalfword(void);
-void atk2B_jumpifword(void);
-void atk2C_jumpifarrayequal(void);
-void atk2D_jumpifarraynotequal(void);
-void atk2E_setbyte(void);
-void atk2F_addbyte(void);
-void atk30_subbyte(void);
-void atk31_copyarray(void);
-void atk32_copyarraywithindex(void);
-void atk33_orbyte(void);
-void atk34_orhalfword(void);
-void atk35_orword(void);
-void atk36_bicbyte(void);
-void atk37_bichalfword(void);
-void atk38_bicword(void);
-void atk39_pause(void);
-void atk3A_waitstate(void);
-void atk3B_healthbar_update(void);
-void atk3C_return(void);
-void atk3D_end(void);
-void atk3E_end2(void);
-void atk3F_end3(void);
-void atk40_jumpifaffectedbyprotect(void);
-void atk41_call(void);
-void atk42_jumpiftype2(void);
-void atk43_jumpifabilitypresent(void);
-void atk44_endselectionscript(void);
-void atk45_playanimation(void);
-void atk46_playanimation2(void);
-void atk47_setgraphicalstatchangevalues(void);
-void atk48_playstatchangeanimation(void);
-void atk49_moveend(void);
-void atk4A_typecalc2(void);
-void atk4B_returnatktoball(void);
-void atk4C_getswitchedmondata(void);
-void atk4D_switchindataupdate(void);
-void atk4E_switchinanim(void);
-void atk4F_jumpifcantswitch(void);
-void atk50_openpartyscreen(void);
-void atk51_switchhandleorder(void);
-void atk52_switchineffects(void);
-void atk53_trainerslidein(void);
-void atk54_playse(void);
-void atk55_fanfare(void);
-void atk56_playfaintcry(void);
-void atk57(void);
-void atk58_returntoball(void);
-void atk59_handlelearnnewmove(void);
-void atk5A_yesnoboxlearnmove(void);
-void atk5B_yesnoboxstoplearningmove(void);
-void atk5C_hitanimation(void);
-void atk5D_getmoneyreward(void);
-void atk5E(void);
-void atk5F_swapattackerwithtarget(void);
-void atk60_incrementgamestat(void);
-void atk61_drawpartystatussummary(void);
-void atk62_hidepartystatussummary(void);
-void atk63_jumptocalledmove(void);
-void atk64_statusanimation(void);
-void atk65_status2animation(void);
-void atk66_chosenstatusanimation(void);
-void atk67_yesnobox(void);
-void atk68_cancelallactions(void);
-void atk69_adjustsetdamage(void);
-void atk6A_removeitem(void);
-void atk6B_atknameinbuff1(void);
-void atk6C_drawlvlupbox(void);
-void atk6D_resetsentmonsvalue(void);
-void atk6E_setatktoplayer0(void);
-void atk6F_makevisible(void);
-void atk70_recordlastability(void);
-void atk71_buffermovetolearn(void);
-void atk72_jumpifplayerran(void);
-void atk73_hpthresholds(void);
-void atk74_hpthresholds2(void);
-void atk75_useitemonopponent(void);
-void atk76_various(void);
-void atk77_setprotectlike(void);
-void atk78_faintifabilitynotdamp(void);
-void atk79_setatkhptozero(void);
-void atk7A_jumpifnexttargetvalid(void);
-void atk7B_tryhealhalfhealth(void);
-void atk7C_trymirrormove(void);
-void atk7D_setrain(void);
-void atk7E_setreflect(void);
-void atk7F_setseeded(void);
-void atk80_manipulatedamage(void);
-void atk81_trysetrest(void);
-void atk82_jumpifnotfirstturn(void);
-void atk83_nop(void);
-void atk84_jumpifcantmakeasleep(void);
-void atk85_stockpile(void);
-void atk86_stockpiletobasedamage(void);
-void atk87_stockpiletohpheal(void);
-void atk88_negativedamage(void);
-void atk89_statbuffchange(void);
-void atk8A_normalisebuffs(void);
-void atk8B_setbide(void);
-void atk8C_confuseifrepeatingattackends(void);
-void atk8D_setmultihitcounter(void);
-void atk8E_initmultihitstring(void);
-void atk8F_forcerandomswitch(void);
-void atk90_tryconversiontypechange(void);
-void atk91_givepaydaymoney(void);
-void atk92_setlightscreen(void);
-void atk93_tryKO(void);
-void atk94_damagetohalftargethp(void);
-void atk95_setsandstorm(void);
-void atk96_weatherdamage(void);
-void atk97_tryinfatuating(void);
-void atk98_updatestatusicon(void);
-void atk99_setmist(void);
-void atk9A_setfocusenergy(void);
-void atk9B_transformdataexecution(void);
-void atk9C_setsubstitute(void);
-void atk9D_mimicattackcopy(void);
-void atk9E_metronome(void);
-void atk9F_dmgtolevel(void);
-void atkA0_psywavedamageeffect(void);
-void atkA1_counterdamagecalculator(void);
-void atkA2_mirrorcoatdamagecalculator(void);
-void atkA3_disablelastusedattack(void);
-void atkA4_trysetencore(void);
-void atkA5_painsplitdmgcalc(void);
-void atkA6_settypetorandomresistance(void);
-void atkA7_setalwayshitflag(void);
-void atkA8_copymovepermanently(void);
-void atkA9_trychoosesleeptalkmove(void);
-void atkAA_setdestinybond(void);
-void atkAB_trysetdestinybondtohappen(void);
-void atkAC_remaininghptopower(void);
-void atkAD_tryspiteppreduce(void);
-void atkAE_healpartystatus(void);
-void atkAF_cursetarget(void);
-void atkB0_trysetspikes(void);
-void atkB1_setforesight(void);
-void atkB2_trysetperishsong(void);
-void atkB3_rolloutdamagecalculation(void);
-void atkB4_jumpifconfusedandstatmaxed(void);
-void atkB5_furycuttercalc(void);
-void atkB6_happinesstodamagecalculation(void);
-void atkB7_presentdamagecalculation(void);
-void atkB8_setsafeguard(void);
-void atkB9_magnitudedamagecalculation(void);
-void atkBA_jumpifnopursuitswitchdmg(void);
-void atkBB_setsunny(void);
-void atkBC_maxattackhalvehp(void);
-void atkBD_copyfoestats(void);
-void atkBE_rapidspinfree(void);
-void atkBF_setdefensecurlbit(void);
-void atkC0_recoverbasedonsunlight(void);
-void atkC1_hiddenpowercalc(void);
-void atkC2_selectfirstvalidtarget(void);
-void atkC3_trysetfutureattack(void);
-void atkC4_trydobeatup(void);
-void atkC5_setsemiinvulnerablebit(void);
-void atkC6_clearsemiinvulnerablebit(void);
-void atkC7_setminimize(void);
-void atkC8_sethail(void);
-void atkC9_jumpifattackandspecialattackcannotfall(void);
-void atkCA_setforcedtarget(void);
-void atkCB_setcharge(void);
-void atkCC_callterrainattack(void);
-void atkCD_cureifburnedparalysedorpoisoned(void);
-void atkCE_settorment(void);
-void atkCF_jumpifnodamage(void);
-void atkD0_settaunt(void);
-void atkD1_trysethelpinghand(void);
-void atkD2_tryswapitems(void);
-void atkD3_trycopyability(void);
-void atkD4_trywish(void);
-void atkD5_trysetroots(void);
-void atkD6_doubledamagedealtifdamaged(void);
-void atkD7_setyawn(void);
-void atkD8_setdamagetohealthdifference(void);
-void atkD9_scaledamagebyhealthratio(void);
-void atkDA_tryswapabilities(void);
-void atkDB_tryimprison(void);
-void atkDC_trysetgrudge(void);
-void atkDD_weightdamagecalculation(void);
-void atkDE_assistattackselect(void);
-void atkDF_trysetmagiccoat(void);
-void atkE0_trysetsnatch(void);
-void atkE1_trygetintimidatetarget(void);
-void atkE2_switchoutabilities(void);
-void atkE3_jumpifhasnohp(void);
-void atkE4_getsecretpowereffect(void);
-void atkE5_pickup(void);
-void atkE6_docastformchangeanimation(void);
-void atkE7_trycastformdatachange(void);
-void atkE8_settypebasedhalvers(void);
-void atkE9_setweatherballtype(void);
-void atkEA_tryrecycleitem(void);
-void atkEB_settypetoterrain(void);
-void atkEC_pursuitrelated(void);
-void atkED_snatchsetbattlers(void);
-void atkEE_removelightscreenreflect(void);
-void atkEF_handleballthrow(void);
-void atkF0_givecaughtmon(void);
-void atkF1_trysetcaughtmondexflags(void);
-void atkF2_displaydexinfo(void);
-void atkF3_trygivecaughtmonnick(void);
-void atkF4_subattackerhpbydmg(void);
-void atkF5_removeattackerstatus1(void);
-void atkF6_finishaction(void);
-void atkF7_finishturn(void);
+static bool8 IsTwoTurnsMove(u16 move);
+static void TrySetDestinyBondToHappen(void);
+static u8 AttacksThisTurn(u8 battlerId, u16 move); // Note: returns 1 if it's a charging turn, otherwise 2.
+static void CheckWonderGuardAndLevitate(void);
+static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8, const u8 *BS_ptr);
+static void sub_8026480(void);
+static bool8 sub_80264D0(void);
+static void DrawLevelUpWindow1(void);
+static void DrawLevelUpWindow2(void);
+static bool8 sub_8026648(void);
+static void PutMonIconOnLvlUpBox(void);
+static void PutLevelAndGenderOnLvlUpBox(void);
+
+static void SpriteCB_MonIconOnLvlUpBox(struct Sprite *sprite);
+
+static void atk00_attackcanceler(void);
+static void atk01_accuracycheck(void);
+static void atk02_attackstring(void);
+static void atk03_ppreduce(void);
+static void atk04_critcalc(void);
+static void atk05_damagecalc(void);
+static void atk06_typecalc(void);
+static void atk07_adjustnormaldamage(void);
+static void atk08_adjustnormaldamage2(void);
+static void atk09_attackanimation(void);
+static void atk0A_waitanimation(void);
+static void atk0B_healthbarupdate(void);
+static void atk0C_datahpupdate(void);
+static void atk0D_critmessage(void);
+static void atk0E_effectivenesssound(void);
+static void atk0F_resultmessage(void);
+static void atk10_printstring(void);
+static void atk11_printselectionstring(void);
+static void atk12_waitmessage(void);
+static void atk13_printfromtable(void);
+static void atk14_printselectionstringfromtable(void);
+static void atk15_seteffectwithchance(void);
+static void atk16_seteffectprimary(void);
+static void atk17_seteffectsecondary(void);
+static void atk18_clearstatusfromeffect(void);
+static void atk19_tryfaintmon(void);
+static void atk1A_dofaintanimation(void);
+static void atk1B_cleareffectsonfaint(void);
+static void atk1C_jumpifstatus(void);
+static void atk1D_jumpifstatus2(void);
+static void atk1E_jumpifability(void);
+static void atk1F_jumpifsideaffecting(void);
+static void atk20_jumpifstat(void);
+static void atk21_jumpifstatus3condition(void);
+static void atk22_jumpiftype(void);
+static void atk23_getexp(void);
+static void atk24(void);
+static void atk25_movevaluescleanup(void);
+static void atk26_setmultihit(void);
+static void atk27_decrementmultihit(void);
+static void atk28_goto(void);
+static void atk29_jumpifbyte(void);
+static void atk2A_jumpifhalfword(void);
+static void atk2B_jumpifword(void);
+static void atk2C_jumpifarrayequal(void);
+static void atk2D_jumpifarraynotequal(void);
+static void atk2E_setbyte(void);
+static void atk2F_addbyte(void);
+static void atk30_subbyte(void);
+static void atk31_copyarray(void);
+static void atk32_copyarraywithindex(void);
+static void atk33_orbyte(void);
+static void atk34_orhalfword(void);
+static void atk35_orword(void);
+static void atk36_bicbyte(void);
+static void atk37_bichalfword(void);
+static void atk38_bicword(void);
+static void atk39_pause(void);
+static void atk3A_waitstate(void);
+static void atk3B_healthbar_update(void);
+static void atk3C_return(void);
+static void atk3D_end(void);
+static void atk3E_end2(void);
+static void atk3F_end3(void);
+static void atk40_jumpifaffectedbyprotect(void);
+static void atk41_call(void);
+static void atk42_jumpiftype2(void);
+static void atk43_jumpifabilitypresent(void);
+static void atk44_endselectionscript(void);
+static void atk45_playanimation(void);
+static void atk46_playanimation2(void);
+static void atk47_setgraphicalstatchangevalues(void);
+static void atk48_playstatchangeanimation(void);
+static void atk49_moveend(void);
+static void atk4A_typecalc2(void);
+static void atk4B_returnatktoball(void);
+static void atk4C_getswitchedmondata(void);
+static void atk4D_switchindataupdate(void);
+static void atk4E_switchinanim(void);
+static void atk4F_jumpifcantswitch(void);
+static void atk50_openpartyscreen(void);
+static void atk51_switchhandleorder(void);
+static void atk52_switchineffects(void);
+static void atk53_trainerslidein(void);
+static void atk54_playse(void);
+static void atk55_fanfare(void);
+static void atk56_playfaintcry(void);
+static void atk57(void);
+static void atk58_returntoball(void);
+static void atk59_handlelearnnewmove(void);
+static void atk5A_yesnoboxlearnmove(void);
+static void atk5B_yesnoboxstoplearningmove(void);
+static void atk5C_hitanimation(void);
+static void atk5D_getmoneyreward(void);
+static void atk5E(void);
+static void atk5F_swapattackerwithtarget(void);
+static void atk60_incrementgamestat(void);
+static void atk61_drawpartystatussummary(void);
+static void atk62_hidepartystatussummary(void);
+static void atk63_jumptocalledmove(void);
+static void atk64_statusanimation(void);
+static void atk65_status2animation(void);
+static void atk66_chosenstatusanimation(void);
+static void atk67_yesnobox(void);
+static void atk68_cancelallactions(void);
+static void atk69_adjustsetdamage(void);
+static void atk6A_removeitem(void);
+static void atk6B_atknameinbuff1(void);
+static void atk6C_drawlvlupbox(void);
+static void atk6D_resetsentmonsvalue(void);
+static void atk6E_setatktoplayer0(void);
+static void atk6F_makevisible(void);
+static void atk70_recordlastability(void);
+static void atk71_buffermovetolearn(void);
+static void atk72_jumpifplayerran(void);
+static void atk73_hpthresholds(void);
+static void atk74_hpthresholds2(void);
+static void atk75_useitemonopponent(void);
+static void atk76_various(void);
+static void atk77_setprotectlike(void);
+static void atk78_faintifabilitynotdamp(void);
+static void atk79_setatkhptozero(void);
+static void atk7A_jumpifnexttargetvalid(void);
+static void atk7B_tryhealhalfhealth(void);
+static void atk7C_trymirrormove(void);
+static void atk7D_setrain(void);
+static void atk7E_setreflect(void);
+static void atk7F_setseeded(void);
+static void atk80_manipulatedamage(void);
+static void atk81_trysetrest(void);
+static void atk82_jumpifnotfirstturn(void);
+static void atk83_nop(void);
+static void atk84_jumpifcantmakeasleep(void);
+static void atk85_stockpile(void);
+static void atk86_stockpiletobasedamage(void);
+static void atk87_stockpiletohpheal(void);
+static void atk88_negativedamage(void);
+static void atk89_statbuffchange(void);
+static void atk8A_normalisebuffs(void);
+static void atk8B_setbide(void);
+static void atk8C_confuseifrepeatingattackends(void);
+static void atk8D_setmultihitcounter(void);
+static void atk8E_initmultihitstring(void);
+static void atk8F_forcerandomswitch(void);
+static void atk90_tryconversiontypechange(void);
+static void atk91_givepaydaymoney(void);
+static void atk92_setlightscreen(void);
+static void atk93_tryKO(void);
+static void atk94_damagetohalftargethp(void);
+static void atk95_setsandstorm(void);
+static void atk96_weatherdamage(void);
+static void atk97_tryinfatuating(void);
+static void atk98_updatestatusicon(void);
+static void atk99_setmist(void);
+static void atk9A_setfocusenergy(void);
+static void atk9B_transformdataexecution(void);
+static void atk9C_setsubstitute(void);
+static void atk9D_mimicattackcopy(void);
+static void atk9E_metronome(void);
+static void atk9F_dmgtolevel(void);
+static void atkA0_psywavedamageeffect(void);
+static void atkA1_counterdamagecalculator(void);
+static void atkA2_mirrorcoatdamagecalculator(void);
+static void atkA3_disablelastusedattack(void);
+static void atkA4_trysetencore(void);
+static void atkA5_painsplitdmgcalc(void);
+static void atkA6_settypetorandomresistance(void);
+static void atkA7_setalwayshitflag(void);
+static void atkA8_copymovepermanently(void);
+static void atkA9_trychoosesleeptalkmove(void);
+static void atkAA_setdestinybond(void);
+static void atkAB_trysetdestinybondtohappen(void);
+static void atkAC_remaininghptopower(void);
+static void atkAD_tryspiteppreduce(void);
+static void atkAE_healpartystatus(void);
+static void atkAF_cursetarget(void);
+static void atkB0_trysetspikes(void);
+static void atkB1_setforesight(void);
+static void atkB2_trysetperishsong(void);
+static void atkB3_rolloutdamagecalculation(void);
+static void atkB4_jumpifconfusedandstatmaxed(void);
+static void atkB5_furycuttercalc(void);
+static void atkB6_happinesstodamagecalculation(void);
+static void atkB7_presentdamagecalculation(void);
+static void atkB8_setsafeguard(void);
+static void atkB9_magnitudedamagecalculation(void);
+static void atkBA_jumpifnopursuitswitchdmg(void);
+static void atkBB_setsunny(void);
+static void atkBC_maxattackhalvehp(void);
+static void atkBD_copyfoestats(void);
+static void atkBE_rapidspinfree(void);
+static void atkBF_setdefensecurlbit(void);
+static void atkC0_recoverbasedonsunlight(void);
+static void atkC1_hiddenpowercalc(void);
+static void atkC2_selectfirstvalidtarget(void);
+static void atkC3_trysetfutureattack(void);
+static void atkC4_trydobeatup(void);
+static void atkC5_setsemiinvulnerablebit(void);
+static void atkC6_clearsemiinvulnerablebit(void);
+static void atkC7_setminimize(void);
+static void atkC8_sethail(void);
+static void atkC9_jumpifattackandspecialattackcannotfall(void);
+static void atkCA_setforcedtarget(void);
+static void atkCB_setcharge(void);
+static void atkCC_callterrainattack(void);
+static void atkCD_cureifburnedparalysedorpoisoned(void);
+static void atkCE_settorment(void);
+static void atkCF_jumpifnodamage(void);
+static void atkD0_settaunt(void);
+static void atkD1_trysethelpinghand(void);
+static void atkD2_tryswapitems(void);
+static void atkD3_trycopyability(void);
+static void atkD4_trywish(void);
+static void atkD5_trysetroots(void);
+static void atkD6_doubledamagedealtifdamaged(void);
+static void atkD7_setyawn(void);
+static void atkD8_setdamagetohealthdifference(void);
+static void atkD9_scaledamagebyhealthratio(void);
+static void atkDA_tryswapabilities(void);
+static void atkDB_tryimprison(void);
+static void atkDC_trysetgrudge(void);
+static void atkDD_weightdamagecalculation(void);
+static void atkDE_assistattackselect(void);
+static void atkDF_trysetmagiccoat(void);
+static void atkE0_trysetsnatch(void);
+static void atkE1_trygetintimidatetarget(void);
+static void atkE2_switchoutabilities(void);
+static void atkE3_jumpifhasnohp(void);
+static void atkE4_getsecretpowereffect(void);
+static void atkE5_pickup(void);
+static void atkE6_docastformchangeanimation(void);
+static void atkE7_trycastformdatachange(void);
+static void atkE8_settypebasedhalvers(void);
+static void atkE9_setweatherballtype(void);
+static void atkEA_tryrecycleitem(void);
+static void atkEB_settypetoterrain(void);
+static void atkEC_pursuitrelated(void);
+static void atkED_snatchsetbattlers(void);
+static void atkEE_removelightscreenreflect(void);
+static void atkEF_handleballthrow(void);
+static void atkF0_givecaughtmon(void);
+static void atkF1_trysetcaughtmondexflags(void);
+static void atkF2_displaydexinfo(void);
+static void atkF3_trygivecaughtmonnick(void);
+static void atkF4_subattackerhpbydmg(void);
+static void atkF5_removeattackerstatus1(void);
+static void atkF6_finishaction(void);
+static void atkF7_finishturn(void);
void (* const gBattleScriptingCommandsTable[])(void) =
{
@@ -575,7 +575,7 @@ void (* const gBattleScriptingCommandsTable[])(void) =
atkF7_finishturn,
};
-const struct StatFractions sAccuracyStageRatios[] =
+static const struct StatFractions sAccuracyStageRatios[] =
{
{ 33, 100 }, // -6
{ 36, 100 }, // -5
@@ -593,9 +593,9 @@ const struct StatFractions sAccuracyStageRatios[] =
};
// The chance is 1/N for each stage.
-const u16 sCriticalHitChance[] = { 16, 8, 4, 3, 2 };
+static const u16 sCriticalHitChance[] = { 16, 8, 4, 3, 2 };
-const u32 sStatusFlagsForMoveEffects[] =
+static const u32 sStatusFlagsForMoveEffects[] =
{
0x00000000,
STATUS1_SLEEP,
@@ -659,7 +659,7 @@ const u32 sStatusFlagsForMoveEffects[] =
0x00000000
};
-const u8 *const sMoveEffectBS_Ptrs[] =
+static const u8 *const sMoveEffectBS_Ptrs[] =
{
[0] = BattleScript_MoveEffectSleep,
[MOVE_EFFECT_SLEEP] = BattleScript_MoveEffectSleep,
@@ -714,8 +714,8 @@ static const struct WindowTemplate sUnusedWinTemplate =
.baseBlock = 0x3F,
};
-const u16 gUnknown_82506D0[] = INCBIN_U16("graphics/battle_interface/unk_battlebox.gbapal");
-const u32 gUnknown_82506F0[] = INCBIN_U32("graphics/battle_interface/unk_battlebox.4bpp.lz");
+static const u16 gUnknown_82506D0[] = INCBIN_U16("graphics/battle_interface/unk_battlebox.gbapal");
+static const u32 gUnknown_82506F0[] = INCBIN_U32("graphics/battle_interface/unk_battlebox.4bpp.lz");
// not used
static const u8 sRubyLevelUpStatBoxStats[] =
@@ -724,7 +724,7 @@ static const u8 sRubyLevelUpStatBoxStats[] =
MON_DATA_SPDEF, MON_DATA_DEF, MON_DATA_SPEED
};
-const struct OamData sOamData_MonIconOnLvlUpBox =
+static const struct OamData sOamData_MonIconOnLvlUpBox =
{
.y = 0,
.affineMode = 0,
@@ -743,7 +743,7 @@ const struct OamData sOamData_MonIconOnLvlUpBox =
#define MON_ICON_LVLUP_BOX_TAG 0xD75A
-const struct SpriteTemplate sSpriteTemplate_MonIconOnLvlUpBox =
+static const struct SpriteTemplate sSpriteTemplate_MonIconOnLvlUpBox =
{
.tileTag = MON_ICON_LVLUP_BOX_TAG,
.paletteTag = MON_ICON_LVLUP_BOX_TAG,
@@ -754,7 +754,7 @@ const struct SpriteTemplate sSpriteTemplate_MonIconOnLvlUpBox =
.callback = SpriteCB_MonIconOnLvlUpBox
};
-const u16 sProtectSuccessRates[] =
+static const u16 sProtectSuccessRates[] =
{
USHRT_MAX,
USHRT_MAX / 2,
@@ -766,7 +766,7 @@ const u16 sProtectSuccessRates[] =
#define METRONOME_FORBIDDEN_END 0xFFFF
#define ASSIST_FORBIDDEN_END 0xFFFF
-const u16 sMovesForbiddenToCopy[] =
+static const u16 sMovesForbiddenToCopy[] =
{
MOVE_METRONOME,
MOVE_STRUGGLE,
@@ -790,7 +790,7 @@ const u16 sMovesForbiddenToCopy[] =
METRONOME_FORBIDDEN_END
};
-const u8 sFlailHpScaleToPowerTable[] =
+static const u8 sFlailHpScaleToPowerTable[] =
{
1, 200,
4, 150,
@@ -800,7 +800,7 @@ const u8 sFlailHpScaleToPowerTable[] =
48, 20
};
-const u16 sNaturePowerMoves[] =
+static const u16 sNaturePowerMoves[] =
{
MOVE_STUN_SPORE,
MOVE_RAZOR_LEAF,
@@ -814,7 +814,7 @@ const u16 sNaturePowerMoves[] =
MOVE_SWIFT
};
-const u16 sWeightToDamageTable[] =
+static const u16 sWeightToDamageTable[] =
{
100, 20,
250, 40,
@@ -830,7 +830,7 @@ struct PickupItem
u8 chance;
};
-const struct PickupItem sPickupItems[] =
+static const struct PickupItem sPickupItems[] =
{
{ ITEM_ORAN_BERRY, 15 },
{ ITEM_CHERI_BERRY, 25 },
@@ -851,7 +851,7 @@ const struct PickupItem sPickupItems[] =
};
-const u8 sTerrainToType[] =
+static const u8 sTerrainToType[] =
{
TYPE_GRASS, // tall grass
TYPE_GRASS, // long grass
@@ -865,7 +865,7 @@ const u8 sTerrainToType[] =
TYPE_NORMAL, // plain
};
-const u8 sBallCatchBonuses[] =
+static const u8 sBallCatchBonuses[] =
{
20, 15, 10, 15 // Ultra, Great, Poke, Safari
};
@@ -873,7 +873,7 @@ const u8 sBallCatchBonuses[] =
// not used
static const u32 gUnknown_8250898 = 0xFF7EAE60;
-void atk00_attackcanceler(void)
+static void atk00_attackcanceler(void)
{
s32 i;
@@ -962,7 +962,7 @@ void atk00_attackcanceler(void)
}
}
-void JumpIfMoveFailed(u8 adder, u16 move)
+static void JumpIfMoveFailed(u8 adder, u16 move)
{
const u8 *BS_ptr = gBattlescriptCurrInstr + adder;
@@ -981,7 +981,7 @@ void JumpIfMoveFailed(u8 adder, u16 move)
gBattlescriptCurrInstr = BS_ptr;
}
-void atk40_jumpifaffectedbyprotect(void)
+static void atk40_jumpifaffectedbyprotect(void)
{
if (DEFENDER_IS_PROTECTED)
{
@@ -995,7 +995,7 @@ void atk40_jumpifaffectedbyprotect(void)
}
}
-bool8 JumpIfMoveAffectedByProtect(u16 move)
+static bool8 JumpIfMoveAffectedByProtect(u16 move)
{
bool8 affected = FALSE;
@@ -1009,7 +1009,7 @@ bool8 JumpIfMoveAffectedByProtect(u16 move)
return affected;
}
-bool8 AccuracyCalcHelper(u16 move)
+static bool8 AccuracyCalcHelper(u16 move)
{
if (gStatuses3[gBattlerTarget] & STATUS3_ALWAYS_HITS && gDisableStructs[gBattlerTarget].battlerWithSureHit == gBattlerAttacker)
{
@@ -1046,7 +1046,7 @@ bool8 AccuracyCalcHelper(u16 move)
return FALSE;
}
-void atk01_accuracycheck(void)
+static void atk01_accuracycheck(void)
{
u16 move = T2_READ_16(gBattlescriptCurrInstr + 5);
@@ -1140,7 +1140,7 @@ void atk01_accuracycheck(void)
}
}
-void atk02_attackstring(void)
+static void atk02_attackstring(void)
{
if (!gBattleControllerExecFlags)
{
@@ -1154,7 +1154,7 @@ void atk02_attackstring(void)
}
}
- void atk03_ppreduce(void)
+ static void atk03_ppreduce(void)
{
s32 ppToDeduct = 1;
@@ -1199,7 +1199,7 @@ void atk02_attackstring(void)
}
}
-void atk04_critcalc(void)
+static void atk04_critcalc(void)
{
u8 holdEffect;
u16 item, critChance;
@@ -1232,7 +1232,7 @@ void atk04_critcalc(void)
++gBattlescriptCurrInstr;
}
-void atk05_damagecalc(void)
+static void atk05_damagecalc(void)
{
u16 sideStatus = gSideStatuses[GET_BATTLER_SIDE(gBattlerTarget)];
@@ -1305,7 +1305,7 @@ void ModulateDmgByType(u8 multiplier)
}
}
-void atk06_typecalc(void)
+static void atk06_typecalc(void)
{
s32 i = 0;
u8 moveType;
@@ -1372,7 +1372,7 @@ void atk06_typecalc(void)
++gBattlescriptCurrInstr;
}
-void CheckWonderGuardAndLevitate(void)
+static void CheckWonderGuardAndLevitate(void)
{
u8 flags = 0;
s32 i = 0;
@@ -1442,7 +1442,7 @@ void CheckWonderGuardAndLevitate(void)
}
// same as ModulateDmgByType except different arguments
-void ModulateDmgByType2(u8 multiplier, u16 move, u8 *flags)
+static void ModulateDmgByType2(u8 multiplier, u16 move, u8 *flags)
{
gBattleMoveDamage = gBattleMoveDamage * multiplier / 10;
if (gBattleMoveDamage == 0 && multiplier != 0)
@@ -1585,12 +1585,12 @@ static inline void ApplyRandomDmgMultiplier(void)
}
}
-void Unused_ApplyRandomDmgMultiplier(void)
+static void Unused_ApplyRandomDmgMultiplier(void)
{
ApplyRandomDmgMultiplier();
}
-void atk07_adjustnormaldamage(void)
+static void atk07_adjustnormaldamage(void)
{
u8 holdEffect, param;
@@ -1630,7 +1630,7 @@ void atk07_adjustnormaldamage(void)
}
// The same as 0x7 except it doesn't check for false swipe move effect.
-void atk08_adjustnormaldamage2(void)
+static void atk08_adjustnormaldamage2(void)
{
u8 holdEffect, param;
@@ -1669,7 +1669,7 @@ void atk08_adjustnormaldamage2(void)
++gBattlescriptCurrInstr;
}
-void atk09_attackanimation(void)
+static void atk09_attackanimation(void)
{
if (!gBattleControllerExecFlags)
{
@@ -1708,13 +1708,13 @@ void atk09_attackanimation(void)
}
}
-void atk0A_waitanimation(void)
+static void atk0A_waitanimation(void)
{
if (!gBattleControllerExecFlags)
++gBattlescriptCurrInstr;
}
-void atk0B_healthbarupdate(void)
+static void atk0B_healthbarupdate(void)
{
if (!gBattleControllerExecFlags)
{
@@ -1746,7 +1746,7 @@ void atk0B_healthbarupdate(void)
}
}
-void atk0C_datahpupdate(void)
+static void atk0C_datahpupdate(void)
{
u32 moveType;
@@ -1869,7 +1869,7 @@ void atk0C_datahpupdate(void)
}
}
-void atk0D_critmessage(void)
+static void atk0D_critmessage(void)
{
if (!gBattleControllerExecFlags)
{
@@ -1882,7 +1882,7 @@ void atk0D_critmessage(void)
}
}
-void atk0E_effectivenesssound(void)
+static void atk0E_effectivenesssound(void)
{
if (!gBattleControllerExecFlags)
{
@@ -1929,7 +1929,7 @@ void atk0E_effectivenesssound(void)
}
}
-void atk0F_resultmessage(void)
+static void atk0F_resultmessage(void)
{
u32 stringId = 0;
@@ -2016,7 +2016,7 @@ void atk0F_resultmessage(void)
}
}
-void atk10_printstring(void)
+static void atk10_printstring(void)
{
if (!gBattleControllerExecFlags)
{
@@ -2027,7 +2027,7 @@ void atk10_printstring(void)
}
}
-void atk11_printselectionstring(void)
+static void atk11_printselectionstring(void)
{
gActiveBattler = gBattlerAttacker;
BtlController_EmitPrintSelectionString(0, T2_READ_16(gBattlescriptCurrInstr + 1));
@@ -2036,7 +2036,7 @@ void atk11_printselectionstring(void)
gBattleCommunication[MSG_DISPLAY] = 1;
}
-void atk12_waitmessage(void)
+static void atk12_waitmessage(void)
{
if (!gBattleControllerExecFlags)
{
@@ -2057,7 +2057,7 @@ void atk12_waitmessage(void)
}
}
-void atk13_printfromtable(void)
+static void atk13_printfromtable(void)
{
if (!gBattleControllerExecFlags)
{
@@ -2070,7 +2070,7 @@ void atk13_printfromtable(void)
}
}
-void atk14_printselectionstringfromtable(void)
+static void atk14_printselectionstringfromtable(void)
{
if (!gBattleControllerExecFlags)
{
@@ -2736,7 +2736,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
}
}
-void atk15_seteffectwithchance(void)
+static void atk15_seteffectwithchance(void)
{
u32 percentChance;
@@ -2767,17 +2767,17 @@ void atk15_seteffectwithchance(void)
gBattleScripting.multihitMoveEffect = 0;
}
-void atk16_seteffectprimary(void)
+static void atk16_seteffectprimary(void)
{
SetMoveEffect(TRUE, 0);
}
-void atk17_seteffectsecondary(void)
+static void atk17_seteffectsecondary(void)
{
SetMoveEffect(FALSE, 0);
}
-void atk18_clearstatusfromeffect(void)
+static void atk18_clearstatusfromeffect(void)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
@@ -2790,7 +2790,7 @@ void atk18_clearstatusfromeffect(void)
gBattleScripting.multihitMoveEffect = 0;
}
-void atk19_tryfaintmon(void)
+static void atk19_tryfaintmon(void)
{
const u8 *BS_ptr;
@@ -2876,7 +2876,7 @@ void atk19_tryfaintmon(void)
}
}
-void atk1A_dofaintanimation(void)
+static void atk1A_dofaintanimation(void)
{
if (!gBattleControllerExecFlags)
{
@@ -2887,7 +2887,7 @@ void atk1A_dofaintanimation(void)
}
}
-void atk1B_cleareffectsonfaint(void)
+static void atk1B_cleareffectsonfaint(void)
{
if (!gBattleControllerExecFlags)
{
@@ -2900,7 +2900,7 @@ void atk1B_cleareffectsonfaint(void)
}
}
-void atk1C_jumpifstatus(void)
+static void atk1C_jumpifstatus(void)
{
u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
u32 flags = T2_READ_32(gBattlescriptCurrInstr + 2);
@@ -2912,7 +2912,7 @@ void atk1C_jumpifstatus(void)
gBattlescriptCurrInstr += 10;
}
-void atk1D_jumpifstatus2(void)
+static void atk1D_jumpifstatus2(void)
{
u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
u32 flags = T2_READ_32(gBattlescriptCurrInstr + 2);
@@ -2924,7 +2924,7 @@ void atk1D_jumpifstatus2(void)
gBattlescriptCurrInstr += 10;
}
-void atk1E_jumpifability(void)
+static void atk1E_jumpifability(void)
{
u8 battlerId;
u8 ability = gBattlescriptCurrInstr[2];
@@ -2971,7 +2971,7 @@ void atk1E_jumpifability(void)
}
}
-void atk1F_jumpifsideaffecting(void)
+static void atk1F_jumpifsideaffecting(void)
{
u8 side;
u16 flags;
@@ -2991,7 +2991,7 @@ void atk1F_jumpifsideaffecting(void)
gBattlescriptCurrInstr += 8;
}
-void atk20_jumpifstat(void)
+static void atk20_jumpifstat(void)
{
u8 ret = 0;
u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
@@ -3030,7 +3030,7 @@ void atk20_jumpifstat(void)
gBattlescriptCurrInstr += 9;
}
-void atk21_jumpifstatus3condition(void)
+static void atk21_jumpifstatus3condition(void)
{
u32 flags;
const u8 *jumpPtr;
@@ -3054,7 +3054,7 @@ void atk21_jumpifstatus3condition(void)
}
}
-void atk22_jumpiftype(void)
+static void atk22_jumpiftype(void)
{
u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
u8 type = gBattlescriptCurrInstr[2];
@@ -3066,7 +3066,7 @@ void atk22_jumpiftype(void)
gBattlescriptCurrInstr += 7;
}
-void atk23_getexp(void)
+static void atk23_getexp(void)
{
u16 item;
s32 i; // also used as stringId
@@ -3315,7 +3315,7 @@ void atk23_getexp(void)
}
}
-void atk24(void)
+static void atk24(void)
{
u16 HP_count = 0;
s32 i;
@@ -3383,7 +3383,7 @@ void atk24(void)
}
}
-void MoveValuesCleanUp(void)
+static void MoveValuesCleanUp(void)
{
gMoveResultFlags = 0;
gBattleScripting.dmgMultiplier = 1;
@@ -3394,19 +3394,19 @@ void MoveValuesCleanUp(void)
gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT);
}
-void atk25_movevaluescleanup(void)
+static void atk25_movevaluescleanup(void)
{
MoveValuesCleanUp();
gBattlescriptCurrInstr += 1;
}
-void atk26_setmultihit(void)
+static void atk26_setmultihit(void)
{
gMultiHitCounter = gBattlescriptCurrInstr[1];
gBattlescriptCurrInstr += 2;
}
-void atk27_decrementmultihit(void)
+static void atk27_decrementmultihit(void)
{
if (--gMultiHitCounter == 0)
gBattlescriptCurrInstr += 5;
@@ -3414,12 +3414,12 @@ void atk27_decrementmultihit(void)
gBattlescriptCurrInstr = T2_READ_PTR(gBattlescriptCurrInstr + 1);
}
-void atk28_goto(void)
+static void atk28_goto(void)
{
gBattlescriptCurrInstr = T2_READ_PTR(gBattlescriptCurrInstr + 1);
}
-void atk29_jumpifbyte(void)
+static void atk29_jumpifbyte(void)
{
u8 caseID = gBattlescriptCurrInstr[1];
const u8 *memByte = T2_READ_PTR(gBattlescriptCurrInstr + 2);
@@ -3457,7 +3457,7 @@ void atk29_jumpifbyte(void)
}
}
-void atk2A_jumpifhalfword(void)
+static void atk2A_jumpifhalfword(void)
{
u8 caseID = gBattlescriptCurrInstr[1];
const u16 *memHword = T2_READ_PTR(gBattlescriptCurrInstr + 2);
@@ -3494,7 +3494,7 @@ void atk2A_jumpifhalfword(void)
}
}
-void atk2B_jumpifword(void)
+static void atk2B_jumpifword(void)
{
u8 caseID = gBattlescriptCurrInstr[1];
const u32* memWord = T2_READ_PTR(gBattlescriptCurrInstr + 2);
@@ -3531,7 +3531,7 @@ void atk2B_jumpifword(void)
}
}
-void atk2C_jumpifarrayequal(void)
+static void atk2C_jumpifarrayequal(void)
{
const u8 *mem1 = T2_READ_PTR(gBattlescriptCurrInstr + 1);
const u8 *mem2 = T2_READ_PTR(gBattlescriptCurrInstr + 5);
@@ -3552,7 +3552,7 @@ void atk2C_jumpifarrayequal(void)
gBattlescriptCurrInstr = jumpPtr;
}
-void atk2D_jumpifarraynotequal(void)
+static void atk2D_jumpifarraynotequal(void)
{
u8 equalBytes = 0;
const u8 *mem1 = T2_READ_PTR(gBattlescriptCurrInstr + 1);
@@ -3573,7 +3573,7 @@ void atk2D_jumpifarraynotequal(void)
gBattlescriptCurrInstr += 14;
}
-void atk2E_setbyte(void)
+static void atk2E_setbyte(void)
{
u8 *memByte = T2_READ_PTR(gBattlescriptCurrInstr + 1);
@@ -3581,7 +3581,7 @@ void atk2E_setbyte(void)
gBattlescriptCurrInstr += 6;
}
-void atk2F_addbyte(void)
+static void atk2F_addbyte(void)
{
u8 *memByte = T2_READ_PTR(gBattlescriptCurrInstr + 1);
@@ -3589,7 +3589,7 @@ void atk2F_addbyte(void)
gBattlescriptCurrInstr += 6;
}
-void atk30_subbyte(void)
+static void atk30_subbyte(void)
{
u8 *memByte = T2_READ_PTR(gBattlescriptCurrInstr + 1);
@@ -3597,7 +3597,7 @@ void atk30_subbyte(void)
gBattlescriptCurrInstr += 6;
}
-void atk31_copyarray(void)
+static void atk31_copyarray(void)
{
u8 *dest = T2_READ_PTR(gBattlescriptCurrInstr + 1);
const u8 *src = T2_READ_PTR(gBattlescriptCurrInstr + 5);
@@ -3611,7 +3611,7 @@ void atk31_copyarray(void)
gBattlescriptCurrInstr += 10;
}
-void atk32_copyarraywithindex(void)
+static void atk32_copyarraywithindex(void)
{
u8 *dest = T2_READ_PTR(gBattlescriptCurrInstr + 1);
const u8 *src = T2_READ_PTR(gBattlescriptCurrInstr + 5);
@@ -3626,14 +3626,14 @@ void atk32_copyarraywithindex(void)
gBattlescriptCurrInstr += 14;
}
-void atk33_orbyte(void)
+static void atk33_orbyte(void)
{
u8 *memByte = T2_READ_PTR(gBattlescriptCurrInstr + 1);
*memByte |= gBattlescriptCurrInstr[5];
gBattlescriptCurrInstr += 6;
}
-void atk34_orhalfword(void)
+static void atk34_orhalfword(void)
{
u16 *memHword = T2_READ_PTR(gBattlescriptCurrInstr + 1);
u16 val = T2_READ_16(gBattlescriptCurrInstr + 5);
@@ -3642,7 +3642,7 @@ void atk34_orhalfword(void)
gBattlescriptCurrInstr += 7;
}
-void atk35_orword(void)
+static void atk35_orword(void)
{
u32 *memWord = T2_READ_PTR(gBattlescriptCurrInstr + 1);
u32 val = T2_READ_32(gBattlescriptCurrInstr + 5);
@@ -3651,7 +3651,7 @@ void atk35_orword(void)
gBattlescriptCurrInstr += 9;
}
-void atk36_bicbyte(void)
+static void atk36_bicbyte(void)
{
u8 *memByte = T2_READ_PTR(gBattlescriptCurrInstr + 1);
@@ -3659,7 +3659,7 @@ void atk36_bicbyte(void)
gBattlescriptCurrInstr += 6;
}
-void atk37_bichalfword(void)
+static void atk37_bichalfword(void)
{
u16 *memHword = T2_READ_PTR(gBattlescriptCurrInstr + 1);
u16 val = T2_READ_16(gBattlescriptCurrInstr + 5);
@@ -3668,7 +3668,7 @@ void atk37_bichalfword(void)
gBattlescriptCurrInstr += 7;
}
-void atk38_bicword(void)
+static void atk38_bicword(void)
{
u32 *memWord = T2_READ_PTR(gBattlescriptCurrInstr + 1);
u32 val = T2_READ_32(gBattlescriptCurrInstr + 5);
@@ -3677,7 +3677,7 @@ void atk38_bicword(void)
gBattlescriptCurrInstr += 9;
}
-void atk39_pause(void)
+static void atk39_pause(void)
{
if (!gBattleControllerExecFlags)
{
@@ -3691,13 +3691,13 @@ void atk39_pause(void)
}
}
-void atk3A_waitstate(void)
+static void atk3A_waitstate(void)
{
if (!gBattleControllerExecFlags)
++gBattlescriptCurrInstr;
}
-void atk3B_healthbar_update(void)
+static void atk3B_healthbar_update(void)
{
if (gBattlescriptCurrInstr[1] == BS_TARGET)
gActiveBattler = gBattlerTarget;
@@ -3708,25 +3708,25 @@ void atk3B_healthbar_update(void)
gBattlescriptCurrInstr += 2;
}
-void atk3C_return(void)
+static void atk3C_return(void)
{
BattleScriptPop();
}
-void atk3D_end(void)
+static void atk3D_end(void)
{
gMoveResultFlags = 0;
gActiveBattler = 0;
gCurrentActionFuncId = B_ACTION_TRY_FINISH;
}
-void atk3E_end2(void)
+static void atk3E_end2(void)
{
gActiveBattler = 0;
gCurrentActionFuncId = B_ACTION_TRY_FINISH;
}
-void atk3F_end3(void) // pops the main function stack
+static void atk3F_end3(void) // pops the main function stack
{
BattleScriptPop();
if (gBattleResources->battleCallbackStack->size != 0)
@@ -3734,13 +3734,13 @@ void atk3F_end3(void) // pops the main function stack
gBattleMainFunc = gBattleResources->battleCallbackStack->function[gBattleResources->battleCallbackStack->size];
}
-void atk41_call(void)
+static void atk41_call(void)
{
BattleScriptPush(gBattlescriptCurrInstr + 5);
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
}
-void atk42_jumpiftype2(void)
+static void atk42_jumpiftype2(void)
{
u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
@@ -3750,7 +3750,7 @@ void atk42_jumpiftype2(void)
gBattlescriptCurrInstr += 7;
}
-void atk43_jumpifabilitypresent(void)
+static void atk43_jumpifabilitypresent(void)
{
if (AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, gBattlescriptCurrInstr[1], 0, 0))
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2);
@@ -3758,12 +3758,12 @@ void atk43_jumpifabilitypresent(void)
gBattlescriptCurrInstr += 6;
}
-void atk44_endselectionscript(void)
+static void atk44_endselectionscript(void)
{
*(gBattlerAttacker + gBattleStruct->selectionScriptFinished) = TRUE;
}
-void atk45_playanimation(void)
+static void atk45_playanimation(void)
{
const u16 *argumentPtr;
@@ -3804,7 +3804,7 @@ void atk45_playanimation(void)
}
}
-void atk46_playanimation2(void) // animation Id is stored in the first pointer
+static void atk46_playanimation2(void) // animation Id is stored in the first pointer
{
const u16 *argumentPtr;
const u8 *animationIdPtr;
@@ -3845,7 +3845,7 @@ void atk46_playanimation2(void) // animation Id is stored in the first pointer
}
}
-void atk47_setgraphicalstatchangevalues(void)
+static void atk47_setgraphicalstatchangevalues(void)
{
u8 value = 0;
@@ -3869,7 +3869,7 @@ void atk47_setgraphicalstatchangevalues(void)
++gBattlescriptCurrInstr;
}
-void atk48_playstatchangeanimation(void)
+static void atk48_playstatchangeanimation(void)
{
u32 currStat = 0;
u16 statAnimId = 0;
@@ -3967,7 +3967,7 @@ void atk48_playstatchangeanimation(void)
}
}
-void atk49_moveend(void)
+static void atk49_moveend(void)
{
s32 i;
bool32 effect = FALSE;
@@ -4253,7 +4253,7 @@ void atk49_moveend(void)
gBattlescriptCurrInstr += 3;
}
-void atk4A_typecalc2(void)
+static void atk4A_typecalc2(void)
{
u8 flags = 0;
s32 i = 0;
@@ -4345,7 +4345,7 @@ void atk4A_typecalc2(void)
++gBattlescriptCurrInstr;
}
-void atk4B_returnatktoball(void)
+static void atk4B_returnatktoball(void)
{
gActiveBattler = gBattlerAttacker;
if (!(gHitMarker & HITMARKER_FAINTED(gActiveBattler)))
@@ -4356,7 +4356,7 @@ void atk4B_returnatktoball(void)
++gBattlescriptCurrInstr;
}
-void atk4C_getswitchedmondata(void)
+static void atk4C_getswitchedmondata(void)
{
if (!gBattleControllerExecFlags)
{
@@ -4368,7 +4368,7 @@ void atk4C_getswitchedmondata(void)
}
}
-void atk4D_switchindataupdate(void)
+static void atk4D_switchindataupdate(void)
{
struct BattlePokemon oldData;
s32 i;
@@ -4405,7 +4405,7 @@ void atk4D_switchindataupdate(void)
}
}
-void atk4E_switchinanim(void)
+static void atk4E_switchinanim(void)
{
if (!gBattleControllerExecFlags)
{
@@ -4426,7 +4426,7 @@ void atk4E_switchinanim(void)
}
}
-void atk4F_jumpifcantswitch(void)
+static void atk4F_jumpifcantswitch(void)
{
s32 i;
s32 lastMonId;
@@ -4500,14 +4500,14 @@ void atk4F_jumpifcantswitch(void)
}
}
-void sub_8024398(u8 arg0)
+static void sub_8024398(u8 arg0)
{
*(gBattleStruct->field_58 + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
BtlController_EmitChoosePokemon(0, PARTY_MUST_CHOOSE_MON, arg0, 0, gBattleStruct->field_60[gActiveBattler]);
MarkBattlerForControllerExec(gActiveBattler);
}
-void atk50_openpartyscreen(void)
+static void atk50_openpartyscreen(void)
{
u32 flags;
u8 hitmarkerFaintBits;
@@ -4786,7 +4786,7 @@ void atk50_openpartyscreen(void)
}
}
-void atk51_switchhandleorder(void)
+static void atk51_switchhandleorder(void)
{
s32 i;
@@ -4829,7 +4829,7 @@ void atk51_switchhandleorder(void)
}
}
-void atk52_switchineffects(void)
+static void atk52_switchineffects(void)
{
s32 i;
@@ -4897,7 +4897,7 @@ void atk52_switchineffects(void)
}
}
-void atk53_trainerslidein(void)
+static void atk53_trainerslidein(void)
{
if (!gBattlescriptCurrInstr[1])
gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
@@ -4908,7 +4908,7 @@ void atk53_trainerslidein(void)
gBattlescriptCurrInstr += 2;
}
-void atk54_playse(void)
+static void atk54_playse(void)
{
gActiveBattler = gBattlerAttacker;
BtlController_EmitPlaySE(0, T2_READ_16(gBattlescriptCurrInstr + 1));
@@ -4916,7 +4916,7 @@ void atk54_playse(void)
gBattlescriptCurrInstr += 3;
}
-void atk55_fanfare(void)
+static void atk55_fanfare(void)
{
gActiveBattler = gBattlerAttacker;
BtlController_EmitPlayFanfare(0, T2_READ_16(gBattlescriptCurrInstr + 1));
@@ -4924,7 +4924,7 @@ void atk55_fanfare(void)
gBattlescriptCurrInstr += 3;
}
-void atk56_playfaintcry(void)
+static void atk56_playfaintcry(void)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
BtlController_EmitFaintingCry(0);
@@ -4932,7 +4932,7 @@ void atk56_playfaintcry(void)
gBattlescriptCurrInstr += 2;
}
-void atk57(void)
+static void atk57(void)
{
gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
BtlController_EmitCmd55(0, gBattleOutcome);
@@ -4940,7 +4940,7 @@ void atk57(void)
gBattlescriptCurrInstr += 1;
}
-void atk58_returntoball(void)
+static void atk58_returntoball(void)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
BtlController_EmitReturnMonToBall(0, 1);
@@ -4948,7 +4948,7 @@ void atk58_returntoball(void)
gBattlescriptCurrInstr += 2;
}
-void atk59_handlelearnnewmove(void)
+static void atk59_handlelearnnewmove(void)
{
const u8 *jumpPtr1 = T1_READ_PTR(gBattlescriptCurrInstr + 1);
const u8 *jumpPtr2 = T1_READ_PTR(gBattlescriptCurrInstr + 5);
@@ -4985,7 +4985,7 @@ void atk59_handlelearnnewmove(void)
}
}
-void atk5A_yesnoboxlearnmove(void)
+static void atk5A_yesnoboxlearnmove(void)
{
gActiveBattler = 0;
@@ -5097,7 +5097,7 @@ void atk5A_yesnoboxlearnmove(void)
}
}
-void atk5B_yesnoboxstoplearningmove(void)
+static void atk5B_yesnoboxstoplearningmove(void)
{
switch (gBattleScripting.learnMoveState)
{
@@ -5143,7 +5143,7 @@ void atk5B_yesnoboxstoplearningmove(void)
}
}
-void atk5C_hitanimation(void)
+static void atk5C_hitanimation(void)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
@@ -5165,7 +5165,7 @@ void atk5C_hitanimation(void)
}
#ifdef NONMATCHING
-void atk5D_getmoneyreward(void)
+static void atk5D_getmoneyreward(void)
{
u32 i = 0;
u32 lastMonLevel = 0;
@@ -5239,7 +5239,7 @@ void atk5D_getmoneyreward(void)
}
#else
NAKED
-void atk5D_getmoneyreward(void)
+static void atk5D_getmoneyreward(void)
{
asm_unified("\n\
push {r4-r7,lr}\n\
@@ -5474,7 +5474,7 @@ void atk5D_getmoneyreward(void)
}
#endif
-void atk5E(void)
+static void atk5E(void)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
@@ -5502,7 +5502,7 @@ void atk5E(void)
}
}
-void atk5F_swapattackerwithtarget(void)
+static void atk5F_swapattackerwithtarget(void)
{
gActiveBattler = gBattlerAttacker;
gBattlerAttacker = gBattlerTarget;
@@ -5514,14 +5514,14 @@ void atk5F_swapattackerwithtarget(void)
++gBattlescriptCurrInstr;
}
-void atk60_incrementgamestat(void)
+static void atk60_incrementgamestat(void)
{
if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
IncrementGameStat(gBattlescriptCurrInstr[1]);
gBattlescriptCurrInstr += 2;
}
-void atk61_drawpartystatussummary(void)
+static void atk61_drawpartystatussummary(void)
{
s32 i;
struct Pokemon *party;
@@ -5556,7 +5556,7 @@ void atk61_drawpartystatussummary(void)
}
}
-void atk62_hidepartystatussummary(void)
+static void atk62_hidepartystatussummary(void)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
BtlController_EmitHidePartyStatusSummary(0);
@@ -5564,7 +5564,7 @@ void atk62_hidepartystatussummary(void)
gBattlescriptCurrInstr += 2;
}
-void atk63_jumptocalledmove(void)
+static void atk63_jumptocalledmove(void)
{
if (gBattlescriptCurrInstr[1])
gCurrentMove = gCalledMove;
@@ -5573,7 +5573,7 @@ void atk63_jumptocalledmove(void)
gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect];
}
-void atk64_statusanimation(void)
+static void atk64_statusanimation(void)
{
if (!gBattleControllerExecFlags)
{
@@ -5589,7 +5589,7 @@ void atk64_statusanimation(void)
}
}
-void atk65_status2animation(void)
+static void atk65_status2animation(void)
{
u32 wantedToAnimate;
@@ -5608,7 +5608,7 @@ void atk65_status2animation(void)
}
}
-void atk66_chosenstatusanimation(void)
+static void atk66_chosenstatusanimation(void)
{
u32 wantedStatus;
@@ -5627,7 +5627,7 @@ void atk66_chosenstatusanimation(void)
}
}
-void atk67_yesnobox(void)
+static void atk67_yesnobox(void)
{
switch (gBattleCommunication[0])
{
@@ -5670,7 +5670,7 @@ void atk67_yesnobox(void)
}
}
-void atk68_cancelallactions(void)
+static void atk68_cancelallactions(void)
{
s32 i;
@@ -5680,7 +5680,7 @@ void atk68_cancelallactions(void)
}
// The same as 0x7, except there's no random damage multiplier.
-void atk69_adjustsetdamage(void)
+static void atk69_adjustsetdamage(void)
{
u8 holdEffect, param;
@@ -5718,7 +5718,7 @@ void atk69_adjustsetdamage(void)
++gBattlescriptCurrInstr;
}
-void atk6A_removeitem(void)
+static void atk6A_removeitem(void)
{
u16 *usedHeldItem;
@@ -5731,13 +5731,13 @@ void atk6A_removeitem(void)
gBattlescriptCurrInstr += 2;
}
-void atk6B_atknameinbuff1(void)
+static void atk6B_atknameinbuff1(void)
{
PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBattlerAttacker, gBattlerPartyIndexes[gBattlerAttacker])
++gBattlescriptCurrInstr;
}
-void atk6C_drawlvlupbox(void)
+static void atk6C_drawlvlupbox(void)
{
if (gBattleScripting.atk6C_state == 0)
{
@@ -5826,7 +5826,7 @@ void atk6C_drawlvlupbox(void)
}
}
-void DrawLevelUpWindow1(void)
+static void DrawLevelUpWindow1(void)
{
u16 currStats[NUM_STATS];
@@ -5834,7 +5834,7 @@ void DrawLevelUpWindow1(void)
DrawLevelUpWindowPg1(12, gBattleResources->beforeLvlUp->stats, currStats, 0xE, 0xD, 0xF);
}
-void DrawLevelUpWindow2(void)
+static void DrawLevelUpWindow2(void)
{
u16 currStats[NUM_STATS];
@@ -5842,7 +5842,7 @@ void DrawLevelUpWindow2(void)
DrawLevelUpWindowPg2(12, currStats, 0xE, 0xD, 0xF);
}
-void sub_8026480(void)
+static void sub_8026480(void)
{
gBattle_BG2_Y = 0;
gBattle_BG2_X = 0x1A0;
@@ -5853,7 +5853,7 @@ void sub_8026480(void)
PutMonIconOnLvlUpBox();
}
-bool8 sub_80264D0(void)
+static bool8 sub_80264D0(void)
{
if (IsDma3ManagerBusyWithBgCopy())
return TRUE;
@@ -5867,7 +5867,7 @@ bool8 sub_80264D0(void)
return (gBattle_BG2_X != 0x200);
}
-void PutLevelAndGenderOnLvlUpBox(void)
+static void PutLevelAndGenderOnLvlUpBox(void)
{
u16 monLevel;
u8 monGender;
@@ -5922,7 +5922,7 @@ void PutLevelAndGenderOnLvlUpBox(void)
CopyWindowToVram(13, 2);
}
-bool8 sub_8026648(void)
+static bool8 sub_8026648(void)
{
if (gBattle_BG2_X == 0x1A0)
return FALSE;
@@ -5936,7 +5936,7 @@ bool8 sub_8026648(void)
#define sDestroy data[0]
#define sSavedLvlUpBoxXPosition data[1]
-void PutMonIconOnLvlUpBox(void)
+static void PutMonIconOnLvlUpBox(void)
{
u8 spriteId;
const u16 *iconPal;
@@ -5959,7 +5959,7 @@ void PutMonIconOnLvlUpBox(void)
gSprites[spriteId].sSavedLvlUpBoxXPosition = gBattle_BG2_X;
}
-void SpriteCB_MonIconOnLvlUpBox(struct Sprite* sprite)
+static void SpriteCB_MonIconOnLvlUpBox(struct Sprite* sprite)
{
sprite->pos2.x = sprite->sSavedLvlUpBoxXPosition - gBattle_BG2_X;
if (sprite->pos2.x != 0)
@@ -5983,19 +5983,19 @@ bool32 IsMonGettingExpSentOut(void)
return FALSE;
}
-void atk6D_resetsentmonsvalue(void)
+static void atk6D_resetsentmonsvalue(void)
{
ResetSentPokesToOpponentValue();
++gBattlescriptCurrInstr;
}
-void atk6E_setatktoplayer0(void)
+static void atk6E_setatktoplayer0(void)
{
gBattlerAttacker = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
++gBattlescriptCurrInstr;
}
-void atk6F_makevisible(void)
+static void atk6F_makevisible(void)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
BtlController_EmitSpriteInvisibility(0, FALSE);
@@ -6004,7 +6004,7 @@ void atk6F_makevisible(void)
gBattlescriptCurrInstr += 2;
}
-void atk70_recordlastability(void)
+static void atk70_recordlastability(void)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
RecordAbilityBattle(gActiveBattler, gLastUsedAbility);
@@ -6016,13 +6016,13 @@ void BufferMoveToLearnIntoBattleTextBuff2(void)
PREPARE_MOVE_BUFFER(gBattleTextBuff2, gMoveToLearn);
}
-void atk71_buffermovetolearn(void)
+static void atk71_buffermovetolearn(void)
{
BufferMoveToLearnIntoBattleTextBuff2();
++gBattlescriptCurrInstr;
}
-void atk72_jumpifplayerran(void)
+static void atk72_jumpifplayerran(void)
{
if (TryRunFromBattle(gBattlerFainted))
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
@@ -6030,7 +6030,7 @@ void atk72_jumpifplayerran(void)
gBattlescriptCurrInstr += 5;
}
-void atk73_hpthresholds(void)
+static void atk73_hpthresholds(void)
{
u8 opposingBattler;
s32 result;
@@ -6055,7 +6055,7 @@ void atk73_hpthresholds(void)
gBattlescriptCurrInstr += 2;
}
-void atk74_hpthresholds2(void)
+static void atk74_hpthresholds2(void)
{
u8 opposingBattler;
s32 result;
@@ -6080,14 +6080,14 @@ void atk74_hpthresholds2(void)
gBattlescriptCurrInstr += 2;
}
-void atk75_useitemonopponent(void)
+static void atk75_useitemonopponent(void)
{
gBattlerInMenuId = gBattlerAttacker;
PokemonUseItemEffects(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker]], gLastUsedItem, gBattlerPartyIndexes[gBattlerAttacker], 0, 1);
++gBattlescriptCurrInstr;
}
-void atk76_various(void)
+static void atk76_various(void)
{
u8 side;
s32 i;
@@ -6243,7 +6243,7 @@ void atk76_various(void)
gBattlescriptCurrInstr += 3;
}
-void atk77_setprotectlike(void)
+static void atk77_setprotectlike(void)
{
bool8 notLastTurn = TRUE;
u16 lastMove = gLastResultingMoves[gBattlerAttacker];
@@ -6275,7 +6275,7 @@ void atk77_setprotectlike(void)
++gBattlescriptCurrInstr;
}
-void atk78_faintifabilitynotdamp(void)
+static void atk78_faintifabilitynotdamp(void)
{
if (!gBattleControllerExecFlags)
{
@@ -6309,7 +6309,7 @@ void atk78_faintifabilitynotdamp(void)
}
}
-void atk79_setatkhptozero(void)
+static void atk79_setatkhptozero(void)
{
if (!gBattleControllerExecFlags)
{
@@ -6321,7 +6321,7 @@ void atk79_setatkhptozero(void)
}
}
-void atk7A_jumpifnexttargetvalid(void)
+static void atk7A_jumpifnexttargetvalid(void)
{
const u8 *jumpPtr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
@@ -6345,7 +6345,7 @@ void atk7A_jumpifnexttargetvalid(void)
}
}
-void atk7B_tryhealhalfhealth(void)
+static void atk7B_tryhealhalfhealth(void)
{
const u8 *failPtr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
@@ -6362,7 +6362,7 @@ void atk7B_tryhealhalfhealth(void)
}
#ifdef NONMATCHING
-void atk7C_trymirrormove(void)
+static void atk7C_trymirrormove(void)
{
s32 validMovesCount;
s32 i;
@@ -6413,7 +6413,7 @@ void atk7C_trymirrormove(void)
}
#else
NAKED
-void atk7C_trymirrormove(void)
+static void atk7C_trymirrormove(void)
{
asm_unified("\n\
push {r4-r7,lr}\n\
@@ -6589,7 +6589,7 @@ void atk7C_trymirrormove(void)
}
#endif
-void atk7D_setrain(void)
+static void atk7D_setrain(void)
{
if (gBattleWeather & WEATHER_RAIN_ANY)
{
@@ -6605,7 +6605,7 @@ void atk7D_setrain(void)
++gBattlescriptCurrInstr;
}
-void atk7E_setreflect(void)
+static void atk7E_setreflect(void)
{
if (gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] & SIDE_STATUS_REFLECT)
{
@@ -6626,7 +6626,7 @@ void atk7E_setreflect(void)
++gBattlescriptCurrInstr;
}
-void atk7F_setseeded(void)
+static void atk7F_setseeded(void)
{
if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT || gStatuses3[gBattlerTarget] & STATUS3_LEECHSEED)
{
@@ -6647,7 +6647,7 @@ void atk7F_setseeded(void)
++gBattlescriptCurrInstr;
}
-void atk80_manipulatedamage(void)
+static void atk80_manipulatedamage(void)
{
switch (gBattlescriptCurrInstr[1])
{
@@ -6668,7 +6668,7 @@ void atk80_manipulatedamage(void)
gBattlescriptCurrInstr += 2;
}
-void atk81_trysetrest(void)
+static void atk81_trysetrest(void)
{
const u8 *failJump = T1_READ_PTR(gBattlescriptCurrInstr + 1);
@@ -6691,7 +6691,7 @@ void atk81_trysetrest(void)
}
}
-void atk82_jumpifnotfirstturn(void)
+static void atk82_jumpifnotfirstturn(void)
{
const u8 *failJump = T1_READ_PTR(gBattlescriptCurrInstr + 1);
@@ -6701,7 +6701,7 @@ void atk82_jumpifnotfirstturn(void)
gBattlescriptCurrInstr = failJump;
}
-void atk83_nop(void)
+static void atk83_nop(void)
{
++gBattlescriptCurrInstr;
}
@@ -6731,7 +6731,7 @@ bool8 UproarWakeUpCheck(u8 battlerId)
return TRUE;
}
-void atk84_jumpifcantmakeasleep(void)
+static void atk84_jumpifcantmakeasleep(void)
{
const u8 *jumpPtr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
@@ -6753,7 +6753,7 @@ void atk84_jumpifcantmakeasleep(void)
}
}
-void atk85_stockpile(void)
+static void atk85_stockpile(void)
{
if (gDisableStructs[gBattlerAttacker].stockpileCounter == 3)
{
@@ -6769,7 +6769,7 @@ void atk85_stockpile(void)
++gBattlescriptCurrInstr;
}
-void atk86_stockpiletobasedamage(void)
+static void atk86_stockpiletobasedamage(void)
{
const u8 *jumpPtr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
@@ -6795,7 +6795,7 @@ void atk86_stockpiletobasedamage(void)
}
}
-void atk87_stockpiletohpheal(void)
+static void atk87_stockpiletohpheal(void)
{
const u8 *jumpPtr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
@@ -6824,7 +6824,7 @@ void atk87_stockpiletohpheal(void)
}
}
-void atk88_negativedamage(void)
+static void atk88_negativedamage(void)
{
gBattleMoveDamage = -(gHpDealt / 2);
if (gBattleMoveDamage == 0)
@@ -6835,7 +6835,7 @@ void atk88_negativedamage(void)
#define STAT_CHANGE_WORKED 0
#define STAT_CHANGE_DIDNT_WORK 1
-u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr)
+static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr)
{
bool8 certain = FALSE;
bool8 notProtectAffected = FALSE;
@@ -6989,14 +6989,14 @@ u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr)
return STAT_CHANGE_WORKED;
}
-void atk89_statbuffchange(void)
+static void atk89_statbuffchange(void)
{
const u8 *jumpPtr = T1_READ_PTR(gBattlescriptCurrInstr + 2);
if (ChangeStatBuffs(gBattleScripting.statChanger & 0xF0, GET_STAT_BUFF_ID(gBattleScripting.statChanger), gBattlescriptCurrInstr[1], jumpPtr) == STAT_CHANGE_WORKED)
gBattlescriptCurrInstr += 6;
}
-void atk8A_normalisebuffs(void) // haze
+static void atk8A_normalisebuffs(void) // haze
{
s32 i, j;
@@ -7006,7 +7006,7 @@ void atk8A_normalisebuffs(void) // haze
++gBattlescriptCurrInstr;
}
-void atk8B_setbide(void)
+static void atk8B_setbide(void)
{
gBattleMons[gBattlerAttacker].status2 |= STATUS2_MULTIPLETURNS;
gLockedMoves[gBattlerAttacker] = gCurrentMove;
@@ -7015,14 +7015,14 @@ void atk8B_setbide(void)
++gBattlescriptCurrInstr;
}
-void atk8C_confuseifrepeatingattackends(void)
+static void atk8C_confuseifrepeatingattackends(void)
{
if (!(gBattleMons[gBattlerAttacker].status2 & STATUS2_LOCK_CONFUSE))
gBattleCommunication[MOVE_EFFECT_BYTE] = (MOVE_EFFECT_THRASH | MOVE_EFFECT_AFFECTS_USER);
++gBattlescriptCurrInstr;
}
-void atk8D_setmultihitcounter(void)
+static void atk8D_setmultihitcounter(void)
{
if (gBattlescriptCurrInstr[1])
{
@@ -7039,13 +7039,13 @@ void atk8D_setmultihitcounter(void)
gBattlescriptCurrInstr += 2;
}
-void atk8E_initmultihitstring(void)
+static void atk8E_initmultihitstring(void)
{
PREPARE_BYTE_NUMBER_BUFFER(gBattleScripting.multihitString, 1, 0)
++gBattlescriptCurrInstr;
}
-bool8 TryDoForceSwitchOut(void)
+static bool8 TryDoForceSwitchOut(void)
{
if (gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level)
{
@@ -7068,7 +7068,7 @@ bool8 TryDoForceSwitchOut(void)
#define MON_CAN_BATTLE(mon) (((GetMonData(mon, MON_DATA_SPECIES) && GetMonData(mon, MON_DATA_IS_EGG) != TRUE && GetMonData(mon, MON_DATA_HP))))
-void atk8F_forcerandomswitch(void)
+static void atk8F_forcerandomswitch(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{
@@ -7163,7 +7163,7 @@ void atk8F_forcerandomswitch(void)
}
}
-void atk90_tryconversiontypechange(void) // randomly changes user's type to one of its moves' type
+static void atk90_tryconversiontypechange(void) // randomly changes user's type to one of its moves' type
{
u8 validMoves = 0;
u8 moveChecked;
@@ -7217,7 +7217,7 @@ void atk90_tryconversiontypechange(void) // randomly changes user's type to one
}
}
-void atk91_givepaydaymoney(void)
+static void atk91_givepaydaymoney(void)
{
if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && gPaydayMoney != 0)
{
@@ -7234,7 +7234,7 @@ void atk91_givepaydaymoney(void)
}
}
-void atk92_setlightscreen(void)
+static void atk92_setlightscreen(void)
{
if (gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] & SIDE_STATUS_LIGHTSCREEN)
{
@@ -7254,7 +7254,7 @@ void atk92_setlightscreen(void)
++gBattlescriptCurrInstr;
}
-void atk93_tryKO(void)
+static void atk93_tryKO(void)
{
u8 holdEffect, param;
@@ -7339,7 +7339,7 @@ void atk93_tryKO(void)
}
}
-void atk94_damagetohalftargethp(void) // super fang
+static void atk94_damagetohalftargethp(void) // super fang
{
gBattleMoveDamage = gBattleMons[gBattlerTarget].hp / 2;
if (gBattleMoveDamage == 0)
@@ -7347,7 +7347,7 @@ void atk94_damagetohalftargethp(void) // super fang
++gBattlescriptCurrInstr;
}
-void atk95_setsandstorm(void)
+static void atk95_setsandstorm(void)
{
if (gBattleWeather & WEATHER_SANDSTORM_ANY)
{
@@ -7363,7 +7363,7 @@ void atk95_setsandstorm(void)
++gBattlescriptCurrInstr;
}
-void atk96_weatherdamage(void)
+static void atk96_weatherdamage(void)
{
if (((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == BATTLE_TYPE_GHOST)
&& (GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT))
@@ -7420,7 +7420,7 @@ void atk96_weatherdamage(void)
++gBattlescriptCurrInstr;
}
-void atk97_tryinfatuating(void)
+static void atk97_tryinfatuating(void)
{
struct Pokemon *monAttacker, *monTarget;
u16 speciesAttacker, speciesTarget;
@@ -7461,7 +7461,7 @@ void atk97_tryinfatuating(void)
}
}
-void atk98_updatestatusicon(void)
+static void atk98_updatestatusicon(void)
{
if (!gBattleControllerExecFlags)
{
@@ -7507,7 +7507,7 @@ void atk98_updatestatusicon(void)
}
}
-void atk99_setmist(void)
+static void atk99_setmist(void)
{
if (gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].mistTimer)
{
@@ -7524,7 +7524,7 @@ void atk99_setmist(void)
++gBattlescriptCurrInstr;
}
-void atk9A_setfocusenergy(void)
+static void atk9A_setfocusenergy(void)
{
if (gBattleMons[gBattlerAttacker].status2 & STATUS2_FOCUS_ENERGY)
{
@@ -7539,7 +7539,7 @@ void atk9A_setfocusenergy(void)
++gBattlescriptCurrInstr;
}
-void atk9B_transformdataexecution(void)
+static void atk9B_transformdataexecution(void)
{
gChosenMove = 0xFFFF;
++gBattlescriptCurrInstr;
@@ -7578,7 +7578,7 @@ void atk9B_transformdataexecution(void)
}
}
-void atk9C_setsubstitute(void)
+static void atk9C_setsubstitute(void)
{
u32 hp = gBattleMons[gBattlerAttacker].maxHP / 4;
@@ -7603,7 +7603,7 @@ void atk9C_setsubstitute(void)
++gBattlescriptCurrInstr;
}
-bool8 IsMoveUncopyableByMimic(u16 move)
+static bool8 IsMoveUncopyableByMimic(u16 move)
{
s32 i;
@@ -7611,7 +7611,7 @@ bool8 IsMoveUncopyableByMimic(u16 move)
return (sMovesForbiddenToCopy[i] != MIMIC_FORBIDDEN_END);
}
-void atk9D_mimicattackcopy(void)
+static void atk9D_mimicattackcopy(void)
{
gChosenMove = 0xFFFF;
if (IsMoveUncopyableByMimic(gLastMoves[gBattlerTarget])
@@ -7648,7 +7648,7 @@ void atk9D_mimicattackcopy(void)
}
}
-void atk9E_metronome(void)
+static void atk9E_metronome(void)
{
while (1)
{
@@ -7677,13 +7677,13 @@ void atk9E_metronome(void)
}
}
-void atk9F_dmgtolevel(void)
+static void atk9F_dmgtolevel(void)
{
gBattleMoveDamage = gBattleMons[gBattlerAttacker].level;
++gBattlescriptCurrInstr;
}
-void atkA0_psywavedamageeffect(void)
+static void atkA0_psywavedamageeffect(void)
{
s32 randDamage;
@@ -7693,7 +7693,7 @@ void atkA0_psywavedamageeffect(void)
++gBattlescriptCurrInstr;
}
-void atkA1_counterdamagecalculator(void)
+static void atkA1_counterdamagecalculator(void)
{
u8 sideAttacker = GetBattlerSide(gBattlerAttacker);
u8 sideTarget = GetBattlerSide(gProtectStructs[gBattlerAttacker].physicalBattlerId);
@@ -7719,7 +7719,7 @@ void atkA1_counterdamagecalculator(void)
}
// a copy of atkA1 with the physical -> special field changes
-void atkA2_mirrorcoatdamagecalculator(void)
+static void atkA2_mirrorcoatdamagecalculator(void)
{
u8 sideAttacker = GetBattlerSide(gBattlerAttacker);
u8 sideTarget = GetBattlerSide(gProtectStructs[gBattlerAttacker].specialBattlerId);
@@ -7740,7 +7740,7 @@ void atkA2_mirrorcoatdamagecalculator(void)
}
}
-void atkA3_disablelastusedattack(void)
+static void atkA3_disablelastusedattack(void)
{
s32 i;
@@ -7764,7 +7764,7 @@ void atkA3_disablelastusedattack(void)
}
}
-void atkA4_trysetencore(void)
+static void atkA4_trysetencore(void)
{
s32 i;
@@ -7791,7 +7791,7 @@ void atkA4_trysetencore(void)
}
}
-void atkA5_painsplitdmgcalc(void)
+static void atkA5_painsplitdmgcalc(void)
{
if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE))
{
@@ -7813,7 +7813,7 @@ void atkA5_painsplitdmgcalc(void)
}
}
-void atkA6_settypetorandomresistance(void) // conversion 2
+static void atkA6_settypetorandomresistance(void) // conversion 2
{
if (gLastLandedMoves[gBattlerAttacker] == MOVE_NONE
|| gLastLandedMoves[gBattlerAttacker] == 0xFFFF)
@@ -7869,7 +7869,7 @@ void atkA6_settypetorandomresistance(void) // conversion 2
}
}
-void atkA7_setalwayshitflag(void)
+static void atkA7_setalwayshitflag(void)
{
gStatuses3[gBattlerTarget] &= ~(STATUS3_ALWAYS_HITS);
gStatuses3[gBattlerTarget] |= 0x10;
@@ -7877,7 +7877,7 @@ void atkA7_setalwayshitflag(void)
++gBattlescriptCurrInstr;
}
-void atkA8_copymovepermanently(void) // sketch
+static void atkA8_copymovepermanently(void) // sketch
{
gChosenMove = 0xFFFF;
if (!(gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED)
@@ -7924,7 +7924,7 @@ void atkA8_copymovepermanently(void) // sketch
}
}
-bool8 IsTwoTurnsMove(u16 move)
+static bool8 IsTwoTurnsMove(u16 move)
{
if (gBattleMoves[move].effect == EFFECT_SKULL_BASH
|| gBattleMoves[move].effect == EFFECT_RAZOR_WIND
@@ -7937,7 +7937,7 @@ bool8 IsTwoTurnsMove(u16 move)
return FALSE;
}
-bool8 IsInvalidForSleepTalkOrAssist(u16 move)
+static bool8 IsInvalidForSleepTalkOrAssist(u16 move)
{
if (move == 0 || move == MOVE_SLEEP_TALK || move == MOVE_ASSIST
|| move == MOVE_MIRROR_MOVE || move == MOVE_METRONOME)
@@ -7946,7 +7946,7 @@ bool8 IsInvalidForSleepTalkOrAssist(u16 move)
return FALSE;
}
-u8 AttacksThisTurn(u8 battlerId, u16 move) // Note: returns 1 if it's a charging turn, otherwise 2
+static u8 AttacksThisTurn(u8 battlerId, u16 move) // Note: returns 1 if it's a charging turn, otherwise 2
{
// first argument is unused
if (gBattleMoves[move].effect == EFFECT_SOLARBEAM
@@ -7963,7 +7963,7 @@ u8 AttacksThisTurn(u8 battlerId, u16 move) // Note: returns 1 if it's a charging
return 2;
}
-void atkA9_trychoosesleeptalkmove(void)
+static void atkA9_trychoosesleeptalkmove(void)
{
s32 i;
u8 unusableMovesBits = 0;
@@ -7998,13 +7998,13 @@ void atkA9_trychoosesleeptalkmove(void)
}
}
-void atkAA_setdestinybond(void)
+static void atkAA_setdestinybond(void)
{
gBattleMons[gBattlerAttacker].status2 |= STATUS2_DESTINY_BOND;
++gBattlescriptCurrInstr;
}
-void TrySetDestinyBondToHappen(void)
+static void TrySetDestinyBondToHappen(void)
{
u8 sideAttacker = GetBattlerSide(gBattlerAttacker);
u8 sideTarget = GetBattlerSide(gBattlerTarget);
@@ -8015,13 +8015,13 @@ void TrySetDestinyBondToHappen(void)
gHitMarker |= HITMARKER_DESTINYBOND;
}
-void atkAB_trysetdestinybondtohappen(void)
+static void atkAB_trysetdestinybondtohappen(void)
{
TrySetDestinyBondToHappen();
++gBattlescriptCurrInstr;
}
-void atkAC_remaininghptopower(void)
+static void atkAC_remaininghptopower(void)
{
s32 i;
s32 hpFraction = GetScaledHPFraction(gBattleMons[gBattlerAttacker].hp, gBattleMons[gBattlerAttacker].maxHP, 48);
@@ -8035,7 +8035,7 @@ void atkAC_remaininghptopower(void)
++gBattlescriptCurrInstr;
}
-void atkAD_tryspiteppreduce(void)
+static void atkAD_tryspiteppreduce(void)
{
if (gLastMoves[gBattlerTarget] != MOVE_NONE && gLastMoves[gBattlerTarget] != 0xFFFF)
{
@@ -8076,7 +8076,7 @@ void atkAD_tryspiteppreduce(void)
}
}
-void atkAE_healpartystatus(void)
+static void atkAE_healpartystatus(void)
{
u32 zero = 0;
u8 toHeal = 0;
@@ -8162,7 +8162,7 @@ void atkAE_healpartystatus(void)
++gBattlescriptCurrInstr;
}
-void atkAF_cursetarget(void)
+static void atkAF_cursetarget(void)
{
if (gBattleMons[gBattlerTarget].status2 & STATUS2_CURSED)
{
@@ -8178,7 +8178,7 @@ void atkAF_cursetarget(void)
}
}
-void atkB0_trysetspikes(void)
+static void atkB0_trysetspikes(void)
{
u8 targetSide = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE;
@@ -8195,13 +8195,13 @@ void atkB0_trysetspikes(void)
}
}
-void atkB1_setforesight(void)
+static void atkB1_setforesight(void)
{
gBattleMons[gBattlerTarget].status2 |= STATUS2_FORESIGHT;
++gBattlescriptCurrInstr;
}
-void atkB2_trysetperishsong(void)
+static void atkB2_trysetperishsong(void)
{
s32 i;
s32 notAffectedCount = 0;
@@ -8227,7 +8227,7 @@ void atkB2_trysetperishsong(void)
gBattlescriptCurrInstr += 5;
}
-void atkB3_rolloutdamagecalculation(void)
+static void atkB3_rolloutdamagecalculation(void)
{
if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
{
@@ -8256,7 +8256,7 @@ void atkB3_rolloutdamagecalculation(void)
}
}
-void atkB4_jumpifconfusedandstatmaxed(void)
+static void atkB4_jumpifconfusedandstatmaxed(void)
{
if (gBattleMons[gBattlerTarget].status2 & STATUS2_CONFUSION
&& gBattleMons[gBattlerTarget].statStages[gBattlescriptCurrInstr[1]] == 12)
@@ -8265,7 +8265,7 @@ void atkB4_jumpifconfusedandstatmaxed(void)
gBattlescriptCurrInstr += 6;
}
-void atkB5_furycuttercalc(void)
+static void atkB5_furycuttercalc(void)
{
if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
{
@@ -8286,7 +8286,7 @@ void atkB5_furycuttercalc(void)
}
}
-void atkB6_happinesstodamagecalculation(void)
+static void atkB6_happinesstodamagecalculation(void)
{
if (gBattleMoves[gCurrentMove].effect == EFFECT_RETURN)
gDynamicBasePower = 10 * (gBattleMons[gBattlerAttacker].friendship) / 25;
@@ -8295,7 +8295,7 @@ void atkB6_happinesstodamagecalculation(void)
++gBattlescriptCurrInstr;
}
-void atkB7_presentdamagecalculation(void)
+static void atkB7_presentdamagecalculation(void)
{
s32 rand = Random() & 0xFF;
@@ -8333,7 +8333,7 @@ void atkB7_presentdamagecalculation(void)
}
}
-void atkB8_setsafeguard(void)
+static void atkB8_setsafeguard(void)
{
if (gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] & SIDE_STATUS_SAFEGUARD)
{
@@ -8350,7 +8350,7 @@ void atkB8_setsafeguard(void)
++gBattlescriptCurrInstr;
}
-void atkB9_magnitudedamagecalculation(void)
+static void atkB9_magnitudedamagecalculation(void)
{
s32 magnitude = Random() % 100;
@@ -8400,7 +8400,7 @@ void atkB9_magnitudedamagecalculation(void)
++gBattlescriptCurrInstr;
}
-void atkBA_jumpifnopursuitswitchdmg(void)
+static void atkBA_jumpifnopursuitswitchdmg(void)
{
if (gMultiHitCounter == 1)
{
@@ -8440,7 +8440,7 @@ void atkBA_jumpifnopursuitswitchdmg(void)
}
}
-void atkBB_setsunny(void)
+static void atkBB_setsunny(void)
{
if (gBattleWeather & WEATHER_SUN_ANY)
{
@@ -8456,7 +8456,7 @@ void atkBB_setsunny(void)
++gBattlescriptCurrInstr;
}
-void atkBC_maxattackhalvehp(void) // belly drum
+static void atkBC_maxattackhalvehp(void) // belly drum
{
u32 halfHp = gBattleMons[gBattlerAttacker].maxHP / 2;
@@ -8477,7 +8477,7 @@ void atkBC_maxattackhalvehp(void) // belly drum
}
}
-void atkBD_copyfoestats(void) // psych up
+static void atkBD_copyfoestats(void) // psych up
{
s32 i;
@@ -8486,7 +8486,7 @@ void atkBD_copyfoestats(void) // psych up
gBattlescriptCurrInstr += 5; // Has an unused jump ptr(possibly for a failed attempt) parameter.
}
-void atkBE_rapidspinfree(void)
+static void atkBE_rapidspinfree(void)
{
if (gBattleMons[gBattlerAttacker].status2 & STATUS2_WRAPPED)
{
@@ -8521,13 +8521,13 @@ void atkBE_rapidspinfree(void)
}
}
-void atkBF_setdefensecurlbit(void)
+static void atkBF_setdefensecurlbit(void)
{
gBattleMons[gBattlerAttacker].status2 |= STATUS2_DEFENSE_CURL;
++gBattlescriptCurrInstr;
}
-void atkC0_recoverbasedonsunlight(void)
+static void atkC0_recoverbasedonsunlight(void)
{
gBattlerTarget = gBattlerAttacker;
if (gBattleMons[gBattlerAttacker].hp != gBattleMons[gBattlerAttacker].maxHP)
@@ -8551,7 +8551,7 @@ void atkC0_recoverbasedonsunlight(void)
}
}
-void atkC1_hiddenpowercalc(void)
+static void atkC1_hiddenpowercalc(void)
{
s32 powerBits, typeBits;
@@ -8575,7 +8575,7 @@ void atkC1_hiddenpowercalc(void)
++gBattlescriptCurrInstr;
}
-void atkC2_selectfirstvalidtarget(void)
+static void atkC2_selectfirstvalidtarget(void)
{
for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; ++gBattlerTarget)
{
@@ -8587,7 +8587,7 @@ void atkC2_selectfirstvalidtarget(void)
++gBattlescriptCurrInstr;
}
-void atkC3_trysetfutureattack(void)
+static void atkC3_trysetfutureattack(void)
{
if (gWishFutureKnock.futureSightCounter[gBattlerTarget] != 0)
{
@@ -8616,7 +8616,7 @@ void atkC3_trysetfutureattack(void)
}
}
-void atkC4_trydobeatup(void)
+static void atkC4_trydobeatup(void)
{
struct Pokemon *party;
@@ -8660,7 +8660,7 @@ void atkC4_trydobeatup(void)
}
}
-void atkC5_setsemiinvulnerablebit(void)
+static void atkC5_setsemiinvulnerablebit(void)
{
switch (gCurrentMove)
{
@@ -8678,7 +8678,7 @@ void atkC5_setsemiinvulnerablebit(void)
++gBattlescriptCurrInstr;
}
-void atkC6_clearsemiinvulnerablebit(void)
+static void atkC6_clearsemiinvulnerablebit(void)
{
switch (gCurrentMove)
{
@@ -8696,14 +8696,14 @@ void atkC6_clearsemiinvulnerablebit(void)
++gBattlescriptCurrInstr;
}
-void atkC7_setminimize(void)
+static void atkC7_setminimize(void)
{
if (gHitMarker & HITMARKER_OBEYS)
gStatuses3[gBattlerAttacker] |= STATUS3_MINIMIZED;
++gBattlescriptCurrInstr;
}
-void atkC8_sethail(void)
+static void atkC8_sethail(void)
{
if (gBattleWeather & WEATHER_HAIL_ANY)
{
@@ -8719,7 +8719,7 @@ void atkC8_sethail(void)
++gBattlescriptCurrInstr;
}
-void atkC9_jumpifattackandspecialattackcannotfall(void) // memento
+static void atkC9_jumpifattackandspecialattackcannotfall(void) // memento
{
if (gBattleMons[gBattlerTarget].statStages[STAT_ATK] == 0
&& gBattleMons[gBattlerTarget].statStages[STAT_SPATK] == 0
@@ -8737,14 +8737,14 @@ void atkC9_jumpifattackandspecialattackcannotfall(void) // memento
}
}
-void atkCA_setforcedtarget(void) // follow me
+static void atkCA_setforcedtarget(void) // follow me
{
gSideTimers[GetBattlerSide(gBattlerAttacker)].followmeTimer = 1;
gSideTimers[GetBattlerSide(gBattlerAttacker)].followmeTarget = gBattlerAttacker;
++gBattlescriptCurrInstr;
}
-void atkCB_setcharge(void)
+static void atkCB_setcharge(void)
{
gStatuses3[gBattlerAttacker] |= STATUS3_CHARGED_UP;
gDisableStructs[gBattlerAttacker].chargeTimer = 2;
@@ -8752,7 +8752,7 @@ void atkCB_setcharge(void)
++gBattlescriptCurrInstr;
}
-void atkCC_callterrainattack(void) // nature power
+static void atkCC_callterrainattack(void) // nature power
{
gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
gCurrentMove = sNaturePowerMoves[gBattleTerrain];
@@ -8761,7 +8761,7 @@ void atkCC_callterrainattack(void) // nature power
++gBattlescriptCurrInstr;
}
-void atkCD_cureifburnedparalysedorpoisoned(void) // refresh
+static void atkCD_cureifburnedparalysedorpoisoned(void) // refresh
{
if (gBattleMons[gBattlerAttacker].status1 & (STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON))
{
@@ -8777,7 +8777,7 @@ void atkCD_cureifburnedparalysedorpoisoned(void) // refresh
}
}
-void atkCE_settorment(void)
+static void atkCE_settorment(void)
{
if (gBattleMons[gBattlerTarget].status2 & STATUS2_TORMENT)
{
@@ -8790,7 +8790,7 @@ void atkCE_settorment(void)
}
}
-void atkCF_jumpifnodamage(void)
+static void atkCF_jumpifnodamage(void)
{
if (gProtectStructs[gBattlerAttacker].physicalDmg || gProtectStructs[gBattlerAttacker].specialDmg)
gBattlescriptCurrInstr += 5;
@@ -8798,7 +8798,7 @@ void atkCF_jumpifnodamage(void)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
}
-void atkD0_settaunt(void)
+static void atkD0_settaunt(void)
{
if (gDisableStructs[gBattlerTarget].tauntTimer == 0)
{
@@ -8812,7 +8812,7 @@ void atkD0_settaunt(void)
}
}
-void atkD1_trysethelpinghand(void)
+static void atkD1_trysethelpinghand(void)
{
gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK);
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
@@ -8829,7 +8829,7 @@ void atkD1_trysethelpinghand(void)
}
}
-void atkD2_tryswapitems(void) // trick
+static void atkD2_tryswapitems(void) // trick
{
// opponent can't swap items with player in regular battles
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_TOWER
@@ -8903,7 +8903,7 @@ void atkD2_tryswapitems(void) // trick
}
}
-void atkD3_trycopyability(void) // role play
+static void atkD3_trycopyability(void) // role play
{
if (gBattleMons[gBattlerTarget].ability != ABILITY_NONE && gBattleMons[gBattlerTarget].ability != ABILITY_WONDER_GUARD)
{
@@ -8917,7 +8917,7 @@ void atkD3_trycopyability(void) // role play
}
}
-void atkD4_trywish(void)
+static void atkD4_trywish(void)
{
switch (gBattlescriptCurrInstr[1])
{
@@ -8947,7 +8947,7 @@ void atkD4_trywish(void)
}
}
-void atkD5_trysetroots(void) // ingrain
+static void atkD5_trysetroots(void) // ingrain
{
if (gStatuses3[gBattlerAttacker] & STATUS3_ROOTED)
{
@@ -8960,7 +8960,7 @@ void atkD5_trysetroots(void) // ingrain
}
}
-void atkD6_doubledamagedealtifdamaged(void)
+static void atkD6_doubledamagedealtifdamaged(void)
{
if ((gProtectStructs[gBattlerAttacker].physicalDmg != 0
&& gProtectStructs[gBattlerAttacker].physicalBattlerId == gBattlerTarget)
@@ -8972,7 +8972,7 @@ void atkD6_doubledamagedealtifdamaged(void)
++gBattlescriptCurrInstr;
}
-void atkD7_setyawn(void)
+static void atkD7_setyawn(void)
{
if (gStatuses3[gBattlerTarget] & STATUS3_YAWN
|| gBattleMons[gBattlerTarget].status1 & STATUS1_ANY)
@@ -8986,7 +8986,7 @@ void atkD7_setyawn(void)
}
}
-void atkD8_setdamagetohealthdifference(void)
+static void atkD8_setdamagetohealthdifference(void)
{
if (gBattleMons[gBattlerTarget].hp <= gBattleMons[gBattlerAttacker].hp)
{
@@ -8999,7 +8999,7 @@ void atkD8_setdamagetohealthdifference(void)
}
}
-void atkD9_scaledamagebyhealthratio(void)
+static void atkD9_scaledamagebyhealthratio(void)
{
if (gDynamicBasePower == 0)
{
@@ -9012,7 +9012,7 @@ void atkD9_scaledamagebyhealthratio(void)
++gBattlescriptCurrInstr;
}
-void atkDA_tryswapabilities(void) // skill swap
+static void atkDA_tryswapabilities(void) // skill swap
{
if ((gBattleMons[gBattlerAttacker].ability == 0
&& gBattleMons[gBattlerTarget].ability == 0)
@@ -9033,7 +9033,7 @@ void atkDA_tryswapabilities(void) // skill swap
}
}
-void atkDB_tryimprison(void)
+static void atkDB_tryimprison(void)
{
if ((gStatuses3[gBattlerAttacker] & STATUS3_IMPRISONED_OTHERS))
{
@@ -9077,7 +9077,7 @@ void atkDB_tryimprison(void)
}
}
-void atkDC_trysetgrudge(void)
+static void atkDC_trysetgrudge(void)
{
if (gStatuses3[gBattlerAttacker] & STATUS3_GRUDGE)
{
@@ -9090,7 +9090,7 @@ void atkDC_trysetgrudge(void)
}
}
-void atkDD_weightdamagecalculation(void)
+static void atkDD_weightdamagecalculation(void)
{
s32 i;
@@ -9106,7 +9106,7 @@ void atkDD_weightdamagecalculation(void)
++gBattlescriptCurrInstr;
}
-void atkDE_assistattackselect(void)
+static void atkDE_assistattackselect(void)
{
s32 chooseableMovesNo = 0;
struct Pokemon *party;
@@ -9150,7 +9150,7 @@ void atkDE_assistattackselect(void)
}
}
-void atkDF_trysetmagiccoat(void)
+static void atkDF_trysetmagiccoat(void)
{
gBattlerTarget = gBattlerAttacker;
gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = 1;
@@ -9165,7 +9165,7 @@ void atkDF_trysetmagiccoat(void)
}
}
-void atkE0_trysetsnatch(void) // snatch
+static void atkE0_trysetsnatch(void) // snatch
{
gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure = 1;
if (gCurrentTurnActionNumber == gBattlersCount - 1) // moves last turn
@@ -9179,7 +9179,7 @@ void atkE0_trysetsnatch(void) // snatch
}
}
-void atkE1_trygetintimidatetarget(void)
+static void atkE1_trygetintimidatetarget(void)
{
u8 side;
@@ -9199,7 +9199,7 @@ void atkE1_trygetintimidatetarget(void)
gBattlescriptCurrInstr += 5;
}
-void atkE2_switchoutabilities(void)
+static void atkE2_switchoutabilities(void)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
switch (gBattleMons[gActiveBattler].ability)
@@ -9213,7 +9213,7 @@ void atkE2_switchoutabilities(void)
gBattlescriptCurrInstr += 2;
}
-void atkE3_jumpifhasnohp(void)
+static void atkE3_jumpifhasnohp(void)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
@@ -9223,7 +9223,7 @@ void atkE3_jumpifhasnohp(void)
gBattlescriptCurrInstr += 6;
}
-void atkE4_getsecretpowereffect(void)
+static void atkE4_getsecretpowereffect(void)
{
switch (gBattleTerrain)
{
@@ -9258,7 +9258,7 @@ void atkE4_getsecretpowereffect(void)
++gBattlescriptCurrInstr;
}
-void atkE5_pickup(void)
+static void atkE5_pickup(void)
{
s32 i;
u32 j;
@@ -9286,7 +9286,7 @@ void atkE5_pickup(void)
++gBattlescriptCurrInstr;
}
-void atkE6_docastformchangeanimation(void)
+static void atkE6_docastformchangeanimation(void)
{
gActiveBattler = gBattleScripting.battler;
if (gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE)
@@ -9296,7 +9296,7 @@ void atkE6_docastformchangeanimation(void)
++gBattlescriptCurrInstr;
}
-void atkE7_trycastformdatachange(void)
+static void atkE7_trycastformdatachange(void)
{
u8 form;
@@ -9309,7 +9309,7 @@ void atkE7_trycastformdatachange(void)
}
}
-void atkE8_settypebasedhalvers(void) // water and mud sport
+static void atkE8_settypebasedhalvers(void) // water and mud sport
{
bool8 worked = FALSE;
@@ -9337,7 +9337,7 @@ void atkE8_settypebasedhalvers(void) // water and mud sport
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
}
-void atkE9_setweatherballtype(void)
+static void atkE9_setweatherballtype(void)
{
if (WEATHER_HAS_EFFECT)
{
@@ -9357,7 +9357,7 @@ void atkE9_setweatherballtype(void)
++gBattlescriptCurrInstr;
}
-void atkEA_tryrecycleitem(void)
+static void atkEA_tryrecycleitem(void)
{
u16 *usedHeldItem;
@@ -9378,7 +9378,7 @@ void atkEA_tryrecycleitem(void)
}
}
-void atkEB_settypetoterrain(void)
+static void atkEB_settypetoterrain(void)
{
if (!IS_BATTLER_OF_TYPE(gBattlerAttacker, sTerrainToType[gBattleTerrain]))
{
@@ -9392,7 +9392,7 @@ void atkEB_settypetoterrain(void)
}
}
-void atkEC_pursuitrelated(void)
+static void atkEC_pursuitrelated(void)
{
gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK);
@@ -9414,7 +9414,7 @@ void atkEC_pursuitrelated(void)
}
}
-void atkED_snatchsetbattlers(void)
+static void atkED_snatchsetbattlers(void)
{
gEffectBattler = gBattlerAttacker;
if (gBattlerAttacker == gBattlerTarget)
@@ -9425,7 +9425,7 @@ void atkED_snatchsetbattlers(void)
++gBattlescriptCurrInstr;
}
-void atkEE_removelightscreenreflect(void) // brick break
+static void atkEE_removelightscreenreflect(void) // brick break
{
u8 opposingSide = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE;
@@ -9445,3 +9445,410 @@ void atkEE_removelightscreenreflect(void) // brick break
}
++gBattlescriptCurrInstr;
}
+
+static void atkEF_handleballthrow(void)
+{
+ u8 ballMultiplier = 0;
+
+ if (!gBattleControllerExecFlags)
+ {
+ gActiveBattler = gBattlerAttacker;
+ gBattlerTarget = gBattlerAttacker ^ BIT_SIDE;
+ if (gBattleTypeFlags & BATTLE_TYPE_GHOST)
+ {
+ BtlController_EmitBallThrowAnim(0, BALL_GHOST_DODGE);
+ MarkBattlerForControllerExec(gActiveBattler);
+ gBattlescriptCurrInstr = BattleScript_GhostBallDodge;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ BtlController_EmitBallThrowAnim(0, BALL_TRAINER_BLOCK);
+ MarkBattlerForControllerExec(gActiveBattler);
+ gBattlescriptCurrInstr = BattleScript_TrainerBallBlock;
+ }
+ else if (gBattleTypeFlags & (BATTLE_TYPE_POKEDUDE | BATTLE_TYPE_OLDMAN_TUTORIAL))
+ {
+ BtlController_EmitBallThrowAnim(0, BALL_3_SHAKES_SUCCESS);
+ MarkBattlerForControllerExec(gActiveBattler);
+ gBattlescriptCurrInstr = gUnknown_81D9A88;
+ }
+ else
+ {
+ u32 odds;
+ u8 catchRate;
+
+ if (gLastUsedItem == ITEM_SAFARI_BALL)
+ catchRate = gBattleStruct->safariCatchFactor * 1275 / 100;
+ else
+ catchRate = gBaseStats[gBattleMons[gBattlerTarget].species].catchRate;
+
+ if (gLastUsedItem > ITEM_SAFARI_BALL)
+ {
+ switch (gLastUsedItem)
+ {
+ case ITEM_NET_BALL:
+ if (IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_WATER) || IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_BUG))
+ ballMultiplier = 30;
+ else
+ ballMultiplier = 10;
+ break;
+ case ITEM_DIVE_BALL:
+ if (GetCurrentMapType() == MAP_TYPE_UNDERWATER)
+ ballMultiplier = 35;
+ else
+ ballMultiplier = 10;
+ break;
+ case ITEM_NEST_BALL:
+ if (gBattleMons[gBattlerTarget].level < 40)
+ {
+ ballMultiplier = 40 - gBattleMons[gBattlerTarget].level;
+ if (ballMultiplier <= 9)
+ ballMultiplier = 10;
+ }
+ else
+ {
+ ballMultiplier = 10;
+ }
+ break;
+ case ITEM_REPEAT_BALL:
+ if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBattlerTarget].species), FLAG_GET_CAUGHT))
+ ballMultiplier = 30;
+ else
+ ballMultiplier = 10;
+ break;
+ case ITEM_TIMER_BALL:
+ ballMultiplier = gBattleResults.battleTurnCounter + 10;
+ if (ballMultiplier > 40)
+ ballMultiplier = 40;
+ break;
+ case ITEM_LUXURY_BALL:
+ case ITEM_PREMIER_BALL:
+ ballMultiplier = 10;
+ break;
+ }
+ }
+ else
+ ballMultiplier = sBallCatchBonuses[gLastUsedItem - 2];
+ odds = (catchRate * ballMultiplier / 10)
+ * (gBattleMons[gBattlerTarget].maxHP * 3 - gBattleMons[gBattlerTarget].hp * 2)
+ / (3 * gBattleMons[gBattlerTarget].maxHP);
+ if (gBattleMons[gBattlerTarget].status1 & (STATUS1_SLEEP | STATUS1_FREEZE))
+ odds *= 2;
+ if (gBattleMons[gBattlerTarget].status1 & (STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON))
+ odds = (odds * 15) / 10;
+ if (gLastUsedItem != ITEM_SAFARI_BALL)
+ {
+ if (gLastUsedItem == ITEM_MASTER_BALL)
+ {
+ gBattleResults.usedMasterBall = TRUE;
+ }
+ else
+ {
+ if (gBattleResults.catchAttempts[gLastUsedItem - ITEM_ULTRA_BALL] < 0xFF)
+ gBattleResults.catchAttempts[gLastUsedItem - ITEM_ULTRA_BALL]++;
+ }
+ }
+ if (odds > 254) // mon caught
+ {
+ BtlController_EmitBallThrowAnim(0, BALL_3_SHAKES_SUCCESS);
+ MarkBattlerForControllerExec(gActiveBattler);
+ gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
+ SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_POKEBALL, &gLastUsedItem);
+ if (CalculatePlayerPartyCount() == 6)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else // mon may be caught, calculate shakes
+ {
+ u8 shakes;
+
+ odds = Sqrt(Sqrt(16711680 / odds));
+ odds = 1048560 / odds;
+ for (shakes = 0; shakes < 4 && Random() < odds; ++shakes);
+ if (gLastUsedItem == ITEM_MASTER_BALL)
+ shakes = BALL_3_SHAKES_SUCCESS; // why calculate the shakes before that check?
+ BtlController_EmitBallThrowAnim(0, shakes);
+ MarkBattlerForControllerExec(gActiveBattler);
+ if (shakes == BALL_3_SHAKES_SUCCESS) // mon caught, copy of the code above
+ {
+ gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
+ SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_POKEBALL, &gLastUsedItem);
+ if (CalculatePlayerPartyCount() == 6)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else // not caught
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = shakes;
+ gBattlescriptCurrInstr = BattleScript_ShakeBallThrow;
+ }
+ }
+ }
+ }
+}
+
+static void atkF0_givecaughtmon(void)
+{
+ if (GiveMonToPlayer(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]]) != MON_GIVEN_TO_PARTY)
+ {
+ if (!sub_80CC7B4())
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_0x4037)));
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gStringVar2);
+ }
+ else
+ {
+ StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_0x4037)));
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gStringVar2);
+ StringCopy(gStringVar3, GetBoxNamePtr(get_unknown_box_id()));
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ }
+ if (FlagGet(FLAG_SYS_NOT_SOMEONES_PC))
+ ++gBattleCommunication[MULTISTRING_CHOOSER];
+ }
+ gBattleResults.caughtMonSpecies = gBattleMons[gBattlerAttacker ^ BIT_SIDE].species;
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gBattleResults.caughtMonNick);
+ ++gBattlescriptCurrInstr;
+}
+
+static void atkF1_trysetcaughtmondexflags(void)
+{
+ u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL);
+ u32 personality = GetMonData(&gEnemyParty[0], MON_DATA_PERSONALITY, NULL);
+
+ if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT))
+ {
+ gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ HandleSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_SET_CAUGHT, personality);
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkF2_displaydexinfo(void)
+{
+ u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL);
+
+ switch (gBattleCommunication[0])
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_WHITE);
+ ++gBattleCommunication[0];
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ {
+ FreeAllWindowBuffers();
+ gBattleCommunication[TASK_ID] = sub_8106B60(species);
+ ++gBattleCommunication[0];
+ }
+ break;
+ case 2:
+ if (!gPaletteFade.active
+ && gMain.callback2 == BattleMainCB2
+ && !gTasks[gBattleCommunication[TASK_ID]].isActive)
+ {
+ CpuFill32(0, (void *)VRAM, VRAM_SIZE);
+ SetVBlankCallback(VBlankCB_Battle);
+ ++gBattleCommunication[0];
+ }
+ break;
+ case 3:
+ sub_800F34C();
+ LoadBattleTextboxAndBackground();
+ gBattle_BG3_X = 0x100;
+ ++gBattleCommunication[0];
+ break;
+ case 4:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ CreateMonPicSprite_HandleDeoxys(species,
+ gBattleMons[B_POSITION_OPPONENT_LEFT].otId,
+ gBattleMons[B_POSITION_OPPONENT_LEFT].personality,
+ TRUE,
+ 120,
+ 64,
+ 0,
+ 0xFFFF);
+ CpuFill32(0, gPlttBufferFaded, BG_PLTT_SIZE);
+ BeginNormalPaletteFade(0x1FFFF, 0, 0x10, 0, RGB_BLACK);
+ ShowBg(0);
+ ShowBg(3);
+ ++gBattleCommunication[0];
+ }
+ break;
+ case 5:
+ if (!gPaletteFade.active)
+ ++gBattlescriptCurrInstr;
+ break;
+ }
+}
+
+void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags)
+{
+ s32 destY, destX;
+ u16 var = 0;
+
+ for (destY = yStart; destY <= yEnd; ++destY)
+ {
+ for (destX = xStart; destX <= xEnd; ++destX)
+ {
+ if (destY == yStart)
+ {
+ if (destX == xStart)
+ var = 0x1022;
+ else if (destX == xEnd)
+ var = 0x1024;
+ else
+ var = 0x1023;
+ }
+ else if (destY == yEnd)
+ {
+ if (destX == xStart)
+ var = 0x1028;
+ else if (destX == xEnd)
+ var = 0x102A;
+ else
+ var = 0x1029;
+ }
+ else
+ {
+ if (destX == xStart)
+ var = 0x1025;
+ else if (destX == xEnd)
+ var = 0x1027;
+ else
+ var = 0x1026;
+ }
+ if (flags & WINDOW_CLEAR)
+ var = 0;
+ if (flags & WINDOW_x80)
+ CopyToBgTilemapBufferRect_ChangePalette(1, &var, destX, destY, 1, 1, 0x11);
+ else
+ CopyToBgTilemapBufferRect_ChangePalette(0, &var, destX, destY, 1, 1, 0x11);
+ }
+ }
+ CopyBgTilemapBufferToVram(1);
+}
+
+void BattleCreateYesNoCursorAt(void)
+{
+ u16 src[2];
+
+ src[0] = 1;
+ src[1] = 2;
+ CopyToBgTilemapBufferRect_ChangePalette(0, src, 0x18, 9 + (2 * gBattleCommunication[1]), 1, 2, 0x11);
+ CopyBgTilemapBufferToVram(0);
+}
+
+void BattleDestroyYesNoCursorAt(void)
+{
+ u16 src[2];
+
+ src[0] = 32;
+ src[1] = 32;
+ CopyToBgTilemapBufferRect_ChangePalette(0, src, 0x18, 9 + (2 * gBattleCommunication[1]), 1, 2, 0x11);
+ CopyBgTilemapBufferToVram(0);
+}
+
+static void atkF3_trygivecaughtmonnick(void)
+{
+ switch (gBattleCommunication[MULTIUSE_STATE])
+ {
+ case 0:
+ HandleBattleWindow(0x17, 8, 0x1D, 0xD, 0);
+ BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xE);
+ ++gBattleCommunication[MULTIUSE_STATE];
+ gBattleCommunication[CURSOR_POSITION] = 0;
+ BattleCreateYesNoCursorAt();
+ break;
+ case 1:
+ if (gMain.newKeys & DPAD_UP && gBattleCommunication[CURSOR_POSITION] != 0)
+ {
+ PlaySE(SE_SELECT);
+ BattleDestroyYesNoCursorAt();
+ gBattleCommunication[CURSOR_POSITION] = 0;
+ BattleCreateYesNoCursorAt();
+ }
+ if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[CURSOR_POSITION] == 0)
+ {
+ PlaySE(SE_SELECT);
+ BattleDestroyYesNoCursorAt();
+ gBattleCommunication[CURSOR_POSITION] = 1;
+ BattleCreateYesNoCursorAt();
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (gBattleCommunication[CURSOR_POSITION] == 0)
+ {
+ ++gBattleCommunication[MULTIUSE_STATE];
+ BeginFastPaletteFade(3);
+ }
+ else
+ {
+ gBattleCommunication[MULTIUSE_STATE] = 4;
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gBattleCommunication[MULTIUSE_STATE] = 4;
+ }
+ break;
+ case 2:
+ if (!gPaletteFade.active)
+ {
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gBattleStruct->caughtMonNick);
+ FreeAllWindowBuffers();
+ DoNamingScreen(NAMING_SCREEN_CAUGHT_MON, gBattleStruct->caughtMonNick,
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_SPECIES),
+ GetMonGender(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]]),
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_PERSONALITY, NULL),
+ BattleMainCB2);
+ ++gBattleCommunication[MULTIUSE_STATE];
+ }
+ break;
+ case 3:
+ if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
+ {
+ SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gBattleStruct->caughtMonNick);
+ gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
+ }
+ break;
+ case 4:
+ if (CalculatePlayerPartyCount() == PARTY_SIZE)
+ gBattlescriptCurrInstr += 5;
+ else
+ gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
+ break;
+ }
+}
+
+static void atkF4_subattackerhpbydmg(void)
+{
+ gBattleMons[gBattlerAttacker].hp -= gBattleMoveDamage;
+ ++gBattlescriptCurrInstr;
+}
+
+static void atkF5_removeattackerstatus1(void)
+{
+ gBattleMons[gBattlerAttacker].status1 = 0;
+ ++gBattlescriptCurrInstr;
+}
+
+static void atkF6_finishaction(void)
+{
+ gCurrentActionFuncId = B_ACTION_FINISHED;
+}
+
+static void atkF7_finishturn(void)
+{
+ gCurrentActionFuncId = B_ACTION_FINISHED;
+ gCurrentTurnActionNumber = gBattlersCount;
+}