diff options
-rw-r--r-- | asm/rom_8065394.s | 2220 | ||||
-rw-r--r-- | ewram_syms.txt | 7 | ||||
-rw-r--r-- | include/fieldmap.h | 8 | ||||
-rw-r--r-- | include/rtc.h | 2 | ||||
-rw-r--r-- | iwram_syms.txt | 3 | ||||
-rw-r--r-- | src/rtc.c | 3 | ||||
-rw-r--r-- | src/scrcmd.c | 846 |
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; @@ -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; +} |