diff --git a/asm/kinstone.s b/asm/kinstone.s index 45621207..4f28742e 100644 --- a/asm/kinstone.s +++ b/asm/kinstone.s @@ -51,49 +51,3 @@ _08018536: _08018550: .4byte gUnk_02033AB8 _08018554: .4byte gUnk_080B3D14 _08018558: .4byte 0x00000C81 - - thumb_func_start sub_0801855C -sub_0801855C: @ 0x0801855C - push {r4, r5, r6, lr} - ldr r4, _08018570 @ =gUnk_02033AB8 - adds r0, r4, #0 - movs r1, #0x14 - bl MemClear - adds r5, r4, #0 - ldr r4, _08018574 @ =gUnk_080B3D20 - movs r6, #0 - b _0801858C - .align 2, 0 -_08018570: .4byte gUnk_02033AB8 -_08018574: .4byte gUnk_080B3D20 -_08018578: - adds r0, r4, #0 - bl sub_080185B4 - cmp r0, #0 - beq _08018584 - ldrb r6, [r5, #3] -_08018584: - ldrb r0, [r5, #3] - adds r0, #1 - strb r0, [r5, #3] - adds r4, #4 -_0801858C: - ldrb r0, [r4] - cmp r0, #0xff - bne _08018578 - strb r6, [r5, #3] - ldrb r0, [r5, #3] - lsls r0, r0, #2 - ldr r1, _080185B0 @ =gUnk_080B3D20 - adds r4, r0, r1 - ldrb r0, [r4, #2] - strb r0, [r5] - ldrb r0, [r4, #3] - strb r0, [r5, #1] - adds r0, r6, #1 - strb r0, [r5, #3] - bl sub_08018500 - pop {r4, r5, r6, pc} - .align 2, 0 -_080185B0: .4byte gUnk_080B3D20 - diff --git a/src/kinstone.c b/src/kinstone.c index d4cf1cf3..11a5835e 100644 --- a/src/kinstone.c +++ b/src/kinstone.c @@ -38,6 +38,29 @@ void sub_0801876C(int, int); void sub_08018738(u32, int); void sub_08018690(int param_1, u16* param_2); void sub_08018500(); +bool32 sub_080185B4(const struct_gUnk_080B3D20* param_1); + +void sub_0801855C(void) { + u32 bVar3; + struct_area_28* ptr; + // TODO: Figure out what is up with the pointer assignment + struct_gUnk_080B3D20* pcVar2 = (struct_gUnk_080B3D20*)&gArea.unk28; + + MemClear(pcVar2, 0x14); + ptr = (struct_area_28*)pcVar2; + for (pcVar2 = gUnk_080B3D20, bVar3 = 0; pcVar2->unk0 != 0xff; pcVar2++) { + if (sub_080185B4(pcVar2)) { + bVar3 = ptr->unk2b; + } + ptr->unk2b++; + } + ptr->unk2b = bVar3; + pcVar2 = &gUnk_080B3D20[ptr->unk2b]; + ptr->inventoryGfxIdx = pcVar2->unk2; + ptr->unk29 = pcVar2->unk3; + ptr->unk2b = bVar3 + 1; + sub_08018500(); +} bool32 sub_080185B4(const struct_gUnk_080B3D20* param_1) { if (param_1->unk0 == 0xff)