diff options
-rw-r--r-- | asm/battle_setup.s | 44 | ||||
-rw-r--r-- | asm/field_player_avatar.s | 2 | ||||
-rw-r--r-- | asm/party_menu.s | 8 | ||||
-rw-r--r-- | asm/scrcmd.s | 605 | ||||
-rw-r--r-- | asm/script_pokemon_util_80A0058.s | 6 | ||||
-rw-r--r-- | asm/shop.s | 6 | ||||
-rw-r--r-- | data/script_cmd_table.inc | 4 | ||||
-rw-r--r-- | include/battle_setup.h | 4 | ||||
-rw-r--r-- | include/party_menu.h | 2 | ||||
-rw-r--r-- | include/pokemon_storage_system.h | 1 | ||||
-rw-r--r-- | include/quest_log.h | 1 | ||||
-rw-r--r-- | include/script_menu.h | 1 | ||||
-rw-r--r-- | include/script_pokemon_util_80A0058.h | 8 | ||||
-rw-r--r-- | src/scrcmd.c | 273 |
14 files changed, 311 insertions, 654 deletions
diff --git a/asm/battle_setup.s b/asm/battle_setup.s index bba968305..529787bf6 100644 --- a/asm/battle_setup.s +++ b/asm/battle_setup.s @@ -318,8 +318,8 @@ _0807F8BC: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music _0807F8C0: .4byte gBattleTypeFlags thumb_func_end sub_807F888 - thumb_func_start sub_807F8C4 -sub_807F8C4: @ 807F8C4 + thumb_func_start BattleSetup_StartScriptedWildBattle +BattleSetup_StartScriptedWildBattle: @ 807F8C4 push {lr} bl ScriptContext2_Enable ldr r1, _0807F8F8 @ =gMain @@ -344,7 +344,7 @@ sub_807F8C4: @ 807F8C4 _0807F8F8: .4byte gMain _0807F8FC: .4byte sub_807FBA0 _0807F900: .4byte gBattleTypeFlags - thumb_func_end sub_807F8C4 + thumb_func_end BattleSetup_StartScriptedWildBattle thumb_func_start sub_807F904 sub_807F904: @ 807F904 @@ -1524,8 +1524,8 @@ _08080220: .4byte gSaveBlock1Ptr _08080224: .4byte gSelectedEventObject thumb_func_end battle_80801F0 - thumb_func_start sub_8080228 -sub_8080228: @ 8080228 + thumb_func_start BattleSetup_ConfigureTrainerBattle +BattleSetup_ConfigureTrainerBattle: @ 8080228 push {r4,r5,lr} adds r5, r0, 0 bl sub_8080110 @@ -1640,7 +1640,7 @@ _08080326: .align 2, 0 _0808032C: .4byte gUnknown_83C6900 _08080330: .4byte gUnknown_81A4EC1 - thumb_func_end sub_8080228 + thumb_func_end BattleSetup_ConfigureTrainerBattle thumb_func_start TrainerWantsBattle TrainerWantsBattle: @ 8080334 @@ -1659,7 +1659,7 @@ TrainerWantsBattle: @ 8080334 strh r0, [r4] adds r1, 0x1 adds r0, r1, 0 - bl sub_8080228 + bl BattleSetup_ConfigureTrainerBattle ldr r0, _08080374 @ =gUnknown_81A4EB4 bl ScriptContext1_SetupScript bl ScriptContext2_Enable @@ -1785,8 +1785,8 @@ HasTrainerAlreadyBeenFought: @ 8080424 bx r1 thumb_func_end HasTrainerAlreadyBeenFought - thumb_func_start trainer_flag_set -trainer_flag_set: @ 808043C + thumb_func_start SetTrainerFlag +SetTrainerFlag: @ 808043C push {lr} lsls r0, 16 movs r1, 0xA0 @@ -1796,10 +1796,10 @@ trainer_flag_set: @ 808043C bl FlagSet pop {r0} bx r0 - thumb_func_end trainer_flag_set + thumb_func_end SetTrainerFlag - thumb_func_start trainer_flag_clear -trainer_flag_clear: @ 8080450 + thumb_func_start ClearTrainerFlag +ClearTrainerFlag: @ 8080450 push {lr} lsls r0, 16 movs r1, 0xA0 @@ -1809,10 +1809,10 @@ trainer_flag_clear: @ 8080450 bl FlagClear pop {r0} bx r0 - thumb_func_end trainer_flag_clear + thumb_func_end ClearTrainerFlag - thumb_func_start sub_8080464 -sub_8080464: @ 8080464 + thumb_func_start BattleSetup_StartTrainerBattle +BattleSetup_StartTrainerBattle: @ 8080464 push {r4,lr} ldr r4, _080804A0 @ =gBattleTypeFlags movs r0, 0x8 @@ -1844,7 +1844,7 @@ _0808048C: _080804A0: .4byte gBattleTypeFlags _080804A4: .4byte gMain _080804A8: .4byte sub_80804AC - thumb_func_end sub_8080464 + thumb_func_end BattleSetup_StartTrainerBattle thumb_func_start sub_80804AC sub_80804AC: @ 80804AC @@ -1992,8 +1992,8 @@ sub_80805D8: @ 80805D8 bx r0 thumb_func_end sub_80805D8 - thumb_func_start sub_80805E8 -sub_80805E8: @ 80805E8 + thumb_func_start BattleSetup_GetScriptAddrAfterBattle +BattleSetup_GetScriptAddrAfterBattle: @ 80805E8 push {lr} ldr r0, _080805F8 @ =gUnknown_20386C4 ldr r0, [r0] @@ -2006,10 +2006,10 @@ _080805F4: .align 2, 0 _080805F8: .4byte gUnknown_20386C4 _080805FC: .4byte gUnknown_81C555B - thumb_func_end sub_80805E8 + thumb_func_end BattleSetup_GetScriptAddrAfterBattle - thumb_func_start sub_8080600 -sub_8080600: @ 8080600 + thumb_func_start BattleSetup_GetTrainerPostBattleScript +BattleSetup_GetTrainerPostBattleScript: @ 8080600 push {lr} ldr r0, _08080610 @ =gUnknown_20386C8 ldr r0, [r0] @@ -2022,7 +2022,7 @@ _0808060C: .align 2, 0 _08080610: .4byte gUnknown_20386C8 _08080614: .4byte gUnknown_81C555B - thumb_func_end sub_8080600 + thumb_func_end BattleSetup_GetTrainerPostBattleScript thumb_func_start sub_8080618 sub_8080618: @ 8080618 diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s index aa68c6ef2..df2588587 100644 --- a/asm/field_player_avatar.s +++ b/asm/field_player_avatar.s @@ -2818,7 +2818,7 @@ PartyHasMonWithSurf: @ 805C83C _0805C84E: adds r0, r4, 0 movs r1, 0x39 - bl pokemon_has_move + bl MonKnowsMove lsls r0, 24 cmp r0, 0 beq _0805C860 diff --git a/asm/party_menu.s b/asm/party_menu.s index 8d6da0894..c0e4a79f4 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -4298,7 +4298,7 @@ _08120B86: lsls r0, 16 lsrs r1, r0, 16 adds r0, r5, 0 - bl pokemon_has_move + bl MonKnowsMove lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -14185,8 +14185,8 @@ _08125ABC: bx r1 thumb_func_end sub_8125A90 - thumb_func_start pokemon_has_move -pokemon_has_move: @ 8125AC0 + thumb_func_start MonKnowsMove +MonKnowsMove: @ 8125AC0 push {r4-r6,lr} adds r6, r0, 0 lsls r1, 16 @@ -14212,7 +14212,7 @@ _08125AE8: pop {r4-r6} pop {r1} bx r1 - thumb_func_end pokemon_has_move + thumb_func_end MonKnowsMove thumb_func_start sub_8125AF0 sub_8125AF0: @ 8125AF0 diff --git a/asm/scrcmd.s b/asm/scrcmd.s index 45e7bd376..8ffce84cd 100644 --- a/asm/scrcmd.s +++ b/asm/scrcmd.s @@ -5,611 +5,6 @@ .text - thumb_func_start ScrCmd_vloadword -ScrCmd_vloadword: @ 806BF3C - push {lr} - bl ScriptReadWord - adds r1, r0, 0 - ldr r0, _0806BF58 @ =gVScriptOffset - ldr r0, [r0] - subs r1, r0 - ldr r0, _0806BF5C @ =gStringVar4 - bl StringExpandPlaceholders - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806BF58: .4byte gVScriptOffset -_0806BF5C: .4byte gStringVar4 - thumb_func_end ScrCmd_vloadword - - thumb_func_start ScrCmd_vbufferstring -ScrCmd_vbufferstring: @ 806BF60 - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadWord - adds r1, r0, 0 - ldr r0, _0806BF8C @ =gVScriptOffset - ldr r0, [r0] - subs r1, r0 - ldr r0, _0806BF90 @ =sScriptStringVars - lsls r4, 2 - adds r4, r0 - ldr r0, [r4] - bl StringCopy - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806BF8C: .4byte gVScriptOffset -_0806BF90: .4byte sScriptStringVars - thumb_func_end ScrCmd_vbufferstring - - thumb_func_start ScrCmd_bufferboxname -ScrCmd_bufferboxname: @ 806BF94 - push {r4,lr} - ldr r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - ldr r1, _0806BFCC @ =sScriptStringVars - lsls r4, 2 - adds r4, r1 - ldr r4, [r4] - lsls r0, 24 - lsrs r0, 24 - bl GetBoxNamePtr - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806BFCC: .4byte sScriptStringVars - thumb_func_end ScrCmd_bufferboxname - - thumb_func_start ScrCmd_givemon -ScrCmd_givemon: @ 806BFD0 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x8 - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r6, r0, 0 - lsls r6, 16 - lsrs r6, 16 - ldr r0, [r4, 0x8] - ldrb r1, [r0] - mov r9, r1 - adds r0, 0x1 - str r0, [r4, 0x8] - adds r0, r4, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r4, 0 - bl ScriptReadWord - mov r8, r0 - adds r0, r4, 0 - bl ScriptReadWord - ldr r1, [r4, 0x8] - ldrb r2, [r1] - adds r1, 0x1 - str r1, [r4, 0x8] - ldr r4, _0806C04C @ =gSpecialVar_Result - str r0, [sp] - str r2, [sp, 0x4] - adds r0, r6, 0 - mov r1, r9 - adds r2, r5, 0 - mov r3, r8 - bl ScriptGiveMon - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - movs r0, 0 - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0806C04C: .4byte gSpecialVar_Result - thumb_func_end ScrCmd_givemon - - thumb_func_start ScrCmd_giveegg -ScrCmd_giveegg: @ 806C050 - push {r4,lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - ldr r4, _0806C078 @ =gSpecialVar_Result - bl sub_80A01AC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806C078: .4byte gSpecialVar_Result - thumb_func_end ScrCmd_giveegg - - thumb_func_start ScrCmd_setmonmove -ScrCmd_setmonmove: @ 806C07C - push {r4,r5,lr} - ldr r1, [r0, 0x8] - ldrb r5, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - bl ScriptReadHalfword - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r5, 0 - adds r2, r4, 0 - bl ScriptSetMonMoveSlot - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end ScrCmd_setmonmove - - thumb_func_start ScrCmd_checkpartymove -ScrCmd_checkpartymove: @ 806C0A8 - push {r4-r7,lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r7, r0, 16 - ldr r1, _0806C0BC @ =gSpecialVar_Result - movs r0, 0x6 - strh r0, [r1] - movs r6, 0 - b _0806C0F6 - .align 2, 0 -_0806C0BC: .4byte gSpecialVar_Result -_0806C0C0: - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0806C0F0 - adds r0, r4, 0 - adds r1, r7, 0 - bl pokemon_has_move - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806C0F0 - ldr r0, _0806C0E8 @ =gSpecialVar_Result - strh r6, [r0] - ldr r0, _0806C0EC @ =gSpecialVar_0x8004 - strh r5, [r0] - b _0806C116 - .align 2, 0 -_0806C0E8: .4byte gSpecialVar_Result -_0806C0EC: .4byte gSpecialVar_0x8004 -_0806C0F0: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_0806C0F6: - cmp r6, 0x5 - bhi _0806C116 - movs r0, 0x64 - adds r1, r6, 0 - muls r1, r0 - ldr r0, _0806C120 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - movs r2, 0 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0 - bne _0806C0C0 -_0806C116: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0806C120: .4byte gPlayerParty - thumb_func_end ScrCmd_checkpartymove - - thumb_func_start ScrCmd_givemoney -ScrCmd_givemoney: @ 806C124 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r2, r0, 0 - ldr r0, [r4, 0x8] - ldrb r1, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - cmp r1, 0 - bne _0806C14A - ldr r0, _0806C154 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0xA4 - lsls r1, 2 - adds r0, r1 - adds r1, r2, 0 - bl AddMoney -_0806C14A: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806C154: .4byte gSaveBlock1Ptr - thumb_func_end ScrCmd_givemoney - - thumb_func_start ScrCmd_takemoney -ScrCmd_takemoney: @ 806C158 - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r2, r0, 0 - ldr r0, [r4, 0x8] - ldrb r1, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - cmp r1, 0 - bne _0806C17E - ldr r0, _0806C188 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0xA4 - lsls r1, 2 - adds r0, r1 - adds r1, r2, 0 - bl RemoveMoney -_0806C17E: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806C188: .4byte gSaveBlock1Ptr - thumb_func_end ScrCmd_takemoney - - thumb_func_start ScrCmd_checkmoney -ScrCmd_checkmoney: @ 806C18C - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadWord - adds r2, r0, 0 - ldr r0, [r4, 0x8] - ldrb r1, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - cmp r1, 0 - bne _0806C1BA - ldr r4, _0806C1C4 @ =gSpecialVar_Result - ldr r0, _0806C1C8 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0xA4 - lsls r1, 2 - adds r0, r1 - adds r1, r2, 0 - bl IsEnoughMoney - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] -_0806C1BA: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806C1C4: .4byte gSpecialVar_Result -_0806C1C8: .4byte gSaveBlock1Ptr - thumb_func_end ScrCmd_checkmoney - - thumb_func_start ScrCmd_showmoneybox -ScrCmd_showmoneybox: @ 806C1CC - push {r4,r5,lr} - ldr r1, [r0, 0x8] - ldrb r5, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - ldrb r4, [r1] - adds r2, r1, 0x1 - str r2, [r0, 0x8] - ldrb r1, [r1, 0x1] - adds r2, 0x1 - str r2, [r0, 0x8] - cmp r1, 0 - bne _0806C20A - ldr r0, _0806C214 @ =sub_809D6D4 - bl sub_81119D4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0806C20A - ldr r0, _0806C218 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0xA4 - lsls r1, 2 - adds r0, r1 - bl GetMoney - adds r1, r5, 0 - adds r2, r4, 0 - bl DrawMoneyBox -_0806C20A: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806C214: .4byte sub_809D6D4 -_0806C218: .4byte gSaveBlock1Ptr - thumb_func_end ScrCmd_showmoneybox - - thumb_func_start ScrCmd_hidemoneybox -ScrCmd_hidemoneybox: @ 806C21C - push {lr} - bl HideMoneyBox - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_hidemoneybox - - thumb_func_start ScrCmd_updatemoneybox -ScrCmd_updatemoneybox: @ 806C228 - push {lr} - ldr r1, [r0, 0x8] - adds r1, 0x1 - adds r2, r1, 0x1 - str r2, [r0, 0x8] - ldrb r1, [r1, 0x1] - adds r2, 0x1 - str r2, [r0, 0x8] - cmp r1, 0 - bne _0806C24E - ldr r0, _0806C254 @ =gSaveBlock1Ptr - ldr r0, [r0] - movs r1, 0xA4 - lsls r1, 2 - adds r0, r1 - bl GetMoney - bl ChangeAmountInMoneyBox -_0806C24E: - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0806C254: .4byte gSaveBlock1Ptr - thumb_func_end ScrCmd_updatemoneybox - - thumb_func_start ScrCmd_showcoinsbox -ScrCmd_showcoinsbox: @ 806C258 - push {r4,r5,lr} - ldr r1, [r0, 0x8] - ldrb r5, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - ldrb r4, [r1] - adds r1, 0x1 - str r1, [r0, 0x8] - ldr r0, _0806C290 @ =sub_809D6D4 - bl sub_81119D4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0806C286 - bl GetCoins - lsls r0, 16 - lsrs r0, 16 - adds r1, r5, 0 - adds r2, r4, 0 - bl ShowCoinsWindow -_0806C286: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806C290: .4byte sub_809D6D4 - thumb_func_end ScrCmd_showcoinsbox - - thumb_func_start ScrCmd_hidecoinsbox -ScrCmd_hidecoinsbox: @ 806C294 - push {lr} - ldr r1, [r0, 0x8] - adds r1, 0x2 - str r1, [r0, 0x8] - bl HideCoinsWindow - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_hidecoinsbox - - thumb_func_start ScrCmd_updatecoinsbox -ScrCmd_updatecoinsbox: @ 806C2A8 - push {lr} - ldr r1, [r0, 0x8] - adds r1, 0x2 - str r1, [r0, 0x8] - bl GetCoins - lsls r0, 16 - lsrs r0, 16 - bl PrintCoinsString - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_updatecoinsbox - - thumb_func_start ScrCmd_trainerbattle -ScrCmd_trainerbattle: @ 806C2C4 - push {r4,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x8] - bl sub_8080228 - str r0, [r4, 0x8] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_trainerbattle - - thumb_func_start ScrCmd_dotrainerbattle -ScrCmd_dotrainerbattle: @ 806C2D8 - push {lr} - bl sub_8080464 - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end ScrCmd_dotrainerbattle - - thumb_func_start ScrCmd_ontrainerbattleend -ScrCmd_ontrainerbattleend: @ 806C2E4 - push {r4,lr} - adds r4, r0, 0 - bl sub_80805E8 - str r0, [r4, 0x8] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_ontrainerbattleend - - thumb_func_start ScrCmd_ontrainerbattleendgoto -ScrCmd_ontrainerbattleendgoto: @ 806C2F8 - push {r4,lr} - adds r4, r0, 0 - bl sub_8080600 - str r0, [r4, 0x8] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_ontrainerbattleendgoto - - thumb_func_start ScrCmd_checktrainerflag -ScrCmd_checktrainerflag: @ 806C30C - push {r4,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl HasTrainerAlreadyBeenFought - strb r0, [r4, 0x2] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ScrCmd_checktrainerflag - - thumb_func_start ScrCmd_settrainerflag -ScrCmd_settrainerflag: @ 806C330 - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl trainer_flag_set - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_settrainerflag - - thumb_func_start ScrCmd_cleartrainerflag -ScrCmd_cleartrainerflag: @ 806C34C - push {lr} - bl ScriptReadHalfword - lsls r0, 16 - lsrs r0, 16 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl trainer_flag_clear - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end ScrCmd_cleartrainerflag - - thumb_func_start ScrCmd_setwildbattle -ScrCmd_setwildbattle: @ 806C368 - push {r4-r6,lr} - adds r4, r0, 0 - bl ScriptReadHalfword - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - ldr r0, [r4, 0x8] - ldrb r6, [r0] - adds r0, 0x1 - str r0, [r4, 0x8] - adds r0, r4, 0 - bl ScriptReadHalfword - adds r2, r0, 0 - lsls r2, 16 - lsrs r2, 16 - adds r0, r5, 0 - adds r1, r6, 0 - bl CreateScriptedWildMon - movs r0, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end ScrCmd_setwildbattle - - thumb_func_start ScrCmd_dowildbattle -ScrCmd_dowildbattle: @ 806C39C - push {lr} - bl sub_807F8C4 - bl ScriptContext1_Stop - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end ScrCmd_dowildbattle - - thumb_func_start ScrCmd_pokemart -ScrCmd_pokemart: @ 806C3AC - push {lr} - bl ScriptReadWord - bl sub_809C164 - bl ScriptContext1_Stop - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end ScrCmd_pokemart - thumb_func_start ScrCmd_pokemartdecoration ScrCmd_pokemartdecoration: @ 806C3C0 push {lr} diff --git a/asm/script_pokemon_util_80A0058.s b/asm/script_pokemon_util_80A0058.s index 191457abe..60f416b48 100644 --- a/asm/script_pokemon_util_80A0058.s +++ b/asm/script_pokemon_util_80A0058.s @@ -170,8 +170,8 @@ _080A0196: bx r1 thumb_func_end ScriptGiveMon - thumb_func_start sub_80A01AC -sub_80A01AC: @ 80A01AC + thumb_func_start ScriptGiveEgg +ScriptGiveEgg: @ 80A01AC push {r4,r5,lr} sub sp, 0x4 adds r4, r0, 0 @@ -202,7 +202,7 @@ sub_80A01AC: @ 80A01AC pop {r4,r5} pop {r1} bx r1 - thumb_func_end sub_80A01AC + thumb_func_end ScriptGiveEgg thumb_func_start CheckForAlivePartyMons CheckForAlivePartyMons: @ 80A01F4 diff --git a/asm/shop.s b/asm/shop.s index 7d2f73d97..5e44baa4a 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -2826,8 +2826,8 @@ _0809C15A: _0809C160: .4byte gUnknown_203996C thumb_func_end sub_809C138 - thumb_func_start sub_809C164 -sub_809C164: @ 809C164 + thumb_func_start CreatePokemartMenu +CreatePokemartMenu: @ 809C164 push {r4,lr} bl sub_809ABD8 movs r0, 0 @@ -2851,7 +2851,7 @@ sub_809C164: @ 809C164 _0809C194: .4byte EnableBothScriptContexts _0809C198: .4byte gUnknown_203996C _0809C19C: .4byte gMapHeader - thumb_func_end sub_809C164 + thumb_func_end CreatePokemartMenu thumb_func_start sub_809C1A0 sub_809C1A0: @ 809C1A0 diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc index 626930fbd..98c74b501 100644 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -95,8 +95,8 @@ gScriptCmdTable:: @ 815F9B4 .4byte ScrCmd_turnobject .4byte ScrCmd_trainerbattle .4byte ScrCmd_dotrainerbattle - .4byte ScrCmd_ontrainerbattleend - .4byte ScrCmd_ontrainerbattleendgoto + .4byte ScrCmd_gotopostbattlescript + .4byte ScrCmd_gotobeatenscript .4byte ScrCmd_checktrainerflag .4byte ScrCmd_settrainerflag .4byte ScrCmd_cleartrainerflag diff --git a/include/battle_setup.h b/include/battle_setup.h index 86a84f471..61395811b 100644 --- a/include/battle_setup.h +++ b/include/battle_setup.h @@ -11,8 +11,8 @@ void BattleSetup_StartWildBattle(void); void BattleSetup_StartRoamerBattle(void); u8 HasTrainerAlreadyBeenFought(u16); -void trainer_flag_set(u16); -void trainer_flag_clear(u16); +void SetTrainerFlag(u16); +void ClearTrainerFlag(u16); void BattleSetup_StartTrainerBattle(void); u8 *BattleSetup_GetScriptAddrAfterBattle(void); u8 *BattleSetup_GetTrainerPostBattleScript(void); diff --git a/include/party_menu.h b/include/party_menu.h index 19e1f7d4e..2e83c1496 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -12,7 +12,7 @@ enum { AILMENT_BRN }; -bool8 pokemon_has_move(struct Pokemon *, u16); +bool8 MonKnowsMove(struct Pokemon *, u16); void sub_81B58A8(void); void DoWallyTutorialBagMenu(void); u8 pokemon_ailments_get_primary(u32 status); diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index 5b2d2052b..897c5a42e 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -12,5 +12,6 @@ void SetBoxMonNickFromAnyBox(u8 boxId, u8 monPosition, u8 * newNick); void CompactPartySlots(void); u32 GetBoxMonDataFromAnyBox(u8 boxId, u8 monPosition, u32 request); void sub_808BCB4(u8 boxId, u8 monPosition); +u8 * GetBoxNamePtr(u8 boxId); #endif // GUARD_POKEMON_STORAGE_SYSTEM_H diff --git a/include/quest_log.h b/include/quest_log.h index faa47a809..31220b86c 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -23,6 +23,7 @@ void sub_8112720(u8); void sub_8113550(u16, const u16 *); void sub_8115748(u16); u8 sub_8112CAC(void); +bool8 sub_81119D4(void (*func)(void)); extern u8 gUnknown_203ADFA; diff --git a/include/script_menu.h b/include/script_menu.h index 01402d565..f82b061a5 100644 --- a/include/script_menu.h +++ b/include/script_menu.h @@ -11,5 +11,6 @@ bool8 ScriptMenu_YesNo(u8 var1, u8 var2); bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount); bool8 ScriptMenu_ShowPokemonPic(u16 var1, u8 var2, u8 var3); bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void); +void sub_809D6D4(void); #endif //GUARD_SCRIPT_MENU_H diff --git a/include/script_pokemon_util_80A0058.h b/include/script_pokemon_util_80A0058.h new file mode 100644 index 000000000..e1d228589 --- /dev/null +++ b/include/script_pokemon_util_80A0058.h @@ -0,0 +1,8 @@ +#ifndef GUARD_SCRIPT_POKEMON_UTIL_80A0058_H +#define GUARD_SCRIPT_POKEMON_UTIL_80A0058_H + +bool8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unk1, u32 unk2, u8 unk3); +bool8 ScriptGiveEgg(u16 species); +void ScriptSetMonMoveSlot(u8 partyIdx, u16 move, u8 slot); + +#endif //GUARD_SCRIPT_POKEMON_UTIL_80A0058_H diff --git a/src/scrcmd.c b/src/scrcmd.c index 98a3fa027..3d7200b5b 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -28,6 +28,14 @@ #include "data2.h" #include "field_specials.h" #include "constants/items.h" +#include "script_pokemon_util_80A0058.h" +#include "pokemon_storage_system.h" +#include "party_menu.h" +#include "money.h" +#include "coins.h" +#include "battle_setup.h" +#include "shop.h" +#include "script_pokemon_80F8.h" extern u16 (*const gSpecials[])(void); extern u16 (*const gSpecialsEnd[])(void); @@ -1588,7 +1596,7 @@ u8 * const sScriptStringVars[] = gStringVar3, }; -bool8 ScrCmd_bufferspeciesname(struct ScriptContext *ctx) +SCRCMD_DEF(bufferspeciesname) { u8 stringVarIndex = ScriptReadByte(ctx); u16 species = VarGet(ScriptReadHalfword(ctx)); @@ -1597,7 +1605,7 @@ bool8 ScrCmd_bufferspeciesname(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_bufferleadmonspeciesname(struct ScriptContext *ctx) +SCRCMD_DEF(bufferleadmonspeciesname) { u8 stringVarIndex = ScriptReadByte(ctx); @@ -1608,7 +1616,7 @@ bool8 ScrCmd_bufferleadmonspeciesname(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_bufferpartymonnick(struct ScriptContext *ctx) +SCRCMD_DEF(bufferpartymonnick) { u8 stringVarIndex = ScriptReadByte(ctx); u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); @@ -1618,7 +1626,7 @@ bool8 ScrCmd_bufferpartymonnick(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_bufferitemname(struct ScriptContext *ctx) +SCRCMD_DEF(bufferitemname) { u8 stringVarIndex = ScriptReadByte(ctx); u16 itemId = VarGet(ScriptReadHalfword(ctx)); @@ -1630,7 +1638,7 @@ bool8 ScrCmd_bufferitemname(struct ScriptContext *ctx) extern const u8 gUnknown_83A72A0[]; extern const u8 gUnknown_83A72A2[]; -bool8 ScrCmd_bufferitemnameplural(struct ScriptContext *ctx) +SCRCMD_DEF(bufferitemnameplural) { u8 stringVarIndex = ScriptReadByte(ctx); u16 itemId = VarGet(ScriptReadHalfword(ctx)); @@ -1653,7 +1661,7 @@ bool8 ScrCmd_bufferitemnameplural(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_bufferdecorationname(struct ScriptContext *ctx) +SCRCMD_DEF(bufferdecorationname) { u8 stringVarIndex = ScriptReadByte(ctx); u16 decorId = VarGet(ScriptReadHalfword(ctx)); @@ -1662,7 +1670,7 @@ bool8 ScrCmd_bufferdecorationname(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_buffermovename(struct ScriptContext *ctx) +SCRCMD_DEF(buffermovename) { u8 stringVarIndex = ScriptReadByte(ctx); u16 moveId = VarGet(ScriptReadHalfword(ctx)); @@ -1671,7 +1679,7 @@ bool8 ScrCmd_buffermovename(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_buffernumberstring(struct ScriptContext *ctx) +SCRCMD_DEF(buffernumberstring) { u8 stringVarIndex = ScriptReadByte(ctx); u16 v1 = VarGet(ScriptReadHalfword(ctx)); @@ -1681,7 +1689,7 @@ bool8 ScrCmd_buffernumberstring(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_bufferstdstring(struct ScriptContext *ctx) +SCRCMD_DEF(bufferstdstring) { u8 stringVarIndex = ScriptReadByte(ctx); u16 index = VarGet(ScriptReadHalfword(ctx)); @@ -1691,7 +1699,7 @@ bool8 ScrCmd_bufferstdstring(struct ScriptContext *ctx) } /* -bool8 ScrCmd_buffercontesttype(struct ScriptContext *ctx) +SCRCMD_DEF(buffercontesttype) { u8 stringVarIndex = ScriptReadByte(ctx); u16 index = VarGet(ScriptReadHalfword(ctx)); @@ -1701,7 +1709,7 @@ bool8 ScrCmd_buffercontesttype(struct ScriptContext *ctx) } */ -bool8 ScrCmd_bufferstring(struct ScriptContext *ctx) +SCRCMD_DEF(bufferstring) { u8 stringVarIndex = ScriptReadByte(ctx); const u8 *text = (u8 *)ScriptReadWord(ctx); @@ -1709,3 +1717,246 @@ bool8 ScrCmd_bufferstring(struct ScriptContext *ctx) StringCopy(sScriptStringVars[stringVarIndex], text); return FALSE; } + +SCRCMD_DEF(vloadword) +{ + const u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gVScriptOffset); + + StringExpandPlaceholders(gStringVar4, ptr); + return FALSE; +} + +SCRCMD_DEF(vbufferstring) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u32 addr = ScriptReadWord(ctx); + + const u8 *src = (u8 *)(addr - gVScriptOffset); + u8 *dest = sScriptStringVars[stringVarIndex]; + StringCopy(dest, src); + return FALSE; +} + +SCRCMD_DEF(bufferboxname) +{ + u8 stringVarIndex = ScriptReadByte(ctx); + u16 boxId = VarGet(ScriptReadHalfword(ctx)); + + StringCopy(sScriptStringVars[stringVarIndex], GetBoxNamePtr(boxId)); + return FALSE; +} + +SCRCMD_DEF(givemon) +{ + u16 species = VarGet(ScriptReadHalfword(ctx)); + u8 level = ScriptReadByte(ctx); + u16 item = VarGet(ScriptReadHalfword(ctx)); + u32 unkParam1 = ScriptReadWord(ctx); + u32 unkParam2 = ScriptReadWord(ctx); + u8 unkParam3 = ScriptReadByte(ctx); + + gSpecialVar_Result = ScriptGiveMon(species, level, item, unkParam1, unkParam2, unkParam3); + return FALSE; +} + +SCRCMD_DEF(giveegg) +{ + u16 species = VarGet(ScriptReadHalfword(ctx)); + + gSpecialVar_Result = ScriptGiveEgg(species); + return FALSE; +} + +SCRCMD_DEF(setmonmove) +{ + u8 partyIndex = ScriptReadByte(ctx); + u8 slot = ScriptReadByte(ctx); + u16 move = ScriptReadHalfword(ctx); + + ScriptSetMonMoveSlot(partyIndex, move, slot); + return FALSE; +} + +SCRCMD_DEF(checkpartymove) +{ + u8 i; + u16 moveId = ScriptReadHalfword(ctx); + + gSpecialVar_Result = PARTY_SIZE; + for (i = 0; i < PARTY_SIZE; i++) + { + u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL); + if (!species) + break; + if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) && MonKnowsMove(&gPlayerParty[i], moveId) == TRUE) + { + gSpecialVar_Result = i; + gSpecialVar_0x8004 = species; + break; + } + } + return FALSE; +} + +SCRCMD_DEF(givemoney) +{ + u32 amount = ScriptReadWord(ctx); + u8 ignore = ScriptReadByte(ctx); + + if (!ignore) + AddMoney(&gSaveBlock1Ptr->money, amount); + return FALSE; +} + +SCRCMD_DEF(takemoney) +{ + u32 amount = ScriptReadWord(ctx); + u8 ignore = ScriptReadByte(ctx); + + if (!ignore) + RemoveMoney(&gSaveBlock1Ptr->money, amount); + return FALSE; +} + +SCRCMD_DEF(checkmoney) +{ + u32 amount = ScriptReadWord(ctx); + u8 ignore = ScriptReadByte(ctx); + + if (!ignore) + gSpecialVar_Result = IsEnoughMoney(&gSaveBlock1Ptr->money, amount); + return FALSE; +} + +SCRCMD_DEF(showmoneybox) +{ + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + u8 ignore = ScriptReadByte(ctx); + + if (!ignore && sub_81119D4(sub_809D6D4) != TRUE) + DrawMoneyBox(GetMoney(&gSaveBlock1Ptr->money), x, y); + return FALSE; +} + +SCRCMD_DEF(hidemoneybox) +{ + /*u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx);*/ + + HideMoneyBox(); + return FALSE; +} + +SCRCMD_DEF(updatemoneybox) +{ + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + u8 ignore = ScriptReadByte(ctx); + + if (!ignore) + ChangeAmountInMoneyBox(GetMoney(&gSaveBlock1Ptr->money)); + return FALSE; +} + +SCRCMD_DEF(showcoinsbox) +{ + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + + if (sub_81119D4(sub_809D6D4) != TRUE) + ShowCoinsWindow(GetCoins(), x, y); + return FALSE; +} + +SCRCMD_DEF(hidecoinsbox) +{ + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + + HideCoinsWindow(); + return FALSE; +} + +SCRCMD_DEF(updatecoinsbox) +{ + u8 x = ScriptReadByte(ctx); + u8 y = ScriptReadByte(ctx); + + PrintCoinsString(GetCoins()); + return FALSE; +} + +SCRCMD_DEF(trainerbattle) +{ + ctx->scriptPtr = BattleSetup_ConfigureTrainerBattle(ctx->scriptPtr); + return FALSE; +} + +SCRCMD_DEF(dotrainerbattle) +{ + BattleSetup_StartTrainerBattle(); + return TRUE; +} + +SCRCMD_DEF(gotopostbattlescript) +{ + ctx->scriptPtr = BattleSetup_GetScriptAddrAfterBattle(); + return FALSE; +} + +SCRCMD_DEF(gotobeatenscript) +{ + ctx->scriptPtr = BattleSetup_GetTrainerPostBattleScript(); + return FALSE; +} + +SCRCMD_DEF(checktrainerflag) +{ + u16 index = VarGet(ScriptReadHalfword(ctx)); + + ctx->comparisonResult = HasTrainerAlreadyBeenFought(index); + return FALSE; +} + +SCRCMD_DEF(settrainerflag) +{ + u16 index = VarGet(ScriptReadHalfword(ctx)); + + SetTrainerFlag(index); + return FALSE; +} + +SCRCMD_DEF(cleartrainerflag) +{ + u16 index = VarGet(ScriptReadHalfword(ctx)); + + ClearTrainerFlag(index); + return FALSE; +} + +SCRCMD_DEF(setwildbattle) +{ + u16 species = ScriptReadHalfword(ctx); + u8 level = ScriptReadByte(ctx); + u16 item = ScriptReadHalfword(ctx); + + CreateScriptedWildMon(species, level, item); + return FALSE; +} + +SCRCMD_DEF(dowildbattle) +{ + BattleSetup_StartScriptedWildBattle(); + ScriptContext1_Stop(); + return TRUE; +} + +SCRCMD_DEF(pokemart) +{ + const void *ptr = (void *)ScriptReadWord(ctx); + + CreatePokemartMenu(ptr); + ScriptContext1_Stop(); + return TRUE; +} |