diff options
author | tgsm <doodrabbit@hotmail.com> | 2021-07-25 22:35:52 -0500 |
---|---|---|
committer | tgsm <doodrabbit@hotmail.com> | 2021-07-25 22:39:23 -0500 |
commit | a02d40d1410ad0b63f943600028348daccdebbe4 (patch) | |
tree | 3560775ee9dd9592fff34c1ceb22f5d19f16a507 | |
parent | 0c2db8de60375ab8c450ea64320feb22431f43aa (diff) |
Decompile scrcmd_17 -> scrcmd_amity_square
Command names courtesy of DSPRE.
-rw-r--r-- | arm9/arm9.lsf | 2 | ||||
-rw-r--r-- | arm9/asm/scrcmd_17.s | 215 | ||||
-rw-r--r-- | arm9/asm/unk_02038C78.s | 6 | ||||
-rw-r--r-- | arm9/global.inc | 6 | ||||
-rw-r--r-- | arm9/src/scrcmd_amity_square.c | 117 | ||||
-rw-r--r-- | include/scrcmd.h | 7 |
6 files changed, 130 insertions, 223 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 25689701..48254159 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -171,7 +171,7 @@ Static arm9 Object scrcmd_coins.o Object scrcmd_money.o Object scrcmd_daycare.o - Object scrcmd_17.o + Object scrcmd_amity_square.o Object scrcmd_party.o Object scrcmd_fossils.o Object scrcmd_prizes.o diff --git a/arm9/asm/scrcmd_17.s b/arm9/asm/scrcmd_17.s deleted file mode 100644 index 794a16de..00000000 --- a/arm9/asm/scrcmd_17.s +++ /dev/null @@ -1,215 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .rodata - - .global UNK_020F4494 -UNK_020F4494: ; 0x020F4494 - .byte 0x00, 0x00, 0x05, 0x00, 0x15, 0x00, 0x0B, 0x00, 0x1A, 0x00, 0x0D, 0x00, 0x19, 0x00, 0x1F, 0x00 - .byte 0x10, 0x00, 0x21, 0x00, 0x02, 0x00, 0x13, 0x00, 0x14, 0x00, 0x18, 0x00, 0x11, 0x00, 0x00, 0x00 - .byte 0x17, 0x00, 0x1D, 0x00, 0x1C, 0x00, 0x0F, 0x00, 0x08, 0x00, 0x09, 0x00, 0x03, 0x00, 0x0B, 0x00 - .byte 0x16, 0x00, 0x1E, 0x00, 0x11, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x20, 0x00, 0x0C, 0x00, 0x12, 0x00 - .byte 0x15, 0x00, 0x0D, 0x00, 0x1F, 0x00, 0x09, 0x00, 0x19, 0x00, 0x18, 0x00, 0x1B, 0x00, 0x06, 0x00 - .byte 0x05, 0x00, 0x03, 0x00, 0x1A, 0x00, 0x13, 0x00, 0x14, 0x00, 0x01, 0x00, 0x07, 0x00, 0x10, 0x00 - .byte 0x16, 0x00, 0x0F, 0x00, 0x0C, 0x00, 0x1E, 0x00, 0x02, 0x00, 0x14, 0x00, 0x1D, 0x00, 0x04, 0x00 - .byte 0x08, 0x00, 0x1B, 0x00, 0x0E, 0x00, 0x0A, 0x00 - - .text - - thumb_func_start ScrCmd_Unk0215 -ScrCmd_Unk0215: ; 0x02044158 - push {r3, lr} - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - bl FUN_0205F54C - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start ScrCmd_Unk0216 -ScrCmd_Unk0216: ; 0x0204416C - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, #0x80 - add r4, r0, #0x0 - ldr r0, [r5, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - bl FUN_0205F55C - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start ScrCmd_Unk0217 -ScrCmd_Unk0217: ; 0x02044198 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r5, r0, #0x0 - bl LCRandom - mov r1, #0x64 - bl _s32_div_f - lsl r0, r1, #0x10 - lsr r0, r0, #0x10 - cmp r0, #0xf - bhs _020441D6 - mov r0, #0x0 - b _02044218 -_020441D6: - cmp r0, #0x1e - bhs _020441DE - mov r0, #0x1 - b _02044218 -_020441DE: - cmp r0, #0x2d - bhs _020441E6 - mov r0, #0x2 - b _02044218 -_020441E6: - cmp r0, #0x3c - bhs _020441EE - mov r0, #0x3 - b _02044218 -_020441EE: - cmp r0, #0x46 - bhs _020441F6 - mov r0, #0x4 - b _02044218 -_020441F6: - cmp r0, #0x50 - bhs _020441FE - mov r0, #0x5 - b _02044218 -_020441FE: - cmp r0, #0x58 - bhs _02044206 - mov r0, #0x6 - b _02044218 -_02044206: - cmp r0, #0x5d - bhs _0204420E - mov r0, #0x7 - b _02044218 -_0204420E: - cmp r0, #0x62 - bhs _02044216 - mov r0, #0x8 - b _02044218 -_02044216: - mov r0, #0x9 -_02044218: - ldr r2, _020442B4 ; =0x0000011D - cmp r5, r2 - bgt _02044244 - bge _02044290 - cmp r5, #0x27 - bgt _02044236 - cmp r5, #0x23 - blt _02044230 - beq _02044284 - cmp r5, #0x27 - beq _02044290 - b _0204429C -_02044230: - cmp r5, #0x19 - beq _02044294 - b _0204429C -_02044236: - cmp r5, #0x36 - bgt _0204423E - beq _0204428C - b _0204429C -_0204423E: - cmp r5, #0xff - beq _02044288 - b _0204429C -_02044244: - add r1, r2, #0x0 - add r1, #0x8c - cmp r5, r1 - bgt _0204426C - add r1, r2, #0x0 - add r1, #0x8c - cmp r5, r1 - bge _02044288 - add r1, r2, #0x0 - add r1, #0xf - cmp r5, r1 - bgt _02044264 - add r2, #0xf - cmp r5, r2 - beq _02044284 - b _0204429C -_02044264: - add r2, #0x84 - cmp r5, r2 - beq _0204428C - b _0204429C -_0204426C: - add r1, r2, #0x0 - add r1, #0x8e - cmp r5, r1 - bgt _0204427C - add r2, #0x8e - cmp r5, r2 - beq _02044298 - b _0204429C -_0204427C: - add r2, #0x9b - cmp r5, r2 - beq _02044298 - b _0204429C -_02044284: - mov r2, #0x0 - b _0204429E -_02044288: - mov r2, #0x1 - b _0204429E -_0204428C: - mov r2, #0x2 - b _0204429E -_02044290: - mov r2, #0x3 - b _0204429E -_02044294: - mov r2, #0x4 - b _0204429E -_02044298: - mov r2, #0x5 - b _0204429E -_0204429C: - mov r2, #0x0 -_0204429E: - add r3, r2, #0x0 - mov r1, #0x14 - mul r3, r1 - ldr r2, _020442B8 ; =UNK_020F4494 - lsl r1, r0, #0x1 - add r0, r2, r3 - ldrh r0, [r1, r0] - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - nop -_020442B4: .word 0x0000011D -_020442B8: .word UNK_020F4494 diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index aea1dbf8..d33d8df2 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -682,9 +682,9 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_GetPartyMonNature .word ScrCmd_FindPartyMonWithNature .word ScrCmd_Unk0214 - .word ScrCmd_Unk0215 - .word ScrCmd_Unk0216 - .word ScrCmd_Unk0217 + .word ScrCmd_ClearAmitySquareSteps + .word ScrCmd_CheckAmitySquareSteps + .word ScrCmd_GetAmitySquareAccessory .word ScrCmd_Unk0218 .word ScrCmd_Unk0219 .word ScrCmd_Unk021A diff --git a/arm9/global.inc b/arm9/global.inc index db33a314..48e8a7c7 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3315,9 +3315,9 @@ .extern ScrCmd_Unk01A6 .extern ScrCmd_Unk01A7 .extern ScrCmd_Unk01AD -.extern ScrCmd_Unk0215 -.extern ScrCmd_Unk0216 -.extern ScrCmd_Unk0217 +.extern ScrCmd_ClearAmitySquareSteps +.extern ScrCmd_CheckAmitySquareSteps +.extern ScrCmd_GetAmitySquareAccessory .extern ScrCmd_GiveMon .extern ScrCmd_GetPartyMonSpecies .extern ScrCmd_CheckPartyMonOTID diff --git a/arm9/src/scrcmd_amity_square.c b/arm9/src/scrcmd_amity_square.c new file mode 100644 index 00000000..aa38449f --- /dev/null +++ b/arm9/src/scrcmd_amity_square.c @@ -0,0 +1,117 @@ +#include "scrcmd.h" +#include "constants/pokemon.h" +#include "event_data.h" + +extern void FUN_0205F54C(struct ScriptState* state); +extern u16 FUN_0205F55C(struct ScriptState* state); + +static const u16 sAmitySquarePossibleAccessoriesByPokemon[6][10] = { + // TODO: accessory constants + { 0, 5, 21, 11, 26, 13, 25, 31, 16, 33 }, // Clefairy and Skitty + { 2, 19, 20, 24, 17, 0, 23, 29, 28, 15 }, // Torchic and Drifloon + { 8, 9, 3, 11, 22, 30, 17, 6, 14, 32 }, // Psyduck and Pachirisu + { 12, 18, 21, 13, 31, 9, 25, 24, 27, 6 }, // Jigglypuff and Shroomish + { 5, 3, 26, 19, 20, 1, 7, 16, 22, 15 }, // Pikachu + { 12, 30, 2, 20, 29, 4, 8, 27, 14, 10 }, // Buneary and Happiny +}; + +THUMB_FUNC BOOL ScrCmd_ClearAmitySquareSteps(struct ScriptContext* ctx) +{ + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + + FUN_0205F54C(state); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_CheckAmitySquareSteps(struct ScriptContext* ctx) +{ + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + + *ret_ptr = FUN_0205F55C(state); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetAmitySquareAccessory(struct ScriptContext* ctx) +{ + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 species = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 rand = (u16)(LCRandom() % 100); + + u32 j; + if (rand < 15) + { + j = 0; + } + else if (rand < 30) + { + j = 1; + } + else if (rand < 45) + { + j = 2; + } + else if (rand < 60) + { + j = 3; + } + else if (rand < 70) + { + j = 4; + } + else if (rand < 80) + { + j = 5; + } + else if (rand < 88) + { + j = 6; + } + else if (rand < 93) + { + j = 7; + } + else if (rand < 98) + { + j = 8; + } + else + { + j = 9; + } + + u32 i; + switch (species) + { + case SPECIES_CLEFAIRY: + case SPECIES_SKITTY: + i = 0; + break; + case SPECIES_TORCHIC: + case SPECIES_DRIFLOON: + i = 1; + break; + case SPECIES_PSYDUCK: + case SPECIES_PACHIRISU: + i = 2; + break; + case SPECIES_JIGGLYPUFF: + case SPECIES_SHROOMISH: + i = 3; + break; + case SPECIES_PIKACHU: + i = 4; + break; + case SPECIES_BUNEARY: + case SPECIES_HAPPINY: + i = 5; + break; + default: + i = 0; + break; + } + + *ret_ptr = sAmitySquarePossibleAccessoriesByPokemon[i][j]; + return FALSE; +} diff --git a/include/scrcmd.h b/include/scrcmd.h index 5e28a4d0..8c89e230 100644 --- a/include/scrcmd.h +++ b/include/scrcmd.h @@ -249,7 +249,12 @@ BOOL ScrCmd_Unk01A6(struct ScriptContext* ctx); BOOL ScrCmd_Unk01A7(struct ScriptContext* ctx); BOOL ScrCmd_Unk01AD(struct ScriptContext* ctx); -//scrcmd_18.c +//scrcmd_amity_square.c +BOOL ScrCmd_ClearAmitySquareSteps(struct ScriptContext* ctx); +BOOL ScrCmd_CheckAmitySquareSteps(struct ScriptContext* ctx); +BOOL ScrCmd_GetAmitySquareAccessory(struct ScriptContext* ctx); + +//scrcmd_party.c BOOL ScrCmd_GiveMon(struct ScriptContext* ctx); BOOL ScrCmd_GetPartyMonSpecies(struct ScriptContext* ctx); BOOL ScrCmd_CheckPartyMonOTID(struct ScriptContext* ctx); |