From b6c7c6523fedb21e5928fbaf8e01747f4283cfc1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 28 Sep 2019 16:11:41 -0400 Subject: [PATCH] berry_pouch through sub_813D0E4 --- asm/berry_pouch.s | 149 --------------------------- baserom.ips | Bin 2014788 -> 2012785 bytes data/berry_pouch.s | 9 +- data/graphics.s | 12 +-- graphics/berry_pouch/unk_8E8560C.png | Bin 0 -> 782 bytes graphics/berry_pouch/unk_8E859D0.png | Bin 0 -> 444 bytes graphics/berry_pouch/unk_8E85BA4.pal | 51 +++++++++ graphics/berry_pouch/unk_8E85BF4.pal | 19 ++++ graphics/berry_pouch/unk_8E85C44.bin | Bin 0 -> 2048 bytes include/graphics.h | 8 ++ ld_script.txt | 1 + src/berry_pouch.c | 88 +++++++++++++++- 12 files changed, 175 insertions(+), 162 deletions(-) create mode 100644 graphics/berry_pouch/unk_8E8560C.png create mode 100644 graphics/berry_pouch/unk_8E859D0.png create mode 100644 graphics/berry_pouch/unk_8E85BA4.pal create mode 100644 graphics/berry_pouch/unk_8E85BF4.pal create mode 100644 graphics/berry_pouch/unk_8E85C44.bin diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s index b050958a2..985be2c93 100644 --- a/asm/berry_pouch.s +++ b/asm/berry_pouch.s @@ -5,155 +5,6 @@ .text - thumb_func_start sub_813D07C -sub_813D07C: @ 813D07C - push {r4,lr} - bl ResetAllBgsCoordinatesAndBgCntRegs - ldr r4, _0813D0DC @ =gUnknown_203F36C - ldr r0, [r4] - adds r0, 0xC - movs r2, 0x80 - lsls r2, 4 - movs r1, 0 - bl memset - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _0813D0E0 @ =gUnknown_846434C - movs r0, 0 - movs r2, 0x3 - bl InitBgsFromTemplates - ldr r1, [r4] - adds r1, 0xC - movs r0, 0x1 - bl SetBgTilemapBuffer - movs r0, 0x1 - bl ScheduleBgCopyTilemapToVram - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuReg - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813D0DC: .4byte gUnknown_203F36C -_0813D0E0: .4byte gUnknown_846434C - thumb_func_end sub_813D07C - - thumb_func_start sub_813D0E4 -sub_813D0E4: @ 813D0E4 - push {r4-r6,lr} - sub sp, 0x4 - ldr r5, _0813D104 @ =gUnknown_203F36C - ldr r0, [r5] - ldr r6, _0813D108 @ =0x0000080c - adds r0, r6 - movs r1, 0 - ldrsh r4, [r0, r1] - cmp r4, 0x1 - beq _0813D130 - cmp r4, 0x1 - bgt _0813D10C - cmp r4, 0 - beq _0813D116 - b _0813D190 - .align 2, 0 -_0813D104: .4byte gUnknown_203F36C -_0813D108: .4byte 0x0000080c -_0813D10C: - cmp r4, 0x2 - beq _0813D14C - cmp r4, 0x3 - beq _0813D178 - b _0813D190 -_0813D116: - bl ResetTempTileDataBuffers - ldr r1, _0813D12C @ =gUnknown_8E859D0 - str r4, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - b _0813D17E - .align 2, 0 -_0813D12C: .4byte gUnknown_8E859D0 -_0813D130: - bl FreeTempTileDataBuffersIfPossible - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0813D1B4 - ldr r0, _0813D148 @ =gUnknown_8E85C44 - ldr r1, [r5] - adds r1, 0xC - bl LZDecompressWram - b _0813D17E - .align 2, 0 -_0813D148: .4byte gUnknown_8E85C44 -_0813D14C: - ldr r0, _0813D16C @ =gUnknown_8E85BA4 - movs r1, 0 - movs r2, 0x60 - bl LoadCompressedPalette - ldr r0, _0813D170 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - cmp r0, 0 - beq _0813D17E - ldr r0, _0813D174 @ =gUnknown_8E85BF4 - movs r1, 0 - movs r2, 0x20 - bl LoadCompressedPalette - b _0813D17E - .align 2, 0 -_0813D16C: .4byte gUnknown_8E85BA4 -_0813D170: .4byte gSaveBlock2Ptr -_0813D174: .4byte gUnknown_8E85BF4 -_0813D178: - ldr r0, _0813D18C @ =gUnknown_84644A8 - bl LoadCompressedSpriteSheet -_0813D17E: - ldr r1, [r5] - adds r1, r6 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0813D1B4 - .align 2, 0 -_0813D18C: .4byte gUnknown_84644A8 -_0813D190: - ldr r0, _0813D1A8 @ =gUnknown_84644B0 - bl LoadCompressedSpritePalette - ldr r0, _0813D1AC @ =gUnknown_203F36C - ldr r0, [r0] - ldr r1, _0813D1B0 @ =0x0000080c - adds r0, r1 - movs r1, 0 - strh r1, [r0] - movs r0, 0x1 - b _0813D1B6 - .align 2, 0 -_0813D1A8: .4byte gUnknown_84644B0 -_0813D1AC: .4byte gUnknown_203F36C -_0813D1B0: .4byte 0x0000080c -_0813D1B4: - movs r0, 0 -_0813D1B6: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_813D0E4 - thumb_func_start sub_813D1C0 sub_813D1C0: @ 813D1C0 push {r4,lr} diff --git a/baserom.ips b/baserom.ips index 9a674ecd36145696268acd8c435fc215c68cff82..3de64bdf688e080da1e9428008b33f67c6d0da31 100644 GIT binary patch delta 130 zcmX@|r|RRIs)iQE7N!>F7M2#)7Pc1l7LFFq7OocV7M>Q~Eqp=inIjkjwkNLV3t(h* zbJ@Y{(|&LR9}x2cu>cSY0=rH0@)WE({t8KUzjrRyBD}X zfRWDA_84L18*kcRdj@q|Zwd*#HZ*J(%n>kwET|Av3LFBbph_@TP%W4zs1ei(>PCi! zU59r_8_Uas1O4Y``}I2}DJ>8drrw@8kasXSk?`(Zo=CvbMOd9I6FU-#D!5G2)GF7= z@(!~$<{_X}iikB*uqP7ro3Ej&elRpf>|uJXXx5aDJWtpJqp{nAB*k9dnW$IQgt}T~ z#H;#M28z6@snEUcYCd*Cu4GhAba$)R+uN(|O(xZ9HJMCJv5WQH-ADv_dm94Dx&n?Xb4{4}s2CeQVlO z+yGAoctjP>I|30N4|H(Wxh4+U#yd6E%sXL-sIJ3k?&v?+?EKqyGI;$c=+LvA#7|A} z$aSOtc6=&K4LEfJQj{c(TNNgW{aip9mawu^&&&e66?S+fSzJ>=p{pviMn?0z613pA zMm4pq5f_%;H;G$SJ3-lBB2QP)s&@K)DrqqNjLhU*bC5gY2i_GJql`oyFbZ%WU(oC* zSTq7>bP_ssyauY-<1!qpYvl#o@-bThwpe+}7^EaaDhrU6iOOgYQ8~(^1&ur0tAYwG zSl%$SCeFJ~fckts6+965hWmWqp2V?H&}@@yd>ock7ddw>n;ji(aqw(b2?gNd<79l4 zkB?@vF|wS0rZX3#!=#1to(Q9;W>ky2HITS-^`v%P#-!Hfp42oqEoj=Ltic94T`?nU z4i|9MF0;Av8Oyo+bVH2fF@fk4L6Hkbc@VH&Voub!nTO+}9?H}7_{E%7GHdHHNTsvv zMhnJ4^%V2vT6s2?<6fSFl(~}2DK~!%d$5>i5n?V_GRPgyWU?(04cQh=%dXS3Fh~6G zS}mAai%29B3?h?8BZh4G+`L-q#d{@zF7F)gEb)dl zomrU4XprcUr$4^bN8nxyi)MP7h!%1f-mgl#OY1xVON|`3?spjeB=CPLo- z1@!qOqn3@i$~XHwEOKGXD}A1E@d(eL+dlz4ah@{I^xYo9Je$79g8iZkO&Z&7l41|Z z@9U%Ho-tzX8>A*NOg%+qs>}ST#b(ctJ~Ze_?UJcHtIuOTH|!Z~4(%piwyx)y%oS;O zGI_ZbboarpVKra{HLWS@bo0>{eyv!6GL|@KF1y@1hArsMwI(m;5_ev5PkTU6&rzR1 zS&x`ulpWUxc39j_M=*&Iz1aQd=JqG??xs(hclUO!9(dj2Ub*4_EKCvi`r?xD*3gD~ zkKx#gWsM!g0G98%O73E70B2Xdv+qV-QD>r6WCBZ`P)H`p2HeWbx6x&#+o;}{6kOgdE ssmg=omWV|t!=XiNu|hl#vqv6$XQ2V_##x(eVKl)Z}EKoo^XFCaW71hx_QO1o)7z`Am^*?_GPq%!!g zHN=GiDP1Hl;KEHFz}uut;lfSQY2U!xrP)Scc_+;l>eJ=UNM6g5mXIz*4p_pRZ_Yg) zY0TJv{k06v8;5J1`13G)$Fpng@~|LlR{@$AMPT--5^&-ZQI0UelFC4{43ua58Mp{% za4>y`QVIx(Trj?GX&2a3h--_57bWni`52S7dT4o>{(stoY-!n z;9-*%3Bxj4sq6)=GX^mtz?-JBksfWx zfQW6Y%go(lfC&~H2vC4J6c30jh#*OF#2&Njd<7!Lzbe-1ONa4 M07*qoM6N<$f?dXI7ytkO literal 0 HcmV?d00001 diff --git a/graphics/berry_pouch/unk_8E859D0.png b/graphics/berry_pouch/unk_8E859D0.png new file mode 100644 index 0000000000000000000000000000000000000000..094b4ef3913dc17663f08eaae3e4f7b4256b97fc GIT binary patch literal 444 zcmV;t0YmB`2OB|>6D=@a-Bkh(^d@&Fx5*Q9F19I^OyP)6RVz5ncUe5XWBJM|wx z{`_%gz~H_pOA!YU!f7RO(U>&|r}ZF-#=IUSVrWnpduvpVo6iM6D`fyE1HF}jqcU(* zMnzEufHID|n7s7e-Qcs2$)Nu|P&L#_0n|$GG?w(*-o*$8$eU;I(sfTEB?Fn|{Sj-# zS)6l?zZ;V=&fXZ_yG4aSTBJw9lnkFjC1CiRSmQGGT%#D1F=;^M&c>j7DX&LdIjevy zRT-v6`sRK%!ZkxSO|Bu}x&f*T&^K!wtx+e%A)r+X1A0Mw47wD6_*ppjz~=&Ncx%fB zB*5F9Th0z28O##|y$O9UN z*M<#wgd@$eA^izNL)z712&lxs&cO^{MV$mR*b;|T`a8e?AmL(gq4fXQ!oavq|Bs4V mHhG`0Kv(DIM(t{pm+?0ggkxjsakw`w)FK|N91hxBn0kV)VI~A_~cL z{|QnI3MnN;U-tgQ`)9~8#C^9G*1B0GHm literal 0 HcmV?d00001 diff --git a/include/graphics.h b/include/graphics.h index d8858b36f..9d4bdf177 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -998,4 +998,12 @@ extern const u16 gCreditsAllRightsReservedGfxPal[]; extern const u8 gCreditsAllRightsReservedGfxTiles[]; extern const u8 gCreditsAllRightsReservedGfxMap[]; +// berry_pouch +extern const u8 gUnknown_8E8560C[]; +extern const u8 gUnknown_8E859D0[]; +extern const u8 gUnknown_8E85BA4[]; +extern const u8 gUnknown_8E85BF4[]; +extern const u8 gUnknown_8E85C1C[]; +extern const u8 gUnknown_8E85C44[]; + #endif //GUARD_GRAPHICS_H diff --git a/ld_script.txt b/ld_script.txt index 979cb4463..7e28cc850 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -467,6 +467,7 @@ SECTIONS { src/help_system.o(.rodata); data/wild_pokemon_area.o(.rodata); src/dynamic_placeholder_text_util.o(.rodata); + src/berry_pouch.o(.rodata); data/berry_pouch.o(.rodata); data/itemfinder.o(.rodata); src/buy_menu_helpers.o(.rodata); diff --git a/src/berry_pouch.c b/src/berry_pouch.c index c9894923c..fb69600fc 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -1,6 +1,8 @@ #include "global.h" #include "malloc.h" #include "bg.h" +#include "decompress.h" +#include "gpu_regs.h" #include "palette.h" #include "text.h" #include "berry_pouch.h" @@ -10,6 +12,7 @@ #include "scanline_effect.h" #include "item_menu_icons.h" #include "list_menu.h" +#include "graphics.h" #include "constants/items.h" struct BerryPouchStruct_203F36C @@ -20,8 +23,8 @@ struct BerryPouchStruct_203F36C u8 filler_007[2]; u8 unk_009; u8 filler_00a[2]; - u8 filler_00c[0x800]; - u16 unk_80C[4]; + u8 unk_00C[BG_SCREEN_SIZE]; + s16 unk_80C[4]; }; struct BerryPouchStruct_203F370 @@ -55,6 +58,37 @@ void sub_813DA68(u8 taskId); void sub_813E910(void); void sub_813EC08(void); +static const struct BgTemplate gUnknown_846434C[] = { + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0x000 + }, { + .bg = 1, + .charBaseIndex = 3, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0x000 + }, { + .bg = 2, + .charBaseIndex = 0, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x000 + } +}; + +extern const struct CompressedSpriteSheet gUnknown_84644A8; +extern const struct CompressedSpritePalette gUnknown_84644B0; + void InitBerryPouch(u8 a0, void (*savedCallback)(void), u8 a2) { u8 i; @@ -231,3 +265,53 @@ void sub_813D048(u8 taskId) DestroyTask(taskId); } } + +void sub_813D07C(void) +{ + ResetAllBgsCoordinatesAndBgCntRegs(); + memset(gUnknown_203F36C->unk_00C, 0, BG_SCREEN_SIZE); + ResetBgsAndClearDma3BusyFlags(FALSE); + InitBgsFromTemplates(0, gUnknown_846434C, NELEMS(gUnknown_846434C)); + SetBgTilemapBuffer(1, gUnknown_203F36C->unk_00C); + ScheduleBgCopyTilemapToVram(1); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); + ShowBg(0); + ShowBg(1); + ShowBg(2); +} + +bool8 sub_813D0E4(void) +{ + switch (gUnknown_203F36C->unk_80C[0]) + { + case 0: + ResetTempTileDataBuffers(); + DecompressAndCopyTileDataToVram(1, gUnknown_8E859D0, 0, 0, 0); + gUnknown_203F36C->unk_80C[0]++; + break; + case 1: + if (FreeTempTileDataBuffersIfPossible() != TRUE) + { + LZDecompressWram(gUnknown_8E85C44, gUnknown_203F36C->unk_00C); + gUnknown_203F36C->unk_80C[0]++; + } + break; + case 2: + LoadCompressedPalette(gUnknown_8E85BA4, 0, 0x60); + if (gSaveBlock2Ptr->playerGender != MALE) + LoadCompressedPalette(gUnknown_8E85BF4, 0, 0x20); + gUnknown_203F36C->unk_80C[0]++; + break; + case 3: + LoadCompressedSpriteSheet(&gUnknown_84644A8); + gUnknown_203F36C->unk_80C[0]++; + break; + default: + LoadCompressedSpritePalette(&gUnknown_84644B0); + gUnknown_203F36C->unk_80C[0] = 0; + return TRUE; + } + + return FALSE; +}