summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/berry_pouch.s149
-rw-r--r--baserom.ipsbin2014788 -> 2012785 bytes
-rw-r--r--data/berry_pouch.s9
-rw-r--r--data/graphics.s12
-rw-r--r--graphics/berry_pouch/unk_8E8560C.pngbin0 -> 782 bytes
-rw-r--r--graphics/berry_pouch/unk_8E859D0.pngbin0 -> 444 bytes
-rw-r--r--graphics/berry_pouch/unk_8E85BA4.pal51
-rw-r--r--graphics/berry_pouch/unk_8E85BF4.pal19
-rw-r--r--graphics/berry_pouch/unk_8E85C44.binbin0 -> 2048 bytes
-rw-r--r--include/graphics.h8
-rw-r--r--ld_script.txt1
-rw-r--r--src/berry_pouch.c88
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
index 9a674ecd3..3de64bdf6 100644
--- a/baserom.ips
+++ b/baserom.ips
Binary files differ
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
new file mode 100644
index 000000000..bb714c130
--- /dev/null
+++ b/graphics/berry_pouch/unk_8E8560C.png
Binary files differ
diff --git a/graphics/berry_pouch/unk_8E859D0.png b/graphics/berry_pouch/unk_8E859D0.png
new file mode 100644
index 000000000..094b4ef39
--- /dev/null
+++ b/graphics/berry_pouch/unk_8E859D0.png
Binary files differ
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
new file mode 100644
index 000000000..7c89a8bf0
--- /dev/null
+++ b/graphics/berry_pouch/unk_8E85C44.bin
Binary files differ
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;
+}