From 4f4b03af6077787ceef226d9085242966c69b6bd Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 16 Jun 2019 12:36:34 -0400 Subject: [PATCH] item_pc: sub_810D878 --- asm/item_pc.s | 330 ------------------------------- data/data_835B488.s | 4 +- data/data_83FECCC.s | 3 - graphics/item_pc/unk_8E85090.png | Bin 0 -> 746 bytes graphics/item_pc/unk_8E85458.bin | Bin 0 -> 2048 bytes graphics_file_rules.mk | 4 + include/graphics.h | 7 +- include/strings.h | 1 + ld_script.txt | 1 + src/item_pc.c | 156 ++++++++++++++- 10 files changed, 165 insertions(+), 341 deletions(-) create mode 100644 graphics/item_pc/unk_8E85090.png create mode 100644 graphics/item_pc/unk_8E85458.bin diff --git a/asm/item_pc.s b/asm/item_pc.s index b8844a406..f70f0c7f1 100644 --- a/asm/item_pc.s +++ b/asm/item_pc.s @@ -5,336 +5,6 @@ .text - thumb_func_start sub_810D6AC -sub_810D6AC: @ 810D6AC - push {lr} - sub sp, 0x4 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0810D6DC @ =sub_810D6E8 - movs r1, 0 - bl CreateTask - ldr r0, _0810D6E0 @ =sub_810D48C - bl SetVBlankCallback - ldr r0, _0810D6E4 @ =sub_810D470 - bl SetMainCallback2 - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0810D6DC: .4byte sub_810D6E8 -_0810D6E0: .4byte sub_810D48C -_0810D6E4: .4byte sub_810D470 - thumb_func_end sub_810D6AC - - thumb_func_start sub_810D6E8 -sub_810D6E8: @ 810D6E8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0810D714 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0810D70C - ldr r0, _0810D718 @ =gUnknown_203ADCC - ldr r0, [r0] - bl SetMainCallback2 - bl sub_810DC40 - adds r0, r4, 0 - bl DestroyTask -_0810D70C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0810D714: .4byte gPaletteFade -_0810D718: .4byte gUnknown_203ADCC - thumb_func_end sub_810D6E8 - - thumb_func_start sub_810D71C -sub_810D71C: @ 810D71C - push {r4,r5,lr} - bl InitBgReg - ldr r5, _0810D77C @ =gUnknown_203ADC0 - movs r4, 0x80 - lsls r4, 4 - adds r0, r4, 0 - bl Alloc - str r0, [r5] - cmp r0, 0 - beq _0810D784 - movs r1, 0 - adds r2, r4, 0 - bl memset - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _0810D780 @ =gUnknown_8453F6C - movs r0, 0 - movs r2, 0x2 - bl InitBgsFromTemplates - ldr r1, [r5] - movs r0, 0x1 - bl SetBgTilemapBuffer - movs r0, 0x1 - bl schedule_bg_copy_tilemap_to_vram - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x1 - b _0810D786 - .align 2, 0 -_0810D77C: .4byte gUnknown_203ADC0 -_0810D780: .4byte gUnknown_8453F6C -_0810D784: - movs r0, 0 -_0810D786: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_810D71C - - thumb_func_start sub_810D78C -sub_810D78C: @ 810D78C - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, _0810D7A8 @ =gUnknown_203ADBC - ldr r0, [r5] - movs r1, 0xC - ldrsh r4, [r0, r1] - cmp r4, 0x1 - beq _0810D7D0 - cmp r4, 0x1 - bgt _0810D7AC - cmp r4, 0 - beq _0810D7B6 - b _0810D814 - .align 2, 0 -_0810D7A8: .4byte gUnknown_203ADBC -_0810D7AC: - cmp r4, 0x2 - beq _0810D7F0 - cmp r4, 0x3 - beq _0810D800 - b _0810D814 -_0810D7B6: - bl reset_temp_tile_data_buffers - ldr r1, _0810D7CC @ =gUnknown_8E85090 - str r4, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl decompress_and_copy_tile_data_to_vram - b _0810D806 - .align 2, 0 -_0810D7CC: .4byte gUnknown_8E85090 -_0810D7D0: - bl free_temp_tile_data_buffers_if_possible - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0810D830 - ldr r0, _0810D7E8 @ =gUnknown_8E85458 - ldr r1, _0810D7EC @ =gUnknown_203ADC0 - ldr r1, [r1] - bl LZDecompressWram - b _0810D806 - .align 2, 0 -_0810D7E8: .4byte gUnknown_8E85458 -_0810D7EC: .4byte gUnknown_203ADC0 -_0810D7F0: - ldr r0, _0810D7FC @ =gUnknown_8E85408 - movs r1, 0 - movs r2, 0x60 - bl LoadCompressedPalette - b _0810D806 - .align 2, 0 -_0810D7FC: .4byte gUnknown_8E85408 -_0810D800: - ldr r0, _0810D810 @ =gUnknown_83D4240 - bl LoadCompressedObjectPic -_0810D806: - ldr r1, [r5] - ldrh r0, [r1, 0xC] - adds r0, 0x1 - strh r0, [r1, 0xC] - b _0810D830 - .align 2, 0 -_0810D810: .4byte gUnknown_83D4240 -_0810D814: - ldr r0, _0810D828 @ =gUnknown_83D4248 - bl LoadCompressedObjectPalette - ldr r0, _0810D82C @ =gUnknown_203ADBC - ldr r1, [r0] - movs r0, 0 - strh r0, [r1, 0xC] - movs r0, 0x1 - b _0810D832 - .align 2, 0 -_0810D828: .4byte gUnknown_83D4248 -_0810D82C: .4byte gUnknown_203ADBC -_0810D830: - movs r0, 0 -_0810D832: - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_810D78C - - thumb_func_start sub_810D83C -sub_810D83C: @ 810D83C - push {r4,lr} - ldr r4, _0810D860 @ =gUnknown_203ADC4 - movs r0, 0xF8 - bl Alloc - str r0, [r4] - cmp r0, 0 - beq _0810D868 - ldr r4, _0810D864 @ =gUnknown_203ADC8 - movs r0, 0xD9 - lsls r0, 1 - bl Alloc - str r0, [r4] - cmp r0, 0 - beq _0810D868 - movs r0, 0x1 - b _0810D872 - .align 2, 0 -_0810D860: .4byte gUnknown_203ADC4 -_0810D864: .4byte gUnknown_203ADC8 -_0810D868: - bl sub_810DC40 - bl sub_810D6AC - movs r0, 0 -_0810D872: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_810D83C - - thumb_func_start sub_810D878 -sub_810D878: @ 810D878 - push {r4,r5,lr} - movs r4, 0 - b _0810D8A4 -_0810D87E: - ldr r0, _0810D938 @ =gSaveBlock1Ptr - ldr r0, [r0] - lsls r1, r4, 2 - adds r0, r1 - movs r1, 0xA6 - lsls r1, 2 - adds r0, r1 - ldrh r0, [r0] - bl ItemId_GetItem - ldr r1, _0810D93C @ =gUnknown_203ADC4 - ldr r2, [r1] - lsls r1, r4, 3 - adds r1, r2 - str r0, [r1] - str r4, [r1, 0x4] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 -_0810D8A4: - ldr r0, _0810D940 @ =gUnknown_203ADBC - ldr r0, [r0] - ldrb r0, [r0, 0x7] - cmp r4, r0 - bcc _0810D87E - ldr r0, _0810D93C @ =gUnknown_203ADC4 - ldr r3, [r0] - lsls r0, r4, 3 - adds r0, r3 - ldr r1, _0810D944 @ =gFameCheckerText_Cancel - str r1, [r0] - movs r1, 0x2 - negs r1, r1 - str r1, [r0, 0x4] - ldr r2, _0810D948 @ =gMultiuseListMenuTemplate - str r3, [r2] - ldr r0, _0810D940 @ =gUnknown_203ADBC - ldr r3, [r0] - ldrb r0, [r3, 0x7] - adds r0, 0x1 - movs r1, 0 - strh r0, [r2, 0xC] - strb r1, [r2, 0x10] - strb r1, [r2, 0x11] - movs r0, 0x9 - strb r0, [r2, 0x12] - movs r1, 0x1 - movs r0, 0x1 - strb r0, [r2, 0x13] - ldrb r0, [r2, 0x16] - movs r4, 0x8 - negs r4, r4 - ands r4, r0 - orrs r4, r1 - movs r0, 0x39 - negs r0, r0 - ands r4, r0 - movs r0, 0x10 - orrs r4, r0 - strb r4, [r2, 0x16] - ldrb r1, [r2, 0x14] - movs r0, 0x10 - negs r0, r0 - ands r0, r1 - movs r5, 0x2 - orrs r0, r5 - strb r0, [r2, 0x14] - ldrb r1, [r3, 0x6] - strh r1, [r2, 0xE] - ldrb r1, [r2, 0x17] - movs r3, 0x40 - negs r3, r3 - ands r3, r1 - orrs r3, r5 - movs r1, 0xF - ands r0, r1 - movs r1, 0x20 - orrs r0, r1 - strb r0, [r2, 0x14] - movs r0, 0x30 - strb r0, [r2, 0x15] - ldr r0, _0810D94C @ =sub_810D954 - str r0, [r2, 0x4] - ldr r0, _0810D950 @ =sub_810DA20 - str r0, [r2, 0x8] - movs r0, 0x3F - ands r4, r0 - strb r4, [r2, 0x16] - ands r3, r0 - strb r3, [r2, 0x17] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0810D938: .4byte gSaveBlock1Ptr -_0810D93C: .4byte gUnknown_203ADC4 -_0810D940: .4byte gUnknown_203ADBC -_0810D944: .4byte gFameCheckerText_Cancel -_0810D948: .4byte gMultiuseListMenuTemplate -_0810D94C: .4byte sub_810D954 -_0810D950: .4byte sub_810DA20 - thumb_func_end sub_810D878 - thumb_func_start sub_810D954 sub_810D954: @ 810D954 push {r4,r5,lr} diff --git a/data/data_835B488.s b/data/data_835B488.s index 7970f26c4..0f7851b83 100644 --- a/data/data_835B488.s +++ b/data/data_835B488.s @@ -557,10 +557,10 @@ gUnknown_83D41FC:: @ 83D41FC .incbin "baserom.gba", 0x3D41FC, 0x44 gUnknown_83D4240:: @ 83D4240 - .incbin "baserom.gba", 0x3D4240, 0x8 + obj_tiles gFile_graphics_interface_bag_swap_sheet, 0x0100, 0x0065 gUnknown_83D4248:: @ 83D4248 - .incbin "baserom.gba", 0x3D4248, 0x8 + obj_pal gFile_graphics_interface_bag_swap_palette, 0x0065 gUnknown_83D4250:: @ 83D4250 .incbin "baserom.gba", 0x3D4250, 0x2C diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index e84c93578..33feb4cee 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -3071,9 +3071,6 @@ gUnknown_8453094:: @ 8453094 .section .rodata.8453F6C // item_pc.o -gUnknown_8453F6C:: @ 8453F6C - .incbin "baserom.gba", 0x453F6C, 0x8 - gUnknown_8453F74:: @ 8453F74 .incbin "baserom.gba", 0x453F74, 0x18 diff --git a/graphics/item_pc/unk_8E85090.png b/graphics/item_pc/unk_8E85090.png new file mode 100644 index 0000000000000000000000000000000000000000..6c67486835d22f6729cd5f01afda732b24513efb GIT binary patch literal 746 zcmV>2@euBnRwhqqF%|kr9 z=pc<9^9m{Nct;;4$_9%5fJ}+}_=zGZ8D31DL%Cg00D-bl`I=Em54c^q+=qdM%iZUQ zQUmU8xV>lrjv0QdLC%AQ{UE=8%P9_UYHqMsOxJ)bFrka3JhKlxZcRiWzZw8BEU6ud zdk@%(f!quR4J@D&kXtIl5(V-D@=VG=Z8Smzq$l^b)eDO}t=EqrJ-Igmrge$MiYglh zHwUW~)-??Z2piNb!Ui?SkimOI&+vA=erQY*Mo%l+p4Ill6#%_3Xe)i70KK$mC~pcc zpf?8@iaMaS7a4x#UO;b9GBg1N>al>$ zQJ`;Ps$StTUxxs$dOtP!cmViW9JiKxe|h5bP?< zswWTVju;rg*@YR&r>p`2CRS~McSEqdA-nu3z*qyFJ_Bc$Vwi|wNCpJD(+^RcZ5bHz z=tlzu7$RfCWWvBu41>Ns>8Dtp;{1^f->i)(VJJXv51OJvuh-&xEpvgIpGH43|=Vr?t0C>|L2C{a*y*O==SFaV2m$wzD ceIpzB3qTndJYBc9ZU6uP07*qoM6N<$f|f@?mjD0& literal 0 HcmV?d00001 diff --git a/graphics/item_pc/unk_8E85458.bin b/graphics/item_pc/unk_8E85458.bin new file mode 100644 index 0000000000000000000000000000000000000000..046ef83b4dc9fab6570cc2e4ab39374621e29c2c GIT binary patch literal 2048 zcmeIx*-pYh7>3~&siL?IBB0=I*-=~(R~8pG1-<{9ab{wgG%+)!@l5h09QDoD{0$N2 zenfGY58#F-w;W0lX@Quu$ddexvmC%3_dNLe6;@ee9YKN(iv+Io$dj*6vPp`x?lYLF zzD3*D$Jk<!>+c+J_oWluV>^FuJg=`*Q+}!M;zk@+&A_1{Z~xA?f!4{ zjJ<8Y&%oH*_J@p&y=~vr=P6jd^YQC`krHJpR%0f7^5uR1st8a0|7zkyI~Db*ss2oy eYZp`3b@3PdrMS|rL+&?3cfield_0C[0]) + { + case 0: + reset_temp_tile_data_buffers(); + decompress_and_copy_tile_data_to_vram(1, gUnknown_8E85090, 0, 0, 0); + gUnknown_203ADBC->field_0C[0]++; + break; + case 1: + if (free_temp_tile_data_buffers_if_possible() != TRUE) + { + LZDecompressWram(gUnknown_8E85458, gUnknown_203ADC0); + gUnknown_203ADBC->field_0C[0]++; + } + break; + case 2: + LoadCompressedPalette(gUnknown_8E85408, 0x00, 0x60); + gUnknown_203ADBC->field_0C[0]++; + break; + case 3: + LoadCompressedObjectPic(&gUnknown_83D4240); + gUnknown_203ADBC->field_0C[0]++; + break; + default: + LoadCompressedObjectPalette(&gUnknown_83D4248); + gUnknown_203ADBC->field_0C[0] = 0; + return TRUE; + } + return FALSE; +} + +#define sub_810D83C_sub(ptr__, size) ({ \ + void ** ptr = (void **)&(ptr__); \ + *ptr = Alloc(size); \ + if (*ptr == NULL) \ + { \ + sub_810DC40(); \ + sub_810D6AC(); \ + return FALSE; \ + } \ +}) + +bool8 sub_810D83C(void) +{ + sub_810D83C_sub(gUnknown_203ADC4, 0x0F8); + sub_810D83C_sub(gUnknown_203ADC8, 0x1B2); + return TRUE; +} + +void sub_810D878(void) +{ + u16 i; + + for (i = 0; i < gUnknown_203ADBC->field_07; i++) + { + gUnknown_203ADC4[i].label = ItemId_GetItem(gSaveBlock1Ptr->pcItems[i].itemId)->name; + gUnknown_203ADC4[i].index = i; + } + gUnknown_203ADC4[i].label = gFameCheckerText_Cancel; + gUnknown_203ADC4[i].index = -2; + + gMultiuseListMenuTemplate.items = gUnknown_203ADC4; + gMultiuseListMenuTemplate.totalItems = gUnknown_203ADBC->field_07 + 1; + gMultiuseListMenuTemplate.windowId = 0; + gMultiuseListMenuTemplate.header_X = 0; + gMultiuseListMenuTemplate.item_X = 9; + gMultiuseListMenuTemplate.cursor_X = 1; + gMultiuseListMenuTemplate.lettersSpacing = 1; + gMultiuseListMenuTemplate.itemVerticalPadding = 2; + gMultiuseListMenuTemplate.upText_Y = 2; + gMultiuseListMenuTemplate.maxShowed = gUnknown_203ADBC->field_06; + gMultiuseListMenuTemplate.fontId = 2; + gMultiuseListMenuTemplate.cursorPal = 2; + gMultiuseListMenuTemplate.fillValue = 0; + gMultiuseListMenuTemplate.cursorShadowPal = 3; + gMultiuseListMenuTemplate.moveCursorFunc = sub_810D954; + gMultiuseListMenuTemplate.itemPrintFunc = sub_810DA20; + gMultiuseListMenuTemplate.scrollMultiple = 0; + gMultiuseListMenuTemplate.cursorKind = 0; +}