summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/battle_setup.s44
-rw-r--r--asm/field_player_avatar.s2
-rw-r--r--asm/party_menu.s8
-rw-r--r--asm/scrcmd.s605
-rw-r--r--asm/script_pokemon_util_80A0058.s6
-rw-r--r--asm/shop.s6
-rw-r--r--data/script_cmd_table.inc4
-rw-r--r--include/battle_setup.h4
-rw-r--r--include/party_menu.h2
-rw-r--r--include/pokemon_storage_system.h1
-rw-r--r--include/quest_log.h1
-rw-r--r--include/script_menu.h1
-rw-r--r--include/script_pokemon_util_80A0058.h8
-rw-r--r--src/scrcmd.c273
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;
+}