diff options
author | tgsm <doodrabbit@hotmail.com> | 2021-03-22 05:00:02 -0400 |
---|---|---|
committer | tgsm <doodrabbit@hotmail.com> | 2021-03-22 05:00:02 -0400 |
commit | e66ec843470977a813aa2309b1914deae218bb0e (patch) | |
tree | a01ec95e97e2527908a628493e708832943fbc8c | |
parent | 9e4080cdfb082a9738a8c159ad9cf1c317a60873 (diff) |
decompile scrcmd_19
-rw-r--r-- | arm9/asm/scrcmd_19.s | 175 | ||||
-rw-r--r-- | arm9/asm/unk_02038C78.s | 10 | ||||
-rw-r--r-- | arm9/global.inc | 10 | ||||
-rw-r--r-- | arm9/src/scrcmd_19.c | 89 | ||||
-rw-r--r-- | include/scrcmd.h | 7 |
5 files changed, 106 insertions, 185 deletions
diff --git a/arm9/asm/scrcmd_19.s b/arm9/asm/scrcmd_19.s deleted file mode 100644 index 863006b1..00000000 --- a/arm9/asm/scrcmd_19.s +++ /dev/null @@ -1,175 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .rodata - - .global UNK_020F450C -UNK_020F450C: ; 0x020F450C - .byte 0x67, 0x00 - - .global UNK_020F450E -UNK_020F450E: ; 0x020F450E - .byte 0x8E, 0x00, 0x65, 0x00, 0x8A, 0x00, 0x66, 0x00, 0x8C, 0x00, 0x63, 0x00, 0x59, 0x01, 0x64, 0x00 - .byte 0x5B, 0x01, 0x68, 0x00, 0x9A, 0x01, 0x69, 0x00, 0x98, 0x01 - - .text - - thumb_func_start FUN_02045268 -FUN_02045268: ; 0x02045268 - push {r3-r7, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r6, [r1, #0x0] - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - mov r4, #0x0 - ldr r7, _020452B0 ; =UNK_020F450C - str r0, [sp, #0x0] - add r5, r4, #0x0 -_02045288: - ldr r0, [r6, #0xc] - bl Sav2_Bag_get - lsl r1, r4, #0x2 - ldrh r1, [r7, r1] - mov r2, #0x4 - bl Bag_GetQuantity - add r0, r5, r0 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - add r0, r4, #0x1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #0x7 - blo _02045288 - ldr r0, [sp, #0x0] - strh r5, [r0, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - .balign 4 -_020452B0: .word UNK_020F450C - - thumb_func_start FUN_020452B4 -FUN_020452B4: ; 0x020452B4 - 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 - mov r5, #0x0 - ldr r2, _02045300 ; =UNK_020F450C - strh r5, [r4, #0x0] -_020452E0: - lsl r3, r5, #0x2 - ldrh r1, [r2, r3] - cmp r0, r1 - bne _020452F0 - ldr r0, _02045304 ; =UNK_020F450E - ldrh r0, [r0, r3] - strh r0, [r4, #0x0] - b _020452FA -_020452F0: - add r1, r5, #0x1 - lsl r1, r1, #0x10 - lsr r5, r1, #0x10 - cmp r5, #0x7 - blo _020452E0 -_020452FA: - mov r0, #0x0 - pop {r3-r5, pc} - nop -_02045300: .word UNK_020F450C -_02045304: .word UNK_020F450E - - thumb_func_start FUN_02045308 -FUN_02045308: ; 0x02045308 - push {r4-r7, lr} - sub sp, #0xc - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r7, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - str r0, [sp, #0x8] - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - str r0, [sp, #0x4] - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl VarGet - str r0, [sp, #0x0] - mov r4, #0x0 - ldr r0, [sp, #0x8] - add r6, r4, #0x0 - strh r4, [r0, #0x0] - ldr r0, [sp, #0x4] - strh r4, [r0, #0x0] -_02045358: - ldr r0, [r7, #0xc] - lsl r5, r4, #0x2 - bl Sav2_Bag_get - ldr r1, _02045394 ; =UNK_020F450C - mov r2, #0x4 - ldrh r1, [r1, r5] - bl Bag_GetQuantity - add r0, r6, r0 - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - ldr r0, [sp, #0x0] - cmp r6, r0 - blo _02045384 - ldr r0, _02045394 ; =UNK_020F450C - ldrh r1, [r0, r5] - ldr r0, [sp, #0x8] - strh r1, [r0, #0x0] - ldr r0, [sp, #0x4] - strh r4, [r0, #0x0] - b _0204538E -_02045384: - add r0, r4, #0x1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #0x7 - blo _02045358 -_0204538E: - mov r0, #0x0 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 -_02045394: .word UNK_020F450C - - thumb_func_start FUN_02045398 -FUN_02045398: ; 0x02045398 - mov r0, #0x0 - bx lr - - thumb_func_start FUN_0204539C -FUN_0204539C: ; 0x0204539C - mov r0, #0x0 - bx lr diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index 95ca2106..9ef2c97d 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -646,11 +646,11 @@ gScriptCmdTable: ; 0x020F355C .word FUN_02044ED8 .word FUN_0203E4D8 .word FUN_02044F20 - .word FUN_02045268 - .word FUN_02045398 - .word FUN_0204539C - .word FUN_020452B4 - .word FUN_02045308 + .word ScrCmd_Unk01F1 + .word ScrCmd_Unk01F2 + .word ScrCmd_Unk01F3 + .word ScrCmd_Unk01F4 + .word ScrCmd_Unk01F5 .word ScrCmd_countpartymonsatorbelowlevel .word ScrCmd_survivepsn .word FUN_0203BC2C diff --git a/arm9/global.inc b/arm9/global.inc index c8834374..250c218c 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3356,11 +3356,11 @@ .extern FUN_02045170 .extern FUN_020451D0 .extern FUN_02045264 -.extern FUN_02045268 -.extern FUN_020452B4 -.extern FUN_02045308 -.extern FUN_02045398 -.extern FUN_0204539C +.extern ScrCmd_Unk01F1 +.extern ScrCmd_Unk01F4 +.extern ScrCmd_Unk01F5 +.extern ScrCmd_Unk01F2 +.extern ScrCmd_Unk01F3 .extern FUN_020453A0 .extern FUN_020453F4 .extern FUN_02045424 diff --git a/arm9/src/scrcmd_19.c b/arm9/src/scrcmd_19.c new file mode 100644 index 00000000..f0fb9b42 --- /dev/null +++ b/arm9/src/scrcmd_19.c @@ -0,0 +1,89 @@ +#include "scrcmd.h" +#include "bag.h" + +extern u16 VarGet(struct UnkSavStruct80* arg, u16); +extern u16* GetVarPointer(struct UnkSavStruct80* arg, u16); + +const u16 UNK_020F450C[7][2] = { + { 0x0067, 0x008E }, + { 0x0065, 0x008A }, + { 0x0066, 0x008C }, + { 0x0063, 0x0159 }, + { 0x0064, 0x015B }, + { 0x0068, 0x019A }, + { 0x0069, 0x0198 }, +}; + +THUMB_FUNC BOOL ScrCmd_Unk01F1(struct ScriptContext * ctx) +{ + struct UnkSavStruct80 * sav_ptr = ctx->unk80; + + u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + u8 i; + u16 total; + for (i = 0, total = 0; i < 7; i++) + { + total += Bag_GetQuantity(Sav2_Bag_get(sav_ptr->saveBlock2), UNK_020F450C[i][0], 4); + } + + *ret_ptr = total; + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01F4(struct ScriptContext * ctx) +{ + u16 * ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + *ret_ptr = 0; + + for (u16 i = 0; i < 7; i++) + { + if (UNK_020F450C[i][0] == unk) + { + *ret_ptr = UNK_020F450C[i][1]; + break; + } + } + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01F5(struct ScriptContext * ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + u16 * ret_ptr1 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 * ret_ptr2 = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 needed_amount = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + *ret_ptr1 = 0; + *ret_ptr2 = 0; + + u8 i = 0; + u16 total = 0; + for (; i < 7; i++) + { + total += Bag_GetQuantity(Sav2_Bag_get(sav_ptr->saveBlock2), UNK_020F450C[i][0], 4); + if (total >= needed_amount) + { + *ret_ptr1 = UNK_020F450C[i][0]; + *ret_ptr2 = i; + break; + } + } + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01F2(struct ScriptContext * ctx) +{ +#pragma unused(ctx) + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01F3(struct ScriptContext * ctx) +{ +#pragma unused(ctx) + return FALSE; +} diff --git a/include/scrcmd.h b/include/scrcmd.h index 1e09095a..2e412760 100644 --- a/include/scrcmd.h +++ b/include/scrcmd.h @@ -88,4 +88,11 @@ BOOL ScrCmd_Unk003B(struct ScriptContext *ctx); //scrcmd_18.c BOOL ScrCmd_GiveMon(struct ScriptContext* ctx); +//scrcmd_19.c +BOOL ScrCmd_Unk01F1(struct ScriptContext* ctx); +BOOL ScrCmd_Unk01F4(struct ScriptContext* ctx); +BOOL ScrCmd_Unk01F5(struct ScriptContext* ctx); +BOOL ScrCmd_Unk01F2(struct ScriptContext* ctx); +BOOL ScrCmd_Unk01F3(struct ScriptContext* ctx); + #endif //POKEDIAMOND_SCRCMD_H |