summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/field_control_avatar.s3144
-rw-r--r--asm/overworld.s64
-rw-r--r--common_syms/field_control_avatar.txt1
-rw-r--r--common_syms/scrcmd.txt1
-rw-r--r--data/event_scripts.s4
-rw-r--r--data/maps/PalletTown/scripts.inc6
-rw-r--r--data/maps/PalletTown_ProfessorOaksLab/scripts.inc2
-rw-r--r--data/scripts/flavor_text.inc16
-rw-r--r--data/scripts/obtain_item.inc2
-rw-r--r--data/scripts/test.inc2
-rw-r--r--data/specials.inc4
-rw-r--r--data/text/flavor_text.inc8
-rw-r--r--include/constants/event_bg.h2
-rw-r--r--include/constants/flags.h2
-rw-r--r--include/constants/quest_log.h12
-rw-r--r--include/constants/vars.h15
-rw-r--r--include/coord_event_weather.h6
-rw-r--r--include/daycare.h1
-rw-r--r--include/event_object_movement.h3
-rw-r--r--include/event_scripts.h49
-rw-r--r--include/field_control_avatar.h31
-rw-r--r--include/field_fadetransition.h8
-rw-r--r--include/field_specials.h3
-rw-r--r--include/global.fieldmap.h22
-rw-r--r--include/item_menu.h1
-rw-r--r--include/metatile_behavior.h10
-rw-r--r--include/overworld.h10
-rw-r--r--include/script.h25
-rw-r--r--include/script_menu.h2
-rw-r--r--include/vs_seeker.h1
-rw-r--r--include/wild_encounter.h1
-rw-r--r--ld_script.txt2
-rw-r--r--src/battle_setup.c4
-rw-r--r--src/cable_club.c2
-rw-r--r--src/coord_event_weather.c66
-rw-r--r--src/field_control_avatar.c1183
-rw-r--r--src/field_fadetransition.c18
-rw-r--r--src/field_specials.c8
-rw-r--r--src/metatile_behavior.c10
-rw-r--r--src/region_map.c2
-rw-r--r--src/scrcmd.c73
-rw-r--r--src/script.c96
-rw-r--r--src/script_menu.c2
-rw-r--r--sym_common.txt11
44 files changed, 1548 insertions, 3387 deletions
diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s
deleted file mode 100644
index 09c516bd8..000000000
--- a/asm/field_control_avatar.s
+++ /dev/null
@@ -1,3144 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_806C888
-sub_806C888: @ 806C888
- push {r4-r6,lr}
- movs r1, 0x2
- negs r1, r1
- movs r3, 0x3
- negs r3, r3
- movs r4, 0x5
- negs r4, r4
- movs r5, 0x9
- negs r5, r5
- movs r6, 0x11
- negs r6, r6
- movs r2, 0
- strb r2, [r0]
- ldrb r2, [r0, 0x1]
- ands r1, r2
- ands r1, r3
- ands r1, r4
- ands r1, r5
- ands r1, r6
- strb r1, [r0, 0x1]
- movs r1, 0
- strb r1, [r0, 0x2]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_806C888
-
- thumb_func_start FieldGetPlayerInput
-FieldGetPlayerInput: @ 806C8BC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r5, r0, 0
- mov r0, sp
- strh r1, [r0]
- mov r4, sp
- adds r4, 0x2
- strh r2, [r4]
- ldr r0, _0806CA14 @ =gPlayerAvatar
- ldrb r1, [r0, 0x2]
- mov r8, r1
- ldrb r6, [r0, 0x3]
- bl cur_mapdata_block_role_at_player_pos
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsForcedMovementTile
- lsls r0, 24
- lsrs r7, r0, 24
- bl ScriptContext1_IsScriptSetUp
- lsls r0, 24
- cmp r0, 0
- bne _0806C908
- bl sub_806997C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806C908
- adds r0, r5, 0
- mov r1, sp
- adds r2, r4, 0
- bl sub_806CA4C
-_0806C908:
- cmp r6, 0x2
- bne _0806C910
- cmp r7, 0
- beq _0806C914
-_0806C910:
- cmp r6, 0
- bne _0806C9D0
-_0806C914:
- bl GetPlayerSpeed
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- beq _0806C9AC
- mov r0, sp
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0806C940
- ldr r0, _0806CA14 @ =gPlayerAvatar
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0806C940
- ldrb r0, [r5]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r5]
-_0806C940:
- ldr r0, _0806CA18 @ =gQuestLogState
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _0806C9D0
- ldr r0, _0806CA14 @ =gPlayerAvatar
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0806C9AC
- mov r0, sp
- ldrh r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0806C96E
- ldrb r0, [r5]
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r5]
-_0806C96E:
- mov r0, sp
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0806C982
- ldrb r0, [r5]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r5]
-_0806C982:
- mov r0, sp
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0806C996
- ldrb r0, [r5]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r5]
-_0806C996:
- mov r0, sp
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _0806C9AC
- ldrb r0, [r5, 0x1]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r5, 0x1]
-_0806C9AC:
- ldr r0, _0806CA18 @ =gQuestLogState
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _0806C9D0
- ldrh r1, [r4]
- movs r0, 0xF0
- ands r0, r1
- cmp r0, 0
- beq _0806C9D0
- ldrb r0, [r5]
- movs r1, 0x10
- orrs r0, r1
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r5]
-_0806C9D0:
- cmp r7, 0
- bne _0806C9F6
- cmp r6, 0x2
- bne _0806C9E6
- mov r0, r8
- cmp r0, 0x2
- bne _0806C9E6
- ldrb r0, [r5]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r5]
-_0806C9E6:
- cmp r7, 0
- bne _0806C9F6
- cmp r6, 0x2
- bne _0806C9F6
- ldrb r0, [r5]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r5]
-_0806C9F6:
- ldr r0, _0806CA18 @ =gQuestLogState
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _0806CA40
- ldrh r1, [r4]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0806CA1C
- movs r0, 0x2
- b _0806CA3E
- .align 2, 0
-_0806CA14: .4byte gPlayerAvatar
-_0806CA18: .4byte gQuestLogState
-_0806CA1C:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0806CA28
- movs r0, 0x1
- b _0806CA3E
-_0806CA28:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0806CA34
- movs r0, 0x3
- b _0806CA3E
-_0806CA34:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0806CA40
- movs r0, 0x4
-_0806CA3E:
- strb r0, [r5, 0x2]
-_0806CA40:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end FieldGetPlayerInput
-
- thumb_func_start sub_806CA4C
-sub_806CA4C: @ 806CA4C
- push {r4,r5,lr}
- adds r4, r1, 0
- adds r5, r2, 0
- bl sub_80699B0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x8
- bhi _0806CABA
- lsls r0, 2
- ldr r1, _0806CA68 @ =_0806CA6C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0806CA68: .4byte _0806CA6C
- .align 2, 0
-_0806CA6C:
- .4byte _0806CABA
- .4byte _0806CA90
- .4byte _0806CA94
- .4byte _0806CA98
- .4byte _0806CA9C
- .4byte _0806CAA0
- .4byte _0806CAA8
- .4byte _0806CAB0
- .4byte _0806CAB4
-_0806CA90:
- movs r0, 0x40
- b _0806CAB6
-_0806CA94:
- movs r0, 0x80
- b _0806CAB6
-_0806CA98:
- movs r0, 0x20
- b _0806CAB6
-_0806CA9C:
- movs r0, 0x10
- b _0806CAB6
-_0806CAA0:
- movs r1, 0x80
- lsls r1, 2
- adds r0, r1, 0
- b _0806CAB6
-_0806CAA8:
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1, 0
- b _0806CAB6
-_0806CAB0:
- movs r0, 0x8
- b _0806CAB6
-_0806CAB4:
- movs r0, 0x4
-_0806CAB6:
- strh r0, [r4]
- strh r0, [r5]
-_0806CABA:
- bl sub_8069970
- bl sub_80699A4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_806CA4C
-
- thumb_func_start sub_806CAC8
-sub_806CAC8: @ 806CAC8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- adds r5, r0, 0
- bl sub_8069A54
- bl GetPlayerFacingDirection
- lsls r0, 24
- lsrs r6, r0, 24
- mov r4, sp
- mov r0, sp
- bl player_get_pos_to_and_height
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0x2
- ldrsh r1, [r4, r2]
- movs r2, 0xFF
- bl MapGridGetMetatileAttributeAt
- mov r8, r0
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0x2
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r7, _0806CB70 @ =gUnknown_3005078
- adds r0, r7, 0
- bl sub_806C888
- ldrb r0, [r5, 0x2]
- strb r0, [r7, 0x2]
- bl CheckForTrainersWantingBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806CB6C
- bl mapheader_run_first_tag2_script_list_match
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806CB6C
- ldrb r1, [r5]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0806CB74
- movs r0, 0x5
- bl IncrementGameStat
- bl MENewsJisanStepCounter
- bl IncrementRenewableHiddenItemStepCounter
- bl RunMassageCooldownStepCounter
- bl IncrementResortGorgeousStepCounter
- bl BirthIslandDeoxysStepCounter
- mov r0, sp
- adds r1, r4, 0
- adds r2, r6, 0
- bl sub_806D5E8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806CB74
- ldrb r0, [r7]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r7]
-_0806CB6C:
- movs r0, 0x1
- b _0806CD22
- .align 2, 0
-_0806CB70: .4byte gUnknown_3005078
-_0806CB74:
- ldrb r1, [r5]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0806CBFC
- ldrb r0, [r5, 0x2]
- cmp r0, 0
- beq _0806CB88
- cmp r0, r6
- bne _0806CBD8
-_0806CB88:
- mov r7, sp
- mov r0, sp
- bl player_get_next_pos_and_height
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0x2
- ldrsh r1, [r7, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 16
- lsrs r4, r0, 16
- mov r0, sp
- adds r1, r4, 0
- adds r2, r6, 0
- bl sub_806D804
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806CBC0
- ldr r0, _0806CBBC @ =gUnknown_3005078
- ldrb r1, [r0]
- movs r2, 0x2
- b _0806CD16
- .align 2, 0
-_0806CBBC: .4byte gUnknown_3005078
-_0806CBC0:
- mov r0, sp
- bl player_get_pos_to_and_height
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0x2
- ldrsh r1, [r7, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 16
- lsrs r4, r0, 16
-_0806CBD8:
- ldrb r1, [r5]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0806CBFC
- mov r0, r8
- bl is_it_battle_time_3
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806CBFC
- ldr r0, _0806CBF8 @ =gUnknown_3005078
- ldrb r1, [r0]
- movs r2, 0x2
- b _0806CD16
- .align 2, 0
-_0806CBF8: .4byte gUnknown_3005078
-_0806CBFC:
- ldrb r1, [r5]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0806CC2C
- ldrb r0, [r5, 0x2]
- cmp r0, r6
- bne _0806CC2C
- mov r0, sp
- adds r1, r4, 0
- adds r2, r6, 0
- bl mapheader_run_first_tag2_script_list_match_conditionally
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806CC2C
- ldr r0, _0806CC28 @ =gUnknown_3005078
- ldrb r1, [r0]
- movs r2, 0x10
- b _0806CD16
- .align 2, 0
-_0806CC28: .4byte gUnknown_3005078
-_0806CC2C:
- mov r4, sp
- mov r0, sp
- bl player_get_next_pos_and_height
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0x2
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 16
- lsrs r4, r0, 16
- ldrb r1, [r5]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0806CC74
- ldrb r0, [r5, 0x2]
- cmp r0, r6
- bne _0806CC74
- mov r0, sp
- adds r1, r4, 0
- adds r2, r6, 0
- bl sub_806D804
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806CC74
- ldr r0, _0806CC70 @ =gUnknown_3005078
- ldrb r1, [r0]
- movs r2, 0x10
- b _0806CD16
- .align 2, 0
-_0806CC70: .4byte gUnknown_3005078
-_0806CC74:
- ldrb r1, [r5]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0806CC9C
- mov r0, sp
- adds r1, r4, 0
- adds r2, r6, 0
- bl sub_806CEA0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806CC9C
- ldr r0, _0806CC98 @ =gUnknown_3005078
- ldrb r1, [r0]
- movs r2, 0x1
- b _0806CD16
- .align 2, 0
-_0806CC98: .4byte gUnknown_3005078
-_0806CC9C:
- ldrb r1, [r5]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0806CCCC
- ldrb r0, [r5, 0x2]
- cmp r0, r6
- bne _0806CCCC
- mov r0, sp
- adds r1, r4, 0
- adds r2, r6, 0
- bl map_warp_consider_2_to_inside
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806CCCC
- ldr r0, _0806CCC8 @ =gUnknown_3005078
- ldrb r1, [r0]
- movs r2, 0x20
- b _0806CD16
- .align 2, 0
-_0806CCC8: .4byte gUnknown_3005078
-_0806CCCC:
- ldrb r1, [r5]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0806CCFC
- ldr r2, _0806CCF4 @ =gUnknown_3005078
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _0806CCF8 @ =0x0000083e
- bl FlagSet
- movs r0, 0x6
- bl PlaySE
- bl ShowStartMenu
- b _0806CB6C
- .align 2, 0
-_0806CCF4: .4byte gUnknown_3005078
-_0806CCF8: .4byte 0x0000083e
-_0806CCFC:
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0806CD20
- bl UseRegisteredKeyItemOnField
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806CD20
- ldr r0, _0806CD1C @ =gUnknown_3005078
- ldrb r1, [r0]
- movs r2, 0x8
-_0806CD16:
- orrs r1, r2
- strb r1, [r0]
- b _0806CB6C
- .align 2, 0
-_0806CD1C: .4byte gUnknown_3005078
-_0806CD20:
- movs r0, 0
-_0806CD22:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_806CAC8
-
- thumb_func_start sub_806CD30
-sub_806CD30: @ 806CD30
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptContext1_IsScriptSetUp
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806CDEA
- ldr r1, _0806CD50 @ =gUnknown_20370A0
- ldrb r0, [r1]
- cmp r0, 0
- beq _0806CD54
- subs r0, 0x1
- strb r0, [r1]
- b _0806CDEA
- .align 2, 0
-_0806CD50: .4byte gUnknown_20370A0
-_0806CD54:
- bl sub_8069A04
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806CDEA
- ldrb r0, [r4, 0x2]
- cmp r0, 0
- beq _0806CDC0
- bl GetPlayerFacingDirection
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r4, 0x2]
- cmp r0, r1
- beq _0806CDC0
- bl sub_80699D4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806CDEA
- ldrb r0, [r4, 0x2]
- cmp r0, 0x2
- bne _0806CD8E
- movs r0, 0x1
- bl sub_8069998
- b _0806CDB0
-_0806CD8E:
- cmp r0, 0x1
- bne _0806CD9A
- movs r0, 0x2
- bl sub_8069998
- b _0806CDB0
-_0806CD9A:
- cmp r0, 0x3
- bne _0806CDA6
- movs r0, 0x3
- bl sub_8069998
- b _0806CDB0
-_0806CDA6:
- cmp r0, 0x4
- bne _0806CDB0
- movs r0, 0x4
- bl sub_8069998
-_0806CDB0:
- ldr r0, _0806CDBC @ =gUnknown_81A7ADB
- bl ScriptContext1_SetupScript
- bl ScriptContext2_Enable
- b _0806CDEA
- .align 2, 0
-_0806CDBC: .4byte gUnknown_81A7ADB
-_0806CDC0:
- ldrb r1, [r4]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0806CDEA
- ldr r0, _0806CDF0 @ =gUnknown_81A7ADB
- bl ScriptContext1_SetupScript
- bl ScriptContext2_Enable
- ldr r4, _0806CDF4 @ =sub_806CDF8
- adds r0, r4, 0
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _0806CDEA
- adds r0, r4, 0
- movs r1, 0x8
- bl CreateTask
-_0806CDEA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0806CDF0: .4byte gUnknown_81A7ADB
-_0806CDF4: .4byte sub_806CDF8
- thumb_func_end sub_806CD30
-
- thumb_func_start sub_806CDF8
-sub_806CDF8: @ 806CDF8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl ScriptContext2_IsEnabled
- lsls r0, 24
- cmp r0, 0
- bne _0806CE18
- movs r0, 0x6
- bl PlaySE
- bl ShowStartMenu
- adds r0, r4, 0
- bl DestroyTask
-_0806CE18:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_806CDF8
-
- thumb_func_start player_get_pos_to_and_height
-player_get_pos_to_and_height: @ 806CE20
- push {r4,lr}
- adds r4, r0, 0
- adds r1, r4, 0x2
- bl PlayerGetDestCoords
- bl PlayerGetZCoord
- strb r0, [r4, 0x4]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end player_get_pos_to_and_height
-
- thumb_func_start player_get_next_pos_and_height
-player_get_next_pos_and_height: @ 806CE38
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r1, r5, 0x2
- bl GetXYCoordsOneStepInFrontOfPlayer
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl PlayerGetDestCoords
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetZCoordAt
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _0806CE6A
- bl PlayerGetZCoord
-_0806CE6A:
- strb r0, [r5, 0x4]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end player_get_next_pos_and_height
-
- thumb_func_start cur_mapdata_block_role_at_player_pos
-cur_mapdata_block_role_at_player_pos: @ 806CE74
- push {r4,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl PlayerGetDestCoords
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 16
- lsrs r0, 16
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end cur_mapdata_block_role_at_player_pos
-
- thumb_func_start sub_806CEA0
-sub_806CEA0: @ 806CEA0
- push {r4,lr}
- lsls r2, 24
- lsrs r2, 24
- lsls r1, 24
- lsrs r1, 24
- bl TryGetScriptOnPressingA
- adds r4, r0, 0
- cmp r4, 0
- bne _0806CEB8
- movs r0, 0
- b _0806CED2
-_0806CEB8:
- ldr r0, _0806CED8 @ =PalletTown_PlayersHouse_2F_EventScript_PC
- cmp r4, r0
- beq _0806CECA
- ldr r0, _0806CEDC @ =EventScript_PC
- cmp r4, r0
- beq _0806CECA
- movs r0, 0x5
- bl PlaySE
-_0806CECA:
- adds r0, r4, 0
- bl ScriptContext1_SetupScript
- movs r0, 0x1
-_0806CED2:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0806CED8: .4byte PalletTown_PlayersHouse_2F_EventScript_PC
-_0806CEDC: .4byte EventScript_PC
- thumb_func_end sub_806CEA0
-
- thumb_func_start TryGetScriptOnPressingA
-TryGetScriptOnPressingA: @ 806CEE0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- mov r8, r5
- lsls r2, 24
- lsrs r4, r2, 24
- adds r7, r4, 0
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_806CFF4
- cmp r0, 0
- bne _0806CF2C
- adds r0, r6, 0
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_806D0E4
- cmp r0, 0
- bne _0806CF2C
- adds r0, r6, 0
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_806D1F0
- cmp r0, 0
- bne _0806CF2C
- adds r0, r6, 0
- mov r1, r8
- adds r2, r7, 0
- bl sub_806D548
- cmp r0, 0
- bne _0806CF2C
- movs r0, 0
-_0806CF2C:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end TryGetScriptOnPressingA
-
- thumb_func_start sub_806CF38
-sub_806CF38: @ 806CF38
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r2, 24
- lsrs r6, r2, 24
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r2, 0x2
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsCounter
- lsls r0, 24
- cmp r0, 0
- bne _0806CF60
- ldrh r0, [r4]
- ldrh r1, [r4, 0x2]
- b _0806CF7E
-_0806CF60:
- ldr r1, _0806CFA4 @ =gDirectionToVectors
- lsls r2, r6, 3
- adds r0, r2, r1
- ldr r3, [r0]
- ldrh r0, [r4]
- adds r0, r3
- lsls r0, 16
- lsrs r0, 16
- adds r1, 0x4
- adds r2, r1
- ldr r2, [r2]
- ldrh r1, [r4, 0x2]
- adds r1, r2
- lsls r1, 16
- lsrs r1, 16
-_0806CF7E:
- ldrb r2, [r4, 0x4]
- bl GetObjectEventIdByXYZ
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x10
- beq _0806CF9E
- ldr r1, _0806CFA8 @ =gObjectEvents
- lsls r2, r3, 3
- adds r0, r2, r3
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x8]
- adds r5, r1, 0
- cmp r0, 0xFF
- bne _0806CFAC
-_0806CF9E:
- movs r0, 0
- b _0806CFDE
- .align 2, 0
-_0806CFA4: .4byte gDirectionToVectors
-_0806CFA8: .4byte gObjectEvents
-_0806CFAC:
- movs r4, 0
- ldr r1, _0806CFE4 @ =gLinkPlayerObjectEvents
-_0806CFB0:
- ldrb r0, [r1]
- cmp r0, 0x1
- bne _0806CFBC
- ldrb r0, [r1, 0x2]
- cmp r0, r3
- beq _0806CF9E
-_0806CFBC:
- adds r1, 0x4
- adds r4, 0x1
- cmp r4, 0x3
- ble _0806CFB0
- ldr r0, _0806CFE8 @ =gSelectedObjectEvent
- strb r3, [r0]
- ldr r1, _0806CFEC @ =gSpecialVar_LastTalked
- adds r0, r2, r3
- lsls r0, 2
- adds r0, r5
- ldrb r0, [r0, 0x8]
- strh r0, [r1]
- ldr r0, _0806CFF0 @ =gSpecialVar_Facing
- strh r6, [r0]
- adds r0, r3, 0
- bl GetObjectEventScriptPointerByObjectEventId
-_0806CFDE:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0806CFE4: .4byte gLinkPlayerObjectEvents
-_0806CFE8: .4byte gSelectedObjectEvent
-_0806CFEC: .4byte gSpecialVar_LastTalked
-_0806CFF0: .4byte gSpecialVar_Facing
- thumb_func_end sub_806CF38
-
- thumb_func_start sub_806CFF4
-sub_806CFF4: @ 806CFF4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- ldrh r0, [r4]
- ldrh r1, [r4, 0x2]
- ldrb r2, [r4, 0x4]
- bl GetObjectEventIdByXYZ
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x10
- beq _0806D02A
- ldr r2, _0806D098 @ =gObjectEvents
- lsls r1, r5, 3
- adds r0, r1, r5
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x8]
- adds r6, r1, 0
- cmp r0, 0xFF
- bne _0806D078
-_0806D02A:
- adds r0, r7, 0
- bl MetatileBehavior_IsCounter
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D092
- ldr r1, _0806D09C @ =gDirectionToVectors
- mov r0, r8
- lsls r2, r0, 3
- adds r0, r2, r1
- ldr r3, [r0]
- ldrh r0, [r4]
- adds r0, r3
- lsls r0, 16
- lsrs r0, 16
- adds r1, 0x4
- adds r2, r1
- ldr r2, [r2]
- ldrh r1, [r4, 0x2]
- adds r1, r2
- lsls r1, 16
- lsrs r1, 16
- ldrb r2, [r4, 0x4]
- bl GetObjectEventIdByXYZ
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x10
- beq _0806D092
- ldr r2, _0806D098 @ =gObjectEvents
- lsls r1, r5, 3
- adds r0, r1, r5
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x8]
- adds r6, r1, 0
- cmp r0, 0xFF
- beq _0806D092
-_0806D078:
- bl InUnionRoom
- cmp r0, 0x1
- bne _0806D0A0
- adds r0, r6, r5
- lsls r0, 2
- ldr r1, _0806D098 @ =gObjectEvents
- adds r0, r1
- bl ObjectEventCheckHeldMovementStatus
- lsls r0, 24
- cmp r0, 0
- bne _0806D0A0
-_0806D092:
- movs r0, 0
- b _0806D0C8
- .align 2, 0
-_0806D098: .4byte gObjectEvents
-_0806D09C: .4byte gDirectionToVectors
-_0806D0A0:
- ldr r0, _0806D0D4 @ =gSelectedObjectEvent
- strb r5, [r0]
- ldr r4, _0806D0D8 @ =gSpecialVar_LastTalked
- ldr r1, _0806D0DC @ =gObjectEvents
- adds r0, r6, r5
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x8]
- strh r0, [r4]
- ldr r0, _0806D0E0 @ =gSpecialVar_Facing
- mov r1, r8
- strh r1, [r0]
- adds r0, r5, 0
- bl GetObjectEventScriptPointerByObjectEventId
- adds r1, r0, 0
- ldrb r0, [r4]
- bl GetRamScript
- adds r1, r0, 0
-_0806D0C8:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0806D0D4: .4byte gSelectedObjectEvent
-_0806D0D8: .4byte gSpecialVar_LastTalked
-_0806D0DC: .4byte gObjectEvents
-_0806D0E0: .4byte gSpecialVar_Facing
- thumb_func_end sub_806CFF4
-
- thumb_func_start sub_806D0E4
-sub_806D0E4: @ 806D0E4
- push {r4-r7,lr}
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r4, _0806D118 @ =gMapHeader
- ldrh r1, [r0]
- subs r1, 0x7
- lsls r1, 16
- lsrs r1, 16
- ldrh r2, [r0, 0x2]
- subs r2, 0x7
- lsls r2, 16
- lsrs r2, 16
- ldrb r3, [r0, 0x4]
- adds r0, r4, 0
- bl FindInvisibleObjectEventByPosition
- adds r5, r0, 0
- cmp r5, 0
- beq _0806D164
- ldr r0, [r5, 0x8]
- cmp r0, 0
- bne _0806D120
- ldr r0, _0806D11C @ =Test_EventScript_Sign
- b _0806D1E6
- .align 2, 0
-_0806D118: .4byte gMapHeader
-_0806D11C: .4byte Test_EventScript_Sign
-_0806D120:
- adds r0, r7, 0
- adds r1, r6, 0
- bl sub_806D898
- lsls r0, 24
- lsrs r2, r0, 24
- ldrb r0, [r5, 0x5]
- cmp r0, 0x7
- bhi _0806D1D8
- lsls r0, 2
- ldr r1, _0806D13C @ =_0806D140
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0806D13C: .4byte _0806D140
- .align 2, 0
-_0806D140:
- .4byte _0806D1D8
- .4byte _0806D160
- .4byte _0806D168
- .4byte _0806D16E
- .4byte _0806D174
- .4byte _0806D17A
- .4byte _0806D17A
- .4byte _0806D17A
-_0806D160:
- cmp r6, 0x2
- beq _0806D1D8
-_0806D164:
- movs r0, 0
- b _0806D1E6
-_0806D168:
- cmp r6, 0x1
- beq _0806D1D8
- b _0806D164
-_0806D16E:
- cmp r6, 0x4
- beq _0806D1D8
- b _0806D164
-_0806D174:
- cmp r6, 0x3
- beq _0806D1D8
- b _0806D164
-_0806D17A:
- ldr r0, [r5, 0x8]
- movs r1, 0x3
- bl GetHiddenItemAttr
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- beq _0806D164
- ldr r0, [r5, 0x8]
- movs r1, 0
- bl GetHiddenItemAttr
- ldr r1, _0806D1C4 @ =gSpecialVar_0x8005
- strh r0, [r1]
- ldr r0, [r5, 0x8]
- movs r1, 0x1
- bl GetHiddenItemAttr
- ldr r4, _0806D1C8 @ =gSpecialVar_0x8004
- strh r0, [r4]
- ldr r0, [r5, 0x8]
- movs r1, 0x2
- bl GetHiddenItemAttr
- ldr r1, _0806D1CC @ =gSpecialVar_0x8006
- strh r0, [r1]
- ldrh r0, [r4]
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806D164
- ldr r0, _0806D1D0 @ =gSpecialVar_Facing
- strh r6, [r0]
- ldr r0, _0806D1D4 @ =EventScript_FoundHiddenItem
- b _0806D1E6
- .align 2, 0
-_0806D1C4: .4byte gSpecialVar_0x8005
-_0806D1C8: .4byte gSpecialVar_0x8004
-_0806D1CC: .4byte gSpecialVar_0x8006
-_0806D1D0: .4byte gSpecialVar_Facing
-_0806D1D4: .4byte EventScript_FoundHiddenItem
-_0806D1D8:
- cmp r2, 0xFF
- beq _0806D1E0
- bl sub_8069A20
-_0806D1E0:
- ldr r0, _0806D1EC @ =gSpecialVar_Facing
- strh r6, [r0]
- ldr r0, [r5, 0x8]
-_0806D1E6:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0806D1EC: .4byte gSpecialVar_Facing
- thumb_func_end sub_806D0E4
-
- thumb_func_start sub_806D1F0
-sub_806D1F0: @ 806D1F0
- push {r4,r5,lr}
- lsls r1, 24
- lsrs r4, r1, 24
- lsls r2, 24
- lsrs r5, r2, 24
- ldr r0, _0806D210 @ =gSpecialVar_Facing
- strh r5, [r0]
- adds r0, r4, 0
- bl MetatileBehavior_IsPC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D218
- ldr r0, _0806D214 @ =EventScript_PC
- b _0806D53E
- .align 2, 0
-_0806D210: .4byte gSpecialVar_Facing
-_0806D214: .4byte EventScript_PC
-_0806D218:
- adds r0, r4, 0
- bl MetatileBehavior_IsRegionMap
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D230
- ldr r0, _0806D22C @ =EventScript_WallTownMap
- b _0806D53E
- .align 2, 0
-_0806D22C: .4byte EventScript_WallTownMap
-_0806D230:
- adds r0, r4, 0
- bl MetatileBehavior_IsBookshelf
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D248
- ldr r0, _0806D244 @ =gUnknown_81A7606
- b _0806D53E
- .align 2, 0
-_0806D244: .4byte gUnknown_81A7606
-_0806D248:
- adds r0, r4, 0
- bl MetatileBehavior_IsPokeMartShelf
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D260
- ldr r0, _0806D25C @ =gUnknown_81A760F
- b _0806D53E
- .align 2, 0
-_0806D25C: .4byte gUnknown_81A760F
-_0806D260:
- adds r0, r4, 0
- bl MetatileBehavior_IsFood
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D278
- ldr r0, _0806D274 @ =gUnknown_81A7618
- b _0806D53E
- .align 2, 0
-_0806D274: .4byte gUnknown_81A7618
-_0806D278:
- adds r0, r4, 0
- bl MetatileBehavior_IsImpressiveMachine
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D290
- ldr r0, _0806D28C @ =gUnknown_81A7633
- b _0806D53E
- .align 2, 0
-_0806D28C: .4byte gUnknown_81A7633
-_0806D290:
- adds r0, r4, 0
- bl MetatileBehavior_IsBlueprints
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D2A8
- ldr r0, _0806D2A4 @ =gUnknown_81A763C
- b _0806D53E
- .align 2, 0
-_0806D2A4: .4byte gUnknown_81A763C
-_0806D2A8:
- adds r0, r4, 0
- bl MetatileBehavior_IsVideoGame
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D2C0
- ldr r0, _0806D2BC @ =gUnknown_81A7621
- b _0806D53E
- .align 2, 0
-_0806D2BC: .4byte gUnknown_81A7621
-_0806D2C0:
- adds r0, r4, 0
- bl MetatileBehavior_IsBurglary
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D2D8
- ldr r0, _0806D2D4 @ =gUnknown_81A7645
- b _0806D53E
- .align 2, 0
-_0806D2D4: .4byte gUnknown_81A7645
-_0806D2D8:
- adds r0, r4, 0
- bl MetatileBehavior_IsComputer
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D2F0
- ldr r0, _0806D2EC @ =gUnknown_81A762A
- b _0806D53E
- .align 2, 0
-_0806D2EC: .4byte gUnknown_81A762A
-_0806D2F0:
- adds r0, r4, 0
- bl MetatileBehavior_IsMBA3
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D308
- ldr r0, _0806D304 @ =TrainerTower_EventScript_ShowTime
- b _0806D53E
- .align 2, 0
-_0806D304: .4byte TrainerTower_EventScript_ShowTime
-_0806D308:
- adds r0, r4, 0
- adds r1, r5, 0
- bl MetatileBehavior_IsPlayerFacingTVScreen
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D320
- ldr r0, _0806D31C @ =gUnknown_81A764E
- b _0806D53E
- .align 2, 0
-_0806D31C: .4byte gUnknown_81A764E
-_0806D320:
- adds r0, r4, 0
- bl MetatileBehavior_IsCabinet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D338
- ldr r0, _0806D334 @ =gUnknown_81A7657
- b _0806D53E
- .align 2, 0
-_0806D334: .4byte gUnknown_81A7657
-_0806D338:
- adds r0, r4, 0
- bl MetatileBehavior_IsKitchen
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D350
- ldr r0, _0806D34C @ =gUnknown_81A7660
- b _0806D53E
- .align 2, 0
-_0806D34C: .4byte gUnknown_81A7660
-_0806D350:
- adds r0, r4, 0
- bl MetatileBehavior_IsDresser
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D368
- ldr r0, _0806D364 @ =gUnknown_81A7669
- b _0806D53E
- .align 2, 0
-_0806D364: .4byte gUnknown_81A7669
-_0806D368:
- adds r0, r4, 0
- bl MetatileBehavior_IsSnacks
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D380
- ldr r0, _0806D37C @ =gUnknown_81A7672
- b _0806D53E
- .align 2, 0
-_0806D37C: .4byte gUnknown_81A7672
-_0806D380:
- adds r0, r4, 0
- bl MetatileBehavior_IsPainting
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D398
- ldr r0, _0806D394 @ =gUnknown_81A767B
- b _0806D53E
- .align 2, 0
-_0806D394: .4byte gUnknown_81A767B
-_0806D398:
- adds r0, r4, 0
- bl MetatileBehavior_IsPowerPlantMachine
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D3B0
- ldr r0, _0806D3AC @ =gUnknown_81A7684
- b _0806D53E
- .align 2, 0
-_0806D3AC: .4byte gUnknown_81A7684
-_0806D3B0:
- adds r0, r4, 0
- bl MetatileBehavior_IsTelephone
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D3C8
- ldr r0, _0806D3C4 @ =gUnknown_81A768D
- b _0806D53E
- .align 2, 0
-_0806D3C4: .4byte gUnknown_81A768D
-_0806D3C8:
- adds r0, r4, 0
- bl MetatileBehavior_IsAdvertisingPoster
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D3E0
- ldr r0, _0806D3DC @ =gUnknown_81A7696
- b _0806D53E
- .align 2, 0
-_0806D3DC: .4byte gUnknown_81A7696
-_0806D3E0:
- adds r0, r4, 0
- bl MetatileBehavior_IsTastyFood
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D3F8
- ldr r0, _0806D3F4 @ =gUnknown_81A769F
- b _0806D53E
- .align 2, 0
-_0806D3F4: .4byte gUnknown_81A769F
-_0806D3F8:
- adds r0, r4, 0
- bl MetatileBehavior_IsTrashBin
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D410
- ldr r0, _0806D40C @ =gUnknown_81A76A8
- b _0806D53E
- .align 2, 0
-_0806D40C: .4byte gUnknown_81A76A8
-_0806D410:
- adds r0, r4, 0
- bl MetatileBehavior_IsCup
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D428
- ldr r0, _0806D424 @ =gUnknown_81A76B1
- b _0806D53E
- .align 2, 0
-_0806D424: .4byte gUnknown_81A76B1
-_0806D428:
- adds r0, r4, 0
- bl MetatileBehavior_ReturnFalse_19
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D440
- ldr r0, _0806D43C @ =gUnknown_81A76BA
- b _0806D53E
- .align 2, 0
-_0806D43C: .4byte gUnknown_81A76BA
-_0806D440:
- adds r0, r4, 0
- bl MetatileBehavior_ReturnFalse_20
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D458
- ldr r0, _0806D454 @ =gUnknown_81A76C3
- b _0806D53E
- .align 2, 0
-_0806D454: .4byte gUnknown_81A76C3
-_0806D458:
- adds r0, r4, 0
- bl MetatileBehavior_IsBlinkingLights
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D470
- ldr r0, _0806D46C @ =gUnknown_81A76CC
- b _0806D53E
- .align 2, 0
-_0806D46C: .4byte gUnknown_81A76CC
-_0806D470:
- adds r0, r4, 0
- bl MetatileBehavior_IsMB9F
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D488
- ldr r0, _0806D484 @ =gUnknown_81A76D5
- b _0806D53E
- .align 2, 0
-_0806D484: .4byte gUnknown_81A76D5
-_0806D488:
- adds r0, r4, 0
- adds r1, r5, 0
- bl MetatileBehavior_IsPlayerFacingMB_8D
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D4A0
- ldr r0, _0806D49C @ =CableClub_EventScript_81BBFD8
- b _0806D53E
- .align 2, 0
-_0806D49C: .4byte CableClub_EventScript_81BBFD8
-_0806D4A0:
- adds r0, r4, 0
- bl MetatileBehavior_IsQuestionnaire
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D4B8
- ldr r0, _0806D4B4 @ =EventScript_Questionnaire
- b _0806D53E
- .align 2, 0
-_0806D4B4: .4byte EventScript_Questionnaire
-_0806D4B8:
- adds r0, r4, 0
- adds r1, r5, 0
- bl MetatileBehavior_IsPlayerFacingBattleRecords
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D4D0
- ldr r0, _0806D4CC @ =CableClub_EventScript_ShowBattleRecords
- b _0806D53E
- .align 2, 0
-_0806D4CC: .4byte CableClub_EventScript_ShowBattleRecords
-_0806D4D0:
- adds r0, r4, 0
- bl MetatileBehavior_IsIndigoPlateauMark
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D4EC
- bl sub_8069A20
- ldr r0, _0806D4E8 @ =gUnknown_81A76F0
- b _0806D53E
- .align 2, 0
-_0806D4E8: .4byte gUnknown_81A76F0
-_0806D4EC:
- adds r0, r4, 0
- bl MetatileBehavior_IsIndigoPlateauMark2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D508
- bl sub_8069A20
- ldr r0, _0806D504 @ =gUnknown_81A76F9
- b _0806D53E
- .align 2, 0
-_0806D504: .4byte gUnknown_81A76F9
-_0806D508:
- adds r0, r4, 0
- adds r1, r5, 0
- bl MetatileBehavior_IsPlayerFacingPokeMartSign
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D524
- bl sub_8069A20
- ldr r0, _0806D520 @ =gUnknown_81A76DE
- b _0806D53E
- .align 2, 0
-_0806D520: .4byte gUnknown_81A76DE
-_0806D524:
- adds r0, r4, 0
- adds r1, r5, 0
- bl MetatileBehavior_IsPlayerFacingPokemonCenterSign
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806D538
- movs r0, 0
- b _0806D53E
-_0806D538:
- bl sub_8069A20
- ldr r0, _0806D544 @ =gUnknown_81A76E7
-_0806D53E:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0806D544: .4byte gUnknown_81A76E7
- thumb_func_end sub_806D1F0
-
- thumb_func_start sub_806D548
-sub_806D548: @ 806D548
- push {r4,lr}
- lsls r1, 24
- lsrs r4, r1, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsSemiDeepWater
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D570
- bl PartyHasMonWithSurf
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D570
- ldr r0, _0806D56C @ =EventScript_CurrentTooFast
- b _0806D5E2
- .align 2, 0
-_0806D56C: .4byte EventScript_CurrentTooFast
-_0806D570:
- ldr r0, _0806D59C @ =0x00000824
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D5A4
- bl PartyHasMonWithSurf
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D5A4
- bl IsPlayerFacingSurfableFishableWater
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D5A4
- ldr r0, _0806D5A0 @ =EventScript_UseSurf
- b _0806D5E2
- .align 2, 0
-_0806D59C: .4byte 0x00000824
-_0806D5A0: .4byte EventScript_UseSurf
-_0806D5A4:
- adds r0, r4, 0
- bl MetatileBehavior_IsWaterfall
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D5E0
- ldr r0, _0806D5D0 @ =0x00000826
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D5D8
- bl IsPlayerSurfingNorth
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D5D8
- ldr r0, _0806D5D4 @ =EventScript_Waterfall
- b _0806D5E2
- .align 2, 0
-_0806D5D0: .4byte 0x00000826
-_0806D5D4: .4byte EventScript_Waterfall
-_0806D5D8:
- ldr r0, _0806D5DC @ =EventScript_CantUseWaterfall
- b _0806D5E2
- .align 2, 0
-_0806D5DC: .4byte EventScript_CantUseWaterfall
-_0806D5E0:
- movs r0, 0
-_0806D5E2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_806D548
-
- thumb_func_start sub_806D5E8
-sub_806D5E8: @ 806D5E8
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r1, 16
- lsrs r4, r1, 16
- adds r6, r4, 0
- bl sub_806D660
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806D650
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_806DA10
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806D650
- adds r0, r4, 0
- bl sub_806D694
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806D650
- adds r0, r4, 0
- bl sub_806D698
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806D650
- ldr r0, _0806D654 @ =gPlayerAvatar
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0806D658
- lsls r0, r6, 24
- lsrs r0, 24
- bl MetatileBehavior_IsForcedMovementTile
- lsls r0, 24
- cmp r0, 0
- bne _0806D658
- bl UpdateRepelCounter
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D658
-_0806D650:
- movs r0, 0x1
- b _0806D65A
- .align 2, 0
-_0806D654: .4byte gPlayerAvatar
-_0806D658:
- movs r0, 0
-_0806D65A:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_806D5E8
-
- thumb_func_start sub_806D660
-sub_806D660: @ 806D660
- push {r4,lr}
- ldr r4, _0806D688 @ =gMapHeader
- ldrh r1, [r0]
- subs r1, 0x7
- lsls r1, 16
- lsrs r1, 16
- ldrh r2, [r0, 0x2]
- subs r2, 0x7
- lsls r2, 16
- lsrs r2, 16
- ldrb r3, [r0, 0x4]
- adds r0, r4, 0
- bl mapheader_trigger_activate_at
- cmp r0, 0
- beq _0806D68C
- bl ScriptContext1_SetupScript
- movs r0, 0x1
- b _0806D68E
- .align 2, 0
-_0806D688: .4byte gMapHeader
-_0806D68C:
- movs r0, 0
-_0806D68E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_806D660
-
- thumb_func_start sub_806D694
-sub_806D694: @ 806D694
- movs r0, 0
- bx lr
- thumb_func_end sub_806D694
-
- thumb_func_start sub_806D698
-sub_806D698: @ 806D698
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- bl InUnionRoom
- cmp r0, 0x1
- beq _0806D72C
- ldr r0, _0806D6E0 @ =gQuestLogState
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _0806D72C
- bl AdjustFriendship_step
- ldr r0, _0806D6E4 @ =gPlayerAvatar
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0806D720
- lsls r0, r4, 24
- lsrs r0, 24
- bl MetatileBehavior_IsForcedMovementTile
- lsls r0, 24
- cmp r0, 0
- bne _0806D720
- bl sub_810C4EC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D6EC
- ldr r0, _0806D6E8 @ =gUnknown_81A8CED
- bl ScriptContext1_SetupScript
- b _0806D730
- .align 2, 0
-_0806D6E0: .4byte gQuestLogState
-_0806D6E4: .4byte gPlayerAvatar
-_0806D6E8: .4byte gUnknown_81A8CED
-_0806D6EC:
- bl DoPoisonFieldEffect_step
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D704
- ldr r0, _0806D700 @ =EventScript_FieldPoison
- bl ScriptContext1_SetupScript
- b _0806D730
- .align 2, 0
-_0806D700: .4byte EventScript_FieldPoison
-_0806D704:
- bl ShouldEggHatch
- lsls r0, 24
- cmp r0, 0
- beq _0806D720
- movs r0, 0xD
- bl IncrementGameStat
- ldr r0, _0806D71C @ =EventScript_EggHatch
- bl ScriptContext1_SetupScript
- b _0806D730
- .align 2, 0
-_0806D71C: .4byte EventScript_EggHatch
-_0806D720:
- bl SafariZoneTakeStep
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806D730
-_0806D72C:
- movs r0, 0
- b _0806D732
-_0806D730:
- movs r0, 0x1
-_0806D732:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_806D698
-
- thumb_func_start sub_806D738
-sub_806D738: @ 806D738
- push {lr}
- ldr r0, _0806D748 @ =0x00004021
- movs r1, 0
- bl VarSet
- pop {r0}
- bx r0
- .align 2, 0
-_0806D748: .4byte 0x00004021
- thumb_func_end sub_806D738
-
- thumb_func_start AdjustFriendship_step
-AdjustFriendship_step: @ 806D74C
- push {r4,r5,lr}
- ldr r0, _0806D780 @ =0x00004021
- bl GetVarPointer
- ldrh r1, [r0]
- adds r1, 0x1
- strh r1, [r0]
- ldrh r1, [r0]
- movs r2, 0x7F
- ands r1, r2
- strh r1, [r0]
- cmp r1, 0
- bne _0806D77A
- ldr r5, _0806D784 @ =gPlayerParty
- movs r4, 0x5
-_0806D76A:
- adds r0, r5, 0
- movs r1, 0x5
- bl AdjustFriendship
- adds r5, 0x64
- subs r4, 0x1
- cmp r4, 0
- bge _0806D76A
-_0806D77A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0806D780: .4byte 0x00004021
-_0806D784: .4byte gPlayerParty
- thumb_func_end AdjustFriendship_step
-
- thumb_func_start ClearPoisonStepCounter
-ClearPoisonStepCounter: @ 806D788
- push {lr}
- ldr r0, _0806D798 @ =0x00004022
- movs r1, 0
- bl VarSet
- pop {r0}
- bx r0
- .align 2, 0
-_0806D798: .4byte 0x00004022
- thumb_func_end ClearPoisonStepCounter
-
- thumb_func_start DoPoisonFieldEffect_step
-DoPoisonFieldEffect_step: @ 806D79C
- push {r4,lr}
- ldr r0, _0806D7D8 @ =gMapHeader
- ldrb r0, [r0, 0x17]
- cmp r0, 0x9
- beq _0806D7E0
- ldr r0, _0806D7DC @ =0x00004022
- bl GetVarPointer
- adds r4, r0, 0
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- ldrh r0, [r4]
- movs r1, 0x5
- bl __umodsi3
- strh r0, [r4]
- lsls r0, 16
- cmp r0, 0
- bne _0806D7E0
- bl DoPoisonFieldEffect
- cmp r0, 0x1
- beq _0806D7E0
- cmp r0, 0x1
- ble _0806D7E0
- cmp r0, 0x2
- bne _0806D7E0
- movs r0, 0x1
- b _0806D7E2
- .align 2, 0
-_0806D7D8: .4byte gMapHeader
-_0806D7DC: .4byte 0x00004022
-_0806D7E0:
- movs r0, 0
-_0806D7E2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end DoPoisonFieldEffect_step
-
- thumb_func_start RestartWildEncounterImmunitySteps
-RestartWildEncounterImmunitySteps: @ 806D7E8
- push {lr}
- bl ResetEncounterRateModifiers
- pop {r0}
- bx r0
- thumb_func_end RestartWildEncounterImmunitySteps
-
- thumb_func_start is_it_battle_time_3
-is_it_battle_time_3: @ 806D7F4
- push {lr}
- bl TryStandardWildEncounter
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end is_it_battle_time_3
-
- thumb_func_start sub_806D804
-sub_806D804: @ 806D804
- push {r4-r7,lr}
- adds r6, r0, 0
- lsls r1, 16
- lsrs r3, r1, 16
- lsls r2, 24
- lsrs r5, r2, 24
- adds r7, r5, 0
- ldr r0, _0806D840 @ =gMain
- ldrh r1, [r0, 0x2C]
- movs r0, 0x30
- ands r0, r1
- cmp r0, 0
- bne _0806D890
- subs r0, r5, 0x3
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _0806D890
- adds r0, r3, 0
- adds r1, r5, 0
- bl sub_806D898
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _0806D848
- ldr r0, _0806D844 @ =gUnknown_81A76E7
- adds r1, r5, 0
- b _0806D888
- .align 2, 0
-_0806D840: .4byte gMain
-_0806D844: .4byte gUnknown_81A76E7
-_0806D848:
- cmp r4, 0x1
- bne _0806D858
- ldr r0, _0806D854 @ =gUnknown_81A76DE
- adds r1, r5, 0
- b _0806D888
- .align 2, 0
-_0806D854: .4byte gUnknown_81A76DE
-_0806D858:
- cmp r4, 0x2
- bne _0806D868
- ldr r0, _0806D864 @ =gUnknown_81A76F0
- adds r1, r5, 0
- b _0806D888
- .align 2, 0
-_0806D864: .4byte gUnknown_81A76F0
-_0806D868:
- cmp r4, 0x3
- bne _0806D878
- ldr r0, _0806D874 @ =gUnknown_81A76F9
- adds r1, r5, 0
- b _0806D888
- .align 2, 0
-_0806D874: .4byte gUnknown_81A76F9
-_0806D878:
- adds r0, r6, 0
- bl sub_806D928
- cmp r0, 0
- beq _0806D890
- cmp r4, 0xF0
- bne _0806D890
- adds r1, r7, 0
-_0806D888:
- bl sub_806D908
- movs r0, 0x1
- b _0806D892
-_0806D890:
- movs r0, 0
-_0806D892:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_806D804
-
- thumb_func_start sub_806D898
-sub_806D898: @ 806D898
- push {r4,r5,lr}
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl MetatileBehavior_IsPlayerFacingPokemonCenterSign
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D8B6
- movs r0, 0
- b _0806D902
-_0806D8B6:
- adds r0, r4, 0
- adds r1, r5, 0
- bl MetatileBehavior_IsPlayerFacingPokeMartSign
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D8CA
- movs r0, 0x1
- b _0806D902
-_0806D8CA:
- adds r0, r4, 0
- bl MetatileBehavior_IsIndigoPlateauMark
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D8DC
- movs r0, 0x2
- b _0806D902
-_0806D8DC:
- adds r0, r4, 0
- bl MetatileBehavior_IsIndigoPlateauMark2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D8EE
- movs r0, 0x3
- b _0806D902
-_0806D8EE:
- adds r0, r4, 0
- bl MetatileBehavior_IsSignpost
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806D900
- movs r0, 0xFF
- b _0806D902
-_0806D900:
- movs r0, 0xF0
-_0806D902:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_806D898
-
- thumb_func_start sub_806D908
-sub_806D908: @ 806D908
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _0806D924 @ =gSpecialVar_Facing
- strh r1, [r2]
- bl ScriptContext1_SetupScript
- bl sub_80699E0
- bl sub_8069A20
- pop {r0}
- bx r0
- .align 2, 0
-_0806D924: .4byte gSpecialVar_Facing
- thumb_func_end sub_806D908
-
- thumb_func_start sub_806D928
-sub_806D928: @ 806D928
- push {r4,lr}
- ldr r4, _0806D94C @ =gMapHeader
- ldrh r1, [r0]
- subs r1, 0x7
- lsls r1, 16
- lsrs r1, 16
- ldrh r2, [r0, 0x2]
- subs r2, 0x7
- lsls r2, 16
- lsrs r2, 16
- ldrb r3, [r0, 0x4]
- adds r0, r4, 0
- bl FindInvisibleObjectEventByPosition
- cmp r0, 0
- bne _0806D950
- movs r0, 0
- b _0806D958
- .align 2, 0
-_0806D94C: .4byte gMapHeader
-_0806D950:
- ldr r0, [r0, 0x8]
- cmp r0, 0
- bne _0806D958
- ldr r0, _0806D960 @ =Test_EventScript_Sign
-_0806D958:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0806D960: .4byte Test_EventScript_Sign
- thumb_func_end sub_806D928
-
- thumb_func_start mapheader_run_first_tag2_script_list_match_conditionally
-mapheader_run_first_tag2_script_list_match_conditionally: @ 806D964
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r7, r0, 0
- lsls r1, 16
- lsrs r4, r1, 16
- mov r10, r4
- lsls r2, 24
- lsrs r6, r2, 24
- mov r9, r6
- ldr r0, _0806D9B8 @ =gMapHeader
- mov r8, r0
- adds r1, r7, 0
- bl map_warp_check_packed
- lsls r0, 24
- asrs r5, r0, 24
- movs r0, 0x1
- negs r0, r0
- cmp r5, r0
- beq _0806DA00
- adds r0, r4, 0
- adds r1, r6, 0
- bl is_non_stair_warp_tile
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806D9BC
- bl sub_8055A08
- mov r0, r8
- adds r1, r5, 0
- adds r2, r7, 0
- bl sub_806DC54
- bl DoWarp
- movs r0, 0x1
- b _0806DA02
- .align 2, 0
-_0806D9B8: .4byte gMapHeader
-_0806D9BC:
- adds r0, r4, 0
- mov r1, r9
- bl sub_806DB84
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806DA00
- movs r4, 0
- ldr r0, _0806D9FC @ =gPlayerAvatar
- ldrb r1, [r0]
- movs r0, 0x6
- ands r0, r1
- cmp r0, 0
- beq _0806D9E2
- movs r0, 0x1
- bl SetPlayerAvatarTransitionFlags
- movs r4, 0xC
-_0806D9E2:
- bl sub_8055A08
- mov r0, r8
- adds r1, r5, 0
- adds r2, r7, 0
- bl sub_806DC54
- mov r0, r10
- adds r1, r4, 0
- bl sub_807E4A0
- movs r0, 0x1
- b _0806DA02
- .align 2, 0
-_0806D9FC: .4byte gPlayerAvatar
-_0806DA00:
- movs r0, 0
-_0806DA02:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end mapheader_run_first_tag2_script_list_match_conditionally
-
- thumb_func_start sub_806DA10
-sub_806DA10: @ 806DA10
- push {r4-r7,lr}
- adds r6, r0, 0
- lsls r1, 16
- lsrs r5, r1, 16
- ldr r7, _0806DA68 @ =gMapHeader
- adds r0, r7, 0
- adds r1, r6, 0
- bl map_warp_check_packed
- lsls r0, 24
- asrs r4, r0, 24
- movs r0, 0x1
- negs r0, r0
- cmp r4, r0
- beq _0806DAEC
- adds r0, r5, 0
- bl sub_806DAF4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806DAEC
- bl sub_8055A08
- adds r0, r7, 0
- adds r1, r4, 0
- adds r2, r6, 0
- bl sub_806DC54
- lsls r0, r5, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsEscalator
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806DA6C
- adds r0, r4, 0
- bl sub_807E560
- movs r0, 0x1
- b _0806DAEE
- .align 2, 0
-_0806DA68: .4byte gMapHeader
-_0806DA6C:
- adds r0, r4, 0
- bl MetatileBehavior_ReturnFalse_12
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806DA82
- bl sub_807E57C
- movs r0, 0x1
- b _0806DAEE
-_0806DA82:
- adds r0, r4, 0
- bl MetatileBheavior_IsMB_68
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806DA98
- bl sub_807E58C
- movs r0, 0x1
- b _0806DAEE
-_0806DA98:
- adds r0, r4, 0
- bl MetatileBehavior_IsRegularWarp
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806DAAE
- bl sub_807E59C
- movs r0, 0x1
- b _0806DAEE
-_0806DAAE:
- adds r0, r4, 0
- bl MetatileBehavior_IsUnionRoomWarp
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806DAC4
- bl sub_807E524
- movs r0, 0x1
- b _0806DAEE
-_0806DAC4:
- adds r0, r4, 0
- bl MetatileBehavior_IsFallWarp
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806DAE4
- bl ResetInitialPlayerAvatarState
- ldr r0, _0806DAE0 @ =EventScript_1C1361
- bl ScriptContext1_SetupScript
- movs r0, 0x1
- b _0806DAEE
- .align 2, 0
-_0806DAE0: .4byte EventScript_1C1361
-_0806DAE4:
- bl DoWarp
- movs r0, 0x1
- b _0806DAEE
-_0806DAEC:
- movs r0, 0
-_0806DAEE:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_806DA10
-
- thumb_func_start sub_806DAF4
-sub_806DAF4: @ 806DAF4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsWarpDoor
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806DB7C
- adds r0, r4, 0
- bl MetatileBehavior_IsLadder
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806DB7C
- adds r0, r4, 0
- bl MetatileBehavior_IsEscalator
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806DB7C
- adds r0, r4, 0
- bl MetatileBehavior_IsCaveDoor
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806DB7C
- adds r0, r4, 0
- bl MetatileBehavior_ReturnFalse_12
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806DB7C
- adds r0, r4, 0
- bl MetatileBheavior_IsMB_68
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806DB7C
- adds r0, r4, 0
- bl MetatileBehavior_IsRegularWarp
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806DB7C
- adds r0, r4, 0
- bl MetatileBehavior_IsFallWarp
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806DB7C
- adds r0, r4, 0
- bl MetatileBehavior_IsUnionRoomWarp
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0806DB7C
- movs r0, 0
- b _0806DB7E
-_0806DB7C:
- movs r0, 0x1
-_0806DB7E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_806DAF4
-
- thumb_func_start sub_806DB84
-sub_806DB84: @ 806DB84
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x3
- beq _0806DB98
- cmp r1, 0x4
- beq _0806DBB0
- b _0806DBD0
-_0806DB98:
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsUnknownWarp6D
- lsls r0, 24
- cmp r0, 0
- bne _0806DBCC
- adds r0, r4, 0
- bl MetatileBehavior_IsUnknownWarp6F
- b _0806DBC6
-_0806DBB0:
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsUnknownWarp6C
- lsls r0, 24
- cmp r0, 0
- bne _0806DBCC
- adds r0, r4, 0
- bl MetatileBehavior_IsUnknownWarp6E
-_0806DBC6:
- lsls r0, 24
- cmp r0, 0
- beq _0806DBD0
-_0806DBCC:
- movs r0, 0x1
- b _0806DBD2
-_0806DBD0:
- movs r0, 0
-_0806DBD2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_806DB84
-
- thumb_func_start is_non_stair_warp_tile
-is_non_stair_warp_tile: @ 806DBD8
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 24
- lsrs r1, 24
- adds r2, r1, 0
- cmp r1, 0x2
- beq _0806DBFC
- cmp r1, 0x2
- bgt _0806DBF2
- cmp r1, 0x1
- beq _0806DC06
- b _0806DC28
-_0806DBF2:
- cmp r2, 0x3
- beq _0806DC10
- cmp r2, 0x4
- beq _0806DC1A
- b _0806DC28
-_0806DBFC:
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsNorthArrowWarp
- b _0806DC22
-_0806DC06:
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsSouthArrowWarp
- b _0806DC22
-_0806DC10:
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsWestArrowWarp
- b _0806DC22
-_0806DC1A:
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsEastArrowWarp
-_0806DC22:
- lsls r0, 24
- lsrs r0, 24
- b _0806DC2A
-_0806DC28:
- movs r0, 0
-_0806DC2A:
- pop {r1}
- bx r1
- thumb_func_end is_non_stair_warp_tile
-
- thumb_func_start map_warp_check_packed
-map_warp_check_packed: @ 806DC30
- push {lr}
- adds r3, r1, 0
- ldrh r1, [r3]
- subs r1, 0x7
- lsls r1, 16
- lsrs r1, 16
- ldrh r2, [r3, 0x2]
- subs r2, 0x7
- lsls r2, 16
- lsrs r2, 16
- ldrb r3, [r3, 0x4]
- bl map_warp_check
- lsls r0, 24
- asrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end map_warp_check_packed
-
- thumb_func_start sub_806DC54
-sub_806DC54: @ 806DC54
- push {r4-r7,lr}
- adds r5, r2, 0
- ldr r0, _0806DC74 @ =gMapHeader
- ldr r0, [r0, 0x4]
- lsls r1, 24
- asrs r7, r1, 24
- lsls r6, r7, 3
- ldr r0, [r0, 0x8]
- adds r4, r0, r6
- ldrb r0, [r4, 0x6]
- cmp r0, 0x7F
- bne _0806DC78
- ldrb r0, [r4, 0x5]
- bl copy_saved_warp2_bank_and_enter_x_to_warp1
- b _0806DCC4
- .align 2, 0
-_0806DC74: .4byte gMapHeader
-_0806DC78:
- movs r0, 0x7
- ldrsb r0, [r4, r0]
- movs r1, 0x6
- ldrsb r1, [r4, r1]
- movs r2, 0x5
- ldrsb r2, [r4, r2]
- bl warp1_set_2
- movs r1, 0
- ldrsh r0, [r5, r1]
- movs r2, 0x2
- ldrsh r1, [r5, r2]
- bl sub_805550C
- ldrb r0, [r4, 0x7]
- ldrb r1, [r4, 0x6]
- bl Overworld_GetMapHeaderByGroupAndId
- ldr r1, [r0, 0x4]
- ldrb r0, [r4, 0x5]
- ldr r1, [r1, 0x8]
- lsls r0, 3
- adds r0, r1
- ldrb r0, [r0, 0x6]
- cmp r0, 0x7F
- bne _0806DCC4
- adds r0, r6, r1
- ldrb r0, [r0, 0x5]
- ldr r1, _0806DCCC @ =gSaveBlock1Ptr
- ldr r2, [r1]
- movs r1, 0x4
- ldrsb r1, [r2, r1]
- ldrb r2, [r2, 0x5]
- lsls r2, 24
- asrs r2, 24
- adds r3, r7, 0
- bl saved_warp2_set
-_0806DCC4:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0806DCCC: .4byte gSaveBlock1Ptr
- thumb_func_end sub_806DC54
-
- thumb_func_start map_warp_consider_2_to_inside
-map_warp_consider_2_to_inside: @ 806DCD0
- push {r4-r7,lr}
- adds r6, r0, 0
- lsls r1, 16
- lsrs r5, r1, 16
- lsls r2, 24
- lsrs r2, 24
- cmp r2, 0x2
- bne _0806DD30
- lsls r0, r5, 24
- lsrs r0, 24
- bl MetatileBehavior_IsWarpDoor
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806DD30
- ldr r7, _0806DD2C @ =gMapHeader
- adds r0, r7, 0
- adds r1, r6, 0
- bl map_warp_check_packed
- lsls r0, 24
- asrs r4, r0, 24
- movs r0, 0x1
- negs r0, r0
- cmp r4, r0
- beq _0806DD30
- adds r0, r5, 0
- bl sub_806DAF4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806DD30
- bl sub_8055A08
- adds r0, r7, 0
- adds r1, r4, 0
- adds r2, r6, 0
- bl sub_806DC54
- bl DoDoorWarp
- movs r0, 0x1
- b _0806DD32
- .align 2, 0
-_0806DD2C: .4byte gMapHeader
-_0806DD30:
- movs r0, 0
-_0806DD32:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end map_warp_consider_2_to_inside
-
- thumb_func_start map_warp_check
-map_warp_check: @ 806DD38
- push {r4-r6,lr}
- lsls r1, 16
- lsrs r6, r1, 16
- lsls r2, 16
- lsrs r5, r2, 16
- lsls r3, 24
- lsrs r4, r3, 24
- ldr r0, [r0, 0x4]
- ldr r1, [r0, 0x8]
- ldrb r3, [r0, 0x1]
- movs r2, 0
- cmp r2, r3
- bge _0806DD76
-_0806DD52:
- ldrh r0, [r1]
- cmp r0, r6
- bne _0806DD6E
- ldrh r0, [r1, 0x2]
- cmp r0, r5
- bne _0806DD6E
- ldrb r0, [r1, 0x4]
- cmp r0, r4
- beq _0806DD68
- cmp r0, 0
- bne _0806DD6E
-_0806DD68:
- lsls r0, r2, 24
- asrs r0, 24
- b _0806DD7A
-_0806DD6E:
- adds r2, 0x1
- adds r1, 0x8
- cmp r2, r3
- blt _0806DD52
-_0806DD76:
- movs r0, 0x1
- negs r0, r0
-_0806DD7A:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end map_warp_check
-
- thumb_func_start trigger_activate
-trigger_activate: @ 806DD80
- push {r4,lr}
- adds r4, r0, 0
- cmp r4, 0
- beq _0806DDB6
- ldr r1, [r4, 0xC]
- cmp r1, 0
- bne _0806DD96
- ldrb r0, [r4, 0x6]
- bl trigger_activate_weather
- b _0806DDB6
-_0806DD96:
- ldrh r0, [r4, 0x6]
- cmp r0, 0
- beq _0806DDB0
- ldrh r0, [r4, 0x6]
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r4, 0x8]
- cmp r0, r1
- bne _0806DDB6
- ldr r0, [r4, 0xC]
- b _0806DDB8
-_0806DDB0:
- adds r0, r1, 0
- bl ScriptContext2_RunNewScript
-_0806DDB6:
- movs r0, 0
-_0806DDB8:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end trigger_activate
-
- thumb_func_start mapheader_trigger_activate_at
-mapheader_trigger_activate_at: @ 806DDC0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r1, 16
- lsrs r1, 16
- mov r10, r1
- lsls r2, 16
- lsrs r2, 16
- mov r9, r2
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- ldr r0, [r0, 0x4]
- ldr r1, [r0, 0xC]
- ldrb r7, [r0, 0x2]
- movs r6, 0
- cmp r6, r7
- bge _0806DE16
- adds r5, r1, 0
- adds r4, r5, 0
-_0806DDEC:
- ldrh r0, [r4]
- cmp r0, r10
- bne _0806DE0C
- ldrh r0, [r4, 0x2]
- cmp r0, r9
- bne _0806DE0C
- ldrb r0, [r4, 0x4]
- cmp r0, r8
- beq _0806DE02
- cmp r0, 0
- bne _0806DE0C
-_0806DE02:
- adds r0, r5, 0
- bl trigger_activate
- cmp r0, 0
- bne _0806DE18
-_0806DE0C:
- adds r4, 0x10
- adds r5, 0x10
- adds r6, 0x1
- cmp r6, r7
- blt _0806DDEC
-_0806DE16:
- movs r0, 0
-_0806DE18:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end mapheader_trigger_activate_at
-
- thumb_func_start sub_806DE28
-sub_806DE28: @ 806DE28
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x10
- ldrsh r0, [r5, r1]
- movs r2, 0x12
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- cmp r0, 0x66
- bne _0806DE64
- movs r0, 0x25
- bl PlaySE
- ldrb r0, [r5, 0x8]
- ldr r4, _0806DE6C @ =gSaveBlock1Ptr
- ldr r2, [r4]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl RemoveObjectEventByLocalIdAndMap
- ldrb r0, [r5, 0x8]
- ldr r2, [r4]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl sub_805FCD8
- lsls r0, 16
- lsrs r0, 16
- bl FlagClear
-_0806DE64:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0806DE6C: .4byte gSaveBlock1Ptr
- thumb_func_end sub_806DE28
-
- thumb_func_start sub_806DE70
-sub_806DE70: @ 806DE70
- push {r4-r7,lr}
- lsls r0, 16
- lsls r1, 16
- ldr r2, _0806DEC0 @ =gMapHeader
- ldr r2, [r2, 0x4]
- ldr r4, [r2, 0xC]
- ldrb r5, [r2, 0x2]
- lsrs r7, r0, 16
- asrs r0, 16
- lsrs r6, r1, 16
- asrs r1, 16
- bl MapGridGetMetatileBehaviorAt
- cmp r0, 0x20
- bne _0806DEB8
- cmp r5, 0
- beq _0806DEB8
-_0806DE92:
- ldrh r0, [r4]
- adds r0, 0x7
- cmp r0, r7
- bne _0806DEB0
- ldrh r0, [r4, 0x2]
- adds r0, 0x7
- cmp r0, r6
- bne _0806DEB0
- bl sub_8112364
- ldr r0, [r4, 0xC]
- bl ScriptContext1_SetupScript
- bl ScriptContext2_Enable
-_0806DEB0:
- adds r4, 0x10
- subs r5, 0x1
- cmp r5, 0
- bne _0806DE92
-_0806DEB8:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0806DEC0: .4byte gMapHeader
- thumb_func_end sub_806DE70
-
- thumb_func_start sub_806DEC4
-sub_806DEC4: @ 806DEC4
- push {r4,lr}
- ldr r4, _0806DEE8 @ =gMapHeader
- ldrh r1, [r0]
- subs r1, 0x7
- lsls r1, 16
- lsrs r1, 16
- ldrh r2, [r0, 0x2]
- subs r2, 0x7
- lsls r2, 16
- lsrs r2, 16
- ldrb r3, [r0, 0x4]
- adds r0, r4, 0
- bl mapheader_trigger_activate_at
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0806DEE8: .4byte gMapHeader
- thumb_func_end sub_806DEC4
-
- thumb_func_start FindInvisibleObjectEventByPosition
-FindInvisibleObjectEventByPosition: @ 806DEEC
- push {r4-r7,lr}
- lsls r1, 16
- lsrs r7, r1, 16
- lsls r2, 16
- lsrs r6, r2, 16
- lsls r3, 24
- lsrs r5, r3, 24
- ldr r0, [r0, 0x4]
- ldr r4, [r0, 0x10]
- ldrb r3, [r0, 0x3]
- movs r2, 0
- cmp r2, r3
- bcs _0806DF32
-_0806DF06:
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r1, r0, r4
- ldrh r0, [r1]
- cmp r0, r7
- bne _0806DF28
- ldrh r0, [r1, 0x2]
- cmp r0, r6
- bne _0806DF28
- ldrb r0, [r1, 0x4]
- cmp r0, r5
- beq _0806DF24
- cmp r0, 0
- bne _0806DF28
-_0806DF24:
- adds r0, r1, 0
- b _0806DF34
-_0806DF28:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r3
- bcc _0806DF06
-_0806DF32:
- movs r0, 0
-_0806DF34:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end FindInvisibleObjectEventByPosition
-
- thumb_func_start dive_warp
-dive_warp: @ 806DF3C
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r5, r1, 16
- ldr r0, _0806DF70 @ =gMapHeader
- ldrb r0, [r0, 0x17]
- cmp r0, 0x5
- bne _0806DF74
- lsls r0, r5, 24
- lsrs r0, 24
- bl MetatileBehavior_IsMB19
- lsls r0, 24
- cmp r0, 0
- bne _0806DF74
- ldrh r0, [r4]
- subs r0, 0x7
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r4, 0x2]
- subs r1, 0x7
- lsls r1, 16
- lsrs r1, 16
- bl sub_8055824
- b _0806DF98
- .align 2, 0
-_0806DF70: .4byte gMapHeader
-_0806DF74:
- lsls r0, r5, 24
- lsrs r0, 24
- bl MetatileBehavior_IsDeepOrSemiDeepWater
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806DFB0
- ldrh r0, [r4]
- subs r0, 0x7
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r4, 0x2]
- subs r1, 0x7
- lsls r1, 16
- lsrs r1, 16
- bl sub_8055844
-_0806DF98:
- lsls r0, 24
- cmp r0, 0
- beq _0806DFB0
- bl sub_8055A08
- bl DoDiveWarp
- movs r0, 0xE2
- bl PlaySE
- movs r0, 0x1
- b _0806DFB2
-_0806DFB0:
- movs r0, 0
-_0806DFB2:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end dive_warp
-
- thumb_func_start sub_806DFB8
-sub_806DFB8: @ 806DFB8
- push {r4,r5,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl PlayerGetDestCoords
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0806E010 @ =gMapHeader
- ldrb r0, [r0, 0x17]
- cmp r0, 0x5
- bne _0806E014
- adds r0, r5, 0
- bl MetatileBehavior_IsMB19
- lsls r0, 24
- cmp r0, 0
- bne _0806E014
- mov r0, sp
- ldrh r0, [r0]
- subs r0, 0x7
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r4]
- subs r1, 0x7
- lsls r1, 16
- lsrs r1, 16
- bl sub_8055824
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806E044
- movs r0, 0x1
- b _0806E046
- .align 2, 0
-_0806E010: .4byte gMapHeader
-_0806E014:
- adds r0, r5, 0
- bl MetatileBehavior_IsDeepOrSemiDeepWater
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806E044
- mov r0, sp
- ldrh r0, [r0]
- subs r0, 0x7
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r4]
- subs r1, 0x7
- lsls r1, 16
- lsrs r1, 16
- bl sub_8055844
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806E044
- movs r0, 0x2
- b _0806E046
-_0806E044:
- movs r0, 0
-_0806E046:
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_806DFB8
-
- thumb_func_start GetObjectEventScriptPointerForComparison
-GetObjectEventScriptPointerForComparison: @ 806E050
- push {r4,r5,lr}
- sub sp, 0x8
- bl GetPlayerMovementDirection
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- mov r5, sp
- mov r0, sp
- bl player_get_next_pos_and_height
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0x2
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r0, sp
- adds r2, r4, 0
- bl sub_806CFF4
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end GetObjectEventScriptPointerForComparison
-
- thumb_func_start SetCableClubWarp
-SetCableClubWarp: @ 806E08C
- push {r4,lr}
- sub sp, 0x8
- bl GetPlayerMovementDirection
- mov r4, sp
- mov r0, sp
- bl player_get_pos_to_and_height
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0x2
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- ldr r4, _0806E0CC @ =gMapHeader
- adds r0, r4, 0
- mov r1, sp
- bl map_warp_check_packed
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- adds r0, r4, 0
- mov r2, sp
- bl sub_806DC54
- movs r0, 0
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0806E0CC: .4byte gMapHeader
- thumb_func_end SetCableClubWarp
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/overworld.s b/asm/overworld.s
index 179d79fdc..c6dad9fa7 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -1036,8 +1036,8 @@ SetWarpDestination: @ 805538C
_080553C4: .4byte gUnknown_2031DBC
thumb_func_end SetWarpDestination
- thumb_func_start warp1_set_2
-warp1_set_2: @ 80553C8
+ thumb_func_start SetWarpDestinationToMapWarp
+SetWarpDestinationToMapWarp: @ 80553C8
push {lr}
sub sp, 0x4
lsls r0, 24
@@ -1053,10 +1053,10 @@ warp1_set_2: @ 80553C8
add sp, 0x4
pop {r0}
bx r0
- thumb_func_end warp1_set_2
+ thumb_func_end SetWarpDestinationToMapWarp
- thumb_func_start saved_warp2_set
-saved_warp2_set: @ 80553E8
+ thumb_func_start SetDynamicWarp
+SetDynamicWarp: @ 80553E8
push {r4,r5,lr}
sub sp, 0x8
ldr r0, _08055418 @ =gSaveBlock1Ptr
@@ -1082,7 +1082,7 @@ saved_warp2_set: @ 80553E8
bx r0
.align 2, 0
_08055418: .4byte gSaveBlock1Ptr
- thumb_func_end saved_warp2_set
+ thumb_func_end SetDynamicWarp
thumb_func_start SetDynamicWarpWithCoords
SetDynamicWarpWithCoords: @ 805541C
@@ -1114,8 +1114,8 @@ SetDynamicWarpWithCoords: @ 805541C
_08055450: .4byte gSaveBlock1Ptr
thumb_func_end SetDynamicWarpWithCoords
- thumb_func_start copy_saved_warp2_bank_and_enter_x_to_warp1
-copy_saved_warp2_bank_and_enter_x_to_warp1: @ 8055454
+ thumb_func_start SetWarpDestinationToDynamicWarp
+SetWarpDestinationToDynamicWarp: @ 8055454
ldr r2, _08055464 @ =gUnknown_2031DBC
ldr r0, _08055468 @ =gSaveBlock1Ptr
ldr r0, [r0]
@@ -1127,7 +1127,7 @@ copy_saved_warp2_bank_and_enter_x_to_warp1: @ 8055454
.align 2, 0
_08055464: .4byte gUnknown_2031DBC
_08055468: .4byte gSaveBlock1Ptr
- thumb_func_end copy_saved_warp2_bank_and_enter_x_to_warp1
+ thumb_func_end SetWarpDestinationToDynamicWarp
thumb_func_start sub_805546C
sub_805546C: @ 805546C
@@ -1220,8 +1220,8 @@ _08055500:
_08055508: .4byte gSaveBlock1Ptr
thumb_func_end SetLastHealLocationWarp
- thumb_func_start sub_805550C
-sub_805550C: @ 805550C
+ thumb_func_start UpdateEscapeWarp
+UpdateEscapeWarp: @ 805550C
push {r4-r7,lr}
sub sp, 0x4
lsls r0, 16
@@ -1290,7 +1290,7 @@ _08055590:
.align 2, 0
_08055598: .4byte gUnknown_2031DBC
_0805559C: .4byte gSaveBlock1Ptr
- thumb_func_end sub_805550C
+ thumb_func_end UpdateEscapeWarp
thumb_func_start SetEscapeWarp
SetEscapeWarp: @ 80555A0
@@ -1650,8 +1650,8 @@ _0805581A:
bx r1
thumb_func_end sub_80557C4
- thumb_func_start sub_8055824
-sub_8055824: @ 8055824
+ thumb_func_start SetDiveWarpEmerge
+SetDiveWarpEmerge: @ 8055824
push {lr}
adds r3, r0, 0
adds r2, r1, 0
@@ -1666,10 +1666,10 @@ sub_8055824: @ 8055824
lsrs r0, 24
pop {r1}
bx r1
- thumb_func_end sub_8055824
+ thumb_func_end SetDiveWarpEmerge
- thumb_func_start sub_8055844
-sub_8055844: @ 8055844
+ thumb_func_start SetDiveWarpDive
+SetDiveWarpDive: @ 8055844
push {lr}
adds r3, r0, 0
adds r2, r1, 0
@@ -1684,7 +1684,7 @@ sub_8055844: @ 8055844
lsrs r0, 24
pop {r1}
bx r1
- thumb_func_end sub_8055844
+ thumb_func_end SetDiveWarpDive
thumb_func_start sub_8055864
sub_8055864: @ 8055864
@@ -1855,8 +1855,8 @@ sub_80559F8: @ 80559F8
_08055A04: .4byte gUnknown_2031DD4
thumb_func_end sub_80559F8
- thumb_func_start sub_8055A08
-sub_8055A08: @ 8055A08
+ thumb_func_start StoreInitialPlayerAvatarState
+StoreInitialPlayerAvatarState: @ 8055A08
push {r4,lr}
bl GetPlayerFacingDirection
ldr r4, _08055A24 @ =gUnknown_2031DD4
@@ -1906,7 +1906,7 @@ _08055A5A:
bx r0
.align 2, 0
_08055A68: .4byte gUnknown_2031DD4
- thumb_func_end sub_8055A08
+ thumb_func_end StoreInitialPlayerAvatarState
thumb_func_start sub_8055A6C
sub_8055A6C: @ 8055A6C
@@ -3259,26 +3259,26 @@ sub_805644C: @ 805644C
bl sub_805BEB8
mov r6, sp
mov r0, sp
- bl sub_806C888
+ bl FieldClearPlayerInput
mov r0, sp
adds r1, r5, 0
adds r2, r4, 0
bl FieldGetPlayerInput
mov r0, sp
- bl sub_806CD30
+ bl FieldInput_HandleCancelSignpost
bl ScriptContext2_IsEnabled
lsls r0, 24
cmp r0, 0
bne _080564BA
mov r0, sp
- bl sub_806CAC8
+ bl ProcessPlayerFieldInput
cmp r0, 0x1
bne _080564B0
ldr r0, _080564A8 @ =gUnknown_3005E88
ldrb r0, [r0]
cmp r0, 0x2
bne _0805649E
- ldr r0, _080564AC @ =gUnknown_3005078
+ ldr r0, _080564AC @ =gInputToStoreInQuestLogMaybe
bl sub_81127F8
_0805649E:
bl ScriptContext2_Enable
@@ -3286,7 +3286,7 @@ _0805649E:
b _080564BA
.align 2, 0
_080564A8: .4byte gUnknown_3005E88
-_080564AC: .4byte gUnknown_3005078
+_080564AC: .4byte gInputToStoreInQuestLogMaybe
_080564B0:
ldrb r0, [r6, 0x2]
adds r1, r5, 0
@@ -3308,18 +3308,18 @@ sub_80564C8: @ 80564C8
bl sub_805BEB8
bl sub_8111C68
mov r0, sp
- bl sub_806C888
+ bl FieldClearPlayerInput
ldr r0, _08056508 @ =gUnknown_3005E90
ldr r0, [r0]
str r0, [sp]
mov r0, sp
- bl sub_806CD30
+ bl FieldInput_HandleCancelSignpost
bl ScriptContext2_IsEnabled
lsls r0, 24
cmp r0, 0
bne _08056512
mov r0, sp
- bl sub_806CAC8
+ bl ProcessPlayerFieldInput
cmp r0, 0x1
bne _0805650C
bl ScriptContext2_Enable
@@ -3339,7 +3339,7 @@ _08056512:
bl RunQuestLogCB
_08056522:
ldr r0, _08056530 @ =gUnknown_3005E90
- bl sub_806C888
+ bl FieldClearPlayerInput
add sp, 0x4
pop {r0}
bx r0
@@ -6694,7 +6694,7 @@ sub_805801C: @ 805801C
cmp r0, 0x2
bne _0805802E
adds r0, r1, 0x4
- bl sub_806DEC4
+ bl GetCoordEventScriptAtMapPosition
b _08058030
_0805802E:
movs r0, 0
@@ -6825,7 +6825,7 @@ _08058118:
ldrb r1, [r4, 0xC]
ldrb r2, [r4, 0x3]
mov r0, sp
- bl sub_806CF38
+ bl GetInteractedLinkPlayerScript
_08058122:
add sp, 0x8
pop {r4}
diff --git a/common_syms/field_control_avatar.txt b/common_syms/field_control_avatar.txt
new file mode 100644
index 000000000..0b9b08091
--- /dev/null
+++ b/common_syms/field_control_avatar.txt
@@ -0,0 +1 @@
+gInputToStoreInQuestLogMaybe
diff --git a/common_syms/scrcmd.txt b/common_syms/scrcmd.txt
index 7fb0245af..684b63705 100644
--- a/common_syms/scrcmd.txt
+++ b/common_syms/scrcmd.txt
@@ -1 +1,2 @@
gUnknown_3005070
+gSelectedObjectEvent
diff --git a/data/event_scripts.s b/data/event_scripts.s
index 0940cf955..a4dbd9854 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -1161,8 +1161,8 @@ EventScript_GetElevatorFloor:: @ 81A7AB9
.include "data/scripts/aide.inc"
-gUnknown_81A7ADB:: @ 81A7ADB
- special sub_80CADC4
+EventScript_CancelMessageBox:: @ 81A7ADB
+ special DoPicboxCancel
release
end
diff --git a/data/maps/PalletTown/scripts.inc b/data/maps/PalletTown/scripts.inc
index eb8904713..b165ae6b9 100644
--- a/data/maps/PalletTown/scripts.inc
+++ b/data/maps/PalletTown/scripts.inc
@@ -18,7 +18,7 @@ PalletTown_OnTransition:: @ 8165465
end
PalletTown_EventScript_TryReadySignLady:: @ 8165488
- goto_if_unset FLAG_PALLET_TOWN_LADY_MOVED_FROM_SIGN, EventScript_Return
+ goto_if_unset FLAG_OPENED_START_MENU, EventScript_Return
compare VAR_MAP_SCENE_PALLET_TOWN_SIGN_LADY, 1
goto_if_ge EventScript_Return
setvar VAR_MAP_SCENE_PALLET_TOWN_SIGN_LADY, 1
@@ -447,10 +447,10 @@ PalletTown_EventScript_SignLadyShowSign:: @ 8165894
closemessage
delay 20
textcolor 3
- setflag FLAG_PALLET_TOWN_LADY_MOVED_FROM_SIGN
+ setflag FLAG_OPENED_START_MENU
setvar VAR_MAP_SCENE_PALLET_TOWN_SIGN_LADY, 1
setvar SIGN_LADY_READY, FALSE
- special sub_80699E0
+ special SetWalkingIntoSignVars
special sub_80699BC
signmsg
msgbox PalletTown_Text_PressStartToOpenMenuCopy
diff --git a/data/maps/PalletTown_ProfessorOaksLab/scripts.inc b/data/maps/PalletTown_ProfessorOaksLab/scripts.inc
index 395d4d385..461318e35 100644
--- a/data/maps/PalletTown_ProfessorOaksLab/scripts.inc
+++ b/data/maps/PalletTown_ProfessorOaksLab/scripts.inc
@@ -1274,7 +1274,7 @@ PalletTown_ProfessorOaksLab_EventScript_RivalTakesStarter:: @ 8169D2F
playfanfare MUS_FAN5
waitfanfare
setvar VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 3
- call_if_set FLAG_PALLET_TOWN_LADY_MOVED_FROM_SIGN, PalletTown_ProfessorOaksLab_EventScript_ReadyEndSignLadyScene
+ call_if_set FLAG_OPENED_START_MENU, PalletTown_ProfessorOaksLab_EventScript_ReadyEndSignLadyScene
release
end
diff --git a/data/scripts/flavor_text.inc b/data/scripts/flavor_text.inc
index 7ea879b04..29ea87a46 100644
--- a/data/scripts/flavor_text.inc
+++ b/data/scripts/flavor_text.inc
@@ -96,18 +96,18 @@ gUnknown_81A76D5:: @ 81A76D5
msgbox gUnknown_81C124B, MSGBOX_SIGN
end
-gUnknown_81A76DE:: @ 81A76DE
- msgbox gUnknown_81C0ECB, MSGBOX_SIGN
+EventScript_PokemartSign:: @ 81A76DE
+ msgbox Text_PokemartSign, MSGBOX_SIGN
end
-gUnknown_81A76E7:: @ 81A76E7
- msgbox gUnknown_81C0EF7, MSGBOX_SIGN
+EventScript_PokecenterSign:: @ 81A76E7
+ msgbox Text_PokecenterSign, MSGBOX_SIGN
end
-gUnknown_81A76F0:: @ 81A76F0
- msgbox gUnknown_81C0F19, MSGBOX_SIGN
+EventScript_Indigo_UltimateGoal:: @ 81A76F0
+ msgbox Text_Indigo_UltimateGoal, MSGBOX_SIGN
end
-gUnknown_81A76F9:: @ 81A76F9
- msgbox gUnknown_81C0F59, MSGBOX_SIGN
+EventScript_Indigo_HighestAuthority:: @ 81A76F9
+ msgbox Text_Indigo_HighestAuthority, MSGBOX_SIGN
end
diff --git a/data/scripts/obtain_item.inc b/data/scripts/obtain_item.inc
index 961be1971..e89aabfba 100644
--- a/data/scripts/obtain_item.inc
+++ b/data/scripts/obtain_item.inc
@@ -158,7 +158,7 @@ EventScript_NoRoomToPickUpItem:: @ 81A682D
setvar VAR_RESULT, FALSE
return
-EventScript_FoundHiddenItem:: @ 81A6843
+EventScript_HiddenItemScript:: @ 81A6843
lockall
textcolor 3
waitse
diff --git a/data/scripts/test.inc b/data/scripts/test.inc
index bd0497209..f909dae57 100644
--- a/data/scripts/test.inc
+++ b/data/scripts/test.inc
@@ -2,7 +2,7 @@ Test_EventScript_NPC:: @ 81C5552
msgbox Test_Text_WelcomeToWorldOfPokemon, MSGBOX_NPC
end
-Test_EventScript_Sign:: @ 81C555B
+EventScript_TestSignpostMsg:: @ 81C555B
msgbox Test_Text_ThisIsASignpost, MSGBOX_SIGN
end
diff --git a/data/specials.inc b/data/specials.inc
index dbe9deebc..ab7309c32 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -354,7 +354,7 @@ gSpecials:: @ 815FD60
def_special ForcePlayerOntoBike
def_special ListMenu
def_special ReturnToListMenu
- def_special sub_80CADC4
+ def_special DoPicboxCancel
def_special SetVermilionTrashCans
def_special sub_805D1A8
def_special SampleResortGorgeousMonAndReward
@@ -376,7 +376,7 @@ gSpecials:: @ 815FD60
def_special UnionRoomSpecial
def_special ShowWirelessCommunicationScreen
def_special EnableNationalPokedex
- def_special sub_80699E0
+ def_special SetWalkingIntoSignVars
def_special sub_80699BC
def_special sub_810C3A4
def_special SetFlavorTextFlagFromSpecialVars
diff --git a/data/text/flavor_text.inc b/data/text/flavor_text.inc
index a3e46e8d8..993da0ecb 100644
--- a/data/text/flavor_text.inc
+++ b/data/text/flavor_text.inc
@@ -30,20 +30,20 @@ gUnknown_81C0E73:: @ 81C0E73
gUnknown_81C0EAC:: @ 81C0EAC
.string "There's a pile of snacks here.$"
-gUnknown_81C0ECB:: @ 81C0ECB
+Text_PokemartSign:: @ 81C0ECB
.string "All your item needs fulfilled!\n"
.string "POKéMON MART$"
-gUnknown_81C0EF7:: @ 81C0EF7
+Text_PokecenterSign:: @ 81C0EF7
.string "Heal Your POKéMON!\n"
.string "POKéMON CENTER$"
-gUnknown_81C0F19:: @ 81C0F19
+Text_Indigo_UltimateGoal:: @ 81C0F19
.string "INDIGO PLATEAU\p"
.string "The ultimate goal of TRAINERS!\n"
.string "POKéMON LEAGUE HQ$"
-gUnknown_81C0F59:: @ 81C0F59
+Text_Indigo_HighestAuthority:: @ 81C0F59
.string "INDIGO PLATEAU\p"
.string "The highest POKéMON authority!\n"
.string "POKéMON LEAGUE HQ$"
diff --git a/include/constants/event_bg.h b/include/constants/event_bg.h
index b106a74ef..37fedf25b 100644
--- a/include/constants/event_bg.h
+++ b/include/constants/event_bg.h
@@ -7,4 +7,6 @@
#define BG_EVENT_PLAYER_FACING_EAST 3
#define BG_EVENT_PLAYER_FACING_WEST 4
+#define BG_EVENT_HIDDEN_ITEM 7
+
#endif // GUARD_CONSTANTS_EVENT_BG_H
diff --git a/include/constants/flags.h b/include/constants/flags.h
index 0bc96eb35..ccac1da3b 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -1360,7 +1360,7 @@
#define FLAG_SYS_RIBBON_GET (SYS_FLAGS + 0x3B)
#define FLAG_SYS_SAW_HELP_SYSTEM_INTRO (SYS_FLAGS + 0x3C)
#define FLAG_0x83D (SYS_FLAGS + 0x3D)
-#define FLAG_PALLET_TOWN_LADY_MOVED_FROM_SIGN (SYS_FLAGS + 0x3E)
+#define FLAG_OPENED_START_MENU (SYS_FLAGS + 0x3E)
#define FLAG_0x83F (SYS_FLAGS + 0x3F)
#define FLAG_SYS_NATIONAL_DEX (SYS_FLAGS + 0x40)
#define FLAG_SYS_PC_STORAGE_DISABLED (SYS_FLAGS + 0x41)
diff --git a/include/constants/quest_log.h b/include/constants/quest_log.h
index c1eaf3f07..b5494e7b9 100644
--- a/include/constants/quest_log.h
+++ b/include/constants/quest_log.h
@@ -118,6 +118,18 @@
#define QL_DEPARTED_MISC_BUILDING_1 8
#define QL_DEPARTED_MISC_BUILDING_2 9
+#define QL_INPUT_OFF 0
+#define QL_INPUT_UP 1
+#define QL_INPUT_DOWN 2
+#define QL_INPUT_LEFT 3
+#define QL_INPUT_RIGHT 4
+#define QL_INPUT_L 5
+#define QL_INPUT_R 6
+#define QL_INPUT_START 7
+#define QL_INPUT_SELECT 8
+#define QL_INPUT_A 9
+#define QL_INPUT_B 10
+
#define FANCLUB_MEMBER1 0
#define FANCLUB_MEMBER2 1
diff --git a/include/constants/vars.h b/include/constants/vars.h
index 640bf41fd..4a64eb095 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -49,10 +49,15 @@
// Counts up every step. Wraps around at 128.
// When wraparound occurs, the friendship of
// every party poke gets a slight boost.
-#define VAR_FRIENDSHIP_STEP_COUNT 0x4021
+#define VAR_HAPPINESS_STEP_COUNTER 0x4021
-// Maybe unused?
-#define VAR_0x4022 0x4022
+// Counts up every step while a party Pokemon is
+// poisoned. Wraps around at 5. When wraparound
+// occurs, every party Pokemon with the PSN status
+// takes 1 point of damage.
+// This is a deviation from the typical rate in
+// the series, which is 1 damage every 4 steps.
+#define VAR_POISON_STEP_COUNTER 0x4022
// Step counter. Caps at 1500. If you enter a map with
// renewable hidden items and this counter is capped,
@@ -81,8 +86,8 @@
#define VAR_QUEST_LOG_MON_COUNTS 0x4027
#define VAR_MENEWS_JISAN_STEP_COUNTER 0x4028
#define VAR_0x4029 0x4029
-#define VAR_HAPPINESS_STEP_COUNTER 0x402A
-#define VAR_POISON_STEP_COUNTER 0x402B
+#define VAR_0x402A 0x402A
+#define VAR_0x402B 0x402B
#define VAR_RESET_RTC_ENABLE 0x402C
#define VAR_0x402D 0x402D
#define VAR_0x402E 0x402E
diff --git a/include/coord_event_weather.h b/include/coord_event_weather.h
new file mode 100644
index 000000000..4996b52a6
--- /dev/null
+++ b/include/coord_event_weather.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_COORD_EVENT_WEATHER_H
+#define GUARD_COORD_EVENT_WEATHER_H
+
+void DoCoordEventWeather(u8 weatherId);
+
+#endif //GUARD_COORD_EVENT_WEATHER_H
diff --git a/include/daycare.h b/include/daycare.h
index 71eada93e..01751641e 100644
--- a/include/daycare.h
+++ b/include/daycare.h
@@ -29,5 +29,6 @@ bool8 sub_8071614(void);
void EggHatch(void);
u8 GetEggStepsToSubtract(void);
u16 sub_80722E0(void);
+bool8 ShouldEggHatch(void);
#endif // GUARD_DAYCARE_H
diff --git a/include/event_object_movement.h b/include/event_object_movement.h
index ac102d9a9..e01364e55 100644
--- a/include/event_object_movement.h
+++ b/include/event_object_movement.h
@@ -63,7 +63,8 @@ bool8 TryGetObjectEventIdByLocalIdAndMap(u8, u8, u8, u8 *);
u8 GetObjectEventIdByXY(s16, s16);
void SetObjectEventDirection(struct ObjectEvent *, u8);
u8 sub_808D4F4(void);
-void RemoveObjectEventByLocalIdAndMap(u8, u8, u8);
+void RemoveObjectEventByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup);
+u16 sub_805FCD8(u8 localId, u8 mapNum, u8 mapGroup);
void LoadPlayerObjectReflectionPalette(u16, u8);
void LoadSpecialObjectReflectionPalette(u16, u8);
void TryMoveObjectEventToMapCoords(u8, u8, u8, s16, s16);
diff --git a/include/event_scripts.h b/include/event_scripts.h
index c211e3a34..9b78854fa 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -1161,7 +1161,7 @@ extern const u8 EventScript_TryDoNormalTrainerBattle[];
extern const u8 EventScript_TryDoDoubleRematchBattle[];
extern const u8 EventScript_TryDoRematchBattle[];
extern const u8 EventScript_DoTrainerBattleFromApproach[];
-extern const u8 Test_EventScript_Sign[];
+extern const u8 EventScript_TestSignpostMsg[];
// new_game
extern const u8 EventScript_ResetAllMapFlags[];
@@ -1212,4 +1212,51 @@ extern const u8 CableClub_Text_PleaseWaitBCancel[];
// fldeff_flash
extern const u8 EventScript_FldEffFlash[];
+// field_control_avatar
+extern const u8 EventScript_CancelMessageBox[];
+extern const u8 PalletTown_PlayersHouse_2F_EventScript_PC[];
+extern const u8 EventScript_HiddenItemScript[];
+extern const u8 EventScript_PC[];
+extern const u8 EventScript_WallTownMap[];
+extern const u8 gUnknown_81A7606[];
+extern const u8 gUnknown_81A760F[];
+extern const u8 gUnknown_81A7618[];
+extern const u8 gUnknown_81A7633[];
+extern const u8 gUnknown_81A763C[];
+extern const u8 gUnknown_81A7621[];
+extern const u8 gUnknown_81A7645[];
+extern const u8 gUnknown_81A762A[];
+extern const u8 TrainerTower_EventScript_ShowTime[];
+extern const u8 gUnknown_81A764E[];
+extern const u8 gUnknown_81A7657[];
+extern const u8 gUnknown_81A7660[];
+extern const u8 gUnknown_81A7669[];
+extern const u8 gUnknown_81A7672[];
+extern const u8 gUnknown_81A767B[];
+extern const u8 gUnknown_81A7684[];
+extern const u8 gUnknown_81A768D[];
+extern const u8 gUnknown_81A7696[];
+extern const u8 gUnknown_81A769F[];
+extern const u8 gUnknown_81A76A8[];
+extern const u8 gUnknown_81A76B1[];
+extern const u8 gUnknown_81A76BA[];
+extern const u8 gUnknown_81A76C3[];
+extern const u8 gUnknown_81A76CC[];
+extern const u8 gUnknown_81A76D5[];
+extern const u8 CableClub_EventScript_81BBFD8[];
+extern const u8 EventScript_Questionnaire[];
+extern const u8 CableClub_EventScript_ShowBattleRecords[];
+extern const u8 EventScript_Indigo_UltimateGoal[];
+extern const u8 EventScript_Indigo_HighestAuthority[];
+extern const u8 EventScript_PokemartSign[];
+extern const u8 EventScript_PokecenterSign[];
+extern const u8 EventScript_CurrentTooFast[];
+extern const u8 EventScript_UseSurf[];
+extern const u8 EventScript_Waterfall[];
+extern const u8 EventScript_CantUseWaterfall[];
+extern const u8 gUnknown_81A8CED[];
+extern const u8 EventScript_FieldPoison[];
+extern const u8 EventScript_EggHatch[];
+extern const u8 EventScript_1C1361[];
+
#endif //GUARD_EVENT_SCRIPTS_H
diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h
index 4311a2b29..335076a9d 100644
--- a/include/field_control_avatar.h
+++ b/include/field_control_avatar.h
@@ -3,12 +3,37 @@
#include "global.h"
-extern u32 gUnknown_3005078;
+struct FieldInput
+{
+ bool8 pressedAButton:1;
+ bool8 checkStandardWildEncounter:1;
+ bool8 pressedStartButton:1;
+ bool8 pressedSelectButton:1;
+ bool8 heldDirection:1;
+ bool8 heldDirection2:1;
+ bool8 tookStep:1;
+ bool8 pressedBButton:1;
+ bool8 pressedRButton:1;
+ bool8 input_field_1_0:1;
+ bool8 input_field_1_1:1;
+ bool8 input_field_1_2:1;
+ bool8 input_field_1_3:1;
+ u8 dpadDirection;
+};
+
+extern struct FieldInput gInputToStoreInQuestLogMaybe;
void RestartWildEncounterImmunitySteps(void);
void ClearPoisonStepCounter(void);
-void SetCableClubWarp(void);
+int SetCableClubWarp(void);
void sub_806DE28(struct ObjectEvent *);
-void dive_warp(struct MapPosition * pos, u16 behavior);
+bool8 dive_warp(struct MapPosition * pos, u16 behavior);
+bool8 sub_806DB84(u16 metatileBehavior, u8 playerDirection);
+const u8 *GetInteractedLinkPlayerScript(struct MapPosition *position, u8 metatileBehavior, u8 direction);
+const u8 *GetCoordEventScriptAtMapPosition(struct MapPosition *position);
+void FieldClearPlayerInput(struct FieldInput *input);
+int ProcessPlayerFieldInput(struct FieldInput *input);
+void FieldInput_HandleCancelSignpost(struct FieldInput * input);
+void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys);
#endif //GUARD_FIELD_CONTROL_AVATAR_H
diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h
index a1fe590fa..d649fc02f 100644
--- a/include/field_fadetransition.h
+++ b/include/field_fadetransition.h
@@ -9,7 +9,7 @@ void DoDiveWarp(void);
void DoDoorWarp(void);
void DoFallWarp(void);
-void sub_807E59C(void);
+void DoTeleportWarp(void);
void sub_807E500(void);
void sub_807DF64(void);
void WarpFadeOutScreen(void);
@@ -22,5 +22,11 @@ void sub_807DCE4(void);
bool32 sub_807E418(void);
void palette_bg_faded_fill_black(void);
+void sub_807E4A0(u16 metatileBehavior, u16 delay);
+void DoEscalatorWarp(u8 a0);
+void DoLavaridgeGymB1FWarp(void);
+void DoLavaridgeGym1FWarp(void);
+void DoTeleportWarp(void);
+void DoUnionRoomWarp(void);
#endif // GUARD_FIELD_FADETRANSITION_H
diff --git a/include/field_specials.h b/include/field_specials.h
index b3291bf54..9c44c35bc 100644
--- a/include/field_specials.h
+++ b/include/field_specials.h
@@ -28,5 +28,8 @@ u8 GetUnlockedSeviiAreas(void);
u32 GetPlayerTrainerId(void);
bool8 CutMoveRuinValleyCheck(void);
void CutMoveOpenDottedHoleDoor(void);
+void RunMassageCooldownStepCounter(void);
+void IncrementResortGorgeousStepCounter(void);
+void IncrementBirthIslandRockStepCount(void);
#endif // GUARD_FIELD_SPECIALS_H
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index e1998afdf..3c4b5f382 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -110,20 +110,18 @@ struct ObjectEventTemplate
struct WarpEvent
{
s16 x, y;
- s8 warpId;
- u8 mapGroup;
+ u8 elevation;
+ u8 warpId;
u8 mapNum;
- u8 unk7;
+ u8 mapGroup;
};
struct CoordEvent
{
- s16 x, y;
- u8 unk4;
- u8 filler_5;
+ u16 x, y;
+ u8 elevation;
u16 trigger;
u16 index;
- u8 filler_A[0x2];
u8 *script;
};
@@ -152,7 +150,7 @@ union BgUnion
struct BgEvent
{
u16 x, y;
- u8 unk4;
+ u8 elevation;
u8 kind;
// 0x2 padding for the union beginning.
union BgUnion bgUnion;
@@ -318,6 +316,14 @@ enum
COLLISION_HORIZONTAL_RAIL,
};
+// player running states
+enum
+{
+ NOT_MOVING,
+ TURN_DIRECTION, // not the same as turning! turns your avatar without moving. also known as a turn frame in some circles
+ MOVING,
+};
+
// player tile transition states
enum
{
diff --git a/include/item_menu.h b/include/item_menu.h
index 27bd73e72..fe593ff02 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -41,5 +41,6 @@ void InitOldManBag(void);
void Pocket_CalculateNItemsAndMaxShowed(u8 pocketId);
void PocketCalculateInitialCursorPosAndItemsAbove(u8 pocketId);
void GoToBagMenu(u8 menuType, u8 pocket, MainCallback callback);
+bool8 UseRegisteredKeyItemOnField(void);
#endif //GUARD_ITEM_MENU_H
diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h
index 91a1824e5..ae3e6a01d 100644
--- a/include/metatile_behavior.h
+++ b/include/metatile_behavior.h
@@ -62,8 +62,8 @@ bool8 MetatileBehavior_UnusedIsMB_01(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedIsTallGrass(u8 metatileBehavior);
bool8 MetatileBehavior_IsIndoorEncounter(u8 metatileBehavior);
bool8 MetatileBehavior_IsMountain(u8 metatileBehavior);
-bool8 MetatileBehavior_IsDeepOrSemiDeepWater(u8 metatileBehavior);
-bool8 MetatileBehavior_IsMB19(u8 metatileBehavior);
+bool8 MetatileBehavior_IsDiveable(u8 metatileBehavior);
+bool8 MetatileBehavior_IsUnableToEmerge(u8 metatileBehavior);
bool8 MetatileBehavior_IsShallowFlowingWater(u8 metatileBehavior);
bool8 MetatileBehavior_IsThinIce(u8 metatileBehavior);
bool8 MetatileBehavior_IsCrackedIce(u8 metatileBehavior);
@@ -89,9 +89,9 @@ bool8 MetatileBehavior_UnusedReturnFalse_5(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedReturnFalse_6(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedReturnFalse_7(u8 metatileBehavior);
bool8 MetatileBehavior_UnusedReturnFalse_8(u8 metatileBehavior);
-bool8 MetatileBehavior_ReturnFalse_12(u8 metatileBehavior);
-bool8 MetatileBheavior_IsMB_68(u8 metatileBehavior);
-bool8 MetatileBehavior_IsRegularWarp(u8 metatileBehavior);
+bool8 MetatileBehavior_IsLavaridgeB1FWarp(u8 metatileBehavior);
+bool8 MetatileBehavior_IsLavaridge1FWarp(u8 metatileBehavior);
+bool8 MetatileBehavior_IsWarpPad(u8 metatileBehavior);
bool8 MetatileBehavior_IsUnionRoomWarp(u8 metatileBehavior);
bool8 MetatileBehavior_IsWater(u8 metatileBehavior);
bool8 MetatileBehavior_IsFallWarp(u8 metatileBehavior);
diff --git a/include/overworld.h b/include/overworld.h
index 37274dfb4..bd4dda9b6 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -72,7 +72,7 @@ void Overworld_SetMapObjTemplateMovementType(u8, u8);
void SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
-void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId);
+void SetDynamicWarp(int unused, s8 mapGroup, s8 mapNum, s8 warpId);
void SetDynamicWarpWithCoords(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
void SetFixedDiveWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
void SetFixedHoleWarp(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
@@ -110,9 +110,9 @@ void WarpIntoMap(void);
u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum);
void sub_8086194(void);
void sub_8084CCC(u8 spawn);
-void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpNum);
+void SetWarpDestinationToMapWarp(s8 mapGroup, s8 mapNum, s8 warpNum);
void c2_load_new_map(void);
-void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
+void SetWarpDestinationToDynamicWarp(u8 unused);
void mapldr_default(void);
u32 GetGameStat(u8 statId);
@@ -194,6 +194,10 @@ void SetMainCallback1(MainCallback cb);
void CB1_Overworld(void);
void sub_80568C4(void);
u8 GetLastUsedWarpMapSectionId(void);
+void StoreInitialPlayerAvatarState(void);
+void UpdateEscapeWarp(s16 x, s16 y);
+bool8 SetDiveWarpEmerge(u16 x, u16 y);
+bool8 SetDiveWarpDive(u16 x, u16 y);
extern u16 *gBGTilemapBuffers1;
extern u16 *gBGTilemapBuffers2;
diff --git a/include/script.h b/include/script.h
index 2fb732396..3dd91ca59 100644
--- a/include/script.h
+++ b/include/script.h
@@ -53,27 +53,34 @@ void mapheader_run_script_with_tag_x3(void);
void mapheader_run_script_with_tag_x5(void);
void mapheader_run_script_with_tag_x7(void);
void mapheader_run_script_with_tag_x6(void);
-bool8 mapheader_run_first_tag2_script_list_match(void);
+bool8 TryRunOnFrameMapScript(void);
void mapheader_run_first_tag4_script_list_match(void);
u32 CalculateRamScriptChecksum(void);
void ClearRamScript(void);
bool8 InitRamScript(u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objectId);
-u8 *GetRamScript(u8 objectId, u8 *script);
+const u8 *GetRamScript(u8 objectId, const u8 *script);
bool32 sub_80991F8(void);
u8 *sub_8099244(void);
void sub_80992A0(u8 *script, u16 scriptSize);
bool32 ValidateRamScript(void);
void MEventSetRamScript(u8 * script, u16 scriptSize);
u8 * sub_8069E48(void);
-void sub_8069998(u8 var);
-void sub_80699F8(void);
-void sub_8069964(void);
-void sub_80699A4(void);
-void sub_8069970(void);
-void sub_8069A20(void);
-void sub_8069A2C(void);
+void RegisterQuestLogInput(u8 var);
+void ClearMsgBoxCancelableState(void);
+void SetQuestLogInputIsDpadFlag(void);
+void ClearQuestLogInput(void);
+void ClearQuestLogInputIsDpadFlag(void);
+void MsgSetSignPost(void);
+void MsgSetNotSignPost(void);
bool8 IsMsgSignPost(void);
+bool8 IsQuestLogInputDpad(void);
+u8 GetRegisteredQuestLogInput(void);
+void ResetFacingNpcOrSignPostVars(void);
+bool8 CanWalkAwayToCancelMsgBox(void);
+void SetWalkingIntoSignVars(void);
+bool8 sub_80699D4(void);
extern const u8 *gRAMScriptPtr;
+extern u8 gWalkAwayFromSignInhibitTimer;
#endif // GUARD_SCRIPT_H
diff --git a/include/script_menu.h b/include/script_menu.h
index 0e166e7c7..006ce5578 100644
--- a/include/script_menu.h
+++ b/include/script_menu.h
@@ -15,6 +15,6 @@ void ScriptMenu_DisplayPCStartupPrompt(void);
bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void);
void QLPlaybackCB_DestroyScriptMenuMonPicSprites(void);
-void sub_809D424(void);
+void PicboxCancel(void);
#endif //GUARD_SCRIPT_MENU_H
diff --git a/include/vs_seeker.h b/include/vs_seeker.h
index 2d88417fa..d80e558ea 100644
--- a/include/vs_seeker.h
+++ b/include/vs_seeker.h
@@ -14,5 +14,6 @@ bool8 sub_810CF04(u8 a0);
u8 sub_810CF54();
void sub_810D0D0(void);
void sub_810CB90(void);
+bool8 sub_810C4EC(void);
#endif //GUARD_VS_SEEKER_H
diff --git a/include/wild_encounter.h b/include/wild_encounter.h
index 5d57ddd12..fd44b7d4a 100644
--- a/include/wild_encounter.h
+++ b/include/wild_encounter.h
@@ -46,5 +46,6 @@ u8 GetUnownLetterByPersonalityLoByte(u32 personality);
bool8 SweetScentWildEncounter(void);
void SeedWildEncounterRng(u16 randVal);
void ResetEncounterRateModifiers(void);
+bool8 TryStandardWildEncounter(u32 currMetatileBehavior);
#endif // GUARD_WILD_ENCOUNTER_H
diff --git a/ld_script.txt b/ld_script.txt
index 01e1d0eb3..c92132b90 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -99,7 +99,7 @@ SECTIONS {
src/text_window_graphics.o(.text);
src/script.o(.text);
src/scrcmd.o(.text);
- asm/field_control_avatar.o(.text);
+ src/field_control_avatar.o(.text);
src/event_data.o(.text);
src/coord_event_weather.o(.text);
src/field_tasks.o(.text);
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 1abbbcec6..df8a3ac45 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -974,7 +974,7 @@ const u8 *BattleSetup_GetScriptAddrAfterBattle(void)
if (sTrainerBattleEndScript != NULL)
return sTrainerBattleEndScript;
else
- return Test_EventScript_Sign;
+ return EventScript_TestSignpostMsg;
}
const u8 *BattleSetup_GetTrainerPostBattleScript(void)
@@ -982,7 +982,7 @@ const u8 *BattleSetup_GetTrainerPostBattleScript(void)
if (sTrainerABattleScriptRetAddr != NULL)
return sTrainerABattleScriptRetAddr;
else
- return Test_EventScript_Sign;
+ return EventScript_TestSignpostMsg;
}
void ShowTrainerCantBattleSpeech(void)
diff --git a/src/cable_club.c b/src/cable_club.c
index b7f9b9114..bc41ca4f6 100644
--- a/src/cable_club.c
+++ b/src/cable_club.c
@@ -762,7 +762,7 @@ void CleanupLinkRoomState(void)
LoadPlayerParty();
SavePlayerBag();
}
- copy_saved_warp2_bank_and_enter_x_to_warp1(127);
+ SetWarpDestinationToDynamicWarp(127);
}
void ExitLinkRoom(void)
diff --git a/src/coord_event_weather.c b/src/coord_event_weather.c
index 4dbdd574b..ca1da728d 100644
--- a/src/coord_event_weather.c
+++ b/src/coord_event_weather.c
@@ -1,46 +1,48 @@
#include "global.h"
+#include "constants/weather.h"
-void nullsub_27(void) {}
-void nullsub_28(void) {}
-void nullsub_29(void) {}
-void nullsub_30(void) {}
-void nullsub_31(void) {}
-void nullsub_32(void) {}
-void nullsub_33(void) {}
-void nullsub_34(void) {}
-void nullsub_35(void) {}
-void nullsub_36(void) {}
-void nullsub_37(void) {}
-void nullsub_38(void) {}
-void nullsub_39(void) {}
+// These were all dummied out because it's always sunny in Viridian
+void WeatherCoordEvent_SunnyClouds(void) {}
+void WeatherCoordEvent_Sunny(void) {}
+void WeatherCoordEvent_Rain(void) {}
+void WeatherCoordEvent_Snow(void) {}
+void WeatherCoordEvent_RainThunderstorm(void) {}
+void WeatherCoordEvent_FogHorizontal(void) {}
+void WeatherCoordEvent_VolcanicAsh(void) {}
+void WeatherCoordEvent_Sandstorm(void) {}
+void WeatherCoordEvent_FogDiagonal(void) {}
+void WeatherCoordEvent_Underwater(void) {}
+void WeatherCoordEvent_Shade(void) {}
+void WeatherCoordEvent_Route119Cycle(void) {}
+void WeatherCoordEvent_Route123Cycle(void) {}
-struct {
+static struct {
u8 weatherId;
void (*callback)(void);
-} const gUnknown_83A72A8[] = {
- {0x01, nullsub_27},
- {0x02, nullsub_28},
- {0x03, nullsub_29},
- {0x04, nullsub_30},
- {0x05, nullsub_31},
- {0x06, nullsub_32},
- {0x07, nullsub_33},
- {0x08, nullsub_34},
- {0x09, nullsub_35},
- {0x0a, nullsub_36},
- {0x0b, nullsub_37},
- {0x14, nullsub_38},
- {0x15, nullsub_39}
+} const sWeatherCoordEventFuncs[] = {
+ {WEATHER_SUNNY_CLOUDS, WeatherCoordEvent_SunnyClouds },
+ {WEATHER_SUNNY, WeatherCoordEvent_Sunny },
+ {WEATHER_RAIN, WeatherCoordEvent_Rain },
+ {WEATHER_SNOW, WeatherCoordEvent_Snow },
+ {WEATHER_RAIN_THUNDERSTORM, WeatherCoordEvent_RainThunderstorm},
+ {WEATHER_FOG_HORIZONTAL, WeatherCoordEvent_FogHorizontal },
+ {WEATHER_VOLCANIC_ASH, WeatherCoordEvent_VolcanicAsh },
+ {WEATHER_SANDSTORM, WeatherCoordEvent_Sandstorm },
+ {WEATHER_FOG_DIAGONAL, WeatherCoordEvent_FogDiagonal },
+ {WEATHER_UNDERWATER, WeatherCoordEvent_Underwater },
+ {WEATHER_SHADE, WeatherCoordEvent_Shade },
+ {WEATHER_ROUTE119_CYCLE, WeatherCoordEvent_Route119Cycle },
+ {WEATHER_ROUTE123_CYCLE, WeatherCoordEvent_Route123Cycle }
};
-void trigger_activate_weather(u8 weatherId)
+void DoCoordEventWeather(u8 weatherId)
{
u8 i;
- for (i = 0; i < NELEMS(gUnknown_83A72A8); i++)
+ for (i = 0; i < NELEMS(sWeatherCoordEventFuncs); i++)
{
- if (gUnknown_83A72A8[i].weatherId == weatherId)
+ if (sWeatherCoordEventFuncs[i].weatherId == weatherId)
{
- gUnknown_83A72A8[i].callback();
+ sWeatherCoordEventFuncs[i].callback();
return;
}
}
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c
new file mode 100644
index 000000000..89b90ca92
--- /dev/null
+++ b/src/field_control_avatar.c
@@ -0,0 +1,1183 @@
+#include "global.h"
+#include "gflib.h"
+#include "bike.h"
+#include "coord_event_weather.h"
+#include "daycare.h"
+#include "event_data.h"
+#include "event_object_movement.h"
+#include "event_scripts.h"
+#include "fieldmap.h"
+#include "field_control_avatar.h"
+#include "field_fadetransition.h"
+#include "field_player_avatar.h"
+#include "field_poison.h"
+#include "field_specials.h"
+#include "item_menu.h"
+#include "link.h"
+#include "menews_jisan.h"
+#include "metatile_behavior.h"
+#include "overworld.h"
+#include "renewable_hidden_items.h"
+#include "quest_log.h"
+#include "safari_zone.h"
+#include "script.h"
+#include "start_menu.h"
+#include "trainer_see.h"
+#include "vs_seeker.h"
+#include "wild_encounter.h"
+#include "constants/songs.h"
+#include "constants/event_bg.h"
+#include "constants/event_objects.h"
+#include "constants/maps.h"
+#include "constants/metatile_behaviors.h"
+
+#define SIGNPOST_POKECENTER 0
+#define SIGNPOST_POKEMART 1
+#define SIGNPOST_INDIGO_1 2
+#define SIGNPOST_INDIGO_2 3
+#define SIGNPOST_SCRIPTED 240
+#define SIGNPOST_NA 255
+
+static void QuestLogOverrideJoyVars(struct FieldInput *input, u16 *newKeys, u16 *heldKeys);
+static void Task_QuestLogPlayback_OpenStartMenu(u8 taskId);
+static void GetPlayerPosition(struct MapPosition * position);
+static void GetInFrontOfPlayerPosition(struct MapPosition * position);
+static u16 GetPlayerCurMetatileBehavior(void);
+static bool8 TryStartInteractionScript(struct MapPosition * position, u16 metatileBehavior, u8 playerDirection);
+static const u8 *GetInteractionScript(struct MapPosition * position, u8 metatileBehavior, u8 playerDirection);
+static const u8 *GetInteractedObjectEventScript(struct MapPosition * position, u8 metatileBehavior, u8 playerDirection);
+static const u8 *GetInteractedBackgroundEventScript(struct MapPosition * position, u8 metatileBehavior, u8 playerDirection);
+static const struct BgEvent *GetBackgroundEventAtPosition(struct MapHeader *, u16, u16, u8);
+static const u8 *GetInteractedMetatileScript(struct MapPosition * position, u8 metatileBehavior, u8 playerDirection);
+static const u8 *GetInteractedWaterScript(struct MapPosition * position, u8 metatileBehavior, u8 playerDirection);
+static bool8 TryStartStepBasedScript(struct MapPosition * position, u16 metatileBehavior, u16 playerDirection);
+static bool8 TryStartCoordEventScript(struct MapPosition * position);
+static bool8 TryStartMiscWalkingScripts(u16 metatileBehavior);
+static bool8 TryStartStepCountScript(u16 metatileBehavior);
+static void UpdateHappinessStepCounter(void);
+static bool8 UpdatePoisonStepCounter(void);
+static bool8 CheckStandardWildEncounter(u32 encounter);
+static bool8 TrySetUpWalkIntoSignpostScript(struct MapPosition * position, u16 metatileBehavior, u8 playerDirection);
+static void SetUpWalkIntoSignScript(const u8 *script, u8 playerDirection);
+static u8 GetFacingSignpostType(u16 metatileBehvaior, u8 direction);
+static const u8 *GetSignpostScriptAtMapPosition(struct MapPosition * position);
+static bool8 TryArrowWarp(struct MapPosition * position, u16 metatileBehavior, u8 playerDirection);
+static bool8 TryStartWarpEventScript(struct MapPosition * position, u16 metatileBehavior);
+static bool8 IsWarpMetatileBehavior(u16 metatileBehavior);
+static void SetupWarp(struct MapHeader * mapHeader, s8 warpId, struct MapPosition * position);
+static bool8 IsArrowWarpMetatileBehavior(u16 metatileBehavior, u8 playerDirection);
+static s8 GetWarpEventAtMapPosition(struct MapHeader * mapHeader, struct MapPosition * mapPosition);
+static bool8 TryDoorWarp(struct MapPosition * position, u16 metatileBehavior, u8 playerDirection);
+static s8 GetWarpEventAtPosition(struct MapHeader * mapHeader, u16 x, u16 y, u8 z);
+static const u8 *GetCoordEventScriptAtPosition(struct MapHeader * mapHeader, u16 x, u16 y, u8 z);
+
+struct FieldInput gInputToStoreInQuestLogMaybe;
+
+void FieldClearPlayerInput(struct FieldInput *input)
+{
+ input->pressedAButton = FALSE;
+ input->checkStandardWildEncounter = FALSE;
+ input->pressedStartButton = FALSE;
+ input->pressedSelectButton = FALSE;
+ input->heldDirection = FALSE;
+ input->heldDirection2 = FALSE;
+ input->tookStep = FALSE;
+ input->pressedBButton = FALSE;
+ input->pressedRButton = FALSE;
+ input->input_field_1_0 = FALSE;
+ input->input_field_1_1 = FALSE;
+ input->input_field_1_2 = FALSE;
+ input->input_field_1_3 = FALSE;
+ input->dpadDirection = 0;
+}
+
+void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys)
+{
+ u8 runningState = gPlayerAvatar.runningState;
+ u8 tileTransitionState = gPlayerAvatar.tileTransitionState;
+ bool8 forcedMove = MetatileBehavior_IsForcedMovementTile(GetPlayerCurMetatileBehavior());
+
+ if (!ScriptContext1_IsScriptSetUp() && IsQuestLogInputDpad() == TRUE)
+ {
+ QuestLogOverrideJoyVars(input, &newKeys, &heldKeys);
+ }
+ if ((tileTransitionState == T_TILE_CENTER && forcedMove == FALSE) || tileTransitionState == T_NOT_MOVING)
+ {
+ if (GetPlayerSpeed() != 4)
+ {
+ if ((newKeys & START_BUTTON) && !(gPlayerAvatar.flags & 0x40))
+ input->pressedStartButton = TRUE;
+ if (gQuestLogState != QL_STATE_2 && gQuestLogState != QL_STATE_3)
+ {
+ if (!(gPlayerAvatar.flags & 0x40))
+ {
+ if (newKeys & SELECT_BUTTON)
+ input->pressedSelectButton = TRUE;
+ if (newKeys & A_BUTTON)
+ input->pressedAButton = TRUE;
+ if (newKeys & B_BUTTON)
+ input->pressedBButton = TRUE;
+ if (newKeys & R_BUTTON)
+ input->pressedRButton = TRUE;
+ }
+ }
+ }
+
+ if (gQuestLogState != QL_STATE_2 && gQuestLogState != QL_STATE_3)
+ {
+ if (heldKeys & (DPAD_UP | DPAD_DOWN | DPAD_LEFT | DPAD_RIGHT))
+ {
+ input->heldDirection = TRUE;
+ input->heldDirection2 = TRUE;
+ }
+ }
+
+ }
+
+ if (forcedMove == FALSE)
+ {
+ if (tileTransitionState == T_TILE_CENTER && runningState == MOVING)
+ input->tookStep = TRUE;
+ if (forcedMove == FALSE && tileTransitionState == T_TILE_CENTER)
+ input->checkStandardWildEncounter = TRUE;
+ }
+
+ if (gQuestLogState != QL_STATE_2 && gQuestLogState != QL_STATE_3)
+ {
+ if (heldKeys & DPAD_UP)
+ input->dpadDirection = DIR_NORTH;
+ else if (heldKeys & DPAD_DOWN)
+ input->dpadDirection = DIR_SOUTH;
+ else if (heldKeys & DPAD_LEFT)
+ input->dpadDirection = DIR_WEST;
+ else if (heldKeys & DPAD_RIGHT)
+ input->dpadDirection = DIR_EAST;
+ }
+}
+
+static void QuestLogOverrideJoyVars(struct FieldInput *input, u16 *newKeys, u16 *heldKeys)
+{
+ switch (GetRegisteredQuestLogInput())
+ {
+ case QL_INPUT_OFF:
+ break;
+ case QL_INPUT_UP:
+ *heldKeys = *newKeys = DPAD_UP;
+ break;
+ case QL_INPUT_DOWN:
+ *heldKeys = *newKeys = DPAD_DOWN;
+ break;
+ case QL_INPUT_LEFT:
+ *heldKeys = *newKeys = DPAD_LEFT;
+ break;
+ case QL_INPUT_RIGHT:
+ *heldKeys = *newKeys = DPAD_RIGHT;
+ break;
+ case QL_INPUT_L:
+ *heldKeys = *newKeys = L_BUTTON;
+ break;
+ case QL_INPUT_R:
+ *heldKeys = *newKeys = R_BUTTON;
+ break;
+ case QL_INPUT_START:
+ *heldKeys = *newKeys = START_BUTTON;
+ break;
+ case QL_INPUT_SELECT:
+ *heldKeys = *newKeys = SELECT_BUTTON;
+ break;
+ }
+ ClearQuestLogInputIsDpadFlag();
+ ClearQuestLogInput();
+}
+
+int ProcessPlayerFieldInput(struct FieldInput *input)
+{
+ struct MapPosition position;
+ u8 playerDirection;
+ u16 metatileBehavior;
+ u32 r8;
+
+ ResetFacingNpcOrSignPostVars();
+ playerDirection = GetPlayerFacingDirection();
+ GetPlayerPosition(&position);
+ r8 = MapGridGetMetatileAttributeAt(position.x, position.y, 0xFF);
+ metatileBehavior = MapGridGetMetatileBehaviorAt(position.x, position.y);
+
+ FieldClearPlayerInput(&gInputToStoreInQuestLogMaybe);
+ gInputToStoreInQuestLogMaybe.dpadDirection = input->dpadDirection;
+
+ if (CheckForTrainersWantingBattle() == TRUE)
+ return TRUE;
+
+ if (TryRunOnFrameMapScript() == TRUE)
+ return TRUE;
+
+ if (input->tookStep)
+ {
+ IncrementGameStat(GAME_STAT_STEPS);
+ MENewsJisanStepCounter();
+ IncrementRenewableHiddenItemStepCounter();
+ RunMassageCooldownStepCounter();
+ IncrementResortGorgeousStepCounter();
+ IncrementBirthIslandRockStepCount();
+ if (TryStartStepBasedScript(&position, metatileBehavior, playerDirection) == TRUE)
+ {
+ gInputToStoreInQuestLogMaybe.tookStep = TRUE;
+ return TRUE;
+ }
+ }
+ if (input->checkStandardWildEncounter)
+ {
+ if (input->dpadDirection == 0 || input->dpadDirection == playerDirection)
+ {
+ GetInFrontOfPlayerPosition(&position);
+ metatileBehavior = MapGridGetMetatileBehaviorAt(position.x, position.y);
+ if (TrySetUpWalkIntoSignpostScript(&position, metatileBehavior, playerDirection) == TRUE)
+ {
+ gInputToStoreInQuestLogMaybe.checkStandardWildEncounter = TRUE;
+ return TRUE;
+ }
+ GetPlayerPosition(&position);
+ metatileBehavior = MapGridGetMetatileBehaviorAt(position.x, position.y);
+ }
+ }
+ if (input->checkStandardWildEncounter && CheckStandardWildEncounter(r8) == TRUE)
+ {
+ gInputToStoreInQuestLogMaybe.checkStandardWildEncounter = TRUE;
+ return TRUE;
+ }
+ if (input->heldDirection && input->dpadDirection == playerDirection)
+ {
+ if (TryArrowWarp(&position, metatileBehavior, playerDirection) == TRUE)
+ {
+ gInputToStoreInQuestLogMaybe.heldDirection = TRUE;
+ return TRUE;
+ }
+ }
+
+ GetInFrontOfPlayerPosition(&position);
+ metatileBehavior = MapGridGetMetatileBehaviorAt(position.x, position.y);
+ if (input->heldDirection && input->dpadDirection == playerDirection)
+ {
+ if (TrySetUpWalkIntoSignpostScript(&position, metatileBehavior, playerDirection) == TRUE)
+ {
+ gInputToStoreInQuestLogMaybe.heldDirection = TRUE;
+ return TRUE;
+ }
+ }
+
+ if (input->pressedAButton && TryStartInteractionScript(&position, metatileBehavior, playerDirection) == TRUE)
+ {
+ gInputToStoreInQuestLogMaybe.pressedAButton = TRUE;
+ return TRUE;
+ }
+
+ if (input->heldDirection2 && input->dpadDirection == playerDirection)
+ {
+ if (TryDoorWarp(&position, metatileBehavior, playerDirection) == TRUE)
+ {
+ gInputToStoreInQuestLogMaybe.heldDirection2 = TRUE;
+ return TRUE;
+ }
+ }
+
+ if (input->pressedStartButton)
+ {
+ gInputToStoreInQuestLogMaybe.pressedStartButton = TRUE;
+ FlagSet(FLAG_OPENED_START_MENU);
+ PlaySE(SE_WIN_OPEN);
+ ShowStartMenu();
+ return TRUE;
+ }
+ if (input->pressedSelectButton && UseRegisteredKeyItemOnField() == TRUE)
+ {
+ gInputToStoreInQuestLogMaybe.pressedSelectButton = TRUE;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void FieldInput_HandleCancelSignpost(struct FieldInput * input)
+{
+ if (ScriptContext1_IsScriptSetUp() == TRUE)
+ {
+ if (gWalkAwayFromSignInhibitTimer != 0)
+ gWalkAwayFromSignInhibitTimer--;
+ else if (CanWalkAwayToCancelMsgBox() == TRUE)
+ {
+ if (input->dpadDirection != 0 && GetPlayerFacingDirection() != input->dpadDirection)
+ {
+ if (sub_80699D4() == TRUE)
+ return;
+ if (input->dpadDirection == DIR_NORTH)
+ RegisterQuestLogInput(QL_INPUT_UP);
+ else if (input->dpadDirection == DIR_SOUTH)
+ RegisterQuestLogInput(QL_INPUT_DOWN);
+ else if (input->dpadDirection == DIR_WEST)
+ RegisterQuestLogInput(QL_INPUT_LEFT);
+ else if (input->dpadDirection == DIR_EAST)
+ RegisterQuestLogInput(QL_INPUT_RIGHT);
+ ScriptContext1_SetupScript(EventScript_CancelMessageBox);
+ ScriptContext2_Enable();
+ }
+ else if (input->pressedStartButton)
+ {
+ ScriptContext1_SetupScript(EventScript_CancelMessageBox);
+ ScriptContext2_Enable();
+ if (!FuncIsActiveTask(Task_QuestLogPlayback_OpenStartMenu))
+ CreateTask(Task_QuestLogPlayback_OpenStartMenu, 8);
+ }
+ }
+ }
+}
+
+static void Task_QuestLogPlayback_OpenStartMenu(u8 taskId)
+{
+ if (!ScriptContext2_IsEnabled())
+ {
+ PlaySE(SE_WIN_OPEN);
+ ShowStartMenu();
+ DestroyTask(taskId);
+ }
+}
+
+static void GetPlayerPosition(struct MapPosition *position)
+{
+ PlayerGetDestCoords(&position->x, &position->y);
+ position->height = PlayerGetZCoord();
+}
+
+static void GetInFrontOfPlayerPosition(struct MapPosition *position)
+{
+ s16 x, y;
+
+ GetXYCoordsOneStepInFrontOfPlayer(&position->x, &position->y);
+ PlayerGetDestCoords(&x, &y);
+ if (MapGridGetZCoordAt(x, y) != 0)
+ position->height = PlayerGetZCoord();
+ else
+ position->height = 0;
+}
+
+static u16 GetPlayerCurMetatileBehavior(void)
+{
+ s16 x, y;
+
+ PlayerGetDestCoords(&x, &y);
+ return MapGridGetMetatileBehaviorAt(x, y);
+}
+
+static bool8 TryStartInteractionScript(struct MapPosition *position, u16 metatileBehavior, u8 direction)
+{
+ const u8 *script = GetInteractionScript(position, metatileBehavior, direction);
+ if (script == NULL)
+ return FALSE;
+
+ // Don't play interaction sound for certain scripts.
+ if (script != PalletTown_PlayersHouse_2F_EventScript_PC
+ && script != EventScript_PC)
+ PlaySE(SE_SELECT);
+
+ ScriptContext1_SetupScript(script);
+ return TRUE;
+}
+
+static const u8 *GetInteractionScript(struct MapPosition *position, u8 metatileBehavior, u8 direction)
+{
+ const u8 *script = GetInteractedObjectEventScript(position, metatileBehavior, direction);
+ if (script != NULL)
+ return script;
+
+ script = GetInteractedBackgroundEventScript(position, metatileBehavior, direction);
+ if (script != NULL)
+ return script;
+
+ script = GetInteractedMetatileScript(position, metatileBehavior, direction);
+ if (script != NULL)
+ return script;
+
+ script = GetInteractedWaterScript(position, metatileBehavior, direction);
+ if (script != NULL)
+ return script;
+
+ return NULL;
+}
+
+const u8 *GetInteractedLinkPlayerScript(struct MapPosition *position, u8 metatileBehavior, u8 direction)
+{
+ u8 objectEventId;
+ s32 i;
+
+ if (!MetatileBehavior_IsCounter(MapGridGetMetatileBehaviorAt(position->x, position->y)))
+ objectEventId = GetObjectEventIdByXYZ(position->x, position->y, position->height);
+ else
+ objectEventId = GetObjectEventIdByXYZ(position->x + gDirectionToVectors[direction].x, position->y + gDirectionToVectors[direction].y, position->height);
+
+ if (objectEventId == OBJECT_EVENTS_COUNT || gObjectEvents[objectEventId].localId == OBJ_EVENT_ID_PLAYER)
+ return NULL;
+
+ for (i = 0; i < MAX_LINK_PLAYERS; i++)
+ {
+ if (gLinkPlayerObjectEvents[i].active == TRUE && gLinkPlayerObjectEvents[i].objEventId == objectEventId)
+ return NULL;
+ }
+
+ gSelectedObjectEvent = objectEventId;
+ gSpecialVar_LastTalked = gObjectEvents[objectEventId].localId;
+ gSpecialVar_Facing = direction;
+ return GetObjectEventScriptPointerByObjectEventId(objectEventId);
+}
+
+static const u8 *GetInteractedObjectEventScript(struct MapPosition *position, u8 metatileBehavior, u8 direction)
+{
+ u8 objectEventId;
+ const u8 *script;
+
+ objectEventId = GetObjectEventIdByXYZ(position->x, position->y, position->height);
+ if (objectEventId == OBJECT_EVENTS_COUNT || gObjectEvents[objectEventId].localId == OBJ_EVENT_ID_PLAYER)
+ {
+ if (MetatileBehavior_IsCounter(metatileBehavior) != TRUE)
+ return NULL;
+
+ // Look for an object event on the other side of the counter.
+ objectEventId = GetObjectEventIdByXYZ(position->x + gDirectionToVectors[direction].x, position->y + gDirectionToVectors[direction].y, position->height);
+ if (objectEventId == OBJECT_EVENTS_COUNT || gObjectEvents[objectEventId].localId == OBJ_EVENT_ID_PLAYER)
+ return NULL;
+ }
+
+ if (InUnionRoom() == TRUE && !ObjectEventCheckHeldMovementStatus(&gObjectEvents[objectEventId]))
+ return NULL;
+
+ gSelectedObjectEvent = objectEventId;
+ gSpecialVar_LastTalked = gObjectEvents[objectEventId].localId;
+ gSpecialVar_Facing = direction;
+
+ script = GetObjectEventScriptPointerByObjectEventId(objectEventId);
+
+ script = GetRamScript(gSpecialVar_LastTalked, script);
+ return script;
+}
+
+static const u8 *GetInteractedBackgroundEventScript(struct MapPosition *position, u8 metatileBehavior, u8 direction)
+{
+ u8 signpostType;
+ const struct BgEvent *bgEvent = GetBackgroundEventAtPosition(&gMapHeader, position->x - 7, position->y - 7, position->height);
+
+ if (bgEvent == NULL)
+ return NULL;
+ if (bgEvent->bgUnion.script == NULL)
+ return EventScript_TestSignpostMsg;
+
+ signpostType = GetFacingSignpostType(metatileBehavior, direction);
+
+ switch (bgEvent->kind)
+ {
+ case BG_EVENT_PLAYER_FACING_ANY:
+ default:
+ break;
+ case BG_EVENT_PLAYER_FACING_NORTH:
+ if (direction != DIR_NORTH)
+ return NULL;
+ break;
+ case BG_EVENT_PLAYER_FACING_SOUTH:
+ if (direction != DIR_SOUTH)
+ return NULL;
+ break;
+ case BG_EVENT_PLAYER_FACING_EAST:
+ if (direction != DIR_EAST)
+ return NULL;
+ break;
+ case BG_EVENT_PLAYER_FACING_WEST:
+ if (direction != DIR_WEST)
+ return NULL;
+ break;
+ case 5:
+ case 6:
+ case BG_EVENT_HIDDEN_ITEM:
+ if (GetHiddenItemAttr((u32)bgEvent->bgUnion.script, HIDDEN_ITEM_UNDERFOOT) == TRUE)
+ return NULL;
+ gSpecialVar_0x8005 = GetHiddenItemAttr((u32)bgEvent->bgUnion.script, HIDDEN_ITEM_ID);
+ gSpecialVar_0x8004 = GetHiddenItemAttr((u32)bgEvent->bgUnion.script, HIDDEN_ITEM_FLAG);
+ gSpecialVar_0x8006 = GetHiddenItemAttr((u32)bgEvent->bgUnion.script, HIDDEN_ITEM_QUANTITY);
+ if (FlagGet(gSpecialVar_0x8004) == TRUE)
+ return NULL;
+ gSpecialVar_Facing = direction;
+ return EventScript_HiddenItemScript;
+ }
+
+ if (signpostType != SIGNPOST_NA)
+ MsgSetSignPost();
+ gSpecialVar_Facing = direction;
+ return bgEvent->bgUnion.script;
+}
+
+static const u8 *GetInteractedMetatileScript(struct MapPosition *position, u8 metatileBehavior, u8 direction)
+{
+ gSpecialVar_Facing = direction;
+ if (MetatileBehavior_IsPC(metatileBehavior) == TRUE)
+ return EventScript_PC;
+ if (MetatileBehavior_IsRegionMap(metatileBehavior) == TRUE)
+ return EventScript_WallTownMap;
+ if (MetatileBehavior_IsBookshelf(metatileBehavior) == TRUE)
+ return gUnknown_81A7606;
+ if (MetatileBehavior_IsPokeMartShelf(metatileBehavior) == TRUE)
+ return gUnknown_81A760F;
+ if (MetatileBehavior_IsFood(metatileBehavior) == TRUE)
+ return gUnknown_81A7618;
+ if (MetatileBehavior_IsImpressiveMachine(metatileBehavior) == TRUE)
+ return gUnknown_81A7633;
+ if (MetatileBehavior_IsBlueprints(metatileBehavior) == TRUE)
+ return gUnknown_81A763C;
+ if (MetatileBehavior_IsVideoGame(metatileBehavior) == TRUE)
+ return gUnknown_81A7621;
+ if (MetatileBehavior_IsBurglary(metatileBehavior) == TRUE)
+ return gUnknown_81A7645;
+ if (MetatileBehavior_IsComputer(metatileBehavior) == TRUE)
+ return gUnknown_81A762A;
+ if (MetatileBehavior_IsMBA3(metatileBehavior) == TRUE)
+ return TrainerTower_EventScript_ShowTime;
+ if (MetatileBehavior_IsPlayerFacingTVScreen(metatileBehavior, direction) == TRUE)
+ return gUnknown_81A764E;
+ if (MetatileBehavior_IsCabinet(metatileBehavior) == TRUE)
+ return gUnknown_81A7657;
+ if (MetatileBehavior_IsKitchen(metatileBehavior) == TRUE)
+ return gUnknown_81A7660;
+ if (MetatileBehavior_IsDresser(metatileBehavior) == TRUE)
+ return gUnknown_81A7669;
+ if (MetatileBehavior_IsSnacks(metatileBehavior) == TRUE)
+ return gUnknown_81A7672;
+ if (MetatileBehavior_IsPainting(metatileBehavior) == TRUE)
+ return gUnknown_81A767B;
+ if (MetatileBehavior_IsPowerPlantMachine(metatileBehavior) == TRUE)
+ return gUnknown_81A7684;
+ if (MetatileBehavior_IsTelephone(metatileBehavior) == TRUE)
+ return gUnknown_81A768D;
+ if (MetatileBehavior_IsAdvertisingPoster(metatileBehavior) == TRUE)
+ return gUnknown_81A7696;
+ if (MetatileBehavior_IsTastyFood(metatileBehavior) == TRUE)
+ return gUnknown_81A769F;
+ if (MetatileBehavior_IsTrashBin(metatileBehavior) == TRUE)
+ return gUnknown_81A76A8;
+ if (MetatileBehavior_IsCup(metatileBehavior) == TRUE)
+ return gUnknown_81A76B1;
+ if (MetatileBehavior_ReturnFalse_19(metatileBehavior) == TRUE)
+ return gUnknown_81A76BA;
+ if (MetatileBehavior_ReturnFalse_20(metatileBehavior) == TRUE)
+ return gUnknown_81A76C3;
+ if (MetatileBehavior_IsBlinkingLights(metatileBehavior) == TRUE)
+ return gUnknown_81A76CC;
+ if (MetatileBehavior_IsMB9F(metatileBehavior) == TRUE)
+ return gUnknown_81A76D5;
+ if (MetatileBehavior_IsPlayerFacingMB_8D(metatileBehavior, direction) == TRUE)
+ return CableClub_EventScript_81BBFD8;
+ if (MetatileBehavior_IsQuestionnaire(metatileBehavior) == TRUE)
+ return EventScript_Questionnaire;
+ if (MetatileBehavior_IsPlayerFacingBattleRecords(metatileBehavior, direction) == TRUE)
+ return CableClub_EventScript_ShowBattleRecords;
+ if (MetatileBehavior_IsIndigoPlateauMark(metatileBehavior) == TRUE)
+ {
+ MsgSetSignPost();
+ return EventScript_Indigo_UltimateGoal;
+ }
+ if (MetatileBehavior_IsIndigoPlateauMark2(metatileBehavior) == TRUE)
+ {
+ MsgSetSignPost();
+ return EventScript_Indigo_HighestAuthority;
+ }
+ if (MetatileBehavior_IsPlayerFacingPokeMartSign(metatileBehavior, direction) == TRUE)
+ {
+ MsgSetSignPost();
+ return EventScript_PokemartSign;
+ }
+ if (MetatileBehavior_IsPlayerFacingPokemonCenterSign(metatileBehavior, direction) == TRUE)
+ {
+ MsgSetSignPost();
+ return EventScript_PokecenterSign;
+ }
+ return NULL;
+}
+
+static const u8 *GetInteractedWaterScript(struct MapPosition *unused1, u8 metatileBehavior, u8 direction)
+{
+ if (MetatileBehavior_IsSemiDeepWater(metatileBehavior) == TRUE &&PartyHasMonWithSurf() == TRUE)
+ return EventScript_CurrentTooFast;
+ if (FlagGet(FLAG_BADGE05_GET) == TRUE && PartyHasMonWithSurf() == TRUE && IsPlayerFacingSurfableFishableWater() == TRUE)
+ return EventScript_UseSurf;
+
+ if (MetatileBehavior_IsWaterfall(metatileBehavior) == TRUE)
+ {
+ if (FlagGet(FLAG_BADGE07_GET) == TRUE && IsPlayerSurfingNorth() == TRUE)
+ return EventScript_Waterfall;
+ else
+ return EventScript_CantUseWaterfall;
+ }
+ return NULL;
+}
+
+static bool8 TryStartStepBasedScript(struct MapPosition *position, u16 metatileBehavior, u16 direction)
+{
+ if (TryStartCoordEventScript(position) == TRUE)
+ return TRUE;
+ if (TryStartWarpEventScript(position, metatileBehavior) == TRUE)
+ return TRUE;
+ if (TryStartMiscWalkingScripts(metatileBehavior) == TRUE)
+ return TRUE;
+ if (TryStartStepCountScript(metatileBehavior) == TRUE)
+ return TRUE;
+ if (!(gPlayerAvatar.flags & 0x40) && !MetatileBehavior_IsForcedMovementTile(metatileBehavior) && UpdateRepelCounter() == TRUE)
+ return TRUE;
+ return FALSE;
+}
+
+static bool8 TryStartCoordEventScript(struct MapPosition *position)
+{
+ const u8 *script = GetCoordEventScriptAtPosition(&gMapHeader, position->x - 7, position->y - 7, position->height);
+
+ if (script == NULL)
+ return FALSE;
+ ScriptContext1_SetupScript(script);
+ return TRUE;
+}
+
+static bool8 TryStartMiscWalkingScripts(u16 metatileBehavior)
+{
+ // Dummied
+ return FALSE;
+}
+
+static bool8 TryStartStepCountScript(u16 metatileBehavior)
+{
+ if (InUnionRoom() == TRUE)
+ return FALSE;
+ if (gQuestLogState == QL_STATE_2)
+ return FALSE;
+
+ UpdateHappinessStepCounter();
+
+ if (!(gPlayerAvatar.flags & 0x40) && !MetatileBehavior_IsForcedMovementTile(metatileBehavior))
+ {
+ if (sub_810C4EC() == TRUE)
+ {
+ ScriptContext1_SetupScript(gUnknown_81A8CED);
+ return TRUE;
+ }
+ else if (UpdatePoisonStepCounter() == TRUE)
+ {
+ ScriptContext1_SetupScript(EventScript_FieldPoison);
+ return TRUE;
+ }
+ else if (ShouldEggHatch())
+ {
+ IncrementGameStat(GAME_STAT_HATCHED_EGGS);
+ ScriptContext1_SetupScript(EventScript_EggHatch);
+ return TRUE;
+ }
+ }
+ if (SafariZoneTakeStep() == TRUE)
+ return TRUE;
+ return FALSE;
+}
+
+static void Unref_ClearHappinessStepCounter(void)
+{
+ VarSet(VAR_HAPPINESS_STEP_COUNTER, 0);
+}
+
+static void UpdateHappinessStepCounter(void)
+{
+ u16 *ptr = GetVarPointer(VAR_HAPPINESS_STEP_COUNTER);
+ int i;
+
+ (*ptr)++;
+ (*ptr) %= 128;
+ if (*ptr == 0)
+ {
+ struct Pokemon *mon = gPlayerParty;
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ AdjustFriendship(mon, FRIENDSHIP_EVENT_WALKING);
+ mon++;
+ }
+ }
+}
+
+void ClearPoisonStepCounter(void)
+{
+ VarSet(VAR_POISON_STEP_COUNTER, 0);
+}
+
+static bool8 UpdatePoisonStepCounter(void)
+{
+ u16 *ptr;
+
+ if (gMapHeader.mapType != MAP_TYPE_SECRET_BASE)
+ {
+ ptr = GetVarPointer(VAR_POISON_STEP_COUNTER);
+ (*ptr)++;
+ (*ptr) %= 5;
+ if (*ptr == 0)
+ {
+ switch (DoPoisonFieldEffect())
+ {
+ case FLDPSN_NONE:
+ return FALSE;
+ case FLDPSN_PSN:
+ return FALSE;
+ case FLDPSN_FNT:
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+void RestartWildEncounterImmunitySteps(void)
+{
+ ResetEncounterRateModifiers();
+}
+
+static bool8 CheckStandardWildEncounter(u32 encounter)
+{
+ return TryStandardWildEncounter(encounter);
+}
+
+static bool8 TrySetUpWalkIntoSignpostScript(struct MapPosition * position, u16 metatileBehavior, u8 playerDirection)
+{
+ u8 r4;
+ const u8 * script;
+ if (JOY_HELD(DPAD_LEFT | DPAD_RIGHT))
+ return FALSE;
+ if (playerDirection == DIR_EAST || playerDirection == DIR_WEST)
+ return FALSE;
+
+ r4 = GetFacingSignpostType(metatileBehavior, playerDirection);
+ if (r4 == SIGNPOST_POKECENTER)
+ {
+ SetUpWalkIntoSignScript(EventScript_PokecenterSign, playerDirection);
+ return TRUE;
+ }
+ else if (r4 == SIGNPOST_POKEMART)
+ {
+ SetUpWalkIntoSignScript(EventScript_PokemartSign, playerDirection);
+ return TRUE;
+ }
+ else if (r4 == SIGNPOST_INDIGO_1)
+ {
+ SetUpWalkIntoSignScript(EventScript_Indigo_UltimateGoal, playerDirection);
+ return TRUE;
+ }
+ else if (r4 == SIGNPOST_INDIGO_2)
+ {
+ SetUpWalkIntoSignScript(EventScript_Indigo_HighestAuthority, playerDirection);
+ return TRUE;
+ }
+ else
+ {
+ script = GetSignpostScriptAtMapPosition(position);
+ if (script == NULL)
+ return FALSE;
+ if (r4 != SIGNPOST_SCRIPTED)
+ return FALSE;
+ SetUpWalkIntoSignScript(script, playerDirection);
+ return TRUE;
+ }
+}
+
+static u8 GetFacingSignpostType(u16 metatileBehavior, u8 playerDirection)
+{
+ if (MetatileBehavior_IsPlayerFacingPokemonCenterSign(metatileBehavior, playerDirection) == TRUE)
+ return SIGNPOST_POKECENTER;
+
+ if (MetatileBehavior_IsPlayerFacingPokeMartSign(metatileBehavior, playerDirection) == TRUE)
+ return SIGNPOST_POKEMART;
+
+ if (MetatileBehavior_IsIndigoPlateauMark(metatileBehavior) == TRUE)
+ return SIGNPOST_INDIGO_1;
+
+ if (MetatileBehavior_IsIndigoPlateauMark2(metatileBehavior) == TRUE)
+ return SIGNPOST_INDIGO_2;
+
+ if (MetatileBehavior_IsSignpost(metatileBehavior) == TRUE)
+ return SIGNPOST_SCRIPTED;
+
+ return SIGNPOST_NA;
+}
+
+static void SetUpWalkIntoSignScript(const u8 *script, u8 playerDirection)
+{
+ gSpecialVar_Facing = playerDirection;
+ ScriptContext1_SetupScript(script);
+ SetWalkingIntoSignVars();
+ MsgSetSignPost();
+}
+
+static const u8 *GetSignpostScriptAtMapPosition(struct MapPosition * position)
+{
+ const struct BgEvent * event = GetBackgroundEventAtPosition(&gMapHeader, position->x - 7, position->y - 7, position->height);
+ if (event == NULL)
+ return NULL;
+ if (event->bgUnion.script != NULL)
+ return event->bgUnion.script;
+ return EventScript_TestSignpostMsg;
+}
+
+static bool8 TryArrowWarp(struct MapPosition *position, u16 metatileBehavior, u8 direction)
+{
+ s8 warpEventId = GetWarpEventAtMapPosition(&gMapHeader, position);
+ u16 delay;
+
+ if (warpEventId != -1)
+ {
+ if (IsArrowWarpMetatileBehavior(metatileBehavior, direction) == TRUE)
+ {
+ StoreInitialPlayerAvatarState();
+ SetupWarp(&gMapHeader, warpEventId, position);
+ DoWarp();
+ return TRUE;
+ }
+ else if (sub_806DB84(metatileBehavior, direction) == TRUE)
+ {
+ delay = 0;
+ if (gPlayerAvatar.flags & 6)
+ {
+ SetPlayerAvatarTransitionFlags(1);
+ delay = 12;
+ }
+ StoreInitialPlayerAvatarState();
+ SetupWarp(&gMapHeader, warpEventId, position);
+ sub_807E4A0(metatileBehavior, delay);
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static bool8 TryStartWarpEventScript(struct MapPosition *position, u16 metatileBehavior)
+{
+ s8 warpEventId = GetWarpEventAtMapPosition(&gMapHeader, position);
+
+ if (warpEventId != -1 && IsWarpMetatileBehavior(metatileBehavior) == TRUE)
+ {
+ StoreInitialPlayerAvatarState();
+ SetupWarp(&gMapHeader, warpEventId, position);
+ if (MetatileBehavior_IsEscalator(metatileBehavior) == TRUE)
+ {
+ DoEscalatorWarp(metatileBehavior);
+ return TRUE;
+ }
+ if (MetatileBehavior_IsLavaridgeB1FWarp(metatileBehavior) == TRUE)
+ {
+ DoLavaridgeGymB1FWarp();
+ return TRUE;
+ }
+ if (MetatileBehavior_IsLavaridge1FWarp(metatileBehavior) == TRUE)
+ {
+ DoLavaridgeGym1FWarp();
+ return TRUE;
+ }
+ if (MetatileBehavior_IsWarpPad(metatileBehavior) == TRUE)
+ {
+ DoTeleportWarp();
+ return TRUE;
+ }
+ if (MetatileBehavior_IsUnionRoomWarp(metatileBehavior) == TRUE)
+ {
+ DoUnionRoomWarp();
+ return TRUE;
+ }
+ if (MetatileBehavior_IsFallWarp(metatileBehavior) == TRUE)
+ {
+ ResetInitialPlayerAvatarState();
+ ScriptContext1_SetupScript(EventScript_1C1361);
+ return TRUE;
+ }
+ DoWarp();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool8 IsWarpMetatileBehavior(u16 metatileBehavior)
+{
+ if (MetatileBehavior_IsWarpDoor(metatileBehavior) == TRUE)
+ return TRUE;
+ if (MetatileBehavior_IsLadder(metatileBehavior) == TRUE)
+ return TRUE;
+ if (MetatileBehavior_IsEscalator(metatileBehavior) == TRUE)
+ return TRUE;
+ if (MetatileBehavior_IsCaveDoor(metatileBehavior) == TRUE)
+ return TRUE;
+ if (MetatileBehavior_IsLavaridgeB1FWarp(metatileBehavior) == TRUE)
+ return TRUE;
+ if (MetatileBehavior_IsLavaridge1FWarp(metatileBehavior) == TRUE)
+ return TRUE;
+ if (MetatileBehavior_IsWarpPad(metatileBehavior) == TRUE)
+ return TRUE;
+ if (MetatileBehavior_IsFallWarp(metatileBehavior) == TRUE)
+ return TRUE;
+ if (MetatileBehavior_IsUnionRoomWarp(metatileBehavior) == TRUE)
+ return TRUE;
+ return FALSE;
+}
+
+bool8 sub_806DB84(u16 metatileBehavior, u8 playerDirection)
+{
+ switch (playerDirection)
+ {
+ case DIR_WEST:
+ if (MetatileBehavior_IsUnknownWarp6D(metatileBehavior))
+ return TRUE;
+ if (MetatileBehavior_IsUnknownWarp6F(metatileBehavior))
+ return TRUE;
+ break;
+ case DIR_EAST:
+ if (MetatileBehavior_IsUnknownWarp6C(metatileBehavior))
+ return TRUE;
+ if (MetatileBehavior_IsUnknownWarp6E(metatileBehavior))
+ return TRUE;
+ break;
+ }
+ return FALSE;
+}
+
+static bool8 IsArrowWarpMetatileBehavior(u16 metatileBehavior, u8 direction)
+{
+ switch (direction)
+ {
+ case DIR_NORTH:
+ return MetatileBehavior_IsNorthArrowWarp(metatileBehavior);
+ case DIR_SOUTH:
+ return MetatileBehavior_IsSouthArrowWarp(metatileBehavior);
+ case DIR_WEST:
+ return MetatileBehavior_IsWestArrowWarp(metatileBehavior);
+ case DIR_EAST:
+ return MetatileBehavior_IsEastArrowWarp(metatileBehavior);
+ }
+ return FALSE;
+}
+
+static s8 GetWarpEventAtMapPosition(struct MapHeader *mapHeader, struct MapPosition *position)
+{
+ return GetWarpEventAtPosition(mapHeader, position->x - 7, position->y - 7, position->height);
+}
+
+static void SetupWarp(struct MapHeader *unused, s8 warpEventId, struct MapPosition *position)
+{
+ const struct WarpEvent *warpEvent;
+
+ warpEvent = &gMapHeader.events->warps[warpEventId];
+
+ if (warpEvent->mapNum == MAP_NUM(NONE))
+ {
+ SetWarpDestinationToDynamicWarp(warpEvent->warpId);
+ }
+ else
+ {
+ const struct MapHeader *mapHeader;
+
+ SetWarpDestinationToMapWarp(warpEvent->mapGroup, warpEvent->mapNum, warpEvent->warpId);
+ UpdateEscapeWarp(position->x, position->y);
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(warpEvent->mapGroup, warpEvent->mapNum);
+ if (mapHeader->events->warps[warpEvent->warpId].mapNum == MAP_NUM(NONE))
+ SetDynamicWarp(mapHeader->events->warps[warpEventId].warpId, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, warpEventId);
+ }
+}
+
+static bool8 TryDoorWarp(struct MapPosition *position, u16 metatileBehavior, u8 direction)
+{
+ s8 warpEventId;
+
+ if (direction == DIR_NORTH)
+ {
+ if (MetatileBehavior_IsWarpDoor(metatileBehavior) == TRUE)
+ {
+ warpEventId = GetWarpEventAtMapPosition(&gMapHeader, position);
+ if (warpEventId != -1 && IsWarpMetatileBehavior(metatileBehavior) == TRUE)
+ {
+ StoreInitialPlayerAvatarState();
+ SetupWarp(&gMapHeader, warpEventId, position);
+ DoDoorWarp();
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+static s8 GetWarpEventAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 elevation)
+{
+ s32 i;
+ struct WarpEvent *warpEvent = mapHeader->events->warps;
+ u8 warpCount = mapHeader->events->warpCount;
+
+ for (i = 0; i < warpCount; i++, warpEvent++)
+ {
+ if ((u16)warpEvent->x == x && (u16)warpEvent->y == y)
+ {
+ if (warpEvent->elevation == elevation || warpEvent->elevation == 0)
+ return i;
+ }
+ }
+ return -1;
+}
+
+static const u8 *TryRunCoordEventScript(struct CoordEvent *coordEvent)
+{
+ if (coordEvent != NULL)
+ {
+ if (coordEvent->script == NULL)
+ {
+ DoCoordEventWeather(coordEvent->trigger);
+ return NULL;
+ }
+ if (coordEvent->trigger == 0)
+ {
+ ScriptContext2_RunNewScript(coordEvent->script);
+ return NULL;
+ }
+ if (VarGet(coordEvent->trigger) == (u8)coordEvent->index)
+ return coordEvent->script;
+ }
+ return NULL;
+}
+
+static const u8 *GetCoordEventScriptAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 elevation)
+{
+ s32 i;
+ struct CoordEvent *coordEvents = mapHeader->events->coordEvents;
+ u8 coordEventCount = mapHeader->events->coordEventCount;
+
+ for (i = 0; i < coordEventCount; i++)
+ {
+ if ((u16)coordEvents[i].x == x && (u16)coordEvents[i].y == y)
+ {
+ if (coordEvents[i].elevation == elevation || coordEvents[i].elevation == 0)
+ {
+ const u8 *script = TryRunCoordEventScript(&coordEvents[i]);
+ if (script != NULL)
+ return script;
+ }
+ }
+ }
+ return NULL;
+}
+
+void sub_806DE28(struct ObjectEvent * object)
+{
+ if (MapGridGetMetatileBehaviorAt(object->currentCoords.x, object->currentCoords.y) == MB_FALL_WARP)
+ {
+ PlaySE(SE_RU_HYUU);
+ // w-why?!
+ RemoveObjectEventByLocalIdAndMap(object->localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ FlagClear(sub_805FCD8(object->localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup));
+ }
+}
+
+void sub_806DE70(u16 x, u16 y)
+{
+ int i;
+ const struct CoordEvent * events = gMapHeader.events->coordEvents;
+ int n = gMapHeader.events->coordEventCount;
+
+ if (MapGridGetMetatileBehaviorAt(x, y) == MB_STRENGTH_BUTTON)
+ {
+ for (i = 0; i < n; i++)
+ {
+ if (events[i].x + 7 == x && events[i].y + 7 == y)
+ {
+ sub_8112364();
+ ScriptContext1_SetupScript(events[i].script);
+ ScriptContext2_Enable();
+ }
+ }
+ }
+}
+
+const u8 *GetCoordEventScriptAtMapPosition(struct MapPosition *position)
+{
+ return GetCoordEventScriptAtPosition(&gMapHeader, position->x - 7, position->y - 7, position->height);
+}
+
+static const struct BgEvent *GetBackgroundEventAtPosition(struct MapHeader *mapHeader, u16 x, u16 y, u8 elevation)
+{
+ u8 i;
+ struct BgEvent *bgEvents = mapHeader->events->bgEvents;
+ u8 bgEventCount = mapHeader->events->bgEventCount;
+
+ for (i = 0; i < bgEventCount; i++)
+ {
+ if ((u16)bgEvents[i].x == x && (u16)bgEvents[i].y == y)
+ {
+ if (bgEvents[i].elevation == elevation || bgEvents[i].elevation == 0)
+ return &bgEvents[i];
+ }
+ }
+ return NULL;
+}
+
+bool8 dive_warp(struct MapPosition *position, u16 metatileBehavior)
+{
+ if (gMapHeader.mapType == MAP_TYPE_UNDERWATER && !MetatileBehavior_IsUnableToEmerge(metatileBehavior))
+ {
+ if (SetDiveWarpEmerge(position->x - 7, position->y - 7))
+ {
+ StoreInitialPlayerAvatarState();
+ DoDiveWarp();
+ PlaySE(SE_W291);
+ return TRUE;
+ }
+ }
+ else if (MetatileBehavior_IsDiveable(metatileBehavior) == TRUE)
+ {
+ if (SetDiveWarpDive(position->x - 7, position->y - 7))
+ {
+ StoreInitialPlayerAvatarState();
+ DoDiveWarp();
+ PlaySE(SE_W291);
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static u8 TrySetDiveWarp(void)
+{
+ s16 x, y;
+ u8 metatileBehavior;
+
+ PlayerGetDestCoords(&x, &y);
+ metatileBehavior = MapGridGetMetatileBehaviorAt(x, y);
+ if (gMapHeader.mapType == MAP_TYPE_UNDERWATER && !MetatileBehavior_IsUnableToEmerge(metatileBehavior))
+ {
+ if (SetDiveWarpEmerge(x - 7, y - 7) == TRUE)
+ return 1;
+ }
+ else if (MetatileBehavior_IsDiveable(metatileBehavior) == TRUE)
+ {
+ if (SetDiveWarpDive(x - 7, y - 7) == TRUE)
+ return 2;
+ }
+ return 0;
+}
+
+static const u8 *GetObjectEventScriptPointerPlayerFacing(void)
+{
+ u8 direction;
+ struct MapPosition position;
+
+ direction = GetPlayerMovementDirection();
+ GetInFrontOfPlayerPosition(&position);
+ return GetInteractedObjectEventScript(&position, MapGridGetMetatileBehaviorAt(position.x, position.y), direction);
+}
+
+int SetCableClubWarp(void)
+{
+ struct MapPosition position;
+
+ GetPlayerMovementDirection(); // unnecessary
+ GetPlayerPosition(&position);
+ MapGridGetMetatileBehaviorAt(position.x, position.y); // unnecessary
+ SetupWarp(&gMapHeader, GetWarpEventAtMapPosition(&gMapHeader, &position), &position);
+ return 0;
+}
diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c
index 58f654110..10d6b3d72 100644
--- a/src/field_fadetransition.c
+++ b/src/field_fadetransition.c
@@ -549,11 +549,11 @@ void DoDiveWarp(void)
CreateTask(sub_807E718, 10);
}
-void sub_807E4A0(u16 a, u16 b)
+void sub_807E4A0(u16 metatileBehavior, u16 delay)
{
u8 taskId = CreateTask(sub_807E980, 10);
- gTasks[taskId].data[1] = a;
- gTasks[taskId].data[15] = b;
+ gTasks[taskId].data[1] = metatileBehavior;
+ gTasks[taskId].data[15] = delay;
sub_807E980(taskId);
}
@@ -571,7 +571,7 @@ void sub_807E500(void)
gFieldCallback = sub_807DF94;
}
-void sub_807E524(void)
+void DoUnionRoomWarp(void)
{
ScriptContext2_Enable();
gFieldCallback = sub_807DF64;
@@ -584,25 +584,25 @@ void DoFallWarp(void)
gFieldCallback = FieldCB_FallWarpExit;
}
-void sub_807E560(u8 a0)
+void DoEscalatorWarp(u8 metatileBehavior)
{
ScriptContext2_Enable();
- StartEscalatorWarp(a0, 10);
+ StartEscalatorWarp(metatileBehavior, 10);
}
-void sub_807E57C(void)
+void DoLavaridgeGymB1FWarp(void)
{
ScriptContext2_Enable();
StartLavaridgeGymB1FWarp(10);
}
-void sub_807E58C(void)
+void DoLavaridgeGym1FWarp(void)
{
ScriptContext2_Enable();
StartLavaridgeGym1FWarp(10);
}
-void sub_807E59C(void)
+void DoTeleportWarp(void)
{
ScriptContext2_Enable();
TryFadeOutOldMapMusic();
diff --git a/src/field_specials.c b/src/field_specials.c
index 474fcd081..59c026b78 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -547,11 +547,11 @@ void NullFieldSpecial(void)
}
-void sub_80CADC4(void)
+void DoPicboxCancel(void)
{
u8 t = EOS;
AddTextPrinterParameterized(0, 2, &t, 0, 1, 0, NULL);
- sub_809D424();
+ PicboxCancel();
}
void SetVermilionTrashCans(void)
@@ -1545,7 +1545,7 @@ void SetSeenMon(void)
GetSetPokedexFlag(SpeciesToNationalPokedexNum(gSpecialVar_0x8004), 2);
}
-void sub_80CBDE8(void)
+void ResetContextNpcTextColor(void)
{
gSelectedObjectEvent = 0;
gSpecialVar_TextColor = 0xFF;
@@ -2435,7 +2435,7 @@ static void Task_WaitDeoxysFieldEffect(u8 taskId)
}
}
-void BirthIslandDeoxysStepCounter(void)
+void IncrementBirthIslandRockStepCount(void)
{
u16 count = VarGet(VAR_DEOXYS_INTERACTION_STEP_COUNTER);
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BIRTH_ISLAND_EXTERIOR) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(BIRTH_ISLAND_EXTERIOR))
diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c
index 414ece873..d6a983744 100644
--- a/src/metatile_behavior.c
+++ b/src/metatile_behavior.c
@@ -474,7 +474,7 @@ bool8 MetatileBehavior_IsMountain(u8 metatileBehavior)
return FALSE;
}
-bool8 MetatileBehavior_IsDeepOrSemiDeepWater(u8 metatileBehavior)
+bool8 MetatileBehavior_IsDiveable(u8 metatileBehavior)
{
if(metatileBehavior >= MB_SEMI_DEEP_WATER && metatileBehavior <= MB_DEEP_WATER)
return TRUE;
@@ -482,7 +482,7 @@ bool8 MetatileBehavior_IsDeepOrSemiDeepWater(u8 metatileBehavior)
return FALSE;
}
-bool8 MetatileBehavior_IsMB19(u8 metatileBehavior)
+bool8 MetatileBehavior_IsUnableToEmerge(u8 metatileBehavior)
{
if(metatileBehavior == MB_19)
return TRUE;
@@ -618,9 +618,9 @@ bool8 MetatileBehavior_UnusedReturnFalse_5(u8 metatileBehavior) { return FALSE;
bool8 MetatileBehavior_UnusedReturnFalse_6(u8 metatileBehavior) { return FALSE; }
bool8 MetatileBehavior_UnusedReturnFalse_7(u8 metatileBehavior) { return FALSE; }
bool8 MetatileBehavior_UnusedReturnFalse_8(u8 metatileBehavior) { return FALSE; }
-bool8 MetatileBehavior_ReturnFalse_12(u8 metatileBehavior) { return FALSE; }
+bool8 MetatileBehavior_IsLavaridgeB1FWarp(u8 metatileBehavior) { return FALSE; }
-bool8 MetatileBheavior_IsMB_68(u8 metatileBehavior)
+bool8 MetatileBehavior_IsLavaridge1FWarp(u8 metatileBehavior)
{
if(metatileBehavior == MB_68)
return TRUE;
@@ -628,7 +628,7 @@ bool8 MetatileBheavior_IsMB_68(u8 metatileBehavior)
return FALSE;
}
-bool8 MetatileBehavior_IsRegularWarp(u8 metatileBehavior)
+bool8 MetatileBehavior_IsWarpPad(u8 metatileBehavior)
{
if(metatileBehavior == MB_REGULAR_WARP)
return TRUE;
diff --git a/src/region_map.c b/src/region_map.c
index 731abc59f..b49c3c31a 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -4393,7 +4393,7 @@ static void sub_80C527C(u16 mapsec)
}
else
{
- warp1_set_2(sMapsecToSpawn[idx][0], sMapsecToSpawn[idx][1], -1);
+ SetWarpDestinationToMapWarp(sMapsecToSpawn[idx][0], sMapsecToSpawn[idx][1], -1);
}
ReturnToFieldFromFlyMapSelect();
}
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 32ac5c4e2..2b5137f9a 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -55,8 +55,7 @@ static EWRAM_DATA u16 sMovingNpcMapId = 0;
static EWRAM_DATA u16 sFieldEffectScriptId = 0;
struct ScriptContext * gUnknown_3005070;
-
-extern u8 gSelectedObjectEvent;
+u8 gSelectedObjectEvent;
// This is defined in here so the optimizer can't see its value when compiling
// script.c.
@@ -789,7 +788,7 @@ bool8 ScrCmd_warpteleport(struct ScriptContext * ctx)
u16 y = VarGet(ScriptReadHalfword(ctx));
SetWarpDestination(mapGroup, mapNum, warpId, x, y);
- sub_807E59C();
+ DoTeleportWarp();
ResetInitialPlayerAvatarState();
return TRUE;
}
@@ -1315,32 +1314,32 @@ bool8 ScrCmd_closemessage(struct ScriptContext * ctx)
static bool8 WaitForAorBPress(void)
{
- if (gMain.newKeys & A_BUTTON)
+ if (JOY_NEW(A_BUTTON))
return TRUE;
- if (gMain.newKeys & B_BUTTON)
+ if (JOY_NEW(B_BUTTON))
return TRUE;
if (sub_806B93C(gUnknown_3005070) == TRUE)
{
u8 r4 = sub_806B96C(gUnknown_3005070);
- sub_8069998(r4);
- if (r4)
+ RegisterQuestLogInput(r4);
+ if (r4 != QL_INPUT_OFF)
{
- if (gQuestLogState != 2)
+ if (gQuestLogState != QL_STATE_2)
{
- sub_80699F8();
- if (r4 < 9 || r4 > 10)
- sub_8069964();
+ ClearMsgBoxCancelableState();
+ if (r4 != QL_INPUT_A && r4 != QL_INPUT_B)
+ SetQuestLogInputIsDpadFlag();
else
{
- sub_80699A4();
- sub_8069970();
+ ClearQuestLogInput();
+ ClearQuestLogInputIsDpadFlag();
}
return TRUE;
}
}
}
- if (sub_8112CAC() == 1 || gQuestLogState == 2)
+ if (sub_8112CAC() == 1 || gQuestLogState == QL_STATE_2)
{
if (gUnknown_20370AC == 120)
return TRUE;
@@ -1368,37 +1367,37 @@ static bool8 sub_806B93C(struct ScriptContext * ctx)
static u8 sub_806B96C(struct ScriptContext * ctx)
{
- if (gMain.heldKeys & DPAD_UP && gSpecialVar_Facing != 2)
- return 1;
+ if (JOY_HELD(DPAD_UP) && gSpecialVar_Facing != DIR_NORTH)
+ return QL_INPUT_UP;
- if (gMain.heldKeys & DPAD_DOWN && gSpecialVar_Facing != 1)
- return 2;
+ if (JOY_HELD(DPAD_DOWN) && gSpecialVar_Facing != DIR_SOUTH)
+ return QL_INPUT_DOWN;
- if (gMain.heldKeys & DPAD_LEFT && gSpecialVar_Facing != 3)
- return 3;
+ if (JOY_HELD(DPAD_LEFT) && gSpecialVar_Facing != DIR_WEST)
+ return QL_INPUT_LEFT;
- if (gMain.heldKeys & DPAD_RIGHT && gSpecialVar_Facing != 4)
- return 4;
+ if (JOY_HELD(DPAD_RIGHT) && gSpecialVar_Facing != DIR_EAST)
+ return QL_INPUT_RIGHT;
- if (gMain.newKeys & L_BUTTON)
- return 5;
+ if (JOY_NEW(L_BUTTON))
+ return QL_INPUT_L;
- if (gMain.heldKeys & R_BUTTON)
- return 6;
+ if (JOY_HELD(R_BUTTON))
+ return QL_INPUT_R;
- if (gMain.heldKeys & START_BUTTON)
- return 7;
+ if (JOY_HELD(START_BUTTON))
+ return QL_INPUT_START;
- if (gMain.heldKeys & SELECT_BUTTON)
- return 8;
+ if (JOY_HELD(SELECT_BUTTON))
+ return QL_INPUT_SELECT;
- if (gMain.newKeys & A_BUTTON)
- return 9;
+ if (JOY_NEW(A_BUTTON))
+ return QL_INPUT_A;
- if (gMain.newKeys & B_BUTTON)
- return 10;
+ if (JOY_NEW(B_BUTTON))
+ return QL_INPUT_B;
- return 0;
+ return QL_INPUT_OFF;
}
bool8 ScrCmd_waitbuttonpress(struct ScriptContext * ctx)
@@ -2224,13 +2223,13 @@ bool8 ScrCmd_removecoins(struct ScriptContext * ctx)
bool8 ScrCmd_signmsg(struct ScriptContext * ctx)
{
- sub_8069A20();
+ MsgSetSignPost();
return FALSE;
}
bool8 ScrCmd_normalmsg(struct ScriptContext * ctx)
{
- sub_8069A2C();
+ MsgSetNotSignPost();
return FALSE;
}
diff --git a/src/script.c b/src/script.c
index 4b8565589..ff74b40bc 100644
--- a/src/script.c
+++ b/src/script.c
@@ -7,7 +7,7 @@
#define SCRIPT_STACK_SIZE 20
-extern void sub_80CBDE8(void); // field_specials
+extern void ResetContextNpcTextColor(void); // field_specials
extern u16 CalcCRC16WithTable(u8 *data, int length); // util
extern bool32 ValidateReceivedWonderCard(void); // mevent
@@ -18,21 +18,21 @@ enum
SCRIPT_MODE_NATIVE,
};
-EWRAM_DATA u8 gUnknown_20370A0 = 0;
+EWRAM_DATA u8 gWalkAwayFromSignInhibitTimer = 0;
EWRAM_DATA const u8 *gRAMScriptPtr = NULL;
-// ewram bss
-/*IWRAM_DATA*/ static u8 sScriptContext1Status;
-/*IWRAM_DATA*/ static u32 sUnusedVariable1;
-/*IWRAM_DATA*/ static struct ScriptContext sScriptContext1;
-/*IWRAM_DATA*/ static u32 sUnusedVariable2;
-/*IWRAM_DATA*/ static struct ScriptContext sScriptContext2;
-/*IWRAM_DATA*/ static bool8 sScriptContext2Enabled;
-/*IWRAM_DATA*/ static u8 gUnknown_3000F9D;
-/*IWRAM_DATA*/ static u8 gUnknown_3000F9E;
-/*IWRAM_DATA*/ static u8 gUnknown_3000F9F;
-/*IWRAM_DATA*/ static u8 gUnknown_3000FA0;
-/*IWRAM_DATA*/ static u8 gUnknown_3000FA1;
+// iwram bss
+static u8 sScriptContext1Status;
+static u32 sUnusedVariable1;
+static struct ScriptContext sScriptContext1;
+static u32 sUnusedVariable2;
+static struct ScriptContext sScriptContext2;
+static bool8 sScriptContext2Enabled;
+static u8 gUnknown_3000F9D;
+static u8 sMsgBoxIsCancelable;
+static u8 sQuestLogInput;
+static u8 sQuestLogInputIsDpad;
+static u8 sMsgIsSignPost;
extern ScrCmdFunc gScriptCmdTable[];
extern ScrCmdFunc gScriptCmdTableEnd[];
@@ -202,95 +202,95 @@ bool8 ScriptContext2_IsEnabled(void)
return sScriptContext2Enabled;
}
-void sub_8069964(void)
+void SetQuestLogInputIsDpadFlag(void)
{
- gUnknown_3000FA0 = 1;
+ sQuestLogInputIsDpad = TRUE;
}
-void sub_8069970(void)
+void ClearQuestLogInputIsDpadFlag(void)
{
- gUnknown_3000FA0 = 0;
+ sQuestLogInputIsDpad = FALSE;
}
-bool8 sub_806997C(void)
+bool8 IsQuestLogInputDpad(void)
{
- if(gUnknown_3000FA0 == TRUE)
+ if(sQuestLogInputIsDpad == TRUE)
return TRUE;
else
return FALSE;
}
-void sub_8069998(u8 var)
+void RegisterQuestLogInput(u8 var)
{
- gUnknown_3000F9F = var;
+ sQuestLogInput = var;
}
-void sub_80699A4(void)
+void ClearQuestLogInput(void)
{
- gUnknown_3000F9F = 0;
+ sQuestLogInput = 0;
}
-u8 sub_80699B0(void)
+u8 GetRegisteredQuestLogInput(void)
{
- return gUnknown_3000F9F;
+ return sQuestLogInput;
}
void sub_80699BC(void)
{
- gUnknown_3000F9D = 1;
+ gUnknown_3000F9D = TRUE;
}
void sub_80699C8(void)
{
- gUnknown_3000F9D = 0;
+ gUnknown_3000F9D = FALSE;
}
-u8 sub_80699D4(void)
+bool8 sub_80699D4(void)
{
return gUnknown_3000F9D;
}
-void sub_80699E0(void)
+void SetWalkingIntoSignVars(void)
{
- gUnknown_20370A0 = 6;
- gUnknown_3000F9E = 1;
+ gWalkAwayFromSignInhibitTimer = 6;
+ sMsgBoxIsCancelable = TRUE;
}
-void sub_80699F8(void)
+void ClearMsgBoxCancelableState(void)
{
- gUnknown_3000F9E = 0;
+ sMsgBoxIsCancelable = FALSE;
}
-bool8 sub_8069A04(void)
+bool8 CanWalkAwayToCancelMsgBox(void)
{
- if(gUnknown_3000F9E == TRUE)
+ if(sMsgBoxIsCancelable == TRUE)
return TRUE;
else
return FALSE;
}
-void sub_8069A20(void)
+void MsgSetSignPost(void)
{
- gUnknown_3000FA1 = 1;
+ sMsgIsSignPost = TRUE;
}
-void sub_8069A2C(void)
+void MsgSetNotSignPost(void)
{
- gUnknown_3000FA1 = 0;
+ sMsgIsSignPost = FALSE;
}
bool8 IsMsgSignPost(void)
{
- if(gUnknown_3000FA1 == TRUE)
+ if(sMsgIsSignPost == TRUE)
return TRUE;
else
return FALSE;
}
-void sub_8069A54(void)
+void ResetFacingNpcOrSignPostVars(void)
{
- sub_80CBDE8();
- sub_8069A2C();
+ ResetContextNpcTextColor();
+ MsgSetNotSignPost();
}
bool8 ScriptContext1_IsScriptSetUp(void)
@@ -329,9 +329,9 @@ bool8 ScriptContext2_RunScript(void)
void ScriptContext1_SetupScript(const u8 *ptr)
{
- sub_80699F8();
+ ClearMsgBoxCancelableState();
sub_80699C8();
- sub_8069970();
+ ClearQuestLogInputIsDpadFlag();
InitScriptContext(&sScriptContext1, gScriptCmdTable, gScriptCmdTableEnd);
SetupBytecodeScript(&sScriptContext1, ptr);
ScriptContext2_Enable();
@@ -431,7 +431,7 @@ void mapheader_run_script_with_tag_x6(void)
mapheader_run_script_by_tag(6);
}
-bool8 mapheader_run_first_tag2_script_list_match(void)
+bool8 TryRunOnFrameMapScript(void)
{
u8 *ptr;
@@ -482,7 +482,7 @@ bool8 InitRamScript(u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objec
return TRUE;
}
-u8 *GetRamScript(u8 objectId, u8 *script)
+const u8 *GetRamScript(u8 objectId, const u8 *script)
{
struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data;
gRAMScriptPtr = NULL;
diff --git a/src/script_menu.c b/src/script_menu.c
index a4745ee10..94aaf528d 100644
--- a/src/script_menu.c
+++ b/src/script_menu.c
@@ -1070,7 +1070,7 @@ static bool8 PicboxWait(void)
return FALSE;
}
-void sub_809D424(void)
+void PicboxCancel(void)
{
u8 taskId = FindTaskIdByFunc(Task_ScriptShowMonPic);
struct Task * task;
diff --git a/sym_common.txt b/sym_common.txt
index 1865bcbc4..2a03004de 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -47,21 +47,12 @@ gFieldLinkPlayerCount: @ 3005030
.align 4
.include "fieldmap.o"
-
.align 4
.include "field_camera.o"
-
.align 2
.include "scrcmd.o"
-
.align 2
- @ .include "field_control_avatar.o"
-gSelectedObjectEvent: @ 3005074
- .space 0x4
-
-gUnknown_3005078: @ 3005078
- .space 0x4
-
+ .include "field_control_avatar.o"
.align 2
.include "event_data.o"
.align 2