summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDizzyEggg <jajkodizzy@wp.pl>2018-03-01 10:12:35 +0100
committerDizzyEggg <jajkodizzy@wp.pl>2018-03-01 10:12:35 +0100
commitedf2ea45b1adfb5fc287de93abcbeaaaa8913263 (patch)
tree1ad5f60a6cbc2238703410ed67f44fc718e1848b
parentb846015343bda0670e778d66fe500278f53bc4dd (diff)
parent0a9f0d80f5f3d1cf02ae26a7bad1d771f8dedc52 (diff)
merge with master
-rw-r--r--.travis.yml2
-rw-r--r--asm/battle_link_817C95C.s4891
-rw-r--r--asm/field_specials.s4
-rw-r--r--asm/fldeff_flash.s709
-rw-r--r--asm/fldeff_groundshake.s596
-rw-r--r--asm/fossil_specials.s887
-rw-r--r--data/battle_link_817C95C.s174
-rw-r--r--data/fldeff_flash.s81
-rw-r--r--data/fossil_special_fldeff_groundshake.s98
-rw-r--r--include/battle.h93
-rw-r--r--include/battle_link_817C95C.h11
-rw-r--r--include/battle_script_commands.h8
-rw-r--r--include/battle_tv.h11
-rw-r--r--include/braille_puzzles.h7
-rw-r--r--include/event_scripts.h4
-rw-r--r--include/fldeff_groundshake.h7
-rw-r--r--include/global.tv.h4
-rw-r--r--include/roulette_util.h17
-rw-r--r--include/tv.h41
-rw-r--r--ld_script.txt14
-rw-r--r--src/battle_controller_link_opponent.c8
-rw-r--r--src/battle_controller_link_partner.c8
-rw-r--r--src/battle_controller_opponent.c2
-rw-r--r--src/battle_controller_player.c14
-rw-r--r--src/battle_controller_recorded_opponent.c2
-rw-r--r--src/battle_controller_wally.c2
-rw-r--r--src/battle_controllers.c9
-rw-r--r--src/battle_message.c738
-rw-r--r--src/battle_tv.c1576
-rw-r--r--src/fldeff_flash.c367
-rw-r--r--src/fldeff_groundshake.c299
-rw-r--r--src/fldeff_softboiled.c18
-rw-r--r--src/fldeff_strength.c10
-rw-r--r--src/fldeff_sweetscent.c3
-rw-r--r--src/fossil_specials.c770
-rw-r--r--src/pokemon.c20
-rw-r--r--src/scrcmd.c2
-rw-r--r--src/tv.c483
38 files changed, 3838 insertions, 8152 deletions
diff --git a/.travis.yml b/.travis.yml
index 2067d0fdf..e54c14e96 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -13,7 +13,7 @@ cache:
apt: true
install:
- pushd $HOME
- - travis_retry wget http://download.sourceforge.net/devkitpro/devkitARM_r47-x86_64-linux.tar.bz2
+ - travis_retry wget https://downloads.sourceforge.net/project/devkitpro/devkitARM/devkitARM_r47/devkitARM_r47-x86_64-linux.tar.bz2
- tar xf devkitARM*.tar.bz2
- travis_retry git clone https://github.com/pret/agbcc.git
- cd agbcc && ./build.sh && ./install.sh $TRAVIS_BUILD_DIR
diff --git a/asm/battle_link_817C95C.s b/asm/battle_link_817C95C.s
deleted file mode 100644
index 55d0bae39..000000000
--- a/asm/battle_link_817C95C.s
+++ /dev/null
@@ -1,4891 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_817C95C
-sub_817C95C: @ 817C95C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0817C988
- ldr r0, [sp]
- cmp r0, 0x1B
- beq _0817C988
- cmp r0, 0xDD
- beq _0817C988
- bl _0817E0A6
-_0817C988:
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- movs r1, 0x81
- lsls r1, 2
- adds r7, r0, r1
- ldr r5, =gBattlerAttacker
- ldrb r0, [r5]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gBattlerTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, =gEffectBattler
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, =gStringInfo
- ldr r0, [r0]
- ldrb r0, [r0, 0x7]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- cmp r4, 0
- bne _0817CA00
- ldr r2, =gBattlerPartyIndexes
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- b _0817CA10
- .pool
-_0817CA00:
- ldr r2, =gBattlerPartyIndexes
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gEnemyParty
-_0817CA10:
- adds r1, r0
- str r1, [sp, 0x8]
- cmp r6, 0
- bne _0817CA3C
- ldr r0, =gBattlerTarget
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- b _0817CA4C
- .pool
-_0817CA3C:
- ldr r0, =gBattlerTarget
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gEnemyParty
-_0817CA4C:
- adds r1, r0
- str r1, [sp, 0xC]
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- ldr r1, =gStringInfo
- ldr r1, [r1]
- ldrh r1, [r1]
- bl GetBattlerMoveSlotId
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- cmp r0, 0x3
- bls _0817CA9C
- ldr r0, [sp]
- bl sub_817E0B8
- lsls r0, 24
- cmp r0, 0
- beq _0817CA9C
- ldr r2, [sp]
- cmp r2, 0xC
- bls _0817CA9C
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 2
- adds r0, r7, r0
- adds r0, 0x57
- ldrb r1, [r0]
- movs r2, 0x1E
- bl _0817E0A2
- .pool
-_0817CA9C:
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 25
- mov r8, r0
- ldr r0, =gBattlerTarget
- ldrb r0, [r0]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r5, r0, 25
- ldr r0, =gEffectBattler
- ldrb r0, [r0]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r3, r0, 25
- ldr r1, [sp]
- subs r1, 0x2
- movs r0, 0xB0
- lsls r0, 1
- cmp r1, r0
- bls _0817CAD2
- bl _0817E0A6
-_0817CAD2:
- lsls r0, r1, 2
- ldr r1, =_0817CAEC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0817CAEC:
- .4byte _0817DD7A
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817D070
- .4byte _0817DD74
- .4byte _0817DD80
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817DA68
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817D7D8
- .4byte _0817E0A6
- .4byte _0817D8A4
- .4byte _0817E0A6
- .4byte _0817D838
- .4byte _0817E0A6
- .4byte _0817D704
- .4byte _0817E0A6
- .4byte _0817D76C
- .4byte _0817DB24
- .4byte _0817E0A6
- .4byte _0817DB90
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817D9C2
- .4byte _0817E0A6
- .4byte _0817DA24
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817DBD4
- .4byte _0817E0A6
- .4byte _0817D94C
- .4byte _0817E0A6
- .4byte _0817D994
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E040
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817DE10
- .4byte _0817DDC8
- .4byte _0817DEDC
- .4byte _0817DF24
- .4byte _0817DF4E
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817D65E
- .4byte _0817D65E
- .4byte _0817D65E
- .4byte _0817D65E
- .4byte _0817D698
- .4byte _0817E0A6
- .4byte _0817E08E
- .4byte _0817DF70
- .4byte _0817DFBC
- .4byte _0817E0A6
- .4byte _0817E08E
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817D53C
- .4byte _0817E0A6
- .4byte _0817D584
- .4byte _0817DACC
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817D3A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817D296
- .4byte _0817D2E4
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817D5CE
- .4byte _0817D608
- .4byte _0817D498
- .4byte _0817D4E0
- .4byte _0817DC62
- .4byte _0817DC98
- .4byte _0817E0A6
- .4byte _0817D1B8
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817DCDC
- .4byte _0817E0A6
- .4byte _0817D0DC
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817D1E0
- .4byte _0817D314
- .4byte _0817D354
- .4byte _0817D372
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817D216
- .4byte _0817D260
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817D3C0
- .4byte _0817D3F2
- .4byte _0817D440
- .4byte _0817D45C
- .4byte _0817D3B8
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817D098
- .4byte _0817D0D4
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817DC20
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817D16C
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817DD38
- .4byte _0817DCFC
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817D65E
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817D124
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817E0A6
- .4byte _0817DE58
- .4byte _0817DDC8
- .4byte _0817DE10
- .4byte _0817DFE6
-_0817D070:
- movs r0, 0x1
- mov r1, r10
- movs r2, 0x2
- movs r3, 0
- bl sub_817E684
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0817D08C
- bl _0817E0A6
-_0817D08C:
- bl sub_817EECC
- bl _0817E0A6
- .pool
-_0817D098:
- movs r0, 0x1
- mov r1, r10
- movs r2, 0x1
- movs r3, 0
- bl sub_817E684
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0817D0B4
- bl _0817E0A6
-_0817D0B4:
- ldr r0, [sp, 0xC]
- movs r1, 0x39
- movs r2, 0
- bl GetMonData
- cmp r0, 0
- bne _0817D0C6
- bl _0817E0A6
-_0817D0C6:
- bl sub_817EECC
- bl _0817E0A6
- .pool
-_0817D0D4:
- movs r0, 0x1
- mov r1, r10
- movs r2, 0
- b _0817D48E
-_0817D0DC:
- lsls r3, r4, 1
- adds r3, r4
- lsls r3, 2
- adds r3, r7, r3
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- adds r0, 0x1
- movs r1, 0x7
- ands r0, r1
- lsls r0, 15
- ldr r1, [r3, 0x50]
- ldr r2, =0xfffc7fff
- ands r1, r2
- orrs r1, r0
- str r1, [r3, 0x50]
- adds r3, 0x55
- movs r0, 0x3
- mov r1, r10
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3]
- movs r0, 0xD
- negs r0, r0
- bl _0817DC0C
- .pool
-_0817D124:
- lsls r2, r4, 1
- adds r2, r4
- lsls r2, 2
- adds r2, r7, r2
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- adds r1, 0x1
- adds r4, r2, 0
- adds r4, 0x52
- movs r0, 0x7
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r4]
- movs r0, 0x1D
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r4]
- adds r2, 0x55
- movs r0, 0x3
- mov r1, r10
- ands r1, r0
- lsls r1, 4
- ldrb r3, [r2]
- movs r0, 0x31
- negs r0, r0
- bl _0817DFAA
- .pool
-_0817D16C:
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 2
- adds r5, r7, r0
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- adds r1, 0x1
- adds r3, r5, 0
- adds r3, 0x52
- lsls r1, 5
- ldrb r2, [r3]
- movs r0, 0x1F
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- adds r4, r5, 0
- adds r4, 0x55
- mov r0, r10
- lsls r2, r0, 6
- ldrb r1, [r4]
- movs r0, 0x3F
- ands r0, r1
- orrs r0, r2
- strb r0, [r4]
- adds r2, r5, 0
- adds r2, 0x58
- ldrb r0, [r2]
- movs r1, 0x40
- bl _0817DFAC
- .pool
-_0817D1B8:
- ldr r1, =gBattleTextBuff1 + 4
- ldrb r0, [r1]
- cmp r0, 0
- beq _0817D1C4
- bl _0817E0A6
-_0817D1C4:
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 2
- adds r0, r7, r0
- adds r0, 0x57
- ldrb r2, [r0]
- movs r1, 0x1F
- negs r1, r1
- ands r1, r2
- movs r2, 0x14
- bl _0817E0A2
- .pool
-_0817D1E0:
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 2
- adds r3, r7, r0
- adds r0, r3, 0
- adds r0, 0x53
- ldrb r0, [r0]
- lsls r0, 29
- lsrs r0, 29
- cmp r0, 0
- bne _0817D1FA
- bl _0817E0A6
-_0817D1FA:
- adds r2, r6, 0
- subs r1, r0, 0x1
- lsls r1, 2
- adds r0, r3, 0
- adds r0, 0x56
- ldrb r3, [r0]
- lsls r3, 30
- lsrs r3, 30
- adds r3, r1
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x2
- bl _0817DB10
-_0817D216:
- lsls r2, r4, 1
- adds r2, r4
- lsls r2, 2
- adds r2, r7, r2
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- adds r1, 0x1
- adds r4, r2, 0
- adds r4, 0x53
- movs r0, 0x7
- ands r1, r0
- lsls r1, 3
- ldrb r3, [r4]
- movs r0, 0x39
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r4]
- adds r2, 0x56
- movs r0, 0x3
- mov r1, r10
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0xD
- negs r0, r0
- bl _0817DFAA
- .pool
-_0817D260:
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 2
- adds r3, r7, r0
- adds r0, r3, 0
- adds r0, 0x53
- ldrb r0, [r0]
- lsls r0, 26
- lsrs r0, 29
- cmp r0, 0
- bne _0817D27A
- bl _0817E0A6
-_0817D27A:
- adds r2, r6, 0
- subs r1, r0, 0x1
- lsls r1, 2
- adds r0, r3, 0
- adds r0, 0x56
- ldrb r3, [r0]
- lsls r3, 28
- lsrs r3, 30
- adds r3, r1
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x2
- bl _0817DBC2
-_0817D296:
- lsls r2, r4, 1
- adds r2, r4
- lsls r2, 2
- adds r2, r7, r2
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- adds r1, 0x1
- adds r2, 0x56
- movs r0, 0x7
- ands r1, r0
- lsls r1, 4
- ldrb r3, [r2]
- movs r0, 0x71
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x3
- mov r1, r10
- ands r1, r0
- lsls r1, 7
- ldrh r3, [r2]
- ldr r0, =0xfffffe7f
- ands r0, r3
- orrs r0, r1
- strh r0, [r2]
- bl _0817E0A6
- .pool
-_0817D2E4:
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 2
- adds r0, r7, r0
- adds r0, 0x56
- ldrb r0, [r0]
- lsls r0, 25
- lsrs r0, 29
- cmp r0, 0
- bne _0817D2FC
- bl _0817E0A6
-_0817D2FC:
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 2
- adds r0, r7, r0
- adds r0, 0x57
- ldrb r2, [r0]
- movs r1, 0x1F
- negs r1, r1
- ands r1, r2
- movs r2, 0x16
- bl _0817E0A2
-_0817D314:
- mov r2, r8
- lsls r3, r2, 3
- lsls r0, r4, 4
- adds r3, r0
- adds r3, r7, r3
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- adds r1, 0x1
- adds r3, 0x35
- movs r0, 0x7
- ands r1, r0
- ldrb r2, [r3]
- movs r0, 0x8
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- movs r2, 0x3
- mov r1, r10
- ands r1, r2
- lsls r1, 3
- movs r2, 0x19
- negs r2, r2
- bl _0817DC0C
- .pool
-_0817D354:
- mov r1, r8
- lsls r0, r1, 3
- lsls r1, r4, 4
- adds r0, r1
- adds r0, r7, r0
- adds r0, 0x35
- ldrb r1, [r0]
- lsls r0, r1, 29
- lsrs r0, 29
- cmp r0, 0
- bne _0817D36E
- bl _0817E0A6
-_0817D36E:
- adds r2, r4, 0
- b _0817D38C
-_0817D372:
- lsls r0, r5, 3
- lsls r1, r6, 4
- adds r0, r1
- adds r0, r7, r0
- adds r0, 0x35
- ldrb r1, [r0]
- lsls r0, r1, 29
- lsrs r0, 29
- cmp r0, 0
- bne _0817D38A
- bl _0817E0A6
-_0817D38A:
- adds r2, r6, 0
-_0817D38C:
- subs r0, 0x1
- lsls r0, 2
- lsls r3, r1, 27
- lsrs r3, 30
- adds r3, r0
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x2
- movs r1, 0x6
- bl sub_817E684
- bl _0817E0A6
-_0817D3A6:
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0xB3
- movs r1, 0x1
- bl _0817E0A4
- .pool
-_0817D3B8:
- movs r0, 0x12
- mov r1, r10
- movs r2, 0
- b _0817D48E
-_0817D3C0:
- ldr r0, =gBattleTextBuff1
- ldrb r2, [r0, 0x2]
- cmp r2, 0
- bne _0817D3CC
- bl _0817E0A6
-_0817D3CC:
- ldr r1, =gBattleTextBuff2 + 2
- ldrh r0, [r1]
- cmp r0, 0xD1
- bne _0817D3E8
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0x17
- b _0817D48C
- .pool
-_0817D3E8:
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0x16
- b _0817D48C
-_0817D3F2:
- ldr r0, =gBattleTextBuff1
- ldrb r2, [r0, 0x2]
- cmp r2, 0
- bne _0817D3FE
- bl _0817E0A6
-_0817D3FE:
- ldr r0, =gBattlerAttacker
- ldr r1, =gBattlerTarget
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bne _0817D436
- ldr r1, =gBattleTextBuff2 + 2
- ldrh r0, [r1]
- cmp r0, 0xD1
- bne _0817D42C
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0x17
- b _0817D48C
- .pool
-_0817D42C:
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0x16
- b _0817D48C
-_0817D436:
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0x1B
- b _0817D48C
-_0817D440:
- ldr r0, =gBattleTextBuff1
- ldrb r2, [r0, 0x2]
- cmp r2, 0
- bne _0817D44C
- bl _0817E0A6
-_0817D44C:
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0x18
- b _0817D48C
- .pool
-_0817D45C:
- ldr r0, =gBattleTextBuff1
- ldrb r2, [r0, 0x2]
- cmp r2, 0
- bne _0817D468
- bl _0817E0A6
-_0817D468:
- ldr r1, =gBattleTextBuff2 + 2
- ldrh r0, [r1]
- cmp r0, 0xD3
- bne _0817D484
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0x1A
- b _0817D48C
- .pool
-_0817D484:
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0x19
-_0817D48C:
- mov r1, r10
-_0817D48E:
- movs r3, 0
- bl sub_817E684
- bl _0817E0A6
-_0817D498:
- lsls r2, r5, 3
- lsls r0, r6, 4
- adds r2, r0
- adds r2, r7, r2
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- adds r1, 0x1
- adds r4, r2, 0
- adds r4, 0x30
- movs r0, 0x7
- ands r1, r0
- ldrb r3, [r4]
- movs r0, 0x8
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r4]
- adds r2, 0x32
- movs r0, 0x3
- mov r1, r10
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0xD
- negs r0, r0
- bl _0817DFAA
- .pool
-_0817D4E0:
- ldr r0, [sp, 0x8]
- movs r1, 0x39
- movs r2, 0
- bl GetMonData
- cmp r0, 0
- bne _0817D4F2
- bl _0817E0A6
-_0817D4F2:
- mov r2, r8
- lsls r0, r2, 3
- lsls r1, r4, 4
- adds r0, r1
- adds r1, r7, r0
- adds r0, r1, 0
- adds r0, 0x30
- ldrb r0, [r0]
- lsls r0, 29
- lsrs r0, 29
- cmp r0, 0
- bne _0817D50E
- bl _0817E0A6
-_0817D50E:
- subs r2, r0, 0x1
- lsls r2, 24
- lsrs r2, 24
- adds r0, r1, 0
- adds r0, 0x32
- ldrb r3, [r0]
- lsls r3, 28
- lsrs r3, 30
- movs r0, 0x8
- movs r1, 0
- bl sub_817E684
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 2
- adds r1, r7, r1
- adds r1, 0x57
- ldrb r2, [r1]
- movs r0, 0x1F
- negs r0, r0
- ands r0, r2
- movs r2, 0x2
- b _0817D6F2
-_0817D53C:
- lsls r2, r5, 3
- lsls r0, r6, 4
- adds r2, r0
- adds r2, r7, r2
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- adds r1, 0x1
- adds r4, r2, 0
- adds r4, 0x30
- movs r0, 0x7
- ands r1, r0
- lsls r1, 3
- ldrb r3, [r4]
- movs r0, 0x39
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r4]
- adds r2, 0x32
- movs r0, 0x3
- mov r1, r10
- ands r1, r0
- lsls r1, 4
- ldrb r3, [r2]
- movs r0, 0x31
- negs r0, r0
- bl _0817DFAA
- .pool
-_0817D584:
- mov r1, r8
- lsls r0, r1, 3
- lsls r1, r4, 4
- adds r0, r1
- adds r1, r7, r0
- adds r0, r1, 0
- adds r0, 0x30
- ldrb r0, [r0]
- lsls r0, 26
- lsrs r0, 29
- cmp r0, 0
- bne _0817D5A0
- bl _0817E0A6
-_0817D5A0:
- subs r2, r0, 0x1
- lsls r2, 24
- lsrs r2, 24
- adds r0, r1, 0
- adds r0, 0x32
- ldrb r3, [r0]
- lsls r3, 26
- lsrs r3, 30
- movs r0, 0x8
- movs r1, 0x1
- bl sub_817E684
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 2
- adds r1, r7, r1
- adds r1, 0x57
- ldrb r2, [r1]
- movs r0, 0x1F
- negs r0, r0
- ands r0, r2
- movs r2, 0x4
- b _0817D6F2
-_0817D5CE:
- lsls r2, r5, 3
- lsls r0, r6, 4
- adds r2, r0
- adds r2, r7, r2
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- adds r1, 0x1
- movs r0, 0x7
- ands r1, r0
- lsls r1, 6
- ldrh r3, [r2, 0x30]
- ldr r0, =0xfffffe3f
- ands r0, r3
- orrs r0, r1
- strh r0, [r2, 0x30]
- adds r2, 0x32
- bl _0817DF0A
- .pool
-_0817D608:
- ldr r0, [sp, 0x8]
- movs r1, 0x39
- movs r2, 0
- bl GetMonData
- cmp r0, 0
- bne _0817D61A
- bl _0817E0A6
-_0817D61A:
- mov r1, r8
- lsls r0, r1, 3
- lsls r1, r4, 4
- adds r0, r1
- adds r1, r7, r0
- ldrh r0, [r1, 0x30]
- lsls r0, 23
- lsrs r0, 29
- cmp r0, 0
- bne _0817D632
- bl _0817E0A6
-_0817D632:
- subs r2, r0, 0x1
- lsls r2, 24
- lsrs r2, 24
- adds r0, r1, 0
- adds r0, 0x32
- ldrb r3, [r0]
- lsrs r3, 6
- movs r0, 0x8
- movs r1, 0x5
- bl sub_817E684
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 2
- adds r1, r7, r1
- adds r1, 0x57
- ldrb r2, [r1]
- movs r0, 0x1F
- negs r0, r0
- ands r0, r2
- movs r2, 0xA
- b _0817D6F2
-_0817D65E:
- lsls r2, r5, 3
- lsls r0, r6, 4
- adds r2, r0
- adds r2, r7, r2
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- adds r1, 0x1
- adds r4, r2, 0
- adds r4, 0x31
- movs r0, 0x7
- ands r1, r0
- lsls r1, 1
- ldrb r3, [r4]
- movs r0, 0xF
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r4]
- adds r2, 0x33
- bl _0817DF9E
- .pool
-_0817D698:
- ldr r0, [sp, 0x8]
- movs r1, 0x39
- movs r2, 0
- bl GetMonData
- cmp r0, 0
- bne _0817D6AA
- bl _0817E0A6
-_0817D6AA:
- mov r1, r8
- lsls r0, r1, 3
- lsls r1, r4, 4
- adds r0, r1
- adds r1, r7, r0
- adds r0, r1, 0
- adds r0, 0x31
- ldrb r0, [r0]
- lsls r0, 28
- lsrs r0, 29
- cmp r0, 0
- bne _0817D6C6
- bl _0817E0A6
-_0817D6C6:
- subs r2, r0, 0x1
- lsls r2, 24
- lsrs r2, 24
- adds r0, r1, 0
- adds r0, 0x33
- ldrb r3, [r0]
- lsls r3, 30
- lsrs r3, 30
- movs r0, 0x8
- movs r1, 0x6
- bl sub_817E684
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 2
- adds r1, r7, r1
- adds r1, 0x57
- ldrb r2, [r1]
- movs r0, 0x1F
- negs r0, r0
- ands r0, r2
- movs r2, 0xC
-_0817D6F2:
- orrs r0, r2
- mov r2, r8
- lsls r3, r2, 5
- movs r2, 0x1F
- ands r0, r2
- orrs r0, r3
- strb r0, [r1]
- bl _0817E0A6
-_0817D704:
- ldr r5, =gBattlerPartyIndexes
- ldr r6, =gEffectBattler
- ldrb r0, [r6]
- lsls r0, 1
- adds r0, r5
- ldrh r2, [r0]
- lsls r2, 2
- mov r0, r9
- lsls r4, r0, 1
- add r4, r9
- lsls r4, 3
- adds r2, r4
- adds r2, r7, r2
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r5
- ldrh r1, [r0]
- adds r1, 0x1
- movs r0, 0x7
- ands r1, r0
- lsls r1, 6
- ldrh r3, [r2]
- ldr r0, =0xfffffe3f
- ands r0, r3
- orrs r0, r1
- strh r0, [r2]
- ldrb r0, [r6]
- lsls r0, 1
- adds r0, r5
- ldrh r1, [r0]
- lsls r1, 2
- adds r1, r4
- adds r1, r7, r1
- mov r2, r10
- lsls r3, r2, 6
- ldrb r2, [r1, 0x2]
- movs r0, 0x3F
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x2]
- bl _0817E0A6
- .pool
-_0817D76C:
- ldr r0, [sp, 0x8]
- movs r1, 0x39
- movs r2, 0
- bl GetMonData
- cmp r0, 0
- bne _0817D77E
- bl _0817E0A6
-_0817D77E:
- ldr r6, =gBattlerPartyIndexes
- ldr r5, =gBattlerAttacker
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- lsls r0, 2
- lsls r1, r4, 1
- adds r4, r1, r4
- lsls r1, r4, 3
- adds r0, r1
- adds r1, r7, r0
- ldrh r0, [r1]
- lsls r0, 23
- lsrs r0, 29
- cmp r0, 0
- beq _0817D7B2
- subs r2, r0, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldrb r3, [r1, 0x2]
- lsrs r3, 6
- movs r0, 0x8
- movs r1, 0x4
- bl sub_817E684
-_0817D7B2:
- lsls r3, r4, 2
- adds r3, r7, r3
- adds r3, 0x57
- ldrb r0, [r3]
- movs r1, 0x1F
- negs r1, r1
- ands r1, r0
- movs r0, 0x8
- orrs r1, r0
- strb r1, [r3]
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r6
- b _0817D934
- .pool
-_0817D7D8:
- ldr r5, =gBattlerPartyIndexes
- ldr r6, =gEffectBattler
- ldrb r0, [r6]
- lsls r0, 1
- adds r0, r5
- ldrh r2, [r0]
- lsls r2, 2
- mov r0, r9
- lsls r4, r0, 1
- add r4, r9
- lsls r4, 3
- adds r2, r4
- adds r2, r7, r2
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r5
- ldrh r1, [r0]
- adds r1, 0x1
- movs r0, 0x7
- ands r1, r0
- ldrb r3, [r2]
- movs r0, 0x8
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- ldrb r0, [r6]
- lsls r0, 1
- adds r0, r5
- ldrh r1, [r0]
- lsls r1, 2
- adds r1, r4
- adds r1, r7, r1
- movs r0, 0x3
- mov r2, r10
- ands r2, r0
- lsls r2, 2
- ldrb r3, [r1, 0x2]
- movs r0, 0xD
- negs r0, r0
- b _0817D88C
- .pool
-_0817D838:
- ldr r5, =gBattlerPartyIndexes
- ldr r6, =gEffectBattler
- ldrb r0, [r6]
- lsls r0, 1
- adds r0, r5
- ldrh r2, [r0]
- lsls r2, 2
- mov r1, r9
- lsls r4, r1, 1
- add r4, r9
- lsls r4, 3
- adds r2, r4
- adds r2, r7, r2
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r5
- ldrh r1, [r0]
- adds r1, 0x1
- movs r0, 0x7
- ands r1, r0
- lsls r1, 3
- ldrb r3, [r2]
- movs r0, 0x39
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- ldrb r0, [r6]
- lsls r0, 1
- adds r0, r5
- ldrh r1, [r0]
- lsls r1, 2
- adds r1, r4
- adds r1, r7, r1
- movs r0, 0x3
- mov r2, r10
- ands r2, r0
- lsls r2, 4
- ldrb r3, [r1, 0x2]
- movs r0, 0x31
- negs r0, r0
-_0817D88C:
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0x2]
- bl _0817E0A6
- .pool
-_0817D8A4:
- ldr r0, [sp, 0x8]
- movs r1, 0x39
- movs r2, 0
- bl GetMonData
- cmp r0, 0
- bne _0817D8B6
- bl _0817E0A6
-_0817D8B6:
- ldr r2, =gBattlerPartyIndexes
- mov r8, r2
- ldr r6, =gBattlerAttacker
- ldrb r0, [r6]
- lsls r0, 1
- add r0, r8
- ldrh r0, [r0]
- lsls r0, 2
- lsls r1, r4, 1
- adds r5, r1, r4
- lsls r4, r5, 3
- adds r0, r4
- adds r1, r7, r0
- ldrb r0, [r1]
- lsls r0, 29
- lsrs r0, 29
- cmp r0, 0
- beq _0817D8EE
- subs r2, r0, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldrb r3, [r1, 0x2]
- lsls r3, 28
- lsrs r3, 30
- movs r0, 0x8
- movs r1, 0x2
- bl sub_817E684
-_0817D8EE:
- ldrb r0, [r6]
- lsls r0, 1
- add r0, r8
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r4
- adds r1, r7, r0
- ldrb r0, [r1]
- lsls r0, 26
- lsrs r0, 29
- cmp r0, 0
- beq _0817D91A
- subs r2, r0, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldrb r3, [r1, 0x2]
- lsls r3, 26
- lsrs r3, 30
- movs r0, 0x8
- movs r1, 0x3
- bl sub_817E684
-_0817D91A:
- lsls r3, r5, 2
- adds r3, r7, r3
- adds r3, 0x57
- ldrb r0, [r3]
- movs r1, 0x1F
- negs r1, r1
- ands r1, r0
- movs r0, 0x6
- orrs r1, r0
- strb r1, [r3]
- ldrb r0, [r6]
- lsls r0, 1
- add r0, r8
-_0817D934:
- ldrh r0, [r0]
- lsls r0, 5
- movs r2, 0x1F
- ands r1, r2
- orrs r1, r0
- strb r1, [r3]
- b _0817E0A6
- .pool
-_0817D94C:
- lsls r2, r5, 3
- lsls r0, r6, 4
- adds r2, r0
- adds r2, r7, r2
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- adds r1, 0x1
- adds r4, r2, 0
- adds r4, 0x31
- movs r0, 0x7
- ands r1, r0
- lsls r1, 4
- ldrb r3, [r4]
- movs r0, 0x71
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r4]
- adds r2, 0x33
- movs r0, 0x3
- mov r1, r10
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0xD
- negs r0, r0
- b _0817DFAA
- .pool
-_0817D994:
- mov r1, r8
- lsls r0, r1, 3
- lsls r1, r4, 4
- adds r0, r1
- adds r1, r7, r0
- adds r0, r1, 0
- adds r0, 0x31
- ldrb r0, [r0]
- lsls r0, 25
- lsrs r0, 29
- cmp r0, 0
- bne _0817D9AE
- b _0817E0A6
-_0817D9AE:
- subs r2, r0, 0x1
- lsls r2, 24
- lsrs r2, 24
- adds r0, r1, 0
- adds r0, 0x33
- ldrb r3, [r0]
- lsls r3, 28
- lsrs r3, 30
- movs r0, 0x9
- b _0817E086
-_0817D9C2:
- ldr r5, =gBattlerPartyIndexes
- ldr r6, =gEffectBattler
- ldrb r0, [r6]
- lsls r0, 1
- adds r0, r5
- ldrh r2, [r0]
- lsls r2, 2
- mov r0, r9
- lsls r4, r0, 1
- add r4, r9
- lsls r4, 3
- adds r2, r4
- adds r2, r7, r2
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r5
- ldrh r1, [r0]
- adds r1, 0x1
- movs r0, 0x7
- ands r1, r0
- lsls r1, 1
- ldrb r3, [r2, 0x1]
- movs r0, 0xF
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x1]
- ldrb r0, [r6]
- lsls r0, 1
- adds r0, r5
- ldrh r1, [r0]
- lsls r1, 2
- adds r1, r4
- adds r1, r7, r1
- movs r0, 0x3
- mov r2, r10
- ands r2, r0
- ldrb r3, [r1, 0x3]
- movs r0, 0x4
- negs r0, r0
- b _0817DB76
- .pool
-_0817DA24:
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- lsls r1, 2
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 3
- adds r1, r0
- adds r1, r7, r1
- ldrb r0, [r1, 0x1]
- lsls r0, 28
- lsrs r0, 29
- cmp r0, 0
- bne _0817DA48
- b _0817E0A6
-_0817DA48:
- subs r2, r0, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldrb r3, [r1, 0x3]
- lsls r3, 30
- lsrs r3, 30
- movs r0, 0x9
- movs r1, 0x2
- bl sub_817E684
- b _0817E0A6
- .pool
-_0817DA68:
- ldr r5, =gBattlerPartyIndexes
- ldr r6, =gEffectBattler
- ldrb r0, [r6]
- lsls r0, 1
- adds r0, r5
- ldrh r2, [r0]
- lsls r2, 2
- mov r1, r9
- lsls r4, r1, 1
- add r4, r9
- lsls r4, 3
- adds r2, r4
- adds r2, r7, r2
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r5
- ldrh r1, [r0]
- adds r1, 0x1
- movs r0, 0x7
- ands r1, r0
- lsls r1, 4
- ldrb r3, [r2, 0x1]
- movs r0, 0x71
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x1]
- ldrb r0, [r6]
- lsls r0, 1
- adds r0, r5
- ldrh r1, [r0]
- lsls r1, 2
- adds r1, r4
- adds r1, r7, r1
- movs r0, 0x3
- mov r2, r10
- ands r2, r0
- lsls r2, 2
- ldrb r3, [r1, 0x3]
- movs r0, 0xD
- negs r0, r0
- b _0817DB76
- .pool
-_0817DACC:
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- lsls r1, 2
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 3
- adds r1, r0
- adds r1, r7, r1
- ldrb r0, [r1, 0x1]
- lsls r0, 25
- lsrs r2, r0, 29
- cmp r2, 0
- bne _0817DAF0
- b _0817E0A6
-_0817DAF0:
- ldr r0, =gStringInfo
- ldr r0, [r0]
- ldrh r0, [r0]
- cmp r0, 0xAD
- bne _0817DAFC
- b _0817E0A6
-_0817DAFC:
- cmp r0, 0xD6
- bne _0817DB02
- b _0817E0A6
-_0817DB02:
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldrb r3, [r1, 0x3]
- lsls r3, 28
- lsrs r3, 30
- movs r0, 0x9
-_0817DB10:
- movs r1, 0x3
- bl sub_817E684
- b _0817E0A6
- .pool
-_0817DB24:
- ldr r5, =gBattlerPartyIndexes
- ldr r6, =gEffectBattler
- ldrb r0, [r6]
- lsls r0, 1
- adds r0, r5
- ldrh r3, [r0]
- lsls r3, 2
- mov r2, r9
- lsls r4, r2, 1
- add r4, r9
- lsls r4, 3
- adds r3, r4
- adds r3, r7, r3
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r5
- ldrh r0, [r0]
- adds r0, 0x1
- movs r1, 0x7
- ands r0, r1
- lsls r0, 15
- ldr r1, [r3]
- ldr r2, =0xfffc7fff
- ands r1, r2
- orrs r1, r0
- str r1, [r3]
- ldrb r0, [r6]
- lsls r0, 1
- adds r0, r5
- ldrh r1, [r0]
- lsls r1, 2
- adds r1, r4
- adds r1, r7, r1
- movs r0, 0x3
- mov r2, r10
- ands r2, r0
- lsls r2, 4
- ldrb r3, [r1, 0x3]
- movs r0, 0x31
- negs r0, r0
-_0817DB76:
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0x3]
- b _0817E0A6
- .pool
-_0817DB90:
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- lsls r1, 2
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 3
- adds r1, r0
- adds r1, r7, r1
- ldr r0, [r1]
- lsls r0, 14
- lsrs r0, 29
- cmp r0, 0
- bne _0817DBB4
- b _0817E0A6
-_0817DBB4:
- subs r2, r0, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldrb r3, [r1, 0x3]
- lsls r3, 26
- lsrs r3, 30
- movs r0, 0x9
-_0817DBC2:
- movs r1, 0x4
- bl sub_817E684
- b _0817E0A6
- .pool
-_0817DBD4:
- lsls r3, 3
- mov r1, r9
- lsls r0, r1, 4
- adds r3, r0
- adds r3, r7, r3
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- adds r0, 0x1
- movs r1, 0x7
- ands r0, r1
- lsls r0, 15
- ldr r1, [r3, 0x30]
- ldr r2, =0xfffc7fff
- ands r1, r2
- orrs r1, r0
- str r1, [r3, 0x30]
- adds r3, 0x33
- movs r0, 0x3
- mov r1, r10
- ands r1, r0
- lsls r1, 4
- ldrb r2, [r3]
- movs r0, 0x31
- negs r0, r0
-_0817DC0C:
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- b _0817E0A6
- .pool
-_0817DC20:
- mov r2, r8
- lsls r0, r2, 3
- lsls r1, r4, 4
- adds r0, r1
- adds r3, r7, r0
- ldr r0, [r3, 0x30]
- lsls r0, 14
- lsrs r0, 29
- cmp r0, 0
- beq _0817DC4C
- subs r2, r0, 0x1
- lsls r2, 24
- lsrs r2, 24
- adds r0, r3, 0
- adds r0, 0x33
- ldrb r3, [r0]
- lsls r3, 26
- lsrs r3, 30
- movs r0, 0x9
- movs r1, 0x1
- bl sub_817E684
-_0817DC4C:
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 2
- adds r0, r7, r0
- adds r0, 0x57
- ldrb r2, [r0]
- movs r1, 0x1F
- negs r1, r1
- ands r1, r2
- movs r2, 0x18
- b _0817E0A2
-_0817DC62:
- lsls r2, r6, 1
- adds r2, r6
- lsls r2, 2
- adds r2, r7, r2
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- adds r1, 0x1
- adds r4, r2, 0
- adds r4, 0x50
- movs r0, 0x7
- ands r1, r0
- ldrb r3, [r4]
- movs r0, 0x8
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r4]
- adds r2, 0x54
- b _0817DF9E
- .pool
-_0817DC98:
- ldr r1, [sp, 0x4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r4, r7, r0
- adds r0, r4, 0
- adds r0, 0x50
- ldrb r0, [r0]
- lsls r0, 29
- lsrs r2, r0, 29
- cmp r2, 0
- bne _0817DCB2
- b _0817E0A6
-_0817DCB2:
- movs r0, 0x1
- eors r1, r0
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r0, 0x54
- ldrb r3, [r0]
- lsls r3, 30
- lsrs r3, 30
- movs r0, 0xA
- bl sub_817E684
- adds r2, r4, 0
- adds r2, 0x57
- ldrb r1, [r2]
- movs r0, 0x1F
- negs r0, r0
- ands r0, r1
- movs r1, 0xE
- b _0817DFAC
-_0817DCDC:
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 2
- adds r1, r7, r1
- adds r3, r1, 0
- adds r3, 0x50
- ldrb r2, [r3]
- movs r0, 0x8
- negs r0, r0
- ands r0, r2
- strb r0, [r3]
- adds r1, 0x54
- ldrb r2, [r1]
- movs r0, 0x4
- negs r0, r0
- b _0817DF6A
-_0817DCFC:
- mov r0, r8
- lsls r2, r0, 3
- lsls r0, r4, 4
- adds r2, r0
- adds r2, r7, r2
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- adds r1, 0x1
- adds r4, r2, 0
- adds r4, 0x34
- movs r0, 0x7
- ands r1, r0
- ldrb r3, [r4]
- movs r0, 0x8
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r4]
- adds r2, 0x33
- mov r1, r10
- lsls r3, r1, 6
- b _0817DF0E
- .pool
-_0817DD38:
- mov r0, r8
- lsls r2, r0, 3
- lsls r0, r4, 4
- adds r2, r0
- adds r2, r7, r2
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- adds r1, 0x1
- adds r2, 0x34
- movs r0, 0x7
- ands r1, r0
- lsls r1, 3
- ldrb r3, [r2]
- movs r0, 0x39
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- mov r1, r10
- lsls r3, r1, 6
- movs r1, 0x3F
- b _0817DF12
- .pool
-_0817DD74:
- movs r0, 0
- bl sub_817EA80
-_0817DD7A:
- mov r2, r8
- lsls r0, r2, 3
- b _0817DD88
-_0817DD80:
- movs r0, 0x1
- bl sub_817EA80
- lsls r0, r5, 3
-_0817DD88:
- lsls r1, r4, 4
- adds r0, r1
- adds r1, r7, r0
- adds r4, r1, 0
- adds r4, 0x34
- ldrb r5, [r4]
- lsls r0, r5, 29
- cmp r0, 0
- beq _0817DDAE
- movs r0, 0x8
- negs r0, r0
- ands r0, r5
- strb r0, [r4]
- adds r2, r1, 0
- adds r2, 0x33
- ldrb r1, [r2]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r2]
-_0817DDAE:
- ldrb r1, [r4]
- lsls r0, r1, 26
- lsrs r0, 29
- cmp r0, 0
- bne _0817DDBA
- b _0817E0A6
-_0817DDBA:
- movs r0, 0x39
- negs r0, r0
- ands r0, r1
- movs r1, 0x3F
- ands r0, r1
- strb r0, [r4]
- b _0817E0A6
-_0817DDC8:
- lsls r2, r4, 1
- adds r2, r4
- lsls r2, 2
- adds r2, r7, r2
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- adds r1, 0x1
- adds r4, r2, 0
- adds r4, 0x50
- movs r0, 0x7
- ands r1, r0
- lsls r1, 3
- ldrb r3, [r4]
- movs r0, 0x39
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r4]
- adds r2, 0x54
- movs r0, 0x3
- mov r1, r10
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0xD
- negs r0, r0
- b _0817DFAA
- .pool
-_0817DE10:
- lsls r2, r4, 1
- adds r2, r4
- lsls r2, 2
- adds r2, r7, r2
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- adds r1, 0x1
- adds r4, r2, 0
- adds r4, 0x50
- movs r0, 0x7
- ands r1, r0
- lsls r1, 6
- ldrh r3, [r4]
- ldr r0, =0xfffffe3f
- ands r0, r3
- orrs r0, r1
- strh r0, [r4]
- adds r2, 0x54
- movs r0, 0x3
- mov r1, r10
- ands r1, r0
- lsls r1, 4
- ldrb r3, [r2]
- movs r0, 0x31
- negs r0, r0
- b _0817DFAA
- .pool
-_0817DE58:
- ldr r1, =gBattleTextBuff1 + 2
- ldrh r0, [r1]
- cmp r0, 0x73
- bne _0817DE82
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 2
- adds r1, r7, r1
- adds r3, r1, 0
- adds r3, 0x50
- ldrb r2, [r3]
- movs r0, 0x39
- negs r0, r0
- ands r0, r2
- strb r0, [r3]
- adds r1, 0x54
- ldrb r2, [r1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
-_0817DE82:
- ldr r2, =gBattleTextBuff1 + 2
- ldrh r0, [r2]
- cmp r0, 0x71
- bne _0817DEAA
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 2
- adds r1, r7, r1
- adds r3, r1, 0
- adds r3, 0x50
- ldrh r2, [r3]
- ldr r0, =0xfffffe3f
- ands r0, r2
- strh r0, [r3]
- adds r1, 0x54
- ldrb r2, [r1]
- movs r0, 0x31
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
-_0817DEAA:
- ldr r1, =gBattleTextBuff1 + 2
- ldrh r0, [r1]
- cmp r0, 0x36
- beq _0817DEB4
- b _0817E0A6
-_0817DEB4:
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 2
- adds r1, r7, r1
- adds r4, r1, 0
- adds r4, 0x51
- ldrb r2, [r4]
- movs r0, 0x71
- negs r0, r0
- ands r0, r2
- strb r0, [r4]
- adds r1, 0x55
- ldrb r2, [r1]
- movs r0, 0x4
- negs r0, r0
- b _0817DF6A
- .pool
-_0817DEDC:
- lsls r2, r4, 1
- adds r2, r4
- lsls r2, 2
- adds r2, r7, r2
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- adds r1, 0x1
- adds r4, r2, 0
- adds r4, 0x51
- movs r0, 0x7
- ands r1, r0
- lsls r1, 1
- ldrb r3, [r4]
- movs r0, 0xF
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r4]
- adds r2, 0x54
-_0817DF0A:
- mov r0, r10
- lsls r3, r0, 6
-_0817DF0E:
- ldrb r1, [r2]
- movs r0, 0x3F
-_0817DF12:
- ands r0, r1
- orrs r0, r3
- strb r0, [r2]
- b _0817E0A6
- .pool
-_0817DF24:
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 2
- adds r1, r7, r0
- adds r0, r1, 0
- adds r0, 0x51
- ldrb r0, [r0]
- lsls r0, 28
- lsrs r0, 29
- cmp r0, 0
- bne _0817DF3C
- b _0817E0A6
-_0817DF3C:
- subs r2, r0, 0x1
- lsls r2, 24
- lsrs r2, 24
- adds r0, r1, 0
- adds r0, 0x54
- ldrb r3, [r0]
- lsrs r3, 6
- movs r0, 0xF
- b _0817E086
-_0817DF4E:
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 2
- adds r1, r7, r1
- adds r4, r1, 0
- adds r4, 0x51
- ldrb r2, [r4]
- movs r0, 0xF
- negs r0, r0
- ands r0, r2
- strb r0, [r4]
- adds r1, 0x54
- ldrb r2, [r1]
- movs r0, 0x3F
-_0817DF6A:
- ands r0, r2
- strb r0, [r1]
- b _0817E0A6
-_0817DF70:
- lsls r2, r4, 1
- adds r2, r4
- lsls r2, 2
- adds r2, r7, r2
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- adds r1, 0x1
- adds r4, r2, 0
- adds r4, 0x51
- movs r0, 0x7
- ands r1, r0
- lsls r1, 4
- ldrb r3, [r4]
- movs r0, 0x71
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r4]
- adds r2, 0x55
-_0817DF9E:
- movs r0, 0x3
- mov r1, r10
- ands r1, r0
- ldrb r3, [r2]
- movs r0, 0x4
- negs r0, r0
-_0817DFAA:
- ands r0, r3
-_0817DFAC:
- orrs r0, r1
- strb r0, [r2]
- b _0817E0A6
- .pool
-_0817DFBC:
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 2
- adds r1, r7, r0
- adds r0, r1, 0
- adds r0, 0x51
- ldrb r0, [r0]
- lsls r0, 25
- lsrs r0, 29
- cmp r0, 0
- beq _0817E0A6
- subs r2, r0, 0x1
- lsls r2, 24
- lsrs r2, 24
- adds r0, r1, 0
- adds r0, 0x55
- ldrb r3, [r0]
- lsls r3, 30
- lsrs r3, 30
- movs r0, 0x10
- b _0817E086
-_0817DFE6:
- lsls r1, r6, 1
- adds r1, r6
- lsls r1, 2
- adds r1, r7, r1
- adds r3, r1, 0
- adds r3, 0x50
- ldrb r2, [r3]
- movs r0, 0x39
- negs r0, r0
- ands r0, r2
- strb r0, [r3]
- adds r1, 0x54
- ldrb r2, [r1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldrh r2, [r3]
- ldr r0, =0xfffffe3f
- ands r0, r2
- strh r0, [r3]
- ldrb r2, [r1]
- movs r0, 0x31
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrb r2, [r0]
- movs r0, 0x11
- movs r1, 0
- mov r3, r10
- bl sub_817E684
- b _0817E0A6
- .pool
-_0817E040:
- lsls r0, r4, 4
- adds r4, r7, r0
- adds r0, r4, 0
- adds r0, 0x35
- ldrb r0, [r0]
- lsrs r0, 5
- cmp r0, 0
- beq _0817E068
- subs r2, r0, 0x1
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r0, 0x36
- ldrb r3, [r0]
- lsls r3, 30
- lsrs r3, 30
- movs r0, 0x15
- movs r1, 0
- bl sub_817E684
-_0817E068:
- adds r0, r4, 0
- adds r0, 0x3D
- ldrb r0, [r0]
- lsrs r0, 5
- cmp r0, 0
- beq _0817E0A6
- subs r2, r0, 0x1
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r0, 0x3E
- ldrb r3, [r0]
- lsls r3, 30
- lsrs r3, 30
- movs r0, 0x15
-_0817E086:
- movs r1, 0
- bl sub_817E684
- b _0817E0A6
-_0817E08E:
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 2
- adds r0, r7, r0
- adds r0, 0x57
- ldrb r2, [r0]
- movs r1, 0x1F
- negs r1, r1
- ands r1, r2
- movs r2, 0x1C
-_0817E0A2:
- orrs r1, r2
-_0817E0A4:
- strb r1, [r0]
-_0817E0A6:
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_817C95C
-
- thumb_func_start sub_817E0B8
-sub_817E0B8: @ 817E0B8
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- movs r3, 0
- ldr r4, =gUnknown_0860A8A4
- ldr r6, =0x0000ffff
- adds r2, r4, 0
- adds r1, r4, 0
-_0817E0C8:
- ldrh r0, [r1]
- cmp r0, r5
- beq _0817E0DA
- adds r2, 0x2
- adds r1, 0x2
- adds r3, 0x1
- ldrh r0, [r2]
- cmp r0, r6
- bne _0817E0C8
-_0817E0DA:
- lsls r0, r3, 1
- adds r0, r4
- ldrh r1, [r0]
- ldr r0, =0x0000ffff
- cmp r1, r0
- beq _0817E0F4
- movs r0, 0
- b _0817E0F6
- .pool
-_0817E0F4:
- movs r0, 0x1
-_0817E0F6:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_817E0B8
-
- thumb_func_start sub_817E0FC
-sub_817E0FC: @ 817E0FC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- str r2, [sp, 0x4]
- lsls r0, 16
- lsrs r7, r0, 16
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0817E122
- b _0817E310
-_0817E122:
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- movs r1, 0x81
- lsls r1, 2
- adds r1, r0, r1
- str r1, [sp, 0x8]
- ldr r2, =gBattlerAttacker
- mov r10, r2
- ldrb r0, [r2]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, =gBattlerTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r4, r0, 24
- mov r1, r10
- ldrb r0, [r1]
- adds r1, r7, 0
- bl GetBattlerMoveSlotId
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x3
- bls _0817E184
- mov r2, r9
- lsls r0, r2, 1
- add r0, r9
- lsls r0, 2
- ldr r1, [sp, 0x8]
- adds r0, r1, r0
- adds r0, 0x57
- ldrb r1, [r0]
- movs r2, 0x1E
- orrs r1, r2
- strb r1, [r0]
- b _0817E310
- .pool
-_0817E184:
- mov r2, r10
- ldrb r0, [r2]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 25
- lsls r0, 3
- lsls r4, 4
- adds r0, r4
- ldr r1, [sp, 0x8]
- adds r0, r1, r0
- mov r2, r10
- ldrb r1, [r2]
- lsls r1, 1
- ldr r2, =gBattlerPartyIndexes
- adds r1, r2
- ldrh r2, [r1]
- adds r2, 0x1
- adds r0, 0x35
- lsls r2, 5
- ldrb r3, [r0]
- movs r1, 0x1F
- ands r1, r3
- orrs r1, r2
- strb r1, [r0]
- mov r1, r10
- ldrb r0, [r1]
- bl GetBattlerPosition
- lsls r0, 24
- lsrs r0, 25
- lsls r0, 3
- adds r0, r4
- ldr r2, [sp, 0x8]
- adds r0, r2, r0
- adds r0, 0x36
- movs r1, 0x3
- mov r8, r6
- mov r2, r8
- ands r2, r1
- mov r8, r2
- ldrb r2, [r0]
- movs r1, 0x4
- negs r1, r1
- ands r1, r2
- mov r2, r8
- orrs r1, r2
- strb r1, [r0]
- mov r1, r9
- lsls r0, r1, 1
- add r0, r9
- lsls r0, 2
- ldr r2, [sp, 0x8]
- adds r0, r2, r0
- str r0, [sp, 0xC]
- adds r5, r0, 0
- adds r5, 0x53
- lsls r2, r6, 6
- ldrb r1, [r5]
- movs r0, 0x3F
- ands r0, r1
- orrs r0, r2
- strb r0, [r5]
- ldr r1, =gBattleMoves
- lsls r4, r7, 1
- adds r0, r4, r7
- lsls r0, 2
- adds r0, r1
- ldrb r2, [r0]
- movs r0, 0
- adds r1, r6, 0
- movs r3, 0
- bl sub_817E684
- ldr r0, [sp]
- adds r1, r7, 0
- adds r2, r6, 0
- bl sub_817F394
- ldr r0, [sp, 0x4]
- ldrb r1, [r0, 0x12]
- movs r0, 0xF
- ands r0, r1
- str r4, [sp, 0x10]
- cmp r0, 0
- beq _0817E23C
- movs r0, 0x7
- adds r1, r7, 0
- adds r2, r6, 0
- movs r3, 0
- bl sub_817E684
-_0817E23C:
- ldr r0, =0x00000111
- cmp r7, r0
- bne _0817E272
- mov r1, r10
- ldrb r0, [r1]
- lsls r0, 1
- ldr r2, =gBattlerPartyIndexes
- adds r0, r2
- ldrh r1, [r0]
- adds r1, 0x1
- movs r0, 0x7
- ands r1, r0
- ldrb r2, [r5]
- movs r0, 0x8
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5]
- ldr r2, [sp, 0xC]
- adds r2, 0x56
- ldrb r1, [r2]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- mov r1, r8
- orrs r0, r1
- strb r0, [r2]
-_0817E272:
- cmp r7, 0x78
- beq _0817E27A
- cmp r7, 0x99
- bne _0817E2D2
-_0817E27A:
- movs r0, 0x1
- mov r2, r9
- eors r0, r2
- lsls r2, r0, 1
- adds r2, r0
- lsls r2, 2
- ldr r0, [sp, 0x8]
- adds r2, r0, r2
- mov r1, r10
- ldrb r0, [r1]
- lsls r0, 1
- ldr r1, =gBattlerPartyIndexes
- adds r0, r1
- ldrh r1, [r0]
- adds r1, 0x1
- adds r4, r2, 0
- adds r4, 0x58
- movs r0, 0x7
- ands r1, r0
- lsls r1, 3
- ldrb r3, [r4]
- movs r0, 0x39
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- mov r1, r8
- lsls r3, r1, 1
- movs r1, 0x7
- negs r1, r1
- ands r0, r1
- orrs r0, r3
- strb r0, [r4]
- adds r2, 0x57
- ldrb r1, [r2]
- movs r0, 0x1F
- negs r0, r0
- ands r0, r1
- movs r1, 0x1A
- orrs r0, r1
- strb r0, [r2]
- ldrb r0, [r4]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r4]
-_0817E2D2:
- ldr r1, =gBattleMoves
- ldr r2, [sp, 0x10]
- adds r0, r2, r7
- lsls r0, 2
- adds r0, r1
- ldrb r4, [r0, 0x2]
- ldrb r5, [r0, 0x1]
- movs r0, 0xD
- adds r1, r4, 0
- adds r2, r5, 0
- movs r3, 0
- bl sub_817E684
- movs r0, 0xE
- adds r1, r4, 0
- adds r2, r5, 0
- movs r3, 0
- bl sub_817E684
- movs r0, 0xB
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0
- bl sub_817E684
- movs r0, 0xC
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0
- bl sub_817E684
-_0817E310:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817E0FC
-
- thumb_func_start sub_817E32C
-sub_817E32C: @ 817E32C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0817E3EE
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- movs r1, 0x81
- lsls r1, 2
- adds r4, r0, r1
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r5, 0x12
- beq _0817E36C
- cmp r5, 0x13
- beq _0817E3AA
- b _0817E3EE
- .pool
-_0817E36C:
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r4, r0
- ldr r0, [r4, 0x50]
- lsls r0, 14
- lsrs r0, 29
- cmp r0, 0
- beq _0817E3EE
- subs r0, 0x1
- lsls r0, 2
- adds r1, r4, 0
- adds r1, 0x55
- ldrb r3, [r1]
- lsls r3, 28
- lsrs r3, 30
- adds r3, r0
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x2
- movs r1, 0
- bl sub_817E684
- adds r2, r4, 0
- adds r2, 0x57
- ldrb r1, [r2]
- movs r0, 0x1F
- negs r0, r0
- ands r0, r1
- movs r1, 0x10
- b _0817E3EA
-_0817E3AA:
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r4, r0
- adds r0, r4, 0
- adds r0, 0x52
- ldrb r0, [r0]
- lsls r0, 27
- lsrs r0, 29
- cmp r0, 0
- beq _0817E3EE
- subs r0, 0x1
- lsls r0, 2
- adds r1, r4, 0
- adds r1, 0x55
- ldrb r3, [r1]
- lsls r3, 26
- lsrs r3, 30
- adds r3, r0
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x2
- movs r1, 0x1
- bl sub_817E684
- adds r2, r4, 0
- adds r2, 0x57
- ldrb r1, [r2]
- movs r0, 0x1F
- negs r0, r0
- ands r0, r1
- movs r1, 0x12
-_0817E3EA:
- orrs r0, r1
- strb r0, [r2]
-_0817E3EE:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_817E32C
-
- thumb_func_start sub_817E3F4
-sub_817E3F4: @ 817E3F4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- movs r0, 0
- str r0, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- movs r2, 0
- str r2, [sp, 0x8]
- ldr r3, =0x00007fff
- str r3, [sp, 0xC]
- movs r4, 0
- str r4, [sp, 0x10]
- movs r7, 0
- str r7, [sp, 0x14]
- mov r8, r0
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0xB3
- ldrb r0, [r0]
- cmp r0, 0
- beq _0817E42A
- b _0817E670
-_0817E42A:
- movs r2, 0xD2
- lsls r2, 1
- adds r2, r1
- mov r10, r2
- movs r6, 0
-_0817E434:
- movs r0, 0x64
- adds r4, r6, 0
- muls r4, r0
- ldr r0, =gPlayerParty
- adds r0, r4, r0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- cmp r0, 0
- beq _0817E454
- mov r0, r8
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
-_0817E454:
- ldr r5, =gEnemyParty
- adds r0, r4, r5
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- cmp r0, 0
- beq _0817E46A
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
-_0817E46A:
- adds r6, 0x1
- cmp r6, 0x5
- ble _0817E434
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0817E47E
- b _0817E670
-_0817E47E:
- cmp r8, r7
- beq _0817E484
- b _0817E670
-_0817E484:
- movs r6, 0
- lsls r3, r6, 1
- str r3, [sp, 0x18]
- movs r4, 0x64
- mov r8, r4
-_0817E48E:
- mov r1, r8
- muls r1, r6
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- lsls r0, 16
- lsrs r7, r0, 16
- adds r0, r6, 0x1
- mov r9, r0
- cmp r7, 0
- beq _0817E4EE
- adds r0, r4, 0
- movs r1, 0x2D
- movs r2, 0
- bl GetMonData
- cmp r0, 0
- bne _0817E4EE
- movs r4, 0
- lsls r0, r6, 3
- mov r2, r10
- adds r1, r0, r2
- movs r3, 0x3
-_0817E4C4:
- lsls r0, r4, 16
- asrs r0, 16
- ldrh r4, [r1]
- adds r0, r4
- lsls r0, 16
- lsrs r4, r0, 16
- adds r1, 0x2
- subs r3, 0x1
- cmp r3, 0
- bge _0817E4C4
- ldr r1, [sp, 0x8]
- lsls r0, r1, 16
- lsls r1, r4, 16
- cmp r0, r1
- bge _0817E4EE
- lsls r0, r6, 24
- lsrs r0, 24
- str r0, [sp, 0x10]
- lsrs r1, 16
- str r1, [sp, 0x8]
- str r7, [sp]
-_0817E4EE:
- mov r0, r8
- muls r0, r6
- ldr r2, =gEnemyParty
- adds r4, r0, r2
- adds r0, r4, 0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- lsls r0, 16
- lsrs r7, r0, 16
- ldr r3, [sp, 0x8]
- lsls r3, 16
- str r3, [sp, 0x1C]
- cmp r7, 0
- beq _0817E5A0
- adds r0, r4, 0
- movs r1, 0x2D
- movs r2, 0
- bl GetMonData
- cmp r0, 0
- bne _0817E5A0
- movs r4, 0
- ldr r0, [sp, 0xC]
- lsls r2, r0, 16
- movs r3, 0x1
- lsls r1, r3, 1
- adds r1, 0x1
- lsls r1, 4
- lsls r0, r6, 3
- adds r0, r1
- mov r3, r10
- adds r1, r0, r3
- movs r3, 0x3
-_0817E534:
- lsls r0, r4, 16
- asrs r0, 16
- ldrh r4, [r1]
- adds r0, r4
- lsls r0, 16
- lsrs r4, r0, 16
- adds r1, 0x2
- subs r3, 0x1
- cmp r3, 0
- bge _0817E534
- asrs r1, r2, 16
- lsls r5, r4, 16
- asrs r0, r5, 16
- cmp r1, r0
- bne _0817E590
- mov r0, r8
- muls r0, r6
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0x19
- movs r2, 0
- bl GetMonData
- adds r4, r0, 0
- ldr r2, [sp, 0x14]
- mov r0, r8
- muls r0, r2
- ldr r3, =gEnemyParty
- adds r0, r3
- movs r1, 0x19
- movs r2, 0
- bl GetMonData
- cmp r4, r0
- bls _0817E5A0
- b _0817E594
- .pool
-_0817E590:
- cmp r1, r0
- ble _0817E5A0
-_0817E594:
- lsls r0, r6, 24
- lsrs r0, 24
- str r0, [sp, 0x14]
- lsrs r5, 16
- str r5, [sp, 0xC]
- str r7, [sp, 0x4]
-_0817E5A0:
- mov r6, r9
- cmp r6, 0x5
- bgt _0817E5A8
- b _0817E48E
-_0817E5A8:
- movs r4, 0
- movs r6, 0
- movs r3, 0
- ldr r5, =gPlayerParty
- ldr r7, [sp, 0x10]
- lsls r0, r7, 3
- mov r1, r10
- adds r2, r0, r1
-_0817E5B8:
- lsls r0, r4, 16
- asrs r0, 16
- movs r7, 0
- ldrsh r1, [r2, r7]
- cmp r0, r1
- bge _0817E5C8
- ldrh r4, [r2]
- adds r6, r3, 0
-_0817E5C8:
- adds r2, 0x2
- adds r3, 0x1
- cmp r3, 0x3
- ble _0817E5B8
- movs r0, 0x64
- ldr r1, [sp, 0x10]
- muls r0, r1
- adds r0, r5
- adds r1, r6, 0
- adds r1, 0xD
- movs r2, 0
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r2, [sp, 0x1C]
- cmp r2, 0
- beq _0817E670
- cmp r4, 0
- beq _0817E670
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0817E65C
- ldr r3, [sp, 0x10]
- cmp r3, 0x2
- bhi _0817E620
- ldr r0, =gBattleScripting
- adds r0, 0x25
- ldrb r0, [r0]
- bl sub_806D82C
- lsls r0, 16
- cmp r0, 0
- beq _0817E630
- b _0817E670
- .pool
-_0817E620:
- ldr r0, =gBattleScripting
- adds r0, 0x25
- ldrb r0, [r0]
- bl sub_806D82C
- lsls r0, 16
- cmp r0, 0
- beq _0817E670
-_0817E630:
- movs r3, 0
- ldr r7, [sp, 0x14]
- cmp r7, 0x2
- bls _0817E63A
- movs r3, 0x1
-_0817E63A:
- lsls r0, r3, 24
- lsrs r0, 24
- ldr r1, =gBattleScripting
- adds r1, 0x25
- ldrb r1, [r1]
- bl sub_806EF84
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- ldr r2, [sp]
- ldr r3, [sp, 0x4]
- bl PutBattleUpdateOnTheAir
- b _0817E670
- .pool
-_0817E65C:
- ldr r0, =gBattleScripting
- adds r0, 0x25
- ldrb r1, [r0]
- movs r0, 0x1
- eors r0, r1
- adds r1, r4, 0
- ldr r2, [sp]
- ldr r3, [sp, 0x4]
- bl PutBattleUpdateOnTheAir
-_0817E670:
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817E3F4
-
- thumb_func_start sub_817E684
-sub_817E684: @ 817E684
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r1, 16
- lsrs r6, r1, 16
- lsls r2, 24
- lsrs r5, r2, 24
- lsls r3, 24
- lsrs r3, 24
- mov r9, r3
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- movs r1, 0xD2
- lsls r1, 1
- adds r1, r0
- mov r8, r1
- movs r2, 0x81
- lsls r2, 2
- adds r7, r0, r2
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gBattlerTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r3, r0, 24
- mov r0, r10
- cmp r0, 0x1B
- bls _0817E6D4
- b _0817EA6C
-_0817E6D4:
- lsls r0, 2
- ldr r1, =_0817E6F0
- adds r1, r0, r1
- ldr r1, [r1]
- mov r12, r0
- mov pc, r1
- .pool
- .align 2, 0
-_0817E6F0:
- .4byte _0817E760
- .4byte _0817E760
- .4byte _0817E85C
- .4byte _0817E79C
- .4byte _0817E79C
- .4byte _0817E79C
- .4byte _0817E79C
- .4byte _0817E79C
- .4byte _0817E8A0
- .4byte _0817E8A0
- .4byte _0817E8CC
- .4byte _0817E8F0
- .4byte _0817E978
- .4byte _0817E9E0
- .4byte _0817EA28
- .4byte _0817E8A0
- .4byte _0817E8A0
- .4byte _0817E880
- .4byte _0817E760
- .4byte _0817E80A
- .4byte _0817E848
- .4byte _0817E8A0
- .4byte _0817E760
- .4byte _0817E760
- .4byte _0817E760
- .4byte _0817E760
- .4byte _0817E760
- .4byte _0817E760
-_0817E760:
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- lsls r1, 2
- adds r1, r6
- lsls r1, 1
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 4
- adds r1, r0
- add r1, r8
- ldr r0, =gUnknown_0860A834
- add r0, r12
- ldr r2, [r0]
- lsls r0, r5, 1
- adds r0, r2
- ldrh r0, [r0]
- ldrh r2, [r1]
- adds r0, r2
- b _0817EA6A
- .pool
-_0817E79C:
- ldr r1, =gUnknown_0860A834
- add r1, r12
- ldr r7, =gBattlerPartyIndexes
- lsls r0, r4, 1
- adds r0, r4
- lsls r2, r0, 4
- ldr r4, =0x0000ffff
- ldr r1, [r1]
- ldr r3, =gBattlerAttacker
- ldrh r0, [r1]
- cmp r6, r0
- bne _0817E7E0
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r5
- lsls r0, 1
- adds r0, r2
- add r0, r8
- ldrh r1, [r1, 0x2]
- ldrh r2, [r0]
- adds r1, r2
- strh r1, [r0]
- b _0817EA6C
- .pool
-_0817E7E0:
- adds r1, 0x4
- ldrh r0, [r1]
- cmp r0, r4
- bne _0817E7EA
- b _0817EA6C
-_0817E7EA:
- cmp r6, r0
- bne _0817E7E0
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r5
- lsls r0, 1
- adds r0, r2
- add r0, r8
- ldrh r1, [r1, 0x2]
- ldrh r5, [r0]
- adds r1, r5
- strh r1, [r0]
- b _0817EA6C
-_0817E80A:
- movs r0, 0x1
- adds r1, r5, 0
- eors r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r7, r0
- adds r0, 0x57
- ldrb r2, [r0]
- movs r1, 0x1F
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- mov r0, r9
- lsls r1, r0, 1
- lsls r0, r5, 1
- adds r0, r5
- lsls r0, 4
- adds r1, r0
- add r1, r8
- ldr r0, =gUnknown_0860A834
- add r0, r12
- ldr r2, [r0]
- lsls r0, r6, 1
- adds r0, r2
- ldrh r0, [r0]
- ldrh r2, [r1]
- adds r0, r2
- b _0817EA6A
- .pool
-_0817E848:
- lsls r0, r5, 1
- adds r0, r5
- lsls r0, 2
- adds r0, r7, r0
- adds r0, 0x57
- ldrb r2, [r0]
- movs r1, 0x1F
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
-_0817E85C:
- mov r0, r9
- lsls r1, r0, 1
- lsls r0, r5, 1
- adds r0, r5
- lsls r0, 4
- adds r1, r0
- add r1, r8
- ldr r0, =gUnknown_0860A834
- add r0, r12
- ldr r2, [r0]
- lsls r0, r6, 1
- adds r0, r2
- ldrh r0, [r0]
- ldrh r2, [r1]
- adds r0, r2
- b _0817EA6A
- .pool
-_0817E880:
- lsls r1, r5, 2
- add r1, r9
- lsls r1, 1
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 4
- adds r1, r0
- add r1, r8
- ldr r0, =gUnknown_0860A834
- add r0, r12
- ldr r2, [r0]
- lsls r0, r6, 1
- adds r0, r2
- b _0817EA64
- .pool
-_0817E8A0:
- lsls r2, r5, 2
- add r2, r9
- lsls r2, 1
- movs r1, 0x1
- eors r1, r4
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 4
- adds r2, r0
- add r2, r8
- ldr r0, =gUnknown_0860A834
- add r0, r12
- ldr r1, [r0]
- lsls r0, r6, 1
- adds r0, r1
- ldrh r0, [r0]
- ldrh r1, [r2]
- adds r0, r1
- strh r0, [r2]
- b _0817EA6C
- .pool
-_0817E8CC:
- lsls r1, r5, 2
- add r1, r9
- lsls r1, 1
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 4
- adds r1, r0
- add r1, r8
- ldr r0, =gUnknown_0860A834
- add r0, r12
- ldr r0, [r0]
- ldrh r0, [r0]
- ldrh r2, [r1]
- adds r0, r2
- b _0817EA6A
- .pool
-_0817E8F0:
- lsls r0, r3, 4
- adds r2, r7, r0
- adds r0, r2, 0
- adds r0, 0x34
- ldrb r0, [r0]
- lsls r0, 29
- lsrs r1, r0, 29
- adds r4, r2, 0
- adds r4, 0x3C
- ldrb r0, [r4]
- lsls r0, 29
- lsrs r0, 29
- cmn r1, r0
- bne _0817E90E
- b _0817EA6C
-_0817E90E:
- cmp r6, 0xA
- beq _0817E914
- b _0817EA6C
-_0817E914:
- cmp r1, 0
- beq _0817E940
- subs r1, 0x1
- lsls r1, 2
- adds r0, r2, 0
- adds r0, 0x33
- ldrb r0, [r0]
- lsrs r0, 6
- adds r1, r0
- lsls r1, 1
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 4
- adds r1, r0
- add r1, r8
- ldr r0, =gUnknown_0860A834
- add r0, r12
- ldr r0, [r0]
- ldrh r0, [r0]
- ldrh r5, [r1]
- adds r0, r5
- strh r0, [r1]
-_0817E940:
- ldrb r0, [r4]
- lsls r0, 29
- lsrs r0, 29
- cmp r0, 0
- bne _0817E94C
- b _0817EA6C
-_0817E94C:
- subs r1, r0, 0x1
- lsls r1, 2
- adds r0, r2, 0
- adds r0, 0x3B
- ldrb r0, [r0]
- lsrs r0, 6
- adds r1, r0
- lsls r1, 1
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 4
- adds r1, r0
- add r1, r8
- ldr r0, =gUnknown_0860A834
- add r0, r12
- ldr r0, [r0]
- ldrh r0, [r0]
- ldrh r2, [r1]
- adds r0, r2
- b _0817EA6A
- .pool
-_0817E978:
- lsls r1, r3, 4
- adds r1, r7, r1
- adds r0, r1, 0
- adds r0, 0x34
- ldrb r4, [r0]
- lsls r0, r4, 26
- lsrs r2, r0, 29
- adds r5, r1, 0
- adds r5, 0x3C
- ldrb r0, [r5]
- lsls r0, 26
- lsrs r0, 29
- cmn r2, r0
- beq _0817EA6C
- cmp r6, 0xD
- bne _0817EA6C
- cmp r2, 0
- beq _0817E9BE
- subs r1, r2, 0x1
- lsls r1, 2
- lsrs r0, r4, 6
- adds r1, r0
- lsls r1, 1
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 4
- adds r1, r0
- add r1, r8
- ldr r0, =gUnknown_0860A834
- add r0, r12
- ldr r0, [r0]
- ldrh r0, [r0]
- ldrh r2, [r1]
- adds r0, r2
- strh r0, [r1]
-_0817E9BE:
- ldrb r2, [r5]
- lsls r0, r2, 26
- lsrs r0, 29
- cmp r0, 0
- beq _0817EA6C
- subs r1, r0, 0x1
- lsls r1, 2
- lsrs r0, r2, 6
- adds r1, r0
- lsls r1, 1
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 4
- b _0817EA5A
- .pool
-_0817E9E0:
- cmp r6, 0x8
- bhi _0817EA6C
- cmp r5, 0
- beq _0817EA6C
- lsls r0, r3, 1
- adds r3, r0, r3
- lsls r0, r3, 2
- adds r2, r7, r0
- adds r0, r2, 0
- adds r0, 0x50
- ldrb r0, [r0]
- lsls r0, 26
- lsrs r0, 29
- cmp r0, 0
- beq _0817EA6C
- subs r1, r0, 0x1
- lsls r1, 2
- adds r0, r2, 0
- adds r0, 0x54
- ldrb r0, [r0]
- lsls r0, 28
- lsrs r0, 30
- adds r1, r0
- lsls r1, 1
- lsls r0, r3, 4
- adds r1, r0
- add r1, r8
- ldr r0, =gUnknown_0860A834
- add r0, r12
- ldr r0, [r0]
- ldrh r0, [r0]
- ldrh r2, [r1]
- adds r0, r2
- b _0817EA6A
- .pool
-_0817EA28:
- cmp r6, 0x8
- bls _0817EA6C
- cmp r5, 0
- beq _0817EA6C
- lsls r0, r3, 1
- adds r3, r0, r3
- lsls r0, r3, 2
- adds r2, r7, r0
- adds r0, r2, 0
- adds r0, 0x50
- ldrh r0, [r0]
- lsls r0, 23
- lsrs r0, 29
- cmp r0, 0
- beq _0817EA6C
- subs r1, r0, 0x1
- lsls r1, 2
- adds r0, r2, 0
- adds r0, 0x54
- ldrb r0, [r0]
- lsls r0, 26
- lsrs r0, 30
- adds r1, r0
- lsls r1, 1
- lsls r0, r3, 4
-_0817EA5A:
- adds r1, r0
- add r1, r8
- ldr r0, =gUnknown_0860A834
- add r0, r12
- ldr r0, [r0]
-_0817EA64:
- ldrh r0, [r0]
- ldrh r5, [r1]
- adds r0, r5
-_0817EA6A:
- strh r0, [r1]
-_0817EA6C:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817E684
-
- thumb_func_start sub_817EA80
-sub_817EA80: @ 817EA80
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- movs r1, 0x81
- lsls r1, 2
- adds r5, r0, r1
- ldr r3, =gBattlerAttacker
- mov r8, r3
- ldrb r0, [r3]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gBattlerTarget
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 2
- adds r6, r5, r0
- adds r0, r6, 0
- adds r0, 0x57
- ldrb r0, [r0]
- lsrs r3, r0, 5
- lsls r0, 27
- lsrs r0, 28
- cmp r0, 0
- bne _0817EAC8
- b _0817EE50
-_0817EAC8:
- subs r0, 0x1
- cmp r0, 0xE
- bls _0817EAD0
- b _0817EEBC
-_0817EAD0:
- lsls r0, 2
- ldr r1, =_0817EAEC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0817EAEC:
- .4byte _0817EB28
- .4byte _0817EB54
- .4byte _0817EB80
- .4byte _0817EBD4
- .4byte _0817EBFE
- .4byte _0817EC26
- .4byte _0817EC4E
- .4byte _0817EC6C
- .4byte _0817EC9A
- .4byte _0817ECCC
- .4byte _0817ED54
- .4byte _0817ED82
- .4byte _0817EDC2
- .4byte _0817EE1C
- .4byte _0817EEBC
-_0817EB28:
- lsls r0, r3, 3
- lsls r1, r4, 4
- adds r0, r1
- adds r3, r5, r0
- adds r0, r3, 0
- adds r0, 0x30
- ldrb r0, [r0]
- lsls r0, 29
- lsrs r1, r0, 29
- cmp r1, 0
- bne _0817EB40
- b _0817EEBC
-_0817EB40:
- movs r0, 0x1
- adds r2, r4, 0
- eors r2, r0
- subs r1, 0x1
- lsls r1, 2
- adds r0, r3, 0
- adds r0, 0x32
- ldrb r3, [r0]
- lsls r3, 28
- b _0817EE84
-_0817EB54:
- lsls r0, r3, 3
- lsls r1, r4, 4
- adds r0, r1
- adds r3, r5, r0
- adds r0, r3, 0
- adds r0, 0x30
- ldrb r0, [r0]
- lsls r0, 26
- lsrs r1, r0, 29
- cmp r1, 0
- bne _0817EB6C
- b _0817EEBC
-_0817EB6C:
- movs r0, 0x1
- adds r2, r4, 0
- eors r2, r0
- subs r1, 0x1
- lsls r1, 2
- adds r0, r3, 0
- adds r0, 0x32
- ldrb r3, [r0]
- lsls r3, 26
- b _0817EE84
-_0817EB80:
- lsls r0, r3, 2
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 3
- adds r0, r1
- adds r5, r0
- ldrb r0, [r5]
- lsls r0, 29
- lsrs r1, r0, 29
- cmp r1, 0
- beq _0817EBB4
- movs r0, 0x1
- adds r2, r4, 0
- eors r2, r0
- subs r0, r1, 0x1
- lsls r0, 2
- ldrb r3, [r5, 0x2]
- lsls r3, 28
- lsrs r3, 30
- adds r3, r0
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x13
- movs r1, 0
- bl sub_817E684
-_0817EBB4:
- ldrb r0, [r5]
- lsls r0, 26
- lsrs r1, r0, 29
- cmp r1, 0
- bne _0817EBC0
- b _0817EEBC
-_0817EBC0:
- movs r0, 0x1
- adds r2, r4, 0
- eors r2, r0
- subs r0, r1, 0x1
- lsls r0, 2
- ldrb r3, [r5, 0x2]
- lsls r3, 26
- lsrs r3, 30
- adds r3, r0
- b _0817EE88
-_0817EBD4:
- lsls r0, r3, 2
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 3
- adds r0, r1
- adds r1, r5, r0
- ldrh r0, [r1]
- lsls r0, 23
- lsrs r3, r0, 29
- cmp r3, 0
- bne _0817EBEC
- b _0817EEBC
-_0817EBEC:
- movs r0, 0x1
- adds r2, r4, 0
- eors r2, r0
- subs r0, r3, 0x1
- lsls r0, 2
- ldrb r3, [r1, 0x2]
- lsrs r3, 6
- adds r3, r0
- b _0817EE88
-_0817EBFE:
- lsls r0, r3, 3
- lsls r1, r4, 4
- adds r0, r1
- adds r3, r5, r0
- ldrh r0, [r3, 0x30]
- lsls r0, 23
- lsrs r1, r0, 29
- cmp r1, 0
- bne _0817EC12
- b _0817EEBC
-_0817EC12:
- movs r0, 0x1
- adds r2, r4, 0
- eors r2, r0
- subs r1, 0x1
- lsls r1, 2
- adds r0, r3, 0
- adds r0, 0x32
- ldrb r3, [r0]
- lsrs r3, 6
- b _0817EE86
-_0817EC26:
- lsls r0, r3, 3
- lsls r1, r4, 4
- adds r0, r1
- adds r3, r5, r0
- adds r0, r3, 0
- adds r0, 0x31
- ldrb r0, [r0]
- lsls r0, 28
- lsrs r1, r0, 29
- cmp r1, 0
- bne _0817EC3E
- b _0817EEBC
-_0817EC3E:
- movs r0, 0x1
- adds r2, r4, 0
- eors r2, r0
- subs r1, 0x1
- lsls r1, 2
- adds r0, r3, 0
- adds r0, 0x33
- b _0817EE80
-_0817EC4E:
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 2
- adds r3, r5, r0
- adds r0, r3, 0
- adds r0, 0x50
- ldrb r0, [r0]
- lsls r0, 29
- lsrs r1, r0, 29
- cmp r1, 0
- bne _0817EC66
- b _0817EEBC
-_0817EC66:
- movs r0, 0x1
- adds r2, r4, 0
- b _0817EE76
-_0817EC6C:
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 2
- adds r3, r5, r0
- ldr r0, [r3, 0x50]
- lsls r0, 14
- lsrs r0, 29
- cmp r0, 0
- bne _0817EC80
- b _0817EEBC
-_0817EC80:
- adds r2, r4, 0
- subs r1, r0, 0x1
- lsls r1, 2
- adds r0, r3, 0
- adds r0, 0x55
- ldrb r3, [r0]
- lsls r3, 28
- lsrs r3, 30
- adds r3, r1
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x14
- b _0817EE8E
-_0817EC9A:
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 2
- adds r3, r5, r0
- adds r0, r3, 0
- adds r0, 0x52
- ldrb r0, [r0]
- lsls r0, 27
- lsrs r0, 29
- cmp r0, 0
- bne _0817ECB2
- b _0817EEBC
-_0817ECB2:
- adds r2, r4, 0
- subs r1, r0, 0x1
- lsls r1, 2
- adds r0, r3, 0
- adds r0, 0x55
- ldrb r3, [r0]
- lsls r3, 26
- lsrs r3, 30
- adds r3, r1
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x14
- b _0817EE8E
-_0817ECCC:
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 2
- adds r3, r5, r0
- adds r0, r3, 0
- adds r0, 0x58
- ldrb r0, [r0]
- lsls r0, 25
- cmp r0, 0
- bge _0817ED14
- adds r0, r3, 0
- adds r0, 0x52
- ldrb r0, [r0]
- lsrs r0, 5
- subs r6, r0, 0x1
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r6, r0
- beq _0817ED14
- adds r2, r4, 0
- lsls r1, r6, 2
- adds r0, r3, 0
- adds r0, 0x55
- ldrb r3, [r0]
- lsrs r3, 6
- adds r3, r1
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x13
- movs r1, 0
- bl sub_817E684
-_0817ED14:
- movs r1, 0x1
- eors r1, r4
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r1, r5, r0
- adds r0, r1, 0
- adds r0, 0x58
- ldrb r0, [r0]
- lsls r0, 25
- cmp r0, 0
- blt _0817ED2E
- b _0817EEBC
-_0817ED2E:
- movs r0, 0x1
- adds r2, r4, 0
- eors r2, r0
- adds r0, r1, 0
- adds r0, 0x52
- ldrb r0, [r0]
- lsrs r0, 5
- subs r0, 0x1
- lsls r0, 2
- adds r1, 0x55
- ldrb r3, [r1]
- lsrs r3, 6
- adds r3, r0
- b _0817EE88
- .pool
-_0817ED54:
- movs r0, 0x1
- eors r0, r4
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r5, r1
- adds r1, 0x56
- ldrb r0, [r1]
- lsls r0, 25
- lsrs r5, r0, 29
- cmp r5, 0
- bne _0817ED6E
- b _0817EEBC
-_0817ED6E:
- movs r0, 0x1
- adds r2, r4, 0
- eors r2, r0
- subs r0, r5, 0x1
- lsls r0, 2
- ldrh r3, [r1]
- lsls r3, 23
- lsrs r3, 30
- adds r3, r0
- b _0817EE88
-_0817ED82:
- lsls r2, r4, 4
- movs r1, 0x1
- adds r0, r4, 0
- eors r0, r1
- lsls r6, r0, 24
- adds r0, r5, 0
- adds r0, 0x30
- adds r4, r2, r0
- movs r5, 0x1
-_0817ED94:
- ldr r0, [r4]
- lsls r0, 14
- lsrs r0, 29
- cmp r0, 0
- beq _0817EDB8
- subs r0, 0x1
- lsls r0, 2
- ldrb r3, [r4, 0x3]
- lsls r3, 26
- lsrs r3, 30
- adds r3, r0
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x13
- movs r1, 0
- lsrs r2, r6, 24
- bl sub_817E684
-_0817EDB8:
- adds r4, 0x8
- subs r5, 0x1
- cmp r5, 0
- bge _0817ED94
- b _0817EEBC
-_0817EDC2:
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 2
- adds r0, r5, r0
- adds r0, 0x58
- ldrb r3, [r0]
- lsls r0, r3, 31
- cmp r0, 0
- beq _0817EDF0
- adds r2, r4, 0
- lsls r0, r3, 26
- lsrs r0, 29
- subs r0, 0x1
- lsls r0, 2
- lsls r3, 29
- lsrs r3, 30
- adds r3, r0
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x13
- movs r1, 0
- bl sub_817E684
-_0817EDF0:
- movs r0, 0x1
- eors r0, r4
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r5, r1
- adds r1, 0x58
- ldrb r1, [r1]
- lsls r0, r1, 31
- cmp r0, 0
- beq _0817EEBC
- movs r0, 0x1
- adds r2, r4, 0
- eors r2, r0
- lsls r0, r1, 26
- lsrs r0, 29
- subs r0, 0x1
- lsls r0, 2
- lsls r3, r1, 29
- lsrs r3, 30
- adds r3, r0
- b _0817EE88
-_0817EE1C:
- cmp r7, 0x1
- bne _0817EEBC
- adds r2, r4, 0
- ldr r1, =gBattlerPartyIndexes
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- lsls r1, 2
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r5, r0
- adds r0, 0x53
- ldrb r3, [r0]
- lsrs r3, 6
- adds r3, r1
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x14
- b _0817EE8E
- .pool
-_0817EE50:
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r3, r5, r0
- adds r0, r3, 0
- adds r0, 0x57
- ldrb r0, [r0]
- lsls r0, 27
- lsrs r0, 28
- cmp r0, 0x7
- bne _0817EE96
- adds r0, r3, 0
- adds r0, 0x50
- ldrb r0, [r0]
- lsls r0, 29
- lsrs r1, r0, 29
- cmp r1, 0
- beq _0817EEBC
- movs r0, 0x1
-_0817EE76:
- eors r2, r0
- subs r1, 0x1
- lsls r1, 2
- adds r0, r3, 0
- adds r0, 0x54
-_0817EE80:
- ldrb r3, [r0]
- lsls r3, 30
-_0817EE84:
- lsrs r3, 30
-_0817EE86:
- adds r3, r1
-_0817EE88:
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x13
-_0817EE8E:
- movs r1, 0
- bl sub_817E684
- b _0817EEBC
-_0817EE96:
- adds r2, r4, 0
- ldr r1, =gBattlerPartyIndexes
- mov r3, r8
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- lsls r1, 2
- adds r0, r6, 0
- adds r0, 0x53
- ldrb r3, [r0]
- lsrs r3, 6
- adds r3, r1
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x14
- movs r1, 0
- bl sub_817E684
-_0817EEBC:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817EA80
-
- thumb_func_start sub_817EECC
-sub_817EECC: @ 817EECC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- ldr r7, =gBattleTypeFlags
- ldr r0, [r7]
- ldr r1, =0x02000003
- ands r0, r1
- cmp r0, 0
- beq _0817EEE6
- b _0817F1FA
-_0817EEE6:
- ldr r4, =gBattlerAttacker
- ldrb r0, [r4]
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0817EEF8
- b _0817F1FA
-_0817EEF8:
- ldr r5, =gBattleMons
- ldrb r4, [r4]
- movs r1, 0x58
- adds r6, r4, 0
- muls r6, r1
- adds r0, r6, r5
- ldrb r0, [r0, 0x1E]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x5
- bgt _0817EF10
- b _0817F1FA
-_0817EF10:
- ldr r0, =gBattlerTarget
- ldrb r0, [r0]
- muls r0, r1
- adds r0, r5
- ldrb r0, [r0, 0x1F]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x6
- ble _0817EF24
- b _0817F1FA
-_0817EF24:
- ldr r0, =gCurrentMove
- ldrh r1, [r0]
- cmp r1, 0xED
- bne _0817EF2E
- b _0817F1FA
-_0817EF2E:
- ldr r0, =0x00000137
- cmp r1, r0
- bne _0817EF36
- b _0817F1FA
-_0817EF36:
- ldr r0, [r7]
- movs r1, 0xC8
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- beq _0817EF44
- b _0817F1FA
-_0817EF44:
- ldr r3, =gBattleMoves
- ldr r2, =gMoveSelectionCursor
- adds r0, r4, r2
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r6
- adds r1, r5, 0
- adds r1, 0xC
- adds r0, r1
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x1]
- adds r6, r2, 0
- cmp r0, 0
- bne _0817EF6A
- b _0817F1FA
-_0817EF6A:
- movs r5, 0
- str r1, [sp, 0x24]
- ldr r1, =gUnknown_0860A4AC
- ldr r4, =0x0000ffff
- adds r3, r1, 0
- adds r2, r1, 0
-_0817EF76:
- ldr r0, [sp, 0x24]
- ldrh r7, [r2]
- cmp r0, r7
- beq _0817EF8A
- adds r3, 0x2
- adds r2, 0x2
- adds r5, 0x1
- ldrh r0, [r3]
- cmp r0, r4
- bne _0817EF76
-_0817EF8A:
- lsls r0, r5, 1
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, =0x0000ffff
- cmp r1, r0
- beq _0817EF98
- b _0817F1FA
-_0817EF98:
- ldr r2, =gBattlerAttacker
- ldrb r0, [r2]
- adds r0, r6
- ldrb r0, [r0]
- lsls r0, 2
- mov r1, sp
- adds r1, r0
- adds r1, 0x10
- ldr r0, =gBattleMoveDamage
- ldr r0, [r0]
- str r0, [r1]
- ldr r0, =gCurrentMove
- ldrh r1, [r0]
- str r1, [sp, 0x24]
- movs r5, 0
- add r3, sp, 0x20
- mov r10, r3
- mov r8, r0
- add r7, sp, 0x10
- ldr r4, =gBattlerTarget
- mov r9, r4
-_0817EFC2:
- lsls r1, r5, 1
- ldr r6, =gBattlerAttacker
- ldrb r0, [r6]
- movs r2, 0x58
- muls r0, r2
- adds r1, r0
- ldr r0, =gBattleMons
- adds r0, 0xC
- adds r1, r0
- ldrh r0, [r1]
- mov r3, r8
- strh r0, [r3]
- movs r6, 0
- mov r4, r10
- strh r6, [r4]
- ldrh r0, [r3]
- adds r1, r7, 0
- mov r2, r10
- bl sub_817F21C
- lsls r0, 24
- cmp r0, 0
- beq _0817F0B4
- ldr r4, =gSideStatuses
- mov r1, r9
- ldrb r0, [r1]
- bl GetBattlerPosition
- movs r1, 0x1
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- ldrh r3, [r1]
- ldr r2, =gBattlerAttacker
- ldrb r0, [r2]
- movs r4, 0x58
- muls r0, r4
- ldr r6, =gBattleMons
- adds r0, r6
- mov r2, r9
- ldrb r1, [r2]
- muls r1, r4
- adds r1, r6
- mov r4, r8
- ldrh r2, [r4]
- mov r6, r10
- ldrh r4, [r6]
- str r4, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r6, =gBattlerAttacker
- ldrb r4, [r6]
- str r4, [sp, 0x8]
- mov r6, r9
- ldrb r4, [r6]
- str r4, [sp, 0xC]
- bl CalculateBaseDamage
- adds r3, r0, 0
- ldr r4, =gBattleMoveDamage
- str r3, [r4]
- ldr r1, =gStatuses3
- ldr r2, =gBattlerAttacker
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 2
- ands r0, r1
- cmp r0, 0
- beq _0817F06A
- ldr r2, =gBattleMoves
- mov r6, r8
- ldrh r1, [r6]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- cmp r0, 0xD
- bne _0817F06A
- lsls r0, r3, 1
- str r0, [r4]
-_0817F06A:
- ldr r0, =gProtectStructs
- ldr r6, =gBattlerAttacker
- ldrb r1, [r6]
- lsls r1, 4
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 28
- cmp r0, 0
- bge _0817F08C
- ldr r4, =gBattleMoveDamage
- ldr r1, [r4]
- lsls r0, r1, 4
- subs r0, r1
- movs r1, 0xA
- bl __divsi3
- str r0, [r4]
-_0817F08C:
- mov r1, r8
- ldrh r0, [r1]
- ldrb r1, [r6]
- mov r3, r9
- ldrb r2, [r3]
- bl TypeCalc
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, =gBattleMoveDamage
- ldr r0, [r0]
- str r0, [r7]
- cmp r0, 0
- bne _0817F0B4
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0817F0B4
- movs r0, 0x1
- str r0, [r7]
-_0817F0B4:
- adds r7, 0x4
- adds r5, 0x1
- cmp r5, 0x3
- ble _0817EFC2
- movs r5, 0
- ldr r3, =gBattlerAttacker
- ldr r6, =gMoveSelectionCursor
- ldr r4, =gBattlerPartyIndexes
- mov r8, r4
- movs r7, 0x64
- mov r9, r7
- mov r10, r6
-_0817F0CC:
- ldrb r0, [r3]
- adds r0, r6
- ldrb r2, [r0]
- cmp r5, r2
- bne _0817F0D8
- b _0817F1D4
-_0817F0D8:
- lsls r0, r5, 2
- mov r1, sp
- adds r1, r0
- adds r1, 0x10
- lsls r0, r2, 2
- add r0, sp
- adds r0, 0x10
- ldr r1, [r1]
- ldr r0, [r0]
- cmp r1, r0
- ble _0817F1D4
- movs r7, 0x1
- cmp r2, 0
- beq _0817F0F6
- movs r7, 0
-_0817F0F6:
- movs r5, 0
- ldr r4, =gBattlerTarget
- ldr r6, =gEnemyParty
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- add r0, r10
- ldrb r3, [r0]
- add r2, sp, 0x10
-_0817F106:
- cmp r5, r3
- beq _0817F11A
- lsls r0, r7, 2
- add r0, sp
- adds r0, 0x10
- ldr r1, [r2]
- ldr r0, [r0]
- cmp r1, r0
- ble _0817F11A
- adds r7, r5, 0
-_0817F11A:
- adds r2, 0x4
- adds r5, 0x1
- cmp r5, 0x3
- ble _0817F106
- ldrb r0, [r4]
- lsls r0, 1
- add r0, r8
- ldrh r0, [r0]
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- adds r6, r0, 0
- lsls r6, 16
- lsrs r6, 16
- ldr r2, =gBattlerAttacker
- ldrb r0, [r2]
- lsls r0, 1
- add r0, r8
- ldrh r0, [r0]
- mov r3, r9
- muls r3, r0
- adds r0, r3, 0
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r4, =gBattlerAttacker
- ldrb r3, [r4]
- mov r2, r10
- adds r0, r3, r2
- ldrb r2, [r0]
- movs r0, 0x58
- adds r4, r3, 0
- muls r4, r0
- ldr r5, =gBattleMons + 0xC
- adds r3, r4, r5
- lsls r0, r7, 1
- adds r0, r4
- adds r0, r5
- ldrh r0, [r0]
- str r0, [sp]
- adds r0, r6, 0
- bl sub_80EE35C
- b _0817F1DC
- .pool
-_0817F1D4:
- adds r5, 0x1
- cmp r5, 0x3
- bgt _0817F1DC
- b _0817F0CC
-_0817F1DC:
- ldr r2, =gBattleMoveDamage
- ldr r1, =gMoveSelectionCursor
- ldr r0, =gBattlerAttacker
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 2
- add r0, sp
- adds r0, 0x10
- ldr r0, [r0]
- str r0, [r2]
- ldr r0, =gCurrentMove
- mov r3, sp
- ldrh r3, [r3, 0x24]
- strh r3, [r0]
-_0817F1FA:
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817EECC
-
- thumb_func_start sub_817F21C
-sub_817F21C: @ 817F21C
- push {r4-r7,lr}
- adds r6, r1, 0
- mov r12, r2
- lsls r0, 16
- lsrs r2, r0, 16
- ldr r1, =gBattleMoves
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _0817F286
- movs r4, 0
- ldr r5, =gUnknown_0860A4AC
- ldr r7, =0x0000ffff
- adds r3, r5, 0
- adds r1, r5, 0
-_0817F240:
- ldrh r0, [r1]
- cmp r2, r0
- beq _0817F252
- adds r3, 0x2
- adds r1, 0x2
- adds r4, 0x1
- ldrh r0, [r3]
- cmp r0, r7
- bne _0817F240
-_0817F252:
- lsls r0, r4, 1
- adds r0, r5
- ldrh r1, [r0]
- ldr r0, =0x0000ffff
- cmp r1, r0
- beq _0817F270
- movs r0, 0
- str r0, [r6]
- b _0817F2A0
- .pool
-_0817F270:
- cmp r2, 0x95
- bne _0817F294
- ldr r2, =gBattleMons
- ldr r0, =gBattlerAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x2A
- ldrb r0, [r0]
- asrs r0, 1
-_0817F286:
- str r0, [r6]
- movs r0, 0
- b _0817F2A0
- .pool
-_0817F294:
- cmp r2, 0xDE
- bne _0817F29E
- movs r0, 0xA
- mov r1, r12
- strh r0, [r1]
-_0817F29E:
- movs r0, 0x1
-_0817F2A0:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_817F21C
-
- thumb_func_start sub_817F2A8
-sub_817F2A8: @ 817F2A8
- push {r4,r5,lr}
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0817F324
- ldr r0, =gBattleStruct
- ldr r3, [r0]
- ldr r0, =0x0000025b
- adds r4, r3, r0
- ldrb r2, [r4]
- subs r1, 0x21
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r4]
- ldr r0, =0x00000267
- adds r2, r3, r0
- ldrb r0, [r2]
- ands r1, r0
- strb r1, [r2]
- ldrb r5, [r4]
- movs r1, 0x1F
- adds r0, r1, 0
- ands r0, r5
- strb r0, [r4]
- ldrb r0, [r2]
- ands r1, r0
- strb r1, [r2]
- movs r0, 0x97
- lsls r0, 2
- adds r4, r3, r0
- ldrb r2, [r4]
- movs r1, 0x39
- negs r1, r1
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r4]
- movs r0, 0x9A
- lsls r0, 2
- adds r3, r0
- ldrb r0, [r3]
- ands r1, r0
- strb r1, [r3]
- ldrb r2, [r4]
- movs r1, 0x7
- negs r1, r1
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r4]
- ldrb r0, [r3]
- ands r1, r0
- strb r1, [r3]
- ldrb r2, [r4]
- movs r1, 0x2
- negs r1, r1
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r4]
- ldrb r0, [r3]
- ands r1, r0
- strb r1, [r3]
-_0817F324:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817F2A8
-
- thumb_func_start GetBattlerMoveSlotId
-GetBattlerMoveSlotId: @ 817F33C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 16
- lsrs r7, r1, 16
- adds r0, r5, 0
- bl GetBattlerSide
- lsls r0, 24
- ldr r6, =gEnemyParty
- cmp r0, 0
- bne _0817F356
- ldr r6, =gPlayerParty
-_0817F356:
- movs r4, 0
- ldr r1, =gBattlerPartyIndexes
- lsls r0, r5, 1
- adds r5, r0, r1
- b _0817F36E
- .pool
-_0817F36C:
- adds r4, 0x1
-_0817F36E:
- cmp r4, 0x3
- bgt _0817F388
- ldrh r1, [r5]
- movs r0, 0x64
- muls r0, r1
- adds r0, r6, r0
- adds r1, r4, 0
- adds r1, 0xD
- movs r2, 0
- bl GetMonData
- cmp r0, r7
- bne _0817F36C
-_0817F388:
- lsls r0, r4, 24
- lsrs r0, 24
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end GetBattlerMoveSlotId
-
- thumb_func_start sub_817F394
-sub_817F394: @ 817F394
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- adds r4, r3, 0
- lsls r1, 16
- lsrs r1, 16
- adds r6, r1, 0
- lsls r2, 24
- lsrs r2, 24
- adds r5, r2, 0
- movs r0, 0x7
- ands r0, r3
- cmp r0, 0
- beq _0817F3B4
- movs r0, 0x3
- b _0817F3CA
-_0817F3B4:
- movs r0, 0x60
- ands r0, r3
- cmp r0, 0
- beq _0817F3C0
- movs r0, 0x4
- b _0817F3CA
-_0817F3C0:
- movs r0, 0x18
- ands r0, r3
- cmp r0, 0
- beq _0817F3D2
- movs r0, 0x5
-_0817F3CA:
- movs r3, 0
- bl sub_817E684
- b _0817F3E6
-_0817F3D2:
- movs r0, 0x80
- ands r4, r0
- cmp r4, 0
- beq _0817F3E6
- movs r0, 0x6
- adds r1, r6, 0
- adds r2, r5, 0
- movs r3, 0
- bl sub_817E684
-_0817F3E6:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_817F394
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/field_specials.s b/asm/field_specials.s
index 29c6dc800..6200123ac 100644
--- a/asm/field_specials.s
+++ b/asm/field_specials.s
@@ -3388,7 +3388,7 @@ _0813980C:
_0813981C:
ldrh r5, [r2]
adds r0, r5, 0
- bl sub_80EF370
+ bl CountDigits
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
@@ -3408,7 +3408,7 @@ _0813983C:
adds r4, 0x4
ldrh r5, [r2]
adds r0, r5, 0
- bl sub_80EF370
+ bl CountDigits
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
diff --git a/asm/fldeff_flash.s b/asm/fldeff_flash.s
deleted file mode 100644
index e7e605abe..000000000
--- a/asm/fldeff_flash.s
+++ /dev/null
@@ -1,709 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start SetUpFieldMove_Flash
-SetUpFieldMove_Flash: @ 81370FC
- push {r4,lr}
- bl ShouldDoBrailleFlyEffect
- lsls r0, 24
- cmp r0, 0
- beq _08137134
- ldr r4, =gSpecialVar_Result
- bl GetCursorSelectionMonId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- ldr r1, =gUnknown_03005DB0
- ldr r0, =FieldCallback_Teleport
- str r0, [r1]
- ldr r1, =gUnknown_0203CEEC
- ldr r0, =sub_8179918
- b _08137152
- .pool
-_08137134:
- ldr r0, =gMapHeader
- ldrb r0, [r0, 0x15]
- cmp r0, 0x1
- bne _08137170
- ldr r0, =0x00000888
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _08137170
- ldr r1, =gUnknown_03005DB0
- ldr r0, =FieldCallback_Teleport
- str r0, [r1]
- ldr r1, =gUnknown_0203CEEC
- ldr r0, =hm2_flash
-_08137152:
- str r0, [r1]
- movs r0, 0x1
- b _08137172
- .pool
-_08137170:
- movs r0, 0
-_08137172:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end SetUpFieldMove_Flash
-
- thumb_func_start hm2_flash
-hm2_flash: @ 8137178
- push {r4,lr}
- bl oei_task_add
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl GetCursorSelectionMonId
- ldr r1, =gFieldEffectArguments
- lsls r0, 24
- lsrs r0, 24
- str r0, [r1]
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r2, =sub_81371B4
- lsrs r1, r2, 16
- strh r1, [r0, 0x18]
- strh r2, [r0, 0x1A]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end hm2_flash
-
- thumb_func_start sub_81371B4
-sub_81371B4: @ 81371B4
- push {lr}
- movs r0, 0xCF
- bl PlaySE
- ldr r0, =0x00000888
- bl FlagSet
- ldr r0, =EventScript_2926F8
- bl ScriptContext1_SetupScript
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81371B4
-
- thumb_func_start sub_81371D4
-sub_81371D4: @ 81371D4
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_81371D4
-
- thumb_func_start sub_81371EC
-sub_81371EC: @ 81371EC
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_81371EC
-
- thumb_func_start c2_change_map
-c2_change_map: @ 8137200
- push {r4,lr}
- sub sp, 0x8
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xC
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xA
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x8
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x18
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x16
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x10
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x12
- movs r1, 0
- bl SetGpuReg
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r1, =0x040000d4
- mov r0, sp
- str r0, [r1]
- movs r0, 0xC0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, =0x8100c000
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r4, 0
- str r4, [sp, 0x4]
- add r0, sp, 0x4
- str r0, [r1]
- movs r0, 0xE0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, =0x85000100
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- mov r0, sp
- strh r4, [r0]
- str r0, [r1]
- ldr r0, =0x05000002
- str r0, [r1, 0x4]
- ldr r0, =0x810001ff
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- bl ResetPaletteFade
- bl ResetTasks
- bl ResetSpriteData
- ldr r3, =0x04000208
- ldrh r2, [r3]
- strh r4, [r3]
- ldr r4, =0x04000200
- ldrh r0, [r4]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- ldr r0, =sub_81371EC
- bl SetVBlankCallback
- ldr r0, =sub_81371D4
- bl SetMainCallback2
- bl sub_8137304
- lsls r0, 24
- cmp r0, 0
- bne _081372D2
- ldr r0, =gMain
- ldr r0, [r0, 0x8]
- bl SetMainCallback2
-_081372D2:
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_change_map
-
- thumb_func_start sub_8137304
-sub_8137304: @ 8137304
- push {r4-r7,lr}
- bl get_map_light_from_warp0
- lsls r0, 24
- lsrs r6, r0, 24
- bl Overworld_GetMapTypeOfSaveblockLocation
- lsls r0, 24
- lsrs r5, r0, 24
- movs r3, 0
- ldr r4, =gUnknown_085B27C8
- ldrb r0, [r4]
- cmp r0, 0
- beq _08137358
- adds r7, r4, 0
- adds r0, r4, 0x4
- mov r12, r0
-_08137326:
- lsls r2, r3, 3
- adds r1, r2, r7
- ldrb r0, [r1]
- cmp r0, r6
- bne _08137348
- ldrb r0, [r1, 0x1]
- cmp r0, r5
- bne _08137348
- mov r1, r12
- adds r0, r2, r1
- ldr r0, [r0]
- bl _call_via_r0
- movs r0, 0x1
- b _0813735A
- .pool
-_08137348:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r0, r3, 3
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _08137326
-_08137358:
- movs r0, 0
-_0813735A:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8137304
-
- thumb_func_start sub_8137360
-sub_8137360: @ 8137360
- push {r4-r6,lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r5, r0, 24
- lsrs r4, r1, 24
- movs r3, 0
- ldr r1, =gUnknown_085B27C8
- ldrb r0, [r1]
- cmp r0, 0
- beq _081373A0
- adds r6, r1, 0
-_08137376:
- lsls r0, r3, 3
- adds r2, r0, r6
- ldrb r0, [r2]
- cmp r0, r5
- bne _08137390
- ldrb r0, [r2, 0x1]
- cmp r0, r4
- bne _08137390
- ldrb r0, [r2, 0x2]
- b _081373A2
- .pool
-_08137390:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r0, r3, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _08137376
-_081373A0:
- movs r0, 0
-_081373A2:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8137360
-
- thumb_func_start fade_type_for_given_maplight_pair
-fade_type_for_given_maplight_pair: @ 81373A8
- push {r4-r6,lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r5, r0, 24
- lsrs r4, r1, 24
- movs r3, 0
- ldr r1, =gUnknown_085B27C8
- ldrb r0, [r1]
- cmp r0, 0
- beq _081373E8
- adds r6, r1, 0
-_081373BE:
- lsls r0, r3, 3
- adds r2, r0, r6
- ldrb r0, [r2]
- cmp r0, r5
- bne _081373D8
- ldrb r0, [r2, 0x1]
- cmp r0, r4
- bne _081373D8
- ldrb r0, [r2, 0x3]
- b _081373EA
- .pool
-_081373D8:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r0, r3, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _081373BE
-_081373E8:
- movs r0, 0
-_081373EA:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end fade_type_for_given_maplight_pair
-
- thumb_func_start sub_81373F0
-sub_81373F0: @ 81373F0
- push {lr}
- ldr r0, =sub_8137404
- movs r1, 0
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81373F0
-
- thumb_func_start sub_8137404
-sub_8137404: @ 8137404
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, =sub_8137420
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_8137404
-
- thumb_func_start sub_8137420
-sub_8137420: @ 8137420
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- ldr r0, =gCaveTransitionTiles
- ldr r1, =0x0600c000
- bl LZ77UnCompVram
- ldr r0, =gCaveTransitionTilemap
- ldr r1, =0x0600f800
- bl LZ77UnCompVram
- ldr r0, =gCaveTransitionPalette_White
- movs r1, 0xE0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, =gUnknown_085B28A0
- movs r1, 0xE0
- movs r2, 0x10
- bl LoadPalette
- ldr r1, =0x00003e41
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- ldr r1, =0x00001f0c
- movs r0, 0x8
- bl SetGpuReg
- movs r1, 0x8A
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81374C4
- str r1, [r0]
- movs r2, 0
- movs r1, 0x10
- strh r1, [r0, 0x8]
- strh r2, [r0, 0xA]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8137420
-
- thumb_func_start sub_81374C4
-sub_81374C4: @ 81374C4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r5, r1, r2
- ldrh r4, [r5, 0xA]
- movs r0, 0x80
- lsls r0, 5
- adds r1, r4, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- cmp r4, 0x10
- bhi _081374F8
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- b _08137500
- .pool
-_081374F8:
- movs r0, 0
- strh r0, [r5, 0xC]
- ldr r0, =sub_813750C
- str r0, [r5]
-_08137500:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81374C4
-
- thumb_func_start sub_813750C
-sub_813750C: @ 813750C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, =0x00001010
- movs r0, 0x52
- bl SetGpuReg
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r4, r0, r1
- ldrh r1, [r4, 0xC]
- cmp r1, 0x7
- bhi _08137554
- adds r0, r1, 0x1
- strh r0, [r4, 0xC]
- lsls r1, 1
- ldr r0, =gUnknown_085B28A0
- adds r0, r1, r0
- movs r2, 0x10
- subs r2, r1
- lsls r2, 16
- lsrs r2, 16
- movs r1, 0xE0
- bl LoadPalette
- b _08137566
- .pool
-_08137554:
- ldr r0, =gCaveTransitionPalette_White
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, =sub_8137574
- str r0, [r4]
- movs r0, 0x8
- strh r0, [r4, 0xC]
-_08137566:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_813750C
-
- thumb_func_start sub_8137574
-sub_8137574: @ 8137574
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrh r2, [r1, 0xC]
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _08137598
- subs r0, r2, 0x1
- strh r0, [r1, 0xC]
- b _081375A0
- .pool
-_08137598:
- ldr r0, =gMain
- ldr r0, [r0, 0x8]
- bl SetMainCallback2
-_081375A0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8137574
-
- thumb_func_start sub_81375A8
-sub_81375A8: @ 81375A8
- push {lr}
- ldr r0, =sub_81375BC
- movs r1, 0
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81375A8
-
- thumb_func_start sub_81375BC
-sub_81375BC: @ 81375BC
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, =sub_81375D8
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_81375BC
-
- thumb_func_start sub_81375D8
-sub_81375D8: @ 81375D8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- ldr r0, =gCaveTransitionTiles
- ldr r1, =0x0600c000
- bl LZ77UnCompVram
- ldr r0, =gCaveTransitionTilemap
- ldr r1, =0x0600f800
- bl LZ77UnCompVram
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- ldr r1, =0x00001f0c
- movs r0, 0x8
- bl SetGpuReg
- movs r1, 0x8A
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- ldr r0, =gCaveTransitionPalette_White
- movs r1, 0xE0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, =gCaveTransitionPalette_Black
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_8137678
- str r1, [r0]
- movs r2, 0
- movs r1, 0x10
- strh r1, [r0, 0x8]
- strh r2, [r0, 0xA]
- strh r2, [r0, 0xC]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81375D8
-
- thumb_func_start sub_8137678
-sub_8137678: @ 8137678
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r1, [r4, 0xC]
- cmp r1, 0xF
- bhi _081376B4
- adds r2, r1, 0x1
- adds r0, r2, 0x1
- strh r0, [r4, 0xC]
- movs r0, 0xF
- subs r0, r1
- lsls r0, 1
- ldr r1, =gUnknown_085B2890
- adds r0, r1
- lsls r2, 17
- lsrs r2, 16
- movs r1, 0xE0
- bl LoadPalette
- b _081376C8
- .pool
-_081376B4:
- ldr r1, =0x00001010
- movs r0, 0x52
- bl SetGpuReg
- ldr r1, =0x00003e41
- movs r0, 0x50
- bl SetGpuReg
- ldr r0, =sub_81376DC
- str r0, [r4]
-_081376C8:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8137678
-
- thumb_func_start sub_81376DC
-sub_81376DC: @ 81376DC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r5, r1, r2
- ldrh r0, [r5, 0xA]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 16
- lsrs r4, r1, 16
- movs r0, 0x80
- lsls r0, 21
- adds r1, r0
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- cmp r4, 0
- beq _08137714
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- b _08137726
- .pool
-_08137714:
- ldr r0, =gCaveTransitionPalette_Black
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, =gMain
- ldr r0, [r0, 0x8]
- bl SetMainCallback2
-_08137726:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81376DC
diff --git a/asm/fldeff_groundshake.s b/asm/fldeff_groundshake.s
deleted file mode 100644
index 81d92430e..000000000
--- a/asm/fldeff_groundshake.s
+++ /dev/null
@@ -1,596 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_81BE66C
-sub_81BE66C: @ 81BE66C
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r1, [r0, 0x4]
- movs r0, 0xD0
- lsls r0, 5
- cmp r1, r0
- bne _081BE690
- movs r0, 0xA7
- lsls r0, 1
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- b _081BE692
- .pool
-_081BE690:
- movs r0, 0
-_081BE692:
- pop {r1}
- bx r1
- thumb_func_end sub_81BE66C
-
- thumb_func_start sub_81BE698
-sub_81BE698: @ 81BE698
- push {lr}
- ldr r0, =gUnknown_0203CF18
- ldr r0, [r0]
- adds r0, 0x4
- bl sub_8151E50
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81BE698
-
- thumb_func_start sub_81BE6AC
-sub_81BE6AC: @ 81BE6AC
- ldr r1, =gUnknown_0203CF18
- movs r0, 0
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_81BE6AC
-
- thumb_func_start sub_81BE6B8
-sub_81BE6B8: @ 81BE6B8
- push {r4,lr}
- ldr r4, =gUnknown_0203CF18
- ldr r0, [r4]
- cmp r0, 0
- beq _081BE6CC
- movs r0, 0
- str r0, [r4]
- b _081BE718
- .pool
-_081BE6CC:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r1, [r0, 0x4]
- movs r0, 0xD0
- lsls r0, 5
- cmp r1, r0
- bne _081BE718
- movs r0, 0xA7
- lsls r0, 1
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _081BE718
- movs r0, 0xC8
- bl AllocZeroed
- str r0, [r4]
- adds r0, 0x4
- bl sub_8151B3C
- ldr r0, [r4]
- adds r0, 0x4
- ldr r1, =gUnknown_08617E18
- bl sub_8151B68
- ldr r0, [r4]
- adds r0, 0x4
- movs r1, 0x1
- movs r2, 0x1
- bl sub_8151CA8
- ldr r0, =sub_81BE698
- movs r1, 0xFF
- bl CreateTask
- ldr r1, [r4]
- strb r0, [r1]
-_081BE718:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81BE6B8
-
- thumb_func_start sub_81BE72C
-sub_81BE72C: @ 81BE72C
- push {r4,lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r1, [r0, 0x4]
- movs r0, 0xD0
- lsls r0, 5
- cmp r1, r0
- bne _081BE788
- movs r0, 0xA7
- lsls r0, 1
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _081BE788
- ldr r4, =gUnknown_0203CF18
- ldr r0, [r4]
- cmp r0, 0
- beq _081BE788
- ldr r0, =sub_81BE698
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- beq _081BE766
- ldr r0, [r4]
- ldrb r0, [r0]
- bl DestroyTask
-_081BE766:
- ldr r0, [r4]
- adds r0, 0x4
- movs r1, 0x1
- movs r2, 0x1
- bl sub_8151D28
- ldr r0, [r4]
- adds r0, 0x4
- movs r1, 0x1
- movs r2, 0x1
- bl sub_8151C50
- ldr r0, [r4]
- bl Free
- movs r0, 0
- str r0, [r4]
-_081BE788:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81BE72C
-
- thumb_func_start sub_81BE79C
-sub_81BE79C: @ 81BE79C
- push {r4,lr}
- ldr r0, =0x000040cb
- bl VarGet
- lsls r0, 16
- cmp r0, 0
- beq _081BE7B8
- movs r0, 0xA7
- lsls r0, 1
- bl FlagClear
- b _081BE7EE
- .pool
-_081BE7B8:
- bl Random
- lsls r0, 16
- lsrs r4, r0, 16
- movs r0, 0x1
- ands r4, r0
- movs r0, 0x9D
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081BE7D4
- movs r4, 0x1
-_081BE7D4:
- cmp r4, 0
- beq _081BE7E6
- movs r0, 0xA7
- lsls r0, 1
- bl FlagSet
- bl sub_81BE6B8
- b _081BE7EE
-_081BE7E6:
- movs r0, 0xA7
- lsls r0, 1
- bl FlagClear
-_081BE7EE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81BE79C
-
- thumb_func_start sub_81BE7F4
-sub_81BE7F4: @ 81BE7F4
- push {lr}
- ldr r0, =sub_81BE808
- movs r1, 0x8
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81BE7F4
-
- thumb_func_start sub_81BE808
-sub_81BE808: @ 81BE808
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- movs r0, 0x2D
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- mov r0, sp
- ldrb r0, [r0]
- lsls r2, r0, 3
- adds r2, r0
- lsls r2, 2
- ldr r4, =gMapObjects
- adds r2, r4
- ldr r3, =gSprites
- ldrb r1, [r2, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x26]
- adds r1, 0x4
- strh r1, [r0, 0x26]
- ldr r0, =gPlayerAvatar
- ldrb r0, [r0, 0x5]
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r2, 0x4]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r3
- movs r4, 0x22
- ldrsh r2, [r0, r4]
- movs r4, 0x26
- ldrsh r0, [r0, r4]
- adds r2, r0
- ldrb r1, [r1, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r3, 0x22
- ldrsh r1, [r0, r3]
- movs r4, 0x26
- ldrsh r0, [r0, r4]
- adds r1, r0
- cmp r2, r1
- blt _081BE882
- adds r0, r5, 0
- bl DestroyTask
- bl EnableBothScriptContexts
-_081BE882:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81BE808
-
- thumb_func_start sp136_strengh_sound
-sp136_strengh_sound: @ 81BE89C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- mov r8, r0
- adds r4, r1, 0
- adds r5, r2, 0
- adds r6, r3, 0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- ldr r0, =sub_81BE900
- movs r1, 0x9
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r4, [r1, 0x8]
- strh r0, [r1, 0xA]
- strh r5, [r1, 0xC]
- strh r6, [r1, 0xE]
- mov r0, r8
- strh r0, [r1, 0x10]
- movs r0, 0
- bl SetCameraPanningCallback
- movs r0, 0xD6
- bl PlaySE
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sp136_strengh_sound
-
- thumb_func_start sub_81BE900
-sub_81BE900: @ 81BE900
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- ldrh r0, [r4, 0x2]
- adds r0, 0x1
- strh r0, [r4, 0x2]
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- movs r2, 0x6
- ldrsh r1, [r4, r2]
- bl __modsi3
- cmp r0, 0
- bne _081BE95C
- strh r0, [r4, 0x2]
- ldrh r0, [r4, 0x4]
- subs r0, 0x1
- strh r0, [r4, 0x4]
- ldrh r0, [r4]
- negs r0, r0
- strh r0, [r4]
- ldrh r0, [r4, 0x8]
- negs r0, r0
- strh r0, [r4, 0x8]
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r2, 0x8
- ldrsh r1, [r4, r2]
- bl SetCameraPanning
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _081BE95C
- bl sub_81BE968
- adds r0, r5, 0
- bl DestroyTask
- bl InstallCameraPanAheadCallback
-_081BE95C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81BE900
-
- thumb_func_start sub_81BE968
-sub_81BE968: @ 81BE968
- push {lr}
- ldr r0, =sub_81BE9C0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _081BE988
- ldr r0, =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_081BE988:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81BE968
-
- thumb_func_start sub_81BE994
-sub_81BE994: @ 81BE994
- push {lr}
- ldr r0, =gUnknown_08617D94
- bl LoadSpriteSheets
- bl sub_81BEA20
- ldr r0, =sub_81BE9C0
- movs r1, 0x8
- bl CreateTask
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0x10
- movs r3, 0x3
- bl sp136_strengh_sound
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81BE994
-
- thumb_func_start sub_81BE9C0
-sub_81BE9C0: @ 81BE9C0
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r3, r1, 3
- ldr r4, =gTasks + 0x8
- adds r2, r3, r4
- ldrh r0, [r2, 0x2]
- adds r0, 0x1
- strh r0, [r2, 0x2]
- lsls r0, 16
- movs r1, 0xFA
- lsls r1, 18
- cmp r0, r1
- beq _081BE9E6
- ldrh r0, [r2]
- cmp r0, 0x11
- bne _081BE9F0
-_081BE9E6:
- adds r0, r4, 0
- subs r0, 0x8
- adds r0, r3, r0
- ldr r1, =sub_81BEA00
- str r1, [r0]
-_081BE9F0:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81BE9C0
-
- thumb_func_start sub_81BEA00
-sub_81BEA00: @ 81BEA00
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0xFA
- lsls r0, 4
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl DestroyTask
- bl EnableBothScriptContexts
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81BEA00
-
- thumb_func_start sub_81BEA20
-sub_81BEA20: @ 81BEA20
- push {r4-r7,lr}
- movs r4, 0
- ldr r5, =gUnknown_08617D64
- adds r7, r5, 0x2
- ldr r6, =gSprites
-_081BEA2A:
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 1
- adds r1, r0, r5
- ldrh r1, [r1]
- adds r1, 0x78
- lsls r1, 16
- asrs r1, 16
- adds r0, r7
- movs r3, 0
- ldrsh r2, [r0, r3]
- ldr r0, =gUnknown_08617E60
- movs r3, 0x8
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r2, [r0, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r2, r1
- movs r1, 0xF
- ands r2, r1
- strb r2, [r0, 0x5]
- strh r4, [r0, 0x2E]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x7
- bls _081BEA2A
- movs r4, 0
- ldr r5, =gUnknown_08617D64
- adds r7, r5, 0x2
- ldr r6, =gSprites
-_081BEA78:
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 1
- adds r1, r0, r5
- ldrh r1, [r1]
- adds r1, 0x73
- lsls r1, 16
- asrs r1, 16
- adds r0, r7
- ldrh r2, [r0]
- subs r2, 0x3
- lsls r2, 16
- asrs r2, 16
- ldr r0, =gUnknown_08617E34
- movs r3, 0x8
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r2, [r0, 0x5]
- movs r3, 0xD
- negs r3, r3
- adds r1, r3, 0
- ands r2, r1
- movs r1, 0xF
- ands r2, r1
- strb r2, [r0, 0x5]
- strh r4, [r0, 0x2E]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x7
- bls _081BEA78
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81BEA20
-
- thumb_func_start sub_81BEAD8
-sub_81BEAD8: @ 81BEAD8
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- adds r0, 0x2
- strh r0, [r4, 0x30]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- strh r0, [r4, 0x26]
- movs r0, 0x22
- ldrsh r3, [r4, r0]
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- adds r3, r0
- ldr r2, =gUnknown_08617D64
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 1
- adds r2, 0x4
- adds r0, r2
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r3, r0
- ble _081BEB1A
- adds r0, r4, 0
- bl DestroySprite
- bl sub_81BE968
-_081BEB1A:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81BEAD8
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/fossil_specials.s b/asm/fossil_specials.s
index 7956f814a..eb7cb8ada 100644
--- a/asm/fossil_specials.s
+++ b/asm/fossil_specials.s
@@ -5,893 +5,6 @@
.text
- thumb_func_start sub_81BEB24
-sub_81BEB24: @ 81BEB24
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, =gUnknown_08617DA4
-_081BEB2A:
- lsls r2, r4, 2
- adds r2, r5
- ldrb r0, [r2]
- adds r0, 0x7
- ldrb r1, [r2, 0x1]
- adds r1, 0x7
- ldrh r2, [r2, 0x2]
- bl MapGridSetMetatileIdAt
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x11
- bls _081BEB2A
- bl DrawWholeMapView
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81BEB24
-
- thumb_func_start sub_81BEB54
-sub_81BEB54: @ 81BEB54
- push {lr}
- ldr r0, =sub_81BED50
- movs r1, 0x9
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81BEB54
-
- thumb_func_start sub_81BEB68
-sub_81BEB68: @ 81BEB68
- push {lr}
- ldr r0, =sub_81BEBF4
- movs r1, 0x9
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81BEB68
-
- thumb_func_start sub_81BEB7C
-sub_81BEB7C: @ 81BEB7C
- push {lr}
- ldr r0, =sub_81BF028
- movs r1, 0x9
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81BEB7C
-
- thumb_func_start sub_81BEB90
-sub_81BEB90: @ 81BEB90
- push {r4,lr}
- ldr r4, =gUnknown_0203CF14
- ldr r0, [r4]
- ldrh r1, [r0]
- movs r0, 0x10
- bl SetGpuReg
- ldr r0, [r4]
- ldrh r1, [r0, 0x2]
- movs r0, 0x12
- bl SetGpuReg
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81BEB90
-
- thumb_func_start sub_81BEBB4
-sub_81BEBB4: @ 81BEBB4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r2, r1, r2
- ldrh r1, [r2, 0x8]
- movs r3, 0x8
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bne _081BEBEC
- ldr r0, =gUnknown_0203CF14
- ldr r1, [r0]
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
- movs r0, 0x2
- strh r0, [r2, 0x8]
- bl sub_81BEB90
- b _081BEBF0
- .pool
-_081BEBEC:
- subs r0, r1, 0x1
- strh r0, [r2, 0x8]
-_081BEBF0:
- pop {r0}
- bx r0
- thumb_func_end sub_81BEBB4
-
- thumb_func_start sub_81BEBF4
-sub_81BEBF4: @ 81BEBF4
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0x6
- bls _081BEC10
- b _081BED40
-_081BEC10:
- lsls r0, 2
- ldr r1, =_081BEC24
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081BEC24:
- .4byte _081BEC40
- .4byte _081BEC50
- .4byte _081BEC88
- .4byte _081BECB0
- .4byte _081BECF8
- .4byte _081BED00
- .4byte _081BED1C
-_081BEC40:
- bl FreeAllWindowBuffers
- movs r0, 0
- movs r1, 0x7
- movs r2, 0x2
- bl SetBgAttribute
- b _081BED04
-_081BEC50:
- ldr r4, =gUnknown_0203CF04
- movs r0, 0x92
- lsls r0, 4
- bl AllocZeroed
- str r0, [r4]
- ldr r4, =gUnknown_0203CF08
- movs r0, 0x80
- lsls r0, 4
- bl AllocZeroed
- str r0, [r4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- b _081BECD8
- .pool
-_081BEC88:
- ldr r0, =gUnknown_08617274
- ldr r4, =gUnknown_0203CF04
- ldr r1, [r4]
- movs r2, 0x92
- lsls r2, 3
- bl CpuSet
- ldr r1, [r4]
- movs r2, 0x92
- lsls r2, 4
- movs r0, 0
- movs r3, 0
- bl LoadBgTiles
- b _081BECD8
- .pool
-_081BECB0:
- ldr r0, =gUnknown_0203CF08
- ldr r1, [r0]
- movs r0, 0
- bl SetBgTilemapBuffer
- ldr r1, =gUnknown_08617B94
- movs r0, 0x6
- str r0, [sp]
- movs r0, 0xC
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0
- movs r2, 0xC
- movs r3, 0x1D
- bl CopyToBgTilemapBufferRect_ChangePalette
- movs r0, 0
- bl CopyBgTilemapBufferToVram
-_081BECD8:
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- b _081BED40
- .pool
-_081BECF8:
- movs r0, 0
- bl ShowBg
- b _081BED04
-_081BED00:
- bl sub_81BEB24
-_081BED04:
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _081BED40
- .pool
-_081BED1C:
- ldr r4, =gUnknown_0203CF14
- movs r0, 0x4
- bl Alloc
- str r0, [r4]
- movs r2, 0
- movs r1, 0x2
- strh r1, [r0]
- strh r2, [r0, 0x2]
- ldr r0, =sub_81BEBB4
- movs r1, 0xA
- bl CreateTask
- adds r0, r5, 0
- bl DestroyTask
- bl EnableBothScriptContexts
-_081BED40:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81BEBF4
-
- thumb_func_start sub_81BED50
-sub_81BED50: @ 81BED50
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r1, =gTasks
- lsls r0, 2
- add r0, r10
- lsls r0, 3
- adds r0, r1
- ldrh r0, [r0, 0x8]
- subs r0, 0x1
- lsls r0, 16
- asrs r0, 16
- adds r6, r1, 0
- cmp r0, 0x7
- bls _081BED7C
- b _081BF002
-_081BED7C:
- lsls r0, 2
- ldr r1, =_081BED90
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081BED90:
- .4byte _081BEDB0
- .4byte _081BF002
- .4byte _081BEDC4
- .4byte _081BEF64
- .4byte _081BEF94
- .4byte _081BEFD0
- .4byte _081BEFF0
- .4byte _081BEFF8
-_081BEDB0:
- ldr r4, =gUnknown_0203CF10
- movs r0, 0xC0
- lsls r0, 2
- bl AllocZeroed
- str r0, [r4]
- b _081BF002
- .pool
-_081BEDC4:
- mov r1, r10
- lsls r0, r1, 2
- adds r1, r0, r1
- lsls r1, 3
- adds r2, r1, r6
- ldrh r3, [r2, 0xE]
- movs r4, 0xE
- ldrsh r1, [r2, r4]
- str r0, [sp, 0x8]
- cmp r1, 0x5F
- bgt _081BEE8A
- movs r1, 0xA
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- ble _081BEE7C
- lsls r0, r3, 24
- lsrs r4, r0, 24
- movs r0, 0x30
- bl Alloc
- ldr r3, =gUnknown_0203CF10
- ldr r1, [r3]
- lsls r2, r4, 3
- adds r1, r2, r1
- str r0, [r1]
- movs r5, 0
- adds r4, r2, 0
-_081BEDFA:
- ldr r0, [r3]
- adds r0, r4, r0
- ldr r0, [r0]
- adds r0, r5
- strb r5, [r0]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x2F
- bls _081BEDFA
- movs r5, 0
- ldr r7, =gUnknown_0203CF10
- adds r6, r2, 0
-_081BEE14:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x30
- bl __umodsi3
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x30
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- ldr r1, [r7]
- adds r1, r6, r1
- ldr r1, [r1]
- adds r0, r1, r0
- ldrb r2, [r0]
- adds r1, r4
- ldrb r1, [r1]
- strb r1, [r0]
- ldr r0, [r7]
- adds r0, r6, r0
- ldr r0, [r0]
- adds r0, r4
- strb r2, [r0]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x2F
- bls _081BEE14
- ldr r0, =gTasks
- ldr r1, [sp, 0x8]
- add r1, r10
- lsls r1, 3
- adds r2, r1, r0
- ldrh r3, [r2, 0xE]
- movs r4, 0xE
- ldrsh r1, [r2, r4]
- adds r6, r0, 0
- cmp r1, 0x5F
- bgt _081BEE78
- adds r0, r3, 0x1
- strh r0, [r2, 0xE]
-_081BEE78:
- movs r0, 0
- strh r0, [r2, 0xA]
-_081BEE7C:
- ldr r1, [sp, 0x8]
- add r1, r10
- lsls r1, 3
- adds r1, r6
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
-_081BEE8A:
- ldr r0, [sp, 0x8]
- add r0, r10
- lsls r0, 3
- adds r0, r6
- ldrb r4, [r0, 0xE]
- ldrb r5, [r0, 0xC]
- lsls r0, r4, 16
- cmp r5, r4
- bcs _081BEF32
- str r0, [sp, 0xC]
-_081BEE9E:
- movs r6, 0
- adds r0, r5, 0x1
- str r0, [sp, 0x4]
- lsls r4, r5, 3
- movs r2, 0x5F
- subs r1, r2, r5
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 4
- mov r9, r0
-_081BEEB2:
- ldr r0, =gUnknown_0203CF04
- ldr r0, [r0]
- ldr r7, =gUnknown_0203CF10
- ldr r3, [r7]
- adds r3, r4, r3
- ldrb r2, [r3, 0x4]
- adds r1, r2, 0x1
- strb r1, [r3, 0x4]
- lsls r2, 24
- lsrs r2, 24
- ldr r1, [r3]
- adds r1, r2
- ldrb r1, [r1]
- add r1, r9
- lsls r1, 16
- lsrs r1, 16
- movs r2, 0x1
- mov r8, r2
- str r2, [sp]
- movs r2, 0
- movs r3, 0x30
- bl sub_81BF2B8
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- beq _081BEEB2
- ldr r0, [r7]
- adds r1, r4, r0
- ldrb r0, [r1, 0x4]
- cmp r0, 0x2F
- bls _081BEF24
- ldr r0, [r1]
- bl Free
- ldr r0, [r7]
- adds r0, r4, r0
- movs r1, 0
- str r1, [r0]
- ldr r1, [sp, 0x8]
- add r1, r10
- lsls r1, 3
- ldr r4, =gTasks
- adds r1, r4
- ldrh r0, [r1, 0xC]
- adds r0, 0x1
- strh r0, [r1, 0xC]
- mov r0, r8
- ands r5, r0
- cmp r5, 0x1
- bne _081BEF24
- ldr r0, =gUnknown_0203CF14
- ldr r1, [r0]
- ldrh r0, [r1, 0x2]
- subs r0, 0x1
- strh r0, [r1, 0x2]
-_081BEF24:
- ldr r1, [sp, 0x4]
- lsls r0, r1, 16
- lsrs r5, r0, 16
- ldr r2, [sp, 0xC]
- lsrs r0, r2, 16
- cmp r5, r0
- bcc _081BEE9E
-_081BEF32:
- ldr r0, =gUnknown_0203CF04
- ldr r1, [r0]
- movs r2, 0x92
- lsls r2, 4
- movs r0, 0
- movs r3, 0
- bl LoadBgTiles
- ldr r0, =gUnknown_0203CF10
- ldr r0, [r0]
- movs r4, 0xBE
- lsls r4, 2
- adds r0, r4
- ldrb r0, [r0, 0x4]
- cmp r0, 0x2F
- bhi _081BF002
- b _081BF014
- .pool
-_081BEF64:
- movs r0, 0
- bl UnsetBgTilemapBuffer
- ldr r0, =sub_81BEBB4
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _081BEF7C
- bl DestroyTask
-_081BEF7C:
- ldr r0, =gUnknown_0203CF14
- ldr r1, [r0]
- movs r0, 0
- strh r0, [r1]
- strh r0, [r1, 0x2]
- bl sub_81BEB90
- b _081BF002
- .pool
-_081BEF94:
- ldr r4, =gUnknown_0203CF14
- ldr r0, [r4]
- bl Free
- movs r5, 0
- str r5, [r4]
- ldr r4, =gUnknown_0203CF10
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r4, =gUnknown_0203CF04
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r4, =gUnknown_0203CF08
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- b _081BF002
- .pool
-_081BEFD0:
- movs r0, 0xC
- movs r1, 0x2
- bl SetGpuRegBits
- movs r0, 0x8
- movs r1, 0
- bl SetGpuRegBits
- movs r0, 0
- movs r1, 0x7
- movs r2, 0
- bl SetBgAttribute
- bl sub_81971D0
- b _081BF002
-_081BEFF0:
- movs r0, 0
- bl ShowBg
- b _081BF002
-_081BEFF8:
- mov r0, r10
- bl DestroyTask
- bl EnableBothScriptContexts
-_081BF002:
- ldr r0, =gTasks
- mov r2, r10
- lsls r1, r2, 2
- add r1, r10
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_081BF014:
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81BED50
-
- thumb_func_start sub_81BF028
-sub_81BF028: @ 81BF028
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x18
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldrh r0, [r0, 0x8]
- subs r0, 0x1
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- bls _081BF04C
- b _081BF228
-_081BF04C:
- lsls r0, 2
- ldr r1, =_081BF060
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081BF060:
- .4byte _081BF080
- .4byte _081BF0B4
- .4byte _081BF0DC
- .4byte _081BF0F0
- .4byte _081BF148
- .4byte _081BF170
- .4byte _081BF1CC
- .4byte _081BF224
-_081BF080:
- ldr r4, =gUnknown_0203CF0C
- movs r0, 0x14
- bl AllocZeroed
- str r0, [r4]
- movs r0, 0x80
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1]
- movs r0, 0x8
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1, 0x4]
- movs r0, 0x80
- lsls r0, 2
- bl AllocZeroed
- ldr r1, [r4]
- str r0, [r1, 0xC]
- movs r0, 0
- strh r0, [r1, 0x10]
- b _081BF228
- .pool
-_081BF0B4:
- ldr r0, =gUnknown_0203CF0C
- ldr r0, [r0]
- ldr r1, [r0]
- movs r5, 0
- ldr r2, =gRootFossil_Gfx
-_081BF0BE:
- adds r0, r5, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- adds r1, 0x1
- cmp r5, 0x7F
- bls _081BF0BE
- b _081BF228
- .pool
-_081BF0DC:
- ldr r0, =gUnknown_0203CF0C
- ldr r0, [r0]
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [r1]
- movs r0, 0x80
- strh r0, [r1, 0x4]
- b _081BF228
- .pool
-_081BF0F0:
- mov r1, sp
- ldr r0, =gUnknown_08617E00
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldr r4, =gUnknown_0203CF0C
- ldr r0, [r4]
- ldr r0, [r0, 0x4]
- str r0, [sp, 0xC]
- movs r2, 0x10
- negs r2, r2
- mov r0, sp
- movs r1, 0x80
- movs r3, 0x1
- bl CreateSprite
- ldr r1, [r4]
- movs r3, 0
- strb r0, [r1, 0x8]
- ldr r2, =gSprites
- ldr r0, [r4]
- ldrb r1, [r0, 0x8]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x28
- strb r3, [r0]
- ldr r3, [r4]
- ldrb r1, [r3, 0x8]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x20]
- strh r1, [r0, 0x2E]
- ldrb r1, [r3, 0x8]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x1
- strh r1, [r0, 0x30]
-_081BF148:
- movs r5, 0
- ldr r2, =gUnknown_0203CF0C
-_081BF14C:
- ldr r0, [r2]
- ldr r1, [r0, 0xC]
- lsls r0, r5, 1
- adds r0, r1
- strh r5, [r0]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0xFF
- bls _081BF14C
- b _081BF228
- .pool
-_081BF170:
- movs r5, 0
- movs r6, 0xFF
- ldr r0, =0x000001ff
- mov r8, r0
-_081BF178:
- bl Random
- adds r4, r6, 0
- ands r4, r0
- bl Random
- adds r1, r6, 0
- ands r1, r0
- ldr r0, =gUnknown_0203CF0C
- ldr r3, [r0]
- ldr r0, [r3, 0xC]
- lsls r1, 1
- adds r1, r0
- ldrh r2, [r1]
- lsls r4, 1
- adds r4, r0
- ldrh r0, [r4]
- strh r0, [r1]
- strh r2, [r4]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, r8
- bls _081BF178
- ldr r2, =gSprites
- ldrb r1, [r3, 0x8]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, =sub_81BF248
- str r1, [r0]
- b _081BF228
- .pool
-_081BF1CC:
- ldr r3, =gSprites
- ldr r5, =gUnknown_0203CF0C
- ldr r0, [r5]
- ldrb r1, [r0, 0x8]
- lsls r0, r1, 4
- adds r0, r1
- lsls r2, r0, 2
- adds r0, r3, 0
- adds r0, 0x1C
- adds r0, r2, r0
- ldr r1, [r0]
- ldr r0, =SpriteCallbackDummy
- cmp r1, r0
- bne _081BF238
- adds r0, r2, r3
- bl DestroySprite
- ldr r0, [r5]
- ldr r0, [r0, 0xC]
- bl Free
- ldr r0, [r5]
- movs r4, 0
- str r4, [r0, 0xC]
- ldr r0, [r0, 0x4]
- bl Free
- ldr r0, [r5]
- str r4, [r0, 0x4]
- ldr r0, [r0]
- bl Free
- ldr r0, [r5]
- str r4, [r0]
- bl Free
- str r4, [r5]
- b _081BF228
- .pool
-_081BF224:
- bl EnableBothScriptContexts
-_081BF228:
- ldr r0, =gTasks
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_081BF238:
- add sp, 0x18
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81BF028
-
- thumb_func_start sub_81BF248
-sub_81BF248: @ 81BF248
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, =gUnknown_0203CF0C
- ldr r0, [r0]
- ldrh r0, [r0, 0x10]
- cmp r0, 0xFF
- bls _081BF268
- ldr r0, =SpriteCallbackDummy
- str r0, [r5, 0x1C]
- b _081BF2B0
- .pool
-_081BF268:
- ldrh r1, [r5, 0x22]
- movs r2, 0x22
- ldrsh r0, [r5, r2]
- cmp r0, 0x5F
- ble _081BF2AC
- movs r4, 0
-_081BF274:
- ldr r0, =gUnknown_0203CF0C
- ldr r3, [r0]
- ldr r0, [r3]
- ldrh r1, [r3, 0x10]
- adds r2, r1, 0x1
- strh r2, [r3, 0x10]
- lsls r1, 16
- ldr r2, [r3, 0xC]
- lsrs r1, 15
- adds r1, r2
- ldrh r1, [r1]
- movs r2, 0
- str r2, [sp]
- movs r3, 0x10
- bl sub_81BF2B8
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- bls _081BF274
- adds r0, r5, 0
- movs r1, 0
- bl StartSpriteAnim
- b _081BF2B0
- .pool
-_081BF2AC:
- adds r0, r1, 0x1
- strh r0, [r5, 0x22]
-_081BF2B0:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81BF248
-
thumb_func_start sub_81BF2B8
sub_81BF2B8: @ 81BF2B8
push {r4-r7,lr}
diff --git a/data/battle_link_817C95C.s b/data/battle_link_817C95C.s
deleted file mode 100644
index 24f70c79c..000000000
--- a/data/battle_link_817C95C.s
+++ /dev/null
@@ -1,174 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 1
-gUnknown_0860A4AC:: @ 860A4AC
- .2byte 0x0044, 0x005a, 0x0075, 0x00f3, 0x0020, 0x00af, 0x00b3, 0x00ed, 0x0149, 0x0108, 0x011c, 0x0143, 0x008a, 0x0137, 0x00ad, 0x00dc
- .2byte 0x000c, 0x00da, 0x00d8, 0x011b, 0x00d9, 0x0117, 0xffff, 0x00de, 0x0095, 0xffff
-
- .align 1
-gUnknown_0860A4E0:: @ 860A4E0
- .2byte 0x0001, 0x0001, 0x0001, 0x0004, 0x0001, 0x0001, 0x0001, 0x0000, 0x0005, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001
- .2byte 0x0001, 0x0002, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0005, 0x0005, 0x0004, 0x0005, 0x0001, 0x0003, 0x0001
- .2byte 0x0003, 0x0005, 0x0001, 0x0007, 0x0001, 0x0007, 0x0007, 0x0001, 0x0005, 0x0002, 0x0004, 0x0001, 0x0001, 0x0001, 0x0005, 0x0001
- .2byte 0x0002, 0x0004, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001
- .2byte 0x0001, 0x0007, 0x0004, 0x0004, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0004, 0x0001, 0x0001, 0x0001, 0x0004
- .2byte 0x0005, 0x0002, 0x0004, 0x0001, 0x0004, 0x0001, 0x0007, 0x0002, 0x0001, 0x0005, 0x0007, 0x0003, 0x0003, 0x0004, 0x0003, 0x0003
- .2byte 0x0003, 0x0003, 0x0003, 0x0002, 0x0004, 0x0001, 0x0005, 0x0001, 0x0001, 0x0004, 0x0005, 0x0003, 0x0001, 0x0002, 0x0001, 0x0005
- .2byte 0x0004, 0x0003, 0x0006, 0x0004, 0x0003, 0x0003, 0x0003, 0x0002, 0x0004, 0x0001, 0x0001, 0x0001, 0x0005, 0x0001, 0x0001, 0x0007
- .2byte 0x0002, 0x0002, 0x0001, 0x0001, 0x0004, 0x0004, 0x0004, 0x0001, 0x0004, 0x0004, 0x0001, 0x0001, 0x0001, 0x0001, 0x0007, 0x0007
- .2byte 0x0006, 0x0003, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0002, 0x0003, 0x0001, 0x0001, 0x0004, 0x0004
- .2byte 0x0003, 0x0003, 0x0003, 0x0001, 0x0004, 0x0007, 0x0007, 0x0005, 0x0007, 0x0001, 0x0007, 0x0001, 0x0005, 0x0000, 0x0004, 0x0004
- .2byte 0x0004, 0x0004, 0x0004, 0x0002, 0x0002, 0x0006, 0x0003, 0x0006, 0x0004, 0x0004, 0x0002, 0x0005, 0x0002, 0x0001, 0x0001, 0x0006
- .2byte 0x0006, 0x0006, 0x0001, 0x0001, 0x0001, 0x0001, 0x0002, 0x0006, 0x0001, 0x0004, 0x0001, 0x0001, 0x0003, 0x0001, 0x0001, 0x0001
- .2byte 0x0001, 0x0001, 0x0004, 0x0001, 0x0001, 0x0003
-
- .align 1
-gUnknown_0860A68C:: @ 860A68C
- .2byte 0x0004, 0xfffd, 0xfffa
-
- .align 1
-gUnknown_0860A692:: @ 860A692
- .2byte 0x0004, 0x0004, 0x0006, 0x0006, 0x0007, 0x0006, 0x0002
-
- .align 1
-gUnknown_0860A6A0:: @ 860A6A0
- .2byte 0x0091, 0x0003, 0x00fa, 0x0003, 0x00be, 0x0003, 0x0080, 0x0003, 0x006e, 0x0003, 0x0098, 0x0003, 0x0143, 0x0003, 0x0123, 0x0003
- .2byte 0x007f, 0x0003, 0x014a, 0x0003, 0x0039, 0x0003, 0x0134, 0x0003, 0x0038, 0x0003, 0x003d, 0x0003, 0x015a, 0x0000, 0x0037, 0x0003
- .2byte 0x0160, 0x0003, 0x0137, 0x0003, 0x0057, 0x0003, 0x004c, 0xfffc, 0x013b, 0xfffc, 0x00ac, 0xfffc, 0x0035, 0xfffc, 0x00dd, 0xfffc
- .2byte 0x007e, 0xfffc, 0x0101, 0xfffc, 0x0034, 0xfffc, 0x0133, 0xfffc, 0x012b, 0xfffc, 0x011c, 0xfffc, 0x0053, 0xfffc, 0x0007, 0xfffc
- .2byte 0x004c, 0xfffc, 0xffff, 0x0000
-
- .align 1
-gUnknown_0860A728:: @ 860A728
- .2byte 0x013b, 0x0003, 0x00ac, 0x0003, 0x0035, 0x0003, 0x00dd, 0x0003, 0x007e, 0x0003, 0x0101, 0x0003, 0x0034, 0x0003, 0x0133, 0x0003
- .2byte 0x012b, 0x0003, 0x011c, 0x0003, 0x0053, 0x0003, 0x0007, 0x0003, 0x004c, 0x0005, 0x00eb, 0x0003, 0x00ea, 0x0003, 0x00ec, 0x0003
- .2byte 0x0137, 0x0003, 0xffff, 0x0000
-
- .align 1
-gUnknown_0860A770:: @ 860A770
- .2byte 0x0137, 0x0003, 0x004c, 0xfffd, 0xffff, 0x0000
-
- .align 1
-gUnknown_0860A77C:: @ 860A77C
- .2byte 0x0137, 0x0003, 0x004c, 0xfffd, 0xffff, 0x0000
-
- .align 1
-gUnknown_0860A788:: @ 860A788
- .2byte 0x0055, 0x0003, 0x0009, 0x0003, 0x00d1, 0x0003, 0x0054, 0x0003, 0x00c0, 0x0003, 0x015f, 0x0003, 0x0056, 0x0000, 0x0057, 0x0003
- .2byte 0x0158, 0x0003, 0xffff, 0x0000
-
- .align 1
-gUnknown_0860A7B0:: @ 860A7B0
- .2byte 0x0005, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003
-
- .align 1
-gUnknown_0860A7BE:: @ 860A7BE
- .2byte 0x0005, 0x0005, 0x0005, 0x0005, 0x0005
-
- .align 1
-gUnknown_0860A7C8:: @ 860A7C8
- .2byte 0x0004
-
- .align 1
-gUnknown_0860A7CA:: @ 860A7CA
- .2byte 0x0005
-
- .align 1
-gUnknown_0860A7CC:: @ 860A7CC
- .2byte 0x0005
-
- .align 1
-gUnknown_0860A7CE:: @ 860A7CE
- .2byte 0x0003
-
- .align 1
-gUnknown_0860A7D0:: @ 860A7D0
- .2byte 0x0003
-
- .align 1
-gUnknown_0860A7D2:: @ 860A7D2
- .2byte 0x0004
-
- .align 1
-gUnknown_0860A7D4:: @ 860A7D4
- .2byte 0x0003
-
- .align 1
-gUnknown_0860A7D6:: @ 860A7D6
- .2byte 0x0006
-
- .align 1
-gUnknown_0860A7D8:: @ 860A7D8
- .2byte 0x0006
-
- .align 1
-gUnknown_0860A7DA:: @ 860A7DA
- .2byte 0x0006
-
- .align 1
-gUnknown_0860A7DC:: @ 860A7DC
- .2byte 0x0004
-
- .align 1
-gUnknown_0860A7DE:: @ 860A7DE
- .2byte 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002
-
- .align 1
-gUnknown_0860A7EC:: @ 860A7EC
- .2byte 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004
-
- .align 1
-gUnknown_0860A7FA:: @ 860A7FA
- .2byte 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff
-
- .align 1
-gUnknown_0860A808:: @ 860A808
- .2byte 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002
-
- .align 1
-gUnknown_0860A816:: @ 860A816
- .2byte 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004
-
- .align 1
-gUnknown_0860A824:: @ 860A824
- .2byte 0xfffe, 0xfffe, 0xfffe, 0xfffe, 0xfffe, 0xfffe, 0xfffe
-
- .align 2
-gUnknown_0860A834:: @ 860A834
- .4byte gUnknown_0860A4E0
- .4byte gUnknown_0860A68C
- .4byte gUnknown_0860A692
- .4byte gUnknown_0860A6A0
- .4byte gUnknown_0860A728
- .4byte gUnknown_0860A770
- .4byte gUnknown_0860A77C
- .4byte gUnknown_0860A788
- .4byte gUnknown_0860A7B0
- .4byte gUnknown_0860A7BE
- .4byte gUnknown_0860A7C8
- .4byte gUnknown_0860A7CA
- .4byte gUnknown_0860A7CC
- .4byte gUnknown_0860A7CE
- .4byte gUnknown_0860A7D0
- .4byte gUnknown_0860A7D2
- .4byte gUnknown_0860A7D4
- .4byte gUnknown_0860A7D6
- .4byte gUnknown_0860A7D8
- .4byte gUnknown_0860A7DA
- .4byte gUnknown_0860A7DA
- .4byte gUnknown_0860A7DC
- .4byte gUnknown_0860A7DE
- .4byte gUnknown_0860A7EC
- .4byte gUnknown_0860A7FA
- .4byte gUnknown_0860A808
- .4byte gUnknown_0860A816
- .4byte gUnknown_0860A824
-
- .align 1
-gUnknown_0860A8A4:: @ 860A8A4
- .2byte 0x0097, 0x00b2, 0x00bc, 0x008c, 0x00b4, 0x00b5, 0x0093, 0x006a, 0x0091, 0x005e, 0x0030, 0x002a, 0x0095, 0x001c, 0x001d, 0x0064
- .2byte 0x0060, 0xffff
-
diff --git a/data/fldeff_flash.s b/data/fldeff_flash.s
deleted file mode 100644
index 3c3071b37..000000000
--- a/data/fldeff_flash.s
+++ /dev/null
@@ -1,81 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_085B27C8:: @ 85B27C8
- .byte 0x01, 0x04, 0x01, 0x00
- .4byte sub_81375A8
-
- .byte 0x02, 0x04, 0x01, 0x00
- .4byte sub_81375A8
-
- .byte 0x03, 0x04, 0x01, 0x00
- .4byte sub_81375A8
-
- .byte 0x05, 0x04, 0x01, 0x00
- .4byte sub_81375A8
-
- .byte 0x06, 0x04, 0x01, 0x00
- .4byte sub_81375A8
-
- .byte 0x07, 0x04, 0x01, 0x00
- .4byte sub_81375A8
-
- .byte 0x08, 0x04, 0x01, 0x00
- .4byte sub_81375A8
-
- .byte 0x09, 0x04, 0x01, 0x00
- .4byte sub_81375A8
-
- .byte 0x04, 0x01, 0x00, 0x01
- .4byte sub_81373F0
-
- .byte 0x04, 0x02, 0x00, 0x01
- .4byte sub_81373F0
-
- .byte 0x04, 0x03, 0x00, 0x01
- .4byte sub_81373F0
-
- .byte 0x04, 0x05, 0x00, 0x01
- .4byte sub_81373F0
-
- .byte 0x04, 0x06, 0x00, 0x01
- .4byte sub_81373F0
-
- .byte 0x04, 0x07, 0x00, 0x01
- .4byte sub_81373F0
-
- .byte 0x04, 0x08, 0x00, 0x01
- .4byte sub_81373F0
-
- .byte 0x04, 0x09, 0x00, 0x01
- .4byte sub_81373F0
-
- .byte 0x00, 0x00, 0x00, 0x00
- .4byte NULL
-
- .align 2
-gCaveTransitionPalette_White:: @ 85B2850
- .incbin "graphics/misc/cave_transition_white.gbapal"
-
- .align 2
-gCaveTransitionPalette_Black:: @ 85B2870
- .incbin "graphics/misc/cave_transition_black.gbapal"
-
- .align 2
-gUnknown_085B2890:: @ 85B2890
- .incbin "graphics/misc/85B2890.gbapal"
-
- .align 2
-gUnknown_085B28A0:: @ 85B28A0
- .incbin "graphics/misc/85B28A0.gbapal"
-
- .align 2
-gCaveTransitionTilemap:: @ 85B28B0
- .incbin "graphics/misc/cave_transition_map.bin.lz"
-
- .align 2
-gCaveTransitionTiles:: @ 85B2A90
- .incbin "graphics/misc/cave_transition.4bpp.lz"
diff --git a/data/fossil_special_fldeff_groundshake.s b/data/fossil_special_fldeff_groundshake.s
deleted file mode 100644
index 8fa546ce8..000000000
--- a/data/fossil_special_fldeff_groundshake.s
+++ /dev/null
@@ -1,98 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_08617274:: @ 8617274
- .space 0x20
- .incbin "graphics/misc/mirage_tower.4bpp"
-
- .align 2
-gUnknown_08617B94:: @ 8617B94
- .incbin "graphics/misc/mirage_tower.bin"
-
- .align 2
-gRootFossil_Pal:: @ 8617C24
- .incbin "graphics/misc/fossil.gbapal"
-
- .align 2
-gRootFossil_Gfx:: @ 8617C44
- .incbin "graphics/misc/fossil.4bpp"
-
- .align 2
-gMirageTowerCrumbles_Gfx:: @ 8617CC4
- .incbin "graphics/misc/mirage_tower_crumbles.4bpp"
-
- .align 2
-gMirageTowerCrumbles_Palette:: @ 8617D44
- .incbin "graphics/misc/mirage_tower_crumbles.gbapal"
-
- .align 1
-gUnknown_08617D64:: @ 8617D64
- .2byte 0x0000, 0x000a, 0x0041, 0x0011, 0x0003, 0x0032, 0xfff4, 0x0000, 0x004b, 0x000a, 0x000f, 0x005a, 0x0007, 0x0008, 0x0041, 0xffee
- .2byte 0x0005, 0x004b, 0x0016, 0xfff6, 0x0037, 0xffe8, 0xfffc, 0x0041
-
- .align 2
-gUnknown_08617D94:: @ 8617D94
- obj_tiles gMirageTowerCrumbles_Gfx, 0x0080, 0x0fa0
- null_obj_tiles
-
- .align 2
-gUnknown_08617DA4:: @ 8617DA4
- .byte 0x12, 0x35, 0x51, 0x02, 0x13, 0x35, 0x51, 0x02, 0x14, 0x35, 0x51, 0x02, 0x12, 0x36, 0x51, 0x02, 0x13, 0x36, 0x51, 0x02, 0x14, 0x36, 0x51, 0x02, 0x12, 0x37, 0x51, 0x02, 0x13, 0x37, 0x51, 0x02
- .byte 0x14, 0x37, 0x51, 0x02, 0x12, 0x38, 0x51, 0x02, 0x13, 0x38, 0x51, 0x02, 0x14, 0x38, 0x51, 0x02, 0x12, 0x39, 0x59, 0x02, 0x13, 0x39, 0x59, 0x02, 0x14, 0x39, 0x59, 0x02, 0x12, 0x3a, 0x21, 0x01
- .byte 0x13, 0x3a, 0x21, 0x01, 0x14, 0x3a, 0x21, 0x01
-
- .align 2
-gSpriteAnim_8617DEC:: @ 8617DEC
- .2byte 0x0000, 0x0001, 0xffff, 0x0000
-
- .align 2
-gOamData_8617DF4:: @ 8617DF4
- .2byte 0x0000, 0x4000, 0x3000, 0x0000
-
- .align 2
-gSpriteAnimTable_8617DFC:: @ 8617DFC
- .4byte gSpriteAnim_8617DEC
-
- .align 2
-gUnknown_08617E00:: @ 8617E00
- spr_template 0xffff, 0xffff, gOamData_8617DF4, gSpriteAnimTable_8617DFC, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gUnknown_08617E18:: @ 8617E18
- .byte 0x3b, 0x43, 0x61, 0x00, 0x0f, 0x05, 0xff, 0x9b
-
- .align 2
-gSpriteAnim_8617E20:: @ 8617E20
- .2byte 0x0000, 0x000c, 0xfffe, 0x0000
-
- .align 2
-gSpriteAnimTable_8617E28:: @ 8617E28
- .4byte gSpriteAnim_8617E20
-
- .align 2
-gUnknown_08617E2C:: @ 8617E2C
- .2byte 0x0000, 0x0000, 0x0000, 0x0000
-
- .align 2
-gUnknown_08617E34:: @ 8617E34
- spr_template 0x0fa0, 0xffff, gUnknown_08617E2C, gSpriteAnimTable_8617E28, NULL, gDummySpriteAffineAnimTable, sub_81BEAD8
-
- .align 2
-gSpriteAnim_8617E4C:: @ 8617E4C
- .2byte 0x0000, 0x000c, 0xfffe, 0x0000
-
- .align 2
-gSpriteAnim_8617E54:: @ 8617E54
- .4byte gSpriteAnim_8617E4C
-
- .align 2
-gOamData_8617E58:: @ 8617E58
- .2byte 0x0000, 0x4000, 0x0000, 0x0000
-
- .align 2
-gUnknown_08617E60:: @ 8617E60
- spr_template 0x0fa0, 0xffff, gOamData_8617E58, gSpriteAnim_8617E54, NULL, gDummySpriteAffineAnimTable, sub_81BEAD8
-
diff --git a/include/battle.h b/include/battle.h
index 01439f3f6..ae8a1c98a 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -353,6 +353,91 @@ struct BattleResults
u8 catchAttempts[11]; // 0x36
};
+struct BattleTv_Side
+{
+ u32 spikesMonId:3;
+ u32 reflectMonId:3;
+ u32 lightScreenMonId:3;
+ u32 safeguardMonId:3;
+ u32 mistMonId:3;
+ u32 futureSightMonId:3;
+ u32 doomDesireMonId:3;
+ u32 perishSongMonId:3;
+ u32 wishMonId:3;
+ u32 grudgeMonId:3;
+ u32 usedMoveSlot:2;
+ u32 spikesMoveSlot:2;
+ u32 reflectMoveSlot:2;
+ u32 lightScreenMoveSlot:2;
+ u32 safeguardMoveSlot:2;
+ u32 mistMoveSlot:2;
+ u32 futureSightMoveSlot:2;
+ u32 doomDesireMoveSlot:2;
+ u32 perishSongMoveSlot:2;
+ u32 wishMoveSlot:2;
+ u32 grudgeMoveSlot:2;
+ u32 destinyBondMonId:3;
+ u32 destinyBondMoveSlot:2;
+ u32 faintCause:4;
+ u32 faintCauseMonId:3;
+ u32 explosion:1;
+ u32 explosionMoveSlot:2;
+ u32 explosionMonId:3;
+ u32 perishSong:1;
+};
+
+struct BattleTv_Position
+{
+ u32 curseMonId:3;
+ u32 leechSeedMonId:3;
+ u32 nightmareMonId:3;
+ u32 wrapMonId:3;
+ u32 attractMonId:3;
+ u32 confusionMonId:3;
+ u32 curseMoveSlot:2;
+ u32 leechSeedMoveSlot:2;
+ u32 nightmareMoveSlot:2;
+ u32 wrapMoveSlot:2;
+ u32 attractMoveSlot:2;
+ u32 confusionMoveSlot:2;
+ u32 waterSportMoveSlot:2;
+ u32 waterSportMonId:3;
+ u32 mudSportMonId:3;
+ u32 mudSportMoveSlot:2;
+ u32 ingrainMonId:3;
+ u32 ingrainMoveSlot:2;
+ u32 attackedByMonId:3;
+ u32 attackedByMoveSlot:2;
+};
+
+struct BattleTv_Mon
+{
+ u32 psnMonId:3;
+ u32 badPsnMonId:3;
+ u32 brnMonId:3;
+ u32 prlzMonId:3;
+ u32 slpMonId:3;
+ u32 frzMonId:3;
+ u32 psnMoveSlot:2;
+ u32 badPsnMoveSlot:2;
+ u32 brnMoveSlot:2;
+ u32 prlzMoveSlot:2;
+ u32 slpMoveSlot:2;
+ u32 frzMoveSlot:2;
+};
+
+struct BattleTv
+{
+ struct BattleTv_Mon mon[2][6]; // [side][partyId]
+ struct BattleTv_Position pos[2][2]; // [side][flank]
+ struct BattleTv_Side side[2]; // [side]
+};
+
+struct BattleTvMovePoints
+{
+ s16 points[2][PARTY_SIZE * 4];
+};
+
struct BattleStruct
{
u8 turnEffectsTracker;
@@ -432,7 +517,7 @@ struct BattleStruct
u8 field_B0;
u8 hpScale;
u8 synchronizeMoveEffect;
- u8 field_B3;
+ bool8 anyMonHasTransformed;
void (*savedCallback)(void);
u16 usedHeldItems[MAX_BATTLERS_COUNT];
u8 chosenItem[4]; // why is this an u8?
@@ -457,9 +542,9 @@ struct BattleStruct
u8 wishPerishSongBattlerId;
bool8 overworldWeatherDone;
u8 atkCancellerTracker;
- u8 field_1A4[96];
- u8 field_204[104];
- u8 field_26C[40];
+ struct BattleTvMovePoints tvMovePoints;
+ struct BattleTv tv;
+ u8 notSureWhatFieldLol[0x28];
u8 AI_monToSwitchIntoId[MAX_BATTLERS_COUNT];
u8 field_298[8];
u8 field_2A0;
diff --git a/include/battle_link_817C95C.h b/include/battle_link_817C95C.h
deleted file mode 100644
index cb2cb0b27..000000000
--- a/include/battle_link_817C95C.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef GUARD_BATTLE_LINK_817C95C_H
-#define GUARD_BATTLE_LINK_817C95C_H
-
-void sub_817C95C(u16 stringId);
-void sub_817E0FC(u16 move, u16 weatherFlags, struct DisableStruct *disableStructPtr);
-void sub_817E32C(u8 animationId);
-void sub_817E3F4(void);
-void sub_817F2A8(void);
-u8 GetBattlerMoveSlotId(u8 bank, u16 move);
-
-#endif // GUARD_BATTLE_LINK_817C95C_H
diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h
index 6c84d1f0f..142ac1f7b 100644
--- a/include/battle_script_commands.h
+++ b/include/battle_script_commands.h
@@ -4,16 +4,16 @@
#define WINDOW_CLEAR 0x1
#define WINDOW_x80 0x80
-void AI_CalcDmg(u8 bankAtk, u8 bankDef);
-u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef);
+void AI_CalcDmg(u8 battlerIdAtk, u8 battlerIdDef);
+u8 TypeCalc(u16 move, u8 battlerIdAtk, u8 battlerIdDef);
u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility);
-u8 GetBattlerTurnOrderNum(u8 bank);
+u8 GetBattlerTurnOrderNum(u8 battlerId);
void SetMoveEffect(bool8 primary, u8 certain);
void BattleDestroyYesNoCursorAt(u8 cursorPosition);
void BattleCreateYesNoCursorAt(u8 cursorPosition);
void BufferMoveToLearnIntoBattleTextBuff2(void);
void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags);
-bool8 UproarWakeUpCheck(u8 bank);
+bool8 UproarWakeUpCheck(u8 battlerId);
extern void (* const gBattleScriptingCommandsTable[])(void);
extern const u8 gUnknown_0831C494[][4];
diff --git a/include/battle_tv.h b/include/battle_tv.h
new file mode 100644
index 000000000..72466d73b
--- /dev/null
+++ b/include/battle_tv.h
@@ -0,0 +1,11 @@
+#ifndef GUARD_BATTLE_TV_H
+#define GUARD_BATTLE_TV_H
+
+void BattleTv_SetDataBasedOnString(u16 stringId);
+void BattleTv_SetDataBasedOnMove(u16 move, u16 weatherFlags, struct DisableStruct *disableStructPtr);
+void BattleTv_SetDataBasedOnAnimation(u8 animationId);
+void TryPutLinkBattleTvShowOnAir(void);
+void BattleTv_ClearExplosionFaintCause(void);
+u8 GetBattlerMoveSlotId(u8 battlerId, u16 moveId);
+
+#endif // GUARD_BATTLE_TV_H
diff --git a/include/braille_puzzles.h b/include/braille_puzzles.h
new file mode 100644
index 000000000..780abeeba
--- /dev/null
+++ b/include/braille_puzzles.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_BRAILLE_PUZZLES_H
+#define GUARD_BRAILLE_PUZZLES_H
+
+bool8 ShouldDoBrailleFlyEffect(void);
+void sub_8179918(void);
+
+#endif // GUARD_BRAILLE_PUZZLES_H
diff --git a/include/event_scripts.h b/include/event_scripts.h
index a835782ed..4c5dfd544 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -22,6 +22,7 @@ extern const u8 EventScript_2713D1[];
extern const u8 EventScript_2766A2[];
extern const u8 EventScript_2766A6[];
+
extern const u8 gTVBravoTrainerText00[];
extern const u8 gTVBravoTrainerText01[];
extern const u8 gTVBravoTrainerText02[];
@@ -381,6 +382,9 @@ extern const u8 SecretBase_RedCave1_Text_2751E1[];
extern const u8 SecretBase_RedCave1_Text_2754F6[];
extern const u8 SecretBase_RedCave1_Text_2758CC[];
+//field effects
extern const u8 FieryPath_EventScript_2908FD[];
extern const u8 EventScript_290CAE[];
+extern const u8 EventScript_2926F8[];
+
#endif //GUARD_EVENT_SCRIPTS_H
diff --git a/include/fldeff_groundshake.h b/include/fldeff_groundshake.h
deleted file mode 100644
index 685a6d27c..000000000
--- a/include/fldeff_groundshake.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef GUARD_FLDEFF_GROUNDSHAKE_H
-#define GUARD_FLDEFF_GROUNDSHAKE_H
-
-void sub_81BE6B8(void);
-void sub_81BE72C(void);
-
-#endif // GUARD_FLDEFF_GROUNDSHAKE_H
diff --git a/include/global.tv.h b/include/global.tv.h
index 5f65aa8e0..81f181cf3 100644
--- a/include/global.tv.h
+++ b/include/global.tv.h
@@ -188,11 +188,11 @@ typedef union // size = 0x24
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
- /*0x02*/ u16 species;
+ /*0x02*/ u16 speciesOpponent;
/*0x04*/ u8 playerName[8];
/*0x0C*/ u8 linkOpponentName[8];
/*0x14*/ u16 move;
- /*0x16*/ u16 species2;
+ /*0x16*/ u16 speciesPlayer;
/*0x18*/ u8 battleType;
/*0x19*/ u8 language;
/*0x1A*/ u8 linkOpponentLanguage;
diff --git a/include/roulette_util.h b/include/roulette_util.h
new file mode 100644
index 000000000..f59c4e44c
--- /dev/null
+++ b/include/roulette_util.h
@@ -0,0 +1,17 @@
+#ifndef GUARD_ROULETTE_UTIL_H
+#define GUARD_ROULETTE_UTIL_H
+
+// structures
+struct InnerStruct203CF18
+{
+ u8 filler[0xC4];
+};
+
+void sub_8151B68(struct InnerStruct203CF18 *, const u8*);
+void sub_8151B3C(struct InnerStruct203CF18 *);
+void sub_8151CA8(struct InnerStruct203CF18 *, u8, u8);
+void sub_8151C50(struct InnerStruct203CF18 *, u8, u8);
+void sub_8151D28(struct InnerStruct203CF18 *, u8, u8);
+void sub_8151E50(struct InnerStruct203CF18 *);
+
+#endif // GUARD_ROULETTE_UTIL_H
diff --git a/include/tv.h b/include/tv.h
index eca11385e..19c900ba8 100644
--- a/include/tv.h
+++ b/include/tv.h
@@ -4,17 +4,46 @@
extern u8 *const gTVStringVarPtrs[3];
void ClearTVShowData(void);
-void PutPokemonTodayCaughtOnAir(void);
+void sub_80EE184(void);
+void sub_80EE35C(u16 foeSpecies, u16 species, u8 moveIdx, const u16 *movePtr, u16 betterMove);
+void sub_80EE8C8(u16 winStreak, u8 facility);
+void DoTVShow(void);
+void DoTVShowInSearchOfTrainers(void);
+void sub_80EDCE8(void);
+void sub_80EE2CC(void);
+void sub_80EE72C(void);
+void sub_80EED10(void);
+void sub_80EED34(void);
+void sub_80EED60(u16 delta);
+void sub_80F01B8(void);
+void sub_80F01E8(void *src, u32 size, u8 masterIdx);
+void sub_80EE4DC(struct Pokemon *pokemon, u8 ribbonMonDataIdx);
u32 GetPlayerIDAsU32(void);
bool8 GetPriceReduction(u8 newsKind);
+void sub_80F14F8(TVShow *shows);
+size_t CountDigits(int value);
u8 GetRibbonCount(struct Pokemon *pokemon);
-void TV_PutSecretBaseVisitOnTheAir(void);
-void sub_80EE184(void);
+void sub_80EDE70(u16 nCoinsSpent);
+void sub_80EDE84(u16 nCoinsSpent);
+void sub_80EDD78(u16 nCoinsPaidOut);
void sub_80EEA70(void);
-void sub_80F14F8(TVShow *shows);
-size_t sub_80EF370(int value);
-bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 unused, u8 sheen, u8 language);
+void sub_80EDB44(void);
+void sub_80EDC60(const u16 *words);
+void sub_80EDA80(void);
+void sub_80F0C7C(void *src, u32 size, u8 masterIdx);
+void sub_80F0BB8(void);
+void sub_80ED950(bool8 flag);
+void sub_80EEC80(void);
+void sub_80EECA4(void);
+void sub_80EECC8(void);
+void sub_80EECEC(void);
+void sub_80F1208(TVShow *shows);
+void sub_80EE44C(u8 nMonsCaught, u8 nPkblkUsed);
void SetPokemonAnglerSpecies(u16 species);
void UpdateTVShowsPerDay(u16 days);
+void PutPokemonTodayCaughtOnAir(void);
+void TV_PutSecretBaseVisitOnTheAir(void);
+bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 unused, u8 sheen, u8 language);
+void PutBattleUpdateOnTheAir(u8 opponentLinkPlayerId, u16 move, u16 speciesPlayer, u16 speciesOpponent);
#endif //GUARD_TV_H
diff --git a/ld_script.txt b/ld_script.txt
index 6db5c0cbc..7dcf21569 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -180,7 +180,7 @@ SECTIONS {
src/wallclock.o(.text);
asm/rom6.o(.text);
src/pokeblock.o(.text);
- asm/fldeff_flash.o(.text);
+ src/fldeff_flash.o(.text);
asm/post_battle_event_funcs.o(.text);
src/time_events.o(.text);
src/birch_pc.o(.text);
@@ -236,7 +236,7 @@ SECTIONS {
src/evolution_graphics.o(.text);
src/bard_music.o(.text);
src/fldeff_teleport.o(.text);
- asm/battle_link_817C95C.o(.text);
+ src/battle_tv.o(.text);
src/pokemon_animation.o(.text);
src/recorded_battle.o(.text);
src/battle_controller_recorded_opponent.o(.text);
@@ -258,7 +258,8 @@ SECTIONS {
src/multiboot.o(.text);
src/unk_81BAD84.o(.text);
src/battle_controller_player_partner.o(.text);
- asm/fldeff_groundshake.o(.text);
+ src/fldeff_groundshake.o(.text);
+ src/fossil_specials.o(.text);
asm/fossil_specials.o(.text);
src/berry_fix_program.o(.text);
src/pokemon_summary_screen.o(.text);
@@ -468,7 +469,7 @@ SECTIONS {
data/starter_choose.o(.rodata);
src/wallclock.o(.rodata);
src/pokeblock.o(.rodata);
- data/fldeff_flash.o(.rodata);
+ src/fldeff_flash.o(.rodata);
src/time_events.o(.rodata);
data/field_specials.o(.rodata);
data/battle_records.o(.rodata);
@@ -510,7 +511,7 @@ SECTIONS {
src/intro_credits_graphics.o(.rodata);
src/evolution_graphics.o(.rodata);
src/bard_music.o(.rodata);
- data/battle_link_817C95C.o(.rodata);
+ src/battle_tv.o(.rodata);
src/pokemon_animation.o(.rodata);
src/battle_controller_recorded_opponent.o(.rodata);
src/battle_controller_recorded_player.o(.rodata);
@@ -529,7 +530,8 @@ SECTIONS {
src/unk_text_util_2.o(.rodata);
src/unk_81BAD84.o(.rodata);
src/battle_controller_player_partner.o(.rodata);
- data/fossil_special_fldeff_groundshake.o(.rodata);
+ src/fossil_specials.o(.rodata);
+ src/fldeff_groundshake.o(.rodata);
src/berry_fix_program.o(.rodata);
data/pokemon_summary_screen.o(.rodata);
data/pokenav.o(.rodata);
diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c
index 2420e11b2..a4aac55e2 100644
--- a/src/battle_controller_link_opponent.c
+++ b/src/battle_controller_link_opponent.c
@@ -6,7 +6,7 @@
#include "battle_anim.h"
#include "constants/battle_anim.h"
#include "battle_ai_script_commands.h"
-#include "battle_link_817C95C.h"
+#include "battle_tv.h"
#include "pokemon.h"
#include "link.h"
#include "util.h"
@@ -1413,7 +1413,7 @@ static void LinkOpponentHandleMoveAnimation(void)
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
gBattlerControllerFuncs[gActiveBattler] = LinkOpponentDoMoveAnimation;
- sub_817E0FC(move, gWeatherMoveAnim, gAnimDisableStructPtr);
+ BattleTv_SetDataBasedOnMove(move, gWeatherMoveAnim, gAnimDisableStructPtr);
}
}
}
@@ -1477,7 +1477,7 @@ static void LinkOpponentHandlePrintString(void)
BufferStringBattle(*stringId);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
- sub_817C95C(*stringId);
+ BattleTv_SetDataBasedOnString(*stringId);
}
static void LinkOpponentHandlePrintSelectionString(void)
@@ -1830,7 +1830,7 @@ static void LinkOpponentHandleBattleAnimation(void)
else
gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation;
- sub_817E32C(animationId);
+ BattleTv_SetDataBasedOnAnimation(animationId);
}
}
diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c
index 598452c84..d742d5df2 100644
--- a/src/battle_controller_link_partner.c
+++ b/src/battle_controller_link_partner.c
@@ -6,7 +6,7 @@
#include "battle_anim.h"
#include "constants/battle_anim.h"
#include "battle_ai_script_commands.h"
-#include "battle_link_817C95C.h"
+#include "battle_tv.h"
#include "pokemon.h"
#include "link.h"
#include "util.h"
@@ -1237,7 +1237,7 @@ static void LinkPartnerHandleMoveAnimation(void)
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
gBattlerControllerFuncs[gActiveBattler] = LinkPartnerDoMoveAnimation;
- sub_817E0FC(move, gWeatherMoveAnim, gAnimDisableStructPtr);
+ BattleTv_SetDataBasedOnMove(move, gWeatherMoveAnim, gAnimDisableStructPtr);
}
}
}
@@ -1301,7 +1301,7 @@ static void LinkPartnerHandlePrintString(void)
BufferStringBattle(*stringId);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
- sub_817C95C(*stringId);
+ BattleTv_SetDataBasedOnString(*stringId);
}
static void LinkPartnerHandlePrintSelectionString(void)
@@ -1665,7 +1665,7 @@ static void LinkPartnerHandleBattleAnimation(void)
else
gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation;
- sub_817E32C(animationId);
+ BattleTv_SetDataBasedOnAnimation(animationId);
}
}
diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c
index 27036c4f5..64cf16b86 100644
--- a/src/battle_controller_opponent.c
+++ b/src/battle_controller_opponent.c
@@ -5,7 +5,7 @@
#include "battle_interface.h"
#include "battle_anim.h"
#include "constants/battle_anim.h"
-#include "battle_link_817C95C.h"
+#include "battle_tv.h"
#include "battle_ai_script_commands.h"
#include "pokemon.h"
#include "link.h"
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index 527e564de..e0694029a 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -5,7 +5,7 @@
#include "battle_interface.h"
#include "battle_anim.h"
#include "constants/battle_anim.h"
-#include "battle_link_817C95C.h"
+#include "battle_tv.h"
#include "pokemon.h"
#include "link.h"
#include "util.h"
@@ -871,7 +871,7 @@ static void sub_80586F8(void)
gMain.callback1 = gPreBattleCallback1;
SetMainCallback2(sub_8038D64);
if (gBattleOutcome == B_OUTCOME_WON)
- sub_817E3F4();
+ TryPutLinkBattleTvShowOnAir();
FreeAllWindowBuffers();
}
}
@@ -884,7 +884,7 @@ static void sub_80586F8(void)
gMain.callback1 = gPreBattleCallback1;
SetMainCallback2(sub_8038D64);
if (gBattleOutcome == B_OUTCOME_WON)
- sub_817E3F4();
+ TryPutLinkBattleTvShowOnAir();
FreeAllWindowBuffers();
}
}
@@ -2474,7 +2474,7 @@ static void PlayerHandleMoveAnimation(void)
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
gBattlerControllerFuncs[gActiveBattler] = PlayerDoMoveAnimation;
- sub_817E0FC(move, gWeatherMoveAnim, gAnimDisableStructPtr);
+ BattleTv_SetDataBasedOnMove(move, gWeatherMoveAnim, gAnimDisableStructPtr);
}
}
}
@@ -2538,7 +2538,7 @@ static void PlayerHandlePrintString(void)
BufferStringBattle(*stringId);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter2;
- sub_817C95C(*stringId);
+ BattleTv_SetDataBasedOnString(*stringId);
sub_81A57E4(gActiveBattler, *stringId);
}
@@ -2565,7 +2565,7 @@ static void PlayerHandleChooseAction(void)
s32 i;
gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3;
- sub_817F2A8();
+ BattleTv_ClearExplosionFaintCause();
BattleHandleAddTextPrinter(gText_BattleMenu, 2);
for (i = 0; i < 4; i++)
@@ -3059,7 +3059,7 @@ static void PlayerHandleBattleAnimation(void)
else
gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation;
- sub_817E32C(animationId);
+ BattleTv_SetDataBasedOnAnimation(animationId);
}
}
diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c
index 3df1c5395..4d1ccbaca 100644
--- a/src/battle_controller_recorded_opponent.c
+++ b/src/battle_controller_recorded_opponent.c
@@ -6,7 +6,7 @@
#include "battle_anim.h"
#include "constants/battle_anim.h"
#include "battle_ai_script_commands.h"
-#include "battle_link_817C95C.h"
+#include "battle_tv.h"
#include "recorded_battle.h"
#include "pokemon.h"
#include "link.h"
diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c
index c8c8f2d56..ca7b2fd44 100644
--- a/src/battle_controller_wally.c
+++ b/src/battle_controller_wally.c
@@ -5,7 +5,7 @@
#include "battle_interface.h"
#include "battle_anim.h"
#include "constants/battle_anim.h"
-#include "battle_link_817C95C.h"
+#include "battle_tv.h"
#include "pokemon.h"
#include "link.h"
#include "util.h"
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
index 30411fbb9..2b918d018 100644
--- a/src/battle_controllers.c
+++ b/src/battle_controllers.c
@@ -77,7 +77,6 @@ void SetUpBattleVarsAndBirchZigzagoon(void)
void sub_8032768(void)
{
s32 i;
- u8 *data;
if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
sub_8184DA4(1);
@@ -100,11 +99,11 @@ void sub_8032768(void)
sub_81B8D64(i, 0);
}
- for (i = 0; i < sizeof(gBattleStruct->field_1A4); i++)
- *(gBattleStruct->field_1A4 + i) = 0;
+ for (i = 0; i < sizeof(gBattleStruct->tvMovePoints); i++)
+ *((u8*)(&gBattleStruct->tvMovePoints) + i) = 0;
- for (i = 0; i < sizeof(gBattleStruct->field_204); i++)
- *(gBattleStruct->field_204 + i) = 0;
+ for (i = 0; i < sizeof(gBattleStruct->tv); i++)
+ *((u8*)(&gBattleStruct->tv) + i) = 0;
}
static void InitSinglePlayerBtlControllers(void)
diff --git a/src/battle_message.c b/src/battle_message.c
index 9ed7b4181..1f338db92 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -514,375 +514,375 @@ static const u8 sText_Trainer2LoseText[];
const u8 * const gBattleStringsTable[BATTLESTRINGS_COUNT] =
{
- sText_Trainer1LoseText,
- sText_PkmnGainedEXP,
- sText_PkmnGrewToLv,
- sText_PkmnLearnedMove,
- sText_TryToLearnMove1,
- sText_TryToLearnMove2,
- sText_TryToLearnMove3,
- sText_PkmnForgotMove,
- sText_StopLearningMove,
- sText_DidNotLearnMove,
- sText_PkmnLearnedMove2,
- sText_AttackMissed,
- sText_PkmnProtectedItself,
- sText_StatsWontIncrease2,
- sText_AvoidedDamage,
- sText_ItDoesntAffect,
- sText_AttackerFainted,
- sText_TargetFainted,
- sText_PlayerGotMoney,
- sText_PlayerWhiteout,
- sText_PlayerWhiteout2,
- sText_PreventsEscape,
- sText_HitXTimes,
- sText_PkmnFellAsleep,
- sText_PkmnMadeSleep,
- sText_PkmnAlreadyAsleep,
- sText_PkmnAlreadyAsleep2,
- sText_PkmnWasntAffected,
- sText_PkmnWasPoisoned,
- sText_PkmnPoisonedBy,
- sText_PkmnHurtByPoison,
- sText_PkmnAlreadyPoisoned,
- sText_PkmnBadlyPoisoned,
- sText_PkmnEnergyDrained,
- sText_PkmnWasBurned,
- sText_PkmnBurnedBy,
- sText_PkmnHurtByBurn,
- sText_PkmnWasFrozen,
- sText_PkmnFrozenBy,
- sText_PkmnIsFrozen,
- sText_PkmnWasDefrosted,
- sText_PkmnWasDefrosted2,
- sText_PkmnWasDefrostedBy,
- sText_PkmnWasParalyzed,
- sText_PkmnWasParalyzedBy,
- sText_PkmnIsParalyzed,
- sText_PkmnIsAlreadyParalyzed,
- sText_PkmnHealedParalysis,
- sText_PkmnDreamEaten,
- sText_StatsWontIncrease,
- sText_StatsWontDecrease,
- sText_TeamStoppedWorking,
- sText_FoeStoppedWorking,
- sText_PkmnIsConfused,
- sText_PkmnHealedConfusion,
- sText_PkmnWasConfused,
- sText_PkmnAlreadyConfused,
- sText_PkmnFellInLove,
- sText_PkmnInLove,
- sText_PkmnImmobilizedByLove,
- sText_PkmnBlownAway,
- sText_PkmnChangedType,
- sText_PkmnFlinched,
- sText_PkmnRegainedHealth,
- sText_PkmnHPFull,
- sText_PkmnRaisedSpDef,
- sText_PkmnRaisedDef,
- sText_PkmnCoveredByVeil,
- sText_PkmnUsedSafeguard,
- sText_PkmnSafeguardExpired,
- sText_PkmnWentToSleep,
- sText_PkmnSleptHealthy,
- sText_PkmnWhippedWhirlwind,
- sText_PkmnTookSunlight,
- sText_PkmnLoweredHead,
- sText_PkmnIsGlowing,
- sText_PkmnFlewHigh,
- sText_PkmnDugHole,
- sText_PkmnSqueezedByBind,
- sText_PkmnTrappedInVortex,
- sText_PkmnWrappedBy,
- sText_PkmnClamped,
- sText_PkmnHurtBy,
- sText_PkmnFreedFrom,
- sText_PkmnCrashed,
- gText_PkmnShroudedInMist,
- sText_PkmnProtectedByMist,
- gText_PkmnGettingPumped,
- sText_PkmnHitWithRecoil,
- sText_PkmnProtectedItself2,
- sText_PkmnBuffetedBySandstorm,
- sText_PkmnPeltedByHail,
- sText_PkmnSeeded,
- sText_PkmnEvadedAttack,
- sText_PkmnSappedByLeechSeed,
- sText_PkmnFastAsleep,
- sText_PkmnWokeUp,
- sText_PkmnUproarKeptAwake,
- sText_PkmnWokeUpInUproar,
- sText_PkmnCausedUproar,
- sText_PkmnMakingUproar,
- sText_PkmnCalmedDown,
- sText_PkmnCantSleepInUproar,
- sText_PkmnStockpiled,
- sText_PkmnCantStockpile,
- sText_PkmnCantSleepInUproar2,
- sText_UproarKeptPkmnAwake,
- sText_PkmnStayedAwakeUsing,
- sText_PkmnStoringEnergy,
- sText_PkmnUnleashedEnergy,
- sText_PkmnFatigueConfusion,
- sText_PkmnPickedUpItem,
- sText_PkmnUnaffected,
- sText_PkmnTransformedInto,
- sText_PkmnMadeSubstitute,
- sText_PkmnHasSubstitute,
- sText_SubstituteDamaged,
- sText_PkmnSubstituteFaded,
- sText_PkmnMustRecharge,
- sText_PkmnRageBuilding,
- sText_PkmnMoveWasDisabled,
- sText_PkmnMoveIsDisabled,
- sText_PkmnMoveDisabledNoMore,
- sText_PkmnGotEncore,
- sText_PkmnEncoreEnded,
- sText_PkmnTookAim,
- sText_PkmnSketchedMove,
- sText_PkmnTryingToTakeFoe,
- sText_PkmnTookFoe,
- sText_PkmnReducedPP,
- sText_PkmnStoleItem,
- sText_TargetCantEscapeNow,
- sText_PkmnFellIntoNightmare,
- sText_PkmnLockedInNightmare,
- sText_PkmnLaidCurse,
- sText_PkmnAfflictedByCurse,
- sText_SpikesScattered,
- sText_PkmnHurtBySpikes,
- sText_PkmnIdentified,
- sText_PkmnPerishCountFell,
- sText_PkmnBracedItself,
- sText_PkmnEnduredHit,
- sText_MagnitudeStrength,
- sText_PkmnCutHPMaxedAttack,
- sText_PkmnCopiedStatChanges,
- sText_PkmnGotFree,
- sText_PkmnShedLeechSeed,
- sText_PkmnBlewAwaySpikes,
- sText_PkmnFledFromBattle,
- sText_PkmnForesawAttack,
- sText_PkmnTookAttack,
- sText_PkmnAttack,
- sText_PkmnCenterAttention,
- sText_PkmnChargingPower,
- sText_NaturePowerTurnedInto,
- sText_PkmnStatusNormal,
- sText_PkmnHasNoMovesLeft,
- sText_PkmnSubjectedToTorment,
- sText_PkmnCantUseMoveTorment,
- sText_PkmnTighteningFocus,
- sText_PkmnFellForTaunt,
- sText_PkmnCantUseMoveTaunt,
- sText_PkmnReadyToHelp,
- sText_PkmnSwitchedItems,
- sText_PkmnCopiedFoe,
- sText_PkmnMadeWish,
- sText_PkmnWishCameTrue,
- sText_PkmnPlantedRoots,
- sText_PkmnAbsorbedNutrients,
- sText_PkmnAnchoredItself,
- sText_PkmnWasMadeDrowsy,
- sText_PkmnKnockedOff,
- sText_PkmnSwappedAbilities,
- sText_PkmnSealedOpponentMove,
- sText_PkmnCantUseMoveSealed,
- sText_PkmnWantsGrudge,
- sText_PkmnLostPPGrudge,
- sText_PkmnShroudedItself,
- sText_PkmnMoveBounced,
- sText_PkmnWaitsForTarget,
- sText_PkmnSnatchedMove,
- sText_PkmnMadeItRain,
- sText_PkmnRaisedSpeed,
- sText_PkmnProtectedBy,
- sText_PkmnPreventsUsage,
- sText_PkmnRestoredHPUsing,
- sText_PkmnChangedTypeWith,
- sText_PkmnPreventsParalysisWith,
- sText_PkmnPreventsRomanceWith,
- sText_PkmnPreventsPoisoningWith,
- sText_PkmnPreventsConfusionWith,
- sText_PkmnRaisedFirePowerWith,
- sText_PkmnAnchorsItselfWith,
- sText_PkmnCutsAttackWith,
- sText_PkmnPreventsStatLossWith,
- sText_PkmnHurtsWith,
- sText_PkmnTraced,
- sText_StatSharply,
- gText_StatRose,
- sText_StatHarshly,
- sText_StatFell,
- sText_PkmnsStatChanged,
- gText_PkmnsStatChanged2,
- sText_PkmnsStatChanged3,
- sText_PkmnsStatChanged4,
- sText_CriticalHit,
- sText_OneHitKO,
- sText_123Poof,
- sText_AndEllipsis,
- sText_NotVeryEffective,
- sText_SuperEffective,
- sText_GotAwaySafely,
- sText_WildPkmnFled,
- sText_NoRunningFromTrainers,
- sText_CantEscape,
- sText_DontLeaveBirch,
- sText_ButNothingHappened,
- sText_ButItFailed,
- sText_ItHurtConfusion,
- sText_MirrorMoveFailed,
- sText_StartedToRain,
- sText_DownpourStarted,
- sText_RainContinues,
- sText_DownpourContinues,
- sText_RainStopped,
- sText_SandstormBrewed,
- sText_SandstormRages,
- sText_SandstormSubsided,
- sText_SunlightGotBright,
- sText_SunlightStrong,
- sText_SunlightFaded,
- sText_StartedHail,
- sText_HailContinues,
- sText_HailStopped,
- sText_FailedToSpitUp,
- sText_FailedToSwallow,
- sText_WindBecameHeatWave,
- sText_StatChangesGone,
- sText_CoinsScattered,
- sText_TooWeakForSubstitute,
- sText_SharedPain,
- sText_BellChimed,
- sText_FaintInThree,
- sText_NoPPLeft,
- sText_ButNoPPLeft,
- sText_PlayerUsedItem,
- sText_WallyUsedItem,
- sText_TrainerBlockedBall,
- sText_DontBeAThief,
- sText_ItDodgedBall,
- sText_YouMissedPkmn,
- sText_PkmnBrokeFree,
- sText_ItAppearedCaught,
- sText_AarghAlmostHadIt,
- sText_ShootSoClose,
- sText_GotchaPkmnCaught,
- sText_GotchaPkmnCaught2,
- sText_GiveNicknameCaptured,
- sText_PkmnSentToPC,
- sText_PkmnDataAddedToDex,
- sText_ItIsRaining,
- sText_SandstormIsRaging,
- sText_CantEscape2,
- sText_PkmnIgnoresAsleep,
- sText_PkmnIgnoredOrders,
- sText_PkmnBeganToNap,
- sText_PkmnLoafing,
- sText_PkmnWontObey,
- sText_PkmnTurnedAway,
- sText_PkmnPretendNotNotice,
- sText_EnemyAboutToSwitchPkmn,
- sText_CreptCloser,
- sText_CantGetCloser,
- sText_PkmnWatchingCarefully,
- sText_PkmnCuriousAboutX,
- sText_PkmnEnthralledByX,
- sText_PkmnIgnoredX,
- sText_ThrewPokeblockAtPkmn,
- sText_OutOfSafariBalls,
- sText_PkmnsItemCuredParalysis,
- sText_PkmnsItemCuredPoison,
- sText_PkmnsItemHealedBurn,
- sText_PkmnsItemDefrostedIt,
- sText_PkmnsItemWokeIt,
- sText_PkmnsItemSnappedOut,
- sText_PkmnsItemCuredProblem,
- sText_PkmnsItemRestoredHealth,
- sText_PkmnsItemRestoredPP,
- sText_PkmnsItemRestoredStatus,
- sText_PkmnsItemRestoredHPALittle,
- sText_ItemAllowsOnlyYMove,
- sText_PkmnHungOnWithX,
- gText_EmptyString3,
- sText_PkmnsXPreventsBurns,
- sText_PkmnsXBlocksY,
- sText_PkmnsXRestoredHPALittle2,
- sText_PkmnsXWhippedUpSandstorm,
- sText_PkmnsXPreventsYLoss,
- sText_PkmnsXInfatuatedY,
- sText_PkmnsXMadeYIneffective,
- sText_PkmnsXCuredYProblem,
- sText_ItSuckedLiquidOoze,
- sText_PkmnTransformed,
- sText_ElectricityWeakened,
- sText_FireWeakened,
- sText_PkmnHidUnderwater,
- sText_PkmnSprangUp,
- sText_HMMovesCantBeForgotten,
- sText_XFoundOneY,
- sText_PlayerDefeatedLinkTrainerTrainer1,
- sText_SoothingAroma,
- sText_ItemsCantBeUsedNow,
- sText_ForXCommaYZ,
- sText_UsingXTheYOfZN,
- sText_PkmnUsedXToGetPumped,
- sText_PkmnsXMadeYUseless,
- sText_PkmnTrappedBySandTomb,
- sText_EmptyString4,
- sText_ABoosted,
- sText_PkmnsXIntensifiedSun,
- sText_PkmnMakesGroundMiss,
- sText_YouThrowABallNowRight,
- sText_PkmnsXTookAttack,
- sText_PkmnChoseXAsDestiny,
- sText_PkmnLostFocus,
- sText_UseNextPkmn,
- sText_PkmnFledUsingIts,
- sText_PkmnFledUsing,
- sText_PkmnWasDraggedOut,
- sText_PreventedFromWorking,
- sText_PkmnsItemNormalizedStatus,
- sText_Trainer1UsedItem,
- sText_BoxIsFull,
- sText_PkmnAvoidedAttack,
- sText_PkmnsXMadeItIneffective,
- sText_PkmnsXPreventsFlinching,
- sText_PkmnAlreadyHasBurn,
- sText_StatsWontDecrease2,
- sText_PkmnsXBlocksY2,
- sText_PkmnsXWoreOff,
- sText_PkmnRaisedDefALittle,
- sText_PkmnRaisedSpDefALittle,
- sText_TheWallShattered,
- sText_PkmnsXPreventsYsZ,
- sText_PkmnsXCuredItsYProblem,
- sText_AttackerCantEscape,
- sText_PkmnObtainedX,
- sText_PkmnObtainedX2,
- sText_PkmnObtainedXYObtainedZ,
- sText_ButNoEffect,
- sText_PkmnsXHadNoEffectOnY,
- sText_TwoInGameTrainersDefeated,
- sText_Trainer2LoseText,
- sText_PkmnIncapableOfPower,
- sText_GlintAppearsInEye,
- sText_PkmnGettingIntoPosition,
- sText_PkmnBeganGrowlingDeeply,
- sText_PkmnEagerForMore,
- sText_DefeatedOpponentByReferee,
- sText_LostToOpponentByReferee,
- sText_TiedOpponentByReferee,
- sText_QuestionForfeitMatch,
- sText_ForfeitedMatch,
- gText_PkmnTransferredSomeonesPC,
- gText_PkmnTransferredLanettesPC,
- gText_PkmnBoxSomeonesPCFull,
- gText_PkmnBoxLanettesPCFull,
- sText_Trainer1WinText,
- sText_Trainer2WinText,
+ sText_Trainer1LoseText, // 12
+ sText_PkmnGainedEXP, // 13
+ sText_PkmnGrewToLv, // 14
+ sText_PkmnLearnedMove, // 15
+ sText_TryToLearnMove1, // 16
+ sText_TryToLearnMove2, // 17
+ sText_TryToLearnMove3, // 18
+ sText_PkmnForgotMove, // 19
+ sText_StopLearningMove, // 20
+ sText_DidNotLearnMove, // 21
+ sText_PkmnLearnedMove2, // 22
+ sText_AttackMissed, // 23
+ sText_PkmnProtectedItself, // 24
+ sText_StatsWontIncrease2, // 25
+ sText_AvoidedDamage, // 26
+ sText_ItDoesntAffect, // 27
+ sText_AttackerFainted, // 28
+ sText_TargetFainted, // 29
+ sText_PlayerGotMoney, // 30
+ sText_PlayerWhiteout, // 31
+ sText_PlayerWhiteout2, // 32
+ sText_PreventsEscape, // 33
+ sText_HitXTimes, // 34
+ sText_PkmnFellAsleep, // 35
+ sText_PkmnMadeSleep, // 36
+ sText_PkmnAlreadyAsleep, // 37
+ sText_PkmnAlreadyAsleep2, // 38
+ sText_PkmnWasntAffected, // 39
+ sText_PkmnWasPoisoned, // 40
+ sText_PkmnPoisonedBy, // 41
+ sText_PkmnHurtByPoison, // 42
+ sText_PkmnAlreadyPoisoned, // 43
+ sText_PkmnBadlyPoisoned, // 44
+ sText_PkmnEnergyDrained, // 45
+ sText_PkmnWasBurned, // 46
+ sText_PkmnBurnedBy, // 47
+ sText_PkmnHurtByBurn, // 48
+ sText_PkmnWasFrozen, // 49
+ sText_PkmnFrozenBy, // 50
+ sText_PkmnIsFrozen, // 51
+ sText_PkmnWasDefrosted, // 52
+ sText_PkmnWasDefrosted2, // 53
+ sText_PkmnWasDefrostedBy, // 54
+ sText_PkmnWasParalyzed, // 55
+ sText_PkmnWasParalyzedBy, // 56
+ sText_PkmnIsParalyzed, // 57
+ sText_PkmnIsAlreadyParalyzed, // 58
+ sText_PkmnHealedParalysis, // 59
+ sText_PkmnDreamEaten, // 60
+ sText_StatsWontIncrease, // 61
+ sText_StatsWontDecrease, // 62
+ sText_TeamStoppedWorking, // 63
+ sText_FoeStoppedWorking, // 64
+ sText_PkmnIsConfused, // 65
+ sText_PkmnHealedConfusion, // 66
+ sText_PkmnWasConfused, // 67
+ sText_PkmnAlreadyConfused, // 68
+ sText_PkmnFellInLove, // 69
+ sText_PkmnInLove, // 70
+ sText_PkmnImmobilizedByLove, // 71
+ sText_PkmnBlownAway, // 72
+ sText_PkmnChangedType, // 73
+ sText_PkmnFlinched, // 74
+ sText_PkmnRegainedHealth, // 75
+ sText_PkmnHPFull, // 76
+ sText_PkmnRaisedSpDef, // 77
+ sText_PkmnRaisedDef, // 78
+ sText_PkmnCoveredByVeil, // 79
+ sText_PkmnUsedSafeguard, // 80
+ sText_PkmnSafeguardExpired, // 81
+ sText_PkmnWentToSleep, // 82
+ sText_PkmnSleptHealthy, // 83
+ sText_PkmnWhippedWhirlwind, // 84
+ sText_PkmnTookSunlight, // 85
+ sText_PkmnLoweredHead, // 86
+ sText_PkmnIsGlowing, // 87
+ sText_PkmnFlewHigh, // 88
+ sText_PkmnDugHole, // 89
+ sText_PkmnSqueezedByBind, // 90
+ sText_PkmnTrappedInVortex, // 91
+ sText_PkmnWrappedBy, // 92
+ sText_PkmnClamped, // 93
+ sText_PkmnHurtBy, // 94
+ sText_PkmnFreedFrom, // 95
+ sText_PkmnCrashed, // 96
+ gText_PkmnShroudedInMist, // 97
+ sText_PkmnProtectedByMist, // 98
+ gText_PkmnGettingPumped, // 99
+ sText_PkmnHitWithRecoil, // 100
+ sText_PkmnProtectedItself2, // 101
+ sText_PkmnBuffetedBySandstorm, // 102
+ sText_PkmnPeltedByHail, // 103
+ sText_PkmnSeeded, // 104
+ sText_PkmnEvadedAttack, // 105
+ sText_PkmnSappedByLeechSeed, // 106
+ sText_PkmnFastAsleep, // 107
+ sText_PkmnWokeUp, // 108
+ sText_PkmnUproarKeptAwake, // 109
+ sText_PkmnWokeUpInUproar, // 110
+ sText_PkmnCausedUproar, // 111
+ sText_PkmnMakingUproar, // 112
+ sText_PkmnCalmedDown, // 113
+ sText_PkmnCantSleepInUproar, // 114
+ sText_PkmnStockpiled, // 115
+ sText_PkmnCantStockpile, // 116
+ sText_PkmnCantSleepInUproar2, // 117
+ sText_UproarKeptPkmnAwake, // 118
+ sText_PkmnStayedAwakeUsing, // 119
+ sText_PkmnStoringEnergy, // 120
+ sText_PkmnUnleashedEnergy, // 121
+ sText_PkmnFatigueConfusion, // 122
+ sText_PkmnPickedUpItem, // 123
+ sText_PkmnUnaffected, // 124
+ sText_PkmnTransformedInto, // 125
+ sText_PkmnMadeSubstitute, // 126
+ sText_PkmnHasSubstitute, // 127
+ sText_SubstituteDamaged, // 128
+ sText_PkmnSubstituteFaded, // 129
+ sText_PkmnMustRecharge, // 130
+ sText_PkmnRageBuilding, // 131
+ sText_PkmnMoveWasDisabled, // 132
+ sText_PkmnMoveIsDisabled, // 133
+ sText_PkmnMoveDisabledNoMore, // 134
+ sText_PkmnGotEncore, // 135
+ sText_PkmnEncoreEnded, // 136
+ sText_PkmnTookAim, // 137
+ sText_PkmnSketchedMove, // 138
+ sText_PkmnTryingToTakeFoe, // 139
+ sText_PkmnTookFoe, // 140
+ sText_PkmnReducedPP, // 141
+ sText_PkmnStoleItem, // 142
+ sText_TargetCantEscapeNow, // 143
+ sText_PkmnFellIntoNightmare, // 144
+ sText_PkmnLockedInNightmare, // 145
+ sText_PkmnLaidCurse, // 146
+ sText_PkmnAfflictedByCurse, // 147
+ sText_SpikesScattered, // 148
+ sText_PkmnHurtBySpikes, // 149
+ sText_PkmnIdentified, // 150
+ sText_PkmnPerishCountFell, // 151
+ sText_PkmnBracedItself, // 152
+ sText_PkmnEnduredHit, // 153
+ sText_MagnitudeStrength, // 154
+ sText_PkmnCutHPMaxedAttack, // 155
+ sText_PkmnCopiedStatChanges, // 156
+ sText_PkmnGotFree, // 157
+ sText_PkmnShedLeechSeed, // 158
+ sText_PkmnBlewAwaySpikes, // 159
+ sText_PkmnFledFromBattle, // 160
+ sText_PkmnForesawAttack, // 161
+ sText_PkmnTookAttack, // 162
+ sText_PkmnAttack, // 163
+ sText_PkmnCenterAttention, // 164
+ sText_PkmnChargingPower, // 165
+ sText_NaturePowerTurnedInto, // 166
+ sText_PkmnStatusNormal, // 167
+ sText_PkmnHasNoMovesLeft, // 168
+ sText_PkmnSubjectedToTorment, // 169
+ sText_PkmnCantUseMoveTorment, // 170
+ sText_PkmnTighteningFocus, // 171
+ sText_PkmnFellForTaunt, // 172
+ sText_PkmnCantUseMoveTaunt, // 173
+ sText_PkmnReadyToHelp, // 174
+ sText_PkmnSwitchedItems, // 175
+ sText_PkmnCopiedFoe, // 176
+ sText_PkmnMadeWish, // 177
+ sText_PkmnWishCameTrue, // 178
+ sText_PkmnPlantedRoots, // 179
+ sText_PkmnAbsorbedNutrients, // 180
+ sText_PkmnAnchoredItself, // 181
+ sText_PkmnWasMadeDrowsy, // 182
+ sText_PkmnKnockedOff, // 183
+ sText_PkmnSwappedAbilities, // 184
+ sText_PkmnSealedOpponentMove, // 185
+ sText_PkmnCantUseMoveSealed, // 186
+ sText_PkmnWantsGrudge, // 187
+ sText_PkmnLostPPGrudge, // 188
+ sText_PkmnShroudedItself, // 189
+ sText_PkmnMoveBounced, // 190
+ sText_PkmnWaitsForTarget, // 191
+ sText_PkmnSnatchedMove, // 192
+ sText_PkmnMadeItRain, // 193
+ sText_PkmnRaisedSpeed, // 194
+ sText_PkmnProtectedBy, // 195
+ sText_PkmnPreventsUsage, // 196
+ sText_PkmnRestoredHPUsing, // 197
+ sText_PkmnChangedTypeWith, // 198
+ sText_PkmnPreventsParalysisWith, // 199
+ sText_PkmnPreventsRomanceWith, // 200
+ sText_PkmnPreventsPoisoningWith, // 201
+ sText_PkmnPreventsConfusionWith, // 202
+ sText_PkmnRaisedFirePowerWith, // 203
+ sText_PkmnAnchorsItselfWith, // 204
+ sText_PkmnCutsAttackWith, // 205
+ sText_PkmnPreventsStatLossWith, // 206
+ sText_PkmnHurtsWith, // 207
+ sText_PkmnTraced, // 208
+ sText_StatSharply, // 209
+ gText_StatRose, // 210
+ sText_StatHarshly, // 211
+ sText_StatFell, // 212
+ sText_PkmnsStatChanged, // 213
+ gText_PkmnsStatChanged2, // 214
+ sText_PkmnsStatChanged3, // 215
+ sText_PkmnsStatChanged4, // 216
+ sText_CriticalHit, // 217
+ sText_OneHitKO, // 218
+ sText_123Poof, // 219
+ sText_AndEllipsis, // 220
+ sText_NotVeryEffective, // 221
+ sText_SuperEffective, // 222
+ sText_GotAwaySafely, // 223
+ sText_WildPkmnFled, // 224
+ sText_NoRunningFromTrainers, // 225
+ sText_CantEscape, // 226
+ sText_DontLeaveBirch, // 227
+ sText_ButNothingHappened, // 228
+ sText_ButItFailed, // 229
+ sText_ItHurtConfusion, // 230
+ sText_MirrorMoveFailed, // 231
+ sText_StartedToRain, // 232
+ sText_DownpourStarted, // 233
+ sText_RainContinues, // 234
+ sText_DownpourContinues, // 235
+ sText_RainStopped, // 236
+ sText_SandstormBrewed, // 237
+ sText_SandstormRages, // 238
+ sText_SandstormSubsided, // 239
+ sText_SunlightGotBright, // 240
+ sText_SunlightStrong, // 241
+ sText_SunlightFaded, // 242
+ sText_StartedHail, // 243
+ sText_HailContinues, // 244
+ sText_HailStopped, // 245
+ sText_FailedToSpitUp, // 246
+ sText_FailedToSwallow, // 247
+ sText_WindBecameHeatWave, // 248
+ sText_StatChangesGone, // 249
+ sText_CoinsScattered, // 250
+ sText_TooWeakForSubstitute, // 251
+ sText_SharedPain, // 252
+ sText_BellChimed, // 253
+ sText_FaintInThree, // 254
+ sText_NoPPLeft, // 255
+ sText_ButNoPPLeft, // 256
+ sText_PlayerUsedItem, // 257
+ sText_WallyUsedItem, // 258
+ sText_TrainerBlockedBall, // 259
+ sText_DontBeAThief, // 260
+ sText_ItDodgedBall, // 261
+ sText_YouMissedPkmn, // 262
+ sText_PkmnBrokeFree, // 263
+ sText_ItAppearedCaught, // 264
+ sText_AarghAlmostHadIt, // 265
+ sText_ShootSoClose, // 266
+ sText_GotchaPkmnCaught, // 267
+ sText_GotchaPkmnCaught2, // 268
+ sText_GiveNicknameCaptured, // 269
+ sText_PkmnSentToPC, // 270
+ sText_PkmnDataAddedToDex, // 271
+ sText_ItIsRaining, // 272
+ sText_SandstormIsRaging, // 273
+ sText_CantEscape2, // 274
+ sText_PkmnIgnoresAsleep, // 275
+ sText_PkmnIgnoredOrders, // 276
+ sText_PkmnBeganToNap, // 277
+ sText_PkmnLoafing, // 278
+ sText_PkmnWontObey, // 279
+ sText_PkmnTurnedAway, // 280
+ sText_PkmnPretendNotNotice, // 281
+ sText_EnemyAboutToSwitchPkmn, // 282
+ sText_CreptCloser, // 283
+ sText_CantGetCloser, // 284
+ sText_PkmnWatchingCarefully, // 285
+ sText_PkmnCuriousAboutX, // 286
+ sText_PkmnEnthralledByX, // 287
+ sText_PkmnIgnoredX, // 288
+ sText_ThrewPokeblockAtPkmn, // 289
+ sText_OutOfSafariBalls, // 290
+ sText_PkmnsItemCuredParalysis, // 291
+ sText_PkmnsItemCuredPoison, // 292
+ sText_PkmnsItemHealedBurn, // 293
+ sText_PkmnsItemDefrostedIt, // 294
+ sText_PkmnsItemWokeIt, // 295
+ sText_PkmnsItemSnappedOut, // 296
+ sText_PkmnsItemCuredProblem, // 297
+ sText_PkmnsItemRestoredHealth, // 298
+ sText_PkmnsItemRestoredPP, // 299
+ sText_PkmnsItemRestoredStatus, // 300
+ sText_PkmnsItemRestoredHPALittle, // 301
+ sText_ItemAllowsOnlyYMove, // 302
+ sText_PkmnHungOnWithX, // 303
+ gText_EmptyString3, // 304
+ sText_PkmnsXPreventsBurns, // 305
+ sText_PkmnsXBlocksY, // 306
+ sText_PkmnsXRestoredHPALittle2, // 307
+ sText_PkmnsXWhippedUpSandstorm, // 308
+ sText_PkmnsXPreventsYLoss, // 309
+ sText_PkmnsXInfatuatedY, // 310
+ sText_PkmnsXMadeYIneffective, // 311
+ sText_PkmnsXCuredYProblem, // 312
+ sText_ItSuckedLiquidOoze, // 313
+ sText_PkmnTransformed, // 314
+ sText_ElectricityWeakened, // 315
+ sText_FireWeakened, // 316
+ sText_PkmnHidUnderwater, // 317
+ sText_PkmnSprangUp, // 318
+ sText_HMMovesCantBeForgotten, // 319
+ sText_XFoundOneY, // 320
+ sText_PlayerDefeatedLinkTrainerTrainer1, // 321
+ sText_SoothingAroma, // 322
+ sText_ItemsCantBeUsedNow, // 323
+ sText_ForXCommaYZ, // 324
+ sText_UsingXTheYOfZN, // 325
+ sText_PkmnUsedXToGetPumped, // 326
+ sText_PkmnsXMadeYUseless, // 327
+ sText_PkmnTrappedBySandTomb, // 328
+ sText_EmptyString4, // 329
+ sText_ABoosted, // 330
+ sText_PkmnsXIntensifiedSun, // 331
+ sText_PkmnMakesGroundMiss, // 332
+ sText_YouThrowABallNowRight, // 333
+ sText_PkmnsXTookAttack, // 334
+ sText_PkmnChoseXAsDestiny, // 335
+ sText_PkmnLostFocus, // 336
+ sText_UseNextPkmn, // 337
+ sText_PkmnFledUsingIts, // 338
+ sText_PkmnFledUsing, // 339
+ sText_PkmnWasDraggedOut, // 340
+ sText_PreventedFromWorking, // 341
+ sText_PkmnsItemNormalizedStatus, // 342
+ sText_Trainer1UsedItem, // 343
+ sText_BoxIsFull, // 344
+ sText_PkmnAvoidedAttack, // 345
+ sText_PkmnsXMadeItIneffective, // 346
+ sText_PkmnsXPreventsFlinching, // 347
+ sText_PkmnAlreadyHasBurn, // 348
+ sText_StatsWontDecrease2, // 349
+ sText_PkmnsXBlocksY2, // 350
+ sText_PkmnsXWoreOff, // 351
+ sText_PkmnRaisedDefALittle, // 352
+ sText_PkmnRaisedSpDefALittle, // 353
+ sText_TheWallShattered, // 354
+ sText_PkmnsXPreventsYsZ, // 355
+ sText_PkmnsXCuredItsYProblem, // 356
+ sText_AttackerCantEscape, // 357
+ sText_PkmnObtainedX, // 358
+ sText_PkmnObtainedX2, // 359
+ sText_PkmnObtainedXYObtainedZ, // 360
+ sText_ButNoEffect, // 361
+ sText_PkmnsXHadNoEffectOnY, // 362
+ sText_TwoInGameTrainersDefeated, // 363
+ sText_Trainer2LoseText, // 364
+ sText_PkmnIncapableOfPower, // 365
+ sText_GlintAppearsInEye, // 366
+ sText_PkmnGettingIntoPosition, // 367
+ sText_PkmnBeganGrowlingDeeply, // 368
+ sText_PkmnEagerForMore, // 369
+ sText_DefeatedOpponentByReferee, // 370
+ sText_LostToOpponentByReferee, // 371
+ sText_TiedOpponentByReferee, // 372
+ sText_QuestionForfeitMatch, // 373
+ sText_ForfeitedMatch, // 374
+ gText_PkmnTransferredSomeonesPC, // 375
+ gText_PkmnTransferredLanettesPC, // 376
+ gText_PkmnBoxSomeonesPCFull, // 377
+ gText_PkmnBoxLanettesPCFull, // 378
+ sText_Trainer1WinText, // 379
+ sText_Trainer2WinText, // 380
};
const u16 gMissStringIds[] =
diff --git a/src/battle_tv.c b/src/battle_tv.c
new file mode 100644
index 000000000..777b4846f
--- /dev/null
+++ b/src/battle_tv.c
@@ -0,0 +1,1576 @@
+#include "global.h"
+#include "pokemon.h"
+#include "battle.h"
+#include "battle_tv.h"
+#include "constants/battle_string_ids.h"
+#include "constants/battle_anim.h"
+#include "constants/moves.h"
+#include "constants/species.h"
+#include "battle_message.h"
+#include "tv.h"
+
+extern struct StringInfoBattle *gStringInfo;
+
+// this file's functions
+static bool8 sub_817E0B8(u16 stringId);
+static void AddMovePoints(u8 caseId, u16 arg1, u8 arg2, u8 arg3);
+static void TrySetBattleSeminarShow(void);
+static void AddPointsOnFainting(bool8 targetFainted);
+static void AddPointsBasedOnWeather(u16 weatherFlags, u16 moveId, u8 moveSlot);
+static bool8 ShouldCalculateDamage(u16 moveId, s32 *dmg, u16 *powerOverride);
+
+// const rom data
+static const u16 sVariableDmgMoves[] =
+{
+ MOVE_COUNTER, MOVE_FISSURE, MOVE_BIDE, MOVE_MIRROR_COAT,
+ MOVE_HORN_DRILL, MOVE_FLAIL, MOVE_REVERSAL, MOVE_HIDDEN_POWER,
+ MOVE_SHEER_COLD, MOVE_FOCUS_PUNCH, MOVE_ERUPTION,
+ MOVE_WATER_SPOUT, MOVE_DREAM_EATER, MOVE_WEATHER_BALL,
+ MOVE_SNORE, MOVE_PAIN_SPLIT, MOVE_GUILLOTINE,
+ MOVE_FRUSTRATION, MOVE_RETURN, MOVE_ENDEAVOR,
+ MOVE_PRESENT, MOVE_REVENGE, 0xFFFF,
+ // those are handled by the function itself
+ MOVE_MAGNITUDE, MOVE_PSYWAVE, 0xFFFF
+};
+
+static const u16 sUnknown_0860A4E0[] =
+{
+ 0x0001, 0x0001, 0x0001, 0x0004, 0x0001, 0x0001, 0x0001, 0x0000, 0x0005, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
+ 0x0001, 0x0002, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0005, 0x0005, 0x0004, 0x0005, 0x0001, 0x0003, 0x0001,
+ 0x0003, 0x0005, 0x0001, 0x0007, 0x0001, 0x0007, 0x0007, 0x0001, 0x0005, 0x0002, 0x0004, 0x0001, 0x0001, 0x0001, 0x0005, 0x0001,
+ 0x0002, 0x0004, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,
+ 0x0001, 0x0007, 0x0004, 0x0004, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0004, 0x0001, 0x0001, 0x0001, 0x0004,
+ 0x0005, 0x0002, 0x0004, 0x0001, 0x0004, 0x0001, 0x0007, 0x0002, 0x0001, 0x0005, 0x0007, 0x0003, 0x0003, 0x0004, 0x0003, 0x0003,
+ 0x0003, 0x0003, 0x0003, 0x0002, 0x0004, 0x0001, 0x0005, 0x0001, 0x0001, 0x0004, 0x0005, 0x0003, 0x0001, 0x0002, 0x0001, 0x0005,
+ 0x0004, 0x0003, 0x0006, 0x0004, 0x0003, 0x0003, 0x0003, 0x0002, 0x0004, 0x0001, 0x0001, 0x0001, 0x0005, 0x0001, 0x0001, 0x0007,
+ 0x0002, 0x0002, 0x0001, 0x0001, 0x0004, 0x0004, 0x0004, 0x0001, 0x0004, 0x0004, 0x0001, 0x0001, 0x0001, 0x0001, 0x0007, 0x0007,
+ 0x0006, 0x0003, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0002, 0x0003, 0x0001, 0x0001, 0x0004, 0x0004,
+ 0x0003, 0x0003, 0x0003, 0x0001, 0x0004, 0x0007, 0x0007, 0x0005, 0x0007, 0x0001, 0x0007, 0x0001, 0x0005, 0x0000, 0x0004, 0x0004,
+ 0x0004, 0x0004, 0x0004, 0x0002, 0x0002, 0x0006, 0x0003, 0x0006, 0x0004, 0x0004, 0x0002, 0x0005, 0x0002, 0x0001, 0x0001, 0x0006,
+ 0x0006, 0x0006, 0x0001, 0x0001, 0x0001, 0x0001, 0x0002, 0x0006, 0x0001, 0x0004, 0x0001, 0x0001, 0x0003, 0x0001, 0x0001, 0x0001,
+ 0x0001, 0x0001, 0x0004, 0x0001, 0x0001, 0x0003
+};
+static const u16 sUnknown_0860A68C[] =
+{
+ 0x0004, 0xfffd, 0xfffa
+};
+static const u16 sUnknown_0860A692[] =
+{
+ 0x0004, 0x0004, 0x0006, 0x0006, 0x0007, 0x0006, 0x0002
+};
+static const u16 sUnknown_0860A6A0[] =
+{
+ 0x0091, 0x0003, 0x00fa, 0x0003, 0x00be, 0x0003, 0x0080, 0x0003, 0x006e, 0x0003, 0x0098, 0x0003, 0x0143, 0x0003, 0x0123, 0x0003,
+ 0x007f, 0x0003, 0x014a, 0x0003, 0x0039, 0x0003, 0x0134, 0x0003, 0x0038, 0x0003, 0x003d, 0x0003, 0x015a, 0x0000, 0x0037, 0x0003,
+ 0x0160, 0x0003, 0x0137, 0x0003, 0x0057, 0x0003, 0x004c, 0xfffc, 0x013b, 0xfffc, 0x00ac, 0xfffc, 0x0035, 0xfffc, 0x00dd, 0xfffc,
+ 0x007e, 0xfffc, 0x0101, 0xfffc, 0x0034, 0xfffc, 0x0133, 0xfffc, 0x012b, 0xfffc, 0x011c, 0xfffc, 0x0053, 0xfffc, 0x0007, 0xfffc,
+ 0x004c, 0xfffc, 0xffff, 0x0000
+};
+static const u16 sUnknown_0860A728[] =
+{
+ 0x013b, 0x0003, 0x00ac, 0x0003, 0x0035, 0x0003, 0x00dd, 0x0003, 0x007e, 0x0003, 0x0101, 0x0003, 0x0034, 0x0003, 0x0133, 0x0003,
+ 0x012b, 0x0003, 0x011c, 0x0003, 0x0053, 0x0003, 0x0007, 0x0003, 0x004c, 0x0005, 0x00eb, 0x0003, 0x00ea, 0x0003, 0x00ec, 0x0003,
+ 0x0137, 0x0003, 0xffff, 0x0000
+};
+static const u16 sUnknown_0860A770[] =
+{
+ 0x0137, 0x0003, 0x004c, 0xfffd, 0xffff, 0x0000
+};
+static const u16 sUnknown_0860A77C[] =
+{
+ 0x0137, 0x0003, 0x004c, 0xfffd, 0xffff, 0x0000
+};
+static const u16 sUnknown_0860A788[] =
+{
+ 0x0055, 0x0003, 0x0009, 0x0003, 0x00d1, 0x0003, 0x0054, 0x0003, 0x00c0, 0x0003, 0x015f, 0x0003, 0x0056, 0x0000, 0x0057, 0x0003,
+ 0x0158, 0x0003, 0xffff, 0x0000
+};
+static const u16 sUnknown_0860A7B0[] =
+{
+ 0x0005, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003
+};
+static const u16 sUnknown_0860A7BE[] =
+{
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005
+};
+static const u16 sUnknown_0860A7C8[] =
+{
+ 0x0004
+};
+static const u16 sUnknown_0860A7CA[] =
+{
+ 0x0005
+};
+static const u16 sUnknown_0860A7CC[] =
+{
+ 0x0005
+};
+static const u16 sUnknown_0860A7CE[] =
+{
+ 0x0003
+};
+static const u16 sUnknown_0860A7D0[] =
+{
+ 0x0003
+};
+static const u16 sUnknown_0860A7D2[] =
+{
+ 0x0004
+};
+static const u16 sUnknown_0860A7D4[] =
+{
+ 0x0003
+};
+static const u16 sUnknown_0860A7D6[] =
+{
+ 0x0006
+};
+static const u16 sUnknown_0860A7D8[] =
+{
+ 0x0006
+};
+static const u16 sUnknown_0860A7DA[] =
+{
+ 0x0006
+};
+static const u16 sUnknown_0860A7DC[] =
+{
+ 0x0004
+};
+static const u16 sUnknown_0860A7DE[] =
+{
+ 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002
+};
+static const u16 sUnknown_0860A7EC[] =
+{
+ 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004
+};
+static const u16 sUnknown_0860A7FA[] =
+{
+ 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff
+};
+static const u16 sUnknown_0860A808[] =
+{
+ 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002
+};
+static const u16 sUnknown_0860A816[] =
+{
+ 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004
+};
+static const u16 sUnknown_0860A824[] =
+{
+ 0xfffe, 0xfffe, 0xfffe, 0xfffe, 0xfffe, 0xfffe, 0xfffe
+};
+
+static const u16 *const sPointsArray[] =
+{
+ sUnknown_0860A4E0,
+ sUnknown_0860A68C,
+ sUnknown_0860A692,
+ sUnknown_0860A6A0,
+ sUnknown_0860A728,
+ sUnknown_0860A770,
+ sUnknown_0860A77C,
+ sUnknown_0860A788,
+ sUnknown_0860A7B0,
+ sUnknown_0860A7BE,
+ sUnknown_0860A7C8,
+ sUnknown_0860A7CA,
+ sUnknown_0860A7CC,
+ sUnknown_0860A7CE,
+ sUnknown_0860A7D0,
+ sUnknown_0860A7D2,
+ sUnknown_0860A7D4,
+ sUnknown_0860A7D6,
+ sUnknown_0860A7D8,
+ sUnknown_0860A7DA,
+ sUnknown_0860A7DA,
+ sUnknown_0860A7DC,
+ sUnknown_0860A7DE,
+ sUnknown_0860A7EC,
+ sUnknown_0860A7FA,
+ sUnknown_0860A808,
+ sUnknown_0860A816,
+ sUnknown_0860A824
+};
+
+static const u16 sUnknown_0860A8A4[] =
+{
+ STRINGID_PKMNPERISHCOUNTFELL, STRINGID_PKMNWISHCAMETRUE, STRINGID_PKMNLOSTPPGRUDGE,
+ STRINGID_PKMNTOOKFOE, STRINGID_PKMNABSORBEDNUTRIENTS, STRINGID_PKMNANCHOREDITSELF,
+ STRINGID_PKMNAFFLICTEDBYCURSE, STRINGID_PKMNSAPPEDBYLEECHSEED, STRINGID_PKMNLOCKEDINNIGHTMARE,
+ STRINGID_PKMNHURTBY, STRINGID_PKMNHURTBYBURN, STRINGID_PKMNHURTBYPOISON,
+ STRINGID_PKMNHURTBYSPIKES, STRINGID_ATTACKERFAINTED, STRINGID_TARGETFAINTED,
+ STRINGID_PKMNHITWITHRECOIL, STRINGID_PKMNCRASHED, 0xFFFF
+};
+
+// code
+void BattleTv_SetDataBasedOnString(u16 stringId)
+{
+ struct BattleTv *tvPtr;
+ u32 atkSide, defSide, effSide, scriptingSide;
+ struct Pokemon *atkMon, *defMon;
+ u8 moveSlot;
+ u32 atkFlank, defFlank, effFlank;
+ u8 *perishCount;
+ u16 *statStringId, *finishedMoveId;
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && stringId != STRINGID_ITDOESNTAFFECT && stringId != STRINGID_NOTVERYEFFECTIVE)
+ return;
+
+ tvPtr = &gBattleStruct->tv;
+
+ atkSide = GetBattlerSide(gBattlerAttacker);
+ defSide = GetBattlerSide(gBattlerTarget);
+ effSide = GetBattlerSide(gEffectBattler);
+ scriptingSide = GetBattlerSide(gStringInfo->scrActive);
+
+ if (atkSide == B_SIDE_PLAYER)
+ atkMon = &gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]];
+ else
+ atkMon = &gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker]];
+
+ if (defSide == B_SIDE_PLAYER)
+ defMon = &gPlayerParty[gBattlerPartyIndexes[gBattlerTarget]];
+ else
+ defMon = &gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]];
+
+ moveSlot = GetBattlerMoveSlotId(gBattlerAttacker, gStringInfo->currentMove);
+
+ if (moveSlot >= 4 && sub_817E0B8(stringId) && stringId > BATTLESTRINGS_ID_ADDER)
+ {
+ tvPtr->side[atkSide].faintCause = 15;
+ return;
+ }
+
+ perishCount = (u8 *)(gBattleTextBuff1 + 4);
+ statStringId = (u16 *)(gBattleTextBuff2 + 2);
+ finishedMoveId = (u16 *)(gBattleTextBuff1 + 2);
+
+ atkFlank = GetBattlerPosition(gBattlerAttacker) / 2;
+ defFlank = GetBattlerPosition(gBattlerTarget) / 2;
+ effFlank = GetBattlerPosition(gEffectBattler) / 2;
+
+ switch (stringId)
+ {
+ case STRINGID_ITDOESNTAFFECT:
+ AddMovePoints(1, moveSlot, 2, 0);
+ if (!(gBattleTypeFlags & BATTLE_TYPE_LINK))
+ TrySetBattleSeminarShow();
+ break;
+ case STRINGID_NOTVERYEFFECTIVE:
+ AddMovePoints(1, moveSlot, 1, 0);
+ if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && GetMonData(defMon, MON_DATA_HP, NULL) != 0)
+ TrySetBattleSeminarShow();
+ break;
+ case STRINGID_SUPEREFFECTIVE:
+ AddMovePoints(1, moveSlot, 0, 0);
+ break;
+ case STRINGID_PKMNFORESAWATTACK:
+ tvPtr->side[atkSide].futureSightMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->side[atkSide].futureSightMoveSlot = moveSlot;
+ break;
+ case STRINGID_PKMNCHOSEXASDESTINY:
+ tvPtr->side[atkSide].doomDesireMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->side[atkSide].doomDesireMoveSlot = moveSlot;
+ break;
+ case STRINGID_FAINTINTHREE:
+ tvPtr->side[atkSide].perishSongMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->side[atkSide].perishSongMoveSlot = moveSlot;
+ tvPtr->side[atkSide].perishSong = 1;
+ break;
+ case STRINGID_PKMNPERISHCOUNTFELL:
+ if (*perishCount == 0)
+ tvPtr->side[atkSide].faintCause = 10;
+ break;
+ case STRINGID_PKMNWISHCAMETRUE:
+ if (tvPtr->side[defSide].wishMonId != 0)
+ {
+ AddMovePoints(2, 3, defSide,
+ (tvPtr->side[defSide].wishMonId - 1) * 4 + tvPtr->side[defSide].wishMoveSlot);
+ }
+ break;
+ case STRINGID_PKMNWANTSGRUDGE:
+ tvPtr->side[atkSide].grudgeMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->side[atkSide].grudgeMoveSlot = moveSlot;
+ break;
+ case STRINGID_PKMNLOSTPPGRUDGE:
+ if (tvPtr->side[defSide].grudgeMonId != 0)
+ {
+ AddMovePoints(2, 4, defSide,
+ (tvPtr->side[defSide].grudgeMonId - 1) * 4 + tvPtr->side[defSide].grudgeMoveSlot);
+ }
+ break;
+ case STRINGID_PKMNTRYINGTOTAKEFOE:
+ tvPtr->side[atkSide].destinyBondMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->side[atkSide].destinyBondMoveSlot = moveSlot;
+ break;
+ case STRINGID_PKMNTOOKFOE:
+ if (tvPtr->side[defSide].destinyBondMonId != 0)
+ tvPtr->side[atkSide].faintCause = 11;
+ break;
+ case STRINGID_PKMNPLANTEDROOTS:
+ tvPtr->pos[atkSide][atkFlank].ingrainMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->pos[atkSide][atkFlank].ingrainMoveSlot = moveSlot;
+ break;
+ case STRINGID_PKMNABSORBEDNUTRIENTS:
+ if (tvPtr->pos[atkSide][atkFlank].ingrainMonId != 0)
+ {
+ AddMovePoints(2, 6, atkSide,
+ (tvPtr->pos[atkSide][atkFlank].ingrainMonId - 1) * 4 + tvPtr->pos[atkSide][atkFlank].ingrainMoveSlot);
+ }
+ break;
+ case STRINGID_PKMNANCHOREDITSELF:
+ if (tvPtr->pos[defSide][defFlank].ingrainMonId != 0)
+ {
+ AddMovePoints(2, 6, defSide,
+ (tvPtr->pos[defSide][defFlank].ingrainMonId - 1) * 4 + tvPtr->pos[defSide][defFlank].ingrainMoveSlot);
+ }
+ break;
+ case STRINGID_PKMNTRANSFORMEDINTO:
+ gBattleStruct->anyMonHasTransformed = TRUE;
+ break;
+ case STRINGID_CRITICALHIT:
+ AddMovePoints(0x12, moveSlot, 0, 0);
+ break;
+ case STRINGID_PKMNSSTATCHANGED:
+ if (gBattleTextBuff1[2] != 0)
+ {
+ if (*statStringId == STRINGID_STATSHARPLY)
+ AddMovePoints(0x17, moveSlot, gBattleTextBuff1[2] - 1, 0);
+ else
+ AddMovePoints(0x16, moveSlot, gBattleTextBuff1[2] - 1, 0);
+ }
+ break;
+ case STRINGID_PKMNSSTATCHANGED2:
+ if (gBattleTextBuff1[2] != 0)
+ {
+ if (gBattlerAttacker == gBattlerTarget)
+ {
+ if (*statStringId == STRINGID_STATSHARPLY)
+ AddMovePoints(0x17, moveSlot, gBattleTextBuff1[2] - 1, 0);
+ else
+ AddMovePoints(0x16, moveSlot, gBattleTextBuff1[2] - 1, 0);
+ }
+ else
+ {
+ AddMovePoints(0x1B, moveSlot, gBattleTextBuff1[2] - 1, 0);
+ }
+ }
+ break;
+ case STRINGID_PKMNSSTATCHANGED3:
+ if (gBattleTextBuff1[2] != 0)
+ AddMovePoints(0x18, moveSlot, gBattleTextBuff1[2] - 1, 0);
+ break;
+ case STRINGID_PKMNSSTATCHANGED4:
+ if (gBattleTextBuff1[2] != 0)
+ {
+ if (*statStringId == STRINGID_STATHARSHLY)
+ AddMovePoints(0x1A, moveSlot, gBattleTextBuff1[2] - 1, 0);
+ else
+ AddMovePoints(0x19, moveSlot, gBattleTextBuff1[2] - 1, 0);
+ }
+ break;
+ case STRINGID_PKMNLAIDCURSE:
+ tvPtr->pos[defSide][defFlank].curseMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->pos[defSide][defFlank].curseMoveSlot = moveSlot;
+ break;
+ case STRINGID_PKMNAFFLICTEDBYCURSE:
+ if (GetMonData(atkMon, MON_DATA_HP, NULL)
+ && tvPtr->pos[atkSide][atkFlank].curseMonId != 0)
+ {
+ AddMovePoints(8, 0, tvPtr->pos[atkSide][atkFlank].curseMonId - 1, tvPtr->pos[atkSide][atkFlank].curseMoveSlot);
+ tvPtr->side[atkSide].faintCause = 1;
+ tvPtr->side[atkSide].faintCauseMonId = atkFlank;
+ }
+ break;
+ case STRINGID_PKMNSEEDED:
+ tvPtr->pos[defSide][defFlank].leechSeedMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->pos[defSide][defFlank].leechSeedMoveSlot = moveSlot;
+ break;
+ case STRINGID_PKMNSAPPEDBYLEECHSEED:
+ if (tvPtr->pos[atkSide][atkFlank].leechSeedMonId != 0)
+ {
+ AddMovePoints(8, 1, tvPtr->pos[atkSide][atkFlank].leechSeedMonId - 1, tvPtr->pos[atkSide][atkFlank].leechSeedMoveSlot);
+ tvPtr->side[atkSide].faintCause = 2;
+ tvPtr->side[atkSide].faintCauseMonId = atkFlank;
+ }
+ break;
+ case STRINGID_PKMNFELLINTONIGHTMARE:
+ tvPtr->pos[defSide][defFlank].nightmareMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->pos[defSide][defFlank].nightmareMoveSlot = moveSlot;
+ break;
+ case STRINGID_PKMNLOCKEDINNIGHTMARE:
+ if (GetMonData(atkMon, MON_DATA_HP, NULL) != 0
+ && tvPtr->pos[atkSide][atkFlank].nightmareMonId != 0)
+ {
+ AddMovePoints(8, 5, tvPtr->pos[atkSide][atkFlank].nightmareMonId - 1, tvPtr->pos[atkSide][atkFlank].nightmareMoveSlot);
+ tvPtr->side[atkSide].faintCause = 5;
+ tvPtr->side[atkSide].faintCauseMonId = atkFlank;
+ }
+ break;
+ case STRINGID_PKMNSQUEEZEDBYBIND:
+ case STRINGID_PKMNTRAPPEDINVORTEX:
+ case STRINGID_PKMNWRAPPEDBY:
+ case STRINGID_PKMNCLAMPED:
+ case STRINGID_PKMNTRAPPEDBYSANDTOMB:
+ tvPtr->pos[defSide][defFlank].wrapMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->pos[defSide][defFlank].wrapMoveSlot = moveSlot;
+ break;
+ case STRINGID_PKMNHURTBY:
+ if (GetMonData(atkMon, MON_DATA_HP, NULL) != 0
+ && tvPtr->pos[atkSide][atkFlank].wrapMonId != 0)
+ {
+ AddMovePoints(8, 6, tvPtr->pos[atkSide][atkFlank].wrapMonId - 1, tvPtr->pos[atkSide][atkFlank].wrapMoveSlot);
+ tvPtr->side[atkSide].faintCause = 6;
+ tvPtr->side[atkSide].faintCauseMonId = atkFlank;
+ }
+ break;
+ case STRINGID_PKMNWASBURNED:
+ tvPtr->mon[effSide][gBattlerPartyIndexes[gEffectBattler]].brnMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->mon[effSide][gBattlerPartyIndexes[gEffectBattler]].brnMoveSlot = moveSlot;
+ break;
+ case STRINGID_PKMNHURTBYBURN:
+ if (GetMonData(atkMon, MON_DATA_HP, NULL) != 0)
+ {
+ if (tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].brnMonId != 0)
+ AddMovePoints(8, 4, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].brnMonId - 1, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].brnMoveSlot);
+ tvPtr->side[atkSide].faintCause = 4;
+ tvPtr->side[atkSide].faintCauseMonId = gBattlerPartyIndexes[gBattlerAttacker];
+ }
+ break;
+ case STRINGID_PKMNWASPOISONED:
+ tvPtr->mon[effSide][gBattlerPartyIndexes[gEffectBattler]].psnMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->mon[effSide][gBattlerPartyIndexes[gEffectBattler]].psnMoveSlot = moveSlot;
+ break;
+ case STRINGID_PKMNBADLYPOISONED:
+ tvPtr->mon[effSide][gBattlerPartyIndexes[gEffectBattler]].badPsnMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->mon[effSide][gBattlerPartyIndexes[gEffectBattler]].badPsnMoveSlot = moveSlot;
+ break;
+ case STRINGID_PKMNHURTBYPOISON:
+ if (GetMonData(atkMon, MON_DATA_HP, NULL) != 0)
+ {
+ if (tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].psnMonId != 0)
+ AddMovePoints(8, 2, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].psnMonId - 1, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].psnMoveSlot);
+ if (tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].badPsnMonId != 0)
+ AddMovePoints(8, 3, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].badPsnMonId - 1, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].badPsnMoveSlot);
+ tvPtr->side[atkSide].faintCause = 3;
+ tvPtr->side[atkSide].faintCauseMonId = gBattlerPartyIndexes[gBattlerAttacker];
+ }
+ break;
+ case STRINGID_PKMNFELLINLOVE:
+ tvPtr->pos[defSide][defFlank].attractMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->pos[defSide][defFlank].attractMoveSlot = moveSlot;
+ break;
+ case STRINGID_PKMNIMMOBILIZEDBYLOVE:
+ if (tvPtr->pos[atkSide][atkFlank].attractMonId != 0)
+ AddMovePoints(9, 0, tvPtr->pos[atkSide][atkFlank].attractMonId - 1, tvPtr->pos[atkSide][atkFlank].attractMoveSlot);
+ break;
+ case STRINGID_PKMNWASPARALYZED:
+ tvPtr->mon[effSide][gBattlerPartyIndexes[gEffectBattler]].prlzMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->mon[effSide][gBattlerPartyIndexes[gEffectBattler]].prlzMoveSlot = moveSlot;
+ break;
+ case STRINGID_PKMNISPARALYZED:
+ if (tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].prlzMonId != 0)
+ AddMovePoints(9, 2, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].prlzMonId - 1, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].prlzMoveSlot);
+ break;
+ case STRINGID_PKMNFELLASLEEP:
+ tvPtr->mon[effSide][gBattlerPartyIndexes[gEffectBattler]].slpMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->mon[effSide][gBattlerPartyIndexes[gEffectBattler]].slpMoveSlot = moveSlot;
+ break;
+ case STRINGID_PKMNFASTASLEEP:
+ if (tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].slpMonId != 0
+ && gStringInfo->currentMove != MOVE_SNORE
+ && gStringInfo->currentMove != MOVE_SLEEP_TALK)
+ AddMovePoints(9, 3, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].slpMonId - 1, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].slpMoveSlot);
+ break;
+ case STRINGID_PKMNWASFROZEN:
+ tvPtr->mon[effSide][gBattlerPartyIndexes[gEffectBattler]].frzMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->mon[effSide][gBattlerPartyIndexes[gEffectBattler]].frzMoveSlot = moveSlot;
+ break;
+ case STRINGID_PKMNISFROZEN:
+ if (tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].frzMonId != 0)
+ AddMovePoints(9, 4, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].frzMonId - 1, tvPtr->mon[atkSide][gBattlerPartyIndexes[gBattlerAttacker]].frzMoveSlot);
+ break;
+ case STRINGID_PKMNWASCONFUSED:
+ tvPtr->pos[effSide][effFlank].confusionMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->pos[effSide][effFlank].confusionMoveSlot = moveSlot;
+ break;
+ case STRINGID_ITHURTCONFUSION:
+ if (tvPtr->pos[atkSide][atkFlank].confusionMonId != 0)
+ AddMovePoints(9, 1, tvPtr->pos[atkSide][atkFlank].confusionMonId - 1, tvPtr->pos[atkSide][atkFlank].confusionMoveSlot);
+ tvPtr->side[atkSide].faintCause = 12;
+ break;
+ case STRINGID_SPIKESSCATTERED:
+ tvPtr->side[defSide].spikesMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->side[defSide].spikesMoveSlot = moveSlot;
+ break;
+ case STRINGID_PKMNHURTBYSPIKES:
+ if (tvPtr->side[scriptingSide].spikesMonId != 0)
+ {
+ AddMovePoints(10, scriptingSide ^ BIT_SIDE, tvPtr->side[scriptingSide].spikesMonId - 1, tvPtr->side[scriptingSide].spikesMoveSlot);
+ tvPtr->side[scriptingSide].faintCause = 7;
+ }
+ break;
+ case STRINGID_PKMNBLEWAWAYSPIKES:
+ tvPtr->side[atkSide].spikesMonId = 0;
+ tvPtr->side[atkSide].spikesMoveSlot = 0;
+ break;
+ case STRINGID_FIREWEAKENED:
+ tvPtr->pos[atkSide][atkFlank].waterSportMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->pos[atkSide][atkFlank].waterSportMoveSlot = moveSlot;
+ break;
+ case STRINGID_ELECTRICITYWEAKENED:
+ tvPtr->pos[atkSide][atkFlank].mudSportMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->pos[atkSide][atkFlank].mudSportMoveSlot = moveSlot;
+ break;
+ case STRINGID_ATTACKERFAINTED:
+ AddPointsOnFainting(FALSE);
+ case STRINGID_RETURNMON:
+ if (tvPtr->pos[atkSide][atkFlank].waterSportMonId != 0)
+ {
+ tvPtr->pos[atkSide][atkFlank].waterSportMonId = 0;
+ tvPtr->pos[atkSide][atkFlank].waterSportMoveSlot = 0;
+ }
+ if (tvPtr->pos[atkSide][atkFlank].mudSportMonId != 0)
+ {
+ tvPtr->pos[atkSide][atkFlank].mudSportMonId = 0;
+ tvPtr->pos[atkSide][atkFlank].mudSportMoveSlot = 0;
+ }
+ break;
+ case STRINGID_TARGETFAINTED:
+ AddPointsOnFainting(TRUE);
+ if (tvPtr->pos[atkSide][defFlank].waterSportMonId != 0)
+ {
+ tvPtr->pos[atkSide][defFlank].waterSportMonId = 0;
+ tvPtr->pos[atkSide][defFlank].waterSportMoveSlot = 0;
+ }
+ if (tvPtr->pos[atkSide][defFlank].mudSportMonId != 0)
+ {
+ tvPtr->pos[atkSide][defFlank].mudSportMonId = 0;
+ tvPtr->pos[atkSide][defFlank].mudSportMoveSlot = 0;
+ }
+ break;
+ case STRINGID_PKMNRAISEDDEF:
+ case STRINGID_PKMNRAISEDDEFALITTLE:
+ tvPtr->side[atkSide].reflectMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->side[atkSide].reflectMoveSlot = moveSlot;
+ break;
+ case STRINGID_PKMNRAISEDSPDEF:
+ case STRINGID_PKMNRAISEDSPDEFALITTLE:
+ tvPtr->side[atkSide].lightScreenMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->side[atkSide].lightScreenMoveSlot = moveSlot;
+ break;
+ case STRINGID_PKMNSXWOREOFF:
+ if (*finishedMoveId == MOVE_REFLECT)
+ {
+ tvPtr->side[atkSide].reflectMonId = 0;
+ tvPtr->side[atkSide].reflectMoveSlot = 0;
+ }
+ if (*finishedMoveId == MOVE_LIGHT_SCREEN)
+ {
+ tvPtr->side[atkSide].lightScreenMonId = 0;
+ tvPtr->side[atkSide].lightScreenMoveSlot = 0;
+ }
+ if (*finishedMoveId == MOVE_MIST)
+ {
+ tvPtr->side[atkSide].mistMonId = 0;
+ tvPtr->side[atkSide].mistMoveSlot = 0;
+ }
+ break;
+ case STRINGID_PKMNCOVEREDBYVEIL:
+ tvPtr->side[atkSide].safeguardMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->side[atkSide].safeguardMoveSlot = moveSlot;
+ break;
+ case STRINGID_PKMNUSEDSAFEGUARD:
+ if (tvPtr->side[defSide].safeguardMonId != 0)
+ AddMovePoints(15, 0, tvPtr->side[defSide].safeguardMonId - 1, tvPtr->side[defSide].safeguardMoveSlot);
+ break;
+ case STRINGID_PKMNSAFEGUARDEXPIRED:
+ tvPtr->side[atkSide].safeguardMonId = 0;
+ tvPtr->side[atkSide].safeguardMoveSlot = 0;
+ break;
+ case STRINGID_PKMNSHROUDEDINMIST:
+ tvPtr->side[atkSide].mistMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->side[atkSide].mistMoveSlot = moveSlot;
+ break;
+ case STRINGID_PKMNPROTECTEDBYMIST:
+ if (tvPtr->side[defSide].mistMonId != 0)
+ AddMovePoints(16, 0, tvPtr->side[defSide].mistMonId - 1, tvPtr->side[defSide].mistMoveSlot);
+ break;
+ case STRINGID_THEWALLSHATTERED:
+ tvPtr->side[defSide].reflectMonId = 0;
+ tvPtr->side[defSide].reflectMoveSlot = 0;
+ tvPtr->side[defSide].lightScreenMonId = 0;
+ tvPtr->side[defSide].lightScreenMoveSlot = 0;
+ AddMovePoints(17, 0, gBattlerPartyIndexes[gBattlerAttacker], moveSlot);
+ break;
+ case STRINGID_PKMNFLINCHED:
+ if (tvPtr->pos[atkSide][0].attackedByMonId != 0)
+ AddMovePoints(21, 0, tvPtr->pos[atkSide][0].attackedByMonId - 1, tvPtr->pos[atkSide][0].attackedByMoveSlot);
+ if (tvPtr->pos[atkSide][1].attackedByMonId != 0)
+ AddMovePoints(21, 0, tvPtr->pos[atkSide][1].attackedByMonId - 1, tvPtr->pos[atkSide][1].attackedByMoveSlot);
+ break;
+ case STRINGID_PKMNCRASHED:
+ case STRINGID_PKMNHITWITHRECOIL:
+ tvPtr->side[atkSide].faintCause = 14;
+ break;
+ }
+}
+
+static bool8 sub_817E0B8(u16 stringId)
+{
+ s32 i = 0;
+
+ do
+ {
+ if (sUnknown_0860A8A4[i] == stringId)
+ break;
+ i++;
+ } while (sUnknown_0860A8A4[i] != 0xFFFF);
+
+ if (sUnknown_0860A8A4[i] == 0xFFFF)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void BattleTv_SetDataBasedOnMove(u16 move, u16 weatherFlags, struct DisableStruct *disableStructPtr)
+{
+ struct BattleTv *tvPtr;
+ u32 atkSide, defSide;
+ u8 moveSlot;
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_LINK))
+ return;
+
+ tvPtr = &gBattleStruct->tv;
+
+ atkSide = GetBattlerSide(gBattlerAttacker);
+ defSide = GetBattlerSide(gBattlerTarget);
+ moveSlot = GetBattlerMoveSlotId(gBattlerAttacker, move);
+
+ if (moveSlot >= 4)
+ {
+ tvPtr->side[atkSide].faintCause = 15;
+ return;
+ }
+
+ tvPtr->pos[defSide][GetBattlerPosition(gBattlerAttacker) / 2].attackedByMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->pos[defSide][GetBattlerPosition(gBattlerAttacker) / 2].attackedByMoveSlot = moveSlot;
+ tvPtr->side[atkSide].usedMoveSlot = moveSlot;
+ AddMovePoints(0, moveSlot, gBattleMoves[move].effect, 0);
+ AddPointsBasedOnWeather(weatherFlags, move, moveSlot);
+ if (disableStructPtr->chargeTimer1 != 0)
+ AddMovePoints(7, move, moveSlot, 0);
+
+ if (move == MOVE_WISH)
+ {
+ tvPtr->side[atkSide].wishMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->side[atkSide].wishMoveSlot = moveSlot;
+ }
+ if (move == MOVE_SELF_DESTRUCT || move == MOVE_EXPLOSION)
+ {
+ tvPtr->side[atkSide ^ BIT_SIDE].explosionMonId = gBattlerPartyIndexes[gBattlerAttacker] + 1;
+ tvPtr->side[atkSide ^ BIT_SIDE].explosionMoveSlot = moveSlot;
+ tvPtr->side[atkSide ^ BIT_SIDE].faintCause = 13;
+ tvPtr->side[atkSide ^ BIT_SIDE].explosion = 1;
+ }
+
+ AddMovePoints(13, gBattleMoves[move].type, gBattleMoves[move].power, 0);
+ AddMovePoints(14, gBattleMoves[move].type, gBattleMoves[move].power, 0);
+ AddMovePoints(11, gBattleMoves[move].type, 0, 0);
+ AddMovePoints(12, gBattleMoves[move].type, 0, 0);
+}
+
+void BattleTv_SetDataBasedOnAnimation(u8 animationId)
+{
+ struct BattleTv *tvPtr;
+ u32 atkSide;
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_LINK))
+ return;
+
+ tvPtr = &gBattleStruct->tv;
+ atkSide = GetBattlerSide(gBattlerAttacker);
+ switch (animationId)
+ {
+ case B_ANIM_FUTURE_SIGHT_HIT:
+ if (tvPtr->side[atkSide].futureSightMonId != 0)
+ {
+ AddMovePoints(2, 0, atkSide,
+ (tvPtr->side[atkSide].futureSightMonId - 1) * 4 + tvPtr->side[atkSide].futureSightMoveSlot);
+ tvPtr->side[atkSide].faintCause = 8;
+ }
+ break;
+ case B_ANIM_DOOM_DESIRE_HIT:
+ if (tvPtr->side[atkSide].doomDesireMonId != 0)
+ {
+ AddMovePoints(2, 1, atkSide,
+ (tvPtr->side[atkSide].doomDesireMonId - 1) * 4 + tvPtr->side[atkSide].doomDesireMoveSlot);
+ tvPtr->side[atkSide].faintCause = 9;
+ }
+ break;
+ }
+}
+
+#ifdef NONMATCHING
+// for loop has an unused stack variable
+void TryPutLinkBattleTvShowOnAir(void)
+{
+ u16 playerBestSpecies = 0, opponentBestSpecies = 0;
+ s16 playerBestSum = 0, opponentBestSum = SHRT_MAX;
+ u8 playerBestMonId = 0, opponentBestMonId = 0;
+ struct BattleTvMovePoints *movePoints = NULL;
+ u8 countPlayer = 0, countOpponent = 0;
+ s16 sum = 0;
+ u16 species = 0;
+ u16 moveId = 0;
+ s32 i, j;
+
+ if (gBattleStruct->anyMonHasTransformed)
+ return;
+
+ movePoints = &gBattleStruct->tvMovePoints;
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL) != SPECIES_NONE)
+ countPlayer++;
+ if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES, NULL) != SPECIES_NONE)
+ countOpponent++;
+ }
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) || countPlayer != countOpponent)
+ return;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL);
+ if (species != SPECIES_NONE && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG, NULL))
+ {
+ for (sum = 0, j = 0; j < 4; j++)
+ sum += movePoints->points[0][i * 4 + j];
+
+ if (playerBestSum < sum)
+ {
+ playerBestMonId = i;
+ playerBestSum = sum;
+ playerBestSpecies = species;
+ }
+ }
+
+ species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES, NULL);
+ if (species != SPECIES_NONE && !GetMonData(&gEnemyParty[i], MON_DATA_IS_EGG, NULL))
+ {
+ for (sum = 0, j = 0; j < 4; j++)
+ sum += movePoints->points[1][i * 4 + j];
+
+ if (opponentBestSum == sum)
+ {
+ if (GetMonData(&gEnemyParty[i], MON_DATA_EXP, NULL) > GetMonData(&gEnemyParty[opponentBestMonId], MON_DATA_EXP, NULL))
+ {
+ opponentBestMonId = i;
+ opponentBestSum = sum;
+ opponentBestSpecies = species;
+ }
+ }
+ else if (opponentBestSum > sum)
+ {
+ opponentBestMonId = i;
+ opponentBestSum = sum;
+ opponentBestSpecies = species;
+ }
+ }
+ }
+
+ for (sum = 0, i = 0, j = 0; j < 4; j++)
+ {
+ if (sum < movePoints->points[0][playerBestMonId * 4 + j])
+ {
+ sum = movePoints->points[0][playerBestMonId * 4 + j];
+ i = j;
+ }
+ }
+
+ moveId = GetMonData(&gPlayerParty[playerBestMonId], MON_DATA_MOVE1 + i, NULL);
+ if (playerBestSum == 0 || moveId == 0)
+ return;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ if ((playerBestMonId < 3 && !sub_806D82C(gBattleScripting.multiplayerId))
+ || (playerBestMonId >= 3 && sub_806D82C(gBattleScripting.multiplayerId)))
+ {
+ j = (opponentBestMonId < 3) ? 0 : 1;
+ PutBattleUpdateOnTheAir(sub_806EF84(j, gBattleScripting.multiplayerId), moveId, playerBestSpecies, opponentBestSpecies);
+ }
+ }
+ else
+ {
+ PutBattleUpdateOnTheAir(gBattleScripting.multiplayerId ^ 1, moveId, playerBestSpecies, opponentBestSpecies);
+ }
+}
+
+#else
+ASM_DIRECT
+void TryPutLinkBattleTvShowOnAir(void)
+{
+ asm_unified(
+ "push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x20\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r1, 0\n\
+ str r1, [sp, 0x4]\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x8]\n\
+ ldr r3, =0x00007fff\n\
+ str r3, [sp, 0xC]\n\
+ movs r4, 0\n\
+ str r4, [sp, 0x10]\n\
+ movs r7, 0\n\
+ str r7, [sp, 0x14]\n\
+ mov r8, r0\n\
+ ldr r0, =gBattleStruct\n\
+ ldr r1, [r0]\n\
+ adds r0, r1, 0\n\
+ adds r0, 0xB3\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _0817E42A\n\
+ b _0817E670\n\
+_0817E42A:\n\
+ movs r2, 0xD2\n\
+ lsls r2, 1\n\
+ adds r2, r1\n\
+ mov r10, r2\n\
+ movs r6, 0\n\
+_0817E434:\n\
+ movs r0, 0x64\n\
+ adds r4, r6, 0\n\
+ muls r4, r0\n\
+ ldr r0, =gPlayerParty\n\
+ adds r0, r4, r0\n\
+ movs r1, 0xB\n\
+ movs r2, 0\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0817E454\n\
+ mov r0, r8\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+_0817E454:\n\
+ ldr r5, =gEnemyParty\n\
+ adds r0, r4, r5\n\
+ movs r1, 0xB\n\
+ movs r2, 0\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0817E46A\n\
+ adds r0, r7, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+_0817E46A:\n\
+ adds r6, 0x1\n\
+ cmp r6, 0x5\n\
+ ble _0817E434\n\
+ ldr r0, =gBattleTypeFlags\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x2\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0817E47E\n\
+ b _0817E670\n\
+_0817E47E:\n\
+ cmp r8, r7\n\
+ beq _0817E484\n\
+ b _0817E670\n\
+_0817E484:\n\
+ movs r6, 0\n\
+ lsls r3, r6, 1\n\
+ str r3, [sp, 0x18]\n\
+ movs r4, 0x64\n\
+ mov r8, r4\n\
+_0817E48E:\n\
+ mov r1, r8\n\
+ muls r1, r6\n\
+ ldr r0, =gPlayerParty\n\
+ adds r4, r1, r0\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xB\n\
+ movs r2, 0\n\
+ bl GetMonData\n\
+ lsls r0, 16\n\
+ lsrs r7, r0, 16\n\
+ adds r0, r6, 0x1\n\
+ mov r9, r0\n\
+ cmp r7, 0\n\
+ beq _0817E4EE\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x2D\n\
+ movs r2, 0\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ bne _0817E4EE\n\
+ movs r4, 0\n\
+ lsls r0, r6, 3\n\
+ mov r2, r10\n\
+ adds r1, r0, r2\n\
+ movs r3, 0x3\n\
+_0817E4C4:\n\
+ lsls r0, r4, 16\n\
+ asrs r0, 16\n\
+ ldrh r4, [r1]\n\
+ adds r0, r4\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ adds r1, 0x2\n\
+ subs r3, 0x1\n\
+ cmp r3, 0\n\
+ bge _0817E4C4\n\
+ ldr r1, [sp, 0x8]\n\
+ lsls r0, r1, 16\n\
+ lsls r1, r4, 16\n\
+ cmp r0, r1\n\
+ bge _0817E4EE\n\
+ lsls r0, r6, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp, 0x10]\n\
+ lsrs r1, 16\n\
+ str r1, [sp, 0x8]\n\
+ str r7, [sp]\n\
+_0817E4EE:\n\
+ mov r0, r8\n\
+ muls r0, r6\n\
+ ldr r2, =gEnemyParty\n\
+ adds r4, r0, r2\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xB\n\
+ movs r2, 0\n\
+ bl GetMonData\n\
+ lsls r0, 16\n\
+ lsrs r7, r0, 16\n\
+ ldr r3, [sp, 0x8]\n\
+ lsls r3, 16\n\
+ str r3, [sp, 0x1C]\n\
+ cmp r7, 0\n\
+ beq _0817E5A0\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x2D\n\
+ movs r2, 0\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ bne _0817E5A0\n\
+ movs r4, 0\n\
+ ldr r0, [sp, 0xC]\n\
+ lsls r2, r0, 16\n\
+ movs r3, 0x1\n\
+ lsls r1, r3, 1\n\
+ adds r1, 0x1\n\
+ lsls r1, 4\n\
+ lsls r0, r6, 3\n\
+ adds r0, r1\n\
+ mov r3, r10\n\
+ adds r1, r0, r3\n\
+ movs r3, 0x3\n\
+_0817E534:\n\
+ lsls r0, r4, 16\n\
+ asrs r0, 16\n\
+ ldrh r4, [r1]\n\
+ adds r0, r4\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ adds r1, 0x2\n\
+ subs r3, 0x1\n\
+ cmp r3, 0\n\
+ bge _0817E534\n\
+ asrs r1, r2, 16\n\
+ lsls r5, r4, 16\n\
+ asrs r0, r5, 16\n\
+ cmp r1, r0\n\
+ bne _0817E590\n\
+ mov r0, r8\n\
+ muls r0, r6\n\
+ ldr r1, =gEnemyParty\n\
+ adds r0, r1\n\
+ movs r1, 0x19\n\
+ movs r2, 0\n\
+ bl GetMonData\n\
+ adds r4, r0, 0\n\
+ ldr r2, [sp, 0x14]\n\
+ mov r0, r8\n\
+ muls r0, r2\n\
+ ldr r3, =gEnemyParty\n\
+ adds r0, r3\n\
+ movs r1, 0x19\n\
+ movs r2, 0\n\
+ bl GetMonData\n\
+ cmp r4, r0\n\
+ bls _0817E5A0\n\
+ b _0817E594\n\
+ .pool\n\
+_0817E590:\n\
+ cmp r1, r0\n\
+ ble _0817E5A0\n\
+_0817E594:\n\
+ lsls r0, r6, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp, 0x14]\n\
+ lsrs r5, 16\n\
+ str r5, [sp, 0xC]\n\
+ str r7, [sp, 0x4]\n\
+_0817E5A0:\n\
+ mov r6, r9\n\
+ cmp r6, 0x5\n\
+ bgt _0817E5A8\n\
+ b _0817E48E\n\
+_0817E5A8:\n\
+ movs r4, 0\n\
+ movs r6, 0\n\
+ movs r3, 0\n\
+ ldr r5, =gPlayerParty\n\
+ ldr r7, [sp, 0x10]\n\
+ lsls r0, r7, 3\n\
+ mov r1, r10\n\
+ adds r2, r0, r1\n\
+_0817E5B8:\n\
+ lsls r0, r4, 16\n\
+ asrs r0, 16\n\
+ movs r7, 0\n\
+ ldrsh r1, [r2, r7]\n\
+ cmp r0, r1\n\
+ bge _0817E5C8\n\
+ ldrh r4, [r2]\n\
+ adds r6, r3, 0\n\
+_0817E5C8:\n\
+ adds r2, 0x2\n\
+ adds r3, 0x1\n\
+ cmp r3, 0x3\n\
+ ble _0817E5B8\n\
+ movs r0, 0x64\n\
+ ldr r1, [sp, 0x10]\n\
+ muls r0, r1\n\
+ adds r0, r5\n\
+ adds r1, r6, 0\n\
+ adds r1, 0xD\n\
+ movs r2, 0\n\
+ bl GetMonData\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ ldr r2, [sp, 0x1C]\n\
+ cmp r2, 0\n\
+ beq _0817E670\n\
+ cmp r4, 0\n\
+ beq _0817E670\n\
+ ldr r0, =gBattleTypeFlags\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x40\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0817E65C\n\
+ ldr r3, [sp, 0x10]\n\
+ cmp r3, 0x2\n\
+ bhi _0817E620\n\
+ ldr r0, =gBattleScripting\n\
+ adds r0, 0x25\n\
+ ldrb r0, [r0]\n\
+ bl sub_806D82C\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ beq _0817E630\n\
+ b _0817E670\n\
+ .pool\n\
+_0817E620:\n\
+ ldr r0, =gBattleScripting\n\
+ adds r0, 0x25\n\
+ ldrb r0, [r0]\n\
+ bl sub_806D82C\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ beq _0817E670\n\
+_0817E630:\n\
+ movs r3, 0\n\
+ ldr r7, [sp, 0x14]\n\
+ cmp r7, 0x2\n\
+ bls _0817E63A\n\
+ movs r3, 0x1\n\
+_0817E63A:\n\
+ lsls r0, r3, 24\n\
+ lsrs r0, 24\n\
+ ldr r1, =gBattleScripting\n\
+ adds r1, 0x25\n\
+ ldrb r1, [r1]\n\
+ bl sub_806EF84\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ adds r1, r4, 0\n\
+ ldr r2, [sp]\n\
+ ldr r3, [sp, 0x4]\n\
+ bl PutBattleUpdateOnTheAir\n\
+ b _0817E670\n\
+ .pool\n\
+_0817E65C:\n\
+ ldr r0, =gBattleScripting\n\
+ adds r0, 0x25\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x1\n\
+ eors r0, r1\n\
+ adds r1, r4, 0\n\
+ ldr r2, [sp]\n\
+ ldr r3, [sp, 0x4]\n\
+ bl PutBattleUpdateOnTheAir\n\
+_0817E670:\n\
+ add sp, 0x20\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool");
+}
+#endif
+
+static void AddMovePoints(u8 caseId, u16 arg1, u8 arg2, u8 arg3)
+{
+ struct BattleTvMovePoints *movePoints = &gBattleStruct->tvMovePoints;
+ struct BattleTv *tvPtr = &gBattleStruct->tv;
+ u32 atkSide = GetBattlerSide(gBattlerAttacker);
+ u32 defSide = GetBattlerSide(gBattlerTarget);
+ const u16 *ptr;
+ s32 i;
+
+ switch (caseId)
+ {
+ case 0:
+ case 1:
+ case 18:
+ case 22 ... 27:
+ movePoints->points[atkSide][gBattlerPartyIndexes[gBattlerAttacker] * 4 + arg1] += sPointsArray[caseId][arg2];
+ break;
+ case 3 ... 7:
+ i = 0;
+ ptr = sPointsArray[caseId];
+ do
+ {
+ if (arg1 == ptr[i])
+ {
+ movePoints->points[atkSide][gBattlerPartyIndexes[gBattlerAttacker] * 4 + arg2] += ptr[i+1];
+ break;
+ }
+ i += 2;
+ } while (ptr[i] != 0xFFFF);
+ break;
+ case 19:
+ tvPtr->side[arg2 ^ 1].faintCause = 0;
+ movePoints->points[arg2][0 * 4 + arg3] += sPointsArray[caseId][arg1];
+ break;
+ case 20:
+ tvPtr->side[arg2].faintCause = 0;
+ case 2:
+ movePoints->points[arg2][0 * 4 + arg3] += sPointsArray[caseId][arg1];
+ break;
+ case 17:
+ movePoints->points[atkSide][arg2 * 4 + arg3] += sPointsArray[caseId][arg1];
+ break;
+ case 8:
+ case 9:
+ case 15:
+ case 16:
+ case 21:
+ movePoints->points[atkSide ^ BIT_SIDE][arg2 * 4 + arg3] += sPointsArray[caseId][arg1];
+ break;
+ case 10:
+ movePoints->points[arg1][arg2 * 4 + arg3] += sPointsArray[caseId][0];
+ break;
+ case 11:
+ if (tvPtr->pos[defSide][0].waterSportMonId != -(tvPtr->pos[defSide][1].waterSportMonId) && arg1 == 10)
+ {
+ if (tvPtr->pos[defSide][0].waterSportMonId != 0)
+ {
+ u32 id = (tvPtr->pos[defSide][0].waterSportMonId - 1) * 4;
+ movePoints->points[defSide][id + tvPtr->pos[defSide][0].waterSportMoveSlot] += sPointsArray[caseId][0];
+ }
+ if (tvPtr->pos[defSide][1].waterSportMonId != 0)
+ {
+ u32 id = (tvPtr->pos[defSide][1].waterSportMonId - 1) * 4;
+ movePoints->points[defSide][id + tvPtr->pos[defSide][1].waterSportMoveSlot] += sPointsArray[caseId][0];
+ }
+ }
+ break;
+ case 12:
+ if (tvPtr->pos[defSide][0].mudSportMonId != -(tvPtr->pos[defSide][1].mudSportMonId) && arg1 == 13)
+ {
+ if (tvPtr->pos[defSide][0].mudSportMonId != 0)
+ {
+ u32 id = (tvPtr->pos[defSide][0].mudSportMonId - 1) * 4;
+ movePoints->points[defSide][id + tvPtr->pos[defSide][0].mudSportMoveSlot] += sPointsArray[caseId][0];
+ }
+ if (tvPtr->pos[defSide][1].mudSportMonId != 0)
+ {
+ u32 id = (tvPtr->pos[defSide][1].mudSportMonId - 1) * 4;
+ movePoints->points[defSide][id + tvPtr->pos[defSide][1].mudSportMoveSlot] += sPointsArray[caseId][0];
+ }
+ }
+ break;
+ case 13:
+ if (arg1 <= 8 && arg2 != 0 && tvPtr->side[defSide].reflectMonId != 0)
+ {
+ u32 id = (tvPtr->side[defSide].reflectMonId - 1) * 4;
+ movePoints->points[defSide][id + tvPtr->side[defSide].reflectMoveSlot] += sPointsArray[caseId][0];
+ }
+ break;
+ case 14:
+ if (arg1 > 8 && arg2 != 0 && tvPtr->side[defSide].lightScreenMonId != 0)
+ {
+ u32 id = (tvPtr->side[defSide].lightScreenMonId - 1) * 4;
+ movePoints->points[defSide][id + tvPtr->side[defSide].lightScreenMoveSlot] += sPointsArray[caseId][0];
+ }
+ break;
+ }
+}
+
+static void AddPointsOnFainting(bool8 targetFainted)
+{
+ struct BattleTv *tvPtr = &gBattleStruct->tv;
+ u32 atkSide = GetBattlerSide(gBattlerAttacker);
+ u32 defSide = GetBattlerSide(gBattlerTarget);
+ u32 atkArrId = tvPtr->side[atkSide].faintCauseMonId;
+ s32 i;
+
+ if (tvPtr->side[atkSide].faintCause != 0)
+ {
+ switch (tvPtr->side[atkSide].faintCause)
+ {
+ case 1:
+ if (tvPtr->pos[atkSide][atkArrId].curseMonId != 0)
+ {
+ AddMovePoints(19, 0, atkSide ^ BIT_SIDE,
+ (tvPtr->pos[atkSide][atkArrId].curseMonId - 1) * 4 + tvPtr->pos[atkSide][atkArrId].curseMoveSlot);
+ }
+ break;
+ case 2:
+ if (tvPtr->pos[atkSide][atkArrId].leechSeedMonId != 0)
+ {
+ AddMovePoints(19, 0, atkSide ^ BIT_SIDE,
+ (tvPtr->pos[atkSide][atkArrId].leechSeedMonId - 1) * 4 + tvPtr->pos[atkSide][atkArrId].leechSeedMoveSlot);
+ }
+ break;
+ case 3:
+ if (tvPtr->mon[atkSide][atkArrId].psnMonId != 0)
+ {
+ AddMovePoints(19, 0, atkSide ^ BIT_SIDE,
+ (tvPtr->mon[atkSide][atkArrId].psnMonId - 1) * 4 + tvPtr->mon[atkSide][atkArrId].psnMoveSlot);
+ }
+ if (tvPtr->mon[atkSide][atkArrId].badPsnMonId != 0)
+ {
+ AddMovePoints(19, 0, atkSide ^ BIT_SIDE,
+ (tvPtr->mon[atkSide][atkArrId].badPsnMonId - 1) * 4 + tvPtr->mon[atkSide][atkArrId].badPsnMoveSlot);
+ }
+ break;
+ case 4:
+ if (tvPtr->mon[atkSide][atkArrId].brnMonId != 0)
+ {
+ AddMovePoints(19, 0, atkSide ^ BIT_SIDE,
+ (tvPtr->mon[atkSide][atkArrId].brnMonId - 1) * 4 + tvPtr->mon[atkSide][atkArrId].brnMoveSlot);
+ }
+ break;
+ case 5:
+ if (tvPtr->pos[atkSide][atkArrId].nightmareMonId != 0)
+ {
+ AddMovePoints(19, 0, atkSide ^ BIT_SIDE,
+ (tvPtr->pos[atkSide][atkArrId].nightmareMonId - 1) * 4 + tvPtr->pos[atkSide][atkArrId].nightmareMoveSlot);
+ }
+ break;
+ case 6:
+ if (tvPtr->pos[atkSide][atkArrId].wrapMonId != 0)
+ {
+ AddMovePoints(19, 0, atkSide ^ BIT_SIDE,
+ (tvPtr->pos[atkSide][atkArrId].wrapMonId - 1) * 4 + tvPtr->pos[atkSide][atkArrId].wrapMoveSlot);
+ }
+ break;
+ case 7:
+ if (tvPtr->side[atkSide].spikesMonId != 0)
+ {
+ AddMovePoints(19, 0, atkSide ^ BIT_SIDE,
+ (tvPtr->side[atkSide].spikesMonId - 1) * 4 + tvPtr->side[atkSide].spikesMoveSlot);
+ }
+ break;
+ case 8:
+ if (tvPtr->side[atkSide].futureSightMonId != 0)
+ {
+ AddMovePoints(20, 0, atkSide,
+ (tvPtr->side[atkSide].futureSightMonId - 1) * 4 + tvPtr->side[atkSide].futureSightMoveSlot);
+ }
+ break;
+ case 9:
+ if (tvPtr->side[atkSide].doomDesireMonId != 0)
+ {
+ AddMovePoints(20, 0, atkSide,
+ (tvPtr->side[atkSide].doomDesireMonId - 1) * 4 + tvPtr->side[atkSide].doomDesireMoveSlot);
+ }
+ break;
+ case 10:
+ if (tvPtr->side[atkSide].perishSong
+ && tvPtr->side[atkSide].perishSongMonId - 1 != gBattlerPartyIndexes[gBattlerAttacker])
+ {
+ AddMovePoints(19, 0, atkSide,
+ (tvPtr->side[atkSide].perishSongMonId - 1) * 4 + tvPtr->side[atkSide].perishSongMoveSlot);
+ }
+ if (tvPtr->side[atkSide ^ BIT_SIDE].perishSong)
+ {
+ AddMovePoints(19, 0, atkSide ^ BIT_SIDE,
+ (tvPtr->side[atkSide ^ BIT_SIDE].perishSongMonId - 1) * 4 + tvPtr->side[atkSide ^ BIT_SIDE].perishSongMoveSlot);
+ }
+ break;
+ case 11:
+ if (tvPtr->side[atkSide ^ BIT_SIDE].destinyBondMonId != 0)
+ {
+ AddMovePoints(19, 0, atkSide ^ BIT_SIDE,
+ (tvPtr->side[atkSide ^ BIT_SIDE].destinyBondMonId - 1) * 4 + tvPtr->side[atkSide ^ BIT_SIDE].destinyBondMoveSlot);
+ }
+ break;
+ case 12:
+ for (i = 0; i < 2; i++)
+ {
+ if (tvPtr->pos[atkSide][i].confusionMonId != 0)
+ {
+ AddMovePoints(19, 0, atkSide ^ BIT_SIDE,
+ (tvPtr->pos[atkSide][i].confusionMonId - 1) * 4 + tvPtr->pos[atkSide][i].confusionMoveSlot);
+ }
+ }
+ break;
+ case 13:
+ if (tvPtr->side[atkSide].explosion)
+ {
+ AddMovePoints(19, 0, atkSide,
+ (tvPtr->side[atkSide].explosionMonId - 1) * 4 + tvPtr->side[atkSide].explosionMoveSlot);
+ }
+ if (tvPtr->side[atkSide ^ BIT_SIDE].explosion)
+ {
+ AddMovePoints(19, 0, atkSide ^ BIT_SIDE,
+ (tvPtr->side[atkSide ^ BIT_SIDE].explosionMonId - 1) * 4 + tvPtr->side[atkSide ^ BIT_SIDE].explosionMoveSlot);
+ }
+ break;
+ case 14:
+ if (targetFainted == TRUE)
+ {
+ AddMovePoints(20, 0, atkSide,
+ (gBattlerPartyIndexes[gBattlerAttacker]) * 4 + tvPtr->side[atkSide].usedMoveSlot);
+ }
+ break;
+ case 15:
+ break;
+ }
+ }
+ else
+ {
+ if (tvPtr->side[defSide].faintCause == 7)
+ {
+ if (tvPtr->side[defSide].spikesMonId != 0)
+ {
+ AddMovePoints(19, 0, defSide ^ BIT_SIDE,
+ (tvPtr->side[defSide].spikesMonId - 1) * 4 + tvPtr->side[defSide].spikesMoveSlot);
+ }
+ }
+ else
+ {
+ AddMovePoints(20, 0, atkSide,
+ (gBattlerPartyIndexes[gBattlerAttacker]) * 4 + tvPtr->side[atkSide].usedMoveSlot);
+ }
+ }
+}
+
+static void TrySetBattleSeminarShow(void)
+{
+ s32 i;
+ s32 dmgByMove[4];
+ u16 powerOverride;
+ u16 currMoveSaved;
+
+ if (gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ return;
+ else if (GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT)
+ return;
+ else if (gBattleMons[gBattlerAttacker].statStages[STAT_ACC] <= 5)
+ return;
+ else if (gBattleMons[gBattlerTarget].statStages[STAT_EVASION] > 6)
+ return;
+ else if (gCurrentMove == MOVE_HIDDEN_POWER || gCurrentMove == MOVE_WEATHER_BALL)
+ return;
+ else if (gBattleTypeFlags & (BATTLE_TYPE_PALACE | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID))
+ return;
+ else if (gBattleMoves[gBattleMons[gBattlerAttacker].moves[gMoveSelectionCursor[gBattlerAttacker]]].power == 0)
+ return;
+
+ i = 0;
+ currMoveSaved = gBattleMons[gBattlerAttacker].moves[gMoveSelectionCursor[gBattlerAttacker]];
+ do
+ {
+ if (currMoveSaved == sVariableDmgMoves[i])
+ break;
+ i++;
+ } while (sVariableDmgMoves[i] != 0xFFFF);
+
+ if (sVariableDmgMoves[i] != 0xFFFF)
+ return;
+
+ dmgByMove[gMoveSelectionCursor[gBattlerAttacker]] = gBattleMoveDamage;
+ currMoveSaved = gCurrentMove;
+ for (i = 0; i < 4; i++)
+ {
+ gCurrentMove = gBattleMons[gBattlerAttacker].moves[i];
+ powerOverride = 0;
+ if (ShouldCalculateDamage(gCurrentMove, &dmgByMove[i], &powerOverride))
+ {
+ u8 moveResultFlags;
+ u16 sideStatus = gSideStatuses[GET_BATTLER_SIDE(gBattlerTarget)];
+ gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBattlerAttacker], &gBattleMons[gBattlerTarget], gCurrentMove,
+ sideStatus, powerOverride,
+ 0, gBattlerAttacker, gBattlerTarget);
+
+ if (gStatuses3[gBattlerAttacker] & STATUS3_CHARGED_UP && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC)
+ gBattleMoveDamage *= 2;
+ if (gProtectStructs[gBattlerAttacker].helpingHand)
+ gBattleMoveDamage = gBattleMoveDamage * 15 / 10;
+
+ moveResultFlags = TypeCalc(gCurrentMove, gBattlerAttacker, gBattlerTarget);
+ dmgByMove[i] = gBattleMoveDamage;
+ if (dmgByMove[i] == 0 && !(moveResultFlags & MOVE_RESULT_NO_EFFECT))
+ dmgByMove[i] = 1;
+ }
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ if (i != gMoveSelectionCursor[gBattlerAttacker] && dmgByMove[i] > dmgByMove[gMoveSelectionCursor[gBattlerAttacker]])
+ {
+ u16 opponentSpecies, playerSpecies;
+ s32 bestMoveId;
+
+ if (gMoveSelectionCursor[gBattlerAttacker] != 0)
+ bestMoveId = 0;
+ else
+ bestMoveId = 1;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (i != gMoveSelectionCursor[gBattlerAttacker] && dmgByMove[i] > dmgByMove[bestMoveId])
+ bestMoveId = i;
+ }
+
+ opponentSpecies = GetMonData(&gEnemyParty [gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_SPECIES, NULL);
+ playerSpecies = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]], MON_DATA_SPECIES, NULL);
+ sub_80EE35C(opponentSpecies, playerSpecies, gMoveSelectionCursor[gBattlerAttacker], gBattleMons[gBattlerAttacker].moves, gBattleMons[gBattlerAttacker].moves[bestMoveId]);
+ break;
+ }
+ }
+
+ gBattleMoveDamage = dmgByMove[gMoveSelectionCursor[gBattlerAttacker]];
+ gCurrentMove = currMoveSaved;
+}
+
+static bool8 ShouldCalculateDamage(u16 moveId, s32 *dmg, u16 *powerOverride)
+{
+ if (gBattleMoves[moveId].power == 0)
+ {
+ *dmg = 0;
+ return FALSE;
+ }
+ else
+ {
+ s32 i = 0;
+ do
+ {
+ if (moveId == sVariableDmgMoves[i])
+ break;
+ i++;
+ } while (sVariableDmgMoves[i] != 0xFFFF);
+
+ if (sVariableDmgMoves[i] != 0xFFFF)
+ {
+ *dmg = 0;
+ return FALSE;
+ }
+ else if (moveId == MOVE_PSYWAVE)
+ {
+ *dmg = gBattleMons[gBattlerAttacker].level;
+ *dmg /= 2;
+ return FALSE;
+ }
+ else if (moveId == MOVE_MAGNITUDE)
+ {
+ *powerOverride = 10;
+ return TRUE;
+ }
+ else
+ {
+ return TRUE;
+ }
+ }
+}
+
+void BattleTv_ClearExplosionFaintCause(void)
+{
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ struct BattleTv *tvPtr = &gBattleStruct->tv;
+
+ tvPtr->side[B_SIDE_PLAYER].faintCause = 0;
+ tvPtr->side[B_SIDE_OPPONENT].faintCause = 0;
+
+ tvPtr->side[B_SIDE_PLAYER].faintCauseMonId = 0;
+ tvPtr->side[B_SIDE_OPPONENT].faintCauseMonId = 0;
+
+ tvPtr->side[B_SIDE_PLAYER].explosionMonId = 0;
+ tvPtr->side[B_SIDE_OPPONENT].explosionMonId = 0;
+
+ tvPtr->side[B_SIDE_PLAYER].explosionMoveSlot = 0;
+ tvPtr->side[B_SIDE_OPPONENT].explosionMoveSlot = 0;
+
+ tvPtr->side[B_SIDE_PLAYER].explosion = 0;
+ tvPtr->side[B_SIDE_OPPONENT].explosion = 0;
+ }
+}
+
+u8 GetBattlerMoveSlotId(u8 battlerId, u16 moveId)
+{
+ s32 i;
+ struct Pokemon *party;
+
+ if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ i = 0;
+ while (1)
+ {
+ if (i >= 4)
+ break;
+ if (GetMonData(&party[gBattlerPartyIndexes[battlerId]], MON_DATA_MOVE1 + i, NULL) == moveId)
+ break;
+ i++;
+ }
+
+ return i;
+}
+
+static void AddPointsBasedOnWeather(u16 weatherFlags, u16 moveId, u8 moveSlot)
+{
+ if (weatherFlags & WEATHER_RAIN_ANY)
+ AddMovePoints(3, moveId, moveSlot, 0);
+ else if (weatherFlags & WEATHER_SUN_ANY)
+ AddMovePoints(4, moveId, moveSlot, 0);
+ else if (weatherFlags & WEATHER_SANDSTORM_ANY)
+ AddMovePoints(5, moveId, moveSlot, 0);
+ else if (weatherFlags & WEATHER_HAIL_ANY)
+ AddMovePoints(6, moveId, moveSlot, 0);
+}
diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c
new file mode 100644
index 000000000..4f3a091ce
--- /dev/null
+++ b/src/fldeff_flash.c
@@ -0,0 +1,367 @@
+#include "global.h"
+#include "constants/songs.h"
+#include "braille_puzzles.h"
+#include "event_data.h"
+#include "event_scripts.h"
+#include "field_effect.h"
+#include "gpu_regs.h"
+#include "gba/io_reg.h"
+#include "main.h"
+#include "palette.h"
+#include "party_menu.h"
+#include "overworld.h"
+#include "rom6.h"
+#include "script.h"
+#include "sound.h"
+#include "sprite.h"
+#include "task.h"
+
+// structures
+struct FlashStruct
+{
+ u8 unk0;
+ u8 unk1;
+ bool8 unk2;
+ bool8 unk3;
+ void (*func)(void);
+};
+
+// static functions
+static void hm2_flash(void);
+static void sub_81371B4(void);
+static bool8 sub_8137304(void);
+static void sub_81373F0(void);
+static void sub_8137404(u8 taskId);
+static void sub_8137420(u8 taskId);
+static void sub_81374C4(u8 taskId);
+static void sub_813750C(u8 taskId);
+static void sub_8137574(u8 taskId);
+static void sub_81375A8(void);
+static void sub_81375BC(u8 taskId);
+static void sub_81375D8(u8 taskId);
+static void sub_8137678(u8 taskId);
+static void sub_81376DC(u8 taskId);
+
+// rodata
+static const struct FlashStruct gUnknown_085B27C8[] =
+{
+ {1, 4, 1, 0, sub_81375A8},
+ {2, 4, 1, 0, sub_81375A8},
+ {3, 4, 1, 0, sub_81375A8},
+ {5, 4, 1, 0, sub_81375A8},
+ {6, 4, 1, 0, sub_81375A8},
+ {7, 4, 1, 0, sub_81375A8},
+ {8, 4, 1, 0, sub_81375A8},
+ {9, 4, 1, 0, sub_81375A8},
+ {4, 1, 0, 1, sub_81373F0},
+ {4, 2, 0, 1, sub_81373F0},
+ {4, 3, 0, 1, sub_81373F0},
+ {4, 5, 0, 1, sub_81373F0},
+ {4, 6, 0, 1, sub_81373F0},
+ {4, 7, 0, 1, sub_81373F0},
+ {4, 8, 0, 1, sub_81373F0},
+ {4, 9, 0, 1, sub_81373F0},
+ {0, 0, 0, 0, NULL},
+};
+
+static const u16 gCaveTransitionPalette_White[] = INCBIN_U16("graphics/misc/cave_transition_white.gbapal");
+static const u16 gCaveTransitionPalette_Black[] = INCBIN_U16("graphics/misc/cave_transition_black.gbapal");
+
+static const u16 gUnknown_085B2890[] = INCBIN_U16("graphics/misc/85B2890.gbapal");
+static const u16 gUnknown_085B28A0[] = INCBIN_U16("graphics/misc/85B28A0.gbapal");
+static const u16 gCaveTransitionTilemap[] = INCBIN_U16("graphics/misc/cave_transition_map.bin.lz");
+static const u8 gCaveTransitionTiles[] = INCBIN_U8("graphics/misc/cave_transition.4bpp.lz");
+
+// text
+bool8 SetUpFieldMove_Flash(void)
+{
+ if (ShouldDoBrailleFlyEffect())
+ {
+ gSpecialVar_Result = GetCursorSelectionMonId();
+ gUnknown_03005DB0 = FieldCallback_Teleport;
+ gUnknown_0203CEEC = sub_8179918;
+ return TRUE;
+ }
+ else if (gMapHeader.cave == TRUE && !FlagGet(FLAG_SYS_USE_FLASH))
+ {
+ gUnknown_03005DB0 = FieldCallback_Teleport;
+ gUnknown_0203CEEC = hm2_flash;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void hm2_flash(void)
+{
+ u8 taskId = oei_task_add();
+ gFieldEffectArguments[0] = GetCursorSelectionMonId();
+ gTasks[taskId].data[8] = (uintptr_t)sub_81371B4 >> 16;
+ gTasks[taskId].data[9] = (uintptr_t)sub_81371B4;
+}
+
+static void sub_81371B4(void)
+{
+ PlaySE(SE_W115);
+ FlagSet(FLAG_SYS_USE_FLASH);
+ ScriptContext1_SetupScript(EventScript_2926F8);
+}
+
+static void sub_81371D4(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void sub_81371EC(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void c2_change_map(void)
+{
+ u16 ime;
+
+ SetVBlankCallback(NULL);
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ SetGpuReg(REG_OFFSET_BG2CNT, 0);
+ SetGpuReg(REG_OFFSET_BG1CNT, 0);
+ SetGpuReg(REG_OFFSET_BG0CNT, 0);
+ SetGpuReg(REG_OFFSET_BG2HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0VOFS, 0);
+ DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, (void *)OAM, OAM_SIZE);
+ DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2);
+ ResetPaletteFade();
+ ResetTasks();
+ ResetSpriteData();
+ ime = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = ime;
+ SetVBlankCallback(sub_81371EC);
+ SetMainCallback2(sub_81371D4);
+ if (!sub_8137304())
+ SetMainCallback2(gMain.savedCallback);
+}
+
+static bool8 sub_8137304(void)
+{
+ u8 i;
+ u8 v0 = get_map_light_from_warp0();
+ u8 v1 = Overworld_GetMapTypeOfSaveblockLocation();
+
+ for (i = 0; gUnknown_085B27C8[i].unk0; i++)
+ {
+ if (gUnknown_085B27C8[i].unk0 == v0 && gUnknown_085B27C8[i].unk1 == v1)
+ {
+ gUnknown_085B27C8[i].func();
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+bool8 sub_8137360(u8 a1, u8 a2)
+{
+ u8 i;
+ u8 v0 = a1;
+ u8 v1 = a2;
+
+ for (i = 0; gUnknown_085B27C8[i].unk0; i++)
+ {
+ if (gUnknown_085B27C8[i].unk0 == v0 && gUnknown_085B27C8[i].unk1 == v1)
+ {
+ return gUnknown_085B27C8[i].unk2;
+ }
+ }
+
+ return FALSE;
+}
+
+bool8 fade_type_for_given_maplight_pair(u8 a1, u8 a2)
+{
+ u8 i;
+ u8 v0 = a1;
+ u8 v1 = a2;
+
+ for (i = 0; gUnknown_085B27C8[i].unk0; i++)
+ {
+ if (gUnknown_085B27C8[i].unk0 == v0 && gUnknown_085B27C8[i].unk1 == v1)
+ {
+ return gUnknown_085B27C8[i].unk3;
+ }
+ }
+
+ return FALSE;
+}
+
+static void sub_81373F0(void)
+{
+ CreateTask(sub_8137404, 0);
+}
+
+static void sub_8137404(u8 taskId)
+{
+ gTasks[taskId].func = sub_8137420;
+}
+
+static void sub_8137420(u8 taskId)
+{
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ LZ77UnCompVram(gCaveTransitionTiles, (void *)0x600C000);
+ LZ77UnCompVram(gCaveTransitionTilemap, (void *)0x600F800);
+ LoadPalette(gCaveTransitionPalette_White, 0xE0, 0x20);
+ LoadPalette(gUnknown_085B28A0, 0xE0, 0x10);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0
+ | BLDCNT_EFFECT_BLEND
+ | BLDCNT_TGT2_BG1
+ | BLDCNT_TGT2_BG2
+ | BLDCNT_TGT2_BG3
+ | BLDCNT_TGT2_OBJ
+ | BLDCNT_TGT2_BD);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0)
+ | BGCNT_CHARBASE(3)
+ | BGCNT_SCREENBASE(31)
+ | BGCNT_16COLOR
+ | BGCNT_TXT256x256);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0
+ | DISPCNT_OBJ_1D_MAP
+ | DISPCNT_BG0_ON
+ | DISPCNT_OBJ_ON);
+ gTasks[taskId].func = sub_81374C4;
+ gTasks[taskId].data[0] = 16;
+ gTasks[taskId].data[1] = 0;
+}
+
+static void sub_81374C4(u8 taskId)
+{
+ u16 count = gTasks[taskId].data[1];
+ u16 blend = count + 0x1000;
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, blend);
+ if (count <= 0x10)
+ {
+ gTasks[taskId].data[1]++;
+ }
+ else
+ {
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].func = sub_813750C;
+ }
+}
+
+static void sub_813750C(u8 taskId)
+{
+ u16 count;
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 16));
+ count = gTasks[taskId].data[2];
+
+ if (count < 8)
+ {
+ gTasks[taskId].data[2]++;
+ LoadPalette(&gUnknown_085B28A0[count], 0xE0, 16 - 2 * count);
+ }
+ else
+ {
+ LoadPalette(gCaveTransitionPalette_White, 0, 0x20);
+ gTasks[taskId].func = sub_8137574;
+ gTasks[taskId].data[2] = 8;
+ }
+}
+
+static void sub_8137574(u8 taskId)
+{
+ if (gTasks[taskId].data[2])
+ gTasks[taskId].data[2]--;
+ else
+ SetMainCallback2(gMain.savedCallback);
+}
+
+static void sub_81375A8(void)
+{
+ CreateTask(sub_81375BC, 0);
+}
+
+static void sub_81375BC(u8 taskId)
+{
+ gTasks[taskId].func = sub_81375D8;
+}
+
+static void sub_81375D8(u8 taskId)
+{
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ LZ77UnCompVram(gCaveTransitionTiles, (void *)0x600C000);
+ LZ77UnCompVram(gCaveTransitionTilemap, (void *)0x600F800);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0)
+ | BGCNT_CHARBASE(3)
+ | BGCNT_SCREENBASE(31)
+ | BGCNT_16COLOR
+ | BGCNT_TXT256x256);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0
+ | DISPCNT_OBJ_1D_MAP
+ | DISPCNT_BG0_ON
+ | DISPCNT_OBJ_ON);
+ LoadPalette(gCaveTransitionPalette_White, 0xE0, 0x20);
+ LoadPalette(gCaveTransitionPalette_Black, 0, 0x20);
+ gTasks[taskId].func = sub_8137678;
+ gTasks[taskId].data[0] = 16;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[2] = 0;
+}
+
+static void sub_8137678(u8 taskId)
+{
+ u16 count = gTasks[taskId].data[2];
+
+ if (count < 16)
+ {
+ gTasks[taskId].data[2]++;
+ gTasks[taskId].data[2]++;
+ LoadPalette(&gUnknown_085B2890[15 - count], 0xE0, 2 * (count + 1));
+ }
+ else
+ {
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 16));
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0
+ | BLDCNT_EFFECT_BLEND
+ | BLDCNT_TGT2_BG1
+ | BLDCNT_TGT2_BG2
+ | BLDCNT_TGT2_BG3
+ | BLDCNT_TGT2_OBJ
+ | BLDCNT_TGT2_BD);
+ gTasks[taskId].func = sub_81376DC;
+ }
+}
+
+static void sub_81376DC(u8 taskId)
+{
+ u16 count = 16 - gTasks[taskId].data[1];
+ u16 blend = count + 0x1000;
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, blend);
+ if (count)
+ {
+ gTasks[taskId].data[1]++;
+ }
+ else
+ {
+ LoadPalette(gCaveTransitionPalette_Black, 0, 0x20);
+ SetMainCallback2(gMain.savedCallback);
+ }
+}
diff --git a/src/fldeff_groundshake.c b/src/fldeff_groundshake.c
new file mode 100644
index 000000000..bee4d2c4b
--- /dev/null
+++ b/src/fldeff_groundshake.c
@@ -0,0 +1,299 @@
+#include "global.h"
+#include "global.fieldmap.h"
+#include "constants/flags.h"
+#include "constants/songs.h"
+#include "event_data.h"
+#include "field_camera.h"
+#include "field_map_obj.h"
+#include "malloc.h"
+#include "random.h"
+#include "roulette_util.h"
+#include "script.h"
+#include "sound.h"
+#include "sprite.h"
+#include "task.h"
+
+// structures
+struct Struct203CF18 {
+ u8 taskId;
+ struct InnerStruct203CF18 unk4;
+}; //size = 0xC8
+
+// extern data
+extern const struct SpriteSheet gUnknown_08617D94[];
+extern const s16 gUnknown_08617D64[][3];
+
+// static functions
+static void sub_81BE808(u8 taskId);
+static void sub_81BE900(u8 taskId);
+static void sub_81BE968(void);
+static void sub_81BE9C0(u8 taskId);
+static void sub_81BEA00(u8 taskId);
+static void sub_81BEA20(void);
+static void sub_81BEAD8(struct Sprite* sprite);
+
+// rodata
+static const u8 gUnknown_08617E18[] = {0x3b, 0x43, 0x61, 0x00, 0x0f, 0x05, 0xff, 0x9b};
+
+static const union AnimCmd gSpriteAnim_8617E20[] =
+{
+ ANIMCMD_FRAME(0, 12),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd *const gSpriteAnimTable_8617E28[] =
+{
+ gSpriteAnim_8617E20,
+};
+
+static const struct OamData gUnknown_08617E2C =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct SpriteTemplate gUnknown_08617E34 = {
+ 0x0FA0, 0xFFFF, &gUnknown_08617E2C, gSpriteAnimTable_8617E28, NULL, gDummySpriteAffineAnimTable, sub_81BEAD8
+};
+
+static const union AnimCmd gSpriteAnim_8617E4C[] =
+{
+ ANIMCMD_FRAME(0, 12),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd *const gSpriteAnim_8617E54[] =
+{
+ gSpriteAnim_8617E4C,
+};
+
+static const struct OamData gSpriteAnim_8617E58 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct SpriteTemplate gUnknown_08617E60 = {
+ 0x0FA0, 0xFFFF, &gSpriteAnim_8617E58, gSpriteAnim_8617E54, NULL, gDummySpriteAffineAnimTable, sub_81BEAD8
+};
+
+// ewram
+EWRAM_DATA struct Struct203CF18 *gUnknown_0203CF18 = NULL;
+
+// text
+bool8 sub_81BE66C(void)
+{
+ if (!(gSaveBlock1Ptr->location.mapGroup == 0x0 && gSaveBlock1Ptr->location.mapNum == 0x1A))
+ return 0;
+ return FlagGet(FLAG_0x14E);
+}
+
+void sub_81BE698(u8 taskId)
+{
+ sub_8151E50(&(gUnknown_0203CF18->unk4));
+}
+
+void sub_81BE6AC(void)
+{
+ gUnknown_0203CF18 = NULL;
+}
+
+void sub_81BE6B8(void)
+{
+ if(gUnknown_0203CF18 != NULL)
+ {
+ gUnknown_0203CF18 = NULL;
+ return;
+ }
+ if(!(gSaveBlock1Ptr->location.mapGroup == 0x0 && gSaveBlock1Ptr->location.mapNum == 0x1A) || !FlagGet(FLAG_0x14E))
+ return;
+
+ gUnknown_0203CF18 = (struct Struct203CF18 *)AllocZeroed(sizeof(struct Struct203CF18));
+ sub_8151B3C(&(gUnknown_0203CF18->unk4));
+ sub_8151B68(&(gUnknown_0203CF18->unk4), gUnknown_08617E18);
+ sub_8151CA8(&(gUnknown_0203CF18->unk4), 1, 1);
+ gUnknown_0203CF18->taskId = CreateTask(sub_81BE698, 0xFF);
+}
+
+void sub_81BE72C(void)
+{
+ if(!(gSaveBlock1Ptr->location.mapGroup == 0x0 && gSaveBlock1Ptr->location.mapNum == 0x1A) || !FlagGet(FLAG_0x14E) || gUnknown_0203CF18 == NULL)
+ return;
+ if(FuncIsActiveTask(sub_81BE698))
+ DestroyTask(gUnknown_0203CF18->taskId);
+ sub_8151D28(&(gUnknown_0203CF18->unk4), 1, 1);
+ sub_8151C50(&(gUnknown_0203CF18->unk4), 1, 1);
+ Free(gUnknown_0203CF18);
+ gUnknown_0203CF18 = NULL;
+}
+
+void sub_81BE79C(void)
+{
+ u16 rand;
+ bool8 chance;
+
+ if(VarGet(VAR_0x40CB) != 0)
+ {
+ FlagClear(FLAG_0x14E);
+ return;
+ }
+ rand = Random();
+ chance = rand & 1;
+ if(FlagGet(FLAG_0x09D) == TRUE)
+ chance = TRUE;
+ if(chance)
+ {
+ FlagSet(FLAG_0x14E);
+ sub_81BE6B8();
+ return;
+ }
+ FlagClear(FLAG_0x14E);
+}
+
+void sub_81BE7F4(void)
+{
+ CreateTask(sub_81BE808, 0x8);
+}
+
+static void sub_81BE808(u8 taskId)
+{
+ u8 mapObjectIdBuffer;
+ struct MapObject *fieldMapObject;
+ struct MapObject *playerAvatarMapObject;
+
+ TryGetFieldObjectIdByLocalIdAndMap(0x2D, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &mapObjectIdBuffer);
+ fieldMapObject = &(gMapObjects[mapObjectIdBuffer]);
+ gSprites[fieldMapObject->spriteId].pos2.y += 4;
+ playerAvatarMapObject = &(gMapObjects[gPlayerAvatar.mapObjectId]);
+
+ if((gSprites[fieldMapObject->spriteId].pos1.y + gSprites[fieldMapObject->spriteId].pos2.y) >=
+ (gSprites[playerAvatarMapObject->spriteId].pos1.y + gSprites[playerAvatarMapObject->spriteId].pos2.y))
+ {
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ }
+}
+
+static void sp136_strengh_sound(u8 a, u8 b, u8 c, u8 d)
+{
+ u8 taskId;
+
+ taskId = CreateTask(sub_81BE900, 0x9);
+ gTasks[taskId].data[0] = b;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[2] = c;
+ gTasks[taskId].data[3] = d;
+ gTasks[taskId].data[4] = a;
+ SetCameraPanningCallback(NULL);
+ PlaySE(SE_W070);
+}
+
+static void sub_81BE900(u8 taskId)
+{
+ s16 *data;
+
+ data = gTasks[taskId].data;
+ data[1]++;
+ if((data[1] % data[3]) == 0)
+ {
+ data[1] = 0;
+ data[2]--;
+ data[0] = -data[0];
+ data[4] = -data[4];
+ SetCameraPanning(data[0], data[4]);
+ if(!data[2])
+ {
+ sub_81BE968();
+ DestroyTask(taskId);
+ InstallCameraPanAheadCallback();
+ }
+ }
+}
+
+static void sub_81BE968(void)
+{
+ u8 taskId;
+
+ taskId = FindTaskIdByFunc(sub_81BE9C0);
+ if(taskId != 0xFF)
+ gTasks[taskId].data[0]++;
+}
+
+void sub_81BE994(void)
+{
+ LoadSpriteSheets(gUnknown_08617D94);
+ sub_81BEA20();
+ CreateTask(sub_81BE9C0, 0x8);
+ sp136_strengh_sound(2, 1, 16, 3);
+}
+
+static void sub_81BE9C0(u8 taskId)
+{
+ u16 *data;
+
+ data = gTasks[taskId].data;
+ data[1]++;
+ if(data[1] == 1000 || data[0] == 17)
+ gTasks[taskId].func = sub_81BEA00;
+}
+
+static void sub_81BEA00(u8 taskId)
+{
+ FreeSpriteTilesByTag(4000);
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+}
+
+static void sub_81BEA20(void)
+{
+ u8 i;
+ u8 spriteId;
+
+ for(i = 0; i < 8; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_08617E60, gUnknown_08617D64[i][0] + 120, gUnknown_08617D64[i][1], 8);
+ gSprites[spriteId].oam.priority = 0;
+ gSprites[spriteId].oam.paletteNum = 0;
+ gSprites[spriteId].data[0] = i;
+ }
+ for(i = 0; i < 8; i++)
+ {
+ spriteId = CreateSprite(&gUnknown_08617E34, gUnknown_08617D64[i][0] + 115, gUnknown_08617D64[i][1] - 3, 8);
+ gSprites[spriteId].oam.priority = 0;
+ gSprites[spriteId].oam.paletteNum = 0;
+ gSprites[spriteId].data[0] = i;
+ }
+}
+
+static void sub_81BEAD8(struct Sprite* sprite)
+{
+ sprite->data[1] += 2;
+ sprite->pos2.y = (sprite->data[1] / 2);
+ if(((sprite->pos1.y) + (sprite->pos2.y)) > gUnknown_08617D64[sprite->data[0]][2])
+ {
+ DestroySprite(sprite);
+ sub_81BE968();
+ }
+}
diff --git a/src/fldeff_softboiled.c b/src/fldeff_softboiled.c
index b61cf9f32..d0a40a9a9 100644
--- a/src/fldeff_softboiled.c
+++ b/src/fldeff_softboiled.c
@@ -9,10 +9,10 @@
#include "strings.h"
#include "task.h"
-void sub_816166C(u8 taskId);
-void sub_81617B8(u8 taskId);
-void sub_81616C0(u8 taskId);
-void sub_8161724(u8 taskId);
+static void sub_816166C(u8 taskId);
+static void sub_81616C0(u8 taskId);
+static void sub_8161724(u8 taskId);
+static void sub_81617B8(u8 taskId);
bool8 SetUpFieldMove_SoftBoiled(void)
{
@@ -63,13 +63,13 @@ void sub_81615A8(u8 taskId)
sub_81B1F18(taskId, unk9, -1, GetMonData(&gPlayerParty[unk9], MON_DATA_MAX_HP)/5, sub_816166C);
}
-void sub_816166C(u8 taskId)
+static void sub_816166C(u8 taskId)
{
PlaySE(SE_KAIFUKU);
sub_81B1F18(taskId, gUnknown_0203CEC8.unkA, 1, GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_MAX_HP)/5, sub_81616C0);
}
-void sub_81616C0(u8 taskId)
+static void sub_81616C0(u8 taskId)
{
GetMonNickname(&gPlayerParty[gUnknown_0203CEC8.unkA], gStringVar1);
StringExpandPlaceholders(gStringVar4, gText_PkmnHPRestoredByVar2);
@@ -78,7 +78,7 @@ void sub_81616C0(u8 taskId)
gTasks[taskId].func = sub_8161724;
}
-void sub_8161724(u8 taskId)
+static void sub_8161724(u8 taskId)
{
if(sub_81B1BD4() == 1)
return;
@@ -92,7 +92,7 @@ void sub_8161724(u8 taskId)
gTasks[taskId].func = sub_81B1370;
}
-void sub_8161784(u8 taskId)
+static void sub_8161784(u8 taskId)
{
if(sub_81B1BD4() == 1)
return;
@@ -100,7 +100,7 @@ void sub_8161784(u8 taskId)
gTasks[taskId].func = sub_81B1370;
}
-void sub_81617B8(u8 taskId)
+static void sub_81617B8(u8 taskId)
{
PlaySE(SE_SELECT);
sub_81B1B5C(&gText_CantBeUsedOnPkmn, 0);
diff --git a/src/fldeff_strength.c b/src/fldeff_strength.c
index c1965d983..162479c73 100644
--- a/src/fldeff_strength.c
+++ b/src/fldeff_strength.c
@@ -7,9 +7,11 @@
#include "script.h"
#include "task.h"
-void FldEff_UseStrength(void);
-void sub_8145E74(void);
+// static functions
+static void FldEff_UseStrength(void);
+static void sub_8145E74(void);
+// text
bool8 SetUpFieldMove_Strength(void)
{
if (npc_before_player_of_type(87) == TRUE)
@@ -22,7 +24,7 @@ bool8 SetUpFieldMove_Strength(void)
return FALSE;
}
-void FldEff_UseStrength(void)
+static void FldEff_UseStrength(void)
{
gFieldEffectArguments[0] = GetCursorSelectionMonId();
ScriptContext1_SetupScript(FieryPath_EventScript_2908FD);
@@ -37,7 +39,7 @@ bool8 sub_8145E2C(void)
return FALSE;
}
-void sub_8145E74(void)
+static void sub_8145E74(void)
{
FieldEffectActiveListRemove(FLDEFF_USE_STRENGTH);
EnableBothScriptContexts();
diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c
index 3dfcd640d..100e440a5 100644
--- a/src/fldeff_sweetscent.c
+++ b/src/fldeff_sweetscent.c
@@ -6,7 +6,6 @@
#include "field_effect.h"
#include "field_player_avatar.h"
#include "field_screen.h"
-#include "fldeff_groundshake.h"
#include "palette.h"
#include "party_menu.h"
#include "rom6.h"
@@ -20,6 +19,8 @@ void hm2_sweet_scent(void);
void sub_8159F5C(void);
void sub_8159FEC(u8 taskId);
void sub_815A090(u8 taskId);
+void sub_81BE6B8(void);
+void sub_81BE72C(void);
bool8 SetUpFieldMove_SweetScent(void)
{
diff --git a/src/fossil_specials.c b/src/fossil_specials.c
new file mode 100644
index 000000000..95fafc17b
--- /dev/null
+++ b/src/fossil_specials.c
@@ -0,0 +1,770 @@
+#include "global.h"
+#include "constants/flags.h"
+#include "constants/songs.h"
+#include "bg.h"
+#include "event_data.h"
+#include "field_camera.h"
+#include "field_map_obj.h"
+#include "fieldmap.h"
+#include "global.fieldmap.h"
+#include "gpu_regs.h"
+#include "malloc.h"
+#include "menu.h"
+#include "random.h"
+#include "script.h"
+#include "sound.h"
+#include "sprite.h"
+#include "task.h"
+#include "window.h"
+
+#define MIRAGE_TOWER_GFX_LENGTH (sizeof(gUnknown_08617274) + sizeof(gMirageTower_Gfx))
+#define MIRAGE_TOWER_PALETTE_LENGTH 0x800
+#define ROOT_FOSSIL_GFX_LENGTH sizeof(gRootFossil_Gfx)
+#define ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH 0x100
+
+//struct
+struct Struct8617DA4 {
+ u8 x;
+ u8 y;
+ u16 tileId;
+};
+
+struct Struct203CF10 {
+ u8 *buffer;
+ u8 curr_buffer_index;
+};
+
+struct DynamicSpriteFrameImage{
+ u8 *data;
+ u16 size;
+};
+
+struct Struct203CF0C {
+ u8 *frameImageTiles;
+ struct DynamicSpriteFrameImage *frameImage;
+ u8 spriteId;
+ u16 *unkC;
+ u16 unk10;
+};
+
+// static functions
+static void sub_81BED50(u8 taskId);
+static void sub_81BEBF4(u8 taskId);
+static void sub_81BF028(u8 taskId);
+static void sub_81BF248(struct Sprite *);
+/*static*/ void sub_81BF2B8(u8* a, u16 b, u8 c, u8 d, u8 e);
+
+// .rodata
+static const u8 gUnknown_08617274[] = {00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00};
+static const u8 gMirageTower_Gfx[] = INCBIN_U8("graphics/misc/mirage_tower.4bpp");
+static const u16 gUnknown_08617B94[] = INCBIN_U16("graphics/misc/mirage_tower.bin");
+static const u16 gRootFossil_Pal[] = INCBIN_U16("graphics/misc/fossil.gbapal");
+static const u8 gRootFossil_Gfx[] = INCBIN_U8("graphics/misc/fossil.4bpp");
+static const u8 gMirageTowerCrumbles_Gfx[] = INCBIN_U8("graphics/misc/mirage_tower_crumbles.4bpp");
+static const u16 gMirageTowerCrumbles_Palette[] = INCBIN_U16("graphics/misc/mirage_tower_crumbles.gbapal");
+
+const s16 gUnknown_08617D64[][3] =
+ {
+ { 0, 10, 65},
+ { 17, 3, 50},
+ {-12, 0, 75},
+ { 10, 15, 90},
+ { 7, 8, 65},
+ {-18, 5, 75},
+ { 22, -10, 55},
+ {-24, -4, 65},
+ };
+
+const struct SpriteSheet gUnknown_08617D94[] =
+{
+ {gMirageTowerCrumbles_Gfx, 0x0080, 0x0fa0},
+ {NULL}
+};
+
+static const struct Struct8617DA4 gUnknown_08617DA4[] =
+ {
+ {0x12, 0x35, 0x251},
+ {0x13, 0x35, 0x251},
+ {0x14, 0x35, 0x251},
+ {0x12, 0x36, 0x251},
+ {0x13, 0x36, 0x251},
+ {0x14, 0x36, 0x251},
+ {0x12, 0x37, 0x251},
+ {0x13, 0x37, 0x251},
+ {0x14, 0x37, 0x251},
+ {0x12, 0x38, 0x251},
+ {0x13, 0x38, 0x251},
+ {0x14, 0x38, 0x251},
+ {0x12, 0x39, 0x259},
+ {0x13, 0x39, 0x259},
+ {0x14, 0x39, 0x259},
+ {0x12, 0x3A, 0x121},
+ {0x13, 0x3A, 0x121},
+ {0x14, 0x3A, 0x121},
+ };
+
+static const union AnimCmd gSpriteAnim_8617DEC[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+static const struct OamData gOamData_8617DF4 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 3,
+ .affineParam = 0,
+};
+
+static const union AnimCmd *const gSpriteAnimTable_8617DFC[] =
+{
+ gSpriteAnim_8617DEC,
+};
+
+static const struct SpriteTemplate gUnknown_08617E00 = {
+ 0xFFFF, 0xFFFF, &gOamData_8617DF4, gSpriteAnimTable_8617DFC, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+// ewram
+EWRAM_DATA u8* gUnknown_0203CF04 = NULL;
+EWRAM_DATA u8* gUnknown_0203CF08 = NULL;
+EWRAM_DATA struct Struct203CF0C *gUnknown_0203CF0C = NULL;
+EWRAM_DATA struct Struct203CF10 *gUnknown_0203CF10 = NULL;
+EWRAM_DATA u16 *gUnknown_0203CF14 = NULL;
+
+// iwram
+IWRAM_DATA u16 gUnknown_030012A8[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+
+// text
+void sub_81BEB24(void)
+{
+ u8 i;
+ for(i = 0; i < (sizeof(gUnknown_08617DA4)/sizeof(gUnknown_08617DA4[0])); i++)
+ MapGridSetMetatileIdAt(gUnknown_08617DA4[i].x + 7, gUnknown_08617DA4[i].y + 7, gUnknown_08617DA4[i].tileId);
+ DrawWholeMapView();
+}
+
+void sub_81BEB54(void)
+{
+ CreateTask(sub_81BED50, 0x9);
+}
+
+void sub_81BEB68(void)
+{
+ CreateTask(sub_81BEBF4, 0x9);
+}
+
+void sub_81BEB7C(void)
+{
+ CreateTask(sub_81BF028, 0x9);
+}
+
+void sub_81BEB90(void)
+{
+ SetGpuReg(REG_OFFSET_BG0HOFS, gUnknown_0203CF14[0]);
+ SetGpuReg(REG_OFFSET_BG0VOFS, gUnknown_0203CF14[1]);
+}
+
+void sub_81BEBB4(u8 taskId)
+{
+ if(!(gTasks[taskId].data[0]))
+ {
+ gUnknown_0203CF14[0] = -gUnknown_0203CF14[0];
+ gTasks[taskId].data[0] = 2;
+ sub_81BEB90();
+ }
+ else
+ gTasks[taskId].data[0]--;
+}
+
+static void sub_81BEBF4(u8 taskId)
+{
+ u8 zero;
+
+ switch(gTasks[taskId].data[0])
+ {
+ case 0:
+ FreeAllWindowBuffers();
+ SetBgAttribute(0, BG_CTRL_ATTR_MOSAIC, 2);
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ gUnknown_0203CF04 = (u8 *)AllocZeroed(MIRAGE_TOWER_GFX_LENGTH);
+ gUnknown_0203CF08 = (u8 *)AllocZeroed(MIRAGE_TOWER_PALETTE_LENGTH);
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ gTasks[taskId].data[0]++;
+ break;
+ case 2:
+ CpuSet(gUnknown_08617274, gUnknown_0203CF04, MIRAGE_TOWER_GFX_LENGTH / 2);
+ LoadBgTiles(0, gUnknown_0203CF04, MIRAGE_TOWER_GFX_LENGTH, 0);
+ gTasks[taskId].data[0]++;
+ break;
+ case 3:
+ SetBgTilemapBuffer(0, gUnknown_0203CF08);
+ CopyToBgTilemapBufferRect_ChangePalette(0, &gUnknown_08617B94, 12, 29, 6, 12, 17);
+ CopyBgTilemapBufferToVram(0);
+ gTasks[taskId].data[0]++;
+ break;
+ case 4:
+ ShowBg(0);
+ gTasks[taskId].data[0]++;
+ break;
+ case 5:
+ sub_81BEB24();
+ gTasks[taskId].data[0]++;
+ break;
+ case 6:
+ gUnknown_0203CF14 = (u16 *)Alloc(4);
+ zero = 0;
+ gUnknown_0203CF14[0] = 2;
+ gUnknown_0203CF14[1] = zero;
+ CreateTask(sub_81BEBB4, 0xA);
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ break;
+ }
+}
+
+#ifdef NONMATCHING
+#define OUTER_BUFFER_LENGTH 0x60
+#define INNER_BUFFER_LENGTH 0x30
+static void sub_81BED50(u8 taskId)
+{
+ u8 anotherTaskId, j;
+
+
+ switch(gTasks[taskId].data[0])
+ {
+ case 1:
+ gUnknown_0203CF10 = (struct Struct203CF10 *)AllocZeroed(OUTER_BUFFER_LENGTH * sizeof(struct Struct203CF10));
+ break;
+ case 3:
+ {
+ u16 i;
+ u16 left;
+ u32 index, next;
+
+ index = (u16)gTasks[taskId].data[3];
+ if(gTasks[taskId].data[3] <= (OUTER_BUFFER_LENGTH - 1))
+ {
+ if(gTasks[taskId].data[1] > 1)
+ {
+ index = (u8)index;
+ gUnknown_0203CF10[index].buffer = (u8 *)Alloc(INNER_BUFFER_LENGTH);
+ for(i = 0; i <= (INNER_BUFFER_LENGTH - 1); i++)
+ gUnknown_0203CF10[index].buffer[i] = i;
+ for(i = 0; i <= (INNER_BUFFER_LENGTH - 1); i++)
+ {
+ u16 rand1, rand2, temp;
+
+ rand1 = Random() % 0x30;
+ rand2 = Random() % 0x30;
+ temp = gUnknown_0203CF10[index].buffer[rand2];
+ gUnknown_0203CF10[index].buffer[rand2] = gUnknown_0203CF10[index].buffer[rand1];
+ gUnknown_0203CF10[index].buffer[rand1] = temp;
+ }
+ if(gTasks[taskId].data[3] <= (OUTER_BUFFER_LENGTH - 1))
+ gTasks[taskId].data[3]++;
+ gTasks[taskId].data[1] = 0;
+ }
+ gTasks[taskId].data[1]++;
+ }
+ index = (u8)gTasks[taskId].data[3];
+ for(left = (u8)gTasks[taskId].data[2]; left < (u16)index; left = next)
+ {
+ j = 0;
+ next = left + 1;
+ while(!j)
+ {
+ sub_81BF2B8(gUnknown_0203CF04, ((((OUTER_BUFFER_LENGTH - 1) - left) * INNER_BUFFER_LENGTH) + gUnknown_0203CF10[left].buffer[(gUnknown_0203CF10[left].curr_buffer_index)++]), 0, INNER_BUFFER_LENGTH, 1);
+ j++;
+ }
+ if(gUnknown_0203CF10[left].curr_buffer_index > (INNER_BUFFER_LENGTH - 1))
+ {
+ FREE_AND_SET_NULL(gUnknown_0203CF10[left].buffer);
+ gTasks[taskId].data[2]++;
+ if((left % 2) == 1)
+ gUnknown_0203CF14[1]--;
+ }
+ }
+ LoadBgTiles(0, gUnknown_0203CF04, MIRAGE_TOWER_GFX_LENGTH, 0);
+ if(gUnknown_0203CF10[OUTER_BUFFER_LENGTH - 1].curr_buffer_index > (INNER_BUFFER_LENGTH - 1))
+ break;
+ return;
+ }
+ case 4:
+ UnsetBgTilemapBuffer(0);
+ anotherTaskId = FindTaskIdByFunc(sub_81BEBB4);
+ if(anotherTaskId != 0xFF)
+ DestroyTask(anotherTaskId);
+ gUnknown_0203CF14[1] = gUnknown_0203CF14[0] = 0;
+ sub_81BEB90();
+ break;
+ case 5:
+ FREE_AND_SET_NULL(gUnknown_0203CF14);
+ FREE_AND_SET_NULL(gUnknown_0203CF10);
+ FREE_AND_SET_NULL(gUnknown_0203CF04);
+ FREE_AND_SET_NULL(gUnknown_0203CF08);
+ break;
+ case 6:
+ SetGpuRegBits(REG_OFFSET_BG2CNT, 0x2);
+ SetGpuRegBits(REG_OFFSET_BG0CNT, 0x0);
+ SetBgAttribute(0, BG_CTRL_ATTR_MOSAIC, 0);
+ sub_81971D0();
+ break;
+ case 7:
+ ShowBg(0);
+ break;
+ case 8:
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ break;
+ }
+ gTasks[taskId].data[0]++;
+}
+
+#else
+ASM_DIRECT
+static void sub_81BED50(u8 taskId)
+{
+ asm("\n\
+ .syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x10\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r10, r0\n\
+ ldr r1, =gTasks\n\
+ lsls r0, 2\n\
+ add r0, r10\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ ldrh r0, [r0, 0x8]\n\
+ subs r0, 0x1\n\
+ lsls r0, 16\n\
+ asrs r0, 16\n\
+ adds r6, r1, 0\n\
+ cmp r0, 0x7\n\
+ bls _081BED7C\n\
+ b _081BF002\n\
+ _081BED7C:\n\
+ lsls r0, 2\n\
+ ldr r1, =_081BED90\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .pool\n\
+ .align 2, 0\n\
+ _081BED90:\n\
+ .4byte _081BEDB0\n\
+ .4byte _081BF002\n\
+ .4byte _081BEDC4\n\
+ .4byte _081BEF64\n\
+ .4byte _081BEF94\n\
+ .4byte _081BEFD0\n\
+ .4byte _081BEFF0\n\
+ .4byte _081BEFF8\n\
+ _081BEDB0:\n\
+ ldr r4, =gUnknown_0203CF10\n\
+ movs r0, 0xC0\n\
+ lsls r0, 2\n\
+ bl AllocZeroed\n\
+ str r0, [r4]\n\
+ b _081BF002\n\
+ .pool\n\
+ _081BEDC4:\n\
+ mov r1, r10\n\
+ lsls r0, r1, 2\n\
+ adds r1, r0, r1\n\
+ lsls r1, 3\n\
+ adds r2, r1, r6\n\
+ ldrh r3, [r2, 0xE]\n\
+ movs r4, 0xE\n\
+ ldrsh r1, [r2, r4]\n\
+ str r0, [sp, 0x8]\n\
+ cmp r1, 0x5F\n\
+ bgt _081BEE8A\n\
+ movs r1, 0xA\n\
+ ldrsh r0, [r2, r1]\n\
+ cmp r0, 0x1\n\
+ ble _081BEE7C\n\
+ lsls r0, r3, 24\n\
+ lsrs r4, r0, 24\n\
+ movs r0, 0x30\n\
+ bl Alloc\n\
+ ldr r3, =gUnknown_0203CF10\n\
+ ldr r1, [r3]\n\
+ lsls r2, r4, 3\n\
+ adds r1, r2, r1\n\
+ str r0, [r1]\n\
+ movs r5, 0\n\
+ adds r4, r2, 0\n\
+ _081BEDFA:\n\
+ ldr r0, [r3]\n\
+ adds r0, r4, r0\n\
+ ldr r0, [r0]\n\
+ adds r0, r5\n\
+ strb r5, [r0]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ cmp r5, 0x2F\n\
+ bls _081BEDFA\n\
+ movs r5, 0\n\
+ ldr r7, =gUnknown_0203CF10\n\
+ adds r6, r2, 0\n\
+ _081BEE14:\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x30\n\
+ bl __umodsi3\n\
+ adds r4, r0, 0\n\
+ lsls r4, 16\n\
+ lsrs r4, 16\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x30\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ ldr r1, [r7]\n\
+ adds r1, r6, r1\n\
+ ldr r1, [r1]\n\
+ adds r0, r1, r0\n\
+ ldrb r2, [r0]\n\
+ adds r1, r4 \n\
+ ldrb r1, [r1]\n\
+ strb r1, [r0]\n\
+ ldr r0, [r7]\n\
+ adds r0, r6, r0\n\
+ ldr r0, [r0]\n\
+ adds r0, r4\n\
+ strb r2, [r0]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ cmp r5, 0x2F\n\
+ bls _081BEE14\n\
+ ldr r0, =gTasks\n\
+ ldr r1, [sp, 0x8]\n\
+ add r1, r10\n\
+ lsls r1, 3\n\
+ adds r2, r1, r0\n\
+ ldrh r3, [r2, 0xE]\n\
+ movs r4, 0xE\n\
+ ldrsh r1, [r2, r4]\n\
+ adds r6, r0, 0\n\
+ cmp r1, 0x5F\n\
+ bgt _081BEE78\n\
+ adds r0, r3, 0x1\n\
+ strh r0, [r2, 0xE]\n\
+ _081BEE78:\n\
+ movs r0, 0\n\
+ strh r0, [r2, 0xA]\n\
+ _081BEE7C:\n\
+ ldr r1, [sp, 0x8]\n\
+ add r1, r10\n\
+ lsls r1, 3\n\
+ adds r1, r6\n\
+ ldrh r0, [r1, 0xA]\n\
+ adds r0, 0x1\n\
+ strh r0, [r1, 0xA]\n\
+ _081BEE8A:\n\
+ ldr r0, [sp, 0x8]\n\
+ add r0, r10\n\
+ lsls r0, 3\n\
+ adds r0, r6\n\
+ ldrb r4, [r0, 0xE]\n\
+ ldrb r5, [r0, 0xC]\n\
+ lsls r0, r4, 16\n\
+ cmp r5, r4\n\
+ bcs _081BEF32\n\
+ str r0, [sp, 0xC]\n\
+ _081BEE9E:\n\
+ movs r6, 0\n\
+ adds r0, r5, 0x1\n\
+ str r0, [sp, 0x4]\n\
+ lsls r4, r5, 3\n\
+ movs r2, 0x5F\n\
+ subs r1, r2, r5\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 4\n\
+ mov r9, r0\n\
+ _081BEEB2:\n\
+ ldr r0, =gUnknown_0203CF04\n\
+ ldr r0, [r0]\n\
+ ldr r7, =gUnknown_0203CF10\n\
+ ldr r3, [r7]\n\
+ adds r3, r4, r3\n\
+ ldrb r2, [r3, 0x4]\n\
+ adds r1, r2, 0x1\n\
+ strb r1, [r3, 0x4]\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ ldr r1, [r3]\n\
+ adds r1, r2\n\
+ ldrb r1, [r1]\n\
+ add r1, r9\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ movs r2, 0x1\n\
+ mov r8, r2\n\
+ str r2, [sp]\n\
+ movs r2, 0\n\
+ movs r3, 0x30\n\
+ bl sub_81BF2B8\n\
+ adds r0, r6, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ cmp r6, 0\n\
+ beq _081BEEB2\n\
+ ldr r0, [r7]\n\
+ adds r1, r4, r0\n\
+ ldrb r0, [r1, 0x4]\n\
+ cmp r0, 0x2F\n\
+ bls _081BEF24\n\
+ ldr r0, [r1]\n\
+ bl Free\n\
+ ldr r0, [r7]\n\
+ adds r0, r4, r0\n\
+ movs r1, 0\n\
+ str r1, [r0]\n\
+ ldr r1, [sp, 0x8]\n\
+ add r1, r10\n\
+ lsls r1, 3\n\
+ ldr r4, =gTasks\n\
+ adds r1, r4\n\
+ ldrh r0, [r1, 0xC]\n\
+ adds r0, 0x1\n\
+ strh r0, [r1, 0xC]\n\
+ mov r0, r8\n\
+ ands r5, r0\n\
+ cmp r5, 0x1\n\
+ bne _081BEF24\n\
+ ldr r0, =gUnknown_0203CF14\n\
+ ldr r1, [r0]\n\
+ ldrh r0, [r1, 0x2]\n\
+ subs r0, 0x1\n\
+ strh r0, [r1, 0x2]\n\
+ _081BEF24:\n\
+ ldr r1, [sp, 0x4]\n\
+ lsls r0, r1, 16\n\
+ lsrs r5, r0, 16\n\
+ ldr r2, [sp, 0xC]\n\
+ lsrs r0, r2, 16\n\
+ cmp r5, r0\n\
+ bcc _081BEE9E\n\
+ _081BEF32:\n\
+ ldr r0, =gUnknown_0203CF04\n\
+ ldr r1, [r0]\n\
+ movs r2, 0x92\n\
+ lsls r2, 4\n\
+ movs r0, 0\n\
+ movs r3, 0\n\
+ bl LoadBgTiles\n\
+ ldr r0, =gUnknown_0203CF10\n\
+ ldr r0, [r0]\n\
+ movs r4, 0xBE\n\
+ lsls r4, 2\n\
+ adds r0, r4\n\
+ ldrb r0, [r0, 0x4]\n\
+ cmp r0, 0x2F\n\
+ bhi _081BF002\n\
+ b _081BF014\n\
+ .pool\n\
+ _081BEF64:\n\
+ movs r0, 0\n\
+ bl UnsetBgTilemapBuffer\n\
+ ldr r0, =sub_81BEBB4\n\
+ bl FindTaskIdByFunc\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0xFF\n\
+ beq _081BEF7C\n\
+ bl DestroyTask\n\
+ _081BEF7C:\n\
+ ldr r0, =gUnknown_0203CF14\n\
+ ldr r1, [r0]\n\
+ movs r0, 0\n\
+ strh r0, [r1]\n\
+ strh r0, [r1, 0x2]\n\
+ bl sub_81BEB90\n\
+ b _081BF002\n\
+ .pool\n\
+ _081BEF94:\n\
+ ldr r4, =gUnknown_0203CF14\n\
+ ldr r0, [r4]\n\
+ bl Free\n\
+ movs r5, 0\n\
+ str r5, [r4]\n\
+ ldr r4, =gUnknown_0203CF10\n\
+ ldr r0, [r4]\n\
+ bl Free\n\
+ str r5, [r4]\n\
+ ldr r4, =gUnknown_0203CF04\n\
+ ldr r0, [r4]\n\
+ bl Free\n\
+ str r5, [r4]\n\
+ ldr r4, =gUnknown_0203CF08\n\
+ ldr r0, [r4]\n\
+ bl Free\n\
+ str r5, [r4]\n\
+ b _081BF002\n\
+ .pool\n\
+ _081BEFD0:\n\
+ movs r0, 0xC\n\
+ movs r1, 0x2\n\
+ bl SetGpuRegBits\n\
+ movs r0, 0x8\n\
+ movs r1, 0\n\
+ bl SetGpuRegBits\n\
+ movs r0, 0\n\
+ movs r1, 0x7\n\
+ movs r2, 0\n\
+ bl SetBgAttribute\n\
+ bl sub_81971D0\n\
+ b _081BF002\n\
+ _081BEFF0:\n\
+ movs r0, 0\n\
+ bl ShowBg\n\
+ b _081BF002\n\
+ _081BEFF8:\n\
+ mov r0, r10\n\
+ bl DestroyTask\n\
+ bl EnableBothScriptContexts\n\
+ _081BF002:\n\
+ ldr r0, =gTasks\n\
+ mov r2, r10\n\
+ lsls r1, r2, 2\n\
+ add r1, r10\n\
+ lsls r1, 3\n\
+ adds r1, r0\n\
+ ldrh r0, [r1, 0x8]\n\
+ adds r0, 0x1\n\
+ strh r0, [r1, 0x8]\n\
+ _081BF014:\n\
+ add sp, 0x10\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n\
+ .syntax divided");
+}
+#endif // NONMATCHING
+
+static void sub_81BF028(u8 taskId)
+{
+ u16 i;
+
+ switch(gTasks[taskId].data[0])
+ {
+ case 1:
+ gUnknown_0203CF0C = (struct Struct203CF0C *)AllocZeroed(sizeof(struct Struct203CF0C));
+ gUnknown_0203CF0C->frameImageTiles = (u8 *)AllocZeroed(ROOT_FOSSIL_GFX_LENGTH);
+ gUnknown_0203CF0C->frameImage = (struct DynamicSpriteFrameImage *) AllocZeroed(sizeof(struct DynamicSpriteFrameImage));
+ gUnknown_0203CF0C->unkC = (u16 *)AllocZeroed(ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16));
+ gUnknown_0203CF0C->unk10 = 0;
+ break;
+ case 2:
+ {
+ u8 *buffer;
+ buffer = gUnknown_0203CF0C->frameImageTiles;
+ for(i = 0; i < ROOT_FOSSIL_GFX_LENGTH; i++, buffer++)
+ *buffer = gRootFossil_Gfx[i];
+ }
+ break;
+ case 3:
+ gUnknown_0203CF0C->frameImage->data = gUnknown_0203CF0C->frameImageTiles;
+ gUnknown_0203CF0C->frameImage->size = ROOT_FOSSIL_GFX_LENGTH;
+ break;
+ case 4:
+ {
+ u8 spriteId, zero;
+ struct SpriteTemplate fossilTemplate;
+
+ fossilTemplate = gUnknown_08617E00;
+ fossilTemplate.images = (struct SpriteFrameImage *)(gUnknown_0203CF0C->frameImage);
+ spriteId = CreateSprite(&fossilTemplate, 128, -16, 1);
+ gUnknown_0203CF0C->spriteId = spriteId;
+ zero = 0;
+ gSprites[gUnknown_0203CF0C->spriteId].centerToCornerVecX = zero;
+ gSprites[gUnknown_0203CF0C->spriteId].data[0] = gSprites[gUnknown_0203CF0C->spriteId].pos1.x;
+ gSprites[gUnknown_0203CF0C->spriteId].data[1] = 1;
+ }
+ case 5:
+ for(i = 0; i < ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH; i++)
+ gUnknown_0203CF0C->unkC[i] = i;
+ break;
+ case 6:
+ {
+ u16 rand1, rand2, temp, j;
+ j = (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16)) - 1;
+ for(i = 0; i <= j; i++)
+ {
+ rand1 = Random() % 0x100;
+ rand2 = Random() % 0x100;
+ j = (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16)) - 1;
+ temp = gUnknown_0203CF0C->unkC[rand2];
+ gUnknown_0203CF0C->unkC[rand2] = gUnknown_0203CF0C->unkC[rand1];
+ gUnknown_0203CF0C->unkC[rand1] = temp;
+ }
+ gSprites[gUnknown_0203CF0C->spriteId].callback = sub_81BF248;
+ break;
+ }
+ case 7:
+ if(gSprites[gUnknown_0203CF0C->spriteId].callback != SpriteCallbackDummy)
+ return;
+ DestroySprite(&gSprites[gUnknown_0203CF0C->spriteId]);
+ FREE_AND_SET_NULL(gUnknown_0203CF0C->unkC);;
+ FREE_AND_SET_NULL(gUnknown_0203CF0C->frameImage);
+ FREE_AND_SET_NULL(gUnknown_0203CF0C->frameImageTiles);
+ FREE_AND_SET_NULL(gUnknown_0203CF0C);
+ break;
+ case 8:
+ EnableBothScriptContexts();
+ }
+ ++gTasks[taskId].data[0];
+}
+
+static void sub_81BF248(struct Sprite *sprite)
+{
+ if (gUnknown_0203CF0C->unk10 >= (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH))
+ {
+ sprite->callback = SpriteCallbackDummy;
+ }
+ else if (sprite->pos1.y >= 0x60)
+ {
+ u8 i;
+ for (i = 0; i < 2; i++)
+ {
+ sub_81BF2B8(gUnknown_0203CF0C->frameImageTiles, gUnknown_0203CF0C->unkC[gUnknown_0203CF0C->unk10++], 0, 16, 0);
+ }
+ StartSpriteAnim(sprite, 0);
+ }
+ else
+ {
+ sprite->pos1.y++;
+ }
+}
diff --git a/src/pokemon.c b/src/pokemon.c
index e9a091c36..800b7c0cd 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -2198,7 +2198,7 @@ void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move)
(var) /= (gStatStageRatios)[(mon)->statStages[(statIndex)]][1]; \
}
-s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 bankAtk, u8 bankDef)
+s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 battlerIdAtk, u8 battlerIdDef)
{
u32 i;
s32 damage = 0;
@@ -2228,8 +2228,8 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if (attacker->item == ITEM_ENIGMA_BERRY)
{
- attackerHoldEffect = gEnigmaBerries[bankAtk].holdEffect;
- attackerHoldEffectParam = gEnigmaBerries[bankAtk].holdEffectParam;
+ attackerHoldEffect = gEnigmaBerries[battlerIdAtk].holdEffect;
+ attackerHoldEffectParam = gEnigmaBerries[battlerIdAtk].holdEffectParam;
}
else
{
@@ -2239,8 +2239,8 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if (defender->item == ITEM_ENIGMA_BERRY)
{
- defenderHoldEffect = gEnigmaBerries[bankDef].holdEffect;
- defenderHoldEffectParam = gEnigmaBerries[bankDef].holdEffectParam;
+ defenderHoldEffect = gEnigmaBerries[battlerIdDef].holdEffect;
+ defenderHoldEffectParam = gEnigmaBerries[battlerIdDef].holdEffectParam;
}
else
{
@@ -2251,13 +2251,13 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if (attacker->ability == ABILITY_HUGE_POWER || attacker->ability == ABILITY_PURE_POWER)
attack *= 2;
- if (ShouldGetStatBadgeBoost(FLAG_BADGE01_GET, bankAtk))
+ if (ShouldGetStatBadgeBoost(FLAG_BADGE01_GET, battlerIdAtk))
attack = (110 * attack) / 100;
- if (ShouldGetStatBadgeBoost(FLAG_BADGE05_GET, bankDef))
+ if (ShouldGetStatBadgeBoost(FLAG_BADGE05_GET, battlerIdDef))
defense = (110 * defense) / 100;
- if (ShouldGetStatBadgeBoost(FLAG_BADGE07_GET, bankAtk))
+ if (ShouldGetStatBadgeBoost(FLAG_BADGE07_GET, battlerIdAtk))
spAttack = (110 * spAttack) / 100;
- if (ShouldGetStatBadgeBoost(FLAG_BADGE07_GET, bankDef))
+ if (ShouldGetStatBadgeBoost(FLAG_BADGE07_GET, battlerIdDef))
spDefense = (110 * spDefense) / 100;
for (i = 0; i < ARRAY_COUNT(sHoldEffectToType); i++)
@@ -2442,7 +2442,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
}
// flash fire triggered
- if ((gBattleResources->flags->flags[bankAtk] & UNKNOWN_FLAG_FLASH_FIRE) && type == TYPE_FIRE)
+ if ((gBattleResources->flags->flags[battlerIdAtk] & UNKNOWN_FLAG_FLASH_FIRE) && type == TYPE_FIRE)
damage = (15 * damage) / 10;
}
diff --git a/src/scrcmd.c b/src/scrcmd.c
index b7e2474d4..a29e64979 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -1612,7 +1612,7 @@ bool8 ScrCmd_buffernumberstring(struct ScriptContext *ctx)
{
u8 stringVarIndex = ScriptReadByte(ctx);
u16 v1 = VarGet(ScriptReadHalfword(ctx));
- u8 v2 = sub_80EF370(v1);
+ u8 v2 = CountDigits(v1);
ConvertIntToDecimalStringN(sScriptStringVars[stringVarIndex], v1, 0, v2);
return FALSE;
diff --git a/src/tv.c b/src/tv.c
index 83cb18b3f..b7c2812fe 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -36,9 +36,7 @@
#include "decoration.h"
#include "secret_base.h"
#include "tv.h"
-
-extern const u8 gSpeciesNames[][11];
-extern const u8 gMoveNames[][13];
+#include "data2.h"
// Static type declarations
@@ -87,101 +85,100 @@ void tv_store_id_3x(TVShow *show);
void DeleteTVShowInArrayByIdx(TVShow *shows, u8 idx);
s8 FindEmptyTVSlotWithinFirstFiveShowsOfArray(TVShow *shows);
void FindActiveBroadcastByShowType_SetScriptResult(u8 kind);
-void InterviewBefore_BravoTrainerPkmnProfile(void);
-void InterviewBefore_NameRater(void);
+static void InterviewBefore_BravoTrainerPkmnProfile(void);
+static void InterviewBefore_NameRater(void);
u16 TV_GetSomeOtherSpeciesAlreadySeenByPlayer(u16 passedSpecies);
-void sub_80EFA88(void);
-void sub_80EF93C(TVShow *shows);
+static void sub_80EFA88(void);
+static void sub_80EF93C(TVShow *shows);
s8 sub_80EEE30(PokeNews *pokeNews);
bool8 sub_80EF0E4(u8 newsKind);
void ClearPokemonNewsI(u8 i);
-void sub_80F1254(TVShow *shows);
-void sub_80F12A4(TVShow *shows);
-void sub_80F0358(TVShow *player1, TVShow *player2, TVShow *player3, TVShow *player4);
-void sub_80F0C04(void);
-void sub_80F0708(void);
-void sub_80F0B64(void);
-s8 sub_80F06D0(TVShow *tvShows);
-bool8 sub_80F049C(TVShow *dest[], TVShow *src[], u8 idx);
-bool8 sub_80F0580(TVShow *tv1, TVShow *tv2, u8 idx);
-bool8 sub_80F05E8(TVShow *tv1, TVShow *tv2, u8 idx);
-bool8 sub_80F0668(TVShow *tv1, TVShow *tv2, u8 idx);
-void sub_80F0B00(u8 showIdx);
-void sub_80F0B24(u16 species, u8 showIdx);
-void sub_80F0D60(PokeNews *player1, PokeNews *player2, PokeNews *player3, PokeNews *player4);
-void sub_80F0EEC(void);
-void sub_80F0F24(void);
-s8 sub_80F0ECC(PokeNews *pokeNews, u8 idx);
-void sub_80F0E58(PokeNews *dest[], PokeNews *src[]);
-bool8 sub_80F0E84(PokeNews *dest, PokeNews *src, s8 slot);
+static void sub_80F1254(TVShow *shows);
+static void sub_80F12A4(TVShow *shows);
+static void sub_80F0358(TVShow *player1, TVShow *player2, TVShow *player3, TVShow *player4);
+static void sub_80F0C04(void);
+static void sub_80F0708(void);
+static void sub_80F0B64(void);
+static s8 sub_80F06D0(TVShow *tvShows);
+static bool8 sub_80F049C(TVShow *dest[], TVShow *src[], u8 idx);
+static bool8 sub_80F0580(TVShow *tv1, TVShow *tv2, u8 idx);
+static bool8 sub_80F05E8(TVShow *tv1, TVShow *tv2, u8 idx);
+static bool8 sub_80F0668(TVShow *tv1, TVShow *tv2, u8 idx);
+void SetTvShowInactive(u8 showIdx);
+static void sub_80F0B24(u16 species, u8 showIdx);
+static void sub_80F0D60(PokeNews *player1, PokeNews *player2, PokeNews *player3, PokeNews *player4);
+static void sub_80F0EEC(void);
+static void sub_80F0F24(void);
+static s8 sub_80F0ECC(PokeNews *pokeNews, u8 idx);
+static void sub_80F0E58(PokeNews *dest[], PokeNews *src[]);
+static bool8 sub_80F0E84(PokeNews *dest, PokeNews *src, s8 slot);
void TVShowDone(void);
-void InterviewAfter_FanClubLetter(void);
-void InterviewAfter_RecentHappenings(void);
-void InterviewAfter_PkmnFanClubOpinions(void);
-void InterviewAfter_DummyShow4(void);
-void InterviewAfter_BravoTrainerPokemonProfile(void);
-void InterviewAfter_BravoTrainerBattleTowerProfile(void);
-void InterviewAfter_ContestLiveUpdates(void);
+static void InterviewAfter_FanClubLetter(void);
+static void InterviewAfter_RecentHappenings(void);
+static void InterviewAfter_PkmnFanClubOpinions(void);
+static void InterviewAfter_DummyShow4(void);
+static void InterviewAfter_BravoTrainerPokemonProfile(void);
+static void InterviewAfter_BravoTrainerBattleTowerProfile(void);
+static void InterviewAfter_ContestLiveUpdates(void);
void UpdateWorldOfMastersAndPutItOnTheAir(void);
void PutPokemonTodayFailedOnTheAir(void);
-void sub_80ED718(void);
-void sub_80EED88(void);
+static void sub_80ED718(void);
+static void sub_80EED88(void);
void TV_SortPurchasesByQuantity(void);
-void sub_80ED8B4(u16 days);
+static void sub_80ED8B4(u16 days);
void UpdateMassOutbreakTimeLeft(u16 days);
-void sub_80EF120(u16 days);
-void sub_80EDA48(u16 days);
-void sub_80EEB98(u16 days);
+static void sub_80EF120(u16 days);
+static void sub_80EDA48(u16 days);
+static void sub_80EEB98(u16 days);
void PutFishingAdviceShowOnTheAir(void);
-void sub_80EDA80(void);
u8 TV_MonDataIdxToRibbon(u8 monDataIdx);
-void sub_80EEBF4(u8 actionIdx);
+static void sub_80EEBF4(u8 actionIdx);
bool8 IsPriceDiscounted(u8 newsKind);
-void InterviewBefore_FanClubLetter(void);
-void InterviewBefore_RecentHappenings(void);
-void InterviewBefore_PkmnFanClubOpinions(void);
-void InterviewBefore_Dummy(void);
-void InterviewBefore_BravoTrainerBTProfile(void);
-void InterviewBefore_ContestLiveUpdates(void);
-void InterviewBefore_3CheersForPokeblocks(void);
-void InterviewBefore_FanClubSpecial(void);
+static void InterviewBefore_FanClubLetter(void);
+static void InterviewBefore_RecentHappenings(void);
+static void InterviewBefore_PkmnFanClubOpinions(void);
+static void InterviewBefore_Dummy(void);
+static void InterviewBefore_BravoTrainerBTProfile(void);
+static void InterviewBefore_ContestLiveUpdates(void);
+static void InterviewBefore_3CheersForPokeblocks(void);
+static void InterviewBefore_FanClubSpecial(void);
void ChangeBoxPokemonNickname_CB(void);
-void DoTVShowPokemonFanClubLetter(void);
-void DoTVShowRecentHappenings(void);
-void DoTVShowPokemonFanClubOpinions(void);
-void DoTVShowDummiedOut(void);
-void DoTVShowPokemonNewsMassOutbreak(void);
-void DoTVShowBravoTrainerPokemonProfile(void);
-void DoTVShowBravoTrainerBattleTower(void);
-void DoTVShowPokemonTodaySuccessfulCapture(void);
-void DoTVShowTodaysSmartShopper(void);
-void DoTVShowTheNameRaterShow(void);
-void DoTVShowPokemonContestLiveUpdates(void);
-void DoTVShowPokemonBattleUpdate(void);
-void DoTVShow3CheersForPokeblocks(void);
-void DoTVShowPokemonTodayFailedCapture(void);
-void DoTVShowPokemonAngler(void);
-void DoTVShowTheWorldOfMasters(void);
-void DoTVShowTodaysRivalTrainer(void);
-void DoTVShowDewfordTrendWatcherNetwork(void);
-void DoTVShowHoennTreasureInvestigators(void);
-void DoTVShowFindThatGamer(void);
-void DoTVShowBreakingNewsTV(void);
-void DoTVShowSecretBaseVisit(void);
-void DoTVShowPokemonLotteryWinnerFlashReport(void);
-void DoTVShowThePokemonBattleSeminar(void);
-void DoTVShowTrainerFanClubSpecial(void);
-void DoTVShowTrainerFanClub(void);
-void DoTVShowSpotTheCuties(void);
-void DoTVShowPokemonNewsBattleFrontier(void);
-void DoTVShowWhatsNo1InHoennToday(void);
-void DoTVShowSecretBaseSecrets(void);
-void DoTVShowSafariFanClub(void);
-void DoTVShowPokemonContestLiveUpdates2(void);
+static void DoTVShowPokemonFanClubLetter(void);
+static void DoTVShowRecentHappenings(void);
+static void DoTVShowPokemonFanClubOpinions(void);
+static void DoTVShowDummiedOut(void);
+static void DoTVShowPokemonNewsMassOutbreak(void);
+static void DoTVShowBravoTrainerPokemonProfile(void);
+static void DoTVShowBravoTrainerBattleTower(void);
+static void DoTVShowPokemonTodaySuccessfulCapture(void);
+static void DoTVShowTodaysSmartShopper(void);
+static void DoTVShowTheNameRaterShow(void);
+static void DoTVShowPokemonContestLiveUpdates(void);
+static void DoTVShowPokemonBattleUpdate(void);
+static void DoTVShow3CheersForPokeblocks(void);
+static void DoTVShowPokemonTodayFailedCapture(void);
+static void DoTVShowPokemonAngler(void);
+static void DoTVShowTheWorldOfMasters(void);
+static void DoTVShowTodaysRivalTrainer(void);
+static void DoTVShowDewfordTrendWatcherNetwork(void);
+static void DoTVShowHoennTreasureInvestigators(void);
+static void DoTVShowFindThatGamer(void);
+static void DoTVShowBreakingNewsTV(void);
+static void DoTVShowSecretBaseVisit(void);
+static void DoTVShowPokemonLotteryWinnerFlashReport(void);
+static void DoTVShowThePokemonBattleSeminar(void);
+static void DoTVShowTrainerFanClubSpecial(void);
+static void DoTVShowTrainerFanClub(void);
+static void DoTVShowSpotTheCuties(void);
+static void DoTVShowPokemonNewsBattleFrontier(void);
+static void DoTVShowWhatsNo1InHoennToday(void);
+static void DoTVShowSecretBaseSecrets(void);
+static void DoTVShowSafariFanClub(void);
+static void DoTVShowPokemonContestLiveUpdates2(void);
// .rodata
-const struct {
+static const struct {
u16 species;
u16 moves[4];
u8 level;
@@ -214,8 +211,7 @@ const struct {
}
};
-// TODO: Figure out what these are, and define constants in include/flags.h
-const u16 sGoldSymbolFlags[] = {
+static const u16 sGoldSymbolFlags[] = {
FLAG_SYS_TOWER_GOLD,
FLAG_SYS_DOME_GOLD,
FLAG_SYS_PALACE_GOLD,
@@ -225,7 +221,7 @@ const u16 sGoldSymbolFlags[] = {
FLAG_SYS_PYRAMID_GOLD
};
-const u16 sSilverSymbolFlags[] = {
+static const u16 sSilverSymbolFlags[] = {
FLAG_SYS_TOWER_SILVER,
FLAG_SYS_DOME_SILVER,
FLAG_SYS_PALACE_SILVER,
@@ -235,8 +231,7 @@ const u16 sSilverSymbolFlags[] = {
FLAG_SYS_PYRAMID_SILVER
};
-// TODO: Figure out what these are, and define constants in include/vars.h
-const u16 sNumberOneVarsAndThresholds[][2] = {
+static const u16 sNumberOneVarsAndThresholds[][2] = {
{VAR_DAILY_SLOTS, 100},
{VAR_DAILY_ROULETTE, 50},
{VAR_DAILY_WILDS, 100},
@@ -246,7 +241,7 @@ const u16 sNumberOneVarsAndThresholds[][2] = {
{VAR_DAILY_BP, 30}
};
-const u8 *const sPokeNewsTextGroup_Upcoming[] = {
+static const u8 *const sPokeNewsTextGroup_Upcoming[] = {
NULL,
gPokeNewsTextSlateport_Upcoming,
gPokeNewsTextGameCorner_Upcoming,
@@ -254,7 +249,7 @@ const u8 *const sPokeNewsTextGroup_Upcoming[] = {
gPokeNewsTextBlendMaster_Upcoming
};
-const u8 *const sPokeNewsTextGroup_Ongoing[] = {
+static const u8 *const sPokeNewsTextGroup_Ongoing[] = {
NULL,
gPokeNewsTextSlateport_Ongoing,
gPokeNewsTextGameCorner_Ongoing,
@@ -262,7 +257,7 @@ const u8 *const sPokeNewsTextGroup_Ongoing[] = {
gPokeNewsTextBlendMaster_Ongoing
};
-const u8 *const sPokeNewsTextGroup_Ending[] = {
+static const u8 *const sPokeNewsTextGroup_Ending[] = {
NULL,
gPokeNewsTextSlateport_Ending,
gPokeNewsTextGameCorner_Ending,
@@ -276,7 +271,7 @@ u8 *const gTVStringVarPtrs[] = {
gStringVar3
};
-const u8 *const sTVFanClubTextGroup[] = {
+static const u8 *const sTVFanClubTextGroup[] = {
gTVFanClubText00,
gTVFanClubText01,
gTVFanClubText02,
@@ -287,7 +282,7 @@ const u8 *const sTVFanClubTextGroup[] = {
gTVFanClubText07
};
-const u8 *const sTVRecentHappeninssTextGroup[] = {
+static const u8 *const sTVRecentHappeninssTextGroup[] = {
gTVRecentHappeningsText00,
gTVRecentHappeningsText01,
gTVRecentHappeningsText02,
@@ -296,7 +291,7 @@ const u8 *const sTVRecentHappeninssTextGroup[] = {
gTVRecentHappeningsText05
};
-const u8 *const sTVFanClubOpinionsTextGroup[] = {
+static const u8 *const sTVFanClubOpinionsTextGroup[] = {
gTVFanClubOpinionsText00,
gTVFanClubOpinionsText01,
gTVFanClubOpinionsText02,
@@ -304,11 +299,11 @@ const u8 *const sTVFanClubOpinionsTextGroup[] = {
gTVFanClubOpinionsText04
};
-const u8 *const sTVMassOutbreakTextGroup[] = {
+static const u8 *const sTVMassOutbreakTextGroup[] = {
gTVMassOutbreakText00
};
-const u8 *const sTVPokemonTodaySuccessfulTextGroup[] = {
+static const u8 *const sTVPokemonTodaySuccessfulTextGroup[] = {
gTVPokemonTodaySuccessfulText00,
gTVPokemonTodaySuccessfulText01,
gTVPokemonTodaySuccessfulText02,
@@ -323,7 +318,7 @@ const u8 *const sTVPokemonTodaySuccessfulTextGroup[] = {
gTVPokemonTodaySuccessfulText11
};
-const u8 *const sTVTodaysSmartShopperTextGroup[] = {
+static const u8 *const sTVTodaysSmartShopperTextGroup[] = {
gTVTodaysSmartShopperText00,
gTVTodaysSmartShopperText01,
gTVTodaysSmartShopperText02,
@@ -339,7 +334,7 @@ const u8 *const sTVTodaysSmartShopperTextGroup[] = {
gTVTodaysSmartShopperText12
};
-const u8 *const sTVBravoTrainerTextGroup[] = {
+static const u8 *const sTVBravoTrainerTextGroup[] = {
gTVBravoTrainerText00,
gTVBravoTrainerText01,
gTVBravoTrainerText02,
@@ -351,7 +346,7 @@ const u8 *const sTVBravoTrainerTextGroup[] = {
gTVBravoTrainerText08
};
-const u8 *const sTV3CheersForPokeblocksTextGroup[] = {
+static const u8 *const sTV3CheersForPokeblocksTextGroup[] = {
gTV3CheersForPokeblocksText00,
gTV3CheersForPokeblocksText01,
gTV3CheersForPokeblocksText02,
@@ -360,7 +355,7 @@ const u8 *const sTV3CheersForPokeblocksTextGroup[] = {
gTV3CheersForPokeblocksText05
};
-const u8 *const sTVBravoTrainerBattleTowerTextGroup[] = {
+static const u8 *const sTVBravoTrainerBattleTowerTextGroup[] = {
gTVBravoTrainerBattleTowerText00,
gTVBravoTrainerBattleTowerText01,
gTVBravoTrainerBattleTowerText02,
@@ -378,7 +373,7 @@ const u8 *const sTVBravoTrainerBattleTowerTextGroup[] = {
gTVBravoTrainerBattleTowerText14
};
-const u8 *const sTVContestLiveUpdatesTextGroup[] = {
+static const u8 *const sTVContestLiveUpdatesTextGroup[] = {
gTVContestLiveUpdatesText00,
gTVContestLiveUpdatesText01,
gTVContestLiveUpdatesText02,
@@ -414,7 +409,7 @@ const u8 *const sTVContestLiveUpdatesTextGroup[] = {
gTVContestLiveUpdatesText32
};
-const u8 *const sTVPokemonBattleUpdateTextGroup[] = {
+static const u8 *const sTVPokemonBattleUpdateTextGroup[] = {
gTVPokemonBattleUpdateText00,
gTVPokemonBattleUpdateText01,
gTVPokemonBattleUpdateText02,
@@ -425,7 +420,7 @@ const u8 *const sTVPokemonBattleUpdateTextGroup[] = {
gTVPokemonBattleUpdateText07
};
-const u8 *const sTVTrainerFanClubSpecialTextGroup[] = {
+static const u8 *const sTVTrainerFanClubSpecialTextGroup[] = {
gTVTrainerFanClubSpecialText00,
gTVTrainerFanClubSpecialText01,
gTVTrainerFanClubSpecialText02,
@@ -434,7 +429,7 @@ const u8 *const sTVTrainerFanClubSpecialTextGroup[] = {
gTVTrainerFanClubSpecialText05
};
-const u8 *const sTVNameRaterTextGroup[] = {
+static const u8 *const sTVNameRaterTextGroup[] = {
gTVNameRaterText00,
gTVNameRaterText01,
gTVNameRaterText02,
@@ -456,14 +451,14 @@ const u8 *const sTVNameRaterTextGroup[] = {
gTVNameRaterText18
};
-const u8 *const sTVPokemonContestLiveUpdates2TextGroup[] = {
+static const u8 *const sTVPokemonContestLiveUpdates2TextGroup[] = {
gTVPokemonContestLiveUpdates2Text00,
gTVPokemonContestLiveUpdates2Text01,
gTVPokemonContestLiveUpdates2Text02,
gTVPokemonContestLiveUpdates2Text03
};
-const u8 *const sTVPokemonTodayFailedTextGroup[] = {
+static const u8 *const sTVPokemonTodayFailedTextGroup[] = {
gTVPokemonTodayFailedText00,
gTVPokemonTodayFailedText01,
gTVPokemonTodayFailedText02,
@@ -473,18 +468,18 @@ const u8 *const sTVPokemonTodayFailedTextGroup[] = {
gTVPokemonTodayFailedText06
};
-const u8 *const sTVPokemonAnslerTextGroup[] = {
+static const u8 *const sTVPokemonAnslerTextGroup[] = {
gTVPokemonAnglerText00,
gTVPokemonAnglerText01
};
-const u8 *const sTVWorldOfMastersTextGroup[] = {
+static const u8 *const sTVWorldOfMastersTextGroup[] = {
gTVWorldOfMastersText00,
gTVWorldOfMastersText01,
gTVWorldOfMastersText02
};
-const u8 *const sTVTodaysRivalTrainerTextGroup[] = {
+static const u8 *const sTVTodaysRivalTrainerTextGroup[] = {
gTVTodaysRivalTrainerText00,
gTVTodaysRivalTrainerText01,
gTVTodaysRivalTrainerText02,
@@ -498,7 +493,7 @@ const u8 *const sTVTodaysRivalTrainerTextGroup[] = {
gTVTodaysRivalTrainerText10
};
-const u8 *const sTVDewfordTrendWatcherNetworkTextGroup[] = {
+static const u8 *const sTVDewfordTrendWatcherNetworkTextGroup[] = {
gTVDewfordTrendWatcherNetworkText00,
gTVDewfordTrendWatcherNetworkText01,
gTVDewfordTrendWatcherNetworkText02,
@@ -508,20 +503,20 @@ const u8 *const sTVDewfordTrendWatcherNetworkTextGroup[] = {
gTVDewfordTrendWatcherNetworkText06
};
-const u8 *const sTVHoennTreasureInvestisatorsTextGroup[] = {
+static const u8 *const sTVHoennTreasureInvestisatorsTextGroup[] = {
gTVHoennTreasureInvestigatorsText00,
gTVHoennTreasureInvestigatorsText01,
gTVHoennTreasureInvestigatorsText02
};
-const u8 *const sTVFindThatGamerTextGroup[] = {
+static const u8 *const sTVFindThatGamerTextGroup[] = {
gTVFindThatGamerText00,
gTVFindThatGamerText01,
gTVFindThatGamerText02,
gTVFindThatGamerText03
};
-const u8 *const sTVBreakinsNewsTextGroup[] = {
+static const u8 *const sTVBreakinsNewsTextGroup[] = {
gTVBreakingNewsText00,
gTVBreakingNewsText01,
gTVBreakingNewsText02,
@@ -537,7 +532,7 @@ const u8 *const sTVBreakinsNewsTextGroup[] = {
gTVBreakingNewsText12
};
-const u8 *const sTVSecretBaseVisitTextGroup[] = {
+static const u8 *const sTVSecretBaseVisitTextGroup[] = {
gTVSecretBaseVisitText00,
gTVSecretBaseVisitText01,
gTVSecretBaseVisitText02,
@@ -554,11 +549,11 @@ const u8 *const sTVSecretBaseVisitTextGroup[] = {
gTVSecretBaseVisitText13
};
-const u8 *const sTVPokemonLotteryWinnerFlashReportTextGroup[] = {
+static const u8 *const sTVPokemonLotteryWinnerFlashReportTextGroup[] = {
gTVPokemonLotteryWinnerFlashReportText00
};
-const u8 *const sTVThePokemonBattleSeminarTextGroup[] = {
+static const u8 *const sTVThePokemonBattleSeminarTextGroup[] = {
gTVThePokemonBattleSeminarText00,
gTVThePokemonBattleSeminarText01,
gTVThePokemonBattleSeminarText02,
@@ -568,7 +563,7 @@ const u8 *const sTVThePokemonBattleSeminarTextGroup[] = {
gTVThePokemonBattleSeminarText06
};
-const u8 *const sTVTrainerFanClubTextGroup[] = {
+static const u8 *const sTVTrainerFanClubTextGroup[] = {
gTVTrainerFanClubText00,
gTVTrainerFanClubText01,
gTVTrainerFanClubText02,
@@ -583,7 +578,7 @@ const u8 *const sTVTrainerFanClubTextGroup[] = {
gTVTrainerFanClubText11
};
-const u8 *const sTVCutiesTextGroup[] = {
+static const u8 *const sTVCutiesTextGroup[] = {
gTVCutiesText00,
gTVCutiesText01,
gTVCutiesText02,
@@ -602,7 +597,7 @@ const u8 *const sTVCutiesTextGroup[] = {
gTVCutiesText15
};
-const u8 *const sTVPokemonNewsBattleFrontierTextGroup[] = {
+static const u8 *const sTVPokemonNewsBattleFrontierTextGroup[] = {
gTVPokemonNewsBattleFrontierText00,
gTVPokemonNewsBattleFrontierText01,
gTVPokemonNewsBattleFrontierText02,
@@ -624,7 +619,7 @@ const u8 *const sTVPokemonNewsBattleFrontierTextGroup[] = {
gTVPokemonNewsBattleFrontierText18
};
-const u8 *const sTVWhatsNo1InHoennTodayTextGroup[] = {
+static const u8 *const sTVWhatsNo1InHoennTodayTextGroup[] = {
gTVWhatsNo1InHoennTodayText00,
gTVWhatsNo1InHoennTodayText01,
gTVWhatsNo1InHoennTodayText02,
@@ -636,7 +631,7 @@ const u8 *const sTVWhatsNo1InHoennTodayTextGroup[] = {
gTVWhatsNo1InHoennTodayText08
};
-const u8 *const sTVSecretBaseSecretsTextGroup[] = {
+static const u8 *const sTVSecretBaseSecretsTextGroup[] = {
gTVSecretBaseSecretsText00,
gTVSecretBaseSecretsText01,
gTVSecretBaseSecretsText02,
@@ -682,7 +677,7 @@ const u8 *const sTVSecretBaseSecretsTextGroup[] = {
gTVSecretBaseSecretsText42
};
-const u8 *const sTVSafariFanClubTextGroup[] = {
+static const u8 *const sTVSafariFanClubTextGroup[] = {
gTVSafariFanClubText00,
gTVSafariFanClubText01,
gTVSafariFanClubText02,
@@ -696,7 +691,7 @@ const u8 *const sTVSafariFanClubTextGroup[] = {
gTVSafariFanClubText10
};
-const u8 *const sTVInSearchOfTrainersTextGroup[] = {
+static const u8 *const sTVInSearchOfTrainersTextGroup[] = {
gTVInSearchOfTrainersText00,
gTVInSearchOfTrainersText01,
gTVInSearchOfTrainersText02,
@@ -1253,7 +1248,7 @@ void tv_store_id_2x(TVShow *show)
show->common.trainerIdHi = id >> 8;
}
-void InterviewAfter_ContestLiveUpdates(void)
+static void InterviewAfter_ContestLiveUpdates(void)
{
TVShow *show;
TVShow *show2;
@@ -1281,7 +1276,7 @@ void InterviewAfter_ContestLiveUpdates(void)
}
}
-void PutBattleUpdateOnTheAir(u8 a0, u16 a1, u16 a2, u16 a3)
+void PutBattleUpdateOnTheAir(u8 opponentLinkPlayerId, u16 move, u16 speciesPlayer, u16 speciesOpponent)
{
TVShow *show;
u8 name[32];
@@ -1308,21 +1303,21 @@ void PutBattleUpdateOnTheAir(u8 a0, u16 a1, u16 a2, u16 a3)
{
show->battleUpdate.battleType = 0;
}
- show->battleUpdate.move = a1;
- show->battleUpdate.species2 = a2;
- show->battleUpdate.species = a3;
- StringCopy(name, gLinkPlayers[a0].name);
+ show->battleUpdate.move = move;
+ show->battleUpdate.speciesPlayer = speciesPlayer;
+ show->battleUpdate.speciesOpponent = speciesOpponent;
+ StringCopy(name, gLinkPlayers[opponentLinkPlayerId].name);
StripExtCtrlCodes(name);
StringCopy(show->battleUpdate.linkOpponentName, name);
tv_store_id_2x(show);
show->battleUpdate.language = gGameLanguage;
- if (show->battleUpdate.language == LANGUAGE_JAPANESE || gLinkPlayers[a0].language == LANGUAGE_JAPANESE)
+ if (show->battleUpdate.language == LANGUAGE_JAPANESE || gLinkPlayers[opponentLinkPlayerId].language == LANGUAGE_JAPANESE)
{
show->battleUpdate.linkOpponentLanguage = LANGUAGE_JAPANESE;
}
else
{
- show->battleUpdate.linkOpponentLanguage = gLinkPlayers[a0].language;
+ show->battleUpdate.linkOpponentLanguage = gLinkPlayers[opponentLinkPlayerId].language;
}
}
}
@@ -1472,7 +1467,7 @@ void ContestLiveUpdates_BeforeInterview_5(u8 a0, u8 a1)
}
}
-void InterviewAfter_BravoTrainerPokemonProfile(void)
+static void InterviewAfter_BravoTrainerPokemonProfile(void)
{
TVShow *show;
TVShow *show2;
@@ -1538,7 +1533,7 @@ void BravoTrainerPokemonProfile_BeforeInterview2(u8 a0)
}
}
-void InterviewAfter_BravoTrainerBattleTowerProfile(void)
+static void InterviewAfter_BravoTrainerBattleTowerProfile(void)
{
TVShow *show;
@@ -1671,7 +1666,7 @@ void PutLilycoveContestLadyShowOnTheAir(void)
}
}
-void InterviewAfter_FanClubLetter(void)
+static void InterviewAfter_FanClubLetter(void)
{
TVShow *show;
@@ -1684,7 +1679,7 @@ void InterviewAfter_FanClubLetter(void)
show->fanclubLetter.language = gGameLanguage;
}
-void InterviewAfter_RecentHappenings(void)
+static void InterviewAfter_RecentHappenings(void)
{
TVShow *show;
@@ -1697,7 +1692,7 @@ void InterviewAfter_RecentHappenings(void)
show->recentHappenings.language = gGameLanguage;
}
-void InterviewAfter_PkmnFanClubOpinions(void)
+static void InterviewAfter_PkmnFanClubOpinions(void)
{
TVShow *show;
@@ -1722,14 +1717,14 @@ void InterviewAfter_PkmnFanClubOpinions(void)
}
}
-void InterviewAfter_DummyShow4()
+static void InterviewAfter_DummyShow4(void)
{
TVShow *show;
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
}
-void sub_80ED718(void)
+static void sub_80ED718(void)
{
u8 i;
u16 outbreakIdx;
@@ -1794,7 +1789,6 @@ void EndMassOutbreak(void)
void UpdateTVShowsPerDay(u16 days)
{
-
sub_80ED8B4(days);
UpdateMassOutbreakTimeLeft(days);
sub_80EF120(days);
@@ -1802,7 +1796,7 @@ void UpdateTVShowsPerDay(u16 days)
sub_80EEB98(days);
}
-void sub_80ED8B4(u16 days)
+static void sub_80ED8B4(u16 days)
{
u8 i;
TVShow *show;
@@ -1872,7 +1866,7 @@ void PutFishingAdviceShowOnTheAir(void)
{
TVShow *show;
- sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_FISHING_ADVICE, FALSE) != TRUE)
{
show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
@@ -1892,7 +1886,7 @@ void SetPokemonAnglerSpecies(u16 species)
sPokemonAnglerSpecies = species;
}
-void sub_80EDA48(u16 days)
+static void sub_80EDA48(u16 days)
{
TVShow *show;
@@ -2088,7 +2082,7 @@ void sub_80EDE84(u16 nCoinsSpent)
sFindThatGamerCoinsSpent = nCoinsSpent;
}
-void sub_80EDE98(TVShow *show)
+static void sub_80EDE98(TVShow *show)
{
u8 i;
u8 j;
@@ -2153,7 +2147,7 @@ void sub_80EDE98(TVShow *show)
}
}
-void sub_80EDFB4(TVShow *show)
+static void sub_80EDFB4(TVShow *show)
{
u8 i;
u16 move;
@@ -2590,7 +2584,7 @@ void sub_80EEA70(void)
}
}
-void sub_80EEB98(u16 days)
+static void sub_80EEB98(u16 days)
{
u8 i;
@@ -2608,7 +2602,7 @@ void sub_80EEB98(u16 days)
}
}
-void sub_80EEBF4(u8 actionIdx)
+static void sub_80EEBF4(u8 actionIdx)
{
TVShow *show;
@@ -2664,7 +2658,7 @@ void sub_80EED60(u16 delta)
// PokeNews
-void sub_80EED88(void)
+static void sub_80EED88(void)
{
u8 newsKind;
@@ -2715,7 +2709,7 @@ void ClearPokemonNewsI(u8 i)
gSaveBlock1Ptr->pokeNews[i].days = 0;
}
-void sub_80EEEB8(void)
+static void sub_80EEEB8(void)
{
u8 i;
u8 j;
@@ -2845,7 +2839,7 @@ bool8 sub_80EF0E4(u8 newsKind)
return FALSE;
}
-void sub_80EF120(u16 days)
+static void sub_80EF120(u16 days)
{
u8 i;
@@ -2923,48 +2917,25 @@ void TV_PrintIntToStringVar(u8 varIdx, int value)
{
int nDigits;
- nDigits = sub_80EF370(value);
+ nDigits = CountDigits(value);
ConvertIntToDecimalStringN(gTVStringVarPtrs[varIdx], value, STR_CONV_MODE_LEFT_ALIGN, nDigits);
}
-size_t sub_80EF370(int value)
+size_t CountDigits(int value)
{
- if (value / 10 == 0)
- {
- return 1;
- }
- if (value / 100 == 0)
- {
- return 2;
- }
- if (value / 1000 == 0)
- {
- return 3;
- }
- if (value / 10000 == 0)
- {
- return 4;
- }
- if (value / 100000 == 0)
- {
- return 5;
- }
- if (value / 1000000 == 0)
- {
- return 6;
- }
- if (value / 10000000 == 0)
- {
- return 7;
- }
- if (value / 100000000 == 0)
- {
- return 8;
- }
+ if (value / 10 == 0) return 1;
+ if (value / 100 == 0) return 2;
+ if (value / 1000 == 0) return 3;
+ if (value / 10000 == 0) return 4;
+ if (value / 100000 == 0) return 5;
+ if (value / 1000000 == 0) return 6;
+ if (value / 10000000 == 0) return 7;
+ if (value / 100000000 == 0) return 8;
+
return 1;
}
-void sub_80EF40C(u8 varIdx, TVShow *show)
+static void sub_80EF40C(u8 varIdx, TVShow *show)
{
u8 i;
int price;
@@ -3095,7 +3066,7 @@ void InterviewBefore(void)
}
}
-void InterviewBefore_FanClubLetter(void)
+static void InterviewBefore_FanClubLetter(void)
{
FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_FAN_CLUB_LETTER);
if (!gSpecialVar_Result)
@@ -3105,7 +3076,7 @@ void InterviewBefore_FanClubLetter(void)
}
}
-void InterviewBefore_RecentHappenings(void)
+static void InterviewBefore_RecentHappenings(void)
{
FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_RECENT_HAPPENINGS);
if (!gSpecialVar_Result)
@@ -3114,7 +3085,7 @@ void InterviewBefore_RecentHappenings(void)
}
}
-void InterviewBefore_PkmnFanClubOpinions(void)
+static void InterviewBefore_PkmnFanClubOpinions(void)
{
FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_PKMN_FAN_CLUB_OPINIONS);
if (!gSpecialVar_Result)
@@ -3126,17 +3097,17 @@ void InterviewBefore_PkmnFanClubOpinions(void)
}
}
-void InterviewBefore_Dummy(void)
+static void InterviewBefore_Dummy(void)
{
gSpecialVar_Result = TRUE;
}
-void InterviewBefore_NameRater(void)
+static void InterviewBefore_NameRater(void)
{
FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_NAME_RATER_SHOW);
}
-void InterviewBefore_BravoTrainerPkmnProfile(void)
+static void InterviewBefore_BravoTrainerPkmnProfile(void)
{
FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE);
if (!gSpecialVar_Result)
@@ -3145,17 +3116,17 @@ void InterviewBefore_BravoTrainerPkmnProfile(void)
}
}
-void InterviewBefore_ContestLiveUpdates(void)
+static void InterviewBefore_ContestLiveUpdates(void)
{
FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_CONTEST_LIVE_UPDATES);
}
-void InterviewBefore_3CheersForPokeblocks(void)
+static void InterviewBefore_3CheersForPokeblocks(void)
{
FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_3_CHEERS_FOR_POKEBLOCKS);
}
-void InterviewBefore_BravoTrainerBTProfile(void)
+static void InterviewBefore_BravoTrainerBTProfile(void)
{
FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE);
if (!gSpecialVar_Result)
@@ -3164,7 +3135,7 @@ void InterviewBefore_BravoTrainerBTProfile(void)
}
}
-void InterviewBefore_FanClubSpecial(void)
+static void InterviewBefore_FanClubSpecial(void)
{
FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_FAN_CLUB_SPECIAL);
if (!gSpecialVar_Result)
@@ -3205,7 +3176,7 @@ void DeleteTVShowInArrayByIdx(TVShow *shows, u8 idx)
}
}
-void sub_80EF93C(TVShow *shows)
+static void sub_80EF93C(TVShow *shows)
{
u8 i;
u8 j;
@@ -3277,7 +3248,7 @@ u16 TV_GetSomeOtherSpeciesAlreadySeenByPlayer(u16 passedSpecies)
return species;
}
-void sub_80EFA88(void)
+static void sub_80EFA88(void)
{
sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
gSpecialVar_0x8006 = sCurTVShowSlot;
@@ -3686,7 +3657,7 @@ void sub_80F01E8(void *src, u32 size, u8 masterIdx)
}
}
-void sub_80F0358(TVShow player1[25], TVShow player2[25], TVShow player3[25], TVShow player4[25])
+static void sub_80F0358(TVShow player1[25], TVShow player2[25], TVShow player3[25], TVShow player4[25])
{
u8 i;
u8 j;
@@ -3734,7 +3705,7 @@ void sub_80F0358(TVShow player1[25], TVShow player2[25], TVShow player3[25], TVS
}
}
-bool8 sub_80F049C(TVShow *dest[25], TVShow *src[25], u8 idx)
+static bool8 sub_80F049C(TVShow *dest[25], TVShow *src[25], u8 idx)
{
u8 value;
u8 switchval;
@@ -3765,7 +3736,7 @@ bool8 sub_80F049C(TVShow *dest[25], TVShow *src[25], u8 idx)
return FALSE;
}
-u8 sub_80F0580(TVShow *tv1, TVShow *tv2, u8 idx)
+static bool8 sub_80F0580(TVShow *tv1, TVShow *tv2, u8 idx)
{
u32 linkTrainerId = GetLinkPlayerTrainerId(idx);
@@ -3782,7 +3753,7 @@ u8 sub_80F0580(TVShow *tv1, TVShow *tv2, u8 idx)
return TRUE;
}
-u8 sub_80F05E8(TVShow *tv1, TVShow *tv2, u8 idx)
+static bool8 sub_80F05E8(TVShow *tv1, TVShow *tv2, u8 idx)
{
u32 linkTrainerId = GetLinkPlayerTrainerId(idx);
if ((linkTrainerId & 0xFF) == tv2->common.srcTrainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.srcTrainerIdHi)
@@ -3802,7 +3773,7 @@ u8 sub_80F05E8(TVShow *tv1, TVShow *tv2, u8 idx)
return TRUE;
}
-u8 sub_80F0668(TVShow *tv1, TVShow *tv2, u8 idx)
+static bool8 sub_80F0668(TVShow *tv1, TVShow *tv2, u8 idx)
{
u32 linkTrainerId = GetLinkPlayerTrainerId(idx);
if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi)
@@ -3819,7 +3790,7 @@ u8 sub_80F0668(TVShow *tv1, TVShow *tv2, u8 idx)
return TRUE;
}
-s8 sub_80F06D0(TVShow *tvShows)
+static s8 sub_80F06D0(TVShow *tvShows)
{
u8 i;
@@ -3834,7 +3805,7 @@ s8 sub_80F06D0(TVShow *tvShows)
}
#ifdef NONMATCHING
-void sub_80F0708(void) // FIXME: register allocation shenanigans
+static void sub_80F0708(void) // FIXME: register allocation shenanigans
{
u16 i;
TVShow *show;
@@ -3850,8 +3821,8 @@ void sub_80F0708(void) // FIXME: register allocation shenanigans
case TVSHOW_3_CHEERS_FOR_POKEBLOCKS:
break;
case TVSHOW_BATTLE_UPDATE:
- sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->battleUpdate.species2, i);
- sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->battleUpdate.species, i);
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->battleUpdate.speciesPlayer, i);
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->battleUpdate.speciesOpponent, i);
break;
case TVSHOW_FAN_CLUB_SPECIAL:
break;
@@ -3954,13 +3925,13 @@ void sub_80F0708(void) // FIXME: register allocation shenanigans
break;
default:
- sub_80F0B00(i);
+ SetTvShowInactive(i);
break;
}
}
}
#else
-ASM_DIRECT void sub_80F0708(void)
+ASM_DIRECT static void sub_80F0708(void)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tmov r7, r9\n"
@@ -4377,7 +4348,7 @@ ASM_DIRECT void sub_80F0708(void)
"\tmov r2, r9\n"
"\tlsls r0, r2, 24\n"
"\tlsrs r0, 24\n"
- "\tbl sub_80F0B00\n"
+ "\tbl SetTvShowInactive\n"
"_080F0AE2_break:\n"
"\tmov r0, r9\n"
"\tadds r0, 0x1\n"
@@ -4398,12 +4369,12 @@ ASM_DIRECT void sub_80F0708(void)
}
#endif
-void sub_80F0B00(u8 showIdx)
+void SetTvShowInactive(u8 showIdx)
{
gSaveBlock1Ptr->tvShows[showIdx].common.active = FALSE;
}
-void sub_80F0B24(u16 species, u8 showIdx)
+static void sub_80F0B24(u16 species, u8 showIdx)
{
if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), 0) == 0)
{
@@ -4411,7 +4382,7 @@ void sub_80F0B24(u16 species, u8 showIdx)
}
}
-void sub_80F0B64(void)
+static void sub_80F0B64(void)
{
u16 i;
@@ -4444,7 +4415,7 @@ void sub_80F0BB8(void)
}
}
-void sub_80F0C04(void)
+static void sub_80F0C04(void)
{
s8 i;
s8 ct;
@@ -4498,7 +4469,7 @@ void sub_80F0C7C(void *src, u32 size, u8 masterIdx)
}
}
-void sub_80F0D60(PokeNews player1[16], PokeNews player2[16], PokeNews player3[16], PokeNews player4[16])
+static void sub_80F0D60(PokeNews player1[16], PokeNews player2[16], PokeNews player3[16], PokeNews player4[16])
{
u8 i;
u8 j;
@@ -4530,7 +4501,7 @@ void sub_80F0D60(PokeNews player1[16], PokeNews player2[16], PokeNews player3[16
}
}
-void sub_80F0E58(PokeNews *dest[16], PokeNews *src[16])
+static void sub_80F0E58(PokeNews *dest[16], PokeNews *src[16])
{
PokeNews *ptr1;
PokeNews *ptr2;
@@ -4541,7 +4512,7 @@ void sub_80F0E58(PokeNews *dest[16], PokeNews *src[16])
sub_80F0E84(ptr1, ptr2, sCurTVShowSlot);
}
-bool8 sub_80F0E84(PokeNews *dest, PokeNews *src, s8 slot)
+static bool8 sub_80F0E84(PokeNews *dest, PokeNews *src, s8 slot)
{
u8 i;
u8 kind;
@@ -4563,7 +4534,7 @@ bool8 sub_80F0E84(PokeNews *dest, PokeNews *src, s8 slot)
return TRUE;
}
-s8 sub_80F0ECC(PokeNews *pokeNews, u8 idx)
+static s8 sub_80F0ECC(PokeNews *pokeNews, u8 idx)
{
if (pokeNews[idx].kind == POKENEWS_NONE)
{
@@ -4572,7 +4543,7 @@ s8 sub_80F0ECC(PokeNews *pokeNews, u8 idx)
return idx;
}
-void sub_80F0EEC(void)
+static void sub_80F0EEC(void)
{
u8 i;
@@ -4586,7 +4557,7 @@ void sub_80F0EEC(void)
sub_80EEEB8();
}
-void sub_80F0F24(void)
+static void sub_80F0F24(void)
{
u8 i;
@@ -4609,7 +4580,7 @@ else \
(langptr) = langfix; \
}
-void sub_80F0F64(TVShow *show, u32 language)
+static void sub_80F0F64(TVShow *show, u32 language)
{
int i;
TVShow **r4;
@@ -4691,7 +4662,7 @@ void sub_80F1208(TVShow *shows)
}
}
-void sub_80F1254(TVShow *shows)
+static void sub_80F1254(TVShow *shows)
{
TVShow *curShow;
@@ -4716,7 +4687,7 @@ u8 TV_GetStringLanguage(u8 *str)
return IsStringJapanese(str) ? LANGUAGE_JAPANESE : LANGUAGE_ENGLISH;
}
-void sub_80F12A4(TVShow *shows)
+static void sub_80F12A4(TVShow *shows)
{
TVShow *curShow;
@@ -4956,7 +4927,7 @@ void DoTVShow(void)
}
}
-void DoTVShowBravoTrainerPokemonProfile(void)
+static void DoTVShowBravoTrainerPokemonProfile(void)
{
TVShow *show;
u8 state;
@@ -5028,7 +4999,7 @@ void DoTVShowBravoTrainerPokemonProfile(void)
ShowFieldMessage(sTVBravoTrainerTextGroup[state]);
}
-void DoTVShowBravoTrainerBattleTower(void)
+static void DoTVShowBravoTrainerBattleTower(void)
{
TVShow *show;
u8 state;
@@ -5125,7 +5096,7 @@ void DoTVShowBravoTrainerBattleTower(void)
ShowFieldMessage(sTVBravoTrainerBattleTowerTextGroup[state]);
}
-void DoTVShowTodaysSmartShopper(void)
+static void DoTVShowTodaysSmartShopper(void)
{
TVShow *show;
u8 state;
@@ -5248,7 +5219,7 @@ void DoTVShowTodaysSmartShopper(void)
ShowFieldMessage(sTVTodaysSmartShopperTextGroup[state]);
}
-void DoTVShowTheNameRaterShow(void)
+static void DoTVShowTheNameRaterShow(void)
{
TVShow *show;
u8 state;
@@ -5346,7 +5317,7 @@ void DoTVShowTheNameRaterShow(void)
ShowFieldMessage(sTVNameRaterTextGroup[state]);
}
-void DoTVShowPokemonTodaySuccessfulCapture(void)
+static void DoTVShowPokemonTodaySuccessfulCapture(void)
{
TVShow *show;
u8 state;
@@ -5424,7 +5395,7 @@ void DoTVShowPokemonTodaySuccessfulCapture(void)
ShowFieldMessage(sTVPokemonTodaySuccessfulTextGroup[state]);
}
-void DoTVShowPokemonTodayFailedCapture(void)
+static void DoTVShowPokemonTodayFailedCapture(void)
{
TVShow *show;
u8 state;
@@ -5477,7 +5448,7 @@ void DoTVShowPokemonTodayFailedCapture(void)
ShowFieldMessage(sTVPokemonTodayFailedTextGroup[state]);
}
-void DoTVShowPokemonFanClubLetter(void)
+static void DoTVShowPokemonFanClubLetter(void)
{
TVShow *show;
u8 state;
@@ -5531,7 +5502,7 @@ void DoTVShowPokemonFanClubLetter(void)
ShowFieldMessage(sTVFanClubTextGroup[state]);
}
-void DoTVShowRecentHappenings(void)
+static void DoTVShowRecentHappenings(void)
{
TVShow *show;
u8 state;
@@ -5566,7 +5537,7 @@ void DoTVShowRecentHappenings(void)
ShowFieldMessage(sTVRecentHappeninssTextGroup[state]);
}
-void DoTVShowPokemonFanClubOpinions(void)
+static void DoTVShowPokemonFanClubOpinions(void)
{
TVShow *show;
u8 state;
@@ -5599,12 +5570,12 @@ void DoTVShowPokemonFanClubOpinions(void)
ShowFieldMessage(sTVFanClubOpinionsTextGroup[state]);
}
-void DoTVShowDummiedOut(void)
+static void DoTVShowDummiedOut(void)
{
}
-void DoTVShowPokemonNewsMassOutbreak(void)
+static void DoTVShowPokemonNewsMassOutbreak(void)
{
TVShow *show;
@@ -5616,7 +5587,7 @@ void DoTVShowPokemonNewsMassOutbreak(void)
ShowFieldMessage(sTVMassOutbreakTextGroup[sTVShowState]);
}
-void DoTVShowPokemonContestLiveUpdates(void)
+static void DoTVShowPokemonContestLiveUpdates(void)
{
TVShow *show;
u8 state;
@@ -5963,7 +5934,7 @@ void DoTVShowPokemonContestLiveUpdates(void)
ShowFieldMessage(sTVContestLiveUpdatesTextGroup[state]);
}
-void DoTVShowPokemonBattleUpdate(void)
+static void DoTVShowPokemonBattleUpdate(void)
{
TVShow *show;
u8 state;
@@ -6000,13 +5971,13 @@ void DoTVShowPokemonBattleUpdate(void)
break;
case 2:
TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
- StringCopy(gStringVar2, gSpeciesNames[show->battleUpdate.species2]);
+ StringCopy(gStringVar2, gSpeciesNames[show->battleUpdate.speciesPlayer]);
StringCopy(gStringVar3, gMoveNames[show->battleUpdate.move]);
sTVShowState = 3;
break;
case 3:
TVShowConvertInternationalString(gStringVar1, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage);
- StringCopy(gStringVar2, gSpeciesNames[show->battleUpdate.species]);
+ StringCopy(gStringVar2, gSpeciesNames[show->battleUpdate.speciesOpponent]);
sTVShowState = 4;
break;
case 4:
@@ -6021,21 +5992,21 @@ void DoTVShowPokemonBattleUpdate(void)
break;
case 6:
TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
- StringCopy(gStringVar2, gSpeciesNames[show->battleUpdate.species2]);
+ StringCopy(gStringVar2, gSpeciesNames[show->battleUpdate.speciesPlayer]);
StringCopy(gStringVar3, gMoveNames[show->battleUpdate.move]);
sTVShowState = 7;
break;
case 7:
TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
TVShowConvertInternationalString(gStringVar2, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage);
- StringCopy(gStringVar3, gSpeciesNames[show->battleUpdate.species]);
+ StringCopy(gStringVar3, gSpeciesNames[show->battleUpdate.speciesOpponent]);
TVShowDone();
break;
}
ShowFieldMessage(sTVPokemonBattleUpdateTextGroup[state]);
}
-void DoTVShow3CheersForPokeblocks(void)
+static void DoTVShow3CheersForPokeblocks(void)
{
TVShow *show;
u8 state;
@@ -6206,7 +6177,7 @@ void DoTVShowInSearchOfTrainers(void)
ShowFieldMessage(sTVInSearchOfTrainersTextGroup[state]);
}
-void DoTVShowPokemonAngler(void)
+static void DoTVShowPokemonAngler(void)
{
TVShow *show;
u8 state;
@@ -6240,7 +6211,7 @@ void DoTVShowPokemonAngler(void)
ShowFieldMessage(sTVPokemonAnslerTextGroup[state]);
}
-void DoTVShowTheWorldOfMasters(void)
+static void DoTVShowTheWorldOfMasters(void)
{
TVShow *show;
u8 state;
@@ -6270,7 +6241,7 @@ void DoTVShowTheWorldOfMasters(void)
ShowFieldMessage(sTVWorldOfMastersTextGroup[state]);
}
-void DoTVShowTodaysRivalTrainer(void)
+static void DoTVShowTodaysRivalTrainer(void)
{
TVShow *show;
u8 state;
@@ -6419,7 +6390,7 @@ void DoTVShowTodaysRivalTrainer(void)
ShowFieldMessage(sTVTodaysRivalTrainerTextGroup[state]);
}
-void DoTVShowDewfordTrendWatcherNetwork(void)
+static void DoTVShowDewfordTrendWatcherNetwork(void)
{
TVShow *show;
u8 state;
@@ -6475,7 +6446,7 @@ void DoTVShowDewfordTrendWatcherNetwork(void)
ShowFieldMessage(sTVDewfordTrendWatcherNetworkTextGroup[state]);
}
-void DoTVShowHoennTreasureInvestigators(void)
+static void DoTVShowHoennTreasureInvestigators(void)
{
TVShow *show;
u8 state;
@@ -6519,7 +6490,7 @@ void DoTVShowHoennTreasureInvestigators(void)
ShowFieldMessage(sTVHoennTreasureInvestisatorsTextGroup[state]);
}
-void DoTVShowFindThatGamer(void)
+static void DoTVShowFindThatGamer(void)
{
TVShow *show;
u8 state;
@@ -6593,7 +6564,7 @@ void DoTVShowFindThatGamer(void)
ShowFieldMessage(sTVFindThatGamerTextGroup[state]);
}
-void DoTVShowBreakingNewsTV(void)
+static void DoTVShowBreakingNewsTV(void)
{
TVShow *show;
u8 state;
@@ -6696,7 +6667,7 @@ void DoTVShowBreakingNewsTV(void)
ShowFieldMessage(sTVBreakinsNewsTextGroup[state]);
}
-void DoTVShowSecretBaseVisit(void)
+static void DoTVShowSecretBaseVisit(void)
{
TVShow *show;
u8 state;
@@ -6792,7 +6763,7 @@ void DoTVShowSecretBaseVisit(void)
ShowFieldMessage(sTVSecretBaseVisitTextGroup[state]);
}
-void DoTVShowPokemonLotteryWinnerFlashReport(void)
+static void DoTVShowPokemonLotteryWinnerFlashReport(void)
{
TVShow *show;
u8 state;
@@ -6822,7 +6793,7 @@ void DoTVShowPokemonLotteryWinnerFlashReport(void)
ShowFieldMessage(sTVPokemonLotteryWinnerFlashReportTextGroup[state]);
}
-void DoTVShowThePokemonBattleSeminar(void)
+static void DoTVShowThePokemonBattleSeminar(void)
{
TVShow *show;
u8 state;
@@ -6886,7 +6857,7 @@ void DoTVShowThePokemonBattleSeminar(void)
ShowFieldMessage(sTVThePokemonBattleSeminarTextGroup[state]);
}
-void DoTVShowTrainerFanClubSpecial(void)
+static void DoTVShowTrainerFanClubSpecial(void)
{
TVShow *show;
u8 state;
@@ -6951,7 +6922,7 @@ void DoTVShowTrainerFanClubSpecial(void)
ShowFieldMessage(sTVTrainerFanClubSpecialTextGroup[state]);
}
-void DoTVShowTrainerFanClub(void)
+static void DoTVShowTrainerFanClub(void)
{
TVShow *show;
u8 state;
@@ -7038,7 +7009,7 @@ void DoTVShowTrainerFanClub(void)
ShowFieldMessage(sTVTrainerFanClubTextGroup[state]);
}
-void DoTVShowSpotTheCuties(void)
+static void DoTVShowSpotTheCuties(void)
{
TVShow *show;
u8 state;
@@ -7143,7 +7114,7 @@ void DoTVShowSpotTheCuties(void)
ShowFieldMessage(sTVCutiesTextGroup[state]);
}
-void DoTVShowPokemonNewsBattleFrontier(void)
+static void DoTVShowPokemonNewsBattleFrontier(void)
{
TVShow *show;
u8 state;
@@ -7292,7 +7263,7 @@ void DoTVShowPokemonNewsBattleFrontier(void)
ShowFieldMessage(sTVPokemonNewsBattleFrontierTextGroup[state]);
}
-void DoTVShowWhatsNo1InHoennToday(void)
+static void DoTVShowWhatsNo1InHoennToday(void)
{
TVShow *show;
u8 state;
@@ -7407,7 +7378,7 @@ u8 sub_80F51AC(TVShow *show, u8 a1)
return 0;
}
-void DoTVShowSecretBaseSecrets(void)
+static void DoTVShowSecretBaseSecrets(void)
{
TVShow *show;
u8 state;
@@ -7645,7 +7616,7 @@ void DoTVShowSecretBaseSecrets(void)
ShowFieldMessage(sTVSecretBaseSecretsTextGroup[state]);
}
-void DoTVShowSafariFanClub(void)
+static void DoTVShowSafariFanClub(void)
{
TVShow *show;
u8 state;
@@ -7732,7 +7703,7 @@ void DoTVShowSafariFanClub(void)
ShowFieldMessage(sTVSafariFanClubTextGroup[state]);
}
-void DoTVShowPokemonContestLiveUpdates2(void)
+static void DoTVShowPokemonContestLiveUpdates2(void)
{
TVShow *show;
u8 state;