summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/rom_8065394.s2220
-rw-r--r--ewram_syms.txt7
-rw-r--r--include/fieldmap.h8
-rw-r--r--include/rtc.h2
-rw-r--r--iwram_syms.txt3
-rw-r--r--src/rtc.c3
-rw-r--r--src/scrcmd.c846
7 files changed, 866 insertions, 2223 deletions
diff --git a/asm/rom_8065394.s b/asm/rom_8065394.s
index dff86d9e9..f833f2b33 100644
--- a/asm/rom_8065394.s
+++ b/asm/rom_8065394.s
@@ -5,2226 +5,6 @@
.text
- thumb_func_start ScrCmd_additem
-ScrCmd_additem: @ 8065F40
- push {r4,r5,lr}
- adds r5, r0, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- ldr r5, _08065F80
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_80A9424
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08065F80: .4byte 0x0202e8dc
- thumb_func_end ScrCmd_additem
-
- thumb_func_start ScrCmd_removeitem
-ScrCmd_removeitem: @ 8065F84
- push {r4,r5,lr}
- adds r5, r0, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- ldr r5, _08065FC4
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_80A9538
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08065FC4: .4byte 0x0202e8dc
- thumb_func_end ScrCmd_removeitem
-
- thumb_func_start ScrCmd_checkitemspace
-ScrCmd_checkitemspace: @ 8065FC8
- push {r4,r5,lr}
- adds r5, r0, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- ldr r5, _08066008
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_80A9344
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08066008: .4byte 0x0202e8dc
- thumb_func_end ScrCmd_checkitemspace
-
- thumb_func_start ScrCmd_checkitem
-ScrCmd_checkitem: @ 806600C
- push {r4,r5,lr}
- adds r5, r0, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- ldr r5, _0806604C
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_80A92D4
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0806604C: .4byte 0x0202e8dc
- thumb_func_end ScrCmd_checkitem
-
- thumb_func_start ScrCmd_checkitemtype
-ScrCmd_checkitemtype: @ 8066050
- push {r4,lr}
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _08066078
- bl sub_80A9670
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08066078: .4byte 0x0202e8dc
- thumb_func_end ScrCmd_checkitemtype
-
- thumb_func_start ScrCmd_addpcitem
-ScrCmd_addpcitem: @ 806607C
- push {r4,r5,lr}
- adds r5, r0, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r5, _080660BC
- adds r0, r4, 0
- bl sub_80A9760
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080660BC: .4byte 0x0202e8dc
- thumb_func_end ScrCmd_addpcitem
-
- thumb_func_start ScrCmd_checkpcitem
-ScrCmd_checkpcitem: @ 80660C0
- push {r4,r5,lr}
- adds r5, r0, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r5, _08066100
- adds r0, r4, 0
- bl sub_80A9718
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08066100: .4byte 0x0202e8dc
- thumb_func_end ScrCmd_checkpcitem
-
- thumb_func_start ScrCmd_adddecor
-ScrCmd_adddecor: @ 8066104
- push {r4,lr}
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r4, _0806612C
- lsls r0, 24
- lsrs r0, 24
- bl IsThereStorageSpaceForDecoration
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0806612C: .4byte 0x0202e8dc
- thumb_func_end ScrCmd_adddecor
-
- thumb_func_start ScrCmd_removedecor
-ScrCmd_removedecor: @ 8066130
- push {r4,lr}
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r4, _08066158
- lsls r0, 24
- lsrs r0, 24
- bl sub_81340A8
- lsls r0, 24
- asrs r0, 24
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08066158: .4byte 0x0202e8dc
- thumb_func_end ScrCmd_removedecor
-
- thumb_func_start ScrCmd_checkdecor
-ScrCmd_checkdecor: @ 806615C
- push {r4,lr}
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r4, _08066184
- lsls r0, 24
- lsrs r0, 24
- bl sub_8134074
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08066184: .4byte 0x0202e8dc
- thumb_func_end ScrCmd_checkdecor
-
- thumb_func_start ScrCmd_testdecor
-ScrCmd_testdecor: @ 8066188
- push {r4,lr}
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r4, _080661B0
- lsls r0, 24
- lsrs r0, 24
- bl sub_8133FE4
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080661B0: .4byte 0x0202e8dc
- thumb_func_end ScrCmd_testdecor
-
- thumb_func_start ScrCmd_setflag
-ScrCmd_setflag: @ 80661B4
- push {lr}
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl FlagSet
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_setflag
-
- thumb_func_start ScrCmd_clearflag
-ScrCmd_clearflag: @ 80661C8
- push {lr}
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl FlagReset
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_clearflag
-
- thumb_func_start ScrCmd_checkflag
-ScrCmd_checkflag: @ 80661DC
- push {r4,lr}
- adds r4, r0, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl FlagGet
- strb r0, [r4, 0x2]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_checkflag
-
- thumb_func_start ScrCmd_inccounter
-ScrCmd_inccounter: @ 80661F8
- push {lr}
- ldr r1, [r0, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- adds r0, r2, 0
- bl sav12_xor_increment
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_inccounter
-
- thumb_func_start ScrCmd_lighten
-ScrCmd_lighten: @ 8066210
- push {lr}
- ldr r1, [r0, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- adds r0, r2, 0
- bl sub_8081594
- bl sub_80655F0
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_lighten
-
- thumb_func_start ScrCmd_darken
-ScrCmd_darken: @ 806622C
- push {lr}
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- bl sub_8053CE4
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_darken
-
- thumb_func_start sub_8066248
-sub_8066248: @ 8066248
- push {lr}
- ldr r0, _0806625C
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08066260
- movs r0, 0
- b _08066262
- .align 2, 0
-_0806625C: .4byte 0x0202f388
-_08066260:
- movs r0, 0x1
-_08066262:
- pop {r1}
- bx r1
- thumb_func_end sub_8066248
-
- thumb_func_start ScrCmd_fadescreen
-ScrCmd_fadescreen: @ 8066268
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, [r4, 0x8]
- ldrb r0, [r1]
- adds r1, 0x1
- str r1, [r4, 0x8]
- movs r1, 0
- bl fade_screen
- ldr r1, _0806628C
- adds r0, r4, 0
- bl script_setup_asm_script
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0806628C: .4byte sub_8066248
- thumb_func_end ScrCmd_fadescreen
-
- thumb_func_start ScrCmd_fadescreendelay
-ScrCmd_fadescreendelay: @ 8066290
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, [r4, 0x8]
- ldrb r0, [r2]
- adds r2, 0x1
- str r2, [r4, 0x8]
- ldrb r1, [r2]
- adds r2, 0x1
- str r2, [r4, 0x8]
- bl fade_screen
- ldr r1, _080662B8
- adds r0, r4, 0
- bl script_setup_asm_script
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080662B8: .4byte sub_8066248
- thumb_func_end ScrCmd_fadescreendelay
-
- thumb_func_start s28_pause_asm
-s28_pause_asm: @ 80662BC
- push {lr}
- ldr r1, _080662D0
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- beq _080662D4
- movs r0, 0
- b _080662D6
- .align 2, 0
-_080662D0: .4byte 0x0202e8b4
-_080662D4:
- movs r0, 0x1
-_080662D6:
- pop {r1}
- bx r1
- thumb_func_end s28_pause_asm
-
- thumb_func_start ScrCmd_pause
-ScrCmd_pause: @ 80662DC
- push {r4,lr}
- adds r4, r0, 0
- bl script_read_halfword
- ldr r1, _080662F8
- strh r0, [r1]
- ldr r1, _080662FC
- adds r0, r4, 0
- bl script_setup_asm_script
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080662F8: .4byte 0x0202e8b4
-_080662FC: .4byte s28_pause_asm
- thumb_func_end ScrCmd_pause
-
- thumb_func_start ScrCmd_compareflags
-ScrCmd_compareflags: @ 8066300
- push {r4,r5,lr}
- adds r5, r0, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl RtcInitLocalTimeOffset
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_compareflags
-
- thumb_func_start ScrCmd_checkdailyflags
-ScrCmd_checkdailyflags: @ 8066338
- push {lr}
- bl InTrainerHill
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_checkdailyflags
-
- thumb_func_start ScrCmd_resetvars
-ScrCmd_resetvars: @ 8066344
- push {lr}
- bl RtcCalcLocalTime
- ldr r2, _0806636C
- ldr r1, _08066370
- movs r0, 0x2
- ldrsb r0, [r1, r0]
- strh r0, [r2]
- ldr r2, _08066374
- movs r0, 0x3
- ldrsb r0, [r1, r0]
- strh r0, [r2]
- ldr r2, _08066378
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- strh r0, [r2]
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0806636C: .4byte 0x0202e8c4
-_08066370: .4byte 0x03004038
-_08066374: .4byte 0x0202e8c6
-_08066378: .4byte 0x0202e8c8
- thumb_func_end ScrCmd_resetvars
-
- thumb_func_start ScrCmd_setweather
-ScrCmd_setweather: @ 806637C
- push {lr}
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- bl sub_80806B4
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_setweather
-
- thumb_func_start ScrCmd_resetweather
-ScrCmd_resetweather: @ 8066398
- push {lr}
- bl sub_80806E4
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_resetweather
-
- thumb_func_start ScrCmd_doweather
-ScrCmd_doweather: @ 80663A4
- push {lr}
- bl sub_808073C
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_doweather
-
- thumb_func_start ScrCmd_tileeffect
-ScrCmd_tileeffect: @ 80663B0
- push {lr}
- ldr r1, [r0, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- adds r0, r2, 0
- bl activate_per_step_callback
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_tileeffect
-
- thumb_func_start ScrCmd_setmapfooter
-ScrCmd_setmapfooter: @ 80663C8
- push {lr}
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- bl sub_8053D14
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_setmapfooter
-
- thumb_func_start ScrCmd_warp
-ScrCmd_warp: @ 80663E4
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl warp1_set
- bl sub_8080E88
- bl player_avatar_init_params_reset
- movs r0, 0x1
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_warp
-
- thumb_func_start ScrCmd_warpmuted
-ScrCmd_warpmuted: @ 806646C
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl warp1_set
- bl sp13E_warp_to_last_warp
- bl player_avatar_init_params_reset
- movs r0, 0x1
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_warpmuted
-
- thumb_func_start ScrCmd_warpwalk
-ScrCmd_warpwalk: @ 80664F4
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl warp1_set
- bl sub_8080EF0
- bl player_avatar_init_params_reset
- movs r0, 0x1
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_warpwalk
-
- thumb_func_start ScrCmd_warphole
-ScrCmd_warphole: @ 806657C
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r1, [r0, 0x8]
- ldrb r6, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- ldrb r5, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- mov r4, sp
- adds r4, 0x6
- add r0, sp, 0x4
- adds r1, r4, 0
- bl PlayerGetDestCoords
- cmp r6, 0xFF
- bne _080665BA
- cmp r5, 0xFF
- bne _080665BA
- add r0, sp, 0x4
- ldrh r0, [r0]
- subs r0, 0x7
- lsls r0, 16
- asrs r0, 16
- ldrh r1, [r4]
- subs r1, 0x7
- lsls r1, 16
- asrs r1, 16
- bl sub_8053720
- b _080665DE
-_080665BA:
- lsls r0, r6, 24
- asrs r0, 24
- lsls r1, r5, 24
- asrs r1, 24
- movs r2, 0x1
- negs r2, r2
- add r3, sp, 0x4
- ldrb r3, [r3]
- subs r3, 0x7
- lsls r3, 24
- asrs r3, 24
- ldrb r4, [r4]
- subs r4, 0x7
- lsls r4, 24
- asrs r4, 24
- str r4, [sp]
- bl warp1_set
-_080665DE:
- bl sp13F_fall_to_last_warp
- bl player_avatar_init_params_reset
- movs r0, 0x1
- add sp, 0x8
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_warphole
-
- thumb_func_start ScrCmd_warpteleport
-ScrCmd_warpteleport: @ 80665F0
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl warp1_set
- bl sub_8080F68
- bl player_avatar_init_params_reset
- movs r0, 0x1
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_warpteleport
-
- thumb_func_start ScrCmd_warp3
-ScrCmd_warp3: @ 8066678
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl warp1_set
- movs r0, 0
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_warp3
-
- thumb_func_start ScrCmd_warpplace
-ScrCmd_warpplace: @ 80666F8
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x8
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- str r4, [sp]
- lsls r0, 24
- asrs r0, 24
- str r0, [sp, 0x4]
- movs r0, 0
- mov r1, r9
- mov r2, r8
- adds r3, r6, 0
- bl saved_warp2_set_2
- movs r0, 0
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_warpplace
-
- thumb_func_start ScrCmd_warp4
-ScrCmd_warp4: @ 806677C
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl sub_8053690
- movs r0, 0
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_warp4
-
- thumb_func_start ScrCmd_warp5
-ScrCmd_warp5: @ 80667FC
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl sub_80536E4
- movs r0, 0
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_warp5
-
- thumb_func_start ScrCmd_warp6
-ScrCmd_warp6: @ 806687C
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl sub_805363C
- movs r0, 0
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_warp6
-
- thumb_func_start ScrCmd_getplayerxy
-ScrCmd_getplayerxy: @ 80668FC
- push {r4,r5,lr}
- adds r4, r0, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- adds r5, r0, 0
- adds r0, r4, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- ldr r2, _08066930
- ldrh r1, [r2]
- strh r1, [r5]
- ldrh r1, [r2, 0x2]
- strh r1, [r0]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08066930: .4byte 0x02025734
- thumb_func_end ScrCmd_getplayerxy
-
- thumb_func_start ScrCmd_countpokemon
-ScrCmd_countpokemon: @ 8066934
- push {r4,lr}
- ldr r4, _0806694C
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0806694C: .4byte 0x0202e8dc
- thumb_func_end ScrCmd_countpokemon
-
- thumb_func_start ScrCmd_playsfx
-ScrCmd_playsfx: @ 8066950
- push {lr}
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl audio_play
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_playsfx
-
- thumb_func_start s30_music_check_asm
-s30_music_check_asm: @ 8066964
- push {lr}
- bl mplay_has_finished_maybe
- lsls r0, 24
- cmp r0, 0
- beq _08066974
- movs r0, 0
- b _08066976
-_08066974:
- movs r0, 0x1
-_08066976:
- pop {r1}
- bx r1
- thumb_func_end s30_music_check_asm
-
- thumb_func_start ScrCmd_checksound
-ScrCmd_checksound: @ 806697C
- push {lr}
- ldr r1, _0806698C
- bl script_setup_asm_script
- movs r0, 0x1
- pop {r1}
- bx r1
- .align 2, 0
-_0806698C: .4byte s30_music_check_asm
- thumb_func_end ScrCmd_checksound
-
- thumb_func_start ScrCmd_fanfare
-ScrCmd_fanfare: @ 8066990
- push {lr}
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl fanfare_play
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_fanfare
-
- thumb_func_start s32_fanfare_wait_asm
-s32_fanfare_wait_asm: @ 80669A4
- push {lr}
- bl task_is_not_running_overworld_fanfare
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end s32_fanfare_wait_asm
-
- thumb_func_start ScrCmd_waitfanfare
-ScrCmd_waitfanfare: @ 80669B4
- push {lr}
- ldr r1, _080669C4
- bl script_setup_asm_script
- movs r0, 0x1
- pop {r1}
- bx r1
- .align 2, 0
-_080669C4: .4byte s32_fanfare_wait_asm
- thumb_func_end ScrCmd_waitfanfare
-
- thumb_func_start ScrCmd_playmusic
-ScrCmd_playmusic: @ 80669C8
- push {r4,r5,lr}
- adds r4, r0, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r2, r0, 16
- adds r5, r2, 0
- ldr r0, [r4, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- cmp r1, 0x1
- bne _080669E8
- adds r0, r2, 0
- bl sav1_set_battle_music_maybe
-_080669E8:
- adds r0, r5, 0
- bl current_map_music_set
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_playmusic
-
- thumb_func_start ScrCmd_playmusicbattle
-ScrCmd_playmusicbattle: @ 80669F8
- push {lr}
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl sav1_set_battle_music_maybe
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_playmusicbattle
-
- thumb_func_start ScrCmd_fadedefault
-ScrCmd_fadedefault: @ 8066A0C
- push {lr}
- bl sub_8053F84
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_fadedefault
-
- thumb_func_start ScrCmd_fademusic
-ScrCmd_fademusic: @ 8066A18
- push {lr}
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl sub_8053FB0
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_fademusic
-
- thumb_func_start ScrCmd_fadeout
-ScrCmd_fadeout: @ 8066A2C
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- cmp r1, 0
- beq _08066A46
- lsls r0, r1, 26
- lsrs r0, 24
- bl sub_8074FB8
- b _08066A4C
-_08066A46:
- movs r0, 0x4
- bl sub_8074FB8
-_08066A4C:
- ldr r1, _08066A5C
- adds r0, r4, 0
- bl script_setup_asm_script
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08066A5C: .4byte sub_8074FD0
- thumb_func_end ScrCmd_fadeout
-
- thumb_func_start ScrCmd_fadein
-ScrCmd_fadein: @ 8066A60
- push {lr}
- ldr r1, [r0, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- cmp r2, 0
- beq _08066A78
- lsls r0, r2, 26
- lsrs r0, 24
- bl sub_8074FF8
- b _08066A7E
-_08066A78:
- movs r0, 0x4
- bl sub_8074FF8
-_08066A7E:
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_fadein
-
- thumb_func_start ScrCmd_move
-ScrCmd_move: @ 8066A84
- push {r4,r5,lr}
- adds r5, r0, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl script_read_word
- adds r3, r0, 0
- lsls r0, r4, 24
- lsrs r0, 24
- ldr r2, _08066ABC
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl exec_movement
- ldr r0, _08066AC0
- strh r4, [r0]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08066ABC: .4byte 0x02025734
-_08066AC0: .4byte 0x0202e8b6
- thumb_func_end ScrCmd_move
-
- thumb_func_start ScrCmd_movecoords
-ScrCmd_movecoords: @ 8066AC4
- push {r4,r5,lr}
- adds r5, r0, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl script_read_word
- adds r3, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r2, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- lsls r0, r4, 24
- lsrs r0, 24
- bl exec_movement
- ldr r0, _08066B04
- strh r4, [r0]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08066B04: .4byte 0x0202e8b6
- thumb_func_end ScrCmd_movecoords
-
- thumb_func_start s51a_0806B288
-s51a_0806B288: @ 8066B08
- push {lr}
- ldr r0, _08066B24
- ldrb r0, [r0]
- ldr r1, _08066B28
- ldrb r1, [r1]
- ldr r2, _08066B2C
- ldrb r2, [r2]
- bl sub_80A212C
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08066B24: .4byte 0x0202e8b6
-_08066B28: .4byte 0x0202e8ba
-_08066B2C: .4byte 0x0202e8b8
- thumb_func_end s51a_0806B288
-
- thumb_func_start ScrCmd_waitmove
-ScrCmd_waitmove: @ 8066B30
- push {r4,lr}
- adds r4, r0, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _08066B4C
- ldr r0, _08066B70
- strh r1, [r0]
-_08066B4C:
- ldr r1, _08066B74
- ldr r2, _08066B78
- movs r0, 0x4
- ldrsb r0, [r2, r0]
- strh r0, [r1]
- ldr r1, _08066B7C
- movs r0, 0x5
- ldrsb r0, [r2, r0]
- strh r0, [r1]
- ldr r1, _08066B80
- adds r0, r4, 0
- bl script_setup_asm_script
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08066B70: .4byte 0x0202e8b6
-_08066B74: .4byte 0x0202e8b8
-_08066B78: .4byte 0x02025734
-_08066B7C: .4byte 0x0202e8ba
-_08066B80: .4byte s51a_0806B288
- thumb_func_end ScrCmd_waitmove
-
- thumb_func_start ScrCmd_waitmovexy
-ScrCmd_waitmovexy: @ 8066B84
- push {r4,lr}
- adds r4, r0, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _08066BA0
- ldr r0, _08066BC8
- strh r1, [r0]
-_08066BA0:
- ldr r0, [r4, 0x8]
- ldrb r2, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- ldr r0, _08066BCC
- strh r2, [r0]
- ldr r0, _08066BD0
- strh r1, [r0]
- ldr r1, _08066BD4
- adds r0, r4, 0
- bl script_setup_asm_script
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08066BC8: .4byte 0x0202e8b6
-_08066BCC: .4byte 0x0202e8b8
-_08066BD0: .4byte 0x0202e8ba
-_08066BD4: .4byte s51a_0806B288
- thumb_func_end ScrCmd_waitmovexy
-
- thumb_func_start ScrCmd_disappear
-ScrCmd_disappear: @ 8066BD8
- push {lr}
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08066BFC
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl RemoveFieldObjectByLocalIdAndMap
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08066BFC: .4byte 0x02025734
- thumb_func_end ScrCmd_disappear
-
- thumb_func_start ScrCmd_disappearxy
-ScrCmd_disappearxy: @ 8066C00
- push {r4,lr}
- adds r4, r0, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r3, [r4, 0x8]
- ldrb r2, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- ldrb r1, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- bl RemoveFieldObjectByLocalIdAndMap
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_disappearxy
-
- thumb_func_start ScrCmd_reappear
-ScrCmd_reappear: @ 8066C30
- push {lr}
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08066C54
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl show_sprite
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08066C54: .4byte 0x02025734
- thumb_func_end ScrCmd_reappear
-
- thumb_func_start ScrCmd_reappearxy
-ScrCmd_reappearxy: @ 8066C58
- push {r4,lr}
- adds r4, r0, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r3, [r4, 0x8]
- ldrb r2, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- ldrb r1, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- bl show_sprite
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_reappearxy
-
- thumb_func_start ScrCmd_movesprite
-ScrCmd_movesprite: @ 8066C88
- push {r4-r6,lr}
- sub sp, 0x4
- adds r6, r0, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r6, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r6, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r5, 24
- lsrs r5, 24
- ldr r2, _08066CE8
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- lsls r4, 16
- asrs r4, 16
- lsls r0, 16
- asrs r0, 16
- str r0, [sp]
- adds r0, r5, 0
- adds r3, r4, 0
- bl sub_805C0F8
- movs r0, 0
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08066CE8: .4byte 0x02025734
- thumb_func_end ScrCmd_movesprite
-
- thumb_func_start ScrCmd_movespriteperm
-ScrCmd_movespriteperm: @ 8066CEC
- push {r4-r6,lr}
- adds r6, r0, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r6, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r6, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r2, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 16
- asrs r4, 16
- lsls r2, 16
- asrs r2, 16
- adds r0, r5, 0
- adds r1, r4, 0
- bl update_saveblock1_field_object_coords
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_movespriteperm
-
- thumb_func_start ScrCmd_moveoffscreen
-ScrCmd_moveoffscreen: @ 8066D44
- push {lr}
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08066D68
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl sub_805C78C
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08066D68: .4byte 0x02025734
- thumb_func_end ScrCmd_moveoffscreen
-
- thumb_func_start ScrCmd_spritevisible
-ScrCmd_spritevisible: @ 8066D6C
- push {r4,lr}
- adds r4, r0, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r3, [r4, 0x8]
- ldrb r2, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- ldrb r1, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- movs r3, 0
- bl npc_by_local_id_and_map_set_field_1_bit_x20
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_spritevisible
-
- thumb_func_start ScrCmd_spriteinvisible
-ScrCmd_spriteinvisible: @ 8066D9C
- push {r4,lr}
- adds r4, r0, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r3, [r4, 0x8]
- ldrb r2, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- ldrb r1, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- movs r3, 0x1
- bl npc_by_local_id_and_map_set_field_1_bit_x20
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_spriteinvisible
-
- thumb_func_start ScrCmd_spritelevelup
-ScrCmd_spritelevelup: @ 8066DCC
- push {r4,r5,lr}
- adds r5, r0, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r3, [r5, 0x8]
- ldrb r2, [r3]
- adds r3, 0x1
- str r3, [r5, 0x8]
- ldrb r1, [r3]
- adds r4, r3, 0x1
- str r4, [r5, 0x8]
- ldrb r3, [r3, 0x1]
- adds r4, 0x1
- str r4, [r5, 0x8]
- lsls r0, 24
- lsrs r0, 24
- adds r3, 0x53
- lsls r3, 24
- lsrs r3, 24
- bl sub_805BCF0
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_spritelevelup
-
- thumb_func_start ScrCmd_restorespritelevel
-ScrCmd_restorespritelevel: @ 8066E08
- push {r4,lr}
- adds r4, r0, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r3, [r4, 0x8]
- ldrb r2, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- ldrb r1, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- bl sub_805BD48
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_restorespritelevel
-
- thumb_func_start ScrCmd_faceplayer
-ScrCmd_faceplayer: @ 8066E38
- push {r4,lr}
- ldr r2, _08066E68
- ldr r0, _08066E6C
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r4, r0, r2
- ldrb r0, [r4]
- lsls r0, 31
- cmp r0, 0
- beq _08066E60
- bl player_get_direction_lower_nybble
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FieldObjectFaceOppositeDirection
-_08066E60:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08066E68: .4byte 0x030048a0
-_08066E6C: .4byte 0x03004ae0
- thumb_func_end ScrCmd_faceplayer
-
- thumb_func_start ScrCmd_spriteface
-ScrCmd_spriteface: @ 8066E70
- push {r4,lr}
- adds r4, r0, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r1, [r4, 0x8]
- ldrb r3, [r1]
- adds r1, 0x1
- str r1, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08066EA0
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl FieldObjectTurnByLocalIdAndMap
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08066EA0: .4byte 0x02025734
- thumb_func_end ScrCmd_spriteface
-
- thumb_func_start ScrCmd_spritebehave
-ScrCmd_spritebehave: @ 8066EA4
- push {r4,lr}
- adds r4, r0, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r2, [r4, 0x8]
- ldrb r1, [r2]
- adds r2, 0x1
- str r2, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- bl update_saveblock1_field_object_movement_behavior
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_spritebehave
-
- thumb_func_start ScrCmd_createvsprite
-ScrCmd_createvsprite: @ 8066ECC
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x8
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r6, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl script_read_halfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r3, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r2, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- lsls r4, 16
- asrs r4, 16
- lsls r3, 16
- asrs r3, 16
- str r2, [sp]
- str r1, [sp, 0x4]
- mov r0, r8
- adds r1, r6, 0
- adds r2, r4, 0
- bl sub_805B410
- movs r0, 0
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_createvsprite
-
- thumb_func_start ScrCmd_vspriteface
-ScrCmd_vspriteface: @ 8066F3C
- push {lr}
- ldr r2, [r0, 0x8]
- ldrb r3, [r2]
- adds r2, 0x1
- str r2, [r0, 0x8]
- ldrb r1, [r2]
- adds r2, 0x1
- str r2, [r0, 0x8]
- adds r0, r3, 0
- bl sub_8064990
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_vspriteface
-
- thumb_func_start ScrCmd_lockall
-ScrCmd_lockall: @ 8066F58
- push {r4,lr}
- adds r4, r0, 0
- bl is_c1_link_related_active
- cmp r0, 0
- bne _08066F78
- bl sub_8064D20
- ldr r1, _08066F74
- adds r0, r4, 0
- bl script_setup_asm_script
- movs r0, 0x1
- b _08066F7A
- .align 2, 0
-_08066F74: .4byte sub_8064CFC
-_08066F78:
- movs r0, 0
-_08066F7A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_lockall
-
- thumb_func_start ScrCmd_lock
-ScrCmd_lock: @ 8066F80
- push {r4,lr}
- adds r4, r0, 0
- bl is_c1_link_related_active
- cmp r0, 0
- beq _08066F90
- movs r0, 0
- b _08066FCE
-_08066F90:
- ldr r2, _08066FB4
- ldr r0, _08066FB8
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- beq _08066FC0
- bl sub_8064DD8
- ldr r1, _08066FBC
- adds r0, r4, 0
- bl script_setup_asm_script
- b _08066FCC
- .align 2, 0
-_08066FB4: .4byte 0x030048a0
-_08066FB8: .4byte 0x03004ae0
-_08066FBC: .4byte sub_8064DB4
-_08066FC0:
- bl sub_8064D20
- ldr r1, _08066FD4
- adds r0, r4, 0
- bl script_setup_asm_script
-_08066FCC:
- movs r0, 0x1
-_08066FCE:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08066FD4: .4byte sub_8064CFC
- thumb_func_end ScrCmd_lock
-
- thumb_func_start ScrCmd_releaseall
-ScrCmd_releaseall: @ 8066FD8
- push {lr}
- bl textbox_close
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0
- bl GetFieldObjectIdByLocalIdAndMap
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0806700C
- adds r0, r1
- bl FieldObjectClearAnimIfSpecialAnimFinished
- bl sub_80A2178
- bl sub_806451C
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0806700C: .4byte 0x030048a0
- thumb_func_end ScrCmd_releaseall
-
- thumb_func_start ScrCmd_release
-ScrCmd_release: @ 8067010
- push {r4,lr}
- bl textbox_close
- ldr r4, _08067060
- ldr r0, _08067064
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r4
- ldrb r0, [r1]
- lsls r0, 31
- cmp r0, 0
- beq _08067032
- adds r0, r1, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
-_08067032:
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0
- bl GetFieldObjectIdByLocalIdAndMap
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl FieldObjectClearAnimIfSpecialAnimFinished
- bl sub_80A2178
- bl sub_806451C
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08067060: .4byte 0x030048a0
-_08067064: .4byte 0x03004ae0
- thumb_func_end ScrCmd_release
-
thumb_func_start ScrCmd_message
ScrCmd_message: @ 8067068
push {r4,lr}
diff --git a/ewram_syms.txt b/ewram_syms.txt
index 7015c8a5f..8f28b49ae 100644
--- a/ewram_syms.txt
+++ b/ewram_syms.txt
@@ -39,6 +39,13 @@ gMapHeader = 0x202E828;
gUnknown_0202E8AC = 0x202E8AC;
gUnknown_0202E8B0 = 0x202E8B0;
+gUnknown_0202E8B4 = 0x202E8B4;
+gUnknown_0202E8B6 = 0x202E8B6;
+gUnknown_0202E8B8 = 0x202E8B8;
+gUnknown_0202E8BA = 0x202E8BA;
+gUnknown_0202E8C4 = 0x202E8C4;
+gUnknown_0202E8C6 = 0x202E8C6;
+gUnknown_0202E8C8 = 0x202E8C8;
gScriptResult = 0x202E8DC;
gMenuWindow = 0x202E908;
diff --git a/include/fieldmap.h b/include/fieldmap.h
index 1abef38da..09ad2ae07 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -32,6 +32,14 @@ struct MapHeader
// TODO: rest of struct
};
+struct MapObject
+{
+ u32 active:1;
+ u8 filler[0x20];
+};
+
+extern struct MapObject gMapObjects[];
+extern u8 gSelectedMapObject;
extern struct MapHeader gMapHeader;
#endif // GUARD_FIELDMAP_H
diff --git a/include/rtc.h b/include/rtc.h
index 96d7e716b..4c9d06d31 100644
--- a/include/rtc.h
+++ b/include/rtc.h
@@ -17,6 +17,8 @@
#define RTC_ERR_FLAG_MASK 0x0FF0
+extern struct Time gLocalTime;
+
void RtcInit();
u16 RtcGetErrorStatus();
void RtcReset();
diff --git a/iwram_syms.txt b/iwram_syms.txt
index d5112541f..6cb0e63b9 100644
--- a/iwram_syms.txt
+++ b/iwram_syms.txt
@@ -24,6 +24,9 @@ gUnknown_3004820 = 0x3004820;
word_3004858 = 0x3004858;
+gMapObjects = 0x30048A0;
+gSelectedMapObject = 0x3004AE0;
+
gTasks = 0x3004B20;
gSaveFileStatus = 0x3005EB8;
diff --git a/src/rtc.c b/src/rtc.c
index ccf8ad078..f9aedfd30 100644
--- a/src/rtc.c
+++ b/src/rtc.c
@@ -9,9 +9,6 @@ static struct SiiRtcInfo sRtc;
static u8 sProbeResult;
static u16 sSavedIme;
-// TODO: Define this in C. Gas prevents it from working at the moment.
-extern struct Time gLocalTime;
-
static const struct SiiRtcInfo sRtcDummy = {0, MONTH_JAN, 1}; // 2000 Jan 1
static const s32 sNumDaysInMonths[12] =
diff --git a/src/scrcmd.c b/src/scrcmd.c
index def0a4d3a..946a2f1c2 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -1,17 +1,161 @@
#include "global.h"
#include "script.h"
#include "rng.h"
+#include "palette.h"
+#include "rtc.h"
+#include "pokemon.h"
+#include "fieldmap.h"
extern void killram(void);
extern u16 *GetVarPointer(u16);
extern u16 VarGet(u16);
extern void sub_8126160(u8);
+extern u8 sub_80A9424(u16, u16);
+extern u8 sub_80A9538(u16, u16);
+extern u8 sub_80A9344(u16, u16);
+extern u8 sub_80A92D4(u16, u16);
+extern u8 sub_80A9670(u16);
+extern u8 sub_80A9760(u16, u16);
+extern u8 sub_80A9718(u16, u16);
+extern u8 IsThereStorageSpaceForDecoration(u8);
+extern s8 sub_81340A8(u8);
+extern u8 sub_8134074(u8);
+extern u8 sub_8133FE4(u8);
+extern void FlagSet(u16);
+extern void FlagReset(u16);
+extern u8 FlagGet(u16);
+extern void sav12_xor_increment(u8);
+extern void sub_8081594(u8);
+extern void sub_8053CE4(u32);
+extern void fade_screen(u8, u8);
+extern void InTrainerHill(void);
+extern void sub_80806B4(u32);
+extern void sub_80806E4(void);
+extern void sub_808073C(void);
+extern void activate_per_step_callback(u8);
+extern void sub_8053D14(u16);
+extern void warp1_set(s8, s8, s8, s8, s8);
+extern void sub_8080E88(void);
+extern void player_avatar_init_params_reset(void);
+extern void sp13E_warp_to_last_warp(void);
+extern void sub_8080EF0(void);
+extern void sp13F_fall_to_last_warp(void);
+extern void sub_8053720(s16, s16);
+extern void PlayerGetDestCoords(u16 *, u16 *);
+extern void sub_8080F68(void);
+extern void saved_warp2_set_2(s8, s8, s8, s8, s8, s8);
+extern void sub_8053690(s8, s8, s8, s8, s8);
+extern void sub_80536E4(s8, s8, s8, s8, s8);
+extern void sub_805363C(s8, s8, s8, s8, s8);
+extern void audio_play(u16);
+extern bool8 task_is_not_running_overworld_fanfare(void);
+extern bool8 mplay_has_finished_maybe(void);
+extern void fanfare_play(u16);
+extern void sav1_set_battle_music_maybe(u16);
+extern void sub_8053F84(void);
+extern void sub_8053FB0(u16);
+extern void sub_8074FB8(u8);
+extern bool8 sub_8074FD0(void);
+extern void sub_8074FF8(u8);
+extern u8 exec_movement(u8, u8, u8, void *);
+extern bool8 sub_80A212C(u8, u8, u8);
+extern void RemoveFieldObjectByLocalIdAndMap(u8, u8, u8);
+extern u8 show_sprite(u8, u8, u8);
+extern void sub_805C0F8(u8, u8, u8, s16, s16);
+extern void update_saveblock1_field_object_coords(u8, s16, s16);
+extern void sub_805C78C(u8, u8, u8);
+extern void npc_by_local_id_and_map_set_field_1_bit_x20(u8, u8, u8, u8);
+extern void sub_805BCF0(u8, u8, u8, u8);
+extern void sub_805BD48(u8, u8, u8);
+extern u8 player_get_direction_lower_nybble(void);
+extern u8 FieldObjectFaceOppositeDirection(void *, u8);
+extern void FieldObjectTurnByLocalIdAndMap(u8, u8, u8, u8);
+extern void update_saveblock1_field_object_movement_behavior(u8, u8);
+extern u8 sub_805B410(u8, u8, s16, s16, u8, u8);
+extern void sub_8064990(u8, u8);
+extern bool32 is_c1_link_related_active(void);
+extern void sub_8064D20(void);
+extern bool8 sub_8064CFC(void);
+extern void sub_8064DD8(void);
+extern bool8 sub_8064DB4(void);
+extern void textbox_close(void);
+extern u8 GetFieldObjectIdByLocalIdAndMap(u8, u8, u8);
+extern u8 FieldObjectClearAnimIfSpecialAnimFinished(void *);
+extern void sub_80A2178(void);
+extern void sub_806451C(void);
+extern bool8 box_related_two__2(u8 *);
+extern bool8 box_related_two__3(u8 *);
+extern bool8 sub_8064C84(void);
+extern bool8 yes_no_box(u8, u8);
+extern bool8 sub_80B5054(u8, u8, u8);
+extern bool8 sub_80B50B0(u8, u8, u8);
+extern bool8 sub_80B5578(u8, u8, u8, u8, u8);
+extern bool8 Multichoice(u8, u8, u8);
+extern bool8 sub_80B58C4(u8, u8, u8);
+extern void *picbox_close(void);
+extern void sub_8106630(u32);
+extern void sub_80C4F10(void);
+extern u8 sub_810F87C(void);
+extern void itemid_copy_name(u16, u8 *);
+extern u8 sub_80BF0B8(u32);
+extern void sub_80B79B8(u32 *, u32);
+extern sub_80B79E0(u32 *, u32);
+extern bool8 IsEnoughMoney(u32, u32);
+extern void sub_80B7C14(u32, u8, u8);
+extern void RemoveMoneyLabelObject(u8, u8);
+extern void sub_80B7BEC(u8, u8, u8);
+extern void sub_811A72C(u32, u8, u8);
+extern void sub_811A770(u8, u8);
+extern void sub_811A704(u32, u8, u8);
+extern void *sub_80823C8(u8 *);
+extern void sub_80825E4(void);
+extern void *sub_80826E8(void);
+extern void *sub_8082700(void);
+extern u8 trainer_flag_check(u16);
+extern void trainer_flag_set(u16);
+extern void trainer_flag_clear(u16);
+extern void sub_80C54D0(u16, u8, u16);
+extern void sub_8081B3C(void);
+extern void CreatePokemartMenu(void *);
+extern void CreateDecorationShop1Menu(void *);
+extern void CreateDecorationShop2Menu(void *);
+extern void sub_81018A0(u8);
+extern void PlantBerryTree(u8, u8, u8, u8);
+extern bool8 GetPriceReduction(u8);
+extern void sub_80F99CC(void);
+extern void sub_80C48C8(void);
+extern void sub_80C4940(void);
+extern void sub_80C4980(u8);
+extern u32 FieldEffectStart(u8);
+extern bool8 FieldEffectActiveListContains(u8);
+extern void sub_8053588(u8);
+extern void sub_8075178(u16, u8);
+extern bool8 sub_8075374(void);
+extern void MapGridSetMetatileIdAt(u32, u32, u16);
+extern u8 sub_8058790(u32, u32, u32);
+extern bool8 task_overworld_door_add_if_role_69_for_opening_door_at(u32, u32);
+extern bool8 sub_805870C(u32, u32);
+extern bool8 sub_805877C(void);
+extern void sub_80586B4(u32, u32);
+extern void sub_80586E0(u32, u32);
+extern void sub_810E7AC(u8, u8, u8, u8);
+extern void sub_810E824(void);
+extern u16 GetCoins(void);
+extern bool8 sub_811A840(u16);
typedef u16 (*SpecialFunc)(void);
typedef void (*NativeFunc)(void);
extern u32 gUnknown_0202E8AC;
extern u32 gUnknown_0202E8B0;
+extern u16 gUnknown_0202E8B4;
+extern u16 gUnknown_0202E8B6;
+extern u16 gUnknown_0202E8B8;
+extern u16 gUnknown_0202E8BA;
+extern u16 gUnknown_0202E8C4;
+extern u16 gUnknown_0202E8C6;
+extern u16 gUnknown_0202E8C8;
+
extern u16 gScriptResult;
extern SpecialFunc gSpecials[];
@@ -378,3 +522,705 @@ bool8 ScrCmd_random(struct ScriptContext *ctx)
gScriptResult = Random() % max;
return FALSE;
}
+
+bool8 ScrCmd_additem(struct ScriptContext *ctx)
+{
+ u16 itemId = VarGet(script_read_halfword(ctx));
+ u32 quantity = VarGet(script_read_halfword(ctx));
+ gScriptResult = sub_80A9424(itemId, (u8)quantity);
+ return FALSE;
+}
+
+bool8 ScrCmd_removeitem(struct ScriptContext *ctx)
+{
+ u16 itemId = VarGet(script_read_halfword(ctx));
+ u32 quantity = VarGet(script_read_halfword(ctx));
+ gScriptResult = sub_80A9538(itemId, (u8)quantity);
+ return FALSE;
+}
+
+bool8 ScrCmd_checkitemspace(struct ScriptContext *ctx)
+{
+ u16 itemId = VarGet(script_read_halfword(ctx));
+ u32 quantity = VarGet(script_read_halfword(ctx));
+ gScriptResult = sub_80A9344(itemId, (u8)quantity);
+ return FALSE;
+}
+
+bool8 ScrCmd_checkitem(struct ScriptContext *ctx)
+{
+ u16 itemId = VarGet(script_read_halfword(ctx));
+ u32 quantity = VarGet(script_read_halfword(ctx));
+ gScriptResult = sub_80A92D4(itemId, (u8)quantity);
+ return FALSE;
+}
+
+bool8 ScrCmd_checkitemtype(struct ScriptContext *ctx)
+{
+ u16 itemId = VarGet(script_read_halfword(ctx));
+ gScriptResult = sub_80A9670(itemId);
+ return FALSE;
+}
+
+bool8 ScrCmd_addpcitem(struct ScriptContext *ctx)
+{
+ u16 itemId = VarGet(script_read_halfword(ctx));
+ u16 quantity = VarGet(script_read_halfword(ctx));
+ gScriptResult = sub_80A9760(itemId, quantity);
+ return FALSE;
+}
+
+bool8 ScrCmd_checkpcitem(struct ScriptContext *ctx)
+{
+ u16 itemId = VarGet(script_read_halfword(ctx));
+ u16 quantity = VarGet(script_read_halfword(ctx));
+ gScriptResult = sub_80A9718(itemId, quantity);
+ return FALSE;
+}
+
+bool8 ScrCmd_adddecor(struct ScriptContext *ctx)
+{
+ u32 decorId = VarGet(script_read_halfword(ctx));
+ gScriptResult = IsThereStorageSpaceForDecoration(decorId);
+ return FALSE;
+}
+
+bool8 ScrCmd_removedecor(struct ScriptContext *ctx)
+{
+ u32 decorId = VarGet(script_read_halfword(ctx));
+ gScriptResult = sub_81340A8(decorId);
+ return FALSE;
+}
+
+bool8 ScrCmd_checkdecor(struct ScriptContext *ctx)
+{
+ u32 decorId = VarGet(script_read_halfword(ctx));
+ gScriptResult = sub_8134074(decorId);
+ return FALSE;
+}
+
+bool8 ScrCmd_testdecor(struct ScriptContext *ctx)
+{
+ u32 decorId = VarGet(script_read_halfword(ctx));
+ gScriptResult = sub_8133FE4(decorId);
+ return FALSE;
+}
+
+bool8 ScrCmd_setflag(struct ScriptContext *ctx)
+{
+ FlagSet(script_read_halfword(ctx));
+ return FALSE;
+}
+
+bool8 ScrCmd_clearflag(struct ScriptContext *ctx)
+{
+ FlagReset(script_read_halfword(ctx));
+ return FALSE;
+}
+
+bool8 ScrCmd_checkflag(struct ScriptContext *ctx)
+{
+ ctx->comparisonResult = FlagGet(script_read_halfword(ctx));
+ return FALSE;
+}
+
+bool8 ScrCmd_inccounter(struct ScriptContext *ctx)
+{
+ sav12_xor_increment(*(ctx->scriptPtr++));
+ return FALSE;
+}
+
+bool8 ScrCmd_lighten(struct ScriptContext *ctx)
+{
+ sub_8081594(*(ctx->scriptPtr++));
+ sub_80655F0();
+ return TRUE;
+}
+
+bool8 ScrCmd_darken(struct ScriptContext *ctx)
+{
+ u16 value = VarGet(script_read_halfword(ctx));
+ sub_8053CE4(value);
+ return FALSE;
+}
+
+bool8 sub_8066248(void)
+{
+ if (!gPaletteFade.active)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 ScrCmd_fadescreen(struct ScriptContext *ctx)
+{
+ fade_screen(*(ctx->scriptPtr++), 0);
+ script_setup_asm_script(ctx, sub_8066248);
+ return TRUE;
+}
+
+bool8 ScrCmd_fadescreendelay(struct ScriptContext *ctx)
+{
+ u8 val1 = *(ctx->scriptPtr++);
+ u8 val2 = *(ctx->scriptPtr++);
+ fade_screen(val1, val2);
+ script_setup_asm_script(ctx, sub_8066248);
+ return TRUE;
+}
+
+bool8 s28_pause_asm()
+{
+ gUnknown_0202E8B4--;
+
+ if (gUnknown_0202E8B4 == 0)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 ScrCmd_pause(struct ScriptContext *ctx)
+{
+ gUnknown_0202E8B4 = script_read_halfword(ctx);
+ script_setup_asm_script(ctx, s28_pause_asm);
+ return TRUE;
+}
+
+bool8 ScrCmd_compareflags(struct ScriptContext *ctx)
+{
+ u8 hour = VarGet(script_read_halfword(ctx));
+ u8 minute = VarGet(script_read_halfword(ctx));
+ RtcInitLocalTimeOffset(hour, minute);
+ return FALSE;
+}
+
+bool8 ScrCmd_checkdailyflags(struct ScriptContext *ctx)
+{
+ InTrainerHill();
+ return FALSE;
+}
+
+bool8 ScrCmd_resetvars(struct ScriptContext *ctx)
+{
+ RtcCalcLocalTime();
+ gUnknown_0202E8C4 = gLocalTime.hours;
+ gUnknown_0202E8C6 = gLocalTime.minutes;
+ gUnknown_0202E8C8 = gLocalTime.seconds;
+ return FALSE;
+}
+
+bool8 ScrCmd_setweather(struct ScriptContext *ctx)
+{
+ u16 value = VarGet(script_read_halfword(ctx));
+ sub_80806B4(value);
+ return FALSE;
+}
+
+bool8 ScrCmd_resetweather(struct ScriptContext *ctx)
+{
+ sub_80806E4();
+ return FALSE;
+}
+
+bool8 ScrCmd_doweather(struct ScriptContext *ctx)
+{
+ sub_808073C();
+ return FALSE;
+}
+
+bool8 ScrCmd_tileeffect(struct ScriptContext *ctx)
+{
+ activate_per_step_callback(*(ctx->scriptPtr++));
+ return FALSE;
+}
+
+bool8 ScrCmd_setmapfooter(struct ScriptContext *ctx)
+{
+ u16 value = VarGet(script_read_halfword(ctx));
+ sub_8053D14(value);
+ return FALSE;
+}
+
+bool8 ScrCmd_warp(struct ScriptContext *ctx)
+{
+ u8 v1 = *(ctx->scriptPtr++);
+ u8 v2 = *(ctx->scriptPtr++);
+ u8 v3 = *(ctx->scriptPtr++);
+ u16 v4 = VarGet(script_read_halfword(ctx));
+ s8 v5 = VarGet(script_read_halfword(ctx));
+ warp1_set(v1, v2, v3, v4, v5);
+ sub_8080E88();
+ player_avatar_init_params_reset();
+ return TRUE;
+}
+
+bool8 ScrCmd_warpmuted(struct ScriptContext *ctx)
+{
+ u8 v1 = *(ctx->scriptPtr++);
+ u8 v2 = *(ctx->scriptPtr++);
+ u8 v3 = *(ctx->scriptPtr++);
+ u16 v4 = VarGet(script_read_halfword(ctx));
+ s8 v5 = VarGet(script_read_halfword(ctx));
+ warp1_set(v1, v2, v3, v4, v5);
+ sp13E_warp_to_last_warp();
+ player_avatar_init_params_reset();
+ return TRUE;
+}
+
+bool8 ScrCmd_warpwalk(struct ScriptContext *ctx)
+{
+ u8 v1 = *(ctx->scriptPtr++);
+ u8 v2 = *(ctx->scriptPtr++);
+ u8 v3 = *(ctx->scriptPtr++);
+ u16 v4 = VarGet(script_read_halfword(ctx));
+ s8 v5 = VarGet(script_read_halfword(ctx));
+ warp1_set(v1, v2, v3, v4, v5);
+ sub_8080EF0();
+ player_avatar_init_params_reset();
+ return TRUE;
+}
+
+bool8 ScrCmd_warphole(struct ScriptContext *ctx)
+{
+ u8 v1 = *(ctx->scriptPtr++);
+ u8 v2 = *(ctx->scriptPtr++);
+ u16 x;
+ u16 y;
+
+ PlayerGetDestCoords(&x, &y);
+
+ if (v1 == 0xFF && v2 == 0xFF)
+ sub_8053720(x - 7, y - 7);
+ else
+ warp1_set(v1, v2, -1, x - 7, y - 7);
+
+ sp13F_fall_to_last_warp();
+ player_avatar_init_params_reset();
+ return TRUE;
+}
+
+bool8 ScrCmd_warpteleport(struct ScriptContext *ctx)
+{
+ u8 v1 = *(ctx->scriptPtr++);
+ u8 v2 = *(ctx->scriptPtr++);
+ u8 v3 = *(ctx->scriptPtr++);
+ u16 v4 = VarGet(script_read_halfword(ctx));
+ s8 v5 = VarGet(script_read_halfword(ctx));
+ warp1_set(v1, v2, v3, v4, v5);
+ sub_8080F68();
+ player_avatar_init_params_reset();
+ return TRUE;
+}
+
+bool8 ScrCmd_warp3(struct ScriptContext *ctx)
+{
+ u8 v1 = *(ctx->scriptPtr++);
+ u8 v2 = *(ctx->scriptPtr++);
+ u8 v3 = *(ctx->scriptPtr++);
+ u16 v4 = VarGet(script_read_halfword(ctx));
+ s8 v5 = VarGet(script_read_halfword(ctx));
+ warp1_set(v1, v2, v3, v4, v5);
+ return FALSE;
+}
+
+bool8 ScrCmd_warpplace(struct ScriptContext *ctx)
+{
+ u8 v1 = *(ctx->scriptPtr++);
+ u8 v2 = *(ctx->scriptPtr++);
+ u8 v3 = *(ctx->scriptPtr++);
+ u16 v4 = VarGet(script_read_halfword(ctx));
+ s8 v5 = VarGet(script_read_halfword(ctx));
+ saved_warp2_set_2(0, v1, v2, v3, v4, v5);
+ return FALSE;
+}
+
+bool8 ScrCmd_warp4(struct ScriptContext *ctx)
+{
+ u8 v1 = *(ctx->scriptPtr++);
+ u8 v2 = *(ctx->scriptPtr++);
+ u8 v3 = *(ctx->scriptPtr++);
+ u16 v4 = VarGet(script_read_halfword(ctx));
+ s8 v5 = VarGet(script_read_halfword(ctx));
+ sub_8053690(v1, v2, v3, v4, v5);
+ return FALSE;
+}
+
+bool8 ScrCmd_warp5(struct ScriptContext *ctx)
+{
+ u8 v1 = *(ctx->scriptPtr++);
+ u8 v2 = *(ctx->scriptPtr++);
+ u8 v3 = *(ctx->scriptPtr++);
+ u16 v4 = VarGet(script_read_halfword(ctx));
+ s8 v5 = VarGet(script_read_halfword(ctx));
+ sub_80536E4(v1, v2, v3, v4, v5);
+ return FALSE;
+}
+
+bool8 ScrCmd_warp6(struct ScriptContext *ctx)
+{
+ u8 v1 = *(ctx->scriptPtr++);
+ u8 v2 = *(ctx->scriptPtr++);
+ u8 v3 = *(ctx->scriptPtr++);
+ u16 v4 = VarGet(script_read_halfword(ctx));
+ s8 v5 = VarGet(script_read_halfword(ctx));
+ sub_805363C(v1, v2, v3, v4, v5);
+ return FALSE;
+}
+
+bool8 ScrCmd_getplayerxy(struct ScriptContext *ctx)
+{
+ u16 *ptr1 = GetVarPointer(script_read_halfword(ctx));
+ u16 *ptr2 = GetVarPointer(script_read_halfword(ctx));
+ *ptr1 = gSaveBlock1.pos.x;
+ *ptr2 = gSaveBlock1.pos.y;
+ return FALSE;
+}
+
+bool8 ScrCmd_countpokemon(struct ScriptContext *ctx)
+{
+ gScriptResult = CalculatePlayerPartyCount();
+ return FALSE;
+}
+
+bool8 ScrCmd_playsfx(struct ScriptContext *ctx)
+{
+ audio_play(script_read_halfword(ctx));
+ return FALSE;
+}
+
+bool8 s30_music_check_asm()
+{
+ if (!mplay_has_finished_maybe())
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 ScrCmd_checksound(struct ScriptContext *ctx)
+{
+ script_setup_asm_script(ctx, s30_music_check_asm);
+ return TRUE;
+}
+
+bool8 ScrCmd_fanfare(struct ScriptContext *ctx)
+{
+ fanfare_play(script_read_halfword(ctx));
+ return FALSE;
+}
+
+bool8 s32_fanfare_wait_asm()
+{
+ return task_is_not_running_overworld_fanfare();
+}
+
+bool8 ScrCmd_waitfanfare(struct ScriptContext *ctx)
+{
+ script_setup_asm_script(ctx, s32_fanfare_wait_asm);
+ return TRUE;
+}
+
+bool8 ScrCmd_playmusic(struct ScriptContext *ctx)
+{
+ u16 songId = script_read_halfword(ctx);
+ bool8 val = *(ctx->scriptPtr++);
+ if (val == TRUE)
+ sav1_set_battle_music_maybe(songId);
+ current_map_music_set(songId);
+ return FALSE;
+}
+
+bool8 ScrCmd_playmusicbattle(struct ScriptContext *ctx)
+{
+ sav1_set_battle_music_maybe(script_read_halfword(ctx));
+ return FALSE;
+}
+
+bool8 ScrCmd_fadedefault(struct ScriptContext *ctx)
+{
+ sub_8053F84();
+ return FALSE;
+}
+
+bool8 ScrCmd_fademusic(struct ScriptContext *ctx)
+{
+ sub_8053FB0(script_read_halfword(ctx));
+ return FALSE;
+}
+
+bool8 ScrCmd_fadeout(struct ScriptContext *ctx)
+{
+ u8 val = *(ctx->scriptPtr++);
+ if (val)
+ sub_8074FB8(4 * val);
+ else
+ sub_8074FB8(4);
+ script_setup_asm_script(ctx, sub_8074FD0);
+ return TRUE;
+}
+
+bool8 ScrCmd_fadein(struct ScriptContext *ctx)
+{
+ u8 val = *(ctx->scriptPtr++);
+ if (val)
+ sub_8074FF8(4 * val);
+ else
+ sub_8074FF8(4);
+ return FALSE;
+}
+
+bool8 ScrCmd_move(struct ScriptContext *ctx)
+{
+ u16 v1 = VarGet(script_read_halfword(ctx));
+ void *v2 = (void *)script_read_word(ctx);
+ exec_movement(v1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, v2);
+ gUnknown_0202E8B6 = v1;
+ return FALSE;
+}
+
+bool8 ScrCmd_movecoords(struct ScriptContext *ctx)
+{
+ u16 v1 = VarGet(script_read_halfword(ctx));
+ void *v2 = (void *)script_read_word(ctx);
+ u8 v3 = *(ctx->scriptPtr++);
+ u8 v4 = *(ctx->scriptPtr++);
+ exec_movement(v1, v4, v3, v2);
+ gUnknown_0202E8B6 = v1;
+ return FALSE;
+}
+
+bool8 s51a_0806B288(void)
+{
+ return sub_80A212C(gUnknown_0202E8B6, gUnknown_0202E8BA, gUnknown_0202E8B8);
+}
+
+bool8 ScrCmd_waitmove(struct ScriptContext *ctx)
+{
+ u16 v1 = VarGet(script_read_halfword(ctx));
+ if (v1)
+ gUnknown_0202E8B6 = v1;
+ gUnknown_0202E8B8 = gSaveBlock1.location.mapGroup;
+ gUnknown_0202E8BA = gSaveBlock1.location.mapNum;
+ script_setup_asm_script(ctx, s51a_0806B288);
+ return TRUE;
+}
+
+bool8 ScrCmd_waitmovexy(struct ScriptContext *ctx)
+{
+ u16 v1 = VarGet(script_read_halfword(ctx));
+ u8 v2;
+ u8 v3;
+
+ if (v1)
+ gUnknown_0202E8B6 = v1;
+
+ v2 = *(ctx->scriptPtr++);
+ v3 = *(ctx->scriptPtr++);
+ gUnknown_0202E8B8 = v2;
+ gUnknown_0202E8BA = v3;
+ script_setup_asm_script(ctx, s51a_0806B288);
+ return TRUE;
+}
+
+bool8 ScrCmd_disappear(struct ScriptContext *ctx)
+{
+ u16 objectId = VarGet(script_read_halfword(ctx));
+ RemoveFieldObjectByLocalIdAndMap(objectId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+ return FALSE;
+}
+
+bool8 ScrCmd_disappearxy(struct ScriptContext *ctx)
+{
+ u16 objectId = VarGet(script_read_halfword(ctx));
+ u8 mapGroup = *(ctx->scriptPtr++);
+ u8 mapNum = *(ctx->scriptPtr++);
+ RemoveFieldObjectByLocalIdAndMap(objectId, mapNum, mapGroup);
+ return FALSE;
+}
+
+bool8 ScrCmd_reappear(struct ScriptContext *ctx)
+{
+ u16 objectId = VarGet(script_read_halfword(ctx));
+ show_sprite(objectId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+ return FALSE;
+}
+
+bool8 ScrCmd_reappearxy(struct ScriptContext *ctx)
+{
+ u16 objectId = VarGet(script_read_halfword(ctx));
+ u8 mapGroup = *(ctx->scriptPtr++);
+ u8 mapNum = *(ctx->scriptPtr++);
+ show_sprite(objectId, mapNum, mapGroup);
+ return FALSE;
+}
+
+bool8 ScrCmd_movesprite(struct ScriptContext *ctx)
+{
+ u16 v1 = VarGet(script_read_halfword(ctx));
+ u16 v2 = VarGet(script_read_halfword(ctx));
+ u32 v3 = VarGet(script_read_halfword(ctx));
+ sub_805C0F8(v1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, v2, v3);
+ return FALSE;
+}
+
+bool8 ScrCmd_movespriteperm(struct ScriptContext *ctx)
+{
+ u16 v1 = VarGet(script_read_halfword(ctx));
+ u16 v2 = VarGet(script_read_halfword(ctx));
+ u32 v3 = VarGet(script_read_halfword(ctx));
+ update_saveblock1_field_object_coords(v1, v2, v3);
+ return FALSE;
+}
+
+bool8 ScrCmd_moveoffscreen(struct ScriptContext *ctx)
+{
+ u16 v1 = VarGet(script_read_halfword(ctx));
+ sub_805C78C(v1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+ return FALSE;
+}
+
+bool8 ScrCmd_spritevisible(struct ScriptContext *ctx)
+{
+ u16 v1 = VarGet(script_read_halfword(ctx));
+ u8 v2 = *(ctx->scriptPtr++);
+ u8 v3 = *(ctx->scriptPtr++);
+ npc_by_local_id_and_map_set_field_1_bit_x20(v1, v3, v2, 0);
+ return FALSE;
+}
+
+bool8 ScrCmd_spriteinvisible(struct ScriptContext *ctx)
+{
+ u16 v1 = VarGet(script_read_halfword(ctx));
+ u8 v2 = *(ctx->scriptPtr++);
+ u8 v3 = *(ctx->scriptPtr++);
+ npc_by_local_id_and_map_set_field_1_bit_x20(v1, v3, v2, 1);
+ return FALSE;
+}
+
+bool8 ScrCmd_spritelevelup(struct ScriptContext *ctx)
+{
+ u16 v1 = VarGet(script_read_halfword(ctx));
+ u8 v2 = *(ctx->scriptPtr++);
+ u8 v3 = *(ctx->scriptPtr++);
+ u8 v4 = *(ctx->scriptPtr++);
+ sub_805BCF0(v1, v3, v2, v4 + 83);
+ return FALSE;
+}
+
+bool8 ScrCmd_restorespritelevel(struct ScriptContext *ctx)
+{
+ u16 v1 = VarGet(script_read_halfword(ctx));
+ u8 v2 = *(ctx->scriptPtr++);
+ u8 v3 = *(ctx->scriptPtr++);
+ sub_805BD48(v1, v3, v2);
+ return FALSE;
+}
+
+bool8 ScrCmd_faceplayer(struct ScriptContext *ctx)
+{
+ struct MapObject *objects = gMapObjects;
+ struct MapObject *object = &objects[gSelectedMapObject];
+ if (object->active)
+ {
+ u8 dir = player_get_direction_lower_nybble();
+ FieldObjectFaceOppositeDirection(object, dir);
+ }
+ return FALSE;
+}
+
+bool8 ScrCmd_spriteface(struct ScriptContext *ctx)
+{
+ u16 v1 = VarGet(script_read_halfword(ctx));
+ u8 v2 = *(ctx->scriptPtr++);
+ FieldObjectTurnByLocalIdAndMap(v1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, v2);
+ return FALSE;
+}
+
+bool8 ScrCmd_spritebehave(struct ScriptContext *ctx)
+{
+ u16 v1 = VarGet(script_read_halfword(ctx));
+ u8 v2 = *(ctx->scriptPtr++);
+ update_saveblock1_field_object_movement_behavior(v1, v2);
+ return FALSE;
+}
+
+bool8 ScrCmd_createvsprite(struct ScriptContext *ctx)
+{
+ u8 v1 = *(ctx->scriptPtr++);
+ u8 v2 = *(ctx->scriptPtr++);
+ u16 v3 = VarGet(script_read_halfword(ctx));
+ u32 v4 = VarGet(script_read_halfword(ctx));
+ u8 v5 = *(ctx->scriptPtr++);
+ u8 v6 = *(ctx->scriptPtr++);
+ sub_805B410(v1, v2, v3, v4, v5, v6);
+ return FALSE;
+}
+
+bool8 ScrCmd_vspriteface(struct ScriptContext *ctx)
+{
+ u8 v1 = *(ctx->scriptPtr++);
+ u8 v2 = *(ctx->scriptPtr++);
+ sub_8064990(v1, v2);
+ return FALSE;
+}
+
+bool8 ScrCmd_lockall(struct ScriptContext *ctx)
+{
+ if (is_c1_link_related_active())
+ {
+ return FALSE;
+ }
+ else
+ {
+ sub_8064D20();
+ script_setup_asm_script(ctx, sub_8064CFC);
+ return TRUE;
+ }
+}
+
+bool8 ScrCmd_lock(struct ScriptContext *ctx)
+{
+ if (is_c1_link_related_active())
+ {
+ return FALSE;
+ }
+ else
+ {
+ if (gMapObjects[gSelectedMapObject].active)
+ {
+ sub_8064DD8();
+ script_setup_asm_script(ctx, sub_8064DB4);
+ }
+ else
+ {
+ sub_8064D20();
+ script_setup_asm_script(ctx, sub_8064CFC);
+ }
+
+ return TRUE;
+ }
+}
+
+bool8 ScrCmd_releaseall(struct ScriptContext *ctx)
+{
+ u8 objectId;
+
+ textbox_close();
+ objectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[objectId]);
+ sub_80A2178();
+ sub_806451C();
+ return FALSE;
+}
+
+bool8 ScrCmd_release(struct ScriptContext *ctx)
+{
+ u8 objectId;
+
+ textbox_close();
+ if (gMapObjects[gSelectedMapObject].active)
+ FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[gSelectedMapObject]);
+ objectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[objectId]);
+ sub_80A2178();
+ sub_806451C();
+ return FALSE;
+}