diff options
-rw-r--r-- | asm/berry_pouch.s | 149 | ||||
-rw-r--r-- | baserom.ips | bin | 2014788 -> 2012785 bytes | |||
-rw-r--r-- | data/berry_pouch.s | 9 | ||||
-rw-r--r-- | data/graphics.s | 12 | ||||
-rw-r--r-- | graphics/berry_pouch/unk_8E8560C.png | bin | 0 -> 782 bytes | |||
-rw-r--r-- | graphics/berry_pouch/unk_8E859D0.png | bin | 0 -> 444 bytes | |||
-rw-r--r-- | graphics/berry_pouch/unk_8E85BA4.pal | 51 | ||||
-rw-r--r-- | graphics/berry_pouch/unk_8E85BF4.pal | 19 | ||||
-rw-r--r-- | graphics/berry_pouch/unk_8E85C44.bin | bin | 0 -> 2048 bytes | |||
-rw-r--r-- | include/graphics.h | 8 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/berry_pouch.c | 88 |
12 files changed, 175 insertions, 162 deletions
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 Binary files differindex 9a674ecd3..3de64bdf6 100644 --- a/baserom.ips +++ b/baserom.ips diff --git a/data/berry_pouch.s b/data/berry_pouch.s index 172443b5e..ac62b258b 100644 --- a/data/berry_pouch.s +++ b/data/berry_pouch.s @@ -1,9 +1,8 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" .section .rodata .align 2 -gUnknown_846434C:: @ 846434C - .incbin "baserom.gba", 0x46434C, 0xC - gUnknown_8464358:: @ 8464358 .incbin "baserom.gba", 0x464358, 0x14 @@ -50,10 +49,10 @@ gUnknown_8464448:: @ 8464448 .incbin "baserom.gba", 0x464448, 0x60 gUnknown_84644A8:: @ 84644A8 - .incbin "baserom.gba", 0x4644A8, 0x8 + obj_tiles gUnknown_8E8560C, 0x800, 100 gUnknown_84644B0:: @ 84644B0 - .incbin "baserom.gba", 0x4644B0, 0x8 + obj_pal gUnknown_8E85C1C, 100 gUnknown_84644B8:: @ 84644B8 .incbin "baserom.gba", 0x4644B8, 0x32C diff --git a/data/graphics.s b/data/graphics.s index 96ef720e9..a7f262aca 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -13989,22 +13989,22 @@ gItemPcTilemap:: @ 8E85458 .incbin "graphics/item_pc/unk_8E85458.bin.lz" gUnknown_8E8560C:: @ 8E8560C - .incbin "baserom.gba", 0xE8560C, 0x3C4 + .incbin "graphics/berry_pouch/unk_8E8560C.4bpp.lz" gUnknown_8E859D0:: @ 8E859D0 - .incbin "baserom.gba", 0xE859D0, 0x1D4 + .incbin "graphics/berry_pouch/unk_8E859D0.4bpp.lz" gUnknown_8E85BA4:: @ 8E85BA4 - .incbin "baserom.gba", 0xE85BA4, 0x50 + .incbin "graphics/berry_pouch/unk_8E85BA4.gbapal.lz" gUnknown_8E85BF4:: @ 8E85BF4 - .incbin "baserom.gba", 0xE85BF4, 0x28 + .incbin "graphics/berry_pouch/unk_8E85BF4.gbapal.lz" gUnknown_8E85C1C:: @ 8E85C1C - .incbin "baserom.gba", 0xE85C1C, 0x28 + .incbin "graphics/berry_pouch/unk_8E85C1C.gbapal.lz" gUnknown_8E85C44:: @ 8E85C44 - .incbin "baserom.gba", 0xE85C44, 0x184 + .incbin "graphics/berry_pouch/unk_8E85C44.bin.lz" gUnknown_8E85DC8:: @ 8E85DC8 .incbin "baserom.gba", 0xE85DC8, 0x134 diff --git a/graphics/berry_pouch/unk_8E8560C.png b/graphics/berry_pouch/unk_8E8560C.png Binary files differnew file mode 100644 index 000000000..bb714c130 --- /dev/null +++ b/graphics/berry_pouch/unk_8E8560C.png diff --git a/graphics/berry_pouch/unk_8E859D0.png b/graphics/berry_pouch/unk_8E859D0.png Binary files differnew file mode 100644 index 000000000..094b4ef39 --- /dev/null +++ b/graphics/berry_pouch/unk_8E859D0.png diff --git a/graphics/berry_pouch/unk_8E85BA4.pal b/graphics/berry_pouch/unk_8E85BA4.pal new file mode 100644 index 000000000..3398ff143 --- /dev/null +++ b/graphics/berry_pouch/unk_8E85BA4.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +0 65 90 +255 0 255 +41 57 82 +65 180 164 +255 0 255 +255 0 255 +106 205 197 +164 205 238 +189 238 255 +255 255 205 +180 189 180 +148 148 148 +238 230 172 +106 106 106 +106 156 238 +0 90 131 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +189 213 213 +238 255 255 +222 246 255 +255 255 255 +164 222 255 +16 172 222 +0 82 115 +0 115 139 +0 123 197 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +189 213 213 +238 255 255 +222 246 255 +255 255 255 +164 222 255 +24 82 180 +0 90 131 +24 82 180 +24 82 180 diff --git a/graphics/berry_pouch/unk_8E85BF4.pal b/graphics/berry_pouch/unk_8E85BF4.pal new file mode 100644 index 000000000..e7bd18cbf --- /dev/null +++ b/graphics/berry_pouch/unk_8E85BF4.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 65 90 +255 0 255 +41 57 82 +213 139 115 +255 0 255 +255 0 255 +255 172 148 +164 205 238 +189 238 255 +255 255 205 +180 189 180 +148 148 148 +238 230 172 +106 106 106 +106 156 238 +0 90 131 diff --git a/graphics/berry_pouch/unk_8E85C44.bin b/graphics/berry_pouch/unk_8E85C44.bin Binary files differnew file mode 100644 index 000000000..7c89a8bf0 --- /dev/null +++ b/graphics/berry_pouch/unk_8E85C44.bin 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; +} |