summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémi Calixte <remicalixte.rmc@gmail.com>2021-06-19 14:43:38 +0200
committerRémi Calixte <remicalixte.rmc@gmail.com>2021-06-19 14:43:38 +0200
commit846cfdb616e03006a08cb58e208751f6701ef3cb (patch)
tree088de912738a1e8dcfc80ee894a02583e4de69aa
parenta252c28863e078fd8ea65f4ad228308585de92c5 (diff)
parent54b6645c02958cff375393a5261d5376dd169b94 (diff)
Merge branch 'master' of github.com:pret/pokediamond into unk_020023C0
-rw-r--r--arm9/arm9.lsf2
-rw-r--r--arm9/asm/unk_02035068.s4
-rw-r--r--arm9/asm/unk_0206E2F0.s375
-rw-r--r--arm9/asm/unk_02088AAC.s4
-rw-r--r--arm9/global.inc6
-rw-r--r--arm9/src/bag.c25
-rw-r--r--arm9/src/bag_view.c211
-rw-r--r--include/bag.h8
-rw-r--r--include/bag_view.h56
9 files changed, 287 insertions, 404 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 6241fe43..19c29a3c 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -264,7 +264,7 @@ Static arm9
Object unk_0206C700.o
Object unk_0206DE24.o
Object unk_0206E0F0.o
- Object unk_0206E2F0.o
+ Object bag_view.o
##itemtool##
Object itemtool.o
diff --git a/arm9/asm/unk_02035068.s b/arm9/asm/unk_02035068.s
index 5f456651..f2ef44dc 100644
--- a/arm9/asm/unk_02035068.s
+++ b/arm9/asm/unk_02035068.s
@@ -2326,9 +2326,9 @@ FUN_020362E4: ; 0x020362E4
bl FUN_0204652C
add r4, r0, #0x0
mov r0, #0xb
- bl BagView_new
+ bl BagView_New
str r0, [sp, #0x8]
- bl FUN_0206E308
+ bl BagView_sizeof
mov r1, #0x7e
lsl r1, r1, #0x2
add r2, r0, #0x0
diff --git a/arm9/asm/unk_0206E2F0.s b/arm9/asm/unk_0206E2F0.s
deleted file mode 100644
index d7460439..00000000
--- a/arm9/asm/unk_0206E2F0.s
+++ /dev/null
@@ -1,375 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start BagView_new
-BagView_new: ; 0x0206E2F0
- push {r4, lr}
- mov r1, #0x78
- bl AllocFromHeap
- mov r1, #0x0
- mov r2, #0x78
- add r4, r0, #0x0
- bl memset
- add r0, r4, #0x0
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0206E308
-FUN_0206E308: ; 0x0206E308
- mov r0, #0x78
- bx lr
-
- thumb_func_start FUN_0206E30C
-FUN_0206E30C: ; 0x0206E30C
- add r0, #0x65
- strb r1, [r0, #0x0]
- bx lr
- .balign 4
-
- thumb_func_start FUN_0206E314
-FUN_0206E314: ; 0x0206E314
- push {r4-r6, lr}
- add r4, r1, #0x0
- add r1, r2, #0x0
- add r5, r0, #0x0
- add r6, r3, #0x0
- bl FUN_0206E30C
- str r4, [r5, #0x0]
- str r6, [r5, #0x6c]
- mov r0, #0x0
- add r5, #0x66
- strh r0, [r5, #0x0]
- pop {r4-r6, pc}
- .balign 4
-
- thumb_func_start BagView_setitem
-BagView_setitem: ; 0x0206E330
- push {r3-r4}
- mov r4, #0xc
- mul r4, r3
- add r0, r0, r4
- str r1, [r0, #0x4]
- strb r2, [r0, #0xc]
- pop {r3-r4}
- bx lr
-
- thumb_func_start FUN_0206E340
-FUN_0206E340: ; 0x0206E340
- add r1, r0, #0x0
- add r1, #0x76
- ldrh r2, [r1, #0x0]
- mov r1, #0x1
- add r0, #0x76
- bic r2, r1
- mov r1, #0x1
- orr r1, r2
- strh r1, [r0, #0x0]
- bx lr
-
- thumb_func_start FUN_0206E354
-FUN_0206E354: ; 0x0206E354
- str r1, [r0, #0x70]
- bx lr
-
- thumb_func_start FUN_0206E358
-FUN_0206E358: ; 0x0206E358
- add r0, #0x74
- strb r1, [r0, #0x0]
- bx lr
- .balign 4
-
- thumb_func_start FUN_0206E360
-FUN_0206E360: ; 0x0206E360
- add r2, r0, #0x0
- add r2, #0x76
- ldrh r3, [r2, #0x0]
- ldr r2, _0206E378 ; =0xFFFF0001
- lsl r1, r1, #0x11
- and r2, r3
- lsr r1, r1, #0x10
- orr r1, r2
- add r0, #0x76
- strh r1, [r0, #0x0]
- bx lr
- nop
-_0206E378: .word 0xFFFF0001
-
- thumb_func_start FUN_0206E37C
-FUN_0206E37C: ; 0x0206E37C
- add r0, #0x66
- ldrh r0, [r0, #0x0]
- bx lr
- .balign 4
-
- thumb_func_start FUN_0206E384
-FUN_0206E384: ; 0x0206E384
- add r0, #0x68
- ldrh r0, [r0, #0x0]
- bx lr
- .balign 4
-
- thumb_func_start FUN_0206E38C
-FUN_0206E38C: ; 0x0206E38C
- add r0, #0x74
- ldrb r0, [r0, #0x0]
- bx lr
- .balign 4
-
- thumb_func_start FUN_0206E394
-FUN_0206E394: ; 0x0206E394
- add r0, #0x75
- ldrb r0, [r0, #0x0]
- bx lr
- .balign 4
-
- thumb_func_start FUN_0206E39C
-FUN_0206E39C: ; 0x0206E39C
- push {r3, lr}
- bl Sav2_PlayerData_GetCoinsAddr
- bl CheckCoins
- pop {r3, pc}
-
- thumb_func_start FUN_0206E3A8
-FUN_0206E3A8: ; 0x0206E3A8
- push {r4-r6, lr}
- bl Sav2_SealCase_get
- add r6, r0, #0x0
- mov r5, #0x0
- mov r4, #0x1
-_0206E3B4:
- add r0, r6, #0x0
- add r1, r4, #0x0
- bl FUN_02029E2C
- add r4, r4, #0x1
- add r5, r5, r0
- cmp r4, #0x50
- bls _0206E3B4
- add r0, r5, #0x0
- pop {r4-r6, pc}
-
- thumb_func_start FUN_0206E3C8
-FUN_0206E3C8: ; 0x0206E3C8
- push {r3, lr}
- bl FUN_02027E24
- bl FUN_0202708C
- bl FUN_02027168
- pop {r3, pc}
-
- thumb_func_start FUN_0206E3D8
-FUN_0206E3D8: ; 0x0206E3D8
- push {r3, lr}
- bl FUN_02027E24
- bl FUN_0202708C
- bl FUN_02027184
- pop {r3, pc}
-
- thumb_func_start FUN_0206E3E8
-FUN_0206E3E8: ; 0x0206E3E8
- push {r3, lr}
- bl FUN_0202A8D8
- mov r1, #0x0
- add r2, r1, #0x0
- bl FUN_0202A3B4
- pop {r3, pc}
-
- thumb_func_start FUN_0206E3F8
-FUN_0206E3F8: ; 0x0206E3F8
- push {r4-r7, lr}
- sub sp, #0xc
- add r7, r0, #0x0
- str r1, [sp, #0x8]
- add r5, r2, #0x0
- add r4, r3, #0x0
- mov r0, #0x0
- mov r1, #0x1a
- mov r2, #0x7
- bl NewMsgDataFromNarc
- add r6, r0, #0x0
- add r0, r4, #0x0
- bl ScrStrBufs_new
- add r4, r0, #0x0
- cmp r5, #0x0
- bne _0206E428
- add r0, r6, #0x0
- mov r1, #0x63
- bl NewString_ReadMsgData
- add r5, r0, #0x0
- b _0206E4FA
-_0206E428:
- mov r1, #0x1b
- lsl r1, r1, #0x4 ; ITEM_POINT_CARD
- cmp r5, r1
- bne _0206E454
- add r0, r6, #0x0
- mov r1, #0x61
- bl NewString_ReadMsgData
- add r5, r0, #0x0
- add r0, r7, #0x0
- bl FUN_0206E3E8
- mov r1, #0x0
- add r2, r0, #0x0
- str r1, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- mov r3, #0x4
- bl BufferIntegerAsString
- b _0206E4FA
-_0206E454:
- add r2, r1, #0x2 ; ITEM_SEAL_CASE
- cmp r5, r2
- bne _0206E47E
- add r0, r6, #0x0
- mov r1, #0x5c
- bl NewString_ReadMsgData
- add r5, r0, #0x0
- add r0, r7, #0x0
- bl FUN_0206E3A8
- mov r1, #0x0
- add r2, r0, #0x0
- str r1, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- mov r3, #0x4
- bl BufferIntegerAsString
- b _0206E4FA
-_0206E47E:
- add r2, r1, #0x3 ; ITEM_FASHION_CASE
- cmp r5, r2
- bne _0206E4C0
- add r0, r6, #0x0
- mov r1, #0x5d
- bl NewString_ReadMsgData
- add r5, r0, #0x0
- add r0, r7, #0x0
- bl FUN_0206E3C8
- mov r1, #0x0
- add r2, r0, #0x0
- str r1, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- mov r3, #0x3
- bl BufferIntegerAsString
- add r0, r7, #0x0
- bl FUN_0206E3D8
- add r2, r0, #0x0
- mov r0, #0x0
- str r0, [sp, #0x0]
- mov r1, #0x1
- add r0, r4, #0x0
- mov r3, #0x2
- str r1, [sp, #0x4]
- bl BufferIntegerAsString
- b _0206E4FA
-_0206E4C0:
- add r1, #0xc ; ITEM_COIN_CASE
- cmp r5, r1
- bne _0206E4EA
- add r0, r6, #0x0
- mov r1, #0x39
- bl NewString_ReadMsgData
- add r5, r0, #0x0
- add r0, r7, #0x0
- bl FUN_0206E39C
- mov r1, #0x0
- add r2, r0, #0x0
- str r1, [sp, #0x0]
- mov r0, #0x1
- str r0, [sp, #0x4]
- add r0, r4, #0x0
- mov r3, #0x5
- bl BufferIntegerAsString
- b _0206E4FA
-_0206E4EA:
- bl ScrStrBufs_delete
- add r0, r6, #0x0
- bl DestroyMsgData
- add sp, #0xc
- mov r0, #0x0
- pop {r4-r7, pc}
-_0206E4FA:
- ldr r1, [sp, #0x8]
- add r0, r4, #0x0
- add r2, r5, #0x0
- bl StringExpandPlaceholders
- add r0, r5, #0x0
- bl String_dtor
- add r0, r4, #0x0
- bl ScrStrBufs_delete
- add r0, r6, #0x0
- bl DestroyMsgData
- mov r0, #0x1
- add sp, #0xc
- pop {r4-r7, pc}
-
- thumb_func_start FUN_0206E51C
-FUN_0206E51C: ; 0x0206E51C
- push {r3-r7, lr}
- add r5, r1, #0x0
- str r0, [sp, #0x0]
- ldr r4, [sp, #0x18]
- cmp r3, #0x1
- beq _0206E52E
- cmp r3, #0x2
- beq _0206E54C
- b _0206E56A
-_0206E52E:
- mov r0, #0x1
- mov r1, #0x1a
- mov r2, #0x7
- add r3, r4, #0x0
- bl NewMsgDataFromNarc
- add r4, r0, #0x0
- mov r1, #0x38
- add r2, r5, #0x0
- bl ReadMsgDataIntoString
- add r0, r4, #0x0
- bl DestroyMsgData
- pop {r3-r7, pc}
-_0206E54C:
- mov r0, #0x1
- mov r1, #0x1a
- mov r2, #0x7
- add r3, r4, #0x0
- bl NewMsgDataFromNarc
- add r4, r0, #0x0
- mov r1, #0x6f
- add r2, r5, #0x0
- bl ReadMsgDataIntoString
- add r0, r4, #0x0
- bl DestroyMsgData
- pop {r3-r7, pc}
-_0206E56A:
- mov r0, #0x1
- mov r1, #0x1a
- mov r2, #0xc7
- add r3, r4, #0x0
- bl NewMsgDataFromNarc
- add r7, r0, #0x0
- add r0, r4, #0x0
- bl ScrStrBufs_new
- add r4, r0, #0x0
- add r0, r7, #0x0
- mov r1, #0x24
- bl NewString_ReadMsgData
- add r6, r0, #0x0
- ldr r2, [sp, #0x0]
- add r0, r4, #0x0
- mov r1, #0x0
- bl BufferPlayersName
- add r0, r4, #0x0
- add r1, r5, #0x0
- add r2, r6, #0x0
- bl StringExpandPlaceholders
- add r0, r6, #0x0
- bl String_dtor
- add r0, r4, #0x0
- bl ScrStrBufs_delete
- add r0, r7, #0x0
- bl DestroyMsgData
- pop {r3-r7, pc}
- .balign 4
diff --git a/arm9/asm/unk_02088AAC.s b/arm9/asm/unk_02088AAC.s
index 1d8fe8cc..92ea42bc 100644
--- a/arm9/asm/unk_02088AAC.s
+++ b/arm9/asm/unk_02088AAC.s
@@ -177,9 +177,9 @@ _02088BBA:
ldr r0, [r4, #0x0]
lsl r0, r0, #0x18
lsr r0, r0, #0x18
- bl BagView_new
+ bl BagView_New
add r5, r0, #0x0
- bl FUN_0206E308
+ bl BagView_sizeof
add r2, r0, #0x0
ldr r1, [r4, #0x18]
add r0, r5, #0x0
diff --git a/arm9/global.inc b/arm9/global.inc
index 72bdc677..144d5c43 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -4971,10 +4971,10 @@
.extern FUN_0206E2AC
.extern FUN_0206E2E0
.extern FUN_0206E2E8
-.extern BagView_new
-.extern FUN_0206E308
+.extern BagView_New
+.extern BagView_sizeof
.extern FUN_0206E314
-.extern BagView_setitem
+.extern BagView_SetItem
.extern FUN_0206E340
.extern FUN_0206E354
.extern FUN_0206E358
diff --git a/arm9/src/bag.c b/arm9/src/bag.c
index 57609a8f..506f3ec1 100644
--- a/arm9/src/bag.c
+++ b/arm9/src/bag.c
@@ -296,40 +296,37 @@ void SortPocket(struct ItemSlot * slots, u32 count)
}
}
-extern struct BagView * BagView_new(u8 heap_id);
-extern void BagView_setitem(struct BagView * view, struct ItemSlot * slot, u8 pocket, u8 idx);
-
struct BagView * CreateBagView(struct Bag * bag, const u8 * pockets, u32 heap_id)
{
- struct BagView * view = BagView_new((u8)heap_id);
- int i;
- for (i = 0; pockets[i] != 0xFF; i++)
+ struct BagView * view = BagView_New((u8)heap_id);
+
+ for (u32 i = 0; pockets[i] != 0xFF; i++)
{
switch (pockets[i])
{
case POCKET_KEY_ITEMS:
- BagView_setitem(view, bag->keyItems, POCKET_KEY_ITEMS, (u8)i);
+ BagView_SetItem(view, bag->keyItems, POCKET_KEY_ITEMS, (u8)i);
break;
case POCKET_ITEMS:
- BagView_setitem(view, bag->items, POCKET_ITEMS, (u8)i);
+ BagView_SetItem(view, bag->items, POCKET_ITEMS, (u8)i);
break;
case POCKET_BERRIES:
- BagView_setitem(view, bag->berries, POCKET_BERRIES, (u8)i);
+ BagView_SetItem(view, bag->berries, POCKET_BERRIES, (u8)i);
break;
case POCKET_MEDICINE:
- BagView_setitem(view, bag->medicine, POCKET_MEDICINE, (u8)i);
+ BagView_SetItem(view, bag->medicine, POCKET_MEDICINE, (u8)i);
break;
case POCKET_BALLS:
- BagView_setitem(view, bag->balls, POCKET_BALLS, (u8)i);
+ BagView_SetItem(view, bag->balls, POCKET_BALLS, (u8)i);
break;
case POCKET_BATTLE_ITEMS:
- BagView_setitem(view, bag->battleItems, POCKET_BATTLE_ITEMS, (u8)i);
+ BagView_SetItem(view, bag->battleItems, POCKET_BATTLE_ITEMS, (u8)i);
break;
case POCKET_MAIL:
- BagView_setitem(view, bag->mail, POCKET_MAIL, (u8)i);
+ BagView_SetItem(view, bag->mail, POCKET_MAIL, (u8)i);
break;
case POCKET_TMHMS:
- BagView_setitem(view, bag->TMsHMs, POCKET_TMHMS, (u8)i);
+ BagView_SetItem(view, bag->TMsHMs, POCKET_TMHMS, (u8)i);
break;
}
}
diff --git a/arm9/src/bag_view.c b/arm9/src/bag_view.c
new file mode 100644
index 00000000..91bbafd2
--- /dev/null
+++ b/arm9/src/bag_view.c
@@ -0,0 +1,211 @@
+#include "global.h"
+#include "bag_view.h"
+#include "coins.h"
+#include "constants/items.h"
+#include "heap.h"
+#include "msgdata.h"
+#include "player_data.h"
+#include "script_buffers.h"
+#include "seal.h"
+
+extern u32 *FUN_0202708C(u32 *);
+extern u32 FUN_02027168(u32 *);
+extern u16 FUN_02027184(u32 *);
+extern u32 *FUN_02027E24(struct SaveBlock2 *sav2);
+extern u8 FUN_02029E2C(struct SealCase *, u32);
+extern u32 FUN_0202A8D8(struct SaveBlock2 *);
+extern u16 FUN_0202A3B4(u32, u32, u32);
+
+THUMB_FUNC struct BagView *BagView_New(u8 heap_id)
+{
+ struct BagView *ptr = AllocFromHeap(heap_id, sizeof(struct BagView));
+
+ memset(ptr, 0, sizeof(struct BagView));
+
+ return ptr;
+}
+
+THUMB_FUNC u32 BagView_sizeof()
+{
+ return sizeof(struct BagView);
+}
+
+THUMB_FUNC void FUN_0206E30C(struct BagView *bag_view, u8 r1)
+{
+ bag_view->unk65 = r1;
+}
+
+THUMB_FUNC void FUN_0206E314(
+ struct BagView *bag_view, struct SaveBlock2 *sav2, u8 r2, struct UnkStruct_0206F164 *r3)
+{
+ FUN_0206E30C(bag_view, r2);
+
+ bag_view->sav2 = sav2;
+ bag_view->unk6C = r3;
+ bag_view->unk66 = 0;
+}
+
+THUMB_FUNC void BagView_SetItem(struct BagView *bag_view, struct ItemSlot *slot, u8 pocket, u8 idx)
+{
+ bag_view->slots[idx].slot = slot;
+ bag_view->slots[idx].pocket = pocket;
+}
+
+THUMB_FUNC void FUN_0206E340(struct BagView *bag_view)
+{
+ bag_view->unk76 = 1;
+}
+
+THUMB_FUNC void FUN_0206E354(struct BagView *bag_view, u32 r1)
+{
+ bag_view->unk70 = r1;
+}
+
+THUMB_FUNC void FUN_0206E358(struct BagView *bag_view, u8 r1)
+{
+ bag_view->unk74 = r1;
+}
+
+THUMB_FUNC void FUN_0206E360(struct BagView *bag_view, u16 r1)
+{
+ bag_view->unk76_2 = r1;
+}
+
+THUMB_FUNC u16 FUN_0206E37C(struct BagView *bag_view)
+{
+ return bag_view->unk66;
+}
+
+THUMB_FUNC u16 FUN_0206E384(struct BagView *bag_view)
+{
+ return bag_view->unk68;
+}
+
+THUMB_FUNC u8 FUN_0206E38C(struct BagView *bag_view)
+{
+ return bag_view->unk74;
+}
+
+THUMB_FUNC u8 FUN_0206E394(struct BagView *bag_view)
+{
+ return bag_view->unk75;
+}
+
+THUMB_FUNC u32 FUN_0206E39C(struct SaveBlock2 *sav2)
+{
+ return (u32)CheckCoins(Sav2_PlayerData_GetCoinsAddr(sav2));
+}
+
+THUMB_FUNC u32 FUN_0206E3A8(struct SaveBlock2 *sav2)
+{
+ struct SealCase *seal_case = Sav2_SealCase_get(sav2);
+ u32 i;
+ u32 count = 0;
+
+ for (i = 1; i <= 0x50; ++i)
+ {
+ count += FUN_02029E2C(seal_case, i);
+ }
+
+ return count;
+}
+
+THUMB_FUNC u32 FUN_0206E3C8(struct SaveBlock2 *sav2)
+{
+ return FUN_02027168(FUN_0202708C(FUN_02027E24(sav2)));
+}
+
+THUMB_FUNC u32 FUN_0206E3D8(struct SaveBlock2 *sav2)
+{
+ return FUN_02027184(FUN_0202708C(FUN_02027E24(sav2)));
+}
+
+THUMB_FUNC u32 FUN_0206E3E8(struct SaveBlock2 *sav2)
+{
+ return FUN_0202A3B4(FUN_0202A8D8(sav2), 0, 0);
+}
+
+THUMB_FUNC BOOL FUN_0206E3F8(struct SaveBlock2 *sav2, struct String *dest, u32 item_id, u32 heap_id)
+{
+ struct MsgData *msgData = NewMsgDataFromNarc(0, NARC_MSGDATA_MSG, 7, heap_id);
+ struct ScrStrBufs *scrStrBufs = ScrStrBufs_new(heap_id);
+ struct String *string;
+
+ if (item_id == ITEM_NONE)
+ {
+ string = NewString_ReadMsgData(msgData, 0x63);
+ }
+ else if (item_id == ITEM_POINT_CARD)
+ {
+ string = NewString_ReadMsgData(msgData, 0x61);
+
+ BufferIntegerAsString(scrStrBufs, 0, FUN_0206E3E8(sav2), 4, 0, TRUE);
+ }
+ else if (item_id == ITEM_SEAL_CASE)
+ {
+ string = NewString_ReadMsgData(msgData, 0x5C);
+
+ BufferIntegerAsString(scrStrBufs, 0, FUN_0206E3A8(sav2), 4, 0, TRUE);
+ }
+ else if (item_id == ITEM_FASHION_CASE)
+ {
+ string = NewString_ReadMsgData(msgData, 0x5D);
+
+ BufferIntegerAsString(scrStrBufs, 0, FUN_0206E3C8(sav2), 3, 0, TRUE);
+ BufferIntegerAsString(scrStrBufs, 1, FUN_0206E3D8(sav2), 2, 0, TRUE);
+ }
+ else if (item_id == ITEM_COIN_CASE)
+ {
+ string = NewString_ReadMsgData(msgData, 0x39);
+
+ BufferIntegerAsString(scrStrBufs, 0, FUN_0206E39C(sav2), 5, 0, TRUE);
+ }
+ else
+ {
+ ScrStrBufs_delete(scrStrBufs);
+ DestroyMsgData(msgData);
+
+ return FALSE;
+ }
+
+ StringExpandPlaceholders(scrStrBufs, dest, string);
+ String_dtor(string);
+ ScrStrBufs_delete(scrStrBufs);
+ DestroyMsgData(msgData);
+
+ return TRUE;
+}
+
+THUMB_FUNC void FUN_0206E51C(
+ struct PlayerData *playerData, struct String *dest, u32 r2, u32 r3, u32 heap_id)
+{
+#pragma unused(r2)
+ struct MsgData *msgData;
+
+ switch (r3)
+ {
+ case 1:
+ msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 7, heap_id);
+
+ ReadMsgDataIntoString(msgData, 0x38, dest);
+ DestroyMsgData(msgData);
+ return;
+ case 2:
+ msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 7, heap_id);
+
+ ReadMsgDataIntoString(msgData, 0x6F, dest);
+ DestroyMsgData(msgData);
+ return;
+ default:
+ msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 0xC7, heap_id);
+ struct ScrStrBufs *scrStrBufs = ScrStrBufs_new(heap_id);
+ struct String *src = NewString_ReadMsgData(msgData, 0x24);
+
+ BufferPlayersName(scrStrBufs, 0, playerData);
+ StringExpandPlaceholders(scrStrBufs, dest, src);
+ String_dtor(src);
+ ScrStrBufs_delete(scrStrBufs);
+ DestroyMsgData(msgData);
+ return;
+ }
+}
diff --git a/include/bag.h b/include/bag.h
index 14735443..a785afc6 100644
--- a/include/bag.h
+++ b/include/bag.h
@@ -1,6 +1,7 @@
#ifndef POKEDIAMOND_BAG_H
#define POKEDIAMOND_BAG_H
+#include "bag_view.h"
#include "itemtool.h"
#include "save_block_2.h"
@@ -17,13 +18,6 @@ struct Bag
u32 registeredItem;
};
-struct BagView
-{
- struct ItemSlot * slots;
- u32 count;
- u8 pocket;
-};
-
struct UnkStruct_0206F164
{
u8 unk_00[8];
diff --git a/include/bag_view.h b/include/bag_view.h
new file mode 100644
index 00000000..423d2677
--- /dev/null
+++ b/include/bag_view.h
@@ -0,0 +1,56 @@
+#ifndef POKEDIAMOND_BAG_VIEW_H
+#define POKEDIAMOND_BAG_VIEW_H
+
+#include "player_data.h"
+#include "save_block_2.h"
+
+struct UnkStruct_0206F164;
+
+struct BagView_UnkSub
+{
+ struct ItemSlot *slot;
+ u8 padding[0x4];
+ u8 pocket;
+ u8 padding2[0x3];
+}; // total size = 0xC
+
+struct BagView
+{
+ struct SaveBlock2 *sav2;
+ struct BagView_UnkSub slots[8];
+ u8 padding;
+ u8 unk65;
+ u16 unk66;
+ u16 unk68;
+ u8 padding2[0x2];
+ struct UnkStruct_0206F164 *unk6C;
+ u32 unk70;
+ u8 unk74;
+ u8 unk75;
+ u16 unk76 : 1;
+ u16 unk76_2 : 15;
+}; // total size = 0x78
+
+struct BagView *BagView_New(u8 heap_id);
+u32 BagView_sizeof();
+void FUN_0206E30C(struct BagView *bag_view, u8 r1);
+void FUN_0206E314(
+ struct BagView *bag_view, struct SaveBlock2 *sav2, u8 r2, struct UnkStruct_0206F164 *r3);
+void BagView_SetItem(struct BagView *bag_view, struct ItemSlot *slot, u8 pocket, u8 idx);
+void FUN_0206E340(struct BagView *bag_view);
+void FUN_0206E354(struct BagView *bag_view, u32 r1);
+void FUN_0206E358(struct BagView *bag_view, u8 r1);
+void FUN_0206E360(struct BagView *bag_view, u16 r1);
+u16 FUN_0206E37C(struct BagView *bag_view);
+u16 FUN_0206E384(struct BagView *bag_view);
+u8 FUN_0206E38C(struct BagView *bag_view);
+u8 FUN_0206E394(struct BagView *bag_view);
+u32 FUN_0206E39C(struct SaveBlock2 *sav2);
+u32 FUN_0206E3A8(struct SaveBlock2 *sav2);
+u32 FUN_0206E3C8(struct SaveBlock2 *sav2);
+u32 FUN_0206E3D8(struct SaveBlock2 *sav2);
+u32 FUN_0206E3E8(struct SaveBlock2 *sav2);
+BOOL FUN_0206E3F8(struct SaveBlock2 *sav2, struct String *dest, u32 item_id, u32 heap_id);
+void FUN_0206E51C(struct PlayerData *playerData, struct String *dest, u32 r2, u32 r3, u32 heap_id);
+
+#endif // POKEDIAMOND_BAG_VIEW_H