summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDizzyEggg <jajkodizzy@wp.pl>2017-09-05 09:41:48 +0200
committerDizzyEggg <jajkodizzy@wp.pl>2017-09-05 09:41:48 +0200
commit54b83061152ce6e85d1ce7185ab3645d7448e03d (patch)
treeb03477370a3aeffa1a917e787063b06554881894
parent2702b0ec9b4b2ae25d847ccd3b5b8ec1ad8cf1ff (diff)
really clean up battle ai
-rw-r--r--asm/battle_3.s34
-rw-r--r--asm/battle_4.s140
-rw-r--r--asm/battle_7.s14
-rw-r--r--asm/battle_9.s8
-rw-r--r--asm/battle_anim.s62
-rw-r--r--asm/battle_anim_80FE840.s168
-rw-r--r--asm/battle_anim_8170478.s2
-rw-r--r--asm/battle_anin_80A9C70.s2
-rw-r--r--asm/battle_controller_linkopponent.s10
-rw-r--r--asm/battle_controller_opponent.s18
-rw-r--r--asm/battle_controller_player_partner.s2
-rw-r--r--asm/battle_controller_recorded_opponent.s6
-rw-r--r--asm/battle_message.s42
-rw-r--r--asm/battle_setup.s40
-rw-r--r--asm/cable_club.s4
-rw-r--r--asm/daycare.s2
-rw-r--r--asm/hall_of_fame.s2
-rw-r--r--asm/link.s2
-rw-r--r--asm/pokemon_1.s6
-rw-r--r--asm/pokemon_2.s8
-rw-r--r--asm/pokemon_3.s12
-rw-r--r--asm/recorded_battle.s54
-rw-r--r--asm/rom_8034C54.s66
-rw-r--r--asm/rom_80A5C6C.s58
-rw-r--r--asm/rom_80C6FA0.s6
-rw-r--r--asm/rom_8158B30.s6
-rw-r--r--asm/rom_815A0D4.s44
-rw-r--r--asm/rom_8161F74.s46
-rw-r--r--asm/rom_817C95C.s4
-rw-r--r--asm/rom_818CFC8.s78
-rw-r--r--asm/rom_81BE66C.s10
-rw-r--r--asm/safari_zone.s2
-rw-r--r--asm/secret_base.s2
-rw-r--r--asm/tv.s12
-rw-r--r--asm/wild_encounter.s2
-rw-r--r--data/battle_ai_scripts.s2
-rw-r--r--data/data3.s1004
-rw-r--r--data/data4.s905
-rw-r--r--include/battle.h107
-rw-r--r--include/battle_ai.h13
-rw-r--r--include/pokemon.h2
-rw-r--r--ld_script.txt2
-rw-r--r--src/battle_ai.c1140
-rw-r--r--src/calculate_base_damage.c6
-rw-r--r--sym_common.txt2
-rw-r--r--sym_ewram.txt19
46 files changed, 2185 insertions, 1991 deletions
diff --git a/asm/battle_3.s b/asm/battle_3.s
index dbae0b64c..668e6c36d 100644
--- a/asm/battle_3.s
+++ b/asm/battle_3.s
@@ -141,7 +141,7 @@ _0803FBF8:
str r0, [r1]
movs r6, 0x1
_0803FC06:
- ldr r1, =gUnknown_02024248
+ ldr r1, =gLastUsedMovesByBanks
ldrb r2, [r7]
lsls r0, r2, 1
adds r0, r1
@@ -420,8 +420,8 @@ _0803FEB8:
.pool
thumb_func_end sub_803FB4C
- thumb_func_start sub_803FECC
-sub_803FECC: @ 803FECC
+ thumb_func_start CheckMoveLimitations
+CheckMoveLimitations: @ 803FECC
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -541,7 +541,7 @@ _0803FFAC:
ldr r1, =gUnknown_02024090
adds r0, r1
mov r12, r0
- ldr r1, =gUnknown_02024248
+ ldr r1, =gLastUsedMovesByBanks
ldr r0, [sp, 0xC]
adds r1, r0, r1
str r1, [sp, 0x18]
@@ -665,7 +665,7 @@ _08040096:
pop {r1}
bx r1
.pool
- thumb_func_end sub_803FECC
+ thumb_func_end CheckMoveLimitations
thumb_func_start sub_80400C8
sub_80400C8: @ 80400C8
@@ -674,7 +674,7 @@ sub_80400C8: @ 80400C8
ldrb r0, [r4]
movs r1, 0
movs r2, 0xFF
- bl sub_803FECC
+ bl CheckMoveLimitations
lsls r0, 24
lsrs r3, r0, 24
cmp r3, 0xF
@@ -997,7 +997,7 @@ _0804035A:
strb r0, [r6]
mov r3, r8
strb r0, [r3]
- ldr r0, =gUnknown_0202428E
+ ldr r0, =gSideAffecting
adds r3, r1, r0
ldrh r1, [r3]
movs r0, 0x1
@@ -1082,7 +1082,7 @@ _08040422:
strb r0, [r7]
ldr r3, =gActiveBank
strb r0, [r3]
- ldr r0, =gUnknown_0202428E
+ ldr r0, =gSideAffecting
adds r3, r1, r0
ldrh r1, [r3]
movs r0, 0x2
@@ -1177,7 +1177,7 @@ _080404EC:
lsls r0, 24
cmp r0, 0
bne _0804054E
- ldr r2, =gUnknown_0202428E
+ ldr r2, =gSideAffecting
adds r2, r3, r2
ldrh r0, [r2]
ldr r3, =0x0000feff
@@ -1260,7 +1260,7 @@ _080405C0:
ldrb r0, [r2, 0x7]
strb r0, [r5]
strb r0, [r6]
- ldr r0, =gUnknown_0202428E
+ ldr r0, =gSideAffecting
adds r3, r1, r0
ldrh r1, [r3]
movs r0, 0x20
@@ -2988,7 +2988,7 @@ _080414CC:
_080414DA:
ldrb r0, [r5]
bl GetBankIdentity
- ldr r2, =gUnknown_0202428E
+ ldr r2, =gSideAffecting
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
@@ -6796,11 +6796,11 @@ _08043840:
_08043854:
ldr r0, [sp, 0x8]
ldr r1, [sp, 0x10]
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
adds r4, r0, 0
ldr r0, [sp, 0xC]
ldr r1, [sp, 0x14]
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
lsls r4, 24
lsls r0, 24
cmp r4, r0
@@ -6823,7 +6823,7 @@ _08043872:
_0804388E:
ldr r0, [sp, 0x8]
ldr r1, [sp, 0x10]
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
@@ -6832,7 +6832,7 @@ _0804388E:
_080438A2:
ldr r0, [sp, 0xC]
ldr r1, [sp, 0x14]
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
@@ -8664,7 +8664,7 @@ _08044958:
str r0, [sp, 0xC]
adds r0, r7, 0
adds r1, r5, 0
- bl b_history__record_item_x12_of_player
+ bl RecordItemEffectBattle
bl _080451D6
.pool
_0804497C:
@@ -10988,7 +10988,7 @@ _08045E20:
ldrb r1, [r0]
adds r0, r3, 0
movs r2, 0xFF
- bl sub_803FECC
+ bl CheckMoveLimitations
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0xF
diff --git a/asm/battle_4.s b/asm/battle_4.s
index f46085f7a..a45dde1c7 100644
--- a/asm/battle_4.s
+++ b/asm/battle_4.s
@@ -1541,7 +1541,7 @@ _08046D74:
atk05_damagecalc1: @ 8046D8C
push {r4-r7,lr}
sub sp, 0x10
- ldr r4, =gUnknown_0202428E
+ ldr r4, =gSideAffecting
ldr r5, =gBankTarget
ldrb r0, [r5]
bl GetBankIdentity
@@ -1561,7 +1561,7 @@ atk05_damagecalc1: @ 8046D8C
adds r1, r2
ldr r7, =gCurrentMove
ldrh r2, [r7]
- ldr r4, =gUnknown_02024400
+ ldr r4, =gDynamicBasePower
ldrh r4, [r4]
str r4, [sp]
ldr r4, =gBattleStruct
@@ -1632,8 +1632,8 @@ _08046E32:
.pool
thumb_func_end atk05_damagecalc1
- thumb_func_start sub_8046E7C
-sub_8046E7C: @ 8046E7C
+ thumb_func_start AI_CalcDmg
+AI_CalcDmg: @ 8046E7C
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -1643,7 +1643,7 @@ sub_8046E7C: @ 8046E7C
lsrs r7, r0, 24
lsls r5, 24
lsrs r5, 24
- ldr r4, =gUnknown_0202428E
+ ldr r4, =gSideAffecting
adds r0, r5, 0
bl GetBankIdentity
movs r1, 0x1
@@ -1661,7 +1661,7 @@ sub_8046E7C: @ 8046E7C
ldr r2, =gCurrentMove
mov r8, r2
ldrh r2, [r2]
- ldr r6, =gUnknown_02024400
+ ldr r6, =gDynamicBasePower
ldrh r4, [r6]
str r4, [sp]
ldr r4, =gBattleStruct
@@ -1726,7 +1726,7 @@ _08046F28:
pop {r0}
bx r0
.pool
- thumb_func_end sub_8046E7C
+ thumb_func_end AI_CalcDmg
thumb_func_start battle_attack_damage_modulate_by_effectivity
battle_attack_damage_modulate_by_effectivity: @ 8046F60
@@ -2525,8 +2525,8 @@ _080475DE:
bx r0
thumb_func_end b_attack_effectivity_adapt
- thumb_func_start move_effectiveness_something
-move_effectiveness_something: @ 80475E4
+ thumb_func_start TypeCalc
+TypeCalc: @ 80475E4
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -2760,7 +2760,7 @@ _0804779E:
pop {r1}
bx r1
.pool
- thumb_func_end move_effectiveness_something
+ thumb_func_end TypeCalc
thumb_func_start ai_rate_move
ai_rate_move: @ 80477BC
@@ -2999,7 +2999,7 @@ _08047976:
bcs _080479B4
ldrb r0, [r5]
movs r1, 0x27
- bl b_history__record_item_x12_of_player
+ bl RecordItemEffectBattle
ldr r2, =gSpecialStatuses
ldrb r1, [r5]
lsls r0, r1, 2
@@ -3186,7 +3186,7 @@ _08047B26:
bcs _08047B64
ldrb r0, [r5]
movs r1, 0x27
- bl b_history__record_item_x12_of_player
+ bl RecordItemEffectBattle
ldr r2, =gSpecialStatuses
ldrb r1, [r5]
lsls r0, r1, 2
@@ -3545,7 +3545,7 @@ _08047E76:
ldr r0, [r0]
cmp r0, 0
ble _08047EA2
- ldr r0, =gUnknown_03005D10
+ ldr r0, =gBattleResults
ldrb r1, [r0, 0x5]
movs r2, 0x1
orrs r1, r2
@@ -4637,7 +4637,7 @@ _08048828:
mov r3, r9
ldrb r0, [r3]
bl GetBankIdentity
- ldr r2, =gUnknown_0202428E
+ ldr r2, =gSideAffecting
movs r1, 0x1
ands r1, r0
lsls r1, 1
@@ -6786,7 +6786,7 @@ _08049B94:
str r4, [r6]
ldrb r0, [r5]
bl GetBankSide
- ldr r1, =gUnknown_0202428E
+ ldr r1, =gSideAffecting
lsls r0, 24
lsrs r0, 23
adds r0, r1
@@ -6862,7 +6862,7 @@ _08049C42:
lsls r1, 15
orrs r0, r1
str r0, [r5]
- ldr r1, =gUnknown_03005D10
+ ldr r1, =gBattleResults
ldrb r0, [r1]
cmp r0, 0xFE
bhi _08049C78
@@ -6874,7 +6874,7 @@ _08049C78:
b _08049CCE
.pool
_08049CA4:
- ldr r4, =gUnknown_03005D10
+ ldr r4, =gBattleResults
ldrb r0, [r4, 0x1]
cmp r0, 0xFE
bhi _08049CB0
@@ -7398,7 +7398,7 @@ _0804A106:
ldrb r0, [r3, 0x7]
lsls r0, 24
adds r5, r1, r0
- ldr r1, =gUnknown_0202428E
+ ldr r1, =gSideAffecting
lsls r0, r4, 1
adds r0, r1
ldrh r0, [r0]
@@ -11426,7 +11426,7 @@ _0804C2A4:
ands r0, r1
cmp r0, 0
beq _0804C308
- ldr r0, =gUnknown_02024248
+ ldr r0, =gLastUsedMovesByBanks
lsls r1, r4, 1
adds r1, r0
ldr r0, =gUnknown_020241EC
@@ -11443,7 +11443,7 @@ _0804C2A4:
b _0804C322
.pool
_0804C308:
- ldr r1, =gUnknown_02024248
+ ldr r1, =gLastUsedMovesByBanks
lsls r0, r4, 1
adds r0, r1
ldr r1, =0x0000ffff
@@ -13740,7 +13740,7 @@ _0804D6E0:
lsls r0, 24
cmp r0, 0
bne _0804D760
- ldr r1, =gUnknown_03005D10
+ ldr r1, =gBattleResults
ldrb r0, [r1, 0x2]
cmp r0, 0xFE
bhi _0804D760
@@ -14166,7 +14166,7 @@ atk52_switch_in_effects: @ 804DAAC
strb r0, [r1]
ldrb r0, [r4]
bl GetBankSide
- ldr r5, =gUnknown_0202428E
+ ldr r5, =gSideAffecting
lsls r0, 24
lsrs r0, 23
adds r0, r5
@@ -14346,7 +14346,7 @@ _0804DC88:
bne _0804DD8E
ldrb r0, [r5]
bl GetBankSide
- ldr r1, =gUnknown_0202428E
+ ldr r1, =gSideAffecting
lsls r0, 24
lsrs r0, 23
adds r0, r1
@@ -15513,7 +15513,7 @@ _0804E6CA:
thumb_func_start atk5D_getmoneyreward
atk5D_getmoneyreward: @ 804E6D8
push {r4,lr}
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r0, [r0]
bl sub_804E598
adds r4, r0, 0
@@ -15524,7 +15524,7 @@ atk5D_getmoneyreward: @ 804E6D8
ands r0, r1
cmp r0, 0
beq _0804E6FC
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
ldrh r0, [r0]
bl sub_804E598
adds r4, r0
@@ -16243,7 +16243,7 @@ _0804ED2A:
bcs _0804ED68
ldrb r0, [r5]
movs r1, 0x27
- bl b_history__record_item_x12_of_player
+ bl RecordItemEffectBattle
ldr r2, =gSpecialStatuses
ldrb r1, [r5]
lsls r0, r1, 2
@@ -18692,7 +18692,7 @@ atk7E_setreflect: @ 805031C
ldr r6, =gBankAttacker
ldrb r0, [r6]
bl GetBankIdentity
- ldr r4, =gUnknown_0202428E
+ ldr r4, =gSideAffecting
movs r5, 0x1
adds r1, r5, 0
ands r1, r0
@@ -19303,7 +19303,7 @@ _08050828:
beq _080508B0
ldr r0, =gBattleMoveDamage
mov r8, r0
- ldr r4, =gUnknown_0202428E
+ ldr r4, =gSideAffecting
ldr r5, =gBankTarget
ldrb r0, [r5]
bl GetBankIdentity
@@ -20975,7 +20975,7 @@ atk92_setlightscreen: @ 8051664
ldr r5, =gBankAttacker
ldrb r0, [r5]
bl GetBankIdentity
- ldr r4, =gUnknown_0202428E
+ ldr r4, =gSideAffecting
movs r6, 0x1
adds r1, r6, 0
ands r1, r0
@@ -21112,7 +21112,7 @@ _08051782:
bcs _080517C0
ldrb r0, [r5]
movs r1, 0x27
- bl b_history__record_item_x12_of_player
+ bl RecordItemEffectBattle
ldr r2, =gSpecialStatuses
ldrb r1, [r5]
lsls r0, r1, 2
@@ -21768,11 +21768,11 @@ _08051D1C:
_08051D94:
mov r0, r10
mov r1, r9
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
adds r4, r0, 0
mov r0, r8
adds r1, r7, 0
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
lsls r4, 24
lsls r0, 24
cmp r4, r0
@@ -21790,14 +21790,14 @@ _08051D94:
bne _08051DE4
mov r0, r10
mov r1, r9
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
beq _08051DE4
mov r0, r8
adds r1, r7, 0
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
@@ -22011,7 +22011,7 @@ _08051F98:
strb r1, [r0, 0x5]
ldrb r0, [r4]
bl GetBankIdentity
- ldr r2, =gUnknown_0202428E
+ ldr r2, =gSideAffecting
adds r1, r5, 0
ands r1, r0
lsls r1, 1
@@ -22395,7 +22395,7 @@ atk9D_copyattack: @ 8052300
ldr r1, =0x0000ffff
adds r7, r1, 0
strh r7, [r0]
- ldr r5, =gUnknown_02024248
+ ldr r5, =gLastUsedMovesByBanks
ldr r6, =gBankTarget
ldrb r0, [r6]
lsls r0, 1
@@ -22491,7 +22491,7 @@ _080523CE:
mov r0, r12
adds r0, 0xC
adds r1, r0
- ldr r2, =gUnknown_02024248
+ ldr r2, =gLastUsedMovesByBanks
ldr r3, =gBankTarget
ldrb r0, [r3]
lsls r0, 1
@@ -22955,7 +22955,7 @@ atkA3_disablelastusedattack: @ 80527F8
adds r7, r2, 0
adds r7, 0xC
adds r0, r7
- ldr r5, =gUnknown_02024248
+ ldr r5, =gLastUsedMovesByBanks
lsls r1, 1
adds r1, r5
ldrh r0, [r0]
@@ -23112,7 +23112,7 @@ atkA4_setencore: @ 805293C
adds r6, r3, 0
adds r6, 0xC
adds r0, r6
- ldr r2, =gUnknown_02024248
+ ldr r2, =gLastUsedMovesByBanks
lsls r1, 1
adds r1, r2
ldrh r0, [r0]
@@ -24006,7 +24006,7 @@ _08053084:
ldrb r0, [r0]
adds r1, r6, 0
movs r2, 0xFD
- bl sub_803FECC
+ bl CheckMoveLimitations
lsls r0, 24
lsrs r6, r0, 24
cmp r6, 0xF
@@ -24189,7 +24189,7 @@ _08053224:
cmp r1, r0
bgt _08053224
_08053232:
- ldr r2, =gUnknown_02024400
+ ldr r2, =gDynamicBasePower
ldr r1, =gUnknown_0831C408
adds r0, r3, 0x1
adds r0, r1
@@ -24212,7 +24212,7 @@ atkAD_spite_ppreduce: @ 8053260
mov r5, r8
push {r5-r7}
sub sp, 0x4
- ldr r4, =gUnknown_02024248
+ ldr r4, =gLastUsedMovesByBanks
ldr r1, =gBankTarget
ldrb r3, [r1]
lsls r0, r3, 1
@@ -24299,7 +24299,7 @@ _08053304:
strb r5, [r1]
movs r0, 0x2
strb r0, [r1, 0x1]
- ldr r2, =gUnknown_02024248
+ ldr r2, =gLastUsedMovesByBanks
mov r3, r8
ldrb r0, [r3]
lsls r0, 1
@@ -24847,7 +24847,7 @@ atkB0_set_spikes: @ 80537A0
b _0805381E
.pool
_08053804:
- ldr r1, =gUnknown_0202428E
+ ldr r1, =gSideAffecting
adds r1, r2, r1
ldrh r2, [r1]
movs r0, 0x10
@@ -25084,7 +25084,7 @@ _080539BA:
ands r0, r2
str r0, [r1]
_080539EE:
- ldr r3, =gUnknown_02024400
+ ldr r3, =gDynamicBasePower
ldr r2, =gBattleMoves
mov r0, r8
ldrh r1, [r0]
@@ -25243,7 +25243,7 @@ _08053B34:
adds r0, 0x1
strb r0, [r1, 0x10]
_08053B4C:
- ldr r3, =gUnknown_02024400
+ ldr r3, =gDynamicBasePower
ldr r2, =gBattleMoves
ldr r0, =gCurrentMove
ldrh r1, [r0]
@@ -25297,7 +25297,7 @@ atkB6_happinesstodamagecalculation: @ 8053BAC
ldrb r0, [r0]
cmp r0, 0x79
bne _08053BEC
- ldr r4, =gUnknown_02024400
+ ldr r4, =gDynamicBasePower
ldr r2, =gBattleMons
ldr r0, =gBankAttacker
ldrb r1, [r0]
@@ -25309,7 +25309,7 @@ atkB6_happinesstodamagecalculation: @ 8053BAC
b _08053C02
.pool
_08053BEC:
- ldr r4, =gUnknown_02024400
+ ldr r4, =gDynamicBasePower
ldr r2, =gBattleMons
ldr r0, =gBankAttacker
ldrb r1, [r0]
@@ -25345,7 +25345,7 @@ atkB7_presentdamagecalculation: @ 8053C30
ands r4, r0
cmp r4, 0x65
bgt _08053C4C
- ldr r1, =gUnknown_02024400
+ ldr r1, =gDynamicBasePower
movs r0, 0x28
strh r0, [r1]
b _08053C8E
@@ -25353,7 +25353,7 @@ atkB7_presentdamagecalculation: @ 8053C30
_08053C4C:
cmp r4, 0xB1
bgt _08053C5C
- ldr r1, =gUnknown_02024400
+ ldr r1, =gDynamicBasePower
movs r0, 0x50
strh r0, [r1]
b _08053C8E
@@ -25361,7 +25361,7 @@ _08053C4C:
_08053C5C:
cmp r4, 0xCB
bgt _08053C6C
- ldr r1, =gUnknown_02024400
+ ldr r1, =gDynamicBasePower
movs r0, 0x78
strh r0, [r1]
b _08053C8E
@@ -25429,7 +25429,7 @@ atkB8_set_safeguard: @ 8053CFC
ldr r7, =gBankAttacker
ldrb r0, [r7]
bl GetBankIdentity
- ldr r4, =gUnknown_0202428E
+ ldr r4, =gSideAffecting
movs r6, 0x1
adds r1, r6, 0
ands r1, r0
@@ -25509,7 +25509,7 @@ atkB9_magnitudedamagecalculation: @ 8053DA4
lsrs r3, r0, 16
cmp r3, 0x4
bgt _08053DD0
- ldr r1, =gUnknown_02024400
+ ldr r1, =gDynamicBasePower
movs r0, 0xA
strh r0, [r1]
movs r3, 0x4
@@ -25518,7 +25518,7 @@ atkB9_magnitudedamagecalculation: @ 8053DA4
_08053DD0:
cmp r3, 0xE
bgt _08053DE4
- ldr r1, =gUnknown_02024400
+ ldr r1, =gDynamicBasePower
movs r0, 0x1E
strh r0, [r1]
movs r3, 0x5
@@ -25527,7 +25527,7 @@ _08053DD0:
_08053DE4:
cmp r3, 0x22
bgt _08053DF8
- ldr r1, =gUnknown_02024400
+ ldr r1, =gDynamicBasePower
movs r0, 0x32
strh r0, [r1]
movs r3, 0x6
@@ -25536,7 +25536,7 @@ _08053DE4:
_08053DF8:
cmp r3, 0x40
bgt _08053E0C
- ldr r1, =gUnknown_02024400
+ ldr r1, =gDynamicBasePower
movs r0, 0x46
strh r0, [r1]
movs r3, 0x7
@@ -25545,7 +25545,7 @@ _08053DF8:
_08053E0C:
cmp r3, 0x54
bgt _08053E20
- ldr r1, =gUnknown_02024400
+ ldr r1, =gDynamicBasePower
movs r0, 0x5A
strh r0, [r1]
movs r3, 0x8
@@ -25554,14 +25554,14 @@ _08053E0C:
_08053E20:
cmp r3, 0x5E
bgt _08053E34
- ldr r1, =gUnknown_02024400
+ ldr r1, =gDynamicBasePower
movs r0, 0x6E
strh r0, [r1]
movs r3, 0x9
b _08053E3C
.pool
_08053E34:
- ldr r1, =gUnknown_02024400
+ ldr r1, =gDynamicBasePower
movs r0, 0x96
strh r0, [r1]
movs r3, 0xA
@@ -26021,7 +26021,7 @@ _08054210:
_08054250:
adds r0, r2, 0
bl GetBankSide
- ldr r4, =gUnknown_0202428E
+ ldr r4, =gSideAffecting
lsls r0, 24
lsrs r0, 23
adds r0, r4
@@ -26309,7 +26309,7 @@ atkC1_hidden_power: @ 8054400
ands r1, r3
lsls r1, 5
orrs r4, r1
- ldr r5, =gUnknown_02024400
+ ldr r5, =gDynamicBasePower
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
@@ -26439,7 +26439,7 @@ atkC3_setfutureattack: @ 8054598
_080545DC:
adds r0, r1, 0
bl GetBankIdentity
- ldr r4, =gUnknown_0202428E
+ ldr r4, =gSideAffecting
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
@@ -28093,7 +28093,7 @@ _0805541A:
thumb_func_start atkD9_scaledamagebyhealthratio
atkD9_scaledamagebyhealthratio: @ 8055428
push {r4,lr}
- ldr r4, =gUnknown_02024400
+ ldr r4, =gDynamicBasePower
ldrh r0, [r4]
cmp r0, 0
bne _08055464
@@ -28426,7 +28426,7 @@ _080556CE:
ldr r0, =0x0000ffff
cmp r1, r0
beq _080556FC
- ldr r0, =gUnknown_02024400
+ ldr r0, =gDynamicBasePower
adds r1, r5, 0x1
lsls r1, 1
adds r1, r6
@@ -28435,7 +28435,7 @@ _080556CE:
b _08055702
.pool
_080556FC:
- ldr r1, =gUnknown_02024400
+ ldr r1, =gDynamicBasePower
movs r0, 0x78
strh r0, [r1]
_08055702:
@@ -29781,7 +29781,7 @@ atkEE_removelightscreenreflect: @ 8056284
cmp r1, 0
beq _080562E4
_080562AC:
- ldr r2, =gUnknown_0202428E
+ ldr r2, =gSideAffecting
adds r2, r3, r2
ldrh r1, [r2]
ldr r0, =0x0000fffe
@@ -29994,7 +29994,7 @@ _080564A4:
b _080564D2
.pool
_080564B0:
- ldr r0, =gUnknown_03005D10
+ ldr r0, =gBattleResults
ldrb r0, [r0, 0x13]
adds r0, 0xA
lsls r0, 24
@@ -30056,7 +30056,7 @@ _08056522:
beq _08056564
cmp r0, 0x1
bne _08056550
- ldr r0, =gUnknown_03005D10
+ ldr r0, =gBattleResults
ldrb r1, [r0, 0x5]
movs r2, 0x2
orrs r1, r2
@@ -30064,7 +30064,7 @@ _08056522:
b _08056564
.pool
_08056550:
- ldr r0, =gUnknown_03005D10
+ ldr r0, =gBattleResults
ldrh r1, [r1]
adds r0, r1
adds r1, r0, 0
@@ -30313,7 +30313,7 @@ _08056792:
movs r1, 0xB
movs r2, 0
bl GetMonData
- ldr r5, =gUnknown_03005D10
+ ldr r5, =gBattleResults
strh r0, [r5, 0x28]
mov r1, r9
ldrb r0, [r1]
diff --git a/asm/battle_7.s b/asm/battle_7.s
index ef67d6bc0..9fc2c3875 100644
--- a/asm/battle_7.s
+++ b/asm/battle_7.s
@@ -85,7 +85,7 @@ sub_805D19C: @ 805D19C
mov r10, r2
movs r1, 0
movs r2, 0xFF
- bl sub_803FECC
+ bl CheckMoveLimitations
lsls r0, 24
lsrs r0, 24
mov r8, r0
@@ -194,7 +194,7 @@ _0805D27C:
lsls r0, r6, 24
lsrs r0, 24
bl BattleAI_SetupAIData
- bl sub_8130BA4
+ bl BattleAI_ChooseMoveOrAction
lsls r0, 24
lsrs r0, 24
mov r9, r0
@@ -2347,7 +2347,7 @@ _0805E4DE:
b _0805E77A
.pool
_0805E51C:
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _0805E558
@@ -2578,7 +2578,7 @@ _0805E70A:
adds r1, r2
ldr r2, =0x04000008
bl CpuSet
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0805E74A
@@ -2639,7 +2639,7 @@ sub_805E7DC: @ 805E7DC
lsls r1, 24
cmp r1, 0
bne _0805E898
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _0805E7F8
@@ -2651,7 +2651,7 @@ _0805E7F8:
lsls r0, 24
lsrs r4, r0, 24
_0805E802:
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _0805E814
@@ -2714,7 +2714,7 @@ _0805E860:
b _0805E8E6
.pool
_0805E898:
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0805E8E6
diff --git a/asm/battle_9.s b/asm/battle_9.s
index 00d893f21..3484ee157 100644
--- a/asm/battle_9.s
+++ b/asm/battle_9.s
@@ -2039,7 +2039,7 @@ _08063D02:
ldrb r1, [r0]
adds r0, r4, 0
ldr r2, [sp, 0x4]
- bl move_effectiveness_something
+ bl TypeCalc
movs r1, 0x2
ands r1, r0
cmp r1, 0
@@ -2074,7 +2074,7 @@ _08063D58:
beq _08063D60
b _08063BE4
_08063D60:
- ldr r0, =gUnknown_02024400
+ ldr r0, =gDynamicBasePower
movs r1, 0
strh r1, [r0]
ldr r0, =gBattleStruct
@@ -2167,11 +2167,11 @@ _08063DEE:
beq _08063E2A
ldrb r0, [r6]
ldr r1, [sp, 0x4]
- bl sub_8046E7C
+ bl AI_CalcDmg
ldrb r1, [r6]
adds r0, r4, 0
ldr r2, [sp, 0x4]
- bl move_effectiveness_something
+ bl TypeCalc
_08063E2A:
mov r2, r8
ldr r0, [r2]
diff --git a/asm/battle_anim.s b/asm/battle_anim.s
index 0e9a3a9cc..ef1c5ff87 100644
--- a/asm/battle_anim.s
+++ b/asm/battle_anim.s
@@ -123,7 +123,7 @@ move_something: @ 80A3A48
lsls r2, 24
lsrs r2, 24
mov r9, r2
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A3AE8
@@ -846,7 +846,7 @@ _080A406E:
movs r2, 0x80
lsls r2, 1
bl m4aMPlayVolumeControl
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A409C
@@ -1021,7 +1021,7 @@ _080A41FA:
lsrs r0, 24
cmp r0, 0x1
bls _080A4226
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A4230
@@ -1073,7 +1073,7 @@ _080A4266:
lsrs r0, 24
cmp r0, 0x1
bls _080A4294
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A42A4
@@ -1130,7 +1130,7 @@ b_side_obj__get_some_boolean: @ 80A4310
lsls r0, 24
lsrs r4, r0, 24
adds r5, r4, 0
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A4330
@@ -1146,7 +1146,7 @@ _080A4330:
lsls r0, 24
cmp r0, 0
beq _080A4384
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A4374
@@ -1203,7 +1203,7 @@ sub_80A438C: @ 80A438C
beq _080A43AA
b _080A455E
_080A43AA:
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1278,7 +1278,7 @@ _080A43F8:
negs r0, r0
adds r0, 0x20
strh r0, [r5]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A447A
@@ -1347,7 +1347,7 @@ _080A44B0:
ldr r2, =0x04000008
adds r0, r4, 0
bl CpuSet
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A4524
@@ -1374,7 +1374,7 @@ _080A452E:
movs r1, 0
movs r2, 0
bl sub_8118FBC
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A4558
@@ -1645,7 +1645,7 @@ sub_80A477C: @ 80A477C
bl sub_80A6B30
cmp r4, 0
beq _080A479C
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
@@ -1891,7 +1891,7 @@ sub_80A4980: @ 80A4980
lsrs r0, 24
cmp r0, 0x1
bls _080A49BC
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A49C4
@@ -1985,7 +1985,7 @@ _080A4A4A:
lsrs r0, 24
cmp r0, 0x1
bls _080A4A76
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A4A80
@@ -2018,7 +2018,7 @@ _080A4A8A:
lsrs r0, 24
cmp r0, 0x1
bls _080A4ABC
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A4AC0
@@ -2171,7 +2171,7 @@ sub_80A4BB0: @ 80A4BB0
lsrs r0, 24
cmp r0, 0x1
bls _080A4BEE
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A4BF8
@@ -2441,8 +2441,8 @@ ma13_goto: @ 80A4DCC
.pool
thumb_func_end ma13_goto
- thumb_func_start sub_80A4DF0
-sub_80A4DF0: @ 80A4DF0
+ thumb_func_start IsContest
+IsContest: @ 80A4DF0
push {lr}
ldr r0, =gMain
ldr r1, =0x00000439
@@ -2460,7 +2460,7 @@ _080A4E10:
_080A4E12:
pop {r1}
bx r1
- thumb_func_end sub_80A4DF0
+ thumb_func_end IsContest
thumb_func_start ma14_load_background
ma14_load_background: @ 80A4E18
@@ -2513,7 +2513,7 @@ sub_80A4E5C: @ 80A4E5C
lsls r0, 24
lsrs r4, r0, 24
adds r5, r4, 0
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A4EA8
@@ -2670,7 +2670,7 @@ sub_80A4FC8: @ 80A4FC8
push {r4-r7,lr}
lsls r0, 16
lsrs r7, r0, 16
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A5050
@@ -2747,7 +2747,7 @@ _080A507E:
thumb_func_start dp01t_11_3_message_for_player_only
dp01t_11_3_message_for_player_only: @ 80A5090
push {lr}
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A50A2
@@ -2860,7 +2860,7 @@ sub_80A5178: @ 80A5178
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A51C0
@@ -2888,7 +2888,7 @@ sub_80A5178: @ 80A5178
b _080A5252
.pool
_080A51C0:
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A51E8
@@ -2982,7 +2982,7 @@ sub_80A5278: @ 80A5278
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A52C0
@@ -3016,7 +3016,7 @@ _080A52C0:
lsls r0, 24
cmp r0, 0
bne _080A52D8
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A52DE
@@ -3822,7 +3822,7 @@ sub_80A5944: @ 80A5944
ldr r0, [r4]
adds r0, 0x1
str r0, [r4]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A5978
@@ -3870,7 +3870,7 @@ _080A59A2:
bl GetBankIdentity
lsls r0, 24
lsrs r4, r0, 24
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A59D2
@@ -3901,7 +3901,7 @@ sub_80A59DC: @ 80A59DC
ldr r1, [r0]
adds r1, 0x1
str r1, [r0]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A5A04
@@ -3949,7 +3949,7 @@ _080A5A4A:
bl GetBankIdentity
lsls r0, 24
lsrs r4, r0, 24
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A5A78
@@ -4043,7 +4043,7 @@ sub_80A5AFC: @ 80A5AFC
ldrb r7, [r0, 0x1]
adds r0, 0x2
str r0, [r1]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A5BA6
@@ -4125,7 +4125,7 @@ sub_80A5BAC: @ 80A5BAC
ldrb r7, [r0, 0x1]
adds r0, 0x2
str r0, [r1]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A5C38
diff --git a/asm/battle_anim_80FE840.s b/asm/battle_anim_80FE840.s
index 13da4b52c..60ffc9742 100644
--- a/asm/battle_anim_80FE840.s
+++ b/asm/battle_anim_80FE840.s
@@ -717,7 +717,7 @@ sub_80FEE1C: @ 80FEE1C
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080FEE36
@@ -2485,7 +2485,7 @@ _080FFC38:
adds r0, r6, 0
adds r0, 0xA
strh r0, [r5, 0x3C]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080FFC50
@@ -2679,7 +2679,7 @@ sub_80FFDBC: @ 80FFDBC
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080FFE50
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080FFDE4
@@ -2869,7 +2869,7 @@ _080FFF10:
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x30]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080FFF5E
@@ -4155,7 +4155,7 @@ _08100918:
bl sub_80A74F4
lsls r0, 16
lsrs r4, r0, 16
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _0810097A
@@ -4857,7 +4857,7 @@ _08100EE8:
sub_8100EF0: @ 8100EF0
push {r4-r6,lr}
adds r5, r0, 0
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _08100F06
@@ -4889,7 +4889,7 @@ _08100F06:
lsls r0, 24
cmp r0, 0
beq _08100F44
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _08100F6C
@@ -7334,7 +7334,7 @@ sub_8102268: @ 8102268
ldrh r5, [r5, 0x2]
adds r0, r5
strh r0, [r6, 0x22]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _081022AC
@@ -7621,7 +7621,7 @@ _081024C2:
sub_81024E0: @ 81024E0
push {r4,lr}
adds r4, r0, 0
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _081024F6
@@ -8088,7 +8088,7 @@ _08102862:
ldrh r1, [r5, 0x20]
strh r1, [r5, 0x3A]
strh r0, [r5, 0x3C]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _081028D4
@@ -8648,7 +8648,7 @@ _08102D10:
strh r1, [r5, 0x32]
ldrh r0, [r4, 0x4]
strh r0, [r5, 0x34]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _08102D34
@@ -10106,7 +10106,7 @@ sub_81038C8: @ 81038C8
push {r7}
sub sp, 0x4
adds r5, r0, 0
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _081038EC
@@ -10178,7 +10178,7 @@ _0810390E:
lsls r1, 24
adds r0, r1
lsrs r4, r0, 16
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _08103980
@@ -10642,7 +10642,7 @@ sub_8103CF0: @ 8103CF0
mov r4, sp
adds r4, 0x2
strh r1, [r4]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
mov r10, r4
cmp r0, 0
@@ -13381,7 +13381,7 @@ _0810536C:
lsls r0, 16
lsrs r0, 16
mov r9, r0
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _081053E4
@@ -13450,7 +13450,7 @@ _081053FA:
adds r0, r1
lsls r0, 16
lsrs r6, r0, 16
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810544C
@@ -14777,7 +14777,7 @@ sub_8105EB0: @ 8105EB0
push {r4-r7,lr}
lsls r0, 24
lsrs r7, r0, 24
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
movs r6, 0xF0
cmp r0, 0
@@ -15296,7 +15296,7 @@ sub_81062E8: @ 81062E8
movs r1, 0
movs r2, 0
bl lcd_bg_operations
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810632A
@@ -15482,7 +15482,7 @@ _08106496:
b _081064F0
.pool
_081064BC:
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _081064D0
@@ -15531,7 +15531,7 @@ sub_81064F8: @ 81064F8
movs r1, 0
movs r2, 0
bl lcd_bg_operations
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810653A
@@ -15553,7 +15553,7 @@ _0810653A:
bl SetGpuReg
mov r0, sp
bl sub_80A6B30
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _08106578
@@ -15740,7 +15740,7 @@ _081066DA:
adds r0, 0x1
strh r0, [r1, 0x20]
_081066FC:
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _08106710
@@ -17792,7 +17792,7 @@ sub_8107730: @ 8107730
bl sub_80A82E4
lsls r0, 24
lsrs r5, r0, 24
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810778A
@@ -18061,7 +18061,7 @@ sub_8107954: @ 8107954
bl lcd_bg_operations
mov r0, sp
bl sub_80A6B30
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _081079E0
@@ -18152,7 +18152,7 @@ _08107A32:
lsls r0, 5
strh r0, [r7, 0xA]
strh r0, [r7, 0xC]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
@@ -18447,7 +18447,7 @@ sub_8107CC4: @ 8107CC4
b _08107D4A
.pool
_08107D08:
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _08107D1C
@@ -19981,7 +19981,7 @@ sub_81088E4: @ 81088E4
movs r1, 0x1
_08108928:
strh r1, [r5, 0x16]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _0810893C
@@ -22475,7 +22475,7 @@ _08109CC8:
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0x30]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _08109D64
@@ -23572,7 +23572,7 @@ _0810A5B6:
sub_810A5BC: @ 810A5BC
push {r4-r6,lr}
adds r6, r0, 0
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810A5D8
@@ -23640,7 +23640,7 @@ _0810A64C:
ldr r0, =gAnimationBankAttacker
_0810A64E:
ldrb r6, [r0]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810A666
@@ -26939,7 +26939,7 @@ sub_810C0A0: @ 810C0A0
movs r1, 0
movs r2, 0
bl lcd_bg_operations
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810C0E2
@@ -27141,7 +27141,7 @@ _0810C27A:
adds r0, 0x1
strh r0, [r1, 0x20]
_0810C29C:
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810C2B0
@@ -27221,7 +27221,7 @@ sub_810C324: @ 810C324
movs r1, 0
movs r2, 0
bl lcd_bg_operations
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810C366
@@ -27413,7 +27413,7 @@ _0810C4EA:
adds r0, 0x1
strh r0, [r1, 0x20]
_0810C50C:
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810C520
@@ -27596,7 +27596,7 @@ _0810C684:
ldrh r1, [r5, 0x3C]
orrs r0, r1
strh r0, [r5, 0x3C]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _0810C6B8
@@ -27695,7 +27695,7 @@ _0810C736:
ldrh r0, [r4, 0x3C]
adds r0, 0x1
strh r0, [r4, 0x3C]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810C78C
@@ -27762,7 +27762,7 @@ _0810C7BC:
ldrh r1, [r4, 0x26]
adds r0, r1
strh r0, [r4, 0x26]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810C83A
@@ -27839,7 +27839,7 @@ _0810C85A:
strh r0, [r4, 0x34]
adds r0, 0x4
strh r0, [r4, 0x36]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810C8B4
@@ -28612,7 +28612,7 @@ _0810CE90:
sub_810CEB4: @ 810CEB4
push {r4,lr}
adds r4, r0, 0
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _0810CED0
@@ -29842,7 +29842,7 @@ _0810D8BE:
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x5]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _0810D8F8
@@ -30009,7 +30009,7 @@ _0810DA2C:
movs r1, 0
bl sub_80A6980
_0810DA34:
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _0810DA48
@@ -30768,7 +30768,7 @@ sub_810E044: @ 810E044
negs r0, r0
strh r0, [r1, 0x6]
_0810E070:
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _0810E088
@@ -31166,7 +31166,7 @@ _0810E354:
lsrs r1, 16
cmp r1, 0x7F
bhi _0810E44A
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810E3F0
@@ -31458,7 +31458,7 @@ _0810E5B4:
ands r0, r1
cmp r0, 0
beq _0810E672
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810E642
@@ -31590,7 +31590,7 @@ _0810E6A8:
ands r0, r1
cmp r0, 0
beq _0810E766
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810E736
@@ -31722,7 +31722,7 @@ _0810E79C:
ands r0, r1
cmp r0, 0
beq _0810E85A
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810E82A
@@ -31863,7 +31863,7 @@ _0810E8A4:
ands r0, r1
cmp r0, 0
beq _0810E962
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810E932
@@ -33034,7 +33034,7 @@ sub_810F1EC: @ 810F1EC
mov r7, r8
push {r7}
adds r5, r0, 0
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
lsrs r0, 24
mov r8, r0
@@ -33365,7 +33365,7 @@ sub_810F46C: @ 810F46C
negs r1, r1
cmp r0, r1
bne _0810F512
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810F502
@@ -33436,7 +33436,7 @@ _0810F512:
sub_810F524: @ 810F524
push {r4-r6,lr}
adds r6, r0, 0
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810F57C
@@ -33497,7 +33497,7 @@ sub_810F58C: @ 810F58C
bne _0810F5A6
movs r6, 0x1
_0810F5A6:
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0810F5EE
@@ -34294,7 +34294,7 @@ sub_810FBF0: @ 810FBF0
lsls r1, 3
ldr r0, =gTasks
adds r5, r1, r0
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _0810FC94
@@ -35075,7 +35075,7 @@ _08110260:
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _0811028E
@@ -35192,7 +35192,7 @@ _08110360:
sub_8110368: @ 8110368
push {r4-r6,lr}
adds r6, r0, 0
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _08110394
@@ -35283,7 +35283,7 @@ _081103C4:
sub_8110438: @ 8110438
push {r4-r6,lr}
adds r6, r0, 0
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _0811045C
@@ -35358,7 +35358,7 @@ _08110478:
sub_81104E4: @ 81104E4
push {r4,r5,lr}
adds r5, r0, 0
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _08110500
@@ -35644,7 +35644,7 @@ sub_8110720: @ 8110720
push {r4-r7,lr}
sub sp, 0x4
adds r7, r0, 0
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _08110740
@@ -35672,7 +35672,7 @@ _08110740:
negs r0, r0
strh r0, [r1, 0x6]
_08110762:
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _081107B2
@@ -36212,7 +36212,7 @@ sub_8110BCC: @ 8110BCC
movs r1, 0
movs r2, 0
bl lcd_bg_operations
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _08110C10
@@ -36433,7 +36433,7 @@ _08110DF0:
b _08110E3A
.pool
_08110DFC:
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _08110E10
@@ -39179,7 +39179,7 @@ sub_81123C4: @ 81123C4
lsls r0, 16
lsrs r0, 16
str r0, [sp, 0x8]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _08112434
@@ -39600,7 +39600,7 @@ sub_8112758: @ 8112758
lsls r0, 24
cmp r0, 0
bne _081127A0
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _081127B8
@@ -42121,7 +42121,7 @@ _08113C1E:
ldr r0, =0x04000016
str r0, [sp]
movs r7, 0x2
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _08113CB0
@@ -42142,7 +42142,7 @@ _08113C80:
ldr r0, =0x0400001a
str r0, [sp]
movs r7, 0x4
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _08113CB0
@@ -42393,7 +42393,7 @@ _08113EA8:
.4byte _08113FF0
.4byte _08114058
_08113EBC:
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -43185,7 +43185,7 @@ sub_81144F8: @ 81144F8
movs r1, 0
movs r2, 0
bl lcd_bg_operations
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0811455C
@@ -43198,7 +43198,7 @@ _0811455C:
lsls r0, 24
cmp r0, 0
beq _081145D6
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _081145D6
@@ -43251,7 +43251,7 @@ _0811458C:
bl lcd_bg_operations
movs r6, 0x1
_081145D6:
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _08114614
@@ -43496,7 +43496,7 @@ _08114824:
movs r0, 0x4A
adds r1, r4, 0
bl SetGpuReg
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _08114856
@@ -46961,7 +46961,7 @@ sub_8116420: @ 8116420
lsls r0, 24
cmp r0, 0
beq _08116444
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _08116444
@@ -47844,7 +47844,7 @@ sub_8116B14: @ 8116B14
ldrh r1, [r4]
movs r0, 0xA
bl SetGpuReg
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _08116BA2
@@ -47863,7 +47863,7 @@ _08116BA2:
lsls r0, 24
cmp r0, 0
beq _08116C26
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _08116C26
@@ -47921,7 +47921,7 @@ _08116BD2:
bl SetGpuReg
movs r7, 0x1
_08116C26:
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _08116C64
@@ -48084,7 +48084,7 @@ sub_8116D64: @ 8116D64
movs r0, 0x4A
adds r1, r4, 0
bl SetGpuReg
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _08116DF6
@@ -48237,7 +48237,7 @@ _08116F26:
movs r1, 0x2
eors r0, r1
strb r0, [r2, 0x1]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _08116F56
@@ -48286,7 +48286,7 @@ _08116F5C:
movs r1, 0
movs r2, 0
bl lcd_bg_operations
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _08116FBA
@@ -48354,7 +48354,7 @@ _08116FEC:
ldr r0, [r4]
strb r5, [r0, 0x2]
_08117036:
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _08117078
@@ -48758,7 +48758,7 @@ _081173B6:
movs r0, 0x4A
adds r1, r4, 0
bl SetGpuReg
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _081173E6
@@ -49347,7 +49347,7 @@ sub_8117854: @ 8117854
movs r0, 0x2
adds r6, r7, 0
eors r6, r0
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _081178B6
@@ -49404,7 +49404,7 @@ _081178BA:
movs r1, 0x20
orrs r0, r1
strb r0, [r2]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _08117930
@@ -49419,7 +49419,7 @@ _08117930:
ldrh r1, [r4]
movs r0, 0xA
bl SetGpuReg
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _08117964
@@ -49687,7 +49687,7 @@ _08117B34:
movs r0, 0x4A
adds r1, r4, 0
bl SetGpuReg
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _08117BB2
@@ -50037,7 +50037,7 @@ sub_8117E60: @ 8117E60
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
@@ -50150,7 +50150,7 @@ sub_8117F60: @ 8117F60
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _08117F78
diff --git a/asm/battle_anim_8170478.s b/asm/battle_anim_8170478.s
index 690138efb..6b5c27ea6 100644
--- a/asm/battle_anim_8170478.s
+++ b/asm/battle_anim_8170478.s
@@ -328,7 +328,7 @@ _08170708:
movs r0, 0x4A
adds r1, r4, 0
bl SetGpuReg
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0817076C
diff --git a/asm/battle_anin_80A9C70.s b/asm/battle_anin_80A9C70.s
index 1455134ec..16366988e 100644
--- a/asm/battle_anin_80A9C70.s
+++ b/asm/battle_anin_80A9C70.s
@@ -348,7 +348,7 @@ sub_80A9EF4: @ 80A9EF4
ldr r1, =0xffdc0000
adds r0, r1
lsrs r4, r0, 16
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A9F32
diff --git a/asm/battle_controller_linkopponent.s b/asm/battle_controller_linkopponent.s
index 73406931b..76a8c3c56 100644
--- a/asm/battle_controller_linkopponent.s
+++ b/asm/battle_controller_linkopponent.s
@@ -4057,11 +4057,11 @@ _08066770:
ldrb r0, [r5]
cmp r0, 0x1
bne _08066794
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
b _08066796
.pool
_08066794:
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
_08066796:
ldrh r0, [r0]
bl sub_8162AA0
@@ -4143,7 +4143,7 @@ _08066838:
b _0806693A
_08066840:
movs r7, 0xB0
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
movs r0, 0xC0
lsls r0, 4
@@ -4389,11 +4389,11 @@ sub_8066A58: @ 8066A58
ldrb r0, [r0]
cmp r0, 0x1
bne _08066A74
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
b _08066A76
.pool
_08066A74:
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
_08066A76:
ldrh r0, [r0]
bl sub_8162AA0
diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s
index d2f5ee5d9..8ad871934 100644
--- a/asm/battle_controller_opponent.s
+++ b/asm/battle_controller_opponent.s
@@ -4205,7 +4205,7 @@ sub_8061690: @ 8061690
b _0806175A
.pool
_080616B0:
- ldr r3, =gUnknown_02038BCA
+ ldr r3, =gTrainerBattleOpponent_A
ldrh r1, [r3]
ldr r0, =0x000003fe
cmp r1, r0
@@ -4233,7 +4233,7 @@ _080616C8:
b _0806175A
.pool
_080616F0:
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
ldrh r0, [r0]
bl sub_81D5588
b _0806175A
@@ -4260,7 +4260,7 @@ _08061708:
b _0806175A
.pool
_08061734:
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
ldrh r0, [r0]
bl sub_8162AA0
b _0806175A
@@ -4291,7 +4291,7 @@ _08061760:
cmp r0, 0x1
beq _08061788
ldr r2, =gTrainers
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
ldrh r1, [r0]
b _0806178C
.pool
@@ -4452,7 +4452,7 @@ sub_80618D8: @ 80618D8
b _080619A2
.pool
_080618F8:
- ldr r3, =gUnknown_02038BCA
+ ldr r3, =gTrainerBattleOpponent_A
ldrh r1, [r3]
ldr r0, =0x000003fe
cmp r1, r0
@@ -4480,7 +4480,7 @@ _08061910:
b _080619A2
.pool
_08061938:
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
ldrh r0, [r0]
bl sub_81D5588
b _080619A2
@@ -4507,7 +4507,7 @@ _08061950:
b _080619A2
.pool
_0806197C:
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
ldrh r0, [r0]
bl sub_8162AA0
b _080619A2
@@ -4538,7 +4538,7 @@ _080619A8:
cmp r0, 0x1
beq _080619D0
ldr r2, =gTrainers
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
ldrh r1, [r0]
b _080619D4
.pool
@@ -5261,7 +5261,7 @@ _08061FE4:
beq _080620C4
movs r0, 0xF
bl BattleAI_SetupAIData
- bl sub_8130BA4
+ bl BattleAI_ChooseMoveOrAction
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x5
diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s
index 4e2e5db5d..9c262071d 100644
--- a/asm/battle_controller_player_partner.s
+++ b/asm/battle_controller_player_partner.s
@@ -5014,7 +5014,7 @@ sub_81BDAC8: @ 81BDAC8
adds r4, r0
movs r0, 0xF
bl BattleAI_SetupAIData
- bl sub_8130BA4
+ bl BattleAI_ChooseMoveOrAction
lsls r0, 24
lsrs r5, r0, 24
ldr r2, =gBattleMoves
diff --git a/asm/battle_controller_recorded_opponent.s b/asm/battle_controller_recorded_opponent.s
index a467808c3..2c1c37eb7 100644
--- a/asm/battle_controller_recorded_opponent.s
+++ b/asm/battle_controller_recorded_opponent.s
@@ -4038,11 +4038,11 @@ _081888B4:
ldrb r0, [r4]
cmp r0, 0x1
bne _081888D8
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
b _081888DA
.pool
_081888D8:
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
_081888DA:
ldrh r0, [r0]
bl sub_8162AA0
@@ -4057,7 +4057,7 @@ _081888EC:
b _08188924
_081888F6:
movs r7, 0xB0
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
movs r0, 0xC0
lsls r0, 4
diff --git a/asm/battle_message.s b/asm/battle_message.s
index 6bd3f6835..961a1a5db 100644
--- a/asm/battle_message.s
+++ b/asm/battle_message.s
@@ -145,7 +145,7 @@ _0814E200:
b _0814E6D8
.pool
_0814E214:
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
movs r0, 0xC0
lsls r0, 4
@@ -302,7 +302,7 @@ _0814E368:
ands r1, r0
cmp r1, 0
beq _0814E380
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
movs r0, 0xC0
lsls r0, 4
@@ -353,7 +353,7 @@ _0814E3E0:
b _0814E6D8
.pool
_0814E3EC:
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
movs r0, 0x80
lsls r0, 4
@@ -444,7 +444,7 @@ _0814E4AC:
b _0814E6D8
.pool
_0814E4BC:
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
movs r0, 0xC0
lsls r0, 4
@@ -609,7 +609,7 @@ _0814E630:
b _0814E6D8
.pool
_0814E638:
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
movs r0, 0xC0
lsls r0, 4
@@ -1720,7 +1720,7 @@ _0814F0D8:
b _0814F59C
.pool
_0814F0F0:
- ldr r3, =gUnknown_02038BCA
+ ldr r3, =gTrainerBattleOpponent_A
ldrh r2, [r3]
movs r0, 0xC0
lsls r0, 4
@@ -1808,7 +1808,7 @@ _0814F178:
b _0814F5BE
.pool
_0814F1AC:
- ldr r3, =gUnknown_02038BCA
+ ldr r3, =gTrainerBattleOpponent_A
ldrh r2, [r3]
movs r0, 0xC0
lsls r0, 4
@@ -1944,7 +1944,7 @@ _0814F2C0:
ands r0, r1
cmp r0, 0
beq _0814F2E0
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
movs r0, 0x2
b _0814F55A
@@ -1955,7 +1955,7 @@ _0814F2E0:
ands r1, r0
cmp r1, 0
beq _0814F2F8
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
movs r0, 0x4
b _0814F584
@@ -1971,7 +1971,7 @@ _0814F300:
ands r0, r1
cmp r0, 0
beq _0814F31C
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
b _0814F556
.pool
_0814F31C:
@@ -1982,7 +1982,7 @@ _0814F31C:
bne _0814F328
b _0814F5C0
_0814F328:
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
b _0814F580
.pool
_0814F330:
@@ -2120,7 +2120,7 @@ _0814F468:
ands r0, r1
cmp r0, 0
beq _0814F484
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
b _0814F596
.pool
_0814F484:
@@ -2129,14 +2129,14 @@ _0814F484:
ands r1, r0
cmp r1, 0
beq _0814F49C
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
ldrh r0, [r0]
bl sub_81D5530
b _0814F59C
.pool
_0814F49C:
ldr r2, =gTrainers
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
ldrh r1, [r0]
lsls r0, r1, 2
adds r0, r1
@@ -2153,7 +2153,7 @@ _0814F4B8:
ands r0, r1
cmp r0, 0
beq _0814F4D4
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
b _0814F5B6
.pool
_0814F4D4:
@@ -2162,14 +2162,14 @@ _0814F4D4:
ands r1, r0
cmp r1, 0
beq _0814F4F0
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
ldrh r1, [r0]
mov r0, sp
bl sub_81D5554
b _0814F5BE
.pool
_0814F4F0:
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
ldrh r1, [r0]
lsls r0, r1, 2
adds r0, r1
@@ -2185,7 +2185,7 @@ _0814F508:
ands r0, r1
cmp r0, 0
beq _0814F528
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
ldrh r1, [r0]
movs r0, 0x2
b _0814F55A
@@ -2196,7 +2196,7 @@ _0814F528:
ands r1, r0
cmp r1, 0
beq _0814F540
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
ldrh r1, [r0]
movs r0, 0x4
b _0814F584
@@ -2212,7 +2212,7 @@ _0814F548:
ands r0, r1
cmp r0, 0
beq _0814F574
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
_0814F556:
ldrh r1, [r0]
movs r0, 0x1
@@ -2227,7 +2227,7 @@ _0814F574:
ands r1, r0
cmp r1, 0
beq _0814F5C0
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
_0814F580:
ldrh r1, [r0]
movs r0, 0x3
diff --git a/asm/battle_setup.s b/asm/battle_setup.s
index 2ef2fccc6..c86f198c7 100644
--- a/asm/battle_setup.s
+++ b/asm/battle_setup.s
@@ -1082,7 +1082,7 @@ _080B0F2E:
thumb_func_start reads_trainer_data_byte1_byte0x18
reads_trainer_data_byte1_byte0x18: @ 80B0F34
push {r4-r6,lr}
- ldr r4, =gUnknown_02038BCA
+ ldr r4, =gTrainerBattleOpponent_A
ldrh r1, [r4]
movs r0, 0x80
lsls r0, 3
@@ -1481,7 +1481,7 @@ TrainerBattleLoadArg8: @ 80B1274
thumb_func_start trainerflag_opponent
trainerflag_opponent: @ 80B1278
- ldr r1, =gUnknown_02038BCA
+ ldr r1, =gTrainerBattleOpponent_A
movs r2, 0xA0
lsls r2, 3
adds r0, r2, 0
@@ -1495,7 +1495,7 @@ trainerflag_opponent: @ 80B1278
thumb_func_start sub_80B1290
sub_80B1290: @ 80B1290
- ldr r1, =gUnknown_02038BCC
+ ldr r1, =gTrainerBattleOpponent_B
movs r2, 0xA0
lsls r2, 3
adds r0, r2, 0
@@ -1540,10 +1540,10 @@ _080B12E2:
thumb_func_start ResetTrainerOpponentIds
ResetTrainerOpponentIds: @ 80B12E8
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
strh r1, [r0]
bx lr
.pool
@@ -1765,7 +1765,7 @@ _080B14EC:
adds r1, r5, 0
bl TrainerBattleLoadArgs
bl battle_80801F0
- ldr r4, =gUnknown_02038BCA
+ ldr r4, =gTrainerBattleOpponent_A
ldrh r0, [r4]
bl sub_80B2234
strh r0, [r4]
@@ -1777,7 +1777,7 @@ _080B1514:
adds r1, r5, 0
bl TrainerBattleLoadArgs
bl battle_80801F0
- ldr r4, =gUnknown_02038BCA
+ ldr r4, =gTrainerBattleOpponent_A
ldrh r0, [r4]
bl sub_80B2234
strh r0, [r4]
@@ -1796,7 +1796,7 @@ _080B153C:
ldr r0, =gScriptLastTalked
ldrb r0, [r0]
bl sub_81A9AA8
- ldr r1, =gUnknown_02038BCA
+ ldr r1, =gTrainerBattleOpponent_A
b _080B157E
.pool
_080B156C:
@@ -1807,7 +1807,7 @@ _080B156C:
ldrb r0, [r0]
bl sub_81A9AA8
_080B157C:
- ldr r1, =gUnknown_02038BCC
+ ldr r1, =gTrainerBattleOpponent_B
_080B157E:
strh r0, [r1]
b _080B161C
@@ -1836,7 +1836,7 @@ _080B15A8:
ldr r0, =gScriptLastTalked
ldrb r0, [r0]
bl battle_init
- ldr r1, =gUnknown_02038BCA
+ ldr r1, =gTrainerBattleOpponent_A
b _080B157E
.pool
_080B15D8:
@@ -2027,7 +2027,7 @@ _080B1752:
thumb_func_start rom_npc_set_flag_for_script_id
rom_npc_set_flag_for_script_id: @ 80B1760
push {lr}
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
ldrh r0, [r0]
cmp r0, 0
beq _080B1776
@@ -2222,7 +2222,7 @@ _080B190C:
thumb_func_start sub_80B1918
sub_80B1918: @ 80B1918
push {lr}
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
movs r0, 0x80
lsls r0, 3
@@ -2273,7 +2273,7 @@ _080B198A:
thumb_func_start sub_80B1994
sub_80B1994: @ 80B1994
push {lr}
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
movs r0, 0x80
lsls r0, 3
@@ -2481,11 +2481,11 @@ SetUpTrainerEncounterMusic: @ 80B1B70
ldrb r0, [r0]
cmp r0, 0
bne _080B1B88
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
b _080B1B8A
.pool
_080B1B88:
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
_080B1B8A:
ldrh r1, [r0]
ldr r0, =gUnknown_02038BC8
@@ -2620,7 +2620,7 @@ _080B1C96:
thumb_func_start sub_80B1CA4
sub_80B1CA4: @ 80B1CA4
push {r4,lr}
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
movs r0, 0x80
lsls r0, 3
@@ -3202,7 +3202,7 @@ sub_80B20BC: @ 80B20BC
lsls r0, 24
cmp r0, 0
beq _080B20E2
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r0, [r0]
bl sub_80B208C
adds r1, r0, 0
@@ -3423,7 +3423,7 @@ sub_80B2250: @ 80B2250
sub_80B226C: @ 80B226C
push {r4,r5,lr}
ldr r5, =gUnknown_085500A4
- ldr r4, =gUnknown_02038BCA
+ ldr r4, =gTrainerBattleOpponent_A
ldrh r1, [r4]
adds r0, r5, 0
bl sub_80B1F38
@@ -3449,7 +3449,7 @@ _080B229A:
sub_80B22A0: @ 80B22A0
push {lr}
ldr r0, =gUnknown_085500A4
- ldr r1, =gUnknown_02038BCA
+ ldr r1, =gTrainerBattleOpponent_A
ldrh r1, [r1]
bl sub_80B1F74
lsls r0, 24
@@ -3463,7 +3463,7 @@ sub_80B22A0: @ 80B22A0
sub_80B22BC: @ 80B22BC
push {lr}
ldr r0, =gUnknown_085500A4
- ldr r1, =gUnknown_02038BCA
+ ldr r1, =gTrainerBattleOpponent_A
ldrh r1, [r1]
bl sub_80B205C
bl rom_npc_set_flag_for_script_id
diff --git a/asm/cable_club.s b/asm/cable_club.s
index 73288455f..04c6c7825 100644
--- a/asm/cable_club.s
+++ b/asm/cable_club.s
@@ -1867,7 +1867,7 @@ _080B3378:
ldrh r0, [r0]
bl sub_80B3260
bl overworld_free_bg_tilemaps
- ldr r1, =gUnknown_02038BCA
+ ldr r1, =gTrainerBattleOpponent_A
movs r2, 0x80
lsls r2, 4
adds r0, r2, 0
@@ -2040,7 +2040,7 @@ _080B3504:
ldrh r0, [r0]
bl sub_80B3260
bl overworld_free_bg_tilemaps
- ldr r1, =gUnknown_02038BCA
+ ldr r1, =gTrainerBattleOpponent_A
movs r3, 0x80
lsls r3, 4
adds r0, r3, 0
diff --git a/asm/daycare.s b/asm/daycare.s
index 4e68a34e1..f5d423102 100644
--- a/asm/daycare.s
+++ b/asm/daycare.s
@@ -2481,7 +2481,7 @@ _08070D7E:
bl pokemon_getattr_encrypted
adds r1, r0, 0
ldrh r0, [r5]
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
lsls r0, 24
lsrs r0, 24
ldr r2, [sp, 0x28]
diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s
index 1f7a56418..4d54a1ca7 100644
--- a/asm/hall_of_fame.s
+++ b/asm/hall_of_fame.s
@@ -2572,7 +2572,7 @@ _08174B8C:
lsls r0, r1, 23
lsrs r0, 23
ldr r1, [r7, 0x4]
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
lsls r0, 24
lsrs r0, 24
cmp r0, 0
diff --git a/asm/link.s b/asm/link.s
index 2c2a0dc43..65742024d 100644
--- a/asm/link.s
+++ b/asm/link.s
@@ -33412,7 +33412,7 @@ _0801AB1E:
movs r0, 0x32
bl IncrementGameStat
bl calc_player_party_count
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
movs r2, 0xC0
lsls r2, 4
adds r1, r2, 0
diff --git a/asm/pokemon_1.s b/asm/pokemon_1.s
index 9406026dc..54b82c444 100644
--- a/asm/pokemon_1.s
+++ b/asm/pokemon_1.s
@@ -621,7 +621,7 @@ _08067F38:
bne _08067F38
adds r0, r7, 0
adds r1, r4, 0
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
lsls r0, 24
lsrs r0, 24
cmp r8, r0
@@ -647,7 +647,7 @@ _08067F9E:
bne _08067F9E
adds r0, r7, 0
adds r1, r4, 0
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
lsls r0, 24
lsrs r0, 24
cmp r8, r0
@@ -702,7 +702,7 @@ _0806800A:
orrs r4, r0
adds r0, r6, 0
adds r1, r4, 0
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
lsls r0, 24
cmp r0, 0
bne _0806800A
diff --git a/asm/pokemon_2.s b/asm/pokemon_2.s
index 7c7db81fb..d16f6f1b5 100644
--- a/asm/pokemon_2.s
+++ b/asm/pokemon_2.s
@@ -140,7 +140,7 @@ ShouldGetStatBadgeBoost: @ 8069ED8
ands r0, r1
cmp r0, 0
beq _08069F10
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
movs r0, 0x80
lsls r0, 3
@@ -288,8 +288,8 @@ _0806A01A:
bx r1
thumb_func_end pokemon_roll_gender
- thumb_func_start pokemon_species_get_gender_info
-pokemon_species_get_gender_info: @ 806A020
+ thumb_func_start GetGenderFromSpeciesAndPersonality
+GetGenderFromSpeciesAndPersonality: @ 806A020
push {lr}
adds r3, r1, 0
lsls r0, 16
@@ -326,7 +326,7 @@ _0806A060:
_0806A062:
pop {r1}
bx r1
- thumb_func_end pokemon_species_get_gender_info
+ thumb_func_end GetGenderFromSpeciesAndPersonality
thumb_func_start sub_806A068
sub_806A068: @ 806A068
diff --git a/asm/pokemon_3.s b/asm/pokemon_3.s
index ca77a64a4..e2b75248e 100644
--- a/asm/pokemon_3.s
+++ b/asm/pokemon_3.s
@@ -1004,7 +1004,7 @@ _0806C574:
lsls r0, 24
cmp r0, 0
bne _0806C5B2
- ldr r1, =gUnknown_03005D10
+ ldr r1, =gBattleResults
ldrb r0, [r1, 0x4]
cmp r0, 0xFE
bhi _0806C5B2
@@ -1140,7 +1140,7 @@ _0806C65E:
lsls r0, 24
cmp r0, 0
bne _0806C6EC
- ldr r1, =gUnknown_03005D10
+ ldr r1, =gBattleResults
ldrb r0, [r1, 0x3]
cmp r0, 0xFE
bhi _0806C6AE
@@ -3614,7 +3614,7 @@ _0806D9F0:
cmp r0, 0
beq _0806DAC2
ldr r2, =gTrainers
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
lsls r0, r1, 2
adds r0, r1
@@ -4993,7 +4993,7 @@ _0806E470:
ands r0, r1
cmp r0, 0
beq _0806E494
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r0, [r0]
bl sub_8162BD8
lsls r0, 24
@@ -5010,7 +5010,7 @@ _0806E494:
b _0806E4B2
_0806E4A2:
ldr r2, =gTrainers
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
lsls r0, r1, 2
adds r0, r1
@@ -5121,7 +5121,7 @@ _0806E5F2:
b _0806E646
.pool
_0806E604:
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
lsls r0, r1, 2
adds r0, r1
diff --git a/asm/recorded_battle.s b/asm/recorded_battle.s
index f22214f93..9f76ff3df 100644
--- a/asm/recorded_battle.s
+++ b/asm/recorded_battle.s
@@ -873,12 +873,12 @@ _081854DC:
adds r0, r7, r3
str r2, [r0]
_081854E2:
- ldr r4, =gUnknown_02038BCA
+ ldr r4, =gTrainerBattleOpponent_A
ldrh r1, [r4]
ldr r5, =0x000004f4
adds r0, r7, r5
strh r1, [r0]
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
ldrh r1, [r0]
ldr r2, =0x000004f6
adds r0, r7, r2
@@ -944,7 +944,7 @@ _081854E2:
str r0, [r1]
ldr r4, =0xfffffed4
adds r1, r4, 0
- ldr r5, =gUnknown_02038BCA
+ ldr r5, =gTrainerBattleOpponent_A
ldrh r5, [r5]
adds r0, r1, r5
lsls r0, 16
@@ -957,7 +957,7 @@ _08185580:
ldr r0, =0x00000504
adds r3, r7, r0
mov r10, r9
- ldr r1, =gUnknown_02038BCA
+ ldr r1, =gTrainerBattleOpponent_A
mov r12, r1
adds r2, r4, 0
mov r8, r2
@@ -981,7 +981,7 @@ _08185592:
ble _08185592
mov r0, r9
ldr r2, [r0]
- ldr r1, =gUnknown_02038BCA
+ ldr r1, =gTrainerBattleOpponent_A
ldrh r0, [r1]
ldr r3, =0xfffffed4
adds r0, r3
@@ -1002,7 +1002,7 @@ _08185592:
ldr r2, =0x0000050e
adds r4, r7, r2
mov r10, r9
- ldr r5, =gUnknown_02038BCA
+ ldr r5, =gTrainerBattleOpponent_A
mov r8, r5
adds r5, r3, 0
_081855E6:
@@ -1032,7 +1032,7 @@ _08185664:
ldr r1, =0x0000050e
adds r4, r7, r1
mov r10, r9
- ldr r2, =gUnknown_02038BCA
+ ldr r2, =gTrainerBattleOpponent_A
mov r8, r2
adds r5, r3, 0
_08185672:
@@ -1057,7 +1057,7 @@ _08185672:
_08185696:
mov r1, r9
ldr r2, [r1]
- ldr r3, =gUnknown_02038BCA
+ ldr r3, =gTrainerBattleOpponent_A
ldrh r0, [r3]
ldr r4, =0xfffffed4
adds r0, r4
@@ -1070,7 +1070,7 @@ _08185696:
b _08185856
.pool
_081856C4:
- ldr r3, =gUnknown_02038BCC
+ ldr r3, =gTrainerBattleOpponent_B
ldrh r3, [r3]
adds r0, r1, r3
lsls r0, 16
@@ -1083,7 +1083,7 @@ _081856D4:
ldr r4, =0x00000504
adds r3, r7, r4
mov r10, r9
- ldr r5, =gUnknown_02038BCC
+ ldr r5, =gTrainerBattleOpponent_B
mov r12, r5
ldr r0, =0xfffffed4
mov r8, r0
@@ -1107,7 +1107,7 @@ _081856E6:
ble _081856E6
mov r0, r9
ldr r2, [r0]
- ldr r1, =gUnknown_02038BCC
+ ldr r1, =gTrainerBattleOpponent_B
ldrh r0, [r1]
ldr r3, =0xfffffed4
adds r0, r3
@@ -1128,7 +1128,7 @@ _081856E6:
ldr r2, =0x0000050e
adds r4, r7, r2
mov r10, r9
- ldr r5, =gUnknown_02038BCC
+ ldr r5, =gTrainerBattleOpponent_B
mov r8, r5
adds r5, r3, 0
_0818573A:
@@ -1158,7 +1158,7 @@ _08185784:
ldr r1, =0x0000050e
adds r4, r7, r1
mov r10, r9
- ldr r2, =gUnknown_02038BCC
+ ldr r2, =gTrainerBattleOpponent_B
mov r8, r2
adds r5, r3, 0
_08185792:
@@ -1183,7 +1183,7 @@ _08185792:
_081857B6:
mov r1, r9
ldr r2, [r1]
- ldr r3, =gUnknown_02038BCC
+ ldr r3, =gTrainerBattleOpponent_B
ldrh r0, [r3]
ldr r4, =0xfffffed4
adds r0, r4
@@ -1259,7 +1259,7 @@ _08185856:
adds r0, r7, r2
strb r1, [r0]
_0818585C:
- ldr r3, =gUnknown_02038BCA
+ ldr r3, =gTrainerBattleOpponent_A
ldrh r0, [r3]
ldr r1, =0x0000018f
cmp r0, r1
@@ -1284,7 +1284,7 @@ _0818585C:
ldr r0, =0x0000050e
adds r4, r7, r0
mov r10, r9
- ldr r1, =gUnknown_02038BCA
+ ldr r1, =gTrainerBattleOpponent_A
mov r8, r1
adds r5, r3, 0
_08185894:
@@ -1310,14 +1310,14 @@ _08185894:
ble _08185894
mov r3, r9
ldr r2, [r3]
- ldr r4, =gUnknown_02038BCA
+ ldr r4, =gTrainerBattleOpponent_A
ldrh r1, [r4]
ldr r5, =0xfffffe70
adds r1, r5
b _081859AC
.pool
_08185900:
- ldr r3, =gUnknown_02038BCC
+ ldr r3, =gTrainerBattleOpponent_B
ldrh r0, [r3]
cmp r0, r1
bls _0818597C
@@ -1341,7 +1341,7 @@ _08185900:
ldr r0, =0x0000050e
adds r4, r7, r0
mov r10, r9
- ldr r1, =gUnknown_02038BCC
+ ldr r1, =gTrainerBattleOpponent_B
mov r8, r1
adds r5, r3, 0
_08185936:
@@ -1367,7 +1367,7 @@ _08185936:
ble _08185936
mov r3, r9
ldr r2, [r3]
- ldr r4, =gUnknown_02038BCC
+ ldr r4, =gTrainerBattleOpponent_B
ldrh r1, [r4]
ldr r5, =0xfffffe70
adds r1, r5
@@ -1542,9 +1542,9 @@ sub_8185AB0: @ 8185AB0
ldr r0, =gBattleTypeFlags
movs r1, 0
str r1, [r0]
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
strh r1, [r0]
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
strh r1, [r0]
ldr r0, =gUnknown_02038BCE
strh r1, [r0]
@@ -1715,12 +1715,12 @@ _08185C2A:
lsls r1, 17
orrs r0, r1
str r0, [r2]
- ldr r1, =gUnknown_02038BCA
+ ldr r1, =gTrainerBattleOpponent_A
ldr r2, =0x000004f4
adds r0, r7, r2
ldrh r0, [r0]
strh r0, [r1]
- ldr r1, =gUnknown_02038BCC
+ ldr r1, =gTrainerBattleOpponent_B
adds r3, 0xE
adds r0, r7, r3
ldrh r0, [r0]
@@ -2638,13 +2638,13 @@ _081863FC:
.pool
thumb_func_end sub_818603C
- thumb_func_start sub_8186438
-sub_8186438: @ 8186438
+ thumb_func_start GetAiScriptsInRecordedBattle
+GetAiScriptsInRecordedBattle: @ 8186438
ldr r0, =gUnknown_0203C7BC
ldr r0, [r0]
bx lr
.pool
- thumb_func_end sub_8186438
+ thumb_func_end GetAiScriptsInRecordedBattle
thumb_func_start sub_8186444
sub_8186444: @ 8186444
diff --git a/asm/rom_8034C54.s b/asm/rom_8034C54.s
index ba1ad38d4..a4ddd461b 100644
--- a/asm/rom_8034C54.s
+++ b/asm/rom_8034C54.s
@@ -1493,7 +1493,7 @@ _0803584C:
cmp r1, 0
beq _080358C4
ldr r2, =gTrainers
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
lsls r0, r1, 2
adds r0, r1
@@ -2603,7 +2603,7 @@ _080362F8:
cmp r1, 0
beq _08036350
ldr r2, =gTrainers
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
lsls r0, r1, 2
adds r0, r1
@@ -2740,7 +2740,7 @@ _0803645C:
cmp r1, 0
beq _0803648C
ldr r2, =gTrainers
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
lsls r0, r1, 2
adds r0, r1
@@ -2850,7 +2850,7 @@ _08036568:
cmp r1, 0
beq _08036598
ldr r2, =gTrainers
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
lsls r0, r1, 2
adds r0, r1
@@ -2961,7 +2961,7 @@ _08036674:
cmp r1, 0
beq _080366AC
ldr r2, =gTrainers
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
lsls r0, r1, 2
adds r0, r1
@@ -3287,7 +3287,7 @@ _080369AE:
cmp r0, 0
bne _080369E8
ldr r4, =gEnemyParty
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
adds r0, r4, 0
movs r2, 0x1
@@ -3301,7 +3301,7 @@ _080369AE:
movs r1, 0x96
lsls r1, 1
adds r0, r4, r1
- ldr r1, =gUnknown_02038BCC
+ ldr r1, =gTrainerBattleOpponent_B
ldrh r1, [r1]
movs r2, 0
bl LoadTrainerParty
@@ -4132,7 +4132,7 @@ _08037098:
strb r0, [r1]
bl sub_8036A5C
bl sub_8036B44
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
movs r0, 0xC0
lsls r0, 4
@@ -4591,12 +4591,12 @@ _08037530:
strh r0, [r1]
adds r0, r6, 0
adds r0, 0x40
- ldr r4, =gUnknown_02038BCA
+ ldr r4, =gTrainerBattleOpponent_A
ldrh r1, [r4]
bl sub_8162E20
adds r0, r6, 0
adds r0, 0x5C
- ldr r5, =gUnknown_02038BCC
+ ldr r5, =gTrainerBattleOpponent_B
ldrh r1, [r5]
bl sub_8162E20
ldrh r1, [r4]
@@ -6194,7 +6194,7 @@ _080383BC:
ands r0, r2
cmp r0, 0
beq _080383F8
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
movs r4, 0x80
lsls r4, 4
adds r1, r4, 0
@@ -9409,7 +9409,7 @@ sub_8039F40: @ 8039F40
mov r9, r1
ldr r0, =gUnknown_02024250
mov r8, r0
- ldr r1, =gUnknown_02024248
+ ldr r1, =gLastUsedMovesByBanks
mov r12, r1
ldr r5, =gDisableStructs
movs r4, 0
@@ -9467,7 +9467,7 @@ _08039F78:
ble _08039F70
movs r5, 0
ldr r3, =gSideTimers
- ldr r4, =gUnknown_0202428E
+ ldr r4, =gSideAffecting
movs r2, 0x1
_08039FD8:
strh r5, [r4]
@@ -9692,7 +9692,7 @@ _0803A1BA:
bl Random
ldr r1, =gUnknown_02024330
strh r0, [r1]
- ldr r1, =gUnknown_03005D10
+ ldr r1, =gBattleResults
movs r2, 0
movs r3, 0
_0803A1E4:
@@ -9703,7 +9703,7 @@ _0803A1E4:
bls _0803A1E4
ldr r0, =gEnemyParty
bl sub_806EBA4
- ldr r3, =gUnknown_03005D10
+ ldr r3, =gBattleResults
movs r1, 0x1
ands r1, r0
lsls r1, 6
@@ -10107,7 +10107,7 @@ _0803A540:
strb r0, [r1, 0x18]
ldrb r0, [r7]
lsls r0, 1
- ldr r1, =gUnknown_02024248
+ ldr r1, =gLastUsedMovesByBanks
adds r0, r1
movs r2, 0
strh r4, [r0]
@@ -10297,10 +10297,10 @@ _0803A6B4:
movs r1, 0xFF
strb r1, [r0]
ldrb r0, [r3]
- bl sub_81310F0
+ bl ClearBankMoveHistory
mov r7, r9
ldrb r0, [r7]
- bl sub_8131130
+ bl ClearBankAbilityHistory
add sp, 0x20
pop {r3-r5}
mov r8, r3
@@ -10617,7 +10617,7 @@ _0803A852:
strb r1, [r0, 0x16]
ldrb r0, [r3]
lsls r0, 1
- ldr r3, =gUnknown_02024248
+ ldr r3, =gLastUsedMovesByBanks
adds r0, r3
movs r3, 0
strh r2, [r0]
@@ -10830,9 +10830,9 @@ _0803AB6C:
adds r1, 0x22
strb r0, [r1]
ldrb r0, [r6]
- bl sub_81310F0
+ bl ClearBankMoveHistory
ldrb r0, [r6]
- bl sub_8131130
+ bl ClearBankAbilityHistory
add sp, 0x4
pop {r3-r5}
mov r8, r3
@@ -11183,7 +11183,7 @@ _0803AE96:
movs r1, 0xB
movs r2, 0
bl GetMonData
- ldr r1, =gUnknown_03005D10
+ ldr r1, =gBattleResults
strh r0, [r1, 0x20]
_0803AEC0:
ldr r0, =gBattleTypeFlags
@@ -12544,7 +12544,7 @@ _0803BA40:
b _0803BB78
.pool
_0803BA98:
- ldr r1, =gUnknown_03005D10
+ ldr r1, =gBattleResults
ldrb r0, [r1, 0x13]
ldr r2, =gBattleStruct
mov r8, r2
@@ -15816,7 +15816,7 @@ _0803D7AE:
movs r3, 0
ldrb r0, [r0]
strb r0, [r1]
- ldr r0, =gUnknown_02024400
+ ldr r0, =gDynamicBasePower
movs r2, 0
strh r3, [r0]
ldr r0, =gBattleStruct
@@ -15951,7 +15951,7 @@ _0803D920:
ldr r1, =gBattlescriptCurrInstr
ldr r0, =gUnknown_082DAA87
str r0, [r1]
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
ldr r0, =0x000003fe
cmp r1, r0
@@ -15973,7 +15973,7 @@ _0803D968:
ldr r0, =gUnknown_082DA92D
str r0, [r1]
ldr r2, =gTrainers
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
lsls r0, r1, 2
adds r0, r1
@@ -16308,7 +16308,7 @@ _0803DD10:
lsls r0, 24
cmp r0, 0
bne _0803DDA0
- ldr r4, =gUnknown_03005D10
+ ldr r4, =gBattleResults
ldrh r0, [r4, 0x6]
cmp r0, 0
bne _0803DD74
@@ -16374,7 +16374,7 @@ _0803DDB6:
ands r0, r1
cmp r0, 0
bne _0803DDD2
- ldr r0, =gUnknown_03005D10
+ ldr r0, =gBattleResults
ldrb r1, [r0, 0x5]
movs r0, 0x40
ands r0, r1
@@ -16960,14 +16960,14 @@ _0803E33C:
lsls r0, 24
cmp r0, 0
bne _0803E37C
- ldr r0, =gUnknown_03005D10
+ ldr r0, =gBattleResults
ldr r1, =gCurrentMove
ldrh r1, [r1]
strh r1, [r0, 0x22]
b _0803E384
.pool
_0803E37C:
- ldr r0, =gUnknown_03005D10
+ ldr r0, =gBattleResults
ldr r1, =gCurrentMove
ldrh r1, [r1]
strh r1, [r0, 0x24]
@@ -17548,7 +17548,7 @@ bs2_8016374: @ 803E868
ldr r1, =gFightStateTracker
movs r0, 0xA
strb r0, [r1]
- ldr r1, =gUnknown_03005D10
+ ldr r1, =gBattleResults
ldrb r0, [r1, 0x2]
cmp r0, 0xFE
bhi _0803E8CE
@@ -18354,7 +18354,7 @@ sub_803F050: @ 803F050
adds r0, r2
ldrb r0, [r0]
strh r0, [r1]
- ldr r1, =gUnknown_03005D10
+ ldr r1, =gBattleResults
ldrb r0, [r1, 0x1F]
cmp r0, 0xFE
bhi _0803F096
@@ -18657,7 +18657,7 @@ bsC_8016D70: @ 803F300
strh r4, [r0]
ldr r0, [r6]
strb r1, [r0, 0x13]
- ldr r0, =gUnknown_02024400
+ ldr r0, =gDynamicBasePower
strh r4, [r0]
strb r1, [r5, 0x14]
ldr r0, =gBattleCommunication
diff --git a/asm/rom_80A5C6C.s b/asm/rom_80A5C6C.s
index 949111931..22e91ecdc 100644
--- a/asm/rom_80A5C6C.s
+++ b/asm/rom_80A5C6C.s
@@ -12,7 +12,7 @@ sub_80A5C6C: @ 80A5C6C
lsrs r5, r0, 24
lsls r1, 24
lsrs r4, r1, 24
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A5C8A
@@ -70,7 +70,7 @@ _080A5CD8:
b _080A5DB0
.pool
_080A5D00:
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A5D28
@@ -168,7 +168,7 @@ sub_80A5DB8: @ 80A5DB8
lsls r0, 24
cmp r0, 0
beq _080A5DDA
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A5DDA
@@ -176,7 +176,7 @@ sub_80A5DB8: @ 80A5DB8
_080A5DDA:
cmp r5, 0xC9
bne _080A5E90
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A5E04
@@ -399,7 +399,7 @@ sub_80A5FA0: @ 80A5FA0
lsrs r0, 24
cmp r0, 0x1
bne _080A5FFE
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A5FFE
@@ -449,7 +449,7 @@ sub_80A600C: @ 80A600C
lsls r0, 24
cmp r0, 0
beq _080A6030
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A603E
@@ -527,7 +527,7 @@ sub_80A60AC: @ 80A60AC
lsrs r1, 24
cmp r1, 0x1
bhi _080A6126
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A60E8
@@ -645,7 +645,7 @@ sub_80A6190: @ 80A6190
bl sub_80A5C6C
lsls r0, 24
lsrs r6, r0, 24
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A6238
@@ -1868,7 +1868,7 @@ sub_80A6A90: @ 80A6A90
lsls r0, 24
lsrs r4, r0, 24
adds r5, r4, 0
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A6ABC
@@ -1942,7 +1942,7 @@ battle_type_is_double: @ 80A6B20
sub_80A6B30: @ 80A6B30
push {r4,lr}
adds r4, r0, 0
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
@@ -1988,7 +1988,7 @@ sub_80A6B90: @ 80A6B90
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
@@ -2046,7 +2046,7 @@ sub_80A6BFC: @ 80A6BFC
ldr r0, =gUnknown_02023060
ldr r0, [r0]
str r0, [r4, 0x4]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0
@@ -2222,7 +2222,7 @@ sub_80A6D60: @ 80A6D60
adds r5, r2, 0
ldrb r0, [r4, 0x9]
bl sub_80A6D10
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -2244,7 +2244,7 @@ _080A6D86:
thumb_func_start sub_80A6D94
sub_80A6D94: @ 80A6D94
push {lr}
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A6DA4
@@ -2263,7 +2263,7 @@ sub_80A6DAC: @ 80A6DAC
lsls r0, 24
cmp r0, 0
beq _080A6DBE
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A6DD4
@@ -2883,7 +2883,7 @@ _080A71F0:
thumb_func_start sub_80A7238
sub_80A7238: @ 80A7238
push {r4,lr}
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A7268
@@ -2929,7 +2929,7 @@ sub_80A7270: @ 80A7270
ldrh r0, [r4, 0x2E]
lsls r0, 24
lsrs r7, r0, 24
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A72A6
@@ -2968,7 +2968,7 @@ _080A72B4:
movs r1, 0x80
orrs r0, r1
strb r0, [r2]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A7312
@@ -3357,7 +3357,7 @@ sub_80A75AC: @ 80A75AC
movs r4, 0
cmp r0, 0
beq _080A7602
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A75F6
@@ -3432,7 +3432,7 @@ _080A7674:
ldr r0, [sp]
cmp r0, 0
beq _080A769A
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A7694
@@ -3449,7 +3449,7 @@ _080A769A:
ldr r0, [sp, 0x4]
cmp r0, 0
beq _080A76B0
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A76B0
@@ -3483,7 +3483,7 @@ sub_80A76C4: @ 80A76C4
lsrs r3, 24
mov r8, r3
movs r4, 0
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A76F2
@@ -4550,7 +4550,7 @@ _080A7F38:
beq _080A7F42
b _080A8034
_080A7F42:
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A7F78
@@ -5014,7 +5014,7 @@ sub_80A82E4: @ 80A82E4
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A8300
@@ -5056,7 +5056,7 @@ sub_80A8328: @ 80A8328
bl GetBankIdentity
lsls r0, 24
lsrs r4, r0, 24
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A8344
@@ -5088,7 +5088,7 @@ GetBankIdentity_permutated: @ 80A8364
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A838A
@@ -5363,7 +5363,7 @@ _080A85B2:
bl CreateSprite
lsls r0, 24
lsrs r4, r0, 24
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A85EE
@@ -5412,7 +5412,7 @@ sub_80A861C: @ 80A861C
lsls r1, 24
lsrs r1, 24
mov r9, r1
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _080A86C4
@@ -5811,7 +5811,7 @@ _080A8946:
lsls r0, 24
cmp r0, 0
beq _080A8998
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080A8998
diff --git a/asm/rom_80C6FA0.s b/asm/rom_80C6FA0.s
index 8ff9d9d2f..fb4c84b83 100644
--- a/asm/rom_80C6FA0.s
+++ b/asm/rom_80C6FA0.s
@@ -14768,7 +14768,7 @@ _080CED7E:
ldrh r0, [r4]
adds r1, r6
ldr r1, [r1]
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
lsls r0, 24
lsrs r0, 24
mov r9, r0
@@ -29290,7 +29290,7 @@ _080D6184:
strh r0, [r5, 0x12]
ldrh r0, [r6, 0x6]
strh r0, [r5, 0x14]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
mov r8, r4
cmp r0, 0
@@ -29329,7 +29329,7 @@ _080D61DC:
ldrsh r0, [r4, r3]
cmp r0, 0
beq _080D6208
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _080D6208
diff --git a/asm/rom_8158B30.s b/asm/rom_8158B30.s
index b7e2219cb..4e51f4da9 100644
--- a/asm/rom_8158B30.s
+++ b/asm/rom_8158B30.s
@@ -310,7 +310,7 @@ sub_8158D8C: @ 8158D8C
bl sub_80A5178
lsls r0, 24
lsrs r6, r0, 24
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _08158DD0
@@ -435,7 +435,7 @@ sub_8158E9C: @ 8158E9C
bl sub_80A5178
lsls r0, 24
lsrs r5, r0, 24
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _08158EE0
@@ -694,7 +694,7 @@ sub_81590B8: @ 81590B8
bl sub_80A5178
lsls r0, 24
lsrs r5, r0, 24
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _081590F8
diff --git a/asm/rom_815A0D4.s b/asm/rom_815A0D4.s
index 8373519ee..c09a2d4d1 100644
--- a/asm/rom_815A0D4.s
+++ b/asm/rom_815A0D4.s
@@ -237,7 +237,7 @@ sub_815A254: @ 815A254
lsls r1, 23
adds r0, r1
lsrs r4, r0, 16
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _0815A2B2
@@ -915,7 +915,7 @@ sub_815A7EC: @ 815A7EC
ldrsh r1, [r5, r2]
adds r0, r4, 0
bl sub_80A6864
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0815A840
@@ -1409,7 +1409,7 @@ sub_815ABEC: @ 815ABEC
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _0815AC40
@@ -1476,7 +1476,7 @@ sub_815AC8C: @ 815AC8C
strh r1, [r0]
ldr r0, =gUnknown_02022E2A
strh r1, [r0]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0815ACB8
@@ -3010,7 +3010,7 @@ _0815B8A8:
ldrb r1, [r5]
mov r0, sp
bl sub_80A6BFC
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
mov r9, r4
cmp r0, 0
@@ -3047,7 +3047,7 @@ _0815B8EA:
ldrh r3, [r0, 0xA]
movs r0, 0x1
bl LoadBgTiles
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _0815BA1C
@@ -3228,7 +3228,7 @@ _0815BAAC:
movs r2, 0
bl lcd_bg_operations
_0815BAB6:
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0815BAF6
@@ -3366,7 +3366,7 @@ _0815BBC8:
movs r1, 0x4
movs r2, 0x1
bl lcd_bg_operations
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0815BC02
@@ -3381,7 +3381,7 @@ _0815BC02:
mov r0, sp
movs r2, 0
bl sub_80A6D60
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _0815BC34
@@ -3564,7 +3564,7 @@ _0815BDA6:
mov r0, sp
ldrb r0, [r0, 0x9]
bl sub_80A6C68
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0815BDC8
@@ -3971,7 +3971,7 @@ _0815C0EC:
movs r1, 0x4
movs r2, 0x1
bl lcd_bg_operations
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0815C124
@@ -3986,7 +3986,7 @@ _0815C124:
mov r0, sp
movs r2, 0
bl sub_80A6D60
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _0815C15C
@@ -4222,7 +4222,7 @@ _0815C34A:
mov r0, sp
ldrb r0, [r0, 0x9]
bl sub_80A6C68
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0815C36C
@@ -5167,7 +5167,7 @@ _0815CAD2:
bl obj_id_set_rotscale
adds r0, r5, 0
bl sub_80A7E6C
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0815CAF8
@@ -5675,7 +5675,7 @@ sub_815CED8: @ 815CED8
str r0, [sp, 0x18]
movs r0, 0
bl GetAnimBankSpriteId
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _0815CF18
@@ -7903,7 +7903,7 @@ sub_815E114: @ 815E114
lsls r1, 3
ldr r0, =gTasks
adds r6, r1, r0
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
@@ -9330,7 +9330,7 @@ sub_815EC48: @ 815EC48
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x26]
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0815ECD0
@@ -10003,7 +10003,7 @@ sub_815F18C: @ 815F18C
lsls r0, 24
cmp r0, 0
beq _0815F1B8
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _0815F1D0
@@ -10130,7 +10130,7 @@ _0815F2AC:
ldrb r0, [r4]
movs r1, 0
bl refresh_graphics_maybe
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _0815F2EE
@@ -10560,7 +10560,7 @@ sub_815F620: @ 815F620
lsls r0, 24
lsrs r0, 24
mov r8, r0
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
lsrs r7, r0, 24
cmp r7, 0
@@ -11024,7 +11024,7 @@ _0815F9DE:
b _0815FE68
.pool
_0815F9F4:
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
beq _0815FA28
@@ -11590,7 +11590,7 @@ _0815FE92:
lsrs r0, 24
cmp r0, 0x1
bne _0815FFBC
- bl sub_80A4DF0
+ bl IsContest
lsls r0, 24
cmp r0, 0
bne _0815FFBC
diff --git a/asm/rom_8161F74.s b/asm/rom_8161F74.s
index 750b3a6fe..c81a1ad38 100644
--- a/asm/rom_8161F74.s
+++ b/asm/rom_8161F74.s
@@ -93,7 +93,7 @@ _0816200E:
negs r3, r3
movs r0, 0
bl saved_warp2_set
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
strh r7, [r0]
pop {r4-r7}
pop {r0}
@@ -264,7 +264,7 @@ _081621B4:
thumb_func_start sub_81621C0
sub_81621C0: @ 81621C0
push {r4,r5,lr}
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
movs r0, 0xFA
lsls r0, 1
@@ -500,7 +500,7 @@ _0816239C:
b _081623DA
.pool
_081623C0:
- ldr r4, =gUnknown_02038BCA
+ ldr r4, =gTrainerBattleOpponent_A
bl Random
lsls r0, 16
lsrs r0, 16
@@ -559,14 +559,14 @@ _08162414:
ldr r2, =0x00000cb2
adds r0, r1, r2
ldrh r3, [r0]
- ldr r2, =gUnknown_02038BCA
+ ldr r2, =gTrainerBattleOpponent_A
lsls r0, r3, 2
ldr r4, =0x00000cb4
adds r1, r4
adds r0, r1, r0
ldrh r0, [r0]
strh r0, [r2]
- ldr r4, =gUnknown_02038BCC
+ ldr r4, =gTrainerBattleOpponent_B
lsls r0, r3, 1
adds r0, 0x1
lsls r0, 1
@@ -586,7 +586,7 @@ _08162488:
lsls r0, 24
cmp r0, 0
beq _081624B4
- ldr r4, =gUnknown_02038BCA
+ ldr r4, =gTrainerBattleOpponent_A
ldrh r0, [r4]
movs r1, 0
bl sub_8162614
@@ -643,7 +643,7 @@ _081624FC:
ldrh r0, [r0]
cmp r4, r0
bne _081624BA
- ldr r4, =gUnknown_02038BCA
+ ldr r4, =gTrainerBattleOpponent_A
strh r3, [r4]
ldrh r0, [r4]
movs r1, 0
@@ -1954,7 +1954,7 @@ sub_8163048: @ 8163048
lsls r4, 24
lsrs r4, 24
bl ZeroEnemyPartyMons
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r0, [r0]
movs r1, 0
adds r2, r4, 0
@@ -1972,12 +1972,12 @@ sub_816306C: @ 816306C
lsls r4, 24
lsrs r4, 24
bl ZeroEnemyPartyMons
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r0, [r0]
movs r1, 0
adds r2, r4, 0
bl sub_81630C4
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
ldrh r0, [r0]
movs r1, 0x3
adds r2, r4, 0
@@ -1995,7 +1995,7 @@ sub_81630A0: @ 81630A0
lsls r4, 24
lsrs r4, 24
bl ZeroEnemyPartyMons
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r0, [r0]
movs r1, 0
adds r2, r4, 0
@@ -2037,7 +2037,7 @@ sub_81630C4: @ 81630C4
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x24]
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r2, [r0]
ldr r0, =gUnknown_0203BC88
ldr r1, [r0]
@@ -2613,14 +2613,14 @@ sub_8163590: @ 8163590
ands r0, r1
cmp r0, 0x2
beq _081635C0
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r0, [r0]
movs r1, 0
bl sub_81635D4
b _081635CA
.pool
_081635C0:
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r0, [r0]
movs r1, 0
bl sub_816379C
@@ -3034,11 +3034,11 @@ sub_8163914: @ 8163914
ldrh r0, [r0]
cmp r0, 0
beq _08163930
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
b _08163932
.pool
_08163930:
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
_08163932:
ldrh r3, [r0]
movs r0, 0xFA
@@ -3362,7 +3362,7 @@ _08163C18:
ldr r1, =gBattleTypeFlags
ldr r0, =0x00000808
str r0, [r1]
- ldr r1, =gUnknown_02038BCA
+ ldr r1, =gTrainerBattleOpponent_A
movs r0, 0
strh r0, [r1]
ldr r0, =sub_8163A8C
@@ -3387,7 +3387,7 @@ _08163C70:
orrs r0, r1
str r0, [r4]
_08163C8A:
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
ldr r0, =0x000003fe
cmp r1, r0
@@ -5240,14 +5240,14 @@ _08164D14:
ldr r1, =gUnknown_020223C4
movs r2, 0x28
bl memcpy
- ldr r2, =gUnknown_02038BCA
+ ldr r2, =gTrainerBattleOpponent_A
ldr r1, [r4]
lsls r0, r6, 2
adds r1, r5
adds r0, r1, r0
ldrh r0, [r0]
strh r0, [r2]
- ldr r4, =gUnknown_02038BCC
+ ldr r4, =gTrainerBattleOpponent_B
lsls r0, r6, 1
adds r0, 0x1
lsls r0, 1
@@ -5337,7 +5337,7 @@ sub_8164E04: @ 8164E04
lsls r0, 16
cmp r0, 0
bne _08164E9A
- ldr r5, =gUnknown_02038BCA
+ ldr r5, =gTrainerBattleOpponent_A
ldrh r1, [r5]
mov r0, sp
bl sub_8162E20
@@ -7344,7 +7344,7 @@ _08165E58:
ldrh r0, [r0]
cmp r3, r0
bne _08165E1C
- ldr r5, =gUnknown_02038BCA
+ ldr r5, =gTrainerBattleOpponent_A
strh r4, [r5]
ldrh r0, [r5]
movs r1, 0
@@ -7388,7 +7388,7 @@ sub_8165EA4: @ 8165EA4
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x20]
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r2, [r0]
ldr r0, =gUnknown_0203BC88
ldr r1, [r0]
diff --git a/asm/rom_817C95C.s b/asm/rom_817C95C.s
index de523a85b..1cb9a92d7 100644
--- a/asm/rom_817C95C.s
+++ b/asm/rom_817C95C.s
@@ -4411,7 +4411,7 @@ _0817EFC2:
lsls r0, 24
cmp r0, 0
beq _0817F0B4
- ldr r4, =gUnknown_0202428E
+ ldr r4, =gSideAffecting
mov r1, r9
ldrb r0, [r1]
bl GetBankIdentity
@@ -4493,7 +4493,7 @@ _0817F08C:
ldrb r1, [r6]
mov r3, r9
ldrb r2, [r3]
- bl move_effectiveness_something
+ bl TypeCalc
lsls r0, 24
lsrs r1, r0, 24
ldr r0, =gBattleMoveDamage
diff --git a/asm/rom_818CFC8.s b/asm/rom_818CFC8.s
index 5f4282d9d..942d04e1d 100644
--- a/asm/rom_818CFC8.s
+++ b/asm/rom_818CFC8.s
@@ -3283,7 +3283,7 @@ _0818EA3E:
negs r3, r3
movs r0, 0
bl saved_warp2_set
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
strh r6, [r0]
pop {r4-r7}
pop {r0}
@@ -5026,7 +5026,7 @@ sub_818F9E0: @ 818F9E0
ldr r1, [r1]
bl StringCopy
ldr r0, =gStringVar2
- ldr r1, =gUnknown_02038BCA
+ ldr r1, =gTrainerBattleOpponent_A
ldrh r1, [r1]
bl sub_8195898
pop {r0}
@@ -5056,7 +5056,7 @@ sub_818FA20: @ 818FA20
adds r1, r0
str r1, [r5]
bl calc_player_party_count
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r0, [r0]
bl sub_8195358
lsls r0, 16
@@ -6135,7 +6135,7 @@ _08190292:
sub_8190298: @ 8190298
push {lr}
bl sub_81902AC
- ldr r1, =gUnknown_02038BCA
+ ldr r1, =gTrainerBattleOpponent_A
strh r0, [r1]
pop {r0}
bx r0
@@ -6168,7 +6168,7 @@ sub_81902AC: @ 81902AC
thumb_func_start sub_81902E4
sub_81902E4: @ 81902E4
push {lr}
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r0, [r0]
movs r1, 0
bl sub_8162614
@@ -12958,7 +12958,7 @@ sub_8193D7C: @ 8193D7C
ldrh r0, [r7]
cmp r0, 0x1
bne _08193E10
- ldr r5, =gUnknown_02038BCA
+ ldr r5, =gTrainerBattleOpponent_A
ldrh r0, [r5]
bl sub_8195358
ldr r4, =gSaveBlock2Ptr
@@ -12998,7 +12998,7 @@ sub_8193D7C: @ 8193D7C
lsls r3, 4
adds r1, r2, r3
adds r1, r0
- ldr r0, =gUnknown_03005D10
+ ldr r0, =gBattleResults
ldrh r0, [r0, 0x22]
strh r0, [r1]
add r2, r8
@@ -13050,7 +13050,7 @@ _08193E10:
lsls r3, 4
adds r1, r3
adds r1, r0
- ldr r0, =gUnknown_03005D10
+ ldr r0, =gBattleResults
ldrh r0, [r0, 0x24]
strh r0, [r1]
ldr r0, =gBattleOutcome
@@ -14893,7 +14893,7 @@ sub_8194EB4: @ 8194EB4
thumb_func_start sub_8194EC0
sub_8194EC0: @ 8194EC0
push {r4,lr}
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r0, [r0]
bl sub_8195358
adds r4, r0, 0
@@ -16287,7 +16287,7 @@ _081959F2:
negs r3, r3
movs r0, 0
bl saved_warp2_set
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
strh r6, [r0]
pop {r4-r7}
pop {r0}
@@ -16510,7 +16510,7 @@ _08195C16:
thumb_func_start sub_8195C20
sub_8195C20: @ 8195C20
push {r4,lr}
- ldr r4, =gUnknown_02038BCA
+ ldr r4, =gTrainerBattleOpponent_A
bl Random
lsls r0, 16
lsrs r0, 16
@@ -16534,7 +16534,7 @@ sub_8195C20: @ 8195C20
thumb_func_start sub_8195C50
sub_8195C50: @ 8195C50
push {lr}
- ldr r3, =gUnknown_02038BCA
+ ldr r3, =gTrainerBattleOpponent_A
ldrh r1, [r3]
ldr r0, =0x0000012b
cmp r1, r0
@@ -43617,7 +43617,7 @@ _081A3AD8:
thumb_func_start sub_81A3B00
sub_81A3B00: @ 81A3B00
push {lr}
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
ldr r0, =0x000003fe
cmp r1, r0
@@ -43789,7 +43789,7 @@ _081A3C84:
adds r1, r0
adds r7, r1, r2
ldrb r5, [r7]
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
mov r9, r0
ldrh r0, [r0]
ldr r1, =0x000003fe
@@ -44664,14 +44664,14 @@ sub_81A443C: @ 81A443C
.pool
_081A4450:
ldr r0, =gStringVar1
- ldr r1, =gUnknown_02038BCA
+ ldr r1, =gTrainerBattleOpponent_A
ldrh r1, [r1]
bl sub_8162E20
b _081A446E
.pool
_081A4464:
ldr r0, =gStringVar2
- ldr r1, =gUnknown_02038BCA
+ ldr r1, =gTrainerBattleOpponent_A
ldrh r1, [r1]
bl sub_8162E20
_081A446E:
@@ -46098,7 +46098,7 @@ sub_81A4FF0: @ 81A4FF0
sub_81A5030: @ 81A5030
push {lr}
lsls r0, 24
- ldr r2, =gUnknown_02038BCA
+ ldr r2, =gTrainerBattleOpponent_A
ldr r3, =0x000003fe
adds r1, r3, 0
strh r1, [r2]
@@ -47142,7 +47142,7 @@ _081A5930:
negs r3, r3
movs r0, 0
bl saved_warp2_set
- ldr r1, =gUnknown_02038BCA
+ ldr r1, =gTrainerBattleOpponent_A
movs r0, 0
strh r0, [r1]
pop {r4-r6}
@@ -47436,7 +47436,7 @@ _081A5BD6:
sub_81A5BE0: @ 81A5BE0
push {lr}
ldr r0, =gStringVar1
- ldr r1, =gUnknown_02038BCA
+ ldr r1, =gTrainerBattleOpponent_A
ldrh r1, [r1]
bl sub_8162E20
pop {r0}
@@ -47855,7 +47855,7 @@ _081A5F40:
negs r3, r3
movs r0, 0
bl saved_warp2_set
- ldr r1, =gUnknown_02038BCA
+ ldr r1, =gTrainerBattleOpponent_A
movs r0, 0
strh r0, [r1]
pop {r4-r7}
@@ -48185,7 +48185,7 @@ _081A6244:
ldrh r0, [r0]
cmp r7, r0
bne _081A61FA
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
strh r3, [r0]
ldr r2, [r6]
adds r1, r2, r1
@@ -48353,7 +48353,7 @@ _081A636E:
thumb_func_start sub_81A63B8
sub_81A63B8: @ 81A63B8
push {lr}
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r0, [r0]
movs r1, 0
bl sub_8162614
@@ -49829,8 +49829,8 @@ _081A6FA8:
.pool
thumb_func_end sub_81A6F70
- thumb_func_start sub_81A6FB4
-sub_81A6FB4: @ 81A6FB4
+ thumb_func_start GetAiScriptsInBattleFactory
+GetAiScriptsInBattleFactory: @ 81A6FB4
push {r4,r5,lr}
ldr r5, =gSaveBlock2Ptr
ldr r0, [r5]
@@ -49856,7 +49856,7 @@ sub_81A6FB4: @ 81A6FB4
bl __udivsi3
lsls r0, 16
lsrs r2, r0, 16
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
ldr r0, =0x000003fe
cmp r1, r0
@@ -49879,7 +49879,7 @@ _081A701E:
pop {r4,r5}
pop {r1}
bx r1
- thumb_func_end sub_81A6FB4
+ thumb_func_end GetAiScriptsInBattleFactory
thumb_func_start sub_81A7024
sub_81A7024: @ 81A7024
@@ -52256,7 +52256,7 @@ _081A831A:
subs r0, 0x1
cmp r3, r0
bne _081A82D2
- ldr r5, =gUnknown_02038BCA
+ ldr r5, =gTrainerBattleOpponent_A
strh r4, [r5]
ldr r1, =gUnknown_0203BC88
ldr r0, =gBattleFrontierTrainers
@@ -52344,7 +52344,7 @@ _081A83EE:
subs r0, 0x1
cmp r3, r0
bne _081A83A0
- ldr r5, =gUnknown_02038BCA
+ ldr r5, =gTrainerBattleOpponent_A
strh r4, [r5]
ldrh r0, [r5]
movs r1, 0
@@ -52405,7 +52405,7 @@ _081A8466:
ldrh r0, [r0]
cmp r3, r0
bne _081A8426
- ldr r5, =gUnknown_02038BCC
+ ldr r5, =gTrainerBattleOpponent_B
strh r4, [r5]
ldrh r0, [r5]
movs r1, 0x1
@@ -52465,7 +52465,7 @@ sub_81A84EC: @ 81A84EC
ldrh r0, [r0]
cmp r0, 0
bne _081A8524
- ldr r3, =gUnknown_02038BCA
+ ldr r3, =gTrainerBattleOpponent_A
ldrh r1, [r3]
ldr r0, =0x0000012b
cmp r1, r0
@@ -52482,7 +52482,7 @@ sub_81A84EC: @ 81A84EC
_081A8524:
cmp r0, 0x1
bne _081A8542
- ldr r3, =gUnknown_02038BCC
+ ldr r3, =gTrainerBattleOpponent_B
ldrh r1, [r3]
ldr r0, =0x0000012b
cmp r1, r0
@@ -52896,7 +52896,7 @@ sub_81A8830: @ 81A8830
adds r0, r1
strh r4, [r0]
_081A887C:
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
strh r4, [r0]
ldr r1, =gBattleOutcome
movs r0, 0
@@ -53742,7 +53742,7 @@ _081A8EFC:
bl sub_81AAA7C
_081A8F14:
bl sub_81C4EEC
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
movs r1, 0
strh r1, [r0]
ldr r0, =gBattleOutcome
@@ -55146,7 +55146,7 @@ GetBattlePyramidTrainerFlag: @ 81A9AC4
thumb_func_start sub_81A9B04
sub_81A9B04: @ 81A9B04
push {lr}
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r0, [r0]
bl sub_81A9B44
ldr r0, =gBattleTypeFlags
@@ -55160,7 +55160,7 @@ sub_81A9B04: @ 81A9B04
bl sub_80B47E0
ldr r1, =gUnknown_03005DF0
strb r0, [r1]
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
ldrh r0, [r0]
bl sub_81A9B44
_081A9B2E:
@@ -85360,7 +85360,7 @@ sub_81B9A44: @ 81B9A44
thumb_func_start sub_81B9A60
sub_81B9A60: @ 81B9A60
push {r4,lr}
- ldr r4, =gUnknown_02038BCA
+ ldr r4, =gTrainerBattleOpponent_A
bl Random
lsls r0, 16
lsrs r0, 16
@@ -85384,7 +85384,7 @@ sub_81B9A60: @ 81B9A60
thumb_func_start sub_81B9A90
sub_81B9A90: @ 81B9A90
push {lr}
- ldr r3, =gUnknown_02038BCA
+ ldr r3, =gTrainerBattleOpponent_A
ldrh r1, [r3]
ldr r0, =0x0000012b
cmp r1, r0
@@ -85652,7 +85652,7 @@ _081B9CE6:
sub_81B9CF0: @ 81B9CF0
push {lr}
ldr r0, =gStringVar1
- ldr r1, =gUnknown_02038BCA
+ ldr r1, =gTrainerBattleOpponent_A
ldrh r1, [r1]
bl sub_8162E20
pop {r0}
@@ -86114,7 +86114,7 @@ _081BA0AA:
ldrh r0, [r0]
cmp r5, r0
bne _081BA066
- ldr r2, =gUnknown_02038BCA
+ ldr r2, =gTrainerBattleOpponent_A
strh r3, [r2]
ldrh r3, [r2]
ldr r4, =gUnknown_0203BC88
diff --git a/asm/rom_81BE66C.s b/asm/rom_81BE66C.s
index 9bf4912a4..f33063f16 100644
--- a/asm/rom_81BE66C.s
+++ b/asm/rom_81BE66C.s
@@ -46461,7 +46461,7 @@ sub_81D61E8: @ 81D61E8
lsls r0, 25
lsrs r4, r0, 24
movs r3, 0
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
mov r8, r0
ldr r6, =gSaveBlock2Ptr
ldr r1, =gBitTable
@@ -46505,7 +46505,7 @@ _081D624A:
cmp r0, 0
beq _081D62A2
movs r3, 0
- ldr r5, =gUnknown_02038BCC
+ ldr r5, =gTrainerBattleOpponent_B
ldr r0, =gBitTable
mov r8, r0
_081D6260:
@@ -46656,7 +46656,7 @@ _081D636A:
sub_81D6384: @ 81D6384
push {lr}
bl ZeroEnemyPartyMons
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r0, [r0]
movs r1, 0
bl sub_81D62CC
@@ -46669,11 +46669,11 @@ sub_81D6384: @ 81D6384
sub_81D639C: @ 81D639C
push {lr}
bl ZeroEnemyPartyMons
- ldr r0, =gUnknown_02038BCA
+ ldr r0, =gTrainerBattleOpponent_A
ldrh r0, [r0]
movs r1, 0
bl sub_81D62CC
- ldr r0, =gUnknown_02038BCC
+ ldr r0, =gTrainerBattleOpponent_B
ldrh r0, [r0]
movs r1, 0x3
bl sub_81D62CC
diff --git a/asm/safari_zone.s b/asm/safari_zone.s
index a1f660f4a..316e0f6cf 100644
--- a/asm/safari_zone.s
+++ b/asm/safari_zone.s
@@ -125,7 +125,7 @@ sub_80FC180: @ 80FC180
sub_80FC190: @ 80FC190
push {lr}
ldr r1, =gUnknown_0203A051
- ldr r0, =gUnknown_03005D10
+ ldr r0, =gBattleResults
ldrb r0, [r0, 0x1F]
ldrb r2, [r1]
adds r0, r2
diff --git a/asm/secret_base.s b/asm/secret_base.s
index a4352e975..056e0913a 100644
--- a/asm/secret_base.s
+++ b/asm/secret_base.s
@@ -2894,7 +2894,7 @@ sub_80EA2E4: @ 80EA2E4
push {lr}
movs r0, 0x1
bl sub_813BADC
- ldr r1, =gUnknown_02038BCA
+ ldr r1, =gTrainerBattleOpponent_A
movs r2, 0x80
lsls r2, 3
adds r0, r2, 0
diff --git a/asm/tv.s b/asm/tv.s
index ccf232dd0..8f6c489ef 100644
--- a/asm/tv.s
+++ b/asm/tv.s
@@ -542,7 +542,7 @@ GabbyAndTyBeforeInterview: @ 80EC31C
push {r4,lr}
ldr r3, =gSaveBlock1Ptr
ldr r2, [r3]
- ldr r0, =gUnknown_03005D10
+ ldr r0, =gBattleResults
mov r12, r0
ldrh r1, [r0, 0x6]
ldr r4, =0x00002ba4
@@ -1032,7 +1032,7 @@ sub_80EC728: @ 80EC728
movs r4, 0
bl sub_80EED88
bl sub_80ED718
- ldr r5, =gUnknown_03005D10
+ ldr r5, =gBattleResults
ldrh r0, [r5, 0x28]
cmp r0, 0
bne _080EC74C
@@ -1216,7 +1216,7 @@ _080EC8CA:
ldrh r0, [r4, 0x2]
adds r0, 0x1
strh r0, [r4, 0x2]
- ldr r1, =gUnknown_03005D10
+ ldr r1, =gBattleResults
ldrh r0, [r1, 0x28]
strh r0, [r4, 0x4]
ldrh r0, [r1, 0x6]
@@ -1300,7 +1300,7 @@ _080EC940:
movs r0, 0x17
strb r0, [r4]
strb r1, [r4, 0x1]
- ldr r1, =gUnknown_03005D10
+ ldr r1, =gBattleResults
ldrh r0, [r1, 0x6]
strh r0, [r4, 0xC]
ldrh r0, [r1, 0x20]
@@ -4048,7 +4048,7 @@ _080EE1B6:
strb r0, [r4]
strb r1, [r4, 0x1]
movs r5, 0
- ldr r6, =gUnknown_03005D10
+ ldr r6, =gBattleResults
ldr r3, =gUnknown_02037318
ldr r7, =gSaveBlock2Ptr
adds r2, r6, 0
@@ -4122,7 +4122,7 @@ _080EE27E:
_080EE280:
strb r0, [r4, 0x5]
_080EE282:
- ldr r1, =gUnknown_03005D10
+ ldr r1, =gBattleResults
ldrh r0, [r1, 0x20]
strh r0, [r4, 0x2]
ldrb r0, [r4, 0x5]
diff --git a/asm/wild_encounter.s b/asm/wild_encounter.s
index 181a89d7e..a7bb479b1 100644
--- a/asm/wild_encounter.s
+++ b/asm/wild_encounter.s
@@ -835,7 +835,7 @@ _080B4E98:
bl GetMonData
adds r1, r0, 0
adds r0, r4, 0
- bl pokemon_species_get_gender_info
+ bl GetGenderFromSpeciesAndPersonality
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0xFE
diff --git a/data/battle_ai_scripts.s b/data/battle_ai_scripts.s
index dfcda5397..0cb225ef5 100644
--- a/data/battle_ai_scripts.s
+++ b/data/battle_ai_scripts.s
@@ -4,5 +4,5 @@
.section script_data, "aw", %progbits
.align 2
-gUnknown_082DBEF8:: @ 82DBEF8
+gBattleAI_ScriptsTable:: @ 82DBEF8
.incbin "baserom.gba", 0x2dbef8, 0x2458
diff --git a/data/data3.s b/data/data3.s
index c9845a7db..da1196337 100644
--- a/data/data3.s
+++ b/data/data3.s
@@ -4051,1007 +4051,3 @@ gUnknown_085B0830:: @ 85B0830
gUnknown_085B0838:: @ 85B0838
.incbin "baserom.gba", 0x5b0838, 0x4
-
- @ todo, label functions from battle_ai.c
-sBattleAICmdTable:: @ 85B083C
- .4byte 0x08131179
- .4byte 0x081311b9
- .4byte 0x081311f9
- .4byte 0x08131239
- .4byte 0x08131279
- .4byte 0x081312bd
- .4byte 0x08131325
- .4byte 0x0813138d
- .4byte 0x081313f5
- .4byte 0x0813145d
- .4byte 0x081314d1
- .4byte 0x08131545
- .4byte 0x081315b9
- .4byte 0x0813162d
- .4byte 0x0813169d
- .4byte 0x0813170d
- .4byte 0x08131789
- .4byte 0x08131805
- .4byte 0x08131841
- .4byte 0x0813187d
- .4byte 0x081318b9
- .4byte 0x081318f5
- .4byte 0x08131949
- .4byte 0x0813199d
- .4byte 0x081319f1
- .4byte 0x08131a45
- .4byte 0x08131a89
- .4byte 0x08131acd
- .4byte 0x08131b35
- .4byte 0x08131ba1
- .4byte 0x08131c0d
- .4byte 0x08131c7d
- .4byte 0x08131ced
- .4byte 0x08131d5d
- .4byte 0x08131d81
- .4byte 0x08131f1d
- .4byte 0x08131f49
- .4byte 0x0813214d
- .4byte 0x081321a5
- .4byte 0x081321e1
- .4byte 0x0813221d
- .4byte 0x08132269
- .4byte 0x081322b5
- .4byte 0x081322b9
- .4byte 0x081322bd
- .4byte 0x081323b9
- .4byte 0x081323d5
- .4byte 0x08132401
- .4byte 0x08132615
- .4byte 0x08132701
- .4byte 0x081327d1
- .4byte 0x081327d5
- .4byte 0x081327d9
- .4byte 0x081328b9
- .4byte 0x08132995
- .4byte 0x08132a01
- .4byte 0x08132a4d
- .4byte 0x08132a99
- .4byte 0x08132b01
- .4byte 0x08132b69
- .4byte 0x08132bd1
- .4byte 0x08132c39
- .4byte 0x08132d35
- .4byte 0x08132e19
- .4byte 0x08132f49
- .4byte 0x08133021
- .4byte 0x08133119
- .4byte 0x081331fd
- .4byte 0x08133285
- .4byte 0x08133315
- .4byte 0x08133329
- .4byte 0x08133389
- .4byte 0x0813339d
- .4byte 0x08133495
- .4byte 0x081334ed
- .4byte 0x08133539
- .4byte 0x08133585
- .4byte 0x081335ad
- .4byte 0x081335f9
- .4byte 0x08133625
- .4byte 0x08133651
- .4byte 0x0813367d
- .4byte 0x081336c9
- .4byte 0x081336cd
- .4byte 0x081336d1
- .4byte 0x081336d5
- .4byte 0x081336d9
- .4byte 0x081336dd
- .4byte 0x081336e1
- .4byte 0x08133711
- .4byte 0x08133731
- .4byte 0x08133755
- .4byte 0x0813382d
- .4byte 0x0813387d
- .4byte 0x081338cd
- .4byte 0x08131eb5
- .4byte 0x0813251d
- .4byte 0x0813391d
- .4byte 0x08133415
-
-gUnknown_085B09C8:: @ 85B09C8
- .incbin "baserom.gba", 0x5b09c8, 0x1c
-
-gUnknown_085B09E4:: @ 85B09E4
- .incbin "baserom.gba", 0x5b09e4, 0x10
-
-gUnknown_085B09F4:: @ 85B09F4
- .incbin "baserom.gba", 0x5b09f4, 0x4
-
-gUnknown_085B09F8:: @ 85B09F8
- .incbin "baserom.gba", 0x5b09f8, 0x8
-
-gUnknown_085B0A00:: @ 85B0A00
- .incbin "baserom.gba", 0x5b0a00, 0x2
-
-gUnknown_085B0A02:: @ 85B0A02
- .incbin "baserom.gba", 0x5b0a02, 0x7e
-
-gUnknown_085B0A80:: @ 85B0A80
- .incbin "baserom.gba", 0x5b0a80, 0x18c
-
-gUnknown_085B0C0C:: @ 85B0C0C
- .incbin "baserom.gba", 0x5b0c0c, 0x1f8
-
-gUnknown_085B0E04:: @ 85B0E04
- .incbin "baserom.gba", 0x5b0e04, 0xfc8
-
-gUnknown_085B1DCC:: @ 85B1DCC
- .incbin "baserom.gba", 0x5b1dcc, 0x10
-
-gUnknown_085B1DDC:: @ 85B1DDC
- .incbin "baserom.gba", 0x5b1ddc, 0x8
-
-gUnknown_085B1DE4:: @ 85B1DE4
- .incbin "baserom.gba", 0x5b1de4, 0x8
-
-gUnknown_085B1DEC:: @ 85B1DEC
- .incbin "baserom.gba", 0x5b1dec, 0x6
-
-gUnknown_085B1DF2:: @ 85B1DF2
- .incbin "baserom.gba", 0x5b1df2, 0x6
-
-gUnknown_085B1DF8:: @ 85B1DF8
- .incbin "baserom.gba", 0x5b1df8, 0x8
-
-gUnknown_085B1E00:: @ 85B1E00
- .incbin "baserom.gba", 0x5b1e00, 0xc
-
-gUnknown_085B1E0C:: @ 85B1E0C
- .incbin "baserom.gba", 0x5b1e0c, 0x1c
-
-gUnknown_085B1E28:: @ 85B1E28
- .incbin "baserom.gba", 0x5b1e28, 0xa8
-
-gUnknown_085B1ED0:: @ 85B1ED0
- .incbin "baserom.gba", 0x5b1ed0, 0x8
-
-gUnknown_085B1ED8:: @ 85B1ED8
- .incbin "baserom.gba", 0x5b1ed8, 0x10
-
-gUnknown_085B1EE8:: @ 85B1EE8
- .incbin "baserom.gba", 0x5b1ee8, 0x10
-
-gUnknown_085B1EF8:: @ 85B1EF8
- .incbin "baserom.gba", 0x5b1ef8, 0x18
-
-gUnknown_085B1F10:: @ 85B1F10
- .incbin "baserom.gba", 0x5b1f10, 0x18
-
-gUnknown_085B1F28:: @ 85B1F28
- .incbin "baserom.gba", 0x5b1f28, 0x18
-
-gUnknown_085B1F40:: @ 85B1F40
- .incbin "baserom.gba", 0x5b1f40, 0x294
-
-gUnknown_085B21D4:: @ 85B21D4
- .incbin "baserom.gba", 0x5b21d4, 0x8
-
-gUnknown_085B21DC:: @ 85B21DC
- .incbin "baserom.gba", 0x5b21dc, 0x18
-
-gUnknown_085B21F4:: @ 85B21F4
- .incbin "baserom.gba", 0x5b21f4, 0x8
-
-gUnknown_085B21FC:: @ 85B21FC
- .incbin "baserom.gba", 0x5b21fc, 0xc
-
-gUnknown_085B2208:: @ 85B2208
- .incbin "baserom.gba", 0x5b2208, 0x10
-
-gUnknown_085B2218:: @ 85B2218
- .incbin "baserom.gba", 0x5b2218, 0x38
-
-gUnknown_085B2250:: @ 85B2250
- .incbin "baserom.gba", 0x5b2250, 0x18
-
-gUnknown_085B2268:: @ 85B2268
- .incbin "baserom.gba", 0x5b2268, 0x38
-
-gUnknown_085B22A0:: @ 85B22A0
- .incbin "baserom.gba", 0x5b22a0, 0x18
-
-gUnknown_085B22B8:: @ 85B22B8
- .incbin "baserom.gba", 0x5b22b8, 0x18
-
-gUnknown_085B22D0:: @ 85B22D0
- .incbin "baserom.gba", 0x5b22d0, 0x2d0
-
-gUnknown_085B25A0:: @ 85B25A0
- .incbin "baserom.gba", 0x5b25a0, 0x80
-
-gUnknown_085B2620:: @ 85B2620
- .incbin "baserom.gba", 0x5b2620, 0xc
-
-gUnknown_085B262C:: @ 85B262C
- .incbin "baserom.gba", 0x5b262c, 0x3c
-
-gUnknown_085B2668:: @ 85B2668
- .incbin "baserom.gba", 0x5b2668, 0x30
-
-gUnknown_085B2698:: @ 85B2698
- .incbin "baserom.gba", 0x5b2698, 0x3
-
-gUnknown_085B269B:: @ 85B269B
- .incbin "baserom.gba", 0x5b269b, 0x2
-
-gUnknown_085B269D:: @ 85B269D
- .incbin "baserom.gba", 0x5b269d, 0x2
-
-gUnknown_085B269F:: @ 85B269F
- .incbin "baserom.gba", 0x5b269f, 0x5
-
-gUnknown_085B26A4:: @ 85B26A4
- .incbin "baserom.gba", 0x5b26a4, 0x4c
-
-gUnknown_085B26F0:: @ 85B26F0
- .incbin "baserom.gba", 0x5b26f0, 0x4
-
-gUnknown_085B26F4:: @ 85B26F4
- .incbin "baserom.gba", 0x5b26f4, 0x8
-
-gUnknown_085B26FC:: @ 85B26FC
- .incbin "baserom.gba", 0x5b26fc, 0x8
-
-gUnknown_085B2704:: @ 85B2704
- .incbin "baserom.gba", 0x5b2704, 0x18
-
-gUnknown_085B271C:: @ 85B271C
- .incbin "baserom.gba", 0x5b271c, 0x4
-
-gUnknown_085B2720:: @ 85B2720
- .incbin "baserom.gba", 0x5b2720, 0x28
-
-gUnknown_085B2748:: @ 85B2748
- .incbin "baserom.gba", 0x5b2748, 0x60
-
-gUnknown_085B27A8:: @ 85B27A8
- .incbin "baserom.gba", 0x5b27a8, 0x8
-
-gUnknown_085B27B0:: @ 85B27B0
- .incbin "baserom.gba", 0x5b27b0, 0x18
-
-gUnknown_085B27C8:: @ 85B27C8
- .incbin "baserom.gba", 0x5b27c8, 0x88
-
-gUnknown_085B2850:: @ 85B2850
- .incbin "baserom.gba", 0x5b2850, 0x20
-
-gUnknown_085B2870:: @ 85B2870
- .incbin "baserom.gba", 0x5b2870, 0x20
-
-gUnknown_085B2890:: @ 85B2890
- .incbin "baserom.gba", 0x5b2890, 0x10
-
-gUnknown_085B28A0:: @ 85B28A0
- .incbin "baserom.gba", 0x5b28a0, 0x10
-
-gUnknown_085B28B0:: @ 85B28B0
- .incbin "baserom.gba", 0x5b28b0, 0x1e0
-
-gUnknown_085B2A90:: @ 85B2A90
- .incbin "baserom.gba", 0x5b2a90, 0xb4
-
-gUnknown_085B2B44:: @ 85B2B44
- .incbin "baserom.gba", 0x5b2b44, 0x18
-
-gUnknown_085B2B5C:: @ 85B2B5C
- .incbin "baserom.gba", 0x5b2b5c, 0x4
-
-gUnknown_085B2B60:: @ 85B2B60
- .incbin "baserom.gba", 0x5b2b60, 0x8
-
-gUnknown_085B2B68:: @ 85B2B68
- .incbin "baserom.gba", 0x5b2b68, 0x10
-
-gUnknown_085B2B78:: @ 85B2B78
- .incbin "baserom.gba", 0x5b2b78, 0x6
-
-gUnknown_085B2B7E:: @ 85B2B7E
- .incbin "baserom.gba", 0x5b2b7e, 0xa
-
-gUnknown_085B2B88:: @ 85B2B88
- .incbin "baserom.gba", 0x5b2b88, 0xc
-
-gUnknown_085B2B94:: @ 85B2B94
- .incbin "baserom.gba", 0x5b2b94, 0xc
-
-gUnknown_085B2BA0:: @ 85B2BA0
- .incbin "baserom.gba", 0x5b2ba0, 0xc
-
-gUnknown_085B2BAC:: @ 85B2BAC
- .incbin "baserom.gba", 0x5b2bac, 0x8
-
-gUnknown_085B2BB4:: @ 85B2BB4
- .incbin "baserom.gba", 0x5b2bb4, 0x40
-
-gUnknown_085B2BF4:: @ 85B2BF4
- .incbin "baserom.gba", 0x5b2bf4, 0x12
-
-gUnknown_085B2C06:: @ 85B2C06
- .incbin "baserom.gba", 0x5b2c06, 0x12
-
-gUnknown_085B2C18:: @ 85B2C18
- .incbin "baserom.gba", 0x5b2c18, 0x9
-
-gUnknown_085B2C21:: @ 85B2C21
- .incbin "baserom.gba", 0x5b2c21, 0x9
-
-gUnknown_085B2C2A:: @ 85B2C2A
- .incbin "baserom.gba", 0x5b2c2a, 0x26
-
-gUnknown_085B2C50:: @ 85B2C50
- .incbin "baserom.gba", 0x5b2c50, 0x78
-
-gUnknown_085B2CC8:: @ 85B2CC8
- .incbin "baserom.gba", 0x5b2cc8, 0x14
-
-gUnknown_085B2CDC:: @ 85B2CDC
- .incbin "baserom.gba", 0x5b2cdc, 0x14
-
-gUnknown_085B2CF0:: @ 85B2CF0
- .incbin "baserom.gba", 0x5b2cf0, 0x340
-
-gUnknown_085B3030:: @ 85B3030
- .incbin "baserom.gba", 0x5b3030, 0x10
-
-gUnknown_085B3040:: @ 85B3040
- .incbin "baserom.gba", 0x5b3040, 0x64
-
-gUnknown_085B30A4:: @ 85B30A4
- .incbin "baserom.gba", 0x5b30a4, 0x30
-
-gUnknown_085B30D4:: @ 85B30D4
- .incbin "baserom.gba", 0x5b30d4, 0x30
-
-gUnknown_085B3104:: @ 85B3104
- .incbin "baserom.gba", 0x5b3104, 0x18
-
-gUnknown_085B311C:: @ 85B311C
- .incbin "baserom.gba", 0x5b311c, 0x8
-
-gUnknown_085B3124:: @ 85B3124
- .incbin "baserom.gba", 0x5b3124, 0x8
-
-gUnknown_085B312C:: @ 85B312C
- .incbin "baserom.gba", 0x5b312c, 0x16
-
-gUnknown_085B3142:: @ 85B3142
- .incbin "baserom.gba", 0x5b3142, 0xc
-
-gUnknown_085B314E:: @ 85B314E
- .incbin "baserom.gba", 0x5b314e, 0xe
-
-gUnknown_085B315C:: @ 85B315C
- .incbin "baserom.gba", 0x5b315c, 0x14
-
-gUnknown_085B3170:: @ 85B3170
- .incbin "baserom.gba", 0x5b3170, 0x2c
-
-gUnknown_085B319C:: @ 85B319C
- .incbin "baserom.gba", 0x5b319c, 0x18
-
-gUnknown_085B31B4:: @ 85B31B4
- .incbin "baserom.gba", 0x5b31b4, 0x1c
-
-gUnknown_085B31D0:: @ 85B31D0
- .incbin "baserom.gba", 0x5b31d0, 0x28
-
-gUnknown_085B31F8:: @ 85B31F8
- .incbin "baserom.gba", 0x5b31f8, 0x14
-
-gUnknown_085B320C:: @ 85B320C
- .incbin "baserom.gba", 0x5b320c, 0x14
-
-gUnknown_085B3220:: @ 85B3220
- .incbin "baserom.gba", 0x5b3220, 0x8
-
-gUnknown_085B3228:: @ 85B3228
- .incbin "baserom.gba", 0x5b3228, 0x2c
-
-gUnknown_085B3254:: @ 85B3254
- .incbin "baserom.gba", 0x5b3254, 0x2c
-
-gUnknown_085B3280:: @ 85B3280
- .incbin "baserom.gba", 0x5b3280, 0x160
-
-gUnknown_085B33E0:: @ 85B33E0
- .incbin "baserom.gba", 0x5b33e0, 0x16
-
-gUnknown_085B33F6:: @ 85B33F6
- .incbin "baserom.gba", 0x5b33f6, 0xa
-
-gUnknown_085B3400:: @ 85B3400
- .incbin "baserom.gba", 0x5b3400, 0x10
-
-gUnknown_085B3410:: @ 85B3410
- .incbin "baserom.gba", 0x5b3410, 0x10
-
-gUnknown_085B3420:: @ 85B3420
- .incbin "baserom.gba", 0x5b3420, 0x24
-
-gUnknown_085B3444:: @ 85B3444
- .incbin "baserom.gba", 0x5b3444, 0x2c
-
-gUnknown_085B3470:: @ 85B3470
- .incbin "baserom.gba", 0x5b3470, 0x4
-
-gUnknown_085B3474:: @ 85B3474
- .incbin "baserom.gba", 0x5b3474, 0x8
-
-gUnknown_085B347C:: @ 85B347C
- .incbin "baserom.gba", 0x5b347c, 0x8
-
-gUnknown_085B3484:: @ 85B3484
- .incbin "baserom.gba", 0x5b3484, 0xc0
-
-gUnknown_085B3544:: @ 85B3544
- .incbin "baserom.gba", 0x5b3544, 0x20
-
-gUnknown_085B3564:: @ 85B3564
- .incbin "baserom.gba", 0x5b3564, 0x800
-
-gUnknown_085B3D64:: @ 85B3D64
- .incbin "baserom.gba", 0x5b3d64, 0x8
-
-gUnknown_085B3D6C:: @ 85B3D6C
- .incbin "baserom.gba", 0x5b3d6c, 0x10
-
-gUnknown_085B3D7C:: @ 85B3D7C
- .incbin "baserom.gba", 0x5b3d7c, 0x8
-
-gUnknown_085B3D84:: @ 85B3D84
- .incbin "baserom.gba", 0x5b3d84, 0x8
-
-gUnknown_085B3D8C:: @ 85B3D8C
- .incbin "baserom.gba", 0x5b3d8c, 0x8
-
-gUnknown_085B3D94:: @ 85B3D94
- .incbin "baserom.gba", 0x5b3d94, 0x20
-
-gUnknown_085B3DB4:: @ 85B3DB4
- .incbin "baserom.gba", 0x5b3db4, 0x134
-
-gUnknown_085B3EE8:: @ 85B3EE8
- .incbin "baserom.gba", 0x5b3ee8, 0x2
-
-gUnknown_085B3EEA:: @ 85B3EEA
- .incbin "baserom.gba", 0x5b3eea, 0x6
-
-gUnknown_085B3EF0:: @ 85B3EF0
- .incbin "baserom.gba", 0x5b3ef0, 0xc
-
-gUnknown_085B3EFC:: @ 85B3EFC
- .incbin "baserom.gba", 0x5b3efc, 0x1c
-
-gUnknown_085B3F18:: @ 85B3F18
- .incbin "baserom.gba", 0x5b3f18, 0x100
-
-gUnknown_085B4018:: @ 85B4018
- .incbin "baserom.gba", 0x5b4018, 0x4
-
-gUnknown_085B401C:: @ 85B401C
- .incbin "baserom.gba", 0x5b401c, 0x8
-
-gUnknown_085B4024:: @ 85B4024
- .incbin "baserom.gba", 0x5b4024, 0x10
-
-gUnknown_085B4034:: @ 85B4034
- .incbin "baserom.gba", 0x5b4034, 0xb8
-
-gUnknown_085B40EC:: @ 85B40EC
- .incbin "baserom.gba", 0x5b40ec, 0x10
-
-gUnknown_085B40FC:: @ 85B40FC
- .incbin "baserom.gba", 0x5b40fc, 0x38
-
-gUnknown_085B4134:: @ 85B4134
- .incbin "baserom.gba", 0x5b4134, 0x6f8
-
-gUnknown_085B482C:: @ 85B482C
- .incbin "baserom.gba", 0x5b482c, 0x4e4
-
-gUnknown_085B4D10:: @ 85B4D10
- .incbin "baserom.gba", 0x5b4d10, 0x4d4
-
-gUnknown_085B51E4:: @ 85B51E4
- .incbin "baserom.gba", 0x5b51e4, 0x6a0
-
-gUnknown_085B5884:: @ 85B5884
- .incbin "baserom.gba", 0x5b5884, 0x40
-
-gUnknown_085B58C4:: @ 85B58C4
- .incbin "baserom.gba", 0x5b58c4, 0x5
-
-gUnknown_085B58C9:: @ 85B58C9
- .incbin "baserom.gba", 0x5b58c9, 0x10
-
-gUnknown_085B58D9:: @ 85B58D9
- .incbin "baserom.gba", 0x5b58d9, 0x323
-
-gUnknown_085B5BFC:: @ 85B5BFC
- .incbin "baserom.gba", 0x5b5bfc, 0x200
-
-gUnknown_085B5DFC:: @ 85B5DFC
- .incbin "baserom.gba", 0x5b5dfc, 0x1a4
-
-gUnknown_085B5FA0:: @ 85B5FA0
- .incbin "baserom.gba", 0x5b5fa0, 0x1a0
-
-gUnknown_085B6140:: @ 85B6140
- .incbin "baserom.gba", 0x5b6140, 0xc
-
-gUnknown_085B614C:: @ 85B614C
- .incbin "baserom.gba", 0x5b614c, 0x8
-
-gUnknown_085B6154:: @ 85B6154
- .incbin "baserom.gba", 0x5b6154, 0xc
-
-gUnknown_085B6160:: @ 85B6160
- .incbin "baserom.gba", 0x5b6160, 0x184
-
-gUnknown_085B62E4:: @ 85B62E4
- .incbin "baserom.gba", 0x5b62e4, 0x4
-
-gUnknown_085B62E8:: @ 85B62E8
- .incbin "baserom.gba", 0x5b62e8, 0x5c
-
-gUnknown_085B6344:: @ 85B6344
- .incbin "baserom.gba", 0x5b6344, 0x4
-
-gUnknown_085B6348:: @ 85B6348
- .incbin "baserom.gba", 0x5b6348, 0x40
-
-gUnknown_085B6388:: @ 85B6388
- .incbin "baserom.gba", 0x5b6388, 0x68
-
-gUnknown_085B63F0:: @ 85B63F0
- .incbin "baserom.gba", 0x5b63f0, 0x18
-
-gUnknown_085B6408:: @ 85B6408
- .incbin "baserom.gba", 0x5b6408, 0x8
-
-gUnknown_085B6410:: @ 85B6410
- .incbin "baserom.gba", 0x5b6410, 0x8
-
-gUnknown_085B6418:: @ 85B6418
- .incbin "baserom.gba", 0x5b6418, 0x6
-
-gUnknown_085B641E:: @ 85B641E
- .incbin "baserom.gba", 0x5b641e, 0x4
-
-gUnknown_085B6422:: @ 85B6422
- .incbin "baserom.gba", 0x5b6422, 0xa
-
-gUnknown_085B642C:: @ 85B642C
- .incbin "baserom.gba", 0x5b642c, 0x10
-
-gUnknown_085B643C:: @ 85B643C
- .incbin "baserom.gba", 0x5b643c, 0xc
-
-gUnknown_085B6448:: @ 85B6448
- .incbin "baserom.gba", 0x5b6448, 0xf3c
-
-gUnknown_085B7384:: @ 85B7384
- .incbin "baserom.gba", 0x5b7384, 0x98
-
-gUnknown_085B741C:: @ 85B741C
- .incbin "baserom.gba", 0x5b741c, 0x6c
-
-gUnknown_085B7488:: @ 85B7488
- .incbin "baserom.gba", 0x5b7488, 0x8
-
-gUnknown_085B7490:: @ 85B7490
- .incbin "baserom.gba", 0x5b7490, 0x78
-
-gUnknown_085B7508:: @ 85B7508
- .incbin "baserom.gba", 0x5b7508, 0x60
-
-gUnknown_085B7568:: @ 85B7568
- .incbin "baserom.gba", 0x5b7568, 0x48
-
-gUnknown_085B75B0:: @ 85B75B0
- .incbin "baserom.gba", 0x5b75b0, 0x60
-
-gUnknown_085B7610:: @ 85B7610
- .incbin "baserom.gba", 0x5b7610, 0x140
-
-gUnknown_085B7750:: @ 85B7750
- .incbin "baserom.gba", 0x5b7750, 0x94
-
-gUnknown_085B77E4:: @ 85B77E4
- .incbin "baserom.gba", 0x5b77e4, 0x18
-
-gUnknown_085B77FC:: @ 85B77FC
- .incbin "baserom.gba", 0x5b77fc, 0x18
-
-gUnknown_085B7814:: @ 85B7814
- .incbin "baserom.gba", 0x5b7814, 0x18
-
-gUnknown_085B782C:: @ 85B782C
- .incbin "baserom.gba", 0x5b782c, 0x18
-
-gUnknown_085B7844:: @ 85B7844
- .incbin "baserom.gba", 0x5b7844, 0x20
-
-gUnknown_085B7864:: @ 85B7864
- .incbin "baserom.gba", 0x5b7864, 0xc4
-
-gUnknown_085B7928:: @ 85B7928
- .incbin "baserom.gba", 0x5b7928, 0x20
-
-gUnknown_085B7948:: @ 85B7948
- .incbin "baserom.gba", 0x5b7948, 0x8
-
-gUnknown_085B7950:: @ 85B7950
- .incbin "baserom.gba", 0x5b7950, 0x28
-
-gUnknown_085B7978:: @ 85B7978
- .incbin "baserom.gba", 0x5b7978, 0x80
-
-gUnknown_085B79F8:: @ 85B79F8
- .incbin "baserom.gba", 0x5b79f8, 0x18
-
-gUnknown_085B7A10:: @ 85B7A10
- .incbin "baserom.gba", 0x5b7a10, 0x30
-
-gUnknown_085B7A40:: @ 85B7A40
- .incbin "baserom.gba", 0x5b7a40, 0x7c
-
-gUnknown_085B7ABC:: @ 85B7ABC
- .incbin "baserom.gba", 0x5b7abc, 0x30
-
-gUnknown_085B7AEC:: @ 85B7AEC
- .incbin "baserom.gba", 0x5b7aec, 0x18
-
-gUnknown_085B7B04:: @ 85B7B04
- .incbin "baserom.gba", 0x5b7b04, 0x6
-
-gUnknown_085B7B0A:: @ 85B7B0A
- .incbin "baserom.gba", 0x5b7b0a, 0x8
-
-gUnknown_085B7B12:: @ 85B7B12
- .incbin "baserom.gba", 0x5b7b12, 0x8
-
-gUnknown_085B7B1A:: @ 85B7B1A
- .incbin "baserom.gba", 0x5b7b1a, 0x14
-
-gUnknown_085B7B2E:: @ 85B7B2E
- .incbin "baserom.gba", 0x5b7b2e, 0x18
-
-gUnknown_085B7B46:: @ 85B7B46
- .incbin "baserom.gba", 0x5b7b46, 0x2
-
-gUnknown_085B7B48:: @ 85B7B48
- .incbin "baserom.gba", 0x5b7b48, 0x8d0
-
-gUnknown_085B8418:: @ 85B8418
- .incbin "baserom.gba", 0x5b8418, 0x20
-
-gUnknown_085B8438:: @ 85B8438
- .incbin "baserom.gba", 0x5b8438, 0x338
-
-gUnknown_085B8770:: @ 85B8770
- .incbin "baserom.gba", 0x5b8770, 0x480
-
-gUnknown_085B8BF0:: @ 85B8BF0
- .incbin "baserom.gba", 0x5b8bf0, 0x20
-
-gUnknown_085B8C10:: @ 85B8C10
- .incbin "baserom.gba", 0x5b8c10, 0x20
-
-gUnknown_085B8C30:: @ 85B8C30
- .incbin "baserom.gba", 0x5b8c30, 0x2
-
-gUnknown_085B8C32:: @ 85B8C32
- .incbin "baserom.gba", 0x5b8c32, 0x36
-
-gUnknown_085B8C68:: @ 85B8C68
- .incbin "baserom.gba", 0x5b8c68, 0x18
-
-gUnknown_085B8C80:: @ 85B8C80
- .incbin "baserom.gba", 0x5b8c80, 0x10
-
-gUnknown_085B8C90:: @ 85B8C90
- .incbin "baserom.gba", 0x5b8c90, 0x528
-
-gUnknown_085B91B8:: @ 85B91B8
- .incbin "baserom.gba", 0x5b91b8, 0x178
-
-gUnknown_085B9330:: @ 85B9330
- .incbin "baserom.gba", 0x5b9330, 0x580
-
-gUnknown_085B98B0:: @ 85B98B0
- .incbin "baserom.gba", 0x5b98b0, 0x240
-
-gUnknown_085B9AF0:: @ 85B9AF0
- .incbin "baserom.gba", 0x5b9af0, 0x11e0
-
-gUnknown_085BACD0:: @ 85BACD0
- .incbin "baserom.gba", 0x5bacd0, 0x1e0
-
-gUnknown_085BAEB0:: @ 85BAEB0
- .incbin "baserom.gba", 0x5baeb0, 0x20
-
-gUnknown_085BAED0:: @ 85BAED0
- .incbin "baserom.gba", 0x5baed0, 0x378
-
-gUnknown_085BB248:: @ 85BB248
- .incbin "baserom.gba", 0x5bb248, 0x25c
-
-gUnknown_085BB4A4:: @ 85BB4A4
- .incbin "baserom.gba", 0x5bb4a4, 0x48c
-
-gUnknown_085BB930:: @ 85BB930
- .incbin "baserom.gba", 0x5bb930, 0x2e4
-
-gUnknown_085BBC14:: @ 85BBC14
- .incbin "baserom.gba", 0x5bbc14, 0x6a0
-
-gUnknown_085BC2B4:: @ 85BC2B4
- .incbin "baserom.gba", 0x5bc2b4, 0x20
-
-gUnknown_085BC2D4:: @ 85BC2D4
- .incbin "baserom.gba", 0x5bc2d4, 0x20
-
-gUnknown_085BC2F4:: @ 85BC2F4
- .incbin "baserom.gba", 0x5bc2f4, 0x20
-
-gUnknown_085BC314:: @ 85BC314
- .incbin "baserom.gba", 0x5bc314, 0x800
-
-gUnknown_085BCB14:: @ 85BCB14
- .incbin "baserom.gba", 0x5bcb14, 0x800
-
-gUnknown_085BD314:: @ 85BD314
- .incbin "baserom.gba", 0x5bd314, 0x820
-
-gUnknown_085BDB34:: @ 85BDB34
- .incbin "baserom.gba", 0x5bdb34, 0x6b4
-
-gUnknown_085BE1E8:: @ 85BE1E8
- .incbin "baserom.gba", 0x5be1e8, 0x334
-
-gUnknown_085BE51C:: @ 85BE51C
- .incbin "baserom.gba", 0x5be51c, 0x56c
-
-gUnknown_085BEA88:: @ 85BEA88
- .incbin "baserom.gba", 0x5bea88, 0x318
-
-gUnknown_085BEDA0:: @ 85BEDA0
- .incbin "baserom.gba", 0x5beda0, 0x140
-
-gUnknown_085BEEE0:: @ 85BEEE0
- .incbin "baserom.gba", 0x5beee0, 0x1c0
-
-gUnknown_085BF0A0:: @ 85BF0A0
- .incbin "baserom.gba", 0x5bf0a0, 0x200
-
-gUnknown_085BF2A0:: @ 85BF2A0
- .incbin "baserom.gba", 0x5bf2a0, 0x200
-
-gUnknown_085BF4A0:: @ 85BF4A0
- .incbin "baserom.gba", 0x5bf4a0, 0xa0
-
-gUnknown_085BF540:: @ 85BF540
- .incbin "baserom.gba", 0x5bf540, 0x160
-
-gUnknown_085BF6A0:: @ 85BF6A0
- .incbin "baserom.gba", 0x5bf6a0, 0x7540
-
-gUnknown_085C6BE0:: @ 85C6BE0
- .incbin "baserom.gba", 0x5c6be0, 0x1000
-
-gUnknown_085C7BE0:: @ 85C7BE0
- .incbin "baserom.gba", 0x5c7be0, 0x20
-
-gUnknown_085C7C00:: @ 85C7C00
- .incbin "baserom.gba", 0x5c7c00, 0x68c
-
-gUnknown_085C828C:: @ 85C828C
- .incbin "baserom.gba", 0x5c828c, 0x2ec
-
-gUnknown_085C8578:: @ 85C8578
- .incbin "baserom.gba", 0x5c8578, 0x20
-
-gUnknown_085C8598:: @ 85C8598
- .incbin "baserom.gba", 0x5c8598, 0x15c
-
-gUnknown_085C86F4:: @ 85C86F4
- .incbin "baserom.gba", 0x5c86f4, 0x100
-
-gUnknown_085C87F4:: @ 85C87F4
- .incbin "baserom.gba", 0x5c87f4, 0xb0
-
-gUnknown_085C88A4:: @ 85C88A4
- .incbin "baserom.gba", 0x5c88a4, 0x84
-
-gUnknown_085C8928:: @ 85C8928
- .incbin "baserom.gba", 0x5c8928, 0x20
-
-gUnknown_085C8948:: @ 85C8948
- .incbin "baserom.gba", 0x5c8948, 0xa8
-
-gUnknown_085C89F0:: @ 85C89F0
- .incbin "baserom.gba", 0x5c89f0, 0xa8
-
-gUnknown_085C8A98:: @ 85C8A98
- .incbin "baserom.gba", 0x5c8a98, 0x10
-
-gUnknown_085C8AA8:: @ 85C8AA8
- .incbin "baserom.gba", 0x5c8aa8, 0xc
-
-gUnknown_085C8AB4:: @ 85C8AB4
- .incbin "baserom.gba", 0x5c8ab4, 0x8
-
-gUnknown_085C8ABC:: @ 85C8ABC
- .incbin "baserom.gba", 0x5c8abc, 0x8
-
-gUnknown_085C8AC4:: @ 85C8AC4
- .incbin "baserom.gba", 0x5c8ac4, 0x1c
-
-gUnknown_085C8AE0:: @ 85C8AE0
- .incbin "baserom.gba", 0x5c8ae0, 0x1c
-
-gUnknown_085C8AFC:: @ 85C8AFC
- .incbin "baserom.gba", 0x5c8afc, 0x18
-
-gUnknown_085C8B14:: @ 85C8B14
- .incbin "baserom.gba", 0x5c8b14, 0x18
-
-gUnknown_085C8B2C:: @ 85C8B2C
- .incbin "baserom.gba", 0x5c8b2c, 0x18
-
-gUnknown_085C8B44:: @ 85C8B44
- .incbin "baserom.gba", 0x5c8b44, 0x18
-
-gUnknown_085C8B5C:: @ 85C8B5C
- .incbin "baserom.gba", 0x5c8b5c, 0x20
-
-gUnknown_085C8B7C:: @ 85C8B7C
- .incbin "baserom.gba", 0x5c8b7c, 0xc
-
-gUnknown_085C8B88:: @ 85C8B88
- .incbin "baserom.gba", 0x5c8b88, 0x4
-
-gUnknown_085C8B8C:: @ 85C8B8C
- .incbin "baserom.gba", 0x5c8b8c, 0xa
-
-gUnknown_085C8B96:: @ 85C8B96
- .incbin "baserom.gba", 0x5c8b96, 0x6
-
-gUnknown_085C8B9C:: @ 85C8B9C
- .incbin "baserom.gba", 0x5c8b9c, 0x1c
-
-gUnknown_085C8BB8:: @ 85C8BB8
- .incbin "baserom.gba", 0x5c8bb8, 0x8
-
-gUnknown_085C8BC0:: @ 85C8BC0
- .incbin "baserom.gba", 0x5c8bc0, 0xc
-
-gUnknown_085C8BCC:: @ 85C8BCC
- .incbin "baserom.gba", 0x5c8bcc, 0x28
-
-gUnknown_085C8BF4:: @ 85C8BF4
- .incbin "baserom.gba", 0x5c8bf4, 0x6
-
-gUnknown_085C8BFA:: @ 85C8BFA
- .incbin "baserom.gba", 0x5c8bfa, 0x14
-
-gUnknown_085C8C0E:: @ 85C8C0E
- .incbin "baserom.gba", 0x5c8c0e, 0x16
-
-gUnknown_085C8C24:: @ 85C8C24
- .incbin "baserom.gba", 0x5c8c24, 0x1c
-
-gUnknown_085C8C40:: @ 85C8C40
- .incbin "baserom.gba", 0x5c8c40, 0x4
-
-gUnknown_085C8C44:: @ 85C8C44
- .incbin "baserom.gba", 0x5c8c44, 0x4
-
-gUnknown_085C8C48:: @ 85C8C48
- .incbin "baserom.gba", 0x5c8c48, 0xc
-
-gUnknown_085C8C54:: @ 85C8C54
- .incbin "baserom.gba", 0x5c8c54, 0x10
-
-gUnknown_085C8C64:: @ 85C8C64
- .incbin "baserom.gba", 0x5c8c64, 0x2
-
-gUnknown_085C8C66:: @ 85C8C66
- .incbin "baserom.gba", 0x5c8c66, 0x6
-
-gUnknown_085C8C6C:: @ 85C8C6C
- .incbin "baserom.gba", 0x5c8c6c, 0xc
-
-gUnknown_085C8C78:: @ 85C8C78
- .incbin "baserom.gba", 0x5c8c78, 0x8
-
-gUnknown_085C8C80:: @ 85C8C80
- .incbin "baserom.gba", 0x5c8c80, 0x4
-
-gUnknown_085C8C84:: @ 85C8C84
- .incbin "baserom.gba", 0x5c8c84, 0xb4
-
-gUnknown_085C8D38:: @ 85C8D38
- .incbin "baserom.gba", 0x5c8d38, 0x8
-
-gUnknown_085C8D40:: @ 85C8D40
- .incbin "baserom.gba", 0x5c8d40, 0x20
-
-gUnknown_085C8D60:: @ 85C8D60
- .incbin "baserom.gba", 0x5c8d60, 0x2c
-
-gUnknown_085C8D8C:: @ 85C8D8C
- .incbin "baserom.gba", 0x5c8d8c, 0x14
-
-gUnknown_085C8DA0:: @ 85C8DA0
- .incbin "baserom.gba", 0x5c8da0, 0x10
-
-gUnknown_085C8DB0:: @ 85C8DB0
- .incbin "baserom.gba", 0x5c8db0, 0xc
-
-gUnknown_085C8DBC:: @ 85C8DBC
- .incbin "baserom.gba", 0x5c8dbc, 0x14
-
-gUnknown_085C8DD0:: @ 85C8DD0
- .incbin "baserom.gba", 0x5c8dd0, 0x46
-
-gUnknown_085C8E16:: @ 85C8E16
- .incbin "baserom.gba", 0x5c8e16, 0xe
-
-gUnknown_085C8E24:: @ 85C8E24
- .incbin "baserom.gba", 0x5c8e24, 0x44
-
-gUnknown_085C8E68:: @ 85C8E68
- .incbin "baserom.gba", 0x5c8e68, 0x6c
-
- .align 2
-gFieldEffectObjectPalette10:: @ 85C8ED4
- .incbin "graphics/map_objects/palettes/field_effect_object_palette_10.gbapal"
-
- .align 2
-gFieldEffectObjectPaletteInfo10:: @ 85C8EF4
- obj_pal gFieldEffectObjectPalette10, 0x1009
-
- .incbin "baserom.gba", 0x5c8efc, 0xe0
-
-gUnknown_085C8FDC:: @ 85C8FDC
- .incbin "baserom.gba", 0x5c8fdc, 0x14
-
-gUnknown_085C8FF0:: @ 85C8FF0
- .incbin "baserom.gba", 0x5c8ff0, 0x30
-
-gUnknown_085C9020:: @ 85C9020
- .incbin "baserom.gba", 0x5c9020, 0x4b0
-
-gUnknown_085C94D0:: @ 85C94D0
- .incbin "baserom.gba", 0x5c94d0, 0x500
-
-gUnknown_085C99D0:: @ 85C99D0
- .incbin "baserom.gba", 0x5c99d0, 0x18
-
-gUnknown_085C99E8:: @ 85C99E8
- .incbin "baserom.gba", 0x5c99e8, 0x10
-
-gUnknown_085C99F8:: @ 85C99F8
- .incbin "baserom.gba", 0x5c99f8, 0x10
-
-gUnknown_085C9A08:: @ 85C9A08
- .incbin "baserom.gba", 0x5c9a08, 0x14
-
-gUnknown_085C9A1C:: @ 85C9A1C
- .incbin "baserom.gba", 0x5c9a1c, 0x14
-
-gUnknown_085C9A30:: @ 85C9A30
- .incbin "baserom.gba", 0x5c9a30, 0x23
-
-gUnknown_085C9A53:: @ 85C9A53
- .incbin "baserom.gba", 0x5c9a53, 0x41
-
diff --git a/data/data4.s b/data/data4.s
new file mode 100644
index 000000000..1e1448c14
--- /dev/null
+++ b/data/data4.s
@@ -0,0 +1,905 @@
+@ the fourth big chunk of data
+
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+gUnknown_085B09E4:: @ 85B09E4
+ .incbin "baserom.gba", 0x5b09e4, 0x10
+
+gUnknown_085B09F4:: @ 85B09F4
+ .incbin "baserom.gba", 0x5b09f4, 0x4
+
+gUnknown_085B09F8:: @ 85B09F8
+ .incbin "baserom.gba", 0x5b09f8, 0x8
+
+gUnknown_085B0A00:: @ 85B0A00
+ .incbin "baserom.gba", 0x5b0a00, 0x2
+
+gUnknown_085B0A02:: @ 85B0A02
+ .incbin "baserom.gba", 0x5b0a02, 0x7e
+
+gUnknown_085B0A80:: @ 85B0A80
+ .incbin "baserom.gba", 0x5b0a80, 0x18c
+
+gUnknown_085B0C0C:: @ 85B0C0C
+ .incbin "baserom.gba", 0x5b0c0c, 0x1f8
+
+gUnknown_085B0E04:: @ 85B0E04
+ .incbin "baserom.gba", 0x5b0e04, 0xfc8
+
+gUnknown_085B1DCC:: @ 85B1DCC
+ .incbin "baserom.gba", 0x5b1dcc, 0x10
+
+gUnknown_085B1DDC:: @ 85B1DDC
+ .incbin "baserom.gba", 0x5b1ddc, 0x8
+
+gUnknown_085B1DE4:: @ 85B1DE4
+ .incbin "baserom.gba", 0x5b1de4, 0x8
+
+gUnknown_085B1DEC:: @ 85B1DEC
+ .incbin "baserom.gba", 0x5b1dec, 0x6
+
+gUnknown_085B1DF2:: @ 85B1DF2
+ .incbin "baserom.gba", 0x5b1df2, 0x6
+
+gUnknown_085B1DF8:: @ 85B1DF8
+ .incbin "baserom.gba", 0x5b1df8, 0x8
+
+gUnknown_085B1E00:: @ 85B1E00
+ .incbin "baserom.gba", 0x5b1e00, 0xc
+
+gUnknown_085B1E0C:: @ 85B1E0C
+ .incbin "baserom.gba", 0x5b1e0c, 0x1c
+
+gUnknown_085B1E28:: @ 85B1E28
+ .incbin "baserom.gba", 0x5b1e28, 0xa8
+
+gUnknown_085B1ED0:: @ 85B1ED0
+ .incbin "baserom.gba", 0x5b1ed0, 0x8
+
+gUnknown_085B1ED8:: @ 85B1ED8
+ .incbin "baserom.gba", 0x5b1ed8, 0x10
+
+gUnknown_085B1EE8:: @ 85B1EE8
+ .incbin "baserom.gba", 0x5b1ee8, 0x10
+
+gUnknown_085B1EF8:: @ 85B1EF8
+ .incbin "baserom.gba", 0x5b1ef8, 0x18
+
+gUnknown_085B1F10:: @ 85B1F10
+ .incbin "baserom.gba", 0x5b1f10, 0x18
+
+gUnknown_085B1F28:: @ 85B1F28
+ .incbin "baserom.gba", 0x5b1f28, 0x18
+
+gUnknown_085B1F40:: @ 85B1F40
+ .incbin "baserom.gba", 0x5b1f40, 0x294
+
+gUnknown_085B21D4:: @ 85B21D4
+ .incbin "baserom.gba", 0x5b21d4, 0x8
+
+gUnknown_085B21DC:: @ 85B21DC
+ .incbin "baserom.gba", 0x5b21dc, 0x18
+
+gUnknown_085B21F4:: @ 85B21F4
+ .incbin "baserom.gba", 0x5b21f4, 0x8
+
+gUnknown_085B21FC:: @ 85B21FC
+ .incbin "baserom.gba", 0x5b21fc, 0xc
+
+gUnknown_085B2208:: @ 85B2208
+ .incbin "baserom.gba", 0x5b2208, 0x10
+
+gUnknown_085B2218:: @ 85B2218
+ .incbin "baserom.gba", 0x5b2218, 0x38
+
+gUnknown_085B2250:: @ 85B2250
+ .incbin "baserom.gba", 0x5b2250, 0x18
+
+gUnknown_085B2268:: @ 85B2268
+ .incbin "baserom.gba", 0x5b2268, 0x38
+
+gUnknown_085B22A0:: @ 85B22A0
+ .incbin "baserom.gba", 0x5b22a0, 0x18
+
+gUnknown_085B22B8:: @ 85B22B8
+ .incbin "baserom.gba", 0x5b22b8, 0x18
+
+gUnknown_085B22D0:: @ 85B22D0
+ .incbin "baserom.gba", 0x5b22d0, 0x2d0
+
+gUnknown_085B25A0:: @ 85B25A0
+ .incbin "baserom.gba", 0x5b25a0, 0x80
+
+gUnknown_085B2620:: @ 85B2620
+ .incbin "baserom.gba", 0x5b2620, 0xc
+
+gUnknown_085B262C:: @ 85B262C
+ .incbin "baserom.gba", 0x5b262c, 0x3c
+
+gUnknown_085B2668:: @ 85B2668
+ .incbin "baserom.gba", 0x5b2668, 0x30
+
+gUnknown_085B2698:: @ 85B2698
+ .incbin "baserom.gba", 0x5b2698, 0x3
+
+gUnknown_085B269B:: @ 85B269B
+ .incbin "baserom.gba", 0x5b269b, 0x2
+
+gUnknown_085B269D:: @ 85B269D
+ .incbin "baserom.gba", 0x5b269d, 0x2
+
+gUnknown_085B269F:: @ 85B269F
+ .incbin "baserom.gba", 0x5b269f, 0x5
+
+gUnknown_085B26A4:: @ 85B26A4
+ .incbin "baserom.gba", 0x5b26a4, 0x4c
+
+gUnknown_085B26F0:: @ 85B26F0
+ .incbin "baserom.gba", 0x5b26f0, 0x4
+
+gUnknown_085B26F4:: @ 85B26F4
+ .incbin "baserom.gba", 0x5b26f4, 0x8
+
+gUnknown_085B26FC:: @ 85B26FC
+ .incbin "baserom.gba", 0x5b26fc, 0x8
+
+gUnknown_085B2704:: @ 85B2704
+ .incbin "baserom.gba", 0x5b2704, 0x18
+
+gUnknown_085B271C:: @ 85B271C
+ .incbin "baserom.gba", 0x5b271c, 0x4
+
+gUnknown_085B2720:: @ 85B2720
+ .incbin "baserom.gba", 0x5b2720, 0x28
+
+gUnknown_085B2748:: @ 85B2748
+ .incbin "baserom.gba", 0x5b2748, 0x60
+
+gUnknown_085B27A8:: @ 85B27A8
+ .incbin "baserom.gba", 0x5b27a8, 0x8
+
+gUnknown_085B27B0:: @ 85B27B0
+ .incbin "baserom.gba", 0x5b27b0, 0x18
+
+gUnknown_085B27C8:: @ 85B27C8
+ .incbin "baserom.gba", 0x5b27c8, 0x88
+
+gUnknown_085B2850:: @ 85B2850
+ .incbin "baserom.gba", 0x5b2850, 0x20
+
+gUnknown_085B2870:: @ 85B2870
+ .incbin "baserom.gba", 0x5b2870, 0x20
+
+gUnknown_085B2890:: @ 85B2890
+ .incbin "baserom.gba", 0x5b2890, 0x10
+
+gUnknown_085B28A0:: @ 85B28A0
+ .incbin "baserom.gba", 0x5b28a0, 0x10
+
+gUnknown_085B28B0:: @ 85B28B0
+ .incbin "baserom.gba", 0x5b28b0, 0x1e0
+
+gUnknown_085B2A90:: @ 85B2A90
+ .incbin "baserom.gba", 0x5b2a90, 0xb4
+
+gUnknown_085B2B44:: @ 85B2B44
+ .incbin "baserom.gba", 0x5b2b44, 0x18
+
+gUnknown_085B2B5C:: @ 85B2B5C
+ .incbin "baserom.gba", 0x5b2b5c, 0x4
+
+gUnknown_085B2B60:: @ 85B2B60
+ .incbin "baserom.gba", 0x5b2b60, 0x8
+
+gUnknown_085B2B68:: @ 85B2B68
+ .incbin "baserom.gba", 0x5b2b68, 0x10
+
+gUnknown_085B2B78:: @ 85B2B78
+ .incbin "baserom.gba", 0x5b2b78, 0x6
+
+gUnknown_085B2B7E:: @ 85B2B7E
+ .incbin "baserom.gba", 0x5b2b7e, 0xa
+
+gUnknown_085B2B88:: @ 85B2B88
+ .incbin "baserom.gba", 0x5b2b88, 0xc
+
+gUnknown_085B2B94:: @ 85B2B94
+ .incbin "baserom.gba", 0x5b2b94, 0xc
+
+gUnknown_085B2BA0:: @ 85B2BA0
+ .incbin "baserom.gba", 0x5b2ba0, 0xc
+
+gUnknown_085B2BAC:: @ 85B2BAC
+ .incbin "baserom.gba", 0x5b2bac, 0x8
+
+gUnknown_085B2BB4:: @ 85B2BB4
+ .incbin "baserom.gba", 0x5b2bb4, 0x40
+
+gUnknown_085B2BF4:: @ 85B2BF4
+ .incbin "baserom.gba", 0x5b2bf4, 0x12
+
+gUnknown_085B2C06:: @ 85B2C06
+ .incbin "baserom.gba", 0x5b2c06, 0x12
+
+gUnknown_085B2C18:: @ 85B2C18
+ .incbin "baserom.gba", 0x5b2c18, 0x9
+
+gUnknown_085B2C21:: @ 85B2C21
+ .incbin "baserom.gba", 0x5b2c21, 0x9
+
+gUnknown_085B2C2A:: @ 85B2C2A
+ .incbin "baserom.gba", 0x5b2c2a, 0x26
+
+gUnknown_085B2C50:: @ 85B2C50
+ .incbin "baserom.gba", 0x5b2c50, 0x78
+
+gUnknown_085B2CC8:: @ 85B2CC8
+ .incbin "baserom.gba", 0x5b2cc8, 0x14
+
+gUnknown_085B2CDC:: @ 85B2CDC
+ .incbin "baserom.gba", 0x5b2cdc, 0x14
+
+gUnknown_085B2CF0:: @ 85B2CF0
+ .incbin "baserom.gba", 0x5b2cf0, 0x340
+
+gUnknown_085B3030:: @ 85B3030
+ .incbin "baserom.gba", 0x5b3030, 0x10
+
+gUnknown_085B3040:: @ 85B3040
+ .incbin "baserom.gba", 0x5b3040, 0x64
+
+gUnknown_085B30A4:: @ 85B30A4
+ .incbin "baserom.gba", 0x5b30a4, 0x30
+
+gUnknown_085B30D4:: @ 85B30D4
+ .incbin "baserom.gba", 0x5b30d4, 0x30
+
+gUnknown_085B3104:: @ 85B3104
+ .incbin "baserom.gba", 0x5b3104, 0x18
+
+gUnknown_085B311C:: @ 85B311C
+ .incbin "baserom.gba", 0x5b311c, 0x8
+
+gUnknown_085B3124:: @ 85B3124
+ .incbin "baserom.gba", 0x5b3124, 0x8
+
+gUnknown_085B312C:: @ 85B312C
+ .incbin "baserom.gba", 0x5b312c, 0x16
+
+gUnknown_085B3142:: @ 85B3142
+ .incbin "baserom.gba", 0x5b3142, 0xc
+
+gUnknown_085B314E:: @ 85B314E
+ .incbin "baserom.gba", 0x5b314e, 0xe
+
+gUnknown_085B315C:: @ 85B315C
+ .incbin "baserom.gba", 0x5b315c, 0x14
+
+gUnknown_085B3170:: @ 85B3170
+ .incbin "baserom.gba", 0x5b3170, 0x2c
+
+gUnknown_085B319C:: @ 85B319C
+ .incbin "baserom.gba", 0x5b319c, 0x18
+
+gUnknown_085B31B4:: @ 85B31B4
+ .incbin "baserom.gba", 0x5b31b4, 0x1c
+
+gUnknown_085B31D0:: @ 85B31D0
+ .incbin "baserom.gba", 0x5b31d0, 0x28
+
+gUnknown_085B31F8:: @ 85B31F8
+ .incbin "baserom.gba", 0x5b31f8, 0x14
+
+gUnknown_085B320C:: @ 85B320C
+ .incbin "baserom.gba", 0x5b320c, 0x14
+
+gUnknown_085B3220:: @ 85B3220
+ .incbin "baserom.gba", 0x5b3220, 0x8
+
+gUnknown_085B3228:: @ 85B3228
+ .incbin "baserom.gba", 0x5b3228, 0x2c
+
+gUnknown_085B3254:: @ 85B3254
+ .incbin "baserom.gba", 0x5b3254, 0x2c
+
+gUnknown_085B3280:: @ 85B3280
+ .incbin "baserom.gba", 0x5b3280, 0x160
+
+gUnknown_085B33E0:: @ 85B33E0
+ .incbin "baserom.gba", 0x5b33e0, 0x16
+
+gUnknown_085B33F6:: @ 85B33F6
+ .incbin "baserom.gba", 0x5b33f6, 0xa
+
+gUnknown_085B3400:: @ 85B3400
+ .incbin "baserom.gba", 0x5b3400, 0x10
+
+gUnknown_085B3410:: @ 85B3410
+ .incbin "baserom.gba", 0x5b3410, 0x10
+
+gUnknown_085B3420:: @ 85B3420
+ .incbin "baserom.gba", 0x5b3420, 0x24
+
+gUnknown_085B3444:: @ 85B3444
+ .incbin "baserom.gba", 0x5b3444, 0x2c
+
+gUnknown_085B3470:: @ 85B3470
+ .incbin "baserom.gba", 0x5b3470, 0x4
+
+gUnknown_085B3474:: @ 85B3474
+ .incbin "baserom.gba", 0x5b3474, 0x8
+
+gUnknown_085B347C:: @ 85B347C
+ .incbin "baserom.gba", 0x5b347c, 0x8
+
+gUnknown_085B3484:: @ 85B3484
+ .incbin "baserom.gba", 0x5b3484, 0xc0
+
+gUnknown_085B3544:: @ 85B3544
+ .incbin "baserom.gba", 0x5b3544, 0x20
+
+gUnknown_085B3564:: @ 85B3564
+ .incbin "baserom.gba", 0x5b3564, 0x800
+
+gUnknown_085B3D64:: @ 85B3D64
+ .incbin "baserom.gba", 0x5b3d64, 0x8
+
+gUnknown_085B3D6C:: @ 85B3D6C
+ .incbin "baserom.gba", 0x5b3d6c, 0x10
+
+gUnknown_085B3D7C:: @ 85B3D7C
+ .incbin "baserom.gba", 0x5b3d7c, 0x8
+
+gUnknown_085B3D84:: @ 85B3D84
+ .incbin "baserom.gba", 0x5b3d84, 0x8
+
+gUnknown_085B3D8C:: @ 85B3D8C
+ .incbin "baserom.gba", 0x5b3d8c, 0x8
+
+gUnknown_085B3D94:: @ 85B3D94
+ .incbin "baserom.gba", 0x5b3d94, 0x20
+
+gUnknown_085B3DB4:: @ 85B3DB4
+ .incbin "baserom.gba", 0x5b3db4, 0x134
+
+gUnknown_085B3EE8:: @ 85B3EE8
+ .incbin "baserom.gba", 0x5b3ee8, 0x2
+
+gUnknown_085B3EEA:: @ 85B3EEA
+ .incbin "baserom.gba", 0x5b3eea, 0x6
+
+gUnknown_085B3EF0:: @ 85B3EF0
+ .incbin "baserom.gba", 0x5b3ef0, 0xc
+
+gUnknown_085B3EFC:: @ 85B3EFC
+ .incbin "baserom.gba", 0x5b3efc, 0x1c
+
+gUnknown_085B3F18:: @ 85B3F18
+ .incbin "baserom.gba", 0x5b3f18, 0x100
+
+gUnknown_085B4018:: @ 85B4018
+ .incbin "baserom.gba", 0x5b4018, 0x4
+
+gUnknown_085B401C:: @ 85B401C
+ .incbin "baserom.gba", 0x5b401c, 0x8
+
+gUnknown_085B4024:: @ 85B4024
+ .incbin "baserom.gba", 0x5b4024, 0x10
+
+gUnknown_085B4034:: @ 85B4034
+ .incbin "baserom.gba", 0x5b4034, 0xb8
+
+gUnknown_085B40EC:: @ 85B40EC
+ .incbin "baserom.gba", 0x5b40ec, 0x10
+
+gUnknown_085B40FC:: @ 85B40FC
+ .incbin "baserom.gba", 0x5b40fc, 0x38
+
+gUnknown_085B4134:: @ 85B4134
+ .incbin "baserom.gba", 0x5b4134, 0x6f8
+
+gUnknown_085B482C:: @ 85B482C
+ .incbin "baserom.gba", 0x5b482c, 0x4e4
+
+gUnknown_085B4D10:: @ 85B4D10
+ .incbin "baserom.gba", 0x5b4d10, 0x4d4
+
+gUnknown_085B51E4:: @ 85B51E4
+ .incbin "baserom.gba", 0x5b51e4, 0x6a0
+
+gUnknown_085B5884:: @ 85B5884
+ .incbin "baserom.gba", 0x5b5884, 0x40
+
+gUnknown_085B58C4:: @ 85B58C4
+ .incbin "baserom.gba", 0x5b58c4, 0x5
+
+gUnknown_085B58C9:: @ 85B58C9
+ .incbin "baserom.gba", 0x5b58c9, 0x10
+
+gUnknown_085B58D9:: @ 85B58D9
+ .incbin "baserom.gba", 0x5b58d9, 0x323
+
+gUnknown_085B5BFC:: @ 85B5BFC
+ .incbin "baserom.gba", 0x5b5bfc, 0x200
+
+gUnknown_085B5DFC:: @ 85B5DFC
+ .incbin "baserom.gba", 0x5b5dfc, 0x1a4
+
+gUnknown_085B5FA0:: @ 85B5FA0
+ .incbin "baserom.gba", 0x5b5fa0, 0x1a0
+
+gUnknown_085B6140:: @ 85B6140
+ .incbin "baserom.gba", 0x5b6140, 0xc
+
+gUnknown_085B614C:: @ 85B614C
+ .incbin "baserom.gba", 0x5b614c, 0x8
+
+gUnknown_085B6154:: @ 85B6154
+ .incbin "baserom.gba", 0x5b6154, 0xc
+
+gUnknown_085B6160:: @ 85B6160
+ .incbin "baserom.gba", 0x5b6160, 0x184
+
+gUnknown_085B62E4:: @ 85B62E4
+ .incbin "baserom.gba", 0x5b62e4, 0x4
+
+gUnknown_085B62E8:: @ 85B62E8
+ .incbin "baserom.gba", 0x5b62e8, 0x5c
+
+gUnknown_085B6344:: @ 85B6344
+ .incbin "baserom.gba", 0x5b6344, 0x4
+
+gUnknown_085B6348:: @ 85B6348
+ .incbin "baserom.gba", 0x5b6348, 0x40
+
+gUnknown_085B6388:: @ 85B6388
+ .incbin "baserom.gba", 0x5b6388, 0x68
+
+gUnknown_085B63F0:: @ 85B63F0
+ .incbin "baserom.gba", 0x5b63f0, 0x18
+
+gUnknown_085B6408:: @ 85B6408
+ .incbin "baserom.gba", 0x5b6408, 0x8
+
+gUnknown_085B6410:: @ 85B6410
+ .incbin "baserom.gba", 0x5b6410, 0x8
+
+gUnknown_085B6418:: @ 85B6418
+ .incbin "baserom.gba", 0x5b6418, 0x6
+
+gUnknown_085B641E:: @ 85B641E
+ .incbin "baserom.gba", 0x5b641e, 0x4
+
+gUnknown_085B6422:: @ 85B6422
+ .incbin "baserom.gba", 0x5b6422, 0xa
+
+gUnknown_085B642C:: @ 85B642C
+ .incbin "baserom.gba", 0x5b642c, 0x10
+
+gUnknown_085B643C:: @ 85B643C
+ .incbin "baserom.gba", 0x5b643c, 0xc
+
+gUnknown_085B6448:: @ 85B6448
+ .incbin "baserom.gba", 0x5b6448, 0xf3c
+
+gUnknown_085B7384:: @ 85B7384
+ .incbin "baserom.gba", 0x5b7384, 0x98
+
+gUnknown_085B741C:: @ 85B741C
+ .incbin "baserom.gba", 0x5b741c, 0x6c
+
+gUnknown_085B7488:: @ 85B7488
+ .incbin "baserom.gba", 0x5b7488, 0x8
+
+gUnknown_085B7490:: @ 85B7490
+ .incbin "baserom.gba", 0x5b7490, 0x78
+
+gUnknown_085B7508:: @ 85B7508
+ .incbin "baserom.gba", 0x5b7508, 0x60
+
+gUnknown_085B7568:: @ 85B7568
+ .incbin "baserom.gba", 0x5b7568, 0x48
+
+gUnknown_085B75B0:: @ 85B75B0
+ .incbin "baserom.gba", 0x5b75b0, 0x60
+
+gUnknown_085B7610:: @ 85B7610
+ .incbin "baserom.gba", 0x5b7610, 0x140
+
+gUnknown_085B7750:: @ 85B7750
+ .incbin "baserom.gba", 0x5b7750, 0x94
+
+gUnknown_085B77E4:: @ 85B77E4
+ .incbin "baserom.gba", 0x5b77e4, 0x18
+
+gUnknown_085B77FC:: @ 85B77FC
+ .incbin "baserom.gba", 0x5b77fc, 0x18
+
+gUnknown_085B7814:: @ 85B7814
+ .incbin "baserom.gba", 0x5b7814, 0x18
+
+gUnknown_085B782C:: @ 85B782C
+ .incbin "baserom.gba", 0x5b782c, 0x18
+
+gUnknown_085B7844:: @ 85B7844
+ .incbin "baserom.gba", 0x5b7844, 0x20
+
+gUnknown_085B7864:: @ 85B7864
+ .incbin "baserom.gba", 0x5b7864, 0xc4
+
+gUnknown_085B7928:: @ 85B7928
+ .incbin "baserom.gba", 0x5b7928, 0x20
+
+gUnknown_085B7948:: @ 85B7948
+ .incbin "baserom.gba", 0x5b7948, 0x8
+
+gUnknown_085B7950:: @ 85B7950
+ .incbin "baserom.gba", 0x5b7950, 0x28
+
+gUnknown_085B7978:: @ 85B7978
+ .incbin "baserom.gba", 0x5b7978, 0x80
+
+gUnknown_085B79F8:: @ 85B79F8
+ .incbin "baserom.gba", 0x5b79f8, 0x18
+
+gUnknown_085B7A10:: @ 85B7A10
+ .incbin "baserom.gba", 0x5b7a10, 0x30
+
+gUnknown_085B7A40:: @ 85B7A40
+ .incbin "baserom.gba", 0x5b7a40, 0x7c
+
+gUnknown_085B7ABC:: @ 85B7ABC
+ .incbin "baserom.gba", 0x5b7abc, 0x30
+
+gUnknown_085B7AEC:: @ 85B7AEC
+ .incbin "baserom.gba", 0x5b7aec, 0x18
+
+gUnknown_085B7B04:: @ 85B7B04
+ .incbin "baserom.gba", 0x5b7b04, 0x6
+
+gUnknown_085B7B0A:: @ 85B7B0A
+ .incbin "baserom.gba", 0x5b7b0a, 0x8
+
+gUnknown_085B7B12:: @ 85B7B12
+ .incbin "baserom.gba", 0x5b7b12, 0x8
+
+gUnknown_085B7B1A:: @ 85B7B1A
+ .incbin "baserom.gba", 0x5b7b1a, 0x14
+
+gUnknown_085B7B2E:: @ 85B7B2E
+ .incbin "baserom.gba", 0x5b7b2e, 0x18
+
+gUnknown_085B7B46:: @ 85B7B46
+ .incbin "baserom.gba", 0x5b7b46, 0x2
+
+gUnknown_085B7B48:: @ 85B7B48
+ .incbin "baserom.gba", 0x5b7b48, 0x8d0
+
+gUnknown_085B8418:: @ 85B8418
+ .incbin "baserom.gba", 0x5b8418, 0x20
+
+gUnknown_085B8438:: @ 85B8438
+ .incbin "baserom.gba", 0x5b8438, 0x338
+
+gUnknown_085B8770:: @ 85B8770
+ .incbin "baserom.gba", 0x5b8770, 0x480
+
+gUnknown_085B8BF0:: @ 85B8BF0
+ .incbin "baserom.gba", 0x5b8bf0, 0x20
+
+gUnknown_085B8C10:: @ 85B8C10
+ .incbin "baserom.gba", 0x5b8c10, 0x20
+
+gUnknown_085B8C30:: @ 85B8C30
+ .incbin "baserom.gba", 0x5b8c30, 0x2
+
+gUnknown_085B8C32:: @ 85B8C32
+ .incbin "baserom.gba", 0x5b8c32, 0x36
+
+gUnknown_085B8C68:: @ 85B8C68
+ .incbin "baserom.gba", 0x5b8c68, 0x18
+
+gUnknown_085B8C80:: @ 85B8C80
+ .incbin "baserom.gba", 0x5b8c80, 0x10
+
+gUnknown_085B8C90:: @ 85B8C90
+ .incbin "baserom.gba", 0x5b8c90, 0x528
+
+gUnknown_085B91B8:: @ 85B91B8
+ .incbin "baserom.gba", 0x5b91b8, 0x178
+
+gUnknown_085B9330:: @ 85B9330
+ .incbin "baserom.gba", 0x5b9330, 0x580
+
+gUnknown_085B98B0:: @ 85B98B0
+ .incbin "baserom.gba", 0x5b98b0, 0x240
+
+gUnknown_085B9AF0:: @ 85B9AF0
+ .incbin "baserom.gba", 0x5b9af0, 0x11e0
+
+gUnknown_085BACD0:: @ 85BACD0
+ .incbin "baserom.gba", 0x5bacd0, 0x1e0
+
+gUnknown_085BAEB0:: @ 85BAEB0
+ .incbin "baserom.gba", 0x5baeb0, 0x20
+
+gUnknown_085BAED0:: @ 85BAED0
+ .incbin "baserom.gba", 0x5baed0, 0x378
+
+gUnknown_085BB248:: @ 85BB248
+ .incbin "baserom.gba", 0x5bb248, 0x25c
+
+gUnknown_085BB4A4:: @ 85BB4A4
+ .incbin "baserom.gba", 0x5bb4a4, 0x48c
+
+gUnknown_085BB930:: @ 85BB930
+ .incbin "baserom.gba", 0x5bb930, 0x2e4
+
+gUnknown_085BBC14:: @ 85BBC14
+ .incbin "baserom.gba", 0x5bbc14, 0x6a0
+
+gUnknown_085BC2B4:: @ 85BC2B4
+ .incbin "baserom.gba", 0x5bc2b4, 0x20
+
+gUnknown_085BC2D4:: @ 85BC2D4
+ .incbin "baserom.gba", 0x5bc2d4, 0x20
+
+gUnknown_085BC2F4:: @ 85BC2F4
+ .incbin "baserom.gba", 0x5bc2f4, 0x20
+
+gUnknown_085BC314:: @ 85BC314
+ .incbin "baserom.gba", 0x5bc314, 0x800
+
+gUnknown_085BCB14:: @ 85BCB14
+ .incbin "baserom.gba", 0x5bcb14, 0x800
+
+gUnknown_085BD314:: @ 85BD314
+ .incbin "baserom.gba", 0x5bd314, 0x820
+
+gUnknown_085BDB34:: @ 85BDB34
+ .incbin "baserom.gba", 0x5bdb34, 0x6b4
+
+gUnknown_085BE1E8:: @ 85BE1E8
+ .incbin "baserom.gba", 0x5be1e8, 0x334
+
+gUnknown_085BE51C:: @ 85BE51C
+ .incbin "baserom.gba", 0x5be51c, 0x56c
+
+gUnknown_085BEA88:: @ 85BEA88
+ .incbin "baserom.gba", 0x5bea88, 0x318
+
+gUnknown_085BEDA0:: @ 85BEDA0
+ .incbin "baserom.gba", 0x5beda0, 0x140
+
+gUnknown_085BEEE0:: @ 85BEEE0
+ .incbin "baserom.gba", 0x5beee0, 0x1c0
+
+gUnknown_085BF0A0:: @ 85BF0A0
+ .incbin "baserom.gba", 0x5bf0a0, 0x200
+
+gUnknown_085BF2A0:: @ 85BF2A0
+ .incbin "baserom.gba", 0x5bf2a0, 0x200
+
+gUnknown_085BF4A0:: @ 85BF4A0
+ .incbin "baserom.gba", 0x5bf4a0, 0xa0
+
+gUnknown_085BF540:: @ 85BF540
+ .incbin "baserom.gba", 0x5bf540, 0x160
+
+gUnknown_085BF6A0:: @ 85BF6A0
+ .incbin "baserom.gba", 0x5bf6a0, 0x7540
+
+gUnknown_085C6BE0:: @ 85C6BE0
+ .incbin "baserom.gba", 0x5c6be0, 0x1000
+
+gUnknown_085C7BE0:: @ 85C7BE0
+ .incbin "baserom.gba", 0x5c7be0, 0x20
+
+gUnknown_085C7C00:: @ 85C7C00
+ .incbin "baserom.gba", 0x5c7c00, 0x68c
+
+gUnknown_085C828C:: @ 85C828C
+ .incbin "baserom.gba", 0x5c828c, 0x2ec
+
+gUnknown_085C8578:: @ 85C8578
+ .incbin "baserom.gba", 0x5c8578, 0x20
+
+gUnknown_085C8598:: @ 85C8598
+ .incbin "baserom.gba", 0x5c8598, 0x15c
+
+gUnknown_085C86F4:: @ 85C86F4
+ .incbin "baserom.gba", 0x5c86f4, 0x100
+
+gUnknown_085C87F4:: @ 85C87F4
+ .incbin "baserom.gba", 0x5c87f4, 0xb0
+
+gUnknown_085C88A4:: @ 85C88A4
+ .incbin "baserom.gba", 0x5c88a4, 0x84
+
+gUnknown_085C8928:: @ 85C8928
+ .incbin "baserom.gba", 0x5c8928, 0x20
+
+gUnknown_085C8948:: @ 85C8948
+ .incbin "baserom.gba", 0x5c8948, 0xa8
+
+gUnknown_085C89F0:: @ 85C89F0
+ .incbin "baserom.gba", 0x5c89f0, 0xa8
+
+gUnknown_085C8A98:: @ 85C8A98
+ .incbin "baserom.gba", 0x5c8a98, 0x10
+
+gUnknown_085C8AA8:: @ 85C8AA8
+ .incbin "baserom.gba", 0x5c8aa8, 0xc
+
+gUnknown_085C8AB4:: @ 85C8AB4
+ .incbin "baserom.gba", 0x5c8ab4, 0x8
+
+gUnknown_085C8ABC:: @ 85C8ABC
+ .incbin "baserom.gba", 0x5c8abc, 0x8
+
+gUnknown_085C8AC4:: @ 85C8AC4
+ .incbin "baserom.gba", 0x5c8ac4, 0x1c
+
+gUnknown_085C8AE0:: @ 85C8AE0
+ .incbin "baserom.gba", 0x5c8ae0, 0x1c
+
+gUnknown_085C8AFC:: @ 85C8AFC
+ .incbin "baserom.gba", 0x5c8afc, 0x18
+
+gUnknown_085C8B14:: @ 85C8B14
+ .incbin "baserom.gba", 0x5c8b14, 0x18
+
+gUnknown_085C8B2C:: @ 85C8B2C
+ .incbin "baserom.gba", 0x5c8b2c, 0x18
+
+gUnknown_085C8B44:: @ 85C8B44
+ .incbin "baserom.gba", 0x5c8b44, 0x18
+
+gUnknown_085C8B5C:: @ 85C8B5C
+ .incbin "baserom.gba", 0x5c8b5c, 0x20
+
+gUnknown_085C8B7C:: @ 85C8B7C
+ .incbin "baserom.gba", 0x5c8b7c, 0xc
+
+gUnknown_085C8B88:: @ 85C8B88
+ .incbin "baserom.gba", 0x5c8b88, 0x4
+
+gUnknown_085C8B8C:: @ 85C8B8C
+ .incbin "baserom.gba", 0x5c8b8c, 0xa
+
+gUnknown_085C8B96:: @ 85C8B96
+ .incbin "baserom.gba", 0x5c8b96, 0x6
+
+gUnknown_085C8B9C:: @ 85C8B9C
+ .incbin "baserom.gba", 0x5c8b9c, 0x1c
+
+gUnknown_085C8BB8:: @ 85C8BB8
+ .incbin "baserom.gba", 0x5c8bb8, 0x8
+
+gUnknown_085C8BC0:: @ 85C8BC0
+ .incbin "baserom.gba", 0x5c8bc0, 0xc
+
+gUnknown_085C8BCC:: @ 85C8BCC
+ .incbin "baserom.gba", 0x5c8bcc, 0x28
+
+gUnknown_085C8BF4:: @ 85C8BF4
+ .incbin "baserom.gba", 0x5c8bf4, 0x6
+
+gUnknown_085C8BFA:: @ 85C8BFA
+ .incbin "baserom.gba", 0x5c8bfa, 0x14
+
+gUnknown_085C8C0E:: @ 85C8C0E
+ .incbin "baserom.gba", 0x5c8c0e, 0x16
+
+gUnknown_085C8C24:: @ 85C8C24
+ .incbin "baserom.gba", 0x5c8c24, 0x1c
+
+gUnknown_085C8C40:: @ 85C8C40
+ .incbin "baserom.gba", 0x5c8c40, 0x4
+
+gUnknown_085C8C44:: @ 85C8C44
+ .incbin "baserom.gba", 0x5c8c44, 0x4
+
+gUnknown_085C8C48:: @ 85C8C48
+ .incbin "baserom.gba", 0x5c8c48, 0xc
+
+gUnknown_085C8C54:: @ 85C8C54
+ .incbin "baserom.gba", 0x5c8c54, 0x10
+
+gUnknown_085C8C64:: @ 85C8C64
+ .incbin "baserom.gba", 0x5c8c64, 0x2
+
+gUnknown_085C8C66:: @ 85C8C66
+ .incbin "baserom.gba", 0x5c8c66, 0x6
+
+gUnknown_085C8C6C:: @ 85C8C6C
+ .incbin "baserom.gba", 0x5c8c6c, 0xc
+
+gUnknown_085C8C78:: @ 85C8C78
+ .incbin "baserom.gba", 0x5c8c78, 0x8
+
+gUnknown_085C8C80:: @ 85C8C80
+ .incbin "baserom.gba", 0x5c8c80, 0x4
+
+gUnknown_085C8C84:: @ 85C8C84
+ .incbin "baserom.gba", 0x5c8c84, 0xb4
+
+gUnknown_085C8D38:: @ 85C8D38
+ .incbin "baserom.gba", 0x5c8d38, 0x8
+
+gUnknown_085C8D40:: @ 85C8D40
+ .incbin "baserom.gba", 0x5c8d40, 0x20
+
+gUnknown_085C8D60:: @ 85C8D60
+ .incbin "baserom.gba", 0x5c8d60, 0x2c
+
+gUnknown_085C8D8C:: @ 85C8D8C
+ .incbin "baserom.gba", 0x5c8d8c, 0x14
+
+gUnknown_085C8DA0:: @ 85C8DA0
+ .incbin "baserom.gba", 0x5c8da0, 0x10
+
+gUnknown_085C8DB0:: @ 85C8DB0
+ .incbin "baserom.gba", 0x5c8db0, 0xc
+
+gUnknown_085C8DBC:: @ 85C8DBC
+ .incbin "baserom.gba", 0x5c8dbc, 0x14
+
+gUnknown_085C8DD0:: @ 85C8DD0
+ .incbin "baserom.gba", 0x5c8dd0, 0x46
+
+gUnknown_085C8E16:: @ 85C8E16
+ .incbin "baserom.gba", 0x5c8e16, 0xe
+
+gUnknown_085C8E24:: @ 85C8E24
+ .incbin "baserom.gba", 0x5c8e24, 0x44
+
+gUnknown_085C8E68:: @ 85C8E68
+ .incbin "baserom.gba", 0x5c8e68, 0x6c
+
+ .align 2
+gFieldEffectObjectPalette10:: @ 85C8ED4
+ .incbin "graphics/map_objects/palettes/field_effect_object_palette_10.gbapal"
+
+ .align 2
+gFieldEffectObjectPaletteInfo10:: @ 85C8EF4
+ obj_pal gFieldEffectObjectPalette10, 0x1009
+
+ .incbin "baserom.gba", 0x5c8efc, 0xe0
+
+gUnknown_085C8FDC:: @ 85C8FDC
+ .incbin "baserom.gba", 0x5c8fdc, 0x14
+
+gUnknown_085C8FF0:: @ 85C8FF0
+ .incbin "baserom.gba", 0x5c8ff0, 0x30
+
+gUnknown_085C9020:: @ 85C9020
+ .incbin "baserom.gba", 0x5c9020, 0x4b0
+
+gUnknown_085C94D0:: @ 85C94D0
+ .incbin "baserom.gba", 0x5c94d0, 0x500
+
+gUnknown_085C99D0:: @ 85C99D0
+ .incbin "baserom.gba", 0x5c99d0, 0x18
+
+gUnknown_085C99E8:: @ 85C99E8
+ .incbin "baserom.gba", 0x5c99e8, 0x10
+
+gUnknown_085C99F8:: @ 85C99F8
+ .incbin "baserom.gba", 0x5c99f8, 0x10
+
+gUnknown_085C9A08:: @ 85C9A08
+ .incbin "baserom.gba", 0x5c9a08, 0x14
+
+gUnknown_085C9A1C:: @ 85C9A1C
+ .incbin "baserom.gba", 0x5c9a1c, 0x14
+
+gUnknown_085C9A30:: @ 85C9A30
+ .incbin "baserom.gba", 0x5c9a30, 0x23
+
+gUnknown_085C9A53:: @ 85C9A53
+ .incbin "baserom.gba", 0x5c9a53, 0x41
+
diff --git a/include/battle.h b/include/battle.h
index 99208f879..1fd333610 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -16,7 +16,7 @@
#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000
#define BATTLE_TYPE_LEGENDARY 0x2000
#define BATTLE_TYPE_REGI 0x4000
-#define BATTLE_TYPE_TWO_VS_ONE 0x8000
+#define BATTLE_TYPE_TWO_OPPONENTS 0x8000
#define BATTLE_TYPE_DOME 0x10000
#define BATTLE_TYPE_PALACE 0x20000
#define BATTLE_TYPE_ARENA 0x40000
@@ -25,20 +25,14 @@
#define BATTLE_TYPE_PYRAMID 0x200000
#define BATTLE_TYPE_INGAME_PARTNER 0x400000
#define BATTLE_TYPE_RECORDED 0x1000000
+#define BATTLE_TYPE_x2000000 0x2000000
+#define BATTLE_TYPE_x4000000 0x4000000
+#define BATTLE_TYPE_SECRET_BASE 0x8000000
#define BATTLE_TYPE_GROUDON 0x10000000
#define BATTLE_TYPE_KYORGE 0x20000000
#define BATTLE_TYPE_RAYQUAZA 0x40000000
-#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID)
-
-#define AI_ACTION_UNK1 0x0001
-#define AI_ACTION_UNK2 0x0002
-#define AI_ACTION_UNK3 0x0004
-#define AI_ACTION_UNK4 0x0008
-#define AI_ACTION_UNK5 0x0010
-#define AI_ACTION_UNK6 0x0020
-#define AI_ACTION_UNK7 0x0040
-#define AI_ACTION_UNK8 0x0080
+#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID)
#define STATUS_SLEEP 0x7
#define STATUS_POISON 0x8
@@ -175,11 +169,27 @@
#define WEATHER_SUN_PERMANENT (1 << 6)
#define WEATHER_SUN_ANY ((WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT))
#define WEATHER_HAIL (1 << 7)
+#define WEATHER_HAIL_ANY ((WEATHER_HAIL))
u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg);
u8 GetBankSide(u8 bank);
-// TODO: get rid of void* and make actual struct fields
+struct Trainer
+{
+ /*0x00*/ u8 partyFlags;
+ /*0x01*/ u8 trainerClass;
+ /*0x02*/ u8 encounterMusic:7;
+ /*0x02*/ u8 gender:1;
+ /*0x03*/ u8 trainerPic;
+ /*0x04*/ u8 trainerName[12];
+ /*0x10*/ u16 items[4];
+ /*0x18*/ bool8 doubleBattle;
+ /*0x1C*/ u32 aiFlags;
+ /*0x20*/ u8 partySize;
+ /*0x24*/ void *party;
+};
+
+extern const struct Trainer gTrainers[];
struct UnknownFlags
{
@@ -236,7 +246,7 @@ struct AI_ThinkingStruct
u8 aiAction;
u8 aiLogicId;
u8 filler12[6];
- u8 unk18[4];
+ u8 simulatedRNG[4];
};
struct UsedMoves
@@ -252,7 +262,7 @@ struct BattleHistory
u8 abilities[4];
u8 itemEffects[4];
u16 TrainerItems[4];
- u8 unk50;
+ u8 itemsNo;
};
struct BattleScriptsStack
@@ -275,4 +285,73 @@ struct BattleResources
extern struct BattleResources* gBattleResources;
+struct BattleResults
+{
+ u8 playerFaintCounter; // 0x0
+ u8 opponentFaintCounter; // 0x1
+ u8 unk2; // 0x2
+ u8 unk3; // 0x3
+ u8 unk4; // 0x4
+ u8 unk5_0:1; // 0x5
+ u8 unk5_1:1; // 0x5
+ u16 poke1Species; // 0x6
+ u8 pokeString1[10]; // 0x8
+ u8 unk12;
+ u8 battleTurnCounter; // 0x13
+ u8 pokeString2[10]; // 0x14
+ u8 filler1E[2];
+ u16 lastOpponentSpecies; // 0x20
+ u16 lastUsedMove; // 0x22
+ u16 opponentMove; // 0x24
+ u16 opponentSpecies; // 0x26
+ u16 caughtPoke; // 0x28
+ u8 caughtNick[10]; // 0x2A
+ u8 filler34[2];
+ u8 unk36[10]; // usedBalls?
+};
+
+extern struct BattleResults gBattleResults;
+
+struct BattleStruct
+{
+ u8 field_1;
+ u8 field_2;
+ u8 field_3;
+ u8 field_4;
+ u8 wrappedMove1[4];
+ u8 wrappedMove2[4];
+ u8 moveTarget[4];
+ u8 expGetterId;
+ u8 field_11;
+ u8 wildVictorySong;
+ u8 dynamicMoveType;
+ u8 wrappedBy[4];
+ u8 field_18[0x63]; // TODO: expand
+ u8 field_7B;
+ u8 field_7C;
+ u8 field_7D[60];
+ u16 usedHeldItems[4];
+};
+
+extern struct BattleStruct* gBattleStruct;
+
+struct BattleScripting
+{
+ u8 field_0;
+ u8 field_1;
+ u8 field_2;
+ u8 field_3;
+ u32 bideDmg;
+ u8 field_8;
+ u8 field_9;
+ u8 field_A;
+ u8 field_B;
+ u8 field_C;
+ u8 field_D;
+ u8 dmgMultiplier;
+ u8 field_F;
+};
+
+extern struct BattleScripting gBattleScripting;
+
#endif
diff --git a/include/battle_ai.h b/include/battle_ai.h
new file mode 100644
index 000000000..2a315059b
--- /dev/null
+++ b/include/battle_ai.h
@@ -0,0 +1,13 @@
+#ifndef GUARD_BATTLE_AI_H
+#define GUARD_BATTLE_AI_H
+
+void BattleAI_HandleItemUseBeforeAISetup(u8 defaultScoreMoves);
+void BattleAI_SetupAIData(u8 defaultScoreMoves);
+u8 BattleAI_ChooseMoveOrAction(void);
+void ClearBankMoveHistory(u8 bank);
+void RecordAbilityBattle(u8 bank, u8 abilityId);
+void ClearBankAbilityHistory(u8 bank);
+void RecordItemEffectBattle(u8 bank, u8 itemEffect);
+void ClearBankItemEffectHistory(u8 bank);
+
+#endif // GUARD_BATTLE_AI_H
diff --git a/include/pokemon.h b/include/pokemon.h
index 4c853dcd0..449cf37c0 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -369,6 +369,6 @@ struct BattleMove
// u32 GetMonData(struct Pokemon *mon, s32 field, u8 *data);
u32 GetMonData();
-u8 pokemon_species_get_gender_info(u16 species, u32 personality);
+u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality);
#endif // GUARD_POKEMON_H
diff --git a/ld_script.txt b/ld_script.txt
index ffe9a41d7..8856e3014 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -293,6 +293,8 @@ SECTIONS {
data/data2c.o(.rodata);
src/trig.o(.rodata);
data/data3.o(.rodata);
+ src/battle_ai.o(.rodata);
+ data/data4.o(.rodata);
data/battle_controller_link_partner.o(.rodata);
data/battle_message.o(.rodata);
data/cable_car.o(.rodata);
diff --git a/src/battle_ai.c b/src/battle_ai.c
index f8a52c889..71273777a 100644
--- a/src/battle_ai.c
+++ b/src/battle_ai.c
@@ -1,31 +1,36 @@
#include "global.h"
+#include "battle_ai.h"
#include "pokemon.h"
#include "battle.h"
#include "species.h"
#include "abilities.h"
#include "rng.h"
+#include "item.h"
+#include "battle_move_effects.h"
#define AIScriptRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24)
#define AIScriptRead16(ptr) ((ptr)[0] | (ptr)[1] << 8)
#define AIScriptRead8(ptr) ((ptr)[0])
#define AIScriptReadPtr(ptr) (u8*) AIScriptRead32(ptr)
-#define AI_THINKING_STRUCT ((struct AI_ThinkingStruct *)(gBattleResources->ai))
-#define BATTLE_HISTORY ((struct BattleHistory *)(gBattleResources->battleHistory))
-
-#define AI_ACTION_UNK1 0x0001
-#define AI_ACTION_UNK2 0x0002
-#define AI_ACTION_UNK3 0x0004
-#define AI_ACTION_UNK4 0x0008
+#define AI_ACTION_DONE 0x0001
+#define AI_ACTION_FLEE 0x0002
+#define AI_ACTION_WATCH 0x0004
+#define AI_ACTION_DO_NOT_ATTACK 0x0008
#define AI_ACTION_UNK5 0x0010
#define AI_ACTION_UNK6 0x0020
#define AI_ACTION_UNK7 0x0040
#define AI_ACTION_UNK8 0x0080
+#define AI_THINKING_STRUCT ((struct AI_ThinkingStruct *)(gBattleResources->ai))
+#define BATTLE_HISTORY ((struct BattleHistory *)(gBattleResources->battleHistory))
+
enum
{
TARGET,
- USER
+ USER,
+ TARGET_PARTNER,
+ USER_PARTNER
};
// AI states
@@ -37,22 +42,6 @@ enum
AIState_DoNotProcess
};
-//Copied from pokeruby -- hopefully the same
-struct Trainer
-{
- /*0x00*/ u8 partyFlags;
- /*0x01*/ u8 trainerClass;
- /*0x02*/ u8 encounterMusic:7;
- /*0x02*/ u8 gender:1;
- /*0x03*/ u8 trainerPic;
- /*0x04*/ u8 trainerName[12];
- /*0x10*/ u16 items[4];
- /*0x18*/ bool8 doubleBattle;
- /*0x1C*/ u32 aiFlags;
- /*0x20*/ u8 partySize;
- /*0x24*/ void *party;
-};
-
/*
gAIScriptPtr is a pointer to the next battle AI cmd command to read.
when a command finishes processing, gAIScriptPtr is incremented by
@@ -60,165 +49,388 @@ the number of bytes that the current command had reserved for arguments
in order to read the next command correctly. refer to battle_ai_scripts.s for the
AI scripts.
*/
-extern u8 *gAIScriptPtr;
extern u32 gBattleTypeFlags;
extern u8 gActiveBank;
-extern struct BattlePokemon gBattleMons[];
+extern struct BattlePokemon gBattleMons[4];
extern u16 gCurrentMove;
extern u8 gBankTarget;
extern u8 gAbsentBankFlags;
-extern u16 gUnknown_02024248[];
-extern u8 *gBattleStruct;
-extern u16 gUnknown_02038BCA;
-extern u16 gUnknown_02038BCC;
-extern u8 gPlayerMonIndex;
-extern struct Trainer gTrainers[];
-extern const u32 gBitTable[];
-extern u8 *gUnknown_082DBEF8[];
-extern u32 gStatuses3[];
-extern u16 gUnknown_0202428E[];
-extern struct BattleMove gBattleMoves[];
-extern u8 gUnknown_03005D10[];
-extern u8 gBattlePartyID[][2];
-extern struct BaseStats gBaseStats[];
-extern u16 gUnknown_02024400;
-extern u8 gBattleScripting[];
+extern u16 gLastUsedMovesByBanks[4];
+extern u16 gTrainerBattleOpponent_A;
+extern u16 gTrainerBattleOpponent_B;
+extern u32 gStatuses3[4];
+extern u16 gSideAffecting[2];
+extern u16 gBattlePartyID[4];
+extern u16 gDynamicBasePower;
extern u8 gBattleMoveFlags;
-extern int gBattleMoveDamage;
+extern s32 gBattleMoveDamage;
extern u8 gCritMultiplier;
extern u16 gBattleWeather;
+extern const struct BattleMove gBattleMoves[];
+extern const struct BaseStats gBaseStats[];
+extern const u32 gBitTable[];
+extern u8 * const gBattleAI_ScriptsTable[];
+
extern u8 GetBankIdentity(u8);
extern u8 b_first_side(u8, u8, u8);
extern u8 GetBankByPlayerAI(u8);
-extern void move_effectiveness_something(u16, u8, u8);
-extern u8 ItemId_GetHoldEffect();
-extern void b_mc_stack_push(u8 *);
-extern bool8 b_mc_stack_pop_cursor(void);
-extern void sub_8046E7C(u8, u8);
+extern void TypeCalc(u16 move, u8 bankAtk, u8 bankDef);
+extern void AI_CalcDmg(u8, u8);
+
+extern u8 CheckMoveLimitations();
+extern u32 GetAiScriptsInRecordedBattle();
+extern u32 GetAiScriptsInBattleFactory();
+
+static u8 BattleAI_ChooseMoveOrAction_Singles(void);
+static u8 BattleAI_ChooseMoveOrAction_Doubles(void);
+static void RecordLastUsedMoveByTarget(void);
+static void BattleAI_DoAIProcessing(void);
+static void AIStackPushVar(u8 *);
+static bool8 AIStackPop(void);
+
+static void BattleAICmd_if_random_less_than(void);
+static void BattleAICmd_if_random_greater_than(void);
+static void BattleAICmd_if_random_equal(void);
+static void BattleAICmd_if_random_not_equal(void);
+static void BattleAICmd_score(void);
+static void BattleAICmd_if_hp_less_than(void);
+static void BattleAICmd_if_hp_more_than(void);
+static void BattleAICmd_if_hp_equal(void);
+static void BattleAICmd_if_hp_not_equal(void);
+static void BattleAICmd_if_status(void);
+static void BattleAICmd_if_not_status(void);
+static void BattleAICmd_if_status2(void);
+static void BattleAICmd_if_not_status2(void);
+static void BattleAICmd_if_status3(void);
+static void BattleAICmd_if_not_status3(void);
+static void BattleAICmd_if_side_affecting(void);
+static void BattleAICmd_if_not_side_affecting(void);
+static void BattleAICmd_if_less_than(void);
+static void BattleAICmd_if_more_than(void);
+static void BattleAICmd_if_equal(void);
+static void BattleAICmd_if_not_equal(void);
+static void BattleAICmd_if_less_than_32(void);
+static void BattleAICmd_if_more_than_32(void);
+static void BattleAICmd_if_equal_32(void);
+static void BattleAICmd_if_not_equal_32(void);
+static void BattleAICmd_if_move(void);
+static void BattleAICmd_if_not_move(void);
+static void BattleAICmd_if_in_bytes(void);
+static void BattleAICmd_if_not_in_bytes(void);
+static void BattleAICmd_if_in_words(void);
+static void BattleAICmd_if_not_in_words(void);
+static void BattleAICmd_if_user_can_damage(void);
+static void BattleAICmd_if_user_cant_damage(void);
+static void BattleAICmd_get_turn_count(void);
+static void BattleAICmd_get_type(void);
+static void BattleAICmd_get_last_used_bank_move_power(void);
+static void BattleAICmd_is_most_powerful_move(void);
+static void BattleAICmd_get_last_used_bank_move(void);
+static void BattleAICmd_if_arg_equal(void);
+static void BattleAICmd_if_arg_not_equal(void);
+static void BattleAICmd_if_would_go_first(void);
+static void BattleAICmd_if_would_not_go_first(void);
+static void BattleAICmd_nullsub_2A(void);
+static void BattleAICmd_nullsub_2B(void);
+static void BattleAICmd_count_alive_pokemon(void);
+static void BattleAICmd_get_considered_move(void);
+static void BattleAICmd_get_considered_move_effect(void);
+static void BattleAICmd_get_ability(void);
+static void BattleAICmd_get_highest_type_effectiveness(void);
+static void BattleAICmd_if_type_effectiveness(void);
+static void BattleAICmd_nullsub_32(void);
+static void BattleAICmd_nullsub_33(void);
+static void BattleAICmd_if_status_in_party(void);
+static void BattleAICmd_if_status_not_in_party(void);
+static void BattleAICmd_get_weather(void);
+static void BattleAICmd_if_effect(void);
+static void BattleAICmd_if_not_effect(void);
+static void BattleAICmd_if_stat_level_less_than(void);
+static void BattleAICmd_if_stat_level_more_than(void);
+static void BattleAICmd_if_stat_level_equal(void);
+static void BattleAICmd_if_stat_level_not_equal(void);
+static void BattleAICmd_if_can_faint(void);
+static void BattleAICmd_if_cant_faint(void);
+static void BattleAICmd_if_has_move(void);
+static void BattleAICmd_if_dont_have_move(void);
+static void BattleAICmd_if_move_effect(void);
+static void BattleAICmd_if_not_move_effect(void);
+static void BattleAICmd_if_any_move_disabled_or_encored(void);
+static void BattleAICmd_if_curr_move_disabled_or_encored(void);
+static void BattleAICmd_flee(void);
+static void BattleAICmd_if_random_100(void);
+static void BattleAICmd_watch(void);
+static void BattleAICmd_get_hold_effect(void);
+static void BattleAICmd_get_gender(void);
+static void BattleAICmd_is_first_turn(void);
+static void BattleAICmd_get_stockpile_count(void);
+static void BattleAICmd_is_double_battle(void);
+static void BattleAICmd_get_used_held_item(void);
+static void BattleAICmd_get_move_type_from_result(void);
+static void BattleAICmd_get_move_power_from_result(void);
+static void BattleAICmd_get_move_effect_from_result(void);
+static void BattleAICmd_get_protect_count(void);
+static void BattleAICmd_nullsub_52(void);
+static void BattleAICmd_nullsub_53(void);
+static void BattleAICmd_nullsub_54(void);
+static void BattleAICmd_nullsub_55(void);
+static void BattleAICmd_nullsub_56(void);
+static void BattleAICmd_nullsub_57(void);
+static void BattleAICmd_call(void);
+static void BattleAICmd_jump(void);
+static void BattleAICmd_end(void);
+static void BattleAICmd_if_level_cond(void);
+static void BattleAICmd_if_target_taunted(void);
+static void BattleAICmd_if_target_not_taunted(void);
+static void BattleAICmd_check_ability(void);
+static void BattleAICmd_is_of_type(void);
+static void BattleAICmd_if_target_is_ally(void);
+static void BattleAICmd_if_flash_fired(void);
+static void BattleAICmd_if_holds_item(void);
+
+// ewram
+
+EWRAM_DATA u8 *gAIScriptPtr = NULL;
+EWRAM_DATA static u8 sBank_AI = 0;
+
+// const rom data
typedef void (*BattleAICmdFunc)(void);
-extern const BattleAICmdFunc sBattleAICmdTable[];
-
-extern u8 sub_803FECC();
-extern u32 sub_8186438();
-extern u32 sub_81A6FB4();
+static const BattleAICmdFunc sBattleAICmdTable[] =
+{
+ BattleAICmd_if_random_less_than, // 0x0
+ BattleAICmd_if_random_greater_than, // 0x1
+ BattleAICmd_if_random_equal, // 0x2
+ BattleAICmd_if_random_not_equal, // 0x3
+ BattleAICmd_score, // 0x4
+ BattleAICmd_if_hp_less_than, // 0x5
+ BattleAICmd_if_hp_more_than, // 0x6
+ BattleAICmd_if_hp_equal, // 0x7
+ BattleAICmd_if_hp_not_equal, // 0x8
+ BattleAICmd_if_status, // 0x9
+ BattleAICmd_if_not_status, // 0xA
+ BattleAICmd_if_status2, // 0xB
+ BattleAICmd_if_not_status2, // 0xC
+ BattleAICmd_if_status3, // 0xD
+ BattleAICmd_if_not_status3, // 0xE
+ BattleAICmd_if_side_affecting, // 0xF
+ BattleAICmd_if_not_side_affecting, // 0x10
+ BattleAICmd_if_less_than, // 0x11
+ BattleAICmd_if_more_than, // 0x12
+ BattleAICmd_if_equal, // 0x13
+ BattleAICmd_if_not_equal, // 0x14
+ BattleAICmd_if_less_than_32, // 0x15
+ BattleAICmd_if_more_than_32, // 0x16
+ BattleAICmd_if_equal_32, // 0x17
+ BattleAICmd_if_not_equal_32, // 0x18
+ BattleAICmd_if_move, // 0x19
+ BattleAICmd_if_not_move, // 0x1A
+ BattleAICmd_if_in_bytes, // 0x1B
+ BattleAICmd_if_not_in_bytes, // 0x1C
+ BattleAICmd_if_in_words, // 0x1D
+ BattleAICmd_if_not_in_words, // 0x1E
+ BattleAICmd_if_user_can_damage, // 0x1F
+ BattleAICmd_if_user_cant_damage, // 0x20
+ BattleAICmd_get_turn_count, // 0x21
+ BattleAICmd_get_type, // 0x22
+ BattleAICmd_get_last_used_bank_move_power, // 0x23
+ BattleAICmd_is_most_powerful_move, // 0x24
+ BattleAICmd_get_last_used_bank_move, // 0x25
+ BattleAICmd_if_arg_equal, // 0x26
+ BattleAICmd_if_arg_not_equal, // 0x27
+ BattleAICmd_if_would_go_first, // 0x28
+ BattleAICmd_if_would_not_go_first, // 0x29
+ BattleAICmd_nullsub_2A, // 0x2A
+ BattleAICmd_nullsub_2B, // 0x2B
+ BattleAICmd_count_alive_pokemon, // 0x2C
+ BattleAICmd_get_considered_move, // 0x2D
+ BattleAICmd_get_considered_move_effect, // 0x2E
+ BattleAICmd_get_ability, // 0x2F
+ BattleAICmd_get_highest_type_effectiveness, // 0x30
+ BattleAICmd_if_type_effectiveness, // 0x31
+ BattleAICmd_nullsub_32, // 0x32
+ BattleAICmd_nullsub_33, // 0x33
+ BattleAICmd_if_status_in_party, // 0x34
+ BattleAICmd_if_status_not_in_party, // 0x35
+ BattleAICmd_get_weather, // 0x36
+ BattleAICmd_if_effect, // 0x37
+ BattleAICmd_if_not_effect, // 0x38
+ BattleAICmd_if_stat_level_less_than, // 0x39
+ BattleAICmd_if_stat_level_more_than, // 0x3A
+ BattleAICmd_if_stat_level_equal, // 0x3B
+ BattleAICmd_if_stat_level_not_equal, // 0x3C
+ BattleAICmd_if_can_faint, // 0x3D
+ BattleAICmd_if_cant_faint, // 0x3E
+ BattleAICmd_if_has_move, // 0x3F
+ BattleAICmd_if_dont_have_move, // 0x40
+ BattleAICmd_if_move_effect, // 0x41
+ BattleAICmd_if_not_move_effect, // 0x42
+ BattleAICmd_if_any_move_disabled_or_encored, // 0x43
+ BattleAICmd_if_curr_move_disabled_or_encored, // 0x44
+ BattleAICmd_flee, // 0x45
+ BattleAICmd_if_random_100, // 0x46
+ BattleAICmd_watch, // 0x47
+ BattleAICmd_get_hold_effect, // 0x48
+ BattleAICmd_get_gender, // 0x49
+ BattleAICmd_is_first_turn, // 0x4A
+ BattleAICmd_get_stockpile_count, // 0x4B
+ BattleAICmd_is_double_battle, // 0x4C
+ BattleAICmd_get_used_held_item, // 0x4D
+ BattleAICmd_get_move_type_from_result, // 0x4E
+ BattleAICmd_get_move_power_from_result, // 0x4F
+ BattleAICmd_get_move_effect_from_result, // 0x50
+ BattleAICmd_get_protect_count, // 0x51
+ BattleAICmd_nullsub_52, // 0x52
+ BattleAICmd_nullsub_53, // 0x53
+ BattleAICmd_nullsub_54, // 0x54
+ BattleAICmd_nullsub_55, // 0x55
+ BattleAICmd_nullsub_56, // 0x56
+ BattleAICmd_nullsub_57, // 0x57
+ BattleAICmd_call, // 0x58
+ BattleAICmd_jump, // 0x59
+ BattleAICmd_end, // 0x5A
+ BattleAICmd_if_level_cond, // 0x5B
+ BattleAICmd_if_target_taunted, // 0x5C
+ BattleAICmd_if_target_not_taunted, // 0x5D
+ BattleAICmd_if_target_is_ally, // 0x5E
+ BattleAICmd_is_of_type, // 0x5F
+ BattleAICmd_check_ability, // 0x60
+ BattleAICmd_if_flash_fired, // 0x61
+ BattleAICmd_if_holds_item, // 0x62
+};
-void BattleAI_SetupAIData(u8 a);
-u8 BattleAI_GetAIActionToUse(void);
-u8 sub_8130CF4(void);
-void sub_8131074(void);
-void BattleAI_DoAIProcessing(void);
+static const u16 sDiscouragedPowerfulMoveEffects[] =
+{
+ EFFECT_EXPLOSION,
+ EFFECT_DREAM_EATER,
+ EFFECT_RAZOR_WIND,
+ EFFECT_SKY_ATTACK,
+ EFFECT_RECHARGE,
+ EFFECT_SKULL_BASH,
+ EFFECT_SOLARBEAM,
+ EFFECT_SPIT_UP,
+ EFFECT_FOCUS_PUNCH,
+ EFFECT_SUPERPOWER,
+ EFFECT_ERUPTION,
+ EFFECT_OVERHEAT,
+ 0xFFFF
+};
-void BattleAI_HandleItemUseBeforeAISetup(u8 a)
+void BattleAI_HandleItemUseBeforeAISetup(u8 defaultScoreMoves)
{
s32 i;
u8 *data = (u8 *)gBattleResources->battleHistory;
- for (i = 0; (u32)i < 0x54; i++)
+ for (i = 0; i < sizeof(struct BattleHistory); i++)
data[i] = 0;
- if ((gBattleTypeFlags & 0x0A7F098A) == 8)
+ // items are allowed to use in ONLY trainer battles
+ if ((gBattleTypeFlags &
+ (BATTLE_TYPE_LINK | BATTLE_TYPE_SAFARI | BATTLE_TYPE_BATTLE_TOWER |
+ BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_TRAINER | BATTLE_TYPE_FRONTIER
+ | BATTLE_TYPE_INGAME_PARTNER | BATTLE_TYPE_x2000000 | BATTLE_TYPE_SECRET_BASE))
+ == BATTLE_TYPE_TRAINER)
{
for (i = 0; i < 4; i++)
{
- if (gTrainers[gUnknown_02038BCA].items[i] != 0)
+ if (gTrainers[gTrainerBattleOpponent_A].items[i] != 0)
{
- gBattleResources->battleHistory->TrainerItems[gBattleResources->battleHistory->unk50] = gTrainers[gUnknown_02038BCA].items[i];
- gBattleResources->battleHistory->unk50++;
+ gBattleResources->battleHistory->TrainerItems[gBattleResources->battleHistory->itemsNo] = gTrainers[gTrainerBattleOpponent_A].items[i];
+ gBattleResources->battleHistory->itemsNo++;
}
}
}
- BattleAI_SetupAIData(a);
+ BattleAI_SetupAIData(defaultScoreMoves);
}
-void BattleAI_SetupAIData(u8 a)
+void BattleAI_SetupAIData(u8 defaultScoreMoves)
{
s32 i;
u8 *data = (u8 *)AI_THINKING_STRUCT;
- u8 r6;
+ u8 moveLimitations;
// clear AI data.
- for (i = 0; (u32)i < sizeof(struct AI_ThinkingStruct); i++)
+ for (i = 0; i < sizeof(struct AI_ThinkingStruct); i++)
data[i] = 0;
// conditional score reset, unlike Ruby.
for (i = 0; i < 4; i++)
{
- if (a & 1)
+ if (defaultScoreMoves & 1)
AI_THINKING_STRUCT->score[i] = 100;
else
AI_THINKING_STRUCT->score[i] = 0;
- a >>= 1;
+ defaultScoreMoves >>= 1;
}
- r6 = sub_803FECC(gActiveBank, 0, 0xFF);
+ moveLimitations = CheckMoveLimitations(gActiveBank, 0, 0xFF);
+ // ignore moves that aren't possible to use
for (i = 0; i < 4; i++)
{
- if (gBitTable[i] & r6)
+ if (gBitTable[i] & moveLimitations)
AI_THINKING_STRUCT->score[i] = 0;
- AI_THINKING_STRUCT->unk18[i] = 100 - (Random() % 16);
+ AI_THINKING_STRUCT->simulatedRNG[i] = 100 - (Random() % 16);
}
gBattleResources->AI_ScriptsStack->size = 0;
- gPlayerMonIndex = gActiveBank;
- if (gBattleTypeFlags & 1)
+ sBank_AI = gActiveBank;
+ // decide a random target bank in doubles
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
- gBankTarget = (Random() & 2) + ((u32)GetBankSide(gActiveBank) ^ 1);
+ gBankTarget = (Random() & 2) + (GetBankSide(gActiveBank) ^ 1);
if (gAbsentBankFlags & gBitTable[gBankTarget])
gBankTarget ^= 2;
}
+ // in singles there's only one choice
else
- {
- //_08130A60
- gBankTarget = gPlayerMonIndex ^ 1;
- }
- //_08130A68
- if (gBattleTypeFlags & 0x1000000)
- AI_THINKING_STRUCT->aiFlags = sub_8186438();
- else if (gBattleTypeFlags & 0x80)
+ gBankTarget = sBank_AI ^ 1;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ AI_THINKING_STRUCT->aiFlags = GetAiScriptsInRecordedBattle();
+ else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
AI_THINKING_STRUCT->aiFlags = 0x40000000;
- else if (gBattleTypeFlags & 0x400)
+ else if (gBattleTypeFlags & BATTLE_TYPE_ROAMER)
AI_THINKING_STRUCT->aiFlags = 0x20000000;
- else if (gBattleTypeFlags & 0x10)
+ else if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
AI_THINKING_STRUCT->aiFlags = 0x80000000;
- else if (gBattleTypeFlags & 0x80000)
- AI_THINKING_STRUCT->aiFlags = sub_81A6FB4();
- else if (gBattleTypeFlags & 0x0C3F0900)
- AI_THINKING_STRUCT->aiFlags = 7;
- else if (gBattleTypeFlags & 0x8000)
- AI_THINKING_STRUCT->aiFlags = gTrainers[gUnknown_02038BCA].aiFlags | gTrainers[gUnknown_02038BCC].aiFlags;
- else
- AI_THINKING_STRUCT->aiFlags = gTrainers[gUnknown_02038BCA].aiFlags;
- if (gBattleTypeFlags & 1)
- AI_THINKING_STRUCT->aiFlags |= 0x80;
+ else if (gBattleTypeFlags & BATTLE_TYPE_FACTORY)
+ AI_THINKING_STRUCT->aiFlags = GetAiScriptsInBattleFactory();
+ else if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_x4000000 | BATTLE_TYPE_SECRET_BASE))
+ AI_THINKING_STRUCT->aiFlags = 7; // the smartest possible set
+ else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
+ AI_THINKING_STRUCT->aiFlags = gTrainers[gTrainerBattleOpponent_A].aiFlags | gTrainers[gTrainerBattleOpponent_B].aiFlags;
+ else
+ AI_THINKING_STRUCT->aiFlags = gTrainers[gTrainerBattleOpponent_A].aiFlags;
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ AI_THINKING_STRUCT->aiFlags |= 0x80; // act smart in doubles and don't attack your partner
}
-u8 sub_8130BA4(void)
+u8 BattleAI_ChooseMoveOrAction(void)
{
- u16 r4 = gCurrentMove;
+ u16 savedCurrentMove = gCurrentMove;
u8 ret;
- if (!(gBattleTypeFlags & 1))
- ret = BattleAI_GetAIActionToUse();
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ ret = BattleAI_ChooseMoveOrAction_Singles();
else
- ret = sub_8130CF4();
+ ret = BattleAI_ChooseMoveOrAction_Doubles();
- gCurrentMove = r4;
+ gCurrentMove = savedCurrentMove;
return ret;
}
-u8 BattleAI_GetAIActionToUse(void)
+static u8 BattleAI_ChooseMoveOrAction_Singles(void)
{
u8 currentMoveArray[4];
u8 consideredMoveArray[4];
u8 numOfBestMoves;
s32 i;
- sub_8131074();
+ RecordLastUsedMoveByTarget();
while (AI_THINKING_STRUCT->aiFlags != 0)
{
@@ -244,7 +456,7 @@ u8 BattleAI_GetAIActionToUse(void)
for (i = 1; i < 4; i++)
{
- if (gBattleMons[gPlayerMonIndex].moves[i] != 0) // emerald adds an extra move ID check for some reason.
+ if (gBattleMons[sBank_AI].moves[i] != 0) // emerald adds an extra move ID check for some reason.
{
// in ruby, the order of these if statements are reversed.
if (currentMoveArray[0] == AI_THINKING_STRUCT->score[i])
@@ -264,7 +476,7 @@ u8 BattleAI_GetAIActionToUse(void)
}
#ifdef NONMATCHING
-u8 sub_8130CF4(void)
+static u8 BattleAI_ChooseMoveOrAction_Doubles(void)
{
s32 i;
s32 j;
@@ -284,7 +496,7 @@ u8 sub_8130CF4(void)
for (i = 0; i < 4; i++) //_08130D14
{
- if (i == gPlayerMonIndex || gBattleMons[i].hp == 0)
+ if (i == sBank_AI || gBattleMons[i].hp == 0)
{
//_08130D2E
spC[i] = -1;
@@ -299,8 +511,8 @@ u8 sub_8130CF4(void)
BattleAI_SetupAIData(0xF);
//_08130D76
gBankTarget = i;
- if ((i & 1) != (gPlayerMonIndex & 1))
- sub_8131074();
+ if ((i & 1) != (sBank_AI & 1))
+ RecordLastUsedMoveByTarget();
//_08130D90
AI_THINKING_STRUCT->unk11 = 0;
AI_THINKING_STRUCT->unk1 = 0;
@@ -329,7 +541,7 @@ u8 sub_8130CF4(void)
r5 = 1;
for (j = 1; j < 4; j++)
{
- if (gBattleMons[gPlayerMonIndex].moves[j] != 0)
+ if (gBattleMons[sBank_AI].moves[j] != 0)
{
if (sp10[0] == AI_THINKING_STRUCT->score[j])
{
@@ -349,7 +561,7 @@ u8 sub_8130CF4(void)
spC[i] = sp14[Random() % r5];
//asm("":::"r3");
sp0[i] = sp10[0];
- if (i == (gPlayerMonIndex ^ 2) && sp0[i] < 100)
+ if (i == (sBank_AI ^ 2) && sp0[i] < 100)
sp0[i] = -1;
}
}
@@ -383,7 +595,7 @@ u8 sub_8130CF4(void)
}
#else
__attribute__((naked))
-u8 sub_8130CF4(void)
+static u8 BattleAI_ChooseMoveOrAction_Doubles(void)
{
asm(".syntax unified\n\
push {r4-r7,lr}\n\
@@ -403,7 +615,7 @@ u8 sub_8130CF4(void)
str r1, [sp, 0x20]\n\
mov r10, sp\n\
_08130D14:\n\
- ldr r0, =gPlayerMonIndex\n\
+ ldr r0, =sBank_AI\n\
ldrb r0, [r0]\n\
cmp r8, r0\n\
beq _08130D2E\n\
@@ -451,12 +663,12 @@ _08130D76:\n\
movs r1, 0x1\n\
mov r2, r8\n\
ands r2, r1\n\
- ldr r0, =gPlayerMonIndex\n\
+ ldr r0, =sBank_AI\n\
ldrb r0, [r0]\n\
ands r1, r0\n\
cmp r2, r1\n\
beq _08130D90\n\
- bl sub_8131074\n\
+ bl RecordLastUsedMoveByTarget\n\
_08130D90:\n\
ldr r2, =gBattleResources\n\
ldr r0, [r2]\n\
@@ -529,7 +741,7 @@ _08130E10:\n\
movs r5, 0x1\n\
movs r3, 0x1\n\
adds r6, r1, 0\n\
- ldr r0, =gPlayerMonIndex\n\
+ ldr r0, =sBank_AI\n\
ldrb r1, [r0]\n\
movs r0, 0x58\n\
muls r0, r1\n\
@@ -590,7 +802,7 @@ _08130E72:\n\
ldrb r2, [r6]\n\
mov r0, r10\n\
strh r2, [r0]\n\
- ldr r0, =gPlayerMonIndex\n\
+ ldr r0, =sBank_AI\n\
ldrb r1, [r0]\n\
movs r0, 0x2\n\
eors r0, r1\n\
@@ -678,7 +890,7 @@ _08130EFE:\n\
}
#endif
-void BattleAI_DoAIProcessing(void)
+static void BattleAI_DoAIProcessing(void)
{
while (AI_THINKING_STRUCT->aiState != AIState_FinishedProcessing)
{
@@ -687,14 +899,14 @@ void BattleAI_DoAIProcessing(void)
case AIState_DoNotProcess: //Needed to match.
break;
case AIState_SettingUp:
- gAIScriptPtr = gUnknown_082DBEF8[AI_THINKING_STRUCT->aiLogicId]; // set AI ptr to logic ID.
- if (gBattleMons[gPlayerMonIndex].pp[AI_THINKING_STRUCT->movesetIndex] == 0)
+ gAIScriptPtr = gBattleAI_ScriptsTable[AI_THINKING_STRUCT->aiLogicId]; // set AI ptr to logic ID.
+ if (gBattleMons[sBank_AI].pp[AI_THINKING_STRUCT->movesetIndex] == 0)
{
AI_THINKING_STRUCT->moveConsidered = 0;
}
else
{
- AI_THINKING_STRUCT->moveConsidered = gBattleMons[gPlayerMonIndex].moves[AI_THINKING_STRUCT->movesetIndex];
+ AI_THINKING_STRUCT->moveConsidered = gBattleMons[sBank_AI].moves[AI_THINKING_STRUCT->movesetIndex];
}
AI_THINKING_STRUCT->aiState++;
break;
@@ -704,70 +916,70 @@ void BattleAI_DoAIProcessing(void)
else
{
AI_THINKING_STRUCT->score[AI_THINKING_STRUCT->movesetIndex] = 0;
- AI_THINKING_STRUCT->aiAction |= 1;
+ AI_THINKING_STRUCT->aiAction |= AI_ACTION_DONE;
}
- if (AI_THINKING_STRUCT->aiAction & 1)
+ if (AI_THINKING_STRUCT->aiAction & AI_ACTION_DONE)
{
AI_THINKING_STRUCT->movesetIndex++;
- if (AI_THINKING_STRUCT->movesetIndex < 4 && !(AI_THINKING_STRUCT->aiAction & 8))
+ if (AI_THINKING_STRUCT->movesetIndex < 4 && !(AI_THINKING_STRUCT->aiAction & AI_ACTION_DO_NOT_ATTACK))
AI_THINKING_STRUCT->aiState = AIState_SettingUp;
else
AI_THINKING_STRUCT->aiState++;
- AI_THINKING_STRUCT->aiAction &= 0xFE;
+ AI_THINKING_STRUCT->aiAction &= ~(AI_ACTION_DONE);
}
break;
}
}
}
-void sub_8131074(void)
+static void RecordLastUsedMoveByTarget(void)
{
s32 i;
for (i = 0; i < 4; i++)
{
- if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] == gUnknown_02024248[gBankTarget])
+ if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] == gLastUsedMovesByBanks[gBankTarget])
break;
- if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] != gUnknown_02024248[gBankTarget] //HACK: This redundant condition is a hack to make the asm match.
+ if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] != gLastUsedMovesByBanks[gBankTarget] //HACK: This redundant condition is a hack to make the asm match.
&& gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] == 0)
{
- gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] = gUnknown_02024248[gBankTarget];
+ gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] = gLastUsedMovesByBanks[gBankTarget];
break;
}
}
}
-void sub_81310F0(u8 a)
+void ClearBankMoveHistory(u8 bank)
{
s32 i;
for (i = 0; i < 4; i++)
- gBattleResources->battleHistory->usedMoves[a].moves[i] = 0;
+ gBattleResources->battleHistory->usedMoves[bank].moves[i] = 0;
}
-void RecordAbilityBattle(u8 a, u8 b)
+void RecordAbilityBattle(u8 bank, u8 abilityId)
{
- gBattleResources->battleHistory->abilities[a] = b;
+ gBattleResources->battleHistory->abilities[bank] = abilityId;
}
-void sub_8131130(u8 a)
+void ClearBankAbilityHistory(u8 bank)
{
- gBattleResources->battleHistory->abilities[a] = 0;
+ gBattleResources->battleHistory->abilities[bank] = 0;
}
-void b_history__record_item_x12_of_player(u8 a, u8 b)
+void RecordItemEffectBattle(u8 bank, u8 itemEffect)
{
- gBattleResources->battleHistory->itemEffects[a] = b;
+ gBattleResources->battleHistory->itemEffects[bank] = itemEffect;
}
-void sub_8131160(u8 a)
+void ClearBankItemEffectHistory(u8 bank)
{
- gBattleResources->battleHistory->itemEffects[a] = 0;
+ gBattleResources->battleHistory->itemEffects[bank] = 0;
}
-void BattleAICmd_if_random_less_than(void)
+static void BattleAICmd_if_random_less_than(void)
{
u16 random = Random();
@@ -777,7 +989,7 @@ void BattleAICmd_if_random_less_than(void)
gAIScriptPtr += 6;
}
-void BattleAICmd_if_random_greater_than(void)
+static void BattleAICmd_if_random_greater_than(void)
{
u16 random = Random();
@@ -787,7 +999,7 @@ void BattleAICmd_if_random_greater_than(void)
gAIScriptPtr += 6;
}
-void BattleAICmd_if_random_equal(void)
+static void BattleAICmd_if_random_equal(void)
{
u16 random = Random();
@@ -797,7 +1009,7 @@ void BattleAICmd_if_random_equal(void)
gAIScriptPtr += 6;
}
-void BattleAICmd_if_random_not_equal(void)
+static void BattleAICmd_if_random_not_equal(void)
{
u16 random = Random();
@@ -807,7 +1019,7 @@ void BattleAICmd_if_random_not_equal(void)
gAIScriptPtr += 6;
}
-void BattleAICmd_score(void)
+static void BattleAICmd_score(void)
{
AI_THINKING_STRUCT->score[AI_THINKING_STRUCT->movesetIndex] += gAIScriptPtr[1]; // add the result to the array of the move consider's score.
@@ -817,12 +1029,12 @@ void BattleAICmd_score(void)
gAIScriptPtr += 2; // AI return.
}
-void BattleAICmd_if_hp_less_than(void)
+static void BattleAICmd_if_hp_less_than(void)
{
u16 index;
if (gAIScriptPtr[1] == USER)
- index = gPlayerMonIndex;
+ index = sBank_AI;
else
index = gBankTarget;
@@ -832,12 +1044,12 @@ void BattleAICmd_if_hp_less_than(void)
gAIScriptPtr += 7;
}
-void BattleAICmd_if_hp_more_than(void)
+static void BattleAICmd_if_hp_more_than(void)
{
u16 index;
if (gAIScriptPtr[1] == USER)
- index = gPlayerMonIndex;
+ index = sBank_AI;
else
index = gBankTarget;
@@ -847,12 +1059,12 @@ void BattleAICmd_if_hp_more_than(void)
gAIScriptPtr += 7;
}
-void BattleAICmd_if_hp_equal(void)
+static void BattleAICmd_if_hp_equal(void)
{
u16 index;
if (gAIScriptPtr[1] == USER)
- index = gPlayerMonIndex;
+ index = sBank_AI;
else
index = gBankTarget;
@@ -862,12 +1074,12 @@ void BattleAICmd_if_hp_equal(void)
gAIScriptPtr += 7;
}
-void BattleAICmd_if_hp_not_equal(void)
+static void BattleAICmd_if_hp_not_equal(void)
{
u16 index;
if (gAIScriptPtr[1] == USER)
- index = gPlayerMonIndex;
+ index = sBank_AI;
else
index = gBankTarget;
@@ -877,13 +1089,13 @@ void BattleAICmd_if_hp_not_equal(void)
gAIScriptPtr += 7;
}
-void BattleAICmd_if_status(void)
+static void BattleAICmd_if_status(void)
{
u16 index;
u32 arg;
if (gAIScriptPtr[1] == USER)
- index = gPlayerMonIndex;
+ index = sBank_AI;
else
index = gBankTarget;
@@ -895,13 +1107,13 @@ void BattleAICmd_if_status(void)
gAIScriptPtr += 10;
}
-void BattleAICmd_if_not_status(void)
+static void BattleAICmd_if_not_status(void)
{
u16 index;
u32 arg;
if (gAIScriptPtr[1] == USER)
- index = gPlayerMonIndex;
+ index = sBank_AI;
else
index = gBankTarget;
@@ -913,13 +1125,13 @@ void BattleAICmd_if_not_status(void)
gAIScriptPtr += 10;
}
-void BattleAICmd_if_status2(void)
+static void BattleAICmd_if_status2(void)
{
u16 index;
u32 arg;
if (gAIScriptPtr[1] == USER)
- index = gPlayerMonIndex;
+ index = sBank_AI;
else
index = gBankTarget;
@@ -931,13 +1143,13 @@ void BattleAICmd_if_status2(void)
gAIScriptPtr += 10;
}
-void BattleAICmd_if_not_status2(void)
+static void BattleAICmd_if_not_status2(void)
{
u16 index;
u32 arg;
if (gAIScriptPtr[1] == USER)
- index = gPlayerMonIndex;
+ index = sBank_AI;
else
index = gBankTarget;
@@ -949,13 +1161,13 @@ void BattleAICmd_if_not_status2(void)
gAIScriptPtr += 10;
}
-void BattleAICmd_if_status3(void)
+static void BattleAICmd_if_status3(void)
{
u16 index;
u32 arg;
if (gAIScriptPtr[1] == USER)
- index = gPlayerMonIndex;
+ index = sBank_AI;
else
index = gBankTarget;
@@ -967,13 +1179,13 @@ void BattleAICmd_if_status3(void)
gAIScriptPtr += 10;
}
-void BattleAICmd_if_not_status3(void)
+static void BattleAICmd_if_not_status3(void)
{
u16 index;
u32 arg;
if (gAIScriptPtr[1] == USER)
- index = gPlayerMonIndex;
+ index = sBank_AI;
else
index = gBankTarget;
@@ -985,45 +1197,45 @@ void BattleAICmd_if_not_status3(void)
gAIScriptPtr += 10;
}
-void BattleAICmd_if_status4(void)
+static void BattleAICmd_if_side_affecting(void)
{
u16 index;
u32 arg1, arg2;
if (gAIScriptPtr[1] == USER)
- index = gPlayerMonIndex;
+ index = sBank_AI;
else
index = gBankTarget;
arg1 = GetBankIdentity(index) & 1;
arg2 = AIScriptRead32(gAIScriptPtr + 2);
- if ((gUnknown_0202428E[arg1] & arg2) != 0)
+ if ((gSideAffecting[arg1] & arg2) != 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
else
gAIScriptPtr += 10;
}
-void BattleAICmd_if_not_status4(void)
+static void BattleAICmd_if_not_side_affecting(void)
{
u16 index;
u32 arg1, arg2;
if (gAIScriptPtr[1] == USER)
- index = gPlayerMonIndex;
+ index = sBank_AI;
else
index = gBankTarget;
arg1 = GetBankIdentity(index) & 1;
arg2 = AIScriptRead32(gAIScriptPtr + 2);
- if ((gUnknown_0202428E[arg1] & arg2) == 0)
+ if ((gSideAffecting[arg1] & arg2) == 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
else
gAIScriptPtr += 10;
}
-void BattleAICmd_if_less_than(void)
+static void BattleAICmd_if_less_than(void)
{
if (AI_THINKING_STRUCT->funcResult < gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
@@ -1031,7 +1243,7 @@ void BattleAICmd_if_less_than(void)
gAIScriptPtr += 6;
}
-void BattleAICmd_if_more_than(void)
+static void BattleAICmd_if_more_than(void)
{
if (AI_THINKING_STRUCT->funcResult > gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
@@ -1039,7 +1251,7 @@ void BattleAICmd_if_more_than(void)
gAIScriptPtr += 6;
}
-void BattleAICmd_if_equal(void)
+static void BattleAICmd_if_equal(void)
{
if (AI_THINKING_STRUCT->funcResult == gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
@@ -1047,7 +1259,7 @@ void BattleAICmd_if_equal(void)
gAIScriptPtr += 6;
}
-void BattleAICmd_if_not_equal(void)
+static void BattleAICmd_if_not_equal(void)
{
if (AI_THINKING_STRUCT->funcResult != gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
@@ -1055,7 +1267,7 @@ void BattleAICmd_if_not_equal(void)
gAIScriptPtr += 6;
}
-void BattleAICmd_if_less_than_32(void)
+static void BattleAICmd_if_less_than_32(void)
{
u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
@@ -1065,7 +1277,7 @@ void BattleAICmd_if_less_than_32(void)
gAIScriptPtr += 9;
}
-void BattleAICmd_if_more_than_32(void)
+static void BattleAICmd_if_more_than_32(void)
{
u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
@@ -1075,7 +1287,7 @@ void BattleAICmd_if_more_than_32(void)
gAIScriptPtr += 9;
}
-void BattleAICmd_if_equal_32(void)
+static void BattleAICmd_if_equal_32(void)
{
u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
@@ -1085,7 +1297,7 @@ void BattleAICmd_if_equal_32(void)
gAIScriptPtr += 9;
}
-void BattleAICmd_if_not_equal_32(void)
+static void BattleAICmd_if_not_equal_32(void)
{
u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
@@ -1095,7 +1307,7 @@ void BattleAICmd_if_not_equal_32(void)
gAIScriptPtr += 9;
}
-void BattleAICmd_if_move(void)
+static void BattleAICmd_if_move(void)
{
u16 move = AIScriptRead16(gAIScriptPtr + 1);
@@ -1105,7 +1317,7 @@ void BattleAICmd_if_move(void)
gAIScriptPtr += 7;
}
-void BattleAICmd_if_not_move(void)
+static void BattleAICmd_if_not_move(void)
{
u16 move = AIScriptRead16(gAIScriptPtr + 1);
@@ -1115,7 +1327,7 @@ void BattleAICmd_if_not_move(void)
gAIScriptPtr += 7;
}
-void BattleAICmd_if_in_bytes(void)
+static void BattleAICmd_if_in_bytes(void)
{
u8 *ptr = AIScriptReadPtr(gAIScriptPtr + 1);
@@ -1131,7 +1343,7 @@ void BattleAICmd_if_in_bytes(void)
gAIScriptPtr += 9;
}
-void BattleAICmd_if_not_in_bytes(void)
+static void BattleAICmd_if_not_in_bytes(void)
{
u8 *ptr = AIScriptReadPtr(gAIScriptPtr + 1);
@@ -1147,7 +1359,7 @@ void BattleAICmd_if_not_in_bytes(void)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
}
-void BattleAICmd_if_in_words(void)
+static void BattleAICmd_if_in_words(void)
{
u16 *ptr = (u16 *)AIScriptReadPtr(gAIScriptPtr + 1);
@@ -1163,7 +1375,7 @@ void BattleAICmd_if_in_words(void)
gAIScriptPtr += 9;
}
-void BattleAICmd_if_not_in_words(void)
+static void BattleAICmd_if_not_in_words(void)
{
u16 *ptr = (u16 *)AIScriptReadPtr(gAIScriptPtr + 1);
@@ -1179,14 +1391,14 @@ void BattleAICmd_if_not_in_words(void)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
}
-void BattleAICmd_if_user_can_damage(void)
+static void BattleAICmd_if_user_can_damage(void)
{
s32 i;
for (i = 0; i < 4; i++)
{
- if (gBattleMons[gPlayerMonIndex].moves[i] != 0
- && gBattleMoves[gBattleMons[gPlayerMonIndex].moves[i]].power != 0)
+ if (gBattleMons[sBank_AI].moves[i] != 0
+ && gBattleMoves[gBattleMons[sBank_AI].moves[i]].power != 0)
break;
}
if (i == 4)
@@ -1195,14 +1407,14 @@ void BattleAICmd_if_user_can_damage(void)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
}
-void BattleAICmd_if_user_cant_damage(void)
+static void BattleAICmd_if_user_cant_damage(void)
{
s32 i;
for (i = 0; i < 4; i++)
{
- if (gBattleMons[gPlayerMonIndex].moves[i] != 0
- && gBattleMoves[gBattleMons[gPlayerMonIndex].moves[i]].power != 0)
+ if (gBattleMons[sBank_AI].moves[i] != 0
+ && gBattleMoves[gBattleMons[sBank_AI].moves[i]].power != 0)
break;
}
if (i != 4)
@@ -1211,26 +1423,26 @@ void BattleAICmd_if_user_cant_damage(void)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
}
-void BattleAICmd_get_turn_count(void)
+static void BattleAICmd_get_turn_count(void)
{
- AI_THINKING_STRUCT->funcResult = gUnknown_03005D10[19];
+ AI_THINKING_STRUCT->funcResult = gBattleResults.battleTurnCounter;
gAIScriptPtr += 1;
}
-void BattleAICmd_get_type(void)
+static void BattleAICmd_get_type(void)
{
u8 typeVar = gAIScriptPtr[1];
switch (typeVar)
{
case 1: // player primary type
- AI_THINKING_STRUCT->funcResult = gBattleMons[gPlayerMonIndex].type1;
+ AI_THINKING_STRUCT->funcResult = gBattleMons[sBank_AI].type1;
break;
case 0: // enemy primary type
AI_THINKING_STRUCT->funcResult = gBattleMons[gBankTarget].type1;
break;
case 3: // player secondary type
- AI_THINKING_STRUCT->funcResult = gBattleMons[gPlayerMonIndex].type2;
+ AI_THINKING_STRUCT->funcResult = gBattleMons[sBank_AI].type2;
break;
case 2: // enemy secondary type
AI_THINKING_STRUCT->funcResult = gBattleMons[gBankTarget].type2;
@@ -1242,28 +1454,27 @@ void BattleAICmd_get_type(void)
gAIScriptPtr += 2;
}
-// util for double battles? whats this doing in the middle of the battle AI macros?
-u8 sub_8131E70(u8 index)
+static u8 BattleAI_GetWantedBank(u8 index)
{
switch (index)
{
- case 1:
- return gPlayerMonIndex;
- case 0:
+ case USER:
+ return sBank_AI;
+ case TARGET:
default:
return gBankTarget;
- case 3:
- return gPlayerMonIndex ^ 2;
- case 2:
+ case USER_PARTNER:
+ return sBank_AI ^ 2;
+ case TARGET_PARTNER:
return gBankTarget ^ 2;
}
}
-void BattleAICmd_unk_5F(void)
+static void BattleAICmd_is_of_type(void)
{
- u8 index = sub_8131E70(gAIScriptPtr[1]);
+ u8 bank = BattleAI_GetWantedBank(gAIScriptPtr[1]);
- if(gBattleMons[index].type1 == gAIScriptPtr[2] || gBattleMons[index].type2 == gAIScriptPtr[2])
+ if(gBattleMons[bank].type1 == gAIScriptPtr[2] || gBattleMons[bank].type2 == gAIScriptPtr[2])
{
AI_THINKING_STRUCT->funcResult = 1;
}
@@ -1275,14 +1486,14 @@ void BattleAICmd_unk_5F(void)
gAIScriptPtr += 3;
}
-void BattleAICmd_get_move_power(void)
+static void BattleAICmd_get_last_used_bank_move_power(void)
{
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power;
gAIScriptPtr += 1;
}
__attribute__((naked)) // not even going to try. if it doesnt match in ruby, it wont match in emerald (yet).
-void BattleAICmd_is_most_powerful_move(void)
+static void BattleAICmd_is_most_powerful_move(void)
{
asm(".syntax unified\n\
push {r4-r7,lr}\n\
@@ -1292,7 +1503,7 @@ void BattleAICmd_is_most_powerful_move(void)
push {r5-r7}\n\
sub sp, 0x14\n\
movs r3, 0\n\
- ldr r0, =gUnknown_085B09C8\n\
+ ldr r0, =sDiscouragedPowerfulMoveEffects\n\
ldrh r1, [r0]\n\
ldr r5, =0x0000ffff\n\
ldr r6, =gBattleMoves\n\
@@ -1307,7 +1518,7 @@ void BattleAICmd_is_most_powerful_move(void)
lsls r0, 2\n\
adds r0, r6\n\
ldrb r4, [r0]\n\
- ldr r1, =gUnknown_085B09C8\n\
+ ldr r1, =sDiscouragedPowerfulMoveEffects\n\
_08131F76:\n\
ldrh r0, [r1]\n\
cmp r4, r0\n\
@@ -1331,7 +1542,7 @@ _08131F86:\n\
b _08132126\n\
_08131F9C:\n\
lsls r0, r3, 1\n\
- ldr r1, =gUnknown_085B09C8\n\
+ ldr r1, =sDiscouragedPowerfulMoveEffects\n\
adds r0, r1\n\
ldrh r3, [r0]\n\
ldr r0, =0x0000ffff\n\
@@ -1339,7 +1550,7 @@ _08131F9C:\n\
beq _08131FAC\n\
b _08132126\n\
_08131FAC:\n\
- ldr r0, =gUnknown_02024400\n\
+ ldr r0, =gDynamicBasePower\n\
movs r1, 0\n\
strh r1, [r0]\n\
ldr r0, =gBattleStruct\n\
@@ -1354,14 +1565,14 @@ _08131FAC:\n\
strb r2, [r0]\n\
movs r6, 0\n\
mov r9, r3\n\
- ldr r2, =gUnknown_085B09C8\n\
+ ldr r2, =sDiscouragedPowerfulMoveEffects\n\
ldrh r2, [r2]\n\
str r2, [sp, 0x10]\n\
_08131FD0:\n\
movs r3, 0\n\
ldr r5, =gBattleMons\n\
lsls r4, r6, 1\n\
- ldr r7, =gPlayerMonIndex\n\
+ ldr r7, =sBank_AI\n\
lsls r0, r6, 2\n\
mov r8, r0\n\
adds r1, r6, 0x1\n\
@@ -1383,7 +1594,7 @@ _08131FD0:\n\
lsls r0, 2\n\
adds r0, r2\n\
ldrb r2, [r0]\n\
- ldr r1, =gUnknown_085B09C8\n\
+ ldr r1, =sDiscouragedPowerfulMoveEffects\n\
_08132004:\n\
ldrh r0, [r1]\n\
cmp r2, r0\n\
@@ -1405,7 +1616,7 @@ _08132014:\n\
cmp r0, 0\n\
beq _081320C0\n\
lsls r0, r3, 1\n\
- ldr r2, =gUnknown_085B09C8\n\
+ ldr r2, =sDiscouragedPowerfulMoveEffects\n\
adds r0, r2\n\
ldrh r0, [r0]\n\
cmp r0, r9\n\
@@ -1424,11 +1635,11 @@ _08132014:\n\
ldrb r0, [r7]\n\
ldr r4, =gBankTarget\n\
ldrb r1, [r4]\n\
- bl sub_8046E7C\n\
+ bl AI_CalcDmg\n\
ldrh r0, [r5]\n\
ldrb r1, [r7]\n\
ldrb r2, [r4]\n\
- bl move_effectiveness_something\n\
+ bl TypeCalc\n\
mov r4, sp\n\
add r4, r8\n\
ldr r2, =gBattleMoveDamage\n\
@@ -1525,17 +1736,17 @@ _08132130:\n\
.syntax divided");
}
-void BattleAICmd_get_move(void)
+static void BattleAICmd_get_last_used_bank_move(void)
{
if (gAIScriptPtr[1] == USER)
- AI_THINKING_STRUCT->funcResult = gUnknown_02024248[gPlayerMonIndex];
+ AI_THINKING_STRUCT->funcResult = gLastUsedMovesByBanks[sBank_AI];
else
- AI_THINKING_STRUCT->funcResult = gUnknown_02024248[gBankTarget];
+ AI_THINKING_STRUCT->funcResult = gLastUsedMovesByBanks[gBankTarget];
gAIScriptPtr += 2;
}
-void BattleAICmd_if_arg_equal(void)
+static void BattleAICmd_if_arg_equal(void)
{
if (gAIScriptPtr[1] == AI_THINKING_STRUCT->funcResult)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
@@ -1543,7 +1754,7 @@ void BattleAICmd_if_arg_equal(void)
gAIScriptPtr += 6;
}
-void BattleAICmd_if_arg_not_equal(void)
+static void BattleAICmd_if_arg_not_equal(void)
{
if (gAIScriptPtr[1] != AI_THINKING_STRUCT->funcResult)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
@@ -1551,41 +1762,41 @@ void BattleAICmd_if_arg_not_equal(void)
gAIScriptPtr += 6;
}
-void BattleAICmd_if_would_go_first(void)
+static void BattleAICmd_if_would_go_first(void)
{
- if (b_first_side(gPlayerMonIndex, gBankTarget, 1) == gAIScriptPtr[1])
+ if (b_first_side(sBank_AI, gBankTarget, 1) == gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
}
-void BattleAICmd_if_would_not_go_first(void)
+static void BattleAICmd_if_would_not_go_first(void)
{
- if (b_first_side(gPlayerMonIndex, gBankTarget, 1) != gAIScriptPtr[1])
+ if (b_first_side(sBank_AI, gBankTarget, 1) != gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
}
-void BattleAICmd_nullsub_2A(void)
+static void BattleAICmd_nullsub_2A(void)
{
}
-void BattleAICmd_nullsub_2B(void)
+static void BattleAICmd_nullsub_2B(void)
{
}
-void BattleAICmd_count_alive_pokemon(void)
+static void BattleAICmd_count_alive_pokemon(void)
{
u8 index;
- u8 var, var2;
+ u8 bankOnField1, bankOnField2;
struct Pokemon *party;
int i;
AI_THINKING_STRUCT->funcResult = 0;
if (gAIScriptPtr[1] == USER)
- index = gPlayerMonIndex;
+ index = sBank_AI;
else
index = gBankTarget;
@@ -1597,19 +1808,19 @@ void BattleAICmd_count_alive_pokemon(void)
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
u32 status;
- var = gBattlePartyID[index][0];
+ bankOnField1 = gBattlePartyID[index];
status = GetBankIdentity(index) ^ 2;
- var2 = gBattlePartyID[GetBankByPlayerAI(status)][0];
+ bankOnField2 = gBattlePartyID[GetBankByPlayerAI(status)];
}
- else
+ else // in singles there's only one bank by side
{
- var = gBattlePartyID[index][0];
- var2 = gBattlePartyID[index][0];
+ bankOnField1 = gBattlePartyID[index];
+ bankOnField2 = gBattlePartyID[index];
}
for (i = 0; i < 6; i++)
{
- if (i != var && i != var2
+ if (i != bankOnField1 && i != bankOnField2
&& GetMonData(&party[i], MON_DATA_HP) != 0
&& GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE
&& GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG)
@@ -1621,24 +1832,24 @@ void BattleAICmd_count_alive_pokemon(void)
gAIScriptPtr += 2;
}
-void BattleAICmd_get_considered_move(void)
+static void BattleAICmd_get_considered_move(void)
{
AI_THINKING_STRUCT->funcResult = AI_THINKING_STRUCT->moveConsidered;
gAIScriptPtr += 1;
}
-void BattleAICmd_get_considered_move_effect(void)
+static void BattleAICmd_get_considered_move_effect(void)
{
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect;
gAIScriptPtr += 1;
}
-void BattleAICmd_get_ability(void)
+static void BattleAICmd_get_ability(void)
{
u8 index;
if (gAIScriptPtr[1] == USER)
- index = gPlayerMonIndex;
+ index = sBank_AI;
else
index = gBankTarget;
@@ -1666,7 +1877,7 @@ void BattleAICmd_get_ability(void)
if (gBaseStats[gBattleMons[index].species].ability2 != ABILITY_NONE)
{
// AI has no knowledge of opponent, so it guesses which ability.
- if(Random() & 1)
+ if (Random() & 1)
{
AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[index].species].ability1;
}
@@ -1694,90 +1905,76 @@ void BattleAICmd_get_ability(void)
}
#ifdef NONMATCHING
-void tai60_unk(void)
+static void BattleAICmd_check_ability(void)
{
- u8 index = sub_8131E70(gAIScriptPtr[1]);
- u8 arg2 = gAIScriptPtr[2];
- u8 var;
+ u8 bank = BattleAI_GetWantedBank(gAIScriptPtr[1]);
+ u8 ability = gAIScriptPtr[2];
- if(gAIScriptPtr[1] == 0 || gAIScriptPtr[1] == 2)
+ if (gAIScriptPtr[1] == TARGET || gAIScriptPtr[1] == TARGET_PARTNER)
{
- // _0813253A
- if(BATTLE_HISTORY->abilities[index] != 0)
+ if (BATTLE_HISTORY->abilities[bank] != 0)
{
- var = BATTLE_HISTORY->abilities[index];
- AI_THINKING_STRUCT->funcResult = var;
+ ability = BATTLE_HISTORY->abilities[bank];
+ AI_THINKING_STRUCT->funcResult = ability;
}
- else
+ // abilities that prevent fleeing.
+ else if (gBattleMons[bank].ability == ABILITY_SHADOW_TAG
+ || gBattleMons[bank].ability == ABILITY_MAGNET_PULL
+ || gBattleMons[bank].ability == ABILITY_ARENA_TRAP)
{
- // _0813255C
- if (gBattleMons[index].ability == ABILITY_SHADOW_TAG
- || gBattleMons[index].ability == ABILITY_MAGNET_PULL
- || gBattleMons[index].ability == ABILITY_ARENA_TRAP)
- {
- var = gBattleMons[index].ability;
- }
- else
+ ability = gBattleMons[bank].ability;
+ }
+ else if (gBaseStats[gBattleMons[bank].species].ability1 != ABILITY_NONE)
+ {
+ if (gBaseStats[gBattleMons[bank].species].ability2 != ABILITY_NONE)
{
- // _08132588
- if (gBaseStats[gBattleMons[index].species].ability1 != ABILITY_NONE)
+ if (gBaseStats[gBattleMons[bank].species].ability1 != ability
+ && gBaseStats[gBattleMons[bank].species].ability2 != ability)
{
- if (gBaseStats[gBattleMons[index].species].ability2 != ABILITY_NONE)
- {
- if(gBaseStats[gBattleMons[index].species].ability1 != arg2 && gBaseStats[gBattleMons[index].species].ability2 != arg2)
- {
- var = 2;
- }
- else
- {
- var = gBaseStats[gBattleMons[index].species].ability1;
- }
- }
- else
- {
- // _081325B4
- var = gBaseStats[gBattleMons[index].species].ability1;
- }
+ ability = gBaseStats[gBattleMons[bank].species].ability1;
}
else
- {
- // _081325B8
- var = gBaseStats[gBattleMons[index].species].ability2;
- }
+ ability = 0;
+ }
+ else
+ {
+ ability = gBaseStats[gBattleMons[bank].species].ability1;
}
}
+ else
+ {
+ ability = gBaseStats[gBattleMons[bank].species].ability2; // AI cant actually reach this part since every mon has at least 1 ability.
+ }
}
else
{
- // _081325BC
- var = gBattleMons[index].ability;
+ // The AI knows its own or partner's ability.
+ ability = gBattleMons[bank].ability;
}
-
- // _081325CA
- if(var == ABILITY_NONE)
+ if (ability == 0)
{
- AI_THINKING_STRUCT->funcResult = 2;
+ AI_THINKING_STRUCT->funcResult = 2; // unable to answer
}
- else if(var == arg2)
+ else if (ability == gAIScriptPtr[2])
{
- AI_THINKING_STRUCT->funcResult = 1;
+ AI_THINKING_STRUCT->funcResult = 1; // pokemon has the ability we wanted to check
}
else
{
- AI_THINKING_STRUCT->funcResult = 0;
+ AI_THINKING_STRUCT->funcResult = 0; // pokemon doesn't have the ability we wanted to check
}
gAIScriptPtr += 3;
}
#else
__attribute__((naked))
-void tai60_unk(void)
+static void BattleAICmd_check_ability(void)
{
asm(".syntax unified\n\
push {r4-r6,lr}\n\
ldr r4, =gAIScriptPtr\n\
ldr r0, [r4]\n\
ldrb r0, [r0, 0x1]\n\
- bl sub_8131E70\n\
+ bl BattleAI_GetWantedBank\n\
lsls r0, 24\n\
lsrs r5, r0, 24\n\
ldr r0, [r4]\n\
@@ -1900,13 +2097,15 @@ _08132608:\n\
}
#endif
-void BattleAICmd_get_highest_possible_damage(void)
+static void BattleAICmd_get_highest_type_effectiveness(void)
{
s32 i;
+ u8* dynamicMoveType;
- gUnknown_02024400 = 0;
- gBattleStruct[0x13] = 0;
- gBattleScripting[0xE] = 1;
+ gDynamicBasePower = 0;
+ dynamicMoveType = &gBattleStruct->dynamicMoveType;
+ *dynamicMoveType = 0;
+ gBattleScripting.dmgMultiplier = 1;
gBattleMoveFlags = 0;
gCritMultiplier = 1;
AI_THINKING_STRUCT->funcResult = 0;
@@ -1914,11 +2113,11 @@ void BattleAICmd_get_highest_possible_damage(void)
for (i = 0; i < 4; i++)
{
gBattleMoveDamage = 40;
- gCurrentMove = gBattleMons[gPlayerMonIndex].moves[i];
+ gCurrentMove = gBattleMons[sBank_AI].moves[i];
if (gCurrentMove)
{
- move_effectiveness_something(gCurrentMove, gPlayerMonIndex, gBankTarget);
+ TypeCalc(gCurrentMove, sBank_AI, gBankTarget);
// reduce by 1/3.
if (gBattleMoveDamage == 120)
@@ -1930,7 +2129,7 @@ void BattleAICmd_get_highest_possible_damage(void)
if (gBattleMoveDamage == 15)
gBattleMoveDamage = 10;
- if (gBattleMoveFlags & 8) // if it's a status move, it wont do anything.
+ if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED)
gBattleMoveDamage = 0;
if (AI_THINKING_STRUCT->funcResult < gBattleMoveDamage)
@@ -1940,20 +2139,20 @@ void BattleAICmd_get_highest_possible_damage(void)
gAIScriptPtr += 1;
}
-void BattleAICmd_if_damage_bonus(void)
+static void BattleAICmd_if_type_effectiveness(void)
{
u8 damageVar;
- gUnknown_02024400 = 0;
- gBattleStruct[0x13] = 0;
- gBattleScripting[0xE] = 1;
+ gDynamicBasePower = 0;
+ gBattleStruct->dynamicMoveType = 0;
+ gBattleScripting.dmgMultiplier = 1;
gBattleMoveFlags = 0;
gCritMultiplier = 1;
gBattleMoveDamage = 40;
gCurrentMove = AI_THINKING_STRUCT->moveConsidered;
- move_effectiveness_something(gCurrentMove, gPlayerMonIndex, gBankTarget);
+ TypeCalc(gCurrentMove, sBank_AI, gBankTarget);
if (gBattleMoveDamage == 120)
gBattleMoveDamage = 80;
@@ -1964,7 +2163,7 @@ void BattleAICmd_if_damage_bonus(void)
if (gBattleMoveDamage == 15)
gBattleMoveDamage = 10;
- if (gBattleMoveFlags & 8)
+ if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED)
gBattleMoveDamage = 0;
// store gBattleMoveDamage in a u8 variable because gAIScriptPtr[1] is a u8.
@@ -1976,15 +2175,15 @@ void BattleAICmd_if_damage_bonus(void)
gAIScriptPtr += 6;
}
-void BattleAICmd_nullsub_32(void)
+static void BattleAICmd_nullsub_32(void)
{
}
-void BattleAICmd_nullsub_33(void)
+static void BattleAICmd_nullsub_33(void)
{
}
-void BattleAICmd_if_status_in_party(void)
+static void BattleAICmd_if_status_in_party(void)
{
struct Pokemon *party;
int i;
@@ -1994,7 +2193,7 @@ void BattleAICmd_if_status_in_party(void)
switch(gAIScriptPtr[1])
{
case 1:
- index = gPlayerMonIndex;
+ index = sBank_AI;
break;
default:
index = gBankTarget;
@@ -2021,7 +2220,7 @@ void BattleAICmd_if_status_in_party(void)
gAIScriptPtr += 10;
}
-void BattleAICmd_if_status_not_in_party(void)
+static void BattleAICmd_if_status_not_in_party(void)
{
struct Pokemon *party;
int i;
@@ -2031,7 +2230,7 @@ void BattleAICmd_if_status_not_in_party(void)
switch(gAIScriptPtr[1])
{
case 1:
- index = gPlayerMonIndex;
+ index = sBank_AI;
break;
default:
index = gBankTarget;
@@ -2057,21 +2256,21 @@ void BattleAICmd_if_status_not_in_party(void)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
}
-void BattleAICmd_get_weather(void)
+static void BattleAICmd_get_weather(void)
{
- if (gBattleWeather & 7)
+ if (gBattleWeather & WEATHER_RAIN_ANY)
AI_THINKING_STRUCT->funcResult = 1;
- if (gBattleWeather & 0x18)
+ if (gBattleWeather & WEATHER_SANDSTORM_ANY)
AI_THINKING_STRUCT->funcResult = 2;
- if (gBattleWeather & 0x60)
+ if (gBattleWeather & WEATHER_SUN_ANY)
AI_THINKING_STRUCT->funcResult = 0;
- if (gBattleWeather & 0x80)
+ if (gBattleWeather & WEATHER_HAIL_ANY)
AI_THINKING_STRUCT->funcResult = 3;
gAIScriptPtr += 1;
}
-void BattleAICmd_if_effect(void)
+static void BattleAICmd_if_effect(void)
{
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect == gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
@@ -2079,7 +2278,7 @@ void BattleAICmd_if_effect(void)
gAIScriptPtr += 6;
}
-void BattleAICmd_if_not_effect(void)
+static void BattleAICmd_if_not_effect(void)
{
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect != gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
@@ -2087,67 +2286,67 @@ void BattleAICmd_if_not_effect(void)
gAIScriptPtr += 6;
}
-void BattleAICmd_if_stat_level_less_than(void)
+static void BattleAICmd_if_stat_level_less_than(void)
{
- u32 party;
+ u32 bank;
if (gAIScriptPtr[1] == USER)
- party = gPlayerMonIndex;
+ bank = sBank_AI;
else
- party = gBankTarget;
+ bank = gBankTarget;
- if (gBattleMons[party].statStages[gAIScriptPtr[2]] < gAIScriptPtr[3])
+ if (gBattleMons[bank].statStages[gAIScriptPtr[2]] < gAIScriptPtr[3])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 4);
else
gAIScriptPtr += 8;
}
-void BattleAICmd_if_stat_level_more_than(void)
+static void BattleAICmd_if_stat_level_more_than(void)
{
- u32 party;
+ u32 bank;
if (gAIScriptPtr[1] == USER)
- party = gPlayerMonIndex;
+ bank = sBank_AI;
else
- party = gBankTarget;
+ bank = gBankTarget;
- if (gBattleMons[party].statStages[gAIScriptPtr[2]] > gAIScriptPtr[3])
+ if (gBattleMons[bank].statStages[gAIScriptPtr[2]] > gAIScriptPtr[3])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 4);
else
gAIScriptPtr += 8;
}
-void BattleAICmd_if_stat_level_equal(void)
+static void BattleAICmd_if_stat_level_equal(void)
{
- u32 party;
+ u32 bank;
if (gAIScriptPtr[1] == USER)
- party = gPlayerMonIndex;
+ bank = sBank_AI;
else
- party = gBankTarget;
+ bank = gBankTarget;
- if (gBattleMons[party].statStages[gAIScriptPtr[2]] == gAIScriptPtr[3])
+ if (gBattleMons[bank].statStages[gAIScriptPtr[2]] == gAIScriptPtr[3])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 4);
else
gAIScriptPtr += 8;
}
-void BattleAICmd_if_stat_level_not_equal(void)
+static void BattleAICmd_if_stat_level_not_equal(void)
{
- u32 party;
+ u32 bank;
if (gAIScriptPtr[1] == USER)
- party = gPlayerMonIndex;
+ bank = sBank_AI;
else
- party = gBankTarget;
+ bank = gBankTarget;
- if (gBattleMons[party].statStages[gAIScriptPtr[2]] != gAIScriptPtr[3])
+ if (gBattleMons[bank].statStages[gAIScriptPtr[2]] != gAIScriptPtr[3])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 4);
else
gAIScriptPtr += 8;
}
-void BattleAICmd_if_can_faint(void)
+static void BattleAICmd_if_can_faint(void)
{
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power < 2)
{
@@ -2155,16 +2354,16 @@ void BattleAICmd_if_can_faint(void)
return;
}
- gUnknown_02024400 = 0;
- gBattleStruct[0x13] = 0;
- gBattleScripting[0xE] = 1;
+ gDynamicBasePower = 0;
+ gBattleStruct->dynamicMoveType = 0;
+ gBattleScripting.dmgMultiplier = 1;
gBattleMoveFlags = 0;
gCritMultiplier = 1;
gCurrentMove = AI_THINKING_STRUCT->moveConsidered;
- sub_8046E7C(gPlayerMonIndex, gBankTarget);
- move_effectiveness_something(gCurrentMove, gPlayerMonIndex, gBankTarget);
+ AI_CalcDmg(sBank_AI, gBankTarget);
+ TypeCalc(gCurrentMove, sBank_AI, gBankTarget);
- gBattleMoveDamage = gBattleMoveDamage * AI_THINKING_STRUCT->unk18[AI_THINKING_STRUCT->movesetIndex] / 100;
+ gBattleMoveDamage = gBattleMoveDamage * AI_THINKING_STRUCT->simulatedRNG[AI_THINKING_STRUCT->movesetIndex] / 100;
// moves always do at least 1 damage.
if (gBattleMoveDamage == 0)
@@ -2176,7 +2375,7 @@ void BattleAICmd_if_can_faint(void)
gAIScriptPtr += 5;
}
-void BattleAICmd_if_cant_faint(void)
+static void BattleAICmd_if_cant_faint(void)
{
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power < 2)
{
@@ -2184,16 +2383,16 @@ void BattleAICmd_if_cant_faint(void)
return;
}
- gUnknown_02024400 = 0;
- gBattleStruct[0x13] = 0;
- gBattleScripting[0xE] = 1;
+ gDynamicBasePower = 0;
+ gBattleStruct->dynamicMoveType = 0;
+ gBattleScripting.dmgMultiplier = 1;
gBattleMoveFlags = 0;
gCritMultiplier = 1;
gCurrentMove = AI_THINKING_STRUCT->moveConsidered;
- sub_8046E7C(gPlayerMonIndex, gBankTarget);
- move_effectiveness_something(gCurrentMove, gPlayerMonIndex, gBankTarget);
+ AI_CalcDmg(sBank_AI, gBankTarget);
+ TypeCalc(gCurrentMove, sBank_AI, gBankTarget);
- gBattleMoveDamage = gBattleMoveDamage * AI_THINKING_STRUCT->unk18[AI_THINKING_STRUCT->movesetIndex] / 100;
+ gBattleMoveDamage = gBattleMoveDamage * AI_THINKING_STRUCT->simulatedRNG[AI_THINKING_STRUCT->movesetIndex] / 100;
// this macro is missing the damage 0 = 1 assumption.
@@ -2203,18 +2402,17 @@ void BattleAICmd_if_cant_faint(void)
gAIScriptPtr += 5;
}
-void BattleAICmd_if_has_move(void)
+static void BattleAICmd_if_has_move(void)
{
int i;
u16 *temp_ptr = (u16 *)(gAIScriptPtr + 2);
switch(gAIScriptPtr[1])
{
- case 1:
- // _08132E42
+ case USER:
for (i = 0; i < 4; i++)
{
- if (gBattleMons[gPlayerMonIndex].moves[i] == *temp_ptr)
+ if (gBattleMons[sBank_AI].moves[i] == *temp_ptr)
break;
}
if (i == 4)
@@ -2227,8 +2425,8 @@ void BattleAICmd_if_has_move(void)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 4);
return;
}
- case 3: // new to Emerald
- if(gBattleMons[gPlayerMonIndex ^ 2].hp == 0)
+ case USER_PARTNER:
+ if (gBattleMons[sBank_AI ^ 2].hp == 0)
{
gAIScriptPtr += 8;
return;
@@ -2237,7 +2435,7 @@ void BattleAICmd_if_has_move(void)
{
for (i = 0; i < 4; i++)
{
- if (gBattleMons[gPlayerMonIndex ^ 2].moves[i] == *temp_ptr)
+ if (gBattleMons[sBank_AI ^ 2].moves[i] == *temp_ptr)
break;
}
}
@@ -2251,8 +2449,8 @@ void BattleAICmd_if_has_move(void)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 4);
return;
}
- case 0:
- case 2:
+ case TARGET:
+ case TARGET_PARTNER:
for (i = 0; i < 4; i++)
{
if (BATTLE_HISTORY->usedMoves[gBankTarget].moves[i] == *temp_ptr)
@@ -2271,18 +2469,18 @@ void BattleAICmd_if_has_move(void)
}
}
-void BattleAICmd_if_dont_have_move(void)
+static void BattleAICmd_if_dont_have_move(void)
{
int i;
u16 *temp_ptr = (u16 *)(gAIScriptPtr + 2);
switch(gAIScriptPtr[1])
{
- case 1:
- case 3: // if_dont_have_move does not have the seperate 3 case check in Emerald unlike if_has_move.
+ case USER:
+ case USER_PARTNER: // UB: no separate check for user partner
for (i = 0; i < 4; i++)
{
- if (gBattleMons[gPlayerMonIndex].moves[i] == *temp_ptr)
+ if (gBattleMons[sBank_AI].moves[i] == *temp_ptr)
break;
}
if (i != 4)
@@ -2295,8 +2493,8 @@ void BattleAICmd_if_dont_have_move(void)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 4);
return;
}
- case 0:
- case 2:
+ case TARGET:
+ case TARGET_PARTNER:
for (i = 0; i < 4; i++)
{
if (BATTLE_HISTORY->usedMoves[gBankTarget].moves[i] == *temp_ptr)
@@ -2315,17 +2513,17 @@ void BattleAICmd_if_dont_have_move(void)
}
}
-void BattleAICmd_if_move_effect(void)
+static void BattleAICmd_if_move_effect(void)
{
int i;
switch (gAIScriptPtr[1])
{
- case 1:
- case 3: // _08133044
- for(i = 0; i < 4; i++)
+ case USER:
+ case USER_PARTNER:
+ for (i = 0; i < 4; i++)
{
- if(gBattleMons[gPlayerMonIndex].moves[i] != 0 && gBattleMoves[gBattleMons[gPlayerMonIndex].moves[i]].effect == gAIScriptPtr[2])
+ if(gBattleMons[sBank_AI].moves[i] != 0 && gBattleMoves[gBattleMons[sBank_AI].moves[i]].effect == gAIScriptPtr[2])
break;
}
if (i == 4)
@@ -2333,11 +2531,11 @@ void BattleAICmd_if_move_effect(void)
else
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
break;
- case 0:
- case 2: // _08133090
+ case TARGET:
+ case TARGET_PARTNER:
for (i = 0; i < 4; i++)
{
- if (gBattleMons[gPlayerMonIndex].moves[i] != 0 && gBattleMoves[BATTLE_HISTORY->usedMoves[gBankTarget].moves[i]].effect == gAIScriptPtr[2])
+ if (gBattleMons[sBank_AI].moves[i] != 0 && gBattleMoves[BATTLE_HISTORY->usedMoves[gBankTarget].moves[i]].effect == gAIScriptPtr[2])
break;
}
if (i == 4)
@@ -2348,17 +2546,17 @@ void BattleAICmd_if_move_effect(void)
}
}
-void BattleAICmd_if_not_move_effect(void)
+static void BattleAICmd_if_not_move_effect(void)
{
int i;
switch (gAIScriptPtr[1])
{
- case 1:
- case 3: // _0813313C
- for(i = 0; i < 4; i++)
+ case USER:
+ case USER_PARTNER:
+ for (i = 0; i < 4; i++)
{
- if(gBattleMons[gPlayerMonIndex].moves[i] != 0 && gBattleMoves[gBattleMons[gPlayerMonIndex].moves[i]].effect == gAIScriptPtr[2])
+ if(gBattleMons[sBank_AI].moves[i] != 0 && gBattleMoves[gBattleMons[sBank_AI].moves[i]].effect == gAIScriptPtr[2])
break;
}
if (i != 4)
@@ -2366,8 +2564,8 @@ void BattleAICmd_if_not_move_effect(void)
else
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
break;
- case 0:
- case 2: // _08133188
+ case TARGET:
+ case TARGET_PARTNER:
for (i = 0; i < 4; i++)
{
if (BATTLE_HISTORY->usedMoves[gBankTarget].moves[i] && gBattleMoves[BATTLE_HISTORY->usedMoves[gBankTarget].moves[i]].effect == gAIScriptPtr[2])
@@ -2381,18 +2579,18 @@ void BattleAICmd_if_not_move_effect(void)
}
}
-void BattleAICmd_if_last_move_did_damage(void)
+static void BattleAICmd_if_any_move_disabled_or_encored(void)
{
- u8 index;
+ u8 bank;
if (gAIScriptPtr[1] == USER)
- index = gPlayerMonIndex;
+ bank = sBank_AI;
else
- index = gBankTarget;
+ bank = gBankTarget;
if (gAIScriptPtr[2] == 0)
{
- if (gDisableStructs[index].disabledMove == 0)
+ if (gDisableStructs[bank].disabledMove == 0)
{
gAIScriptPtr += 7;
return;
@@ -2405,7 +2603,7 @@ void BattleAICmd_if_last_move_did_damage(void)
gAIScriptPtr += 7;
return;
}
- else if (gDisableStructs[index].encoredMove != 0)
+ else if (gDisableStructs[bank].encoredMove != 0)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
return;
@@ -2413,11 +2611,11 @@ void BattleAICmd_if_last_move_did_damage(void)
gAIScriptPtr += 7;
}
-void BattleAICmd_if_encored(void)
+static void BattleAICmd_if_curr_move_disabled_or_encored(void)
{
switch (gAIScriptPtr[1])
{
- case 0: // _08109348
+ case 0:
if (gDisableStructs[gActiveBank].disabledMove == AI_THINKING_STRUCT->moveConsidered)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
@@ -2425,7 +2623,7 @@ void BattleAICmd_if_encored(void)
}
gAIScriptPtr += 6;
return;
- case 1: // _08109370
+ case 1:
if (gDisableStructs[gActiveBank].encoredMove == AI_THINKING_STRUCT->moveConsidered)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
@@ -2439,14 +2637,14 @@ void BattleAICmd_if_encored(void)
}
}
-void BattleAICmd_flee(void)
+static void BattleAICmd_flee(void)
{
- AI_THINKING_STRUCT->aiAction |= (AI_ACTION_UNK1 | AI_ACTION_UNK2 | AI_ACTION_UNK4); // what matters is UNK2 being enabled.
+ AI_THINKING_STRUCT->aiAction |= (AI_ACTION_DONE | AI_ACTION_FLEE | AI_ACTION_DO_NOT_ATTACK); // what matters is UNK2 being enabled.
}
-void BattleAICmd_if_random_100(void)
+static void BattleAICmd_if_random_100(void)
{
- u8 safariFleeRate = gBattleStruct[0x7B] * 5; // safari flee rate, from 0-20
+ u8 safariFleeRate = gBattleStruct->field_7B * 5; // safari flee rate, from 0-20
if ((u8)(Random() % 100) < safariFleeRate)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
@@ -2454,198 +2652,202 @@ void BattleAICmd_if_random_100(void)
gAIScriptPtr += 5;
}
-void BattleAICmd_watch(void)
+static void BattleAICmd_watch(void)
{
- AI_THINKING_STRUCT->aiAction |= (AI_ACTION_UNK1 | AI_ACTION_UNK3 | AI_ACTION_UNK4); // what matters is UNK3 being enabled.
+ AI_THINKING_STRUCT->aiAction |= (AI_ACTION_DONE | AI_ACTION_WATCH | AI_ACTION_DO_NOT_ATTACK); // what matters is UNK3 being enabled.
}
-void BattleAICmd_get_hold_effect(void)
+static void BattleAICmd_get_hold_effect(void)
{
- u8 index;
+ u8 bank;
u16 status;
if (gAIScriptPtr[1] == USER)
- index = gPlayerMonIndex;
+ bank = sBank_AI;
else
- index = gBankTarget;
+ bank = gBankTarget;
- if (gActiveBank != index)
+ if (gActiveBank != bank)
{
- AI_THINKING_STRUCT->funcResult = ItemId_GetHoldEffect(BATTLE_HISTORY->itemEffects[index]);
+ AI_THINKING_STRUCT->funcResult = ItemId_GetHoldEffect(BATTLE_HISTORY->itemEffects[bank]);
}
else
- AI_THINKING_STRUCT->funcResult = ItemId_GetHoldEffect(gBattleMons[index].item);
+ AI_THINKING_STRUCT->funcResult = ItemId_GetHoldEffect(gBattleMons[bank].item);
gAIScriptPtr += 2;
}
-void tai62_unk(void)
+static void BattleAICmd_if_holds_item(void)
{
- u8 index = sub_8131E70(gAIScriptPtr[1]);
+ u8 bank = BattleAI_GetWantedBank(gAIScriptPtr[1]);
u16 item;
u8 var1, var2;
- if((index & 1) == (gPlayerMonIndex & 1))
- item = gBattleMons[index].item;
+ if ((bank & 1) == (sBank_AI & 1))
+ item = gBattleMons[bank].item;
else
- item = BATTLE_HISTORY->itemEffects[index];
+ item = BATTLE_HISTORY->itemEffects[bank];
- // strange way of loading a 16-bit argument from the AI command.
+ // UB: doesn't properly read an unaligned u16
var2 = gAIScriptPtr[2];
var1 = gAIScriptPtr[3];
- if((var1 | var2) == item)
+ if ((var1 | var2) == item)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 4);
else
gAIScriptPtr += 8;
}
-void BattleAICmd_get_gender(void)
+static void BattleAICmd_get_gender(void)
{
- u8 index;
+ u8 bank;
if (gAIScriptPtr[1] == USER)
- index = gPlayerMonIndex;
+ bank = sBank_AI;
else
- index = gBankTarget;
+ bank = gBankTarget;
- AI_THINKING_STRUCT->funcResult = pokemon_species_get_gender_info(gBattleMons[index].species, gBattleMons[index].personality);
+ AI_THINKING_STRUCT->funcResult = GetGenderFromSpeciesAndPersonality(gBattleMons[bank].species, gBattleMons[bank].personality);
gAIScriptPtr += 2;
}
-void BattleAICmd_is_first_turn(void)
+static void BattleAICmd_is_first_turn(void)
{
- u8 index;
+ u8 bank;
if (gAIScriptPtr[1] == USER)
- index = gPlayerMonIndex;
+ bank = sBank_AI;
else
- index = gBankTarget;
+ bank = gBankTarget;
- AI_THINKING_STRUCT->funcResult = gDisableStructs[index].isFirstTurn;
+ AI_THINKING_STRUCT->funcResult = gDisableStructs[bank].isFirstTurn;
gAIScriptPtr += 2;
}
-void BattleAICmd_get_stockpile_count(void)
+static void BattleAICmd_get_stockpile_count(void)
{
- u8 index;
+ u8 bank;
if (gAIScriptPtr[1] == USER)
- index = gPlayerMonIndex;
+ bank = sBank_AI;
else
- index = gBankTarget;
+ bank = gBankTarget;
- AI_THINKING_STRUCT->funcResult = gDisableStructs[index].stockpileCounter;
+ AI_THINKING_STRUCT->funcResult = gDisableStructs[bank].stockpileCounter;
gAIScriptPtr += 2;
}
-void BattleAICmd_is_double_battle(void)
+static void BattleAICmd_is_double_battle(void)
{
AI_THINKING_STRUCT->funcResult = gBattleTypeFlags & BATTLE_TYPE_DOUBLE;
gAIScriptPtr += 1;
}
-void BattleAICmd_get_item(void)
+static void BattleAICmd_get_used_held_item(void)
{
- u8 index;
+ u8 bank;
if (gAIScriptPtr[1] == USER)
- index = gPlayerMonIndex;
+ bank = sBank_AI;
else
- index = gBankTarget;
+ bank = gBankTarget;
- // this hack and a half matches. whatever. i dont care. someone else fix this mess later. PS: still cant fix this.
- AI_THINKING_STRUCT->funcResult = gBattleStruct[0xB8 + (index * 2)];
+ // This is likely a leftover from Ruby's code and its ugly ewram access
+ #ifdef NONMATCHING
+ AI_THINKING_STRUCT->funcResult = gBattleStruct->usedHeldItems[bank];
+ #else
+ AI_THINKING_STRUCT->funcResult = *(u8*)((u8*)(gBattleStruct) + 0xB8 + (bank * 2));
+ #endif // NONMATCHING
gAIScriptPtr += 2;
}
-void BattleAICmd_get_move_type_from_result(void)
+static void BattleAICmd_get_move_type_from_result(void)
{
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->funcResult].type;
gAIScriptPtr += 1;
}
-void BattleAICmd_get_move_power_from_result(void)
+static void BattleAICmd_get_move_power_from_result(void)
{
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->funcResult].power;
gAIScriptPtr += 1;
}
-void BattleAICmd_get_move_effect_from_result(void)
+static void BattleAICmd_get_move_effect_from_result(void)
{
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->funcResult].effect;
gAIScriptPtr += 1;
}
-void BattleAICmd_get_protect_count(void)
+static void BattleAICmd_get_protect_count(void)
{
- u8 index;
+ u8 bank;
if (gAIScriptPtr[1] == USER)
- index = gPlayerMonIndex;
+ bank = sBank_AI;
else
- index = gBankTarget;
+ bank = gBankTarget;
- AI_THINKING_STRUCT->funcResult = gDisableStructs[index].protectUses;
+ AI_THINKING_STRUCT->funcResult = gDisableStructs[bank].protectUses;
gAIScriptPtr += 2;
}
-void BattleAICmd_nullsub_52(void)
+static void BattleAICmd_nullsub_52(void)
{
}
-void BattleAICmd_nullsub_53(void)
+static void BattleAICmd_nullsub_53(void)
{
}
-void BattleAICmd_nullsub_54(void)
+static void BattleAICmd_nullsub_54(void)
{
}
-void BattleAICmd_nullsub_55(void)
+static void BattleAICmd_nullsub_55(void)
{
}
-void BattleAICmd_nullsub_56(void)
+static void BattleAICmd_nullsub_56(void)
{
}
-void BattleAICmd_nullsub_57(void)
+static void BattleAICmd_nullsub_57(void)
{
}
-void BattleAICmd_call(void)
+static void BattleAICmd_call(void)
{
- b_mc_stack_push(gAIScriptPtr + 5);
+ AIStackPushVar(gAIScriptPtr + 5);
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
}
-void BattleAICmd_jump(void)
+static void BattleAICmd_jump(void)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
}
-void BattleAICmd_end(void)
+static void BattleAICmd_end(void)
{
- if (b_mc_stack_pop_cursor() == 0)
- AI_THINKING_STRUCT->aiAction |= AI_ACTION_UNK1;
+ if (AIStackPop() == 0)
+ AI_THINKING_STRUCT->aiAction |= AI_ACTION_DONE;
}
-void BattleAICmd_if_level_cond(void)
+static void BattleAICmd_if_level_cond(void)
{
switch (gAIScriptPtr[1])
{
case 0: // greater than
- if (gBattleMons[gPlayerMonIndex].level > gBattleMons[gBankTarget].level)
+ if (gBattleMons[sBank_AI].level > gBattleMons[gBankTarget].level)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
return;
@@ -2653,7 +2855,7 @@ void BattleAICmd_if_level_cond(void)
gAIScriptPtr += 6;
return;
case 1: // less than
- if (gBattleMons[gPlayerMonIndex].level < gBattleMons[gBankTarget].level)
+ if (gBattleMons[sBank_AI].level < gBattleMons[gBankTarget].level)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
return;
@@ -2661,7 +2863,7 @@ void BattleAICmd_if_level_cond(void)
gAIScriptPtr += 6;
return;
case 2: // equal
- if (gBattleMons[gPlayerMonIndex].level == gBattleMons[gBankTarget].level)
+ if (gBattleMons[sBank_AI].level == gBattleMons[gBankTarget].level)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
return;
@@ -2671,7 +2873,7 @@ void BattleAICmd_if_level_cond(void)
}
}
-void BattleAICmd_if_taunted(void)
+static void BattleAICmd_if_target_taunted(void)
{
if (gDisableStructs[gBankTarget].tauntTimer1 != 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
@@ -2679,7 +2881,7 @@ void BattleAICmd_if_taunted(void)
gAIScriptPtr += 5;
}
-void BattleAICmd_if_not_taunted(void)
+static void BattleAICmd_if_target_not_taunted(void)
{
if (gDisableStructs[gBankTarget].tauntTimer1 == 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
@@ -2687,35 +2889,35 @@ void BattleAICmd_if_not_taunted(void)
gAIScriptPtr += 5;
}
-void tai5E_unk(void)
+static void BattleAICmd_if_target_is_ally(void)
{
- if((gPlayerMonIndex & 1) == (gBankTarget & 1))
+ if((sBank_AI & 1) == (gBankTarget & 1))
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
}
-void tai61_unk(void)
+static void BattleAICmd_if_flash_fired(void)
{
- u8 index = sub_8131E70(gAIScriptPtr[1]);
+ u8 index = BattleAI_GetWantedBank(gAIScriptPtr[1]);
- if(gBattleResources->flags->flags[index] & 1)
+ if(gBattleResources->flags->flags[index] & UNKNOWN_FLAG_FLASH_FIRE)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
}
-void b_mc_stack_push(u8 *var)
+static void AIStackPushVar(u8 *var)
{
gBattleResources->AI_ScriptsStack->ptr[gBattleResources->AI_ScriptsStack->size++] = var;
}
-void b_mc_stack_push_cursor(void)
+static void AIStackPushVar_cursor(void)
{
gBattleResources->AI_ScriptsStack->ptr[gBattleResources->AI_ScriptsStack->size++] = gAIScriptPtr;
}
-bool8 b_mc_stack_pop_cursor(void)
+static bool8 AIStackPop(void)
{
if (gBattleResources->AI_ScriptsStack->size != 0)
{
diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c
index be0bb9b6b..105b334f2 100644
--- a/src/calculate_base_damage.c
+++ b/src/calculate_base_damage.c
@@ -17,7 +17,7 @@ extern u8 gCritMultiplier;
extern u16 gBattleWeather;
extern struct BattleEnigmaBerry gEnigmaBerries[];
extern u16 gBattleMovePower;
-extern u16 gTrainerBattleOpponent;
+extern u16 gTrainerBattleOpponent_A;
u8 CountAliveMonsInBattle(u8);
bool8 ShouldGetStatBadgeBoost(u16 flagId, u8 bank);
@@ -109,9 +109,9 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if (attackerHoldEffect == HOLD_EFFECT_CHOICE_BAND)
attack = (150 * attack) / 100;
- if (attackerHoldEffect == HOLD_EFFECT_SOUL_DEW && !(gBattleTypeFlags & (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_FRONTIER)) && (attacker->species == SPECIES_LATIAS || attacker->species == SPECIES_LATIOS))
+ if (attackerHoldEffect == HOLD_EFFECT_SOUL_DEW && !(gBattleTypeFlags & (BATTLE_TYPE_FRONTIER)) && (attacker->species == SPECIES_LATIAS || attacker->species == SPECIES_LATIOS))
spAttack = (150 * spAttack) / 100;
- if (defenderHoldEffect == HOLD_EFFECT_SOUL_DEW && !(gBattleTypeFlags & (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_FRONTIER)) && (defender->species == SPECIES_LATIAS || defender->species == SPECIES_LATIOS))
+ if (defenderHoldEffect == HOLD_EFFECT_SOUL_DEW && !(gBattleTypeFlags & (BATTLE_TYPE_FRONTIER)) && (defender->species == SPECIES_LATIAS || defender->species == SPECIES_LATIOS))
spDefense = (150 * spDefense) / 100;
if (attackerHoldEffect == HOLD_EFFECT_DEEP_SEA_TOOTH && attacker->species == SPECIES_CLAMPERL)
spAttack *= 2;
diff --git a/sym_common.txt b/sym_common.txt
index b3ef89716..f65b575a9 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -209,7 +209,7 @@ gUnknown_03005D00: @ 3005D00
gBattleMainFunc: @ 3005D04
.space 0xC
-gUnknown_03005D10: @ 3005D10
+gBattleResults: @ 3005D10
.space 0x2A
gUnknown_03005D3A: @ 3005D3A
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 3b101e836..1aac871ec 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -434,7 +434,7 @@ gUnknown_02024230: @ 2024230
gUnknown_02024240: @ 2024240
.space 0x8
-gUnknown_02024248: @ 2024248
+gLastUsedMovesByBanks: @ 2024248
.space 0x8
gUnknown_02024250: @ 2024250
@@ -470,7 +470,7 @@ gUnknown_02024288: @ 2024288
gUnknown_0202428C: @ 202428C
.space 0x2
-gUnknown_0202428E: @ 202428E
+gSideAffecting: @ 202428E
.space 0x6
gSideTimers: @ 2024294
@@ -518,7 +518,7 @@ gUnknown_020243FC: @ 20243FC
gUnknown_020243FE: @ 20243FE
.space 0x2
-gUnknown_02024400: @ 2024400
+gDynamicBasePower: @ 2024400
.space 0x2
gUnknown_02024402: @ 2024402
@@ -941,10 +941,10 @@ gUnknown_02038BC6: @ 2038BC6
gUnknown_02038BC8: @ 2038BC8
.space 0x2
-gUnknown_02038BCA: @ 2038BCA
+gTrainerBattleOpponent_A: @ 2038BCA
.space 0x2
-gUnknown_02038BCC: @ 2038BCC
+gTrainerBattleOpponent_B: @ 2038BCC
.space 0x2
gUnknown_02038BCE: @ 2038BCE
@@ -1514,12 +1514,9 @@ gUnknown_0203AB30: @ 203AB30
gUnknown_0203AB34: @ 203AB34
.space 0x4
-gAIScriptPtr: @ 203AB38
- .space 0x4
-
-gPlayerMonIndex: @ 203AB3C
- .space 0x4
-
+ .include "src/battle_ai.o"
+
+.align 2
gUnknown_0203AB40: @ 203AB40
.space 0x8