diff --git a/asm/include/main_02042BE0.inc b/asm/include/main_02042BE0.inc index a2dc28d3..be15d93b 100644 --- a/asm/include/main_02042BE0.inc +++ b/asm/include/main_02042BE0.inc @@ -1,47 +1,30 @@ #pragma once .public BAG_ITEMS_PTR_MIRROR -.public CloseCollectionMenu -.public CloseTextBox -.public ConvertStorageItemAtIdxToItem -.public CountNbOfItemsInStorage -.public CountNbOfValidItemsInStorage -.public CountNbOfValidItemsInTimeDarknessInStorage +.public CountSelectedStorageItems .public CreateCollectionMenu .public CreateTextBox .public GetCurrentBagCapacity .public GetNbItemsInBag -.public GetWindowIdSelectedMenuItemIdx -.public IsCollectionMenuActive -.public IsCollectionMenuState3 -.public IsStorageFull .public IsTextboxState3 -.public MaybeGetColoredFormattedItemName .public MemAlloc -.public MemFree .public PlaySeVolumeWrapper .public SetCollectionMenuVoidFn .public SortItemsInBag .public UNK_STORAGE_STRUCT_0X14 .public UNK_STORAGE_STRUCT_0XC -.public _0209CA3C .public _0209CA48 .public _0209CA58 -.public sub_02010044 -.public sub_0202C620 .public sub_0202C654 -.public sub_0202C75C .public sub_0202D068 -.public sub_0202D134 .public sub_0202D16C +.public sub_02043148 +.public sub_020432B4 +.public sub_02043468 .public sub_0204357C .public sub_02043BFC .public sub_020440F8 .public sub_020441BC .public sub_02044210 .public sub_0204426C -.public sub_020442CC .public sub_02044308 .public sub_0204440C -.public sub_02044474 -.public sub_020444B0 -.public sub_020445C8 diff --git a/asm/include/main_0204317C.inc b/asm/include/main_0204317C.inc new file mode 100644 index 00000000..30956175 --- /dev/null +++ b/asm/include/main_0204317C.inc @@ -0,0 +1,8 @@ +#pragma once +.public CloseCollectionMenu +.public CloseTextBox +.public MemFree +.public UNK_STORAGE_STRUCT_0X14 +.public sub_020442CC +.public sub_02044474 +.public sub_020445C8 diff --git a/asm/include/main_020432B4.inc b/asm/include/main_020432B4.inc new file mode 100644 index 00000000..e5087df7 --- /dev/null +++ b/asm/include/main_020432B4.inc @@ -0,0 +1,8 @@ +#pragma once +.public ConvertStorageItemAtIdxToItem +.public CountNbOfItemsInStorage +.public CountNbOfValidItemsInStorage +.public CountNbOfValidItemsInTimeDarknessInStorage +.public MaybeGetColoredFormattedItemName +.public UNK_STORAGE_STRUCT_0X14 +.public _0209CA3C diff --git a/asm/main_02042BE0.s b/asm/main_02042BE0.s index 0cd6aae9..4b74c3dc 100644 --- a/asm/main_02042BE0.s +++ b/asm/main_02042BE0.s @@ -393,377 +393,3 @@ sub_020430F4: ; 0x020430F4 .align 2, 0 _02043144: .word UNK_STORAGE_STRUCT_0X14 arm_func_end sub_020430F4 - - arm_func_start sub_02043148 -sub_02043148: ; 0x02043148 - stmdb sp!, {r3, lr} - ldr r1, _02043168 ; =UNK_STORAGE_STRUCT_0X14 - ldr r1, [r1, #4] - add r0, r1, r0, lsl #1 - ldrsh r0, [r0, #4] - bl sub_02010044 - bl sub_020444B0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02043168: .word UNK_STORAGE_STRUCT_0X14 - arm_func_end sub_02043148 - - arm_func_start sub_0204316C -sub_0204316C: ; 0x0204316C - cmp r0, #0 - movne r0, #5 - moveq r0, #7 - bx lr - arm_func_end sub_0204316C - - arm_func_start FreeUnkStorageStruct0x18c0 -FreeUnkStorageStruct0x18c0: ; 0x0204317C - stmdb sp!, {r3, lr} - ldr r0, _02043214 ; =UNK_STORAGE_STRUCT_0X14 - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl sub_02044474 - bl sub_020442CC - bl sub_020445C8 - ldr r0, _02043214 ; =UNK_STORAGE_STRUCT_0X14 - ldr r1, [r0, #4] - ldr r0, [r1] - cmp r0, #6 - bne _020431BC - add r0, r1, #0x700 - ldrsb r0, [r0, #0xd5] - bl CloseTextBox -_020431BC: - ldr r0, _02043214 ; =UNK_STORAGE_STRUCT_0X14 - mvn r1, #1 - ldr r0, [r0, #4] - add r0, r0, #0x700 - ldrsb r0, [r0, #0xd6] - cmp r0, r1 - beq _020431DC - bl CloseTextBox -_020431DC: - ldr r1, _02043214 ; =UNK_STORAGE_STRUCT_0X14 - ldr r0, [r1, #4] - ldr r2, [r0] - add r0, r0, #0x700 - str r2, [r1, #0xc] - ldrsb r0, [r0, #0xd4] - bl CloseCollectionMenu - ldr r0, _02043214 ; =UNK_STORAGE_STRUCT_0X14 - ldr r0, [r0, #4] - bl MemFree - ldr r0, _02043214 ; =UNK_STORAGE_STRUCT_0X14 - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_02043214: .word UNK_STORAGE_STRUCT_0X14 - arm_func_end FreeUnkStorageStruct0x18c0 - - arm_func_start sub_02043218 -sub_02043218: ; 0x02043218 - ldr r0, _02043228 ; =UNK_STORAGE_STRUCT_0X14 - mov r1, #0 - strh r1, [r0, #2] - bx lr - .align 2, 0 -_02043228: .word UNK_STORAGE_STRUCT_0X14 - arm_func_end sub_02043218 - - arm_func_start sub_0204322C -sub_0204322C: ; 0x0204322C - ldr r1, _02043238 ; =UNK_STORAGE_STRUCT_0X14 - strh r0, [r1, #2] - bx lr - .align 2, 0 -_02043238: .word UNK_STORAGE_STRUCT_0X14 - arm_func_end sub_0204322C - - arm_func_start sub_0204323C -sub_0204323C: ; 0x0204323C - stmdb sp!, {r3, lr} - bl sub_02043254 - ldr r1, _02043250 ; =UNK_STORAGE_STRUCT_0X14 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - .align 2, 0 -_02043250: .word UNK_STORAGE_STRUCT_0X14 - arm_func_end sub_0204323C - - arm_func_start sub_02043254 -sub_02043254: ; 0x02043254 - ldr r1, _02043298 ; =UNK_STORAGE_STRUCT_0X14 - mov r3, #0 - ldr ip, [r1, #4] - mvn r1, #0 - b _02043278 -_02043268: - cmp r0, r2 - moveq r0, r3 - bxeq lr - add r3, r3, #1 -_02043278: - cmp r3, #0x3e8 - bge _02043290 - add r2, ip, r3, lsl #1 - ldrsh r2, [r2, #4] - cmp r2, r1 - bne _02043268 -_02043290: - mov r0, #0 - bx lr - .align 2, 0 -_02043298: .word UNK_STORAGE_STRUCT_0X14 - arm_func_end sub_02043254 - - arm_func_start sub_0204329C -sub_0204329C: ; 0x0204329C - ldr r1, _020432B0 ; =UNK_STORAGE_STRUCT_0X14 - ldr r1, [r1, #4] - add r0, r1, r0, lsl #1 - ldrsh r0, [r0, #4] - bx lr - .align 2, 0 -_020432B0: .word UNK_STORAGE_STRUCT_0X14 - arm_func_end sub_0204329C - - arm_func_start sub_020432B4 -sub_020432B4: ; 0x020432B4 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - ldr r3, _02043318 ; =UNK_STORAGE_STRUCT_0X14 - mov r5, r0 - ldr r0, [r3, #4] - mov r4, r2 - add r0, r0, r1, lsl #1 - ldrsh r6, [r0, #4] - add r1, sp, #0 - mov r0, r6 - bl ConvertStorageItemAtIdxToItem - ldr r2, _0204331C ; =_0209CA3C - add r1, sp, #0 - mov r0, r5 - bl MaybeGetColoredFormattedItemName - ldr r0, _02043318 ; =UNK_STORAGE_STRUCT_0X14 - ldr r0, [r0, #8] - ldrb r0, [r0, r6] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - str r0, [r4] - mov r0, r5 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02043318: .word UNK_STORAGE_STRUCT_0X14 -_0204331C: .word _0209CA3C - arm_func_end sub_020432B4 - - arm_func_start sub_02043320 -sub_02043320: ; 0x02043320 - stmdb sp!, {r3, lr} - cmp r0, #7 - bne _02043344 - bl CountNbOfValidItemsInTimeDarknessInStorage - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} -_02043344: - sub r0, r0, #5 - cmp r0, #1 - bhi _02043368 - bl CountNbOfValidItemsInStorage - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} -_02043368: - bl CountNbOfItemsInStorage - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end sub_02043320 - - arm_func_start sub_02043380 -sub_02043380: ; 0x02043380 - stmdb sp!, {r3, lr} - cmp r0, #8 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - bl IsStorageFull - ldmia sp!, {r3, pc} - arm_func_end sub_02043380 - - arm_func_start sub_02043398 -sub_02043398: ; 0x02043398 - stmdb sp!, {r3, lr} - ldr r0, _020433BC ; =UNK_STORAGE_STRUCT_0X14 - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - add r0, r0, #0x700 - ldrsb r0, [r0, #0xd4] - bl sub_0202D134 - ldmia sp!, {r3, pc} - .align 2, 0 -_020433BC: .word UNK_STORAGE_STRUCT_0X14 - arm_func_end sub_02043398 - - arm_func_start sub_020433C0 -sub_020433C0: ; 0x020433C0 - ldr r0, _020433D8 ; =UNK_STORAGE_STRUCT_0X14 - ldr ip, _020433DC ; =sub_0202C620 - ldr r0, [r0, #4] - add r0, r0, #0x700 - ldrsb r0, [r0, #0xd4] - bx ip - .align 2, 0 -_020433D8: .word UNK_STORAGE_STRUCT_0X14 -_020433DC: .word sub_0202C620 - arm_func_end sub_020433C0 - - arm_func_start sub_020433E0 -sub_020433E0: ; 0x020433E0 - ldr r0, _020433FC ; =UNK_STORAGE_STRUCT_0X14 - ldr r0, [r0, #4] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_020433FC: .word UNK_STORAGE_STRUCT_0X14 - arm_func_end sub_020433E0 - - arm_func_start sub_02043400 -sub_02043400: ; 0x02043400 - stmdb sp!, {r3, lr} - ldr r0, _02043430 ; =UNK_STORAGE_STRUCT_0X14 - ldr r0, [r0, #4] - cmp r0, #0 - addne r0, r0, #0x700 - ldrnesb r0, [r0, #0xd4] - mvnne r1, #1 - cmpne r0, r1 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - bl IsCollectionMenuActive - ldmia sp!, {r3, pc} - .align 2, 0 -_02043430: .word UNK_STORAGE_STRUCT_0X14 - arm_func_end sub_02043400 - - arm_func_start sub_02043434 -sub_02043434: ; 0x02043434 - stmdb sp!, {r3, lr} - ldr r0, _02043464 ; =UNK_STORAGE_STRUCT_0X14 - ldr r0, [r0, #4] - cmp r0, #0 - addne r0, r0, #0x700 - ldrnesb r0, [r0, #0xd4] - mvnne r1, #1 - cmpne r0, r1 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - bl IsCollectionMenuState3 - ldmia sp!, {r3, pc} - .align 2, 0 -_02043464: .word UNK_STORAGE_STRUCT_0X14 - arm_func_end sub_02043434 - - arm_func_start sub_02043468 -sub_02043468: ; 0x02043468 - stmdb sp!, {r3, lr} - ldr r0, _020434D0 ; =UNK_STORAGE_STRUCT_0X14 - ldr r0, [r0, #4] - add r0, r0, #0x700 - ldrsb r0, [r0, #0xd4] - bl IsCollectionMenuActive - cmp r0, #0 - beq _020434A0 - ldr r0, _020434D0 ; =UNK_STORAGE_STRUCT_0X14 - ldr r0, [r0, #4] - add r0, r0, #0x700 - ldrsb r0, [r0, #0xd4] - bl GetWindowIdSelectedMenuItemIdx - b _020434B4 -_020434A0: - ldr r0, _020434D0 ; =UNK_STORAGE_STRUCT_0X14 - ldr r0, [r0, #4] - add r0, r0, #0x700 - ldrsb r0, [r0, #0xd4] - bl sub_0202C75C -_020434B4: - cmp r0, #0 - ldrge r1, _020434D0 ; =UNK_STORAGE_STRUCT_0X14 - mvnlt r0, #0 - ldrge r1, [r1, #4] - addge r0, r1, r0, lsl #1 - ldrgesh r0, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_020434D0: .word UNK_STORAGE_STRUCT_0X14 - arm_func_end sub_02043468 - - arm_func_start ClearStorageSelectedItemTable -ClearStorageSelectedItemTable: ; 0x020434D4 - mov r3, #0 - ldr r0, _020434F8 ; =UNK_STORAGE_STRUCT_0X14 - mov r2, r3 -_020434E0: - ldr r1, [r0, #8] - strb r2, [r1, r3] - add r3, r3, #1 - cmp r3, #0x3e8 - blt _020434E0 - bx lr - .align 2, 0 -_020434F8: .word UNK_STORAGE_STRUCT_0X14 - arm_func_end ClearStorageSelectedItemTable - - arm_func_start CountSelectedStorageItems -CountSelectedStorageItems: ; 0x020434FC - ldr r1, _02043528 ; =UNK_STORAGE_STRUCT_0X14 - mov r0, #0 - ldr r3, [r1, #8] - mov r2, r0 -_0204350C: - ldrb r1, [r3, r2] - add r2, r2, #1 - tst r1, #1 - addne r0, r0, #1 - cmp r2, #0x3e8 - blt _0204350C - bx lr - .align 2, 0 -_02043528: .word UNK_STORAGE_STRUCT_0X14 - arm_func_end CountSelectedStorageItems - - arm_func_start GetFirstSelectedStorageItemIndex -GetFirstSelectedStorageItemIndex: ; 0x0204352C - ldr r0, _02043564 ; =UNK_STORAGE_STRUCT_0X14 - mov r1, #0 - ldr r2, [r0, #8] - b _02043554 -_0204353C: - ldrb r0, [r2, r1] - tst r0, #1 - movne r0, r1, lsl #0x10 - movne r0, r0, asr #0x10 - bxne lr - add r1, r1, #1 -_02043554: - cmp r1, #0x3e8 - blt _0204353C - mvn r0, #0 - bx lr - .align 2, 0 -_02043564: .word UNK_STORAGE_STRUCT_0X14 - arm_func_end GetFirstSelectedStorageItemIndex diff --git a/asm/main_0204317C.s b/asm/main_0204317C.s new file mode 100644 index 00000000..d2a7cc23 --- /dev/null +++ b/asm/main_0204317C.s @@ -0,0 +1,50 @@ + .include "asm/macros.inc" + .include "main_0204317C.inc" + + .text + + arm_func_start FreeUnkStorageStruct0x18c0 +FreeUnkStorageStruct0x18c0: ; 0x0204317C + stmdb sp!, {r3, lr} + ldr r0, _02043214 ; =UNK_STORAGE_STRUCT_0X14 + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl sub_02044474 + bl sub_020442CC + bl sub_020445C8 + ldr r0, _02043214 ; =UNK_STORAGE_STRUCT_0X14 + ldr r1, [r0, #4] + ldr r0, [r1] + cmp r0, #6 + bne _020431BC + add r0, r1, #0x700 + ldrsb r0, [r0, #0xd5] + bl CloseTextBox +_020431BC: + ldr r0, _02043214 ; =UNK_STORAGE_STRUCT_0X14 + mvn r1, #1 + ldr r0, [r0, #4] + add r0, r0, #0x700 + ldrsb r0, [r0, #0xd6] + cmp r0, r1 + beq _020431DC + bl CloseTextBox +_020431DC: + ldr r1, _02043214 ; =UNK_STORAGE_STRUCT_0X14 + ldr r0, [r1, #4] + ldr r2, [r0] + add r0, r0, #0x700 + str r2, [r1, #0xc] + ldrsb r0, [r0, #0xd4] + bl CloseCollectionMenu + ldr r0, _02043214 ; =UNK_STORAGE_STRUCT_0X14 + ldr r0, [r0, #4] + bl MemFree + ldr r0, _02043214 ; =UNK_STORAGE_STRUCT_0X14 + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_02043214: .word UNK_STORAGE_STRUCT_0X14 + arm_func_end FreeUnkStorageStruct0x18c0 diff --git a/asm/main_020432B4.s b/asm/main_020432B4.s new file mode 100644 index 00000000..bdfc00bd --- /dev/null +++ b/asm/main_020432B4.s @@ -0,0 +1,66 @@ + .include "asm/macros.inc" + .include "main_020432B4.inc" + + .text + + arm_func_start sub_020432B4 +sub_020432B4: ; 0x020432B4 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + ldr r3, _02043318 ; =UNK_STORAGE_STRUCT_0X14 + mov r5, r0 + ldr r0, [r3, #4] + mov r4, r2 + add r0, r0, r1, lsl #1 + ldrsh r6, [r0, #4] + add r1, sp, #0 + mov r0, r6 + bl ConvertStorageItemAtIdxToItem + ldr r2, _0204331C ; =_0209CA3C + add r1, sp, #0 + mov r0, r5 + bl MaybeGetColoredFormattedItemName + ldr r0, _02043318 ; =UNK_STORAGE_STRUCT_0X14 + ldr r0, [r0, #8] + ldrb r0, [r0, r6] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + str r0, [r4] + mov r0, r5 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02043318: .word UNK_STORAGE_STRUCT_0X14 +_0204331C: .word _0209CA3C + arm_func_end sub_020432B4 + + arm_func_start sub_02043320 +sub_02043320: ; 0x02043320 + stmdb sp!, {r3, lr} + cmp r0, #7 + bne _02043344 + bl CountNbOfValidItemsInTimeDarknessInStorage + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} +_02043344: + sub r0, r0, #5 + cmp r0, #1 + bhi _02043368 + bl CountNbOfValidItemsInStorage + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} +_02043368: + bl CountNbOfItemsInStorage + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end sub_02043320 diff --git a/include/main_02042AF8.h b/include/main_02042AF8.h index 9a237115..d854f5ec 100644 --- a/include/main_02042AF8.h +++ b/include/main_02042AF8.h @@ -8,15 +8,38 @@ struct unk_020AFED4 { s32 *field_0x8; }; +struct unk_02043148 { + u8 field_0x0[4]; + s16 field_0x4[1000]; + s8 field_0x7D4; + u8 field_0x7D5[0x13B]; + s16 field_0x910; + u8 field_0x912[0xFAA]; + u32 field_0x18BC; +}; + struct unk_020AFEE0 { - u8 field_0x0[8]; + u16 field_0x0; + u16 field_0x2; + struct unk_02043148 *field_0x4; u8 *field_0x8; + u8 field_0xC[4]; + u32 field_0x10; }; extern struct unk_020AFED4 UNK_STORAGE_STRUCT_0XC; extern struct unk_020AFEE0 UNK_STORAGE_STRUCT_0X14; +void sub_02010044(s16 a); +void sub_020444B0(void); +s32 IsStorageFull(s32 a); +void sub_0202D134(s8 a); +s32 sub_0202C620(s8 a); +bool8 IsCollectionMenuActive(s8 a); +bool8 IsCollectionMenuState3(s8 a); +s32 sub_0202C75C(s8 a); + void ClearBagSelectedItemTable(void); #endif diff --git a/include/main_02043148.h b/include/main_02043148.h new file mode 100644 index 00000000..2282bfcd --- /dev/null +++ b/include/main_02043148.h @@ -0,0 +1,10 @@ +#ifndef PMDSKY_MAIN_02043148_H +#define PMDSKY_MAIN_02043148_H + +#include "util.h" +#include "main_02042AF8.h" + +void sub_02043148(s32 index); +s32 sub_0204316C(s32 a); + +#endif diff --git a/include/main_02043218.h b/include/main_02043218.h new file mode 100644 index 00000000..5c9a2b31 --- /dev/null +++ b/include/main_02043218.h @@ -0,0 +1,13 @@ +#ifndef PMDSKY_MAIN_02043218_H +#define PMDSKY_MAIN_02043218_H + +#include "util.h" +#include "main_02042AF8.h" + +void sub_02043218(void); +void sub_0204322C(u16 value); +void sub_0204323C(s16 value); +s32 sub_02043254(s16 value); +s16 sub_0204329C(s32 index); + +#endif diff --git a/include/main_02043380.h b/include/main_02043380.h new file mode 100644 index 00000000..c0687ff2 --- /dev/null +++ b/include/main_02043380.h @@ -0,0 +1,18 @@ +#ifndef PMDSKY_MAIN_02043380_H +#define PMDSKY_MAIN_02043380_H + +#include "util.h" +#include "main_02042AF8.h" + +s32 sub_02043380(s32 a); +void sub_02043398(void); +s32 sub_020433C0(void); +bool8 sub_020433E0(void); +bool8 sub_02043400(void); +bool8 sub_02043434(void); +s16 sub_02043468(void); +void ClearStorageSelectedItemTable(void); +s32 CountSelectedStorageItems(void); +s16 GetFirstSelectedStorageItemIndex(void); + +#endif diff --git a/main.lsf b/main.lsf index 19e5a257..491f4eb7 100644 --- a/main.lsf +++ b/main.lsf @@ -214,6 +214,11 @@ Static main Object asm/main_02042B20.o Object src/main_02042B84.o Object asm/main_02042BE0.o + Object src/main_02043148.o + Object asm/main_0204317C.o + Object src/main_02043218.o + Object asm/main_020432B4.o + Object src/main_02043380.o Object src/main_02043568.o Object asm/main_0204357C.o Object src/main_020484A0.o diff --git a/src/main_02043148.c b/src/main_02043148.c new file mode 100644 index 00000000..03d3f24a --- /dev/null +++ b/src/main_02043148.c @@ -0,0 +1,13 @@ +#include "main_02043148.h" +#include "main_02042AF8.h" + +void sub_02043148(s32 index) +{ + sub_02010044(UNK_STORAGE_STRUCT_0X14.field_0x4->field_0x4[index]); + sub_020444B0(); +} + +s32 sub_0204316C(s32 a) +{ + return a != 0 ? 5 : 7; +} diff --git a/src/main_02043218.c b/src/main_02043218.c new file mode 100644 index 00000000..15058897 --- /dev/null +++ b/src/main_02043218.c @@ -0,0 +1,35 @@ +#include "main_02043218.h" +#include "main_02042AF8.h" + +void sub_02043218(void) +{ + UNK_STORAGE_STRUCT_0X14.field_0x2 = 0; +} + +void sub_0204322C(u16 value) +{ + UNK_STORAGE_STRUCT_0X14.field_0x2 = value; +} + +void sub_0204323C(s16 value) +{ + UNK_STORAGE_STRUCT_0X14.field_0x2 = sub_02043254(value); +} + +s32 sub_02043254(s16 value) +{ + s32 i; + struct unk_02043148 *contents = UNK_STORAGE_STRUCT_0X14.field_0x4; + + for (i = 0; i < 1000 && contents->field_0x4[i] != -1; i++) { + if (value == contents->field_0x4[i]) { + return i; + } + } + return 0; +} + +s16 sub_0204329C(s32 index) +{ + return UNK_STORAGE_STRUCT_0X14.field_0x4->field_0x4[index]; +} diff --git a/src/main_02043380.c b/src/main_02043380.c new file mode 100644 index 00000000..b38b5965 --- /dev/null +++ b/src/main_02043380.c @@ -0,0 +1,102 @@ +#include "main_02043380.h" +#include "main_02042AF8.h" +#include "main_0202C748.h" + +s32 sub_02043380(s32 a) +{ + if (a == 8) { + return 0; + } + return IsStorageFull(a); +} + +void sub_02043398(void) +{ + struct unk_02043148 *contents = UNK_STORAGE_STRUCT_0X14.field_0x4; + + if (contents == NULL) { + return; + } + sub_0202D134(contents->field_0x7D4); +} + +s32 sub_020433C0(void) +{ + return sub_0202C620(UNK_STORAGE_STRUCT_0X14.field_0x4->field_0x7D4); +} + +bool8 sub_020433E0(void) +{ + return UNK_STORAGE_STRUCT_0X14.field_0x4 != NULL; +} + +bool8 sub_02043400(void) +{ + struct unk_02043148 *contents = UNK_STORAGE_STRUCT_0X14.field_0x4; + + if (contents == NULL || contents->field_0x7D4 == -2) { + return 0; + } + return IsCollectionMenuActive(contents->field_0x7D4); +} + +bool8 sub_02043434(void) +{ + struct unk_02043148 *contents = UNK_STORAGE_STRUCT_0X14.field_0x4; + + if (contents == NULL || contents->field_0x7D4 == -2) { + return 0; + } + return IsCollectionMenuState3(contents->field_0x7D4); +} + +s16 sub_02043468(void) +{ + s32 index; + + if (IsCollectionMenuActive(UNK_STORAGE_STRUCT_0X14.field_0x4->field_0x7D4)) { + index = GetWindowIdSelectedMenuItemIdx(UNK_STORAGE_STRUCT_0X14.field_0x4->field_0x7D4); + } else { + index = sub_0202C75C(UNK_STORAGE_STRUCT_0X14.field_0x4->field_0x7D4); + } + if (index < 0) { + return -1; + } + return UNK_STORAGE_STRUCT_0X14.field_0x4->field_0x4[index]; +} + +void ClearStorageSelectedItemTable(void) +{ + s32 i; + + for (i = 0; i < 1000; i++) { + UNK_STORAGE_STRUCT_0X14.field_0x8[i] = 0; + } +} + +s32 CountSelectedStorageItems(void) +{ + s32 count = 0; + s32 i; + u8 *table = UNK_STORAGE_STRUCT_0X14.field_0x8; + + for (i = 0; i < 1000; i++) { + if (table[i] & 1) { + count++; + } + } + return count; +} + +s16 GetFirstSelectedStorageItemIndex(void) +{ + s32 i; + u8 *table = UNK_STORAGE_STRUCT_0X14.field_0x8; + + for (i = 0; i < 1000; i++) { + if (table[i] & 1) { + return i; + } + } + return -1; +}