summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/birch_pc.s265
-rw-r--r--asm/field_specials.s (renamed from asm/rom_810CBB4.s)687
-rw-r--r--asm/hof_pc.s82
-rw-r--r--asm/post_battle_event_funcs.s131
-rw-r--r--asm/time_events.s243
-rw-r--r--ld_script.txt6
-rw-r--r--src/battle_party_menu.c2
7 files changed, 729 insertions, 687 deletions
diff --git a/asm/birch_pc.s b/asm/birch_pc.s
new file mode 100644
index 000000000..2687f29b5
--- /dev/null
+++ b/asm/birch_pc.s
@@ -0,0 +1,265 @@
+ .include "constants/gba_constants.inc"
+ .include "constants/species_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start ScriptGetPokedexInfo
+ScriptGetPokedexInfo: @ 810D43C
+ push {lr}
+ ldr r0, _0810D458 @ =gSpecialVar_0x8004
+ ldrh r0, [r0]
+ cmp r0, 0
+ bne _0810D460
+ movs r0, 0
+ bl GetHoennPokedexCount
+ ldr r1, _0810D45C @ =gSpecialVar_0x8005
+ strh r0, [r1]
+ movs r0, 0x1
+ bl GetHoennPokedexCount
+ b _0810D470
+ .align 2, 0
+_0810D458: .4byte gSpecialVar_0x8004
+_0810D45C: .4byte gSpecialVar_0x8005
+_0810D460:
+ movs r0, 0
+ bl GetNationalPokedexCount
+ ldr r1, _0810D480 @ =gSpecialVar_0x8005
+ strh r0, [r1]
+ movs r0, 0x1
+ bl GetNationalPokedexCount
+_0810D470:
+ ldr r1, _0810D484 @ =gSpecialVar_0x8006
+ strh r0, [r1]
+ bl IsNationalPokedexEnabled
+ lsls r0, 16
+ lsrs r0, 16
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0810D480: .4byte gSpecialVar_0x8005
+_0810D484: .4byte gSpecialVar_0x8006
+ thumb_func_end ScriptGetPokedexInfo
+
+ thumb_func_start GetPokedexRatingText
+GetPokedexRatingText: @ 810D488
+ push {lr}
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r0, 0x9
+ bhi _0810D494
+ b _0810D5EC
+_0810D494:
+ cmp r0, 0x13
+ bhi _0810D4A0
+ ldr r0, _0810D49C @ =gUnknown_081C456A
+ b _0810D5F6
+ .align 2, 0
+_0810D49C: .4byte gUnknown_081C456A
+_0810D4A0:
+ cmp r0, 0x1D
+ bhi _0810D4AC
+ ldr r0, _0810D4A8 @ =gUnknown_081C45B0
+ b _0810D5F6
+ .align 2, 0
+_0810D4A8: .4byte gUnknown_081C45B0
+_0810D4AC:
+ cmp r0, 0x27
+ bhi _0810D4B8
+ ldr r0, _0810D4B4 @ =gUnknown_081C45F9
+ b _0810D5F6
+ .align 2, 0
+_0810D4B4: .4byte gUnknown_081C45F9
+_0810D4B8:
+ cmp r0, 0x31
+ bhi _0810D4C4
+ ldr r0, _0810D4C0 @ =gUnknown_081C4648
+ b _0810D5F6
+ .align 2, 0
+_0810D4C0: .4byte gUnknown_081C4648
+_0810D4C4:
+ cmp r0, 0x3B
+ bhi _0810D4D0
+ ldr r0, _0810D4CC @ =gUnknown_081C467E
+ b _0810D5F6
+ .align 2, 0
+_0810D4CC: .4byte gUnknown_081C467E
+_0810D4D0:
+ cmp r0, 0x45
+ bhi _0810D4DC
+ ldr r0, _0810D4D8 @ =gUnknown_081C46B9
+ b _0810D5F6
+ .align 2, 0
+_0810D4D8: .4byte gUnknown_081C46B9
+_0810D4DC:
+ cmp r0, 0x4F
+ bhi _0810D4E8
+ ldr r0, _0810D4E4 @ =gUnknown_081C46FE
+ b _0810D5F6
+ .align 2, 0
+_0810D4E4: .4byte gUnknown_081C46FE
+_0810D4E8:
+ cmp r0, 0x59
+ bhi _0810D4F4
+ ldr r0, _0810D4F0 @ =gUnknown_081C4747
+ b _0810D5F6
+ .align 2, 0
+_0810D4F0: .4byte gUnknown_081C4747
+_0810D4F4:
+ cmp r0, 0x63
+ bhi _0810D500
+ ldr r0, _0810D4FC @ =gUnknown_081C4780
+ b _0810D5F6
+ .align 2, 0
+_0810D4FC: .4byte gUnknown_081C4780
+_0810D500:
+ cmp r0, 0x6D
+ bhi _0810D50C
+ ldr r0, _0810D508 @ =gUnknown_081C47DF
+ b _0810D5F6
+ .align 2, 0
+_0810D508: .4byte gUnknown_081C47DF
+_0810D50C:
+ cmp r0, 0x77
+ bhi _0810D518
+ ldr r0, _0810D514 @ =gUnknown_081C4828
+ b _0810D5F6
+ .align 2, 0
+_0810D514: .4byte gUnknown_081C4828
+_0810D518:
+ cmp r0, 0x81
+ bhi _0810D524
+ ldr r0, _0810D520 @ =gUnknown_081C4863
+ b _0810D5F6
+ .align 2, 0
+_0810D520: .4byte gUnknown_081C4863
+_0810D524:
+ cmp r0, 0x8B
+ bhi _0810D530
+ ldr r0, _0810D52C @ =gUnknown_081C489C
+ b _0810D5F6
+ .align 2, 0
+_0810D52C: .4byte gUnknown_081C489C
+_0810D530:
+ cmp r0, 0x95
+ bhi _0810D53C
+ ldr r0, _0810D538 @ =gUnknown_081C48EB
+ b _0810D5F6
+ .align 2, 0
+_0810D538: .4byte gUnknown_081C48EB
+_0810D53C:
+ cmp r0, 0x9F
+ bhi _0810D548
+ ldr r0, _0810D544 @ =gUnknown_081C4936
+ b _0810D5F6
+ .align 2, 0
+_0810D544: .4byte gUnknown_081C4936
+_0810D548:
+ cmp r0, 0xA9
+ bhi _0810D554
+ ldr r0, _0810D550 @ =gUnknown_081C49A2
+ b _0810D5F6
+ .align 2, 0
+_0810D550: .4byte gUnknown_081C49A2
+_0810D554:
+ cmp r0, 0xB3
+ bhi _0810D560
+ ldr r0, _0810D55C @ =gUnknown_081C4A06
+ b _0810D5F6
+ .align 2, 0
+_0810D55C: .4byte gUnknown_081C4A06
+_0810D560:
+ cmp r0, 0xBD
+ bhi _0810D56C
+ ldr r0, _0810D568 @ =gUnknown_081C4A4F
+ b _0810D5F6
+ .align 2, 0
+_0810D568: .4byte gUnknown_081C4A4F
+_0810D56C:
+ cmp r0, 0xC7
+ bls _0810D5DA
+ cmp r0, 0xC8
+ bne _0810D5A8
+ ldr r0, _0810D5A4 @ =0x00000199
+ bl SpeciesToNationalPokedexNum
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x1
+ bl sub_8090D90
+ lsls r0, 24
+ cmp r0, 0
+ bne _0810D5DA
+ movs r0, 0xCD
+ lsls r0, 1
+ bl SpeciesToNationalPokedexNum
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x1
+ bl sub_8090D90
+ lsls r0, 24
+ cmp r0, 0
+ bne _0810D5DA
+ b _0810D5F4
+ .align 2, 0
+_0810D5A4: .4byte 0x00000199
+_0810D5A8:
+ cmp r0, 0xC9
+ bne _0810D5E8
+ ldr r0, _0810D5E0 @ =0x00000199
+ bl SpeciesToNationalPokedexNum
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x1
+ bl sub_8090D90
+ lsls r0, 24
+ cmp r0, 0
+ beq _0810D5F4
+ movs r0, 0xCD
+ lsls r0, 1
+ bl SpeciesToNationalPokedexNum
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x1
+ bl sub_8090D90
+ lsls r0, 24
+ cmp r0, 0
+ beq _0810D5F4
+_0810D5DA:
+ ldr r0, _0810D5E4 @ =gUnknown_081C4A91
+ b _0810D5F6
+ .align 2, 0
+_0810D5E0: .4byte 0x00000199
+_0810D5E4: .4byte gUnknown_081C4A91
+_0810D5E8:
+ cmp r0, 0xCA
+ beq _0810D5F4
+_0810D5EC:
+ ldr r0, _0810D5F0 @ =gUnknown_081C4520
+ b _0810D5F6
+ .align 2, 0
+_0810D5F0: .4byte gUnknown_081C4520
+_0810D5F4:
+ ldr r0, _0810D5FC @ =gUnknown_081C4ADA
+_0810D5F6:
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0810D5FC: .4byte gUnknown_081C4ADA
+ thumb_func_end GetPokedexRatingText
+
+ thumb_func_start ShowPokedexRatingMessage
+ShowPokedexRatingMessage: @ 810D600
+ push {lr}
+ ldr r0, _0810D614 @ =gSpecialVar_0x8004
+ ldrh r0, [r0]
+ bl GetPokedexRatingText
+ bl ShowFieldMessage
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0810D614: .4byte gSpecialVar_0x8004
+ thumb_func_end ShowPokedexRatingMessage
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/rom_810CBB4.s b/asm/field_specials.s
index 08ed659fb..e97bdfe80 100644
--- a/asm/rom_810CBB4.s
+++ b/asm/field_specials.s
@@ -5,692 +5,7 @@
.syntax unified
.text
-
- thumb_func_start sub_810D180
-sub_810D180: @ 810D180
- push {r4-r7,lr}
- sub sp, 0x4
- bl HealPlayerParty
- ldr r4, _0810D1A0 @ =0x00000804
- adds r0, r4, 0
- bl FlagGet
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x1
- bne _0810D1A8
- ldr r0, _0810D1A4 @ =gUnknown_02039324
- strb r1, [r0]
- b _0810D1B4
- .align 2, 0
-_0810D1A0: .4byte 0x00000804
-_0810D1A4: .4byte gUnknown_02039324
-_0810D1A8:
- ldr r1, _0810D1E8 @ =gUnknown_02039324
- movs r0, 0
- strb r0, [r1]
- adds r0, r4, 0
- bl FlagSet
-_0810D1B4:
- movs r0, 0x1
- bl GetGameStat
- cmp r0, 0
- bne _0810D1D4
- ldr r2, _0810D1EC @ =gSaveBlock2
- ldrh r1, [r2, 0xE]
- lsls r1, 16
- ldrb r0, [r2, 0x10]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x11]
- orrs r1, r0
- movs r0, 0x1
- bl SetGameStat
-_0810D1D4:
- bl SetSecretBase2Field_9
- ldr r0, _0810D1EC @ =gSaveBlock2
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _0810D1F0
- movs r0, 0x1
- bl sub_80537CC
- b _0810D1F6
- .align 2, 0
-_0810D1E8: .4byte gUnknown_02039324
-_0810D1EC: .4byte gSaveBlock2
-_0810D1F0:
- movs r0, 0x2
- bl sub_80537CC
-_0810D1F6:
- movs r6, 0
- movs r5, 0
- mov r7, sp
-_0810D1FC:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _0810D260 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x5
- bl GetMonData
- cmp r0, 0
- beq _0810D23A
- adds r0, r4, 0
- movs r1, 0x6
- bl GetMonData
- cmp r0, 0
- bne _0810D23A
- adds r0, r4, 0
- movs r1, 0x43
- bl GetMonData
- cmp r0, 0
- bne _0810D23A
- movs r0, 0x1
- strb r0, [r7]
- adds r0, r4, 0
- movs r1, 0x43
- mov r2, sp
- bl SetMonData
- movs r6, 0x1
-_0810D23A:
- adds r5, 0x1
- cmp r5, 0x5
- ble _0810D1FC
- cmp r6, 0x1
- bne _0810D250
- movs r0, 0x2A
- bl IncrementGameStat
- ldr r0, _0810D264 @ =0x0000083b
- bl FlagSet
-_0810D250:
- ldr r0, _0810D268 @ =sub_8141F90
- bl SetMainCallback2
- movs r0, 0
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0810D260: .4byte gPlayerParty
-_0810D264: .4byte 0x0000083b
-_0810D268: .4byte sub_8141F90
- thumb_func_end sub_810D180
-
- thumb_func_start sp0C8_whiteout_maybe
-sp0C8_whiteout_maybe: @ 810D26C
- push {lr}
- ldr r0, _0810D27C @ =CB2_WhiteOut
- bl SetMainCallback2
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0810D27C: .4byte CB2_WhiteOut
- thumb_func_end sp0C8_whiteout_maybe
-
- thumb_func_start sub_810D280
-sub_810D280: @ 810D280
- push {r4,lr}
- ldr r0, _0810D2A4 @ =0x00004024
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r0, _0810D2A8 @ =0x00004025
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- lsls r4, 16
- orrs r4, r0
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0810D2A4: .4byte 0x00004024
-_0810D2A8: .4byte 0x00004025
- thumb_func_end sub_810D280
-
- thumb_func_start sub_810D2AC
-sub_810D2AC: @ 810D2AC
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _0810D2CC @ =0x00004024
- lsrs r1, r4, 16
- bl VarSet
- ldr r0, _0810D2D0 @ =0x00004025
- lsls r4, 16
- lsrs r4, 16
- adds r1, r4, 0
- bl VarSet
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810D2CC: .4byte 0x00004024
-_0810D2D0: .4byte 0x00004025
- thumb_func_end sub_810D2AC
-
- thumb_func_start unref_sub_810D2D4
-unref_sub_810D2D4: @ 810D2D4
- push {r4,lr}
- bl Random
- adds r4, r0, 0
- bl Random
- lsls r4, 16
- lsls r0, 16
- lsrs r0, 16
- orrs r4, r0
- adds r0, r4, 0
- bl sub_810D2AC
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end unref_sub_810D2D4
-
- thumb_func_start sub_810D2F4
-sub_810D2F4: @ 810D2F4
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- bl sub_810D280
- adds r1, r0, 0
- cmp r4, 0
- beq _0810D318
- ldr r3, _0810D324 @ =0x41c64e6d
- ldr r2, _0810D328 @ =0x00003039
-_0810D308:
- adds r0, r1, 0
- muls r0, r3
- adds r1, r0, r2
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- bne _0810D308
-_0810D318:
- adds r0, r1, 0
- bl sub_810D2AC
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810D324: .4byte 0x41c64e6d
-_0810D328: .4byte 0x00003039
- thumb_func_end sub_810D2F4
-
- thumb_func_start sub_810D32C
-sub_810D32C: @ 810D32C
- push {r4-r6,lr}
- bl sub_810D280
- lsrs r6, r0, 16
- movs r5, 0
-_0810D336:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _0810D360 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0810D368
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- ldr r1, _0810D364 @ =0x0000ffff
- ands r1, r0
- cmp r1, r6
- bne _0810D368
- movs r0, 0x1
- b _0810D370
- .align 2, 0
-_0810D360: .4byte gPlayerParty
-_0810D364: .4byte 0x0000ffff
-_0810D368:
- adds r5, 0x1
- cmp r5, 0x5
- ble _0810D336
- movs r0, 0
-_0810D370:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_810D32C
-
- thumb_func_start UpdateShoalTideFlag
-UpdateShoalTideFlag: @ 810D378
- push {lr}
- bl get_map_light_from_warp0
- lsls r0, 24
- lsrs r0, 24
- bl is_light_level_1_2_3_5_or_6
- lsls r0, 24
- cmp r0, 0
- beq _0810D3BE
- bl RtcCalcLocalTime
- ldr r1, _0810D3AC @ =gUnknown_083F8340
- ldr r0, _0810D3B0 @ =gLocalTime
- ldrb r0, [r0, 0x2]
- lsls r0, 24
- asrs r0, 24
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _0810D3B8
- ldr r0, _0810D3B4 @ =0x0000083a
- bl FlagSet
- b _0810D3BE
- .align 2, 0
-_0810D3AC: .4byte gUnknown_083F8340
-_0810D3B0: .4byte gLocalTime
-_0810D3B4: .4byte 0x0000083a
-_0810D3B8:
- ldr r0, _0810D3C4 @ =0x0000083a
- bl FlagReset
-_0810D3BE:
- pop {r0}
- bx r0
- .align 2, 0
-_0810D3C4: .4byte 0x0000083a
- thumb_func_end UpdateShoalTideFlag
-
- thumb_func_start sub_810D3C8
-sub_810D3C8: @ 810D3C8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_807DDFC
- lsls r0, 24
- cmp r0, 0
- beq _0810D3E2
- bl EnableBothScriptContexts
- adds r0, r4, 0
- bl DestroyTask
-_0810D3E2:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_810D3C8
-
- thumb_func_start sub_810D3E8
-sub_810D3E8: @ 810D3E8
- push {lr}
- ldr r0, _0810D3F8 @ =sub_810D3C8
- movs r1, 0x50
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_0810D3F8: .4byte sub_810D3C8
- thumb_func_end sub_810D3E8
-
- thumb_func_start sub_810D3FC
-sub_810D3FC: @ 810D3FC
- push {lr}
- ldr r0, _0810D40C @ =0x00004049
- bl GetVarPointer
- movs r1, 0
- strh r1, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_0810D40C: .4byte 0x00004049
- thumb_func_end sub_810D3FC
-
- thumb_func_start UpdateBirchState
-UpdateBirchState: @ 810D410
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r0, _0810D438 @ =0x00004049
- bl GetVarPointer
- adds r5, r0, 0
- ldrh r0, [r5]
- adds r4, r0
- strh r4, [r5]
- ldrh r0, [r5]
- movs r1, 0x7
- bl __umodsi3
- strh r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810D438: .4byte 0x00004049
- thumb_func_end UpdateBirchState
-
- thumb_func_start ScriptGetPokedexInfo
-ScriptGetPokedexInfo: @ 810D43C
- push {lr}
- ldr r0, _0810D458 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0
- bne _0810D460
- movs r0, 0
- bl GetHoennPokedexCount
- ldr r1, _0810D45C @ =gSpecialVar_0x8005
- strh r0, [r1]
- movs r0, 0x1
- bl GetHoennPokedexCount
- b _0810D470
- .align 2, 0
-_0810D458: .4byte gSpecialVar_0x8004
-_0810D45C: .4byte gSpecialVar_0x8005
-_0810D460:
- movs r0, 0
- bl GetNationalPokedexCount
- ldr r1, _0810D480 @ =gSpecialVar_0x8005
- strh r0, [r1]
- movs r0, 0x1
- bl GetNationalPokedexCount
-_0810D470:
- ldr r1, _0810D484 @ =gSpecialVar_0x8006
- strh r0, [r1]
- bl IsNationalPokedexEnabled
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- .align 2, 0
-_0810D480: .4byte gSpecialVar_0x8005
-_0810D484: .4byte gSpecialVar_0x8006
- thumb_func_end ScriptGetPokedexInfo
-
- thumb_func_start GetPokedexRatingText
-GetPokedexRatingText: @ 810D488
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x9
- bhi _0810D494
- b _0810D5EC
-_0810D494:
- cmp r0, 0x13
- bhi _0810D4A0
- ldr r0, _0810D49C @ =gUnknown_081C456A
- b _0810D5F6
- .align 2, 0
-_0810D49C: .4byte gUnknown_081C456A
-_0810D4A0:
- cmp r0, 0x1D
- bhi _0810D4AC
- ldr r0, _0810D4A8 @ =gUnknown_081C45B0
- b _0810D5F6
- .align 2, 0
-_0810D4A8: .4byte gUnknown_081C45B0
-_0810D4AC:
- cmp r0, 0x27
- bhi _0810D4B8
- ldr r0, _0810D4B4 @ =gUnknown_081C45F9
- b _0810D5F6
- .align 2, 0
-_0810D4B4: .4byte gUnknown_081C45F9
-_0810D4B8:
- cmp r0, 0x31
- bhi _0810D4C4
- ldr r0, _0810D4C0 @ =gUnknown_081C4648
- b _0810D5F6
- .align 2, 0
-_0810D4C0: .4byte gUnknown_081C4648
-_0810D4C4:
- cmp r0, 0x3B
- bhi _0810D4D0
- ldr r0, _0810D4CC @ =gUnknown_081C467E
- b _0810D5F6
- .align 2, 0
-_0810D4CC: .4byte gUnknown_081C467E
-_0810D4D0:
- cmp r0, 0x45
- bhi _0810D4DC
- ldr r0, _0810D4D8 @ =gUnknown_081C46B9
- b _0810D5F6
- .align 2, 0
-_0810D4D8: .4byte gUnknown_081C46B9
-_0810D4DC:
- cmp r0, 0x4F
- bhi _0810D4E8
- ldr r0, _0810D4E4 @ =gUnknown_081C46FE
- b _0810D5F6
- .align 2, 0
-_0810D4E4: .4byte gUnknown_081C46FE
-_0810D4E8:
- cmp r0, 0x59
- bhi _0810D4F4
- ldr r0, _0810D4F0 @ =gUnknown_081C4747
- b _0810D5F6
- .align 2, 0
-_0810D4F0: .4byte gUnknown_081C4747
-_0810D4F4:
- cmp r0, 0x63
- bhi _0810D500
- ldr r0, _0810D4FC @ =gUnknown_081C4780
- b _0810D5F6
- .align 2, 0
-_0810D4FC: .4byte gUnknown_081C4780
-_0810D500:
- cmp r0, 0x6D
- bhi _0810D50C
- ldr r0, _0810D508 @ =gUnknown_081C47DF
- b _0810D5F6
- .align 2, 0
-_0810D508: .4byte gUnknown_081C47DF
-_0810D50C:
- cmp r0, 0x77
- bhi _0810D518
- ldr r0, _0810D514 @ =gUnknown_081C4828
- b _0810D5F6
- .align 2, 0
-_0810D514: .4byte gUnknown_081C4828
-_0810D518:
- cmp r0, 0x81
- bhi _0810D524
- ldr r0, _0810D520 @ =gUnknown_081C4863
- b _0810D5F6
- .align 2, 0
-_0810D520: .4byte gUnknown_081C4863
-_0810D524:
- cmp r0, 0x8B
- bhi _0810D530
- ldr r0, _0810D52C @ =gUnknown_081C489C
- b _0810D5F6
- .align 2, 0
-_0810D52C: .4byte gUnknown_081C489C
-_0810D530:
- cmp r0, 0x95
- bhi _0810D53C
- ldr r0, _0810D538 @ =gUnknown_081C48EB
- b _0810D5F6
- .align 2, 0
-_0810D538: .4byte gUnknown_081C48EB
-_0810D53C:
- cmp r0, 0x9F
- bhi _0810D548
- ldr r0, _0810D544 @ =gUnknown_081C4936
- b _0810D5F6
- .align 2, 0
-_0810D544: .4byte gUnknown_081C4936
-_0810D548:
- cmp r0, 0xA9
- bhi _0810D554
- ldr r0, _0810D550 @ =gUnknown_081C49A2
- b _0810D5F6
- .align 2, 0
-_0810D550: .4byte gUnknown_081C49A2
-_0810D554:
- cmp r0, 0xB3
- bhi _0810D560
- ldr r0, _0810D55C @ =gUnknown_081C4A06
- b _0810D5F6
- .align 2, 0
-_0810D55C: .4byte gUnknown_081C4A06
-_0810D560:
- cmp r0, 0xBD
- bhi _0810D56C
- ldr r0, _0810D568 @ =gUnknown_081C4A4F
- b _0810D5F6
- .align 2, 0
-_0810D568: .4byte gUnknown_081C4A4F
-_0810D56C:
- cmp r0, 0xC7
- bls _0810D5DA
- cmp r0, 0xC8
- bne _0810D5A8
- ldr r0, _0810D5A4 @ =0x00000199
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl sub_8090D90
- lsls r0, 24
- cmp r0, 0
- bne _0810D5DA
- movs r0, 0xCD
- lsls r0, 1
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl sub_8090D90
- lsls r0, 24
- cmp r0, 0
- bne _0810D5DA
- b _0810D5F4
- .align 2, 0
-_0810D5A4: .4byte 0x00000199
-_0810D5A8:
- cmp r0, 0xC9
- bne _0810D5E8
- ldr r0, _0810D5E0 @ =0x00000199
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl sub_8090D90
- lsls r0, 24
- cmp r0, 0
- beq _0810D5F4
- movs r0, 0xCD
- lsls r0, 1
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl sub_8090D90
- lsls r0, 24
- cmp r0, 0
- beq _0810D5F4
-_0810D5DA:
- ldr r0, _0810D5E4 @ =gUnknown_081C4A91
- b _0810D5F6
- .align 2, 0
-_0810D5E0: .4byte 0x00000199
-_0810D5E4: .4byte gUnknown_081C4A91
-_0810D5E8:
- cmp r0, 0xCA
- beq _0810D5F4
-_0810D5EC:
- ldr r0, _0810D5F0 @ =gUnknown_081C4520
- b _0810D5F6
- .align 2, 0
-_0810D5F0: .4byte gUnknown_081C4520
-_0810D5F4:
- ldr r0, _0810D5FC @ =gUnknown_081C4ADA
-_0810D5F6:
- pop {r1}
- bx r1
- .align 2, 0
-_0810D5FC: .4byte gUnknown_081C4ADA
- thumb_func_end GetPokedexRatingText
-
- thumb_func_start ShowPokedexRatingMessage
-ShowPokedexRatingMessage: @ 810D600
- push {lr}
- ldr r0, _0810D614 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- bl GetPokedexRatingText
- bl ShowFieldMessage
- pop {r0}
- bx r0
- .align 2, 0
-_0810D614: .4byte gSpecialVar_0x8004
- thumb_func_end ShowPokedexRatingMessage
-
- thumb_func_start AccessHallOfFamePC
-AccessHallOfFamePC: @ 810D618
- push {lr}
- ldr r0, _0810D628 @ =sub_81428CC
- bl SetMainCallback2
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- .align 2, 0
-_0810D628: .4byte sub_81428CC
- thumb_func_end AccessHallOfFamePC
-
- thumb_func_start ReturnFromHallOfFamePC
-ReturnFromHallOfFamePC: @ 810D62C
- push {lr}
- ldr r0, _0810D640 @ =c2_exit_to_overworld_2_switch
- bl SetMainCallback2
- ldr r1, _0810D644 @ =gUnknown_0300485C
- ldr r0, _0810D648 @ =ReshowPCMenuAfterHallOfFamePC
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_0810D640: .4byte c2_exit_to_overworld_2_switch
-_0810D644: .4byte gUnknown_0300485C
-_0810D648: .4byte ReshowPCMenuAfterHallOfFamePC
- thumb_func_end ReturnFromHallOfFamePC
-
- thumb_func_start ReshowPCMenuAfterHallOfFamePC
-ReshowPCMenuAfterHallOfFamePC: @ 810D64C
- push {lr}
- sub sp, 0x4
- bl ScriptContext2_Enable
- bl sub_8053E90
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- bl TryCreatePCMenu
- bl sub_80B5838
- ldr r0, _0810D680 @ =sub_810D684
- movs r1, 0xA
- bl CreateTask
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0810D680: .4byte sub_810D684
- thumb_func_end ReshowPCMenuAfterHallOfFamePC
-
- thumb_func_start sub_810D684
-sub_810D684: @ 810D684
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _0810D6A0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0810D69C
- adds r0, r2, 0
- bl DestroyTask
-_0810D69C:
- pop {r0}
- bx r0
- .align 2, 0
-_0810D6A0: .4byte gPaletteFade
- thumb_func_end sub_810D684
-
+
thumb_func_start sub_810D6A4
sub_810D6A4: @ 810D6A4
push {lr}
diff --git a/asm/hof_pc.s b/asm/hof_pc.s
new file mode 100644
index 000000000..c66e2fb05
--- /dev/null
+++ b/asm/hof_pc.s
@@ -0,0 +1,82 @@
+ .include "constants/gba_constants.inc"
+ .include "constants/species_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start AccessHallOfFamePC
+AccessHallOfFamePC: @ 810D618
+ push {lr}
+ ldr r0, _0810D628 @ =sub_81428CC
+ bl SetMainCallback2
+ bl ScriptContext2_Enable
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0810D628: .4byte sub_81428CC
+ thumb_func_end AccessHallOfFamePC
+
+ thumb_func_start ReturnFromHallOfFamePC
+ReturnFromHallOfFamePC: @ 810D62C
+ push {lr}
+ ldr r0, _0810D640 @ =c2_exit_to_overworld_2_switch
+ bl SetMainCallback2
+ ldr r1, _0810D644 @ =gUnknown_0300485C
+ ldr r0, _0810D648 @ =ReshowPCMenuAfterHallOfFamePC
+ str r0, [r1]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0810D640: .4byte c2_exit_to_overworld_2_switch
+_0810D644: .4byte gUnknown_0300485C
+_0810D648: .4byte ReshowPCMenuAfterHallOfFamePC
+ thumb_func_end ReturnFromHallOfFamePC
+
+ thumb_func_start ReshowPCMenuAfterHallOfFamePC
+ReshowPCMenuAfterHallOfFamePC: @ 810D64C
+ push {lr}
+ sub sp, 0x4
+ bl ScriptContext2_Enable
+ bl sub_8053E90
+ movs r0, 0x1
+ negs r0, r0
+ movs r1, 0
+ str r1, [sp]
+ movs r2, 0x10
+ movs r3, 0
+ bl BeginNormalPaletteFade
+ bl TryCreatePCMenu
+ bl sub_80B5838
+ ldr r0, _0810D680 @ =sub_810D684
+ movs r1, 0xA
+ bl CreateTask
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0810D680: .4byte sub_810D684
+ thumb_func_end ReshowPCMenuAfterHallOfFamePC
+
+ thumb_func_start sub_810D684
+sub_810D684: @ 810D684
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ ldr r0, _0810D6A0 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _0810D69C
+ adds r0, r2, 0
+ bl DestroyTask
+_0810D69C:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0810D6A0: .4byte gPaletteFade
+ thumb_func_end sub_810D684
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/post_battle_event_funcs.s b/asm/post_battle_event_funcs.s
new file mode 100644
index 000000000..8161203bb
--- /dev/null
+++ b/asm/post_battle_event_funcs.s
@@ -0,0 +1,131 @@
+ .include "constants/gba_constants.inc"
+ .include "constants/species_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_810D180
+sub_810D180: @ 810D180
+ push {r4-r7,lr}
+ sub sp, 0x4
+ bl HealPlayerParty
+ ldr r4, _0810D1A0 @ =0x00000804
+ adds r0, r4, 0
+ bl FlagGet
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x1
+ bne _0810D1A8
+ ldr r0, _0810D1A4 @ =gUnknown_02039324
+ strb r1, [r0]
+ b _0810D1B4
+ .align 2, 0
+_0810D1A0: .4byte 0x00000804
+_0810D1A4: .4byte gUnknown_02039324
+_0810D1A8:
+ ldr r1, _0810D1E8 @ =gUnknown_02039324
+ movs r0, 0
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl FlagSet
+_0810D1B4:
+ movs r0, 0x1
+ bl GetGameStat
+ cmp r0, 0
+ bne _0810D1D4
+ ldr r2, _0810D1EC @ =gSaveBlock2
+ ldrh r1, [r2, 0xE]
+ lsls r1, 16
+ ldrb r0, [r2, 0x10]
+ lsls r0, 8
+ orrs r1, r0
+ ldrb r0, [r2, 0x11]
+ orrs r1, r0
+ movs r0, 0x1
+ bl SetGameStat
+_0810D1D4:
+ bl SetSecretBase2Field_9
+ ldr r0, _0810D1EC @ =gSaveBlock2
+ ldrb r0, [r0, 0x8]
+ cmp r0, 0
+ bne _0810D1F0
+ movs r0, 0x1
+ bl sub_80537CC
+ b _0810D1F6
+ .align 2, 0
+_0810D1E8: .4byte gUnknown_02039324
+_0810D1EC: .4byte gSaveBlock2
+_0810D1F0:
+ movs r0, 0x2
+ bl sub_80537CC
+_0810D1F6:
+ movs r6, 0
+ movs r5, 0
+ mov r7, sp
+_0810D1FC:
+ movs r0, 0x64
+ adds r1, r5, 0
+ muls r1, r0
+ ldr r0, _0810D260 @ =gPlayerParty
+ adds r4, r1, r0
+ adds r0, r4, 0
+ movs r1, 0x5
+ bl GetMonData
+ cmp r0, 0
+ beq _0810D23A
+ adds r0, r4, 0
+ movs r1, 0x6
+ bl GetMonData
+ cmp r0, 0
+ bne _0810D23A
+ adds r0, r4, 0
+ movs r1, 0x43
+ bl GetMonData
+ cmp r0, 0
+ bne _0810D23A
+ movs r0, 0x1
+ strb r0, [r7]
+ adds r0, r4, 0
+ movs r1, 0x43
+ mov r2, sp
+ bl SetMonData
+ movs r6, 0x1
+_0810D23A:
+ adds r5, 0x1
+ cmp r5, 0x5
+ ble _0810D1FC
+ cmp r6, 0x1
+ bne _0810D250
+ movs r0, 0x2A
+ bl IncrementGameStat
+ ldr r0, _0810D264 @ =0x0000083b
+ bl FlagSet
+_0810D250:
+ ldr r0, _0810D268 @ =sub_8141F90
+ bl SetMainCallback2
+ movs r0, 0
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0810D260: .4byte gPlayerParty
+_0810D264: .4byte 0x0000083b
+_0810D268: .4byte sub_8141F90
+ thumb_func_end sub_810D180
+
+ thumb_func_start sp0C8_whiteout_maybe
+sp0C8_whiteout_maybe: @ 810D26C
+ push {lr}
+ ldr r0, _0810D27C @ =CB2_WhiteOut
+ bl SetMainCallback2
+ movs r0, 0
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0810D27C: .4byte CB2_WhiteOut
+ thumb_func_end sp0C8_whiteout_maybe
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/time_events.s b/asm/time_events.s
new file mode 100644
index 000000000..09202f2ef
--- /dev/null
+++ b/asm/time_events.s
@@ -0,0 +1,243 @@
+ .include "constants/gba_constants.inc"
+ .include "constants/species_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_810D280
+sub_810D280: @ 810D280
+ push {r4,lr}
+ ldr r0, _0810D2A4 @ =0x00004024
+ bl VarGet
+ adds r4, r0, 0
+ lsls r4, 16
+ lsrs r4, 16
+ ldr r0, _0810D2A8 @ =0x00004025
+ bl VarGet
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r4, 16
+ orrs r4, r0
+ adds r0, r4, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0810D2A4: .4byte 0x00004024
+_0810D2A8: .4byte 0x00004025
+ thumb_func_end sub_810D280
+
+ thumb_func_start sub_810D2AC
+sub_810D2AC: @ 810D2AC
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r0, _0810D2CC @ =0x00004024
+ lsrs r1, r4, 16
+ bl VarSet
+ ldr r0, _0810D2D0 @ =0x00004025
+ lsls r4, 16
+ lsrs r4, 16
+ adds r1, r4, 0
+ bl VarSet
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0810D2CC: .4byte 0x00004024
+_0810D2D0: .4byte 0x00004025
+ thumb_func_end sub_810D2AC
+
+ thumb_func_start unref_sub_810D2D4
+unref_sub_810D2D4: @ 810D2D4
+ push {r4,lr}
+ bl Random
+ adds r4, r0, 0
+ bl Random
+ lsls r4, 16
+ lsls r0, 16
+ lsrs r0, 16
+ orrs r4, r0
+ adds r0, r4, 0
+ bl sub_810D2AC
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end unref_sub_810D2D4
+
+ thumb_func_start sub_810D2F4
+sub_810D2F4: @ 810D2F4
+ push {r4,lr}
+ lsls r0, 16
+ lsrs r4, r0, 16
+ bl sub_810D280
+ adds r1, r0, 0
+ cmp r4, 0
+ beq _0810D318
+ ldr r3, _0810D324 @ =0x41c64e6d
+ ldr r2, _0810D328 @ =0x00003039
+_0810D308:
+ adds r0, r1, 0
+ muls r0, r3
+ adds r1, r0, r2
+ subs r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0
+ bne _0810D308
+_0810D318:
+ adds r0, r1, 0
+ bl sub_810D2AC
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0810D324: .4byte 0x41c64e6d
+_0810D328: .4byte 0x00003039
+ thumb_func_end sub_810D2F4
+
+ thumb_func_start sub_810D32C
+sub_810D32C: @ 810D32C
+ push {r4-r6,lr}
+ bl sub_810D280
+ lsrs r6, r0, 16
+ movs r5, 0
+_0810D336:
+ movs r0, 0x64
+ adds r1, r5, 0
+ muls r1, r0
+ ldr r0, _0810D360 @ =gPlayerParty
+ adds r4, r1, r0
+ adds r0, r4, 0
+ movs r1, 0xB
+ bl GetMonData
+ cmp r0, 0
+ beq _0810D368
+ adds r0, r4, 0
+ movs r1, 0
+ bl GetMonData
+ ldr r1, _0810D364 @ =0x0000ffff
+ ands r1, r0
+ cmp r1, r6
+ bne _0810D368
+ movs r0, 0x1
+ b _0810D370
+ .align 2, 0
+_0810D360: .4byte gPlayerParty
+_0810D364: .4byte 0x0000ffff
+_0810D368:
+ adds r5, 0x1
+ cmp r5, 0x5
+ ble _0810D336
+ movs r0, 0
+_0810D370:
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_810D32C
+
+ thumb_func_start UpdateShoalTideFlag
+UpdateShoalTideFlag: @ 810D378
+ push {lr}
+ bl get_map_light_from_warp0
+ lsls r0, 24
+ lsrs r0, 24
+ bl is_light_level_1_2_3_5_or_6
+ lsls r0, 24
+ cmp r0, 0
+ beq _0810D3BE
+ bl RtcCalcLocalTime
+ ldr r1, _0810D3AC @ =gUnknown_083F8340
+ ldr r0, _0810D3B0 @ =gLocalTime
+ ldrb r0, [r0, 0x2]
+ lsls r0, 24
+ asrs r0, 24
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0810D3B8
+ ldr r0, _0810D3B4 @ =0x0000083a
+ bl FlagSet
+ b _0810D3BE
+ .align 2, 0
+_0810D3AC: .4byte gUnknown_083F8340
+_0810D3B0: .4byte gLocalTime
+_0810D3B4: .4byte 0x0000083a
+_0810D3B8:
+ ldr r0, _0810D3C4 @ =0x0000083a
+ bl FlagReset
+_0810D3BE:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0810D3C4: .4byte 0x0000083a
+ thumb_func_end UpdateShoalTideFlag
+
+ thumb_func_start sub_810D3C8
+sub_810D3C8: @ 810D3C8
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ bl sub_807DDFC
+ lsls r0, 24
+ cmp r0, 0
+ beq _0810D3E2
+ bl EnableBothScriptContexts
+ adds r0, r4, 0
+ bl DestroyTask
+_0810D3E2:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_810D3C8
+
+ thumb_func_start sub_810D3E8
+sub_810D3E8: @ 810D3E8
+ push {lr}
+ ldr r0, _0810D3F8 @ =sub_810D3C8
+ movs r1, 0x50
+ bl CreateTask
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0810D3F8: .4byte sub_810D3C8
+ thumb_func_end sub_810D3E8
+
+ thumb_func_start sub_810D3FC
+sub_810D3FC: @ 810D3FC
+ push {lr}
+ ldr r0, _0810D40C @ =0x00004049
+ bl GetVarPointer
+ movs r1, 0
+ strh r1, [r0]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0810D40C: .4byte 0x00004049
+ thumb_func_end sub_810D3FC
+
+ thumb_func_start UpdateBirchState
+UpdateBirchState: @ 810D410
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ lsls r4, 16
+ lsrs r4, 16
+ ldr r0, _0810D438 @ =0x00004049
+ bl GetVarPointer
+ adds r5, r0, 0
+ ldrh r0, [r5]
+ adds r4, r0
+ strh r4, [r5]
+ ldrh r0, [r5]
+ movs r1, 0x7
+ bl __umodsi3
+ strh r0, [r5]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0810D438: .4byte 0x00004049
+ thumb_func_end UpdateBirchState
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/ld_script.txt b/ld_script.txt
index 13a562737..ae02440f4 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -213,7 +213,11 @@ SECTIONS {
src/rom6.o(.text);
asm/pokeblock.o(.text);
asm/fldeff_flash.o(.text);
- asm/rom_810CBB4.o(.text);
+ asm/post_battle_event_funcs.o(.text);
+ asm/time_events.o(.text);
+ asm/birch_pc.o(.text);
+ asm/hof_pc.o(.text);
+ asm/field_specials.o(.text);
asm/battle_records.o(.text);
asm/pokedex_area_screen.o(.text);
asm/evolution_scene.o(.text);
diff --git a/src/battle_party_menu.c b/src/battle_party_menu.c
index 2d47f4e7d..79c926e0d 100644
--- a/src/battle_party_menu.c
+++ b/src/battle_party_menu.c
@@ -97,6 +97,8 @@ static const struct PartyPopupMenu sBattlePartyPopupMenus[] =
{ARRAY_COUNT(Unknown_83B5FF2), 9, Unknown_83B5FF2},
};
+// rom_8094928 is part of this file, has yet to be decompiled.
+
int SetUpBattlePartyMenu(void)
{
switch (EWRAM_1B000.unk264)