diff options
author | camthesaxman <cameronghall@cox.net> | 2017-07-06 19:25:06 -0500 |
---|---|---|
committer | camthesaxman <cameronghall@cox.net> | 2017-07-06 19:25:06 -0500 |
commit | ad7a7222a538380b446f9aecde44c5222ff3b68a (patch) | |
tree | fe88555cb303e6e2122b829401ade2bd78bdc962 | |
parent | 42562fd8dfe66b2469a4f2a71ac204b2a74ac84a (diff) |
decompile sub_80A34B4 - ClearBag
-rw-r--r-- | asm/item_menu.s | 341 | ||||
-rw-r--r-- | include/graphics.h | 6 | ||||
-rw-r--r-- | src/item_menu.c | 135 |
3 files changed, 139 insertions, 343 deletions
diff --git a/asm/item_menu.s b/asm/item_menu.s index 3be9e3770..ae746307c 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -6,347 +6,6 @@ .text - thumb_func_start sub_80A34B4 -sub_80A34B4: @ 80A34B4 - push {lr} -_080A34B6: - bl sub_80A317C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080A34D2 - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A34B6 - movs r0, 0 - b _080A34DE -_080A34D2: - ldr r1, _080A34E4 @ =gUnknown_03000700 - movs r0, 0 - strb r0, [r1] - bl ResetTasks - movs r0, 0x1 -_080A34DE: - pop {r1} - bx r1 - .align 2, 0 -_080A34E4: .4byte gUnknown_03000700 - thumb_func_end sub_80A34B4 - - thumb_func_start sub_80A34E8 -sub_80A34E8: @ 80A34E8 - push {lr} - bl sub_80F9368 - ldr r1, _080A3514 @ =REG_BG2CNT - ldr r2, _080A3518 @ =0x00000c06 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0x2 - ldr r2, _080A351C @ =0x00000405 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0xA - movs r2, 0xBA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x50 - movs r0, 0 - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080A3514: .4byte REG_BG2CNT -_080A3518: .4byte 0x00000c06 -_080A351C: .4byte 0x00000405 - thumb_func_end sub_80A34E8 - - thumb_func_start sub_80A3520 -sub_80A3520: @ 80A3520 - push {lr} - ldr r0, _080A353C @ =0x02000000 - ldr r1, _080A3540 @ =0x0001ffff - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x4 - bls _080A3530 - b _080A3624 -_080A3530: - lsls r0, 2 - ldr r1, _080A3544 @ =_080A3548 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080A353C: .4byte 0x02000000 -_080A3540: .4byte 0x0001ffff -_080A3544: .4byte _080A3548 - .align 2, 0 -_080A3548: - .4byte _080A355C - .4byte _080A3570 - .4byte _080A3588 - .4byte _080A35C0 - .4byte _080A3604 -_080A355C: - ldr r0, _080A3568 @ =gBagScreen_Gfx - ldr r1, _080A356C @ =0x06004000 - bl LZDecompressVram - b _080A35EA - .align 2, 0 -_080A3568: .4byte gBagScreen_Gfx -_080A356C: .4byte 0x06004000 -_080A3570: - ldr r0, _080A3580 @ =gUnknown_08E77004 - ldr r1, _080A3584 @ =gBGTilemapBuffers + 0x1000 - movs r2, 0x80 - lsls r2, 3 - bl CpuSet - b _080A35EA - .align 2, 0 -_080A3580: .4byte gUnknown_08E77004 -_080A3584: .4byte gBGTilemapBuffers + 0x1000 -_080A3588: - ldr r0, _080A35A4 @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - cmp r0, 0 - beq _080A3598 - ldr r0, _080A35A8 @ =gUnknown_03000701 - ldrb r0, [r0] - cmp r0, 0x7 - bne _080A35B0 -_080A3598: - ldr r0, _080A35AC @ =gBagScreenMale_Pal - movs r1, 0 - movs r2, 0x40 - bl LoadCompressedPalette - b _080A35EA - .align 2, 0 -_080A35A4: .4byte gSaveBlock2 -_080A35A8: .4byte gUnknown_03000701 -_080A35AC: .4byte gBagScreenMale_Pal -_080A35B0: - ldr r0, _080A35BC @ =gBagScreenFemale_Pal - movs r1, 0 - movs r2, 0x40 - bl LoadCompressedPalette - b _080A35EA - .align 2, 0 -_080A35BC: .4byte gBagScreenFemale_Pal -_080A35C0: - ldr r0, _080A35D8 @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - cmp r0, 0 - beq _080A35D0 - ldr r0, _080A35DC @ =gUnknown_03000701 - ldrb r0, [r0] - cmp r0, 0x7 - bne _080A35E4 -_080A35D0: - ldr r0, _080A35E0 @ =gUnknown_083C1CC8 - bl LoadCompressedObjectPic - b _080A35EA - .align 2, 0 -_080A35D8: .4byte gSaveBlock2 -_080A35DC: .4byte gUnknown_03000701 -_080A35E0: .4byte gUnknown_083C1CC8 -_080A35E4: - ldr r0, _080A35F8 @ =gUnknown_083C1CD0 - bl LoadCompressedObjectPic -_080A35EA: - ldr r1, _080A35FC @ =0x02000000 - ldr r0, _080A3600 @ =0x0001ffff - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080A3624 - .align 2, 0 -_080A35F8: .4byte gUnknown_083C1CD0 -_080A35FC: .4byte 0x02000000 -_080A3600: .4byte 0x0001ffff -_080A3604: - ldr r0, _080A3618 @ =gUnknown_083C1CD8 - bl LoadCompressedObjectPalette - ldr r0, _080A361C @ =0x02000000 - ldr r1, _080A3620 @ =0x0001ffff - adds r0, r1 - movs r1, 0 - strb r1, [r0] - movs r0, 0x1 - b _080A3626 - .align 2, 0 -_080A3618: .4byte gUnknown_083C1CD8 -_080A361C: .4byte 0x02000000 -_080A3620: .4byte 0x0001ffff -_080A3624: - movs r0, 0 -_080A3626: - pop {r1} - bx r1 - thumb_func_end sub_80A3520 - - thumb_func_start sub_80A362C -sub_80A362C: @ 80A362C - push {r4-r6,lr} - movs r4, 0 - ldr r6, _080A3648 @ =gUnknown_03000701 - ldr r5, _080A364C @ =gUnknown_03005D10 -_080A3634: - ldrb r0, [r6] - cmp r0, 0x5 - bne _080A3650 - lsls r1, r4, 2 - adds r0, r1, r5 - ldrb r0, [r0, 0x2] - subs r0, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - b _080A3656 - .align 2, 0 -_080A3648: .4byte gUnknown_03000701 -_080A364C: .4byte gUnknown_03005D10 -_080A3650: - lsls r1, r4, 2 - adds r0, r1, r5 - ldrb r3, [r0, 0x2] -_080A3656: - adds r1, r5 - ldrb r0, [r1, 0x1] - cmp r0, 0 - beq _080A366C - ldrb r2, [r1, 0x3] - adds r0, r2 - cmp r0, r3 - ble _080A3674 - subs r0, r3, r2 - strb r0, [r1, 0x1] - b _080A3674 -_080A366C: - ldrb r0, [r1] - cmp r0, r3 - bls _080A3674 - strb r3, [r1] -_080A3674: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x4 - bls _080A3634 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80A362C - - thumb_func_start sub_80A3684 -sub_80A3684: @ 80A3684 - push {r4,lr} - movs r2, 0 - ldr r4, _080A36B0 @ =gUnknown_02038559 - ldr r3, _080A36B4 @ =gUnknown_03005D10 - movs r1, 0 -_080A368E: - lsls r0, r2, 2 - adds r0, r3 - strb r1, [r0] - strb r1, [r0, 0x1] - strb r1, [r0, 0x2] - strb r1, [r0, 0x3] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x4 - bls _080A368E - movs r0, 0 - strb r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A36B0: .4byte gUnknown_02038559 -_080A36B4: .4byte gUnknown_03005D10 - thumb_func_end sub_80A3684 - - thumb_func_start sub_80A36B8 -sub_80A36B8: @ 80A36B8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - ldr r0, [sp, 0x18] - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r2, 24 - lsls r3, 24 - lsrs r3, 24 - mov r12, r3 - lsls r0, 24 - lsrs r0, 24 - lsrs r2, 24 - adds r0, r2, r0 - cmp r2, r0 - bgt _080A370A - adds r7, r0, 0 -_080A36DE: - mov r1, r8 - mov r3, r12 - adds r0, r1, r3 - adds r4, r2, 0x1 - cmp r1, r0 - bgt _080A3702 - lsls r3, r2, 5 - movs r5, 0 - adds r2, r0, 0 -_080A36F0: - adds r0, r1, r3 - lsls r0, 1 - adds r0, r6 - strh r5, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r2 - ble _080A36F0 -_080A3702: - lsls r0, r4, 16 - lsrs r2, r0, 16 - cmp r2, r7 - ble _080A36DE -_080A370A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80A36B8 - - thumb_func_start ClearBag -ClearBag: @ 80A3714 - push {r4,r5,lr} - movs r4, 0 - ldr r5, _080A373C @ =gBagPockets -_080A371A: - lsls r1, r4, 3 - adds r1, r5 - ldr r0, [r1] - ldrb r1, [r1, 0x4] - bl ClearItemSlots - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x4 - bls _080A371A - bl sub_80A3684 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A373C: .4byte gBagPockets - thumb_func_end ClearBag - thumb_func_start sub_80A3740 sub_80A3740: @ 80A3740 push {lr} diff --git a/include/graphics.h b/include/graphics.h index c3fe20996..fc0cc3adf 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -2435,4 +2435,10 @@ extern const u8 gMonFrontPic_UnownQuestionMark[]; extern const u8 gMonBackPic_UnownQuestionMark[]; extern const u8 gMonIcon_UnownQuestionMark[]; +// data/graphics.s +extern const u8 gBagScreen_Gfx[]; +extern const u8 gBagScreenMale_Pal[]; +extern const u8 gBagScreenFemale_Pal[]; +extern const u16 gUnknown_08E77004[]; + #endif // GUARD_GRAPHICS_H diff --git a/src/item_menu.c b/src/item_menu.c index 0ce37f908..bbb91296f 100644 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -1,4 +1,6 @@ #include "global.h" +#include "decompress.h" +#include "graphics.h" #include "item.h" #include "main.h" #include "menu.h" @@ -16,12 +18,15 @@ struct UnknownStruct1 { u8 unk0; u8 unk1; + u8 unk2; + u8 unk3; }; extern s8 gUnknown_02038559; extern u8 gUnknown_0203855A; extern u8 gUnknown_0203855B; extern u8 gUnknown_0203855C; +extern u8 gUnknown_03000700; extern u8 gUnknown_03000701; extern struct UnknownStruct1 gUnknown_03005D10[]; extern struct ItemSlot *gUnknown_03005D24; @@ -30,8 +35,12 @@ extern void gpu_pal_allocator_reset__manage_upper_four(void); extern void sub_80F9020(void); extern void sub_80F9988(); +extern const struct CompressedSpriteSheet gUnknown_083C1CC8; +extern const struct CompressedSpriteSheet gUnknown_083C1CD0; +extern const struct CompressedSpritePalette gUnknown_083C1CD8; + void sub_80A34E8(void); -u8 sub_80A3520(void); +bool8 sub_80A3520(void); void sub_80A362C(void); void sub_80A3740(void); void sub_80A39B8(u16 *, u8); @@ -116,7 +125,7 @@ bool8 sub_80A317C(void) gMain.state++; break; case 6: - if (sub_80A3520() == 0) + if (sub_80A3520() == FALSE) break; gMain.state++; break; @@ -206,3 +215,125 @@ bool8 sub_80A317C(void) } return FALSE; } + +bool8 sub_80A34B4(void) +{ + do + { + if (sub_80A317C() == TRUE) + { + gUnknown_03000700 = 0; + ResetTasks(); + return TRUE; + } + } while (sub_80F9344() != 1); + return FALSE; +} + +void sub_80A34E8(void) +{ + sub_80F9368(); + REG_BG2CNT = 0x0C06; + REG_BG1CNT = 0x0405; + REG_DISPCNT = 0x1740; + REG_BLDCNT = 0; +} + +bool8 sub_80A3520(void) +{ + switch (ewram[0x1FFFF]) + { + case 0: + LZDecompressVram(gBagScreen_Gfx, (void *)(VRAM + 0x4000)); + ewram[0x1FFFF]++; + break; + case 1: + CpuCopy16(gUnknown_08E77004, gBGTilemapBuffers[2], 0x800); + ewram[0x1FFFF]++; + break; + case 2: + if (gSaveBlock2.playerGender == MALE || gUnknown_03000701 == 7) + LoadCompressedPalette(gBagScreenMale_Pal, 0, 64); + else + LoadCompressedPalette(gBagScreenFemale_Pal, 0, 64); + ewram[0x1FFFF]++; + break; + case 3: + if (gSaveBlock2.playerGender == MALE || gUnknown_03000701 == 7) + LoadCompressedObjectPic(&gUnknown_083C1CC8); + else + LoadCompressedObjectPic(&gUnknown_083C1CD0); + ewram[0x1FFFF]++; + break; + case 4: + LoadCompressedObjectPalette(&gUnknown_083C1CD8); + ewram[0x1FFFF] = 0; + return TRUE; + } + return FALSE; +} + +void sub_80A362C(void) +{ + u8 i; + + for (i = 0; i < 5; i++) + { + u8 r3; + + if (gUnknown_03000701 == 5) + r3 = gUnknown_03005D10[i].unk2 - 1; + else + r3 = gUnknown_03005D10[i].unk2; + + if (gUnknown_03005D10[i].unk1 != 0) + { + if (gUnknown_03005D10[i].unk1 + gUnknown_03005D10[i].unk3 > r3) + gUnknown_03005D10[i].unk1 = r3 - gUnknown_03005D10[i].unk3; + } + else + { + if (gUnknown_03005D10[i].unk0 > r3) + gUnknown_03005D10[i].unk0 = r3; + } + } +} + +void sub_80A3684(void) +{ + u16 i; + + for (i = 0; i < 5; i++) + { + gUnknown_03005D10[i].unk0 = 0; + gUnknown_03005D10[i].unk1 = 0; + gUnknown_03005D10[i].unk2 = 0; + gUnknown_03005D10[i].unk3 = 0; + } + gUnknown_02038559 = 0; +} + +void sub_80A36B8(u16 *a, u8 b, u8 c, u8 d, u8 e) +{ + u16 i; + u16 j; + + for (i = c; i <= c + e; i++) + { + for (j = b; j <= b + d; j++) + { + u32 index = j + i * 32; + + a[index] = 0; + } + } +} + +void ClearBag(void) +{ + u16 i; + + for (i = 0; i < 5; i++) + ClearItemSlots(gBagPockets[i].itemSlots, gBagPockets[i].capacity); + sub_80A3684(); +} |