summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/adventure_log.c4
-rw-r--r--src/code_801AFA4.c15
-rw-r--r--src/code_801B3C0.c14
-rw-r--r--src/code_801C620.c15
-rw-r--r--src/code_801D760.c6
-rw-r--r--src/code_8057824.c6
-rw-r--r--src/code_80958E8.c6
-rw-r--r--src/debug_menu_mid.c16
-rw-r--r--src/felicity_bank_1.c18
-rw-r--r--src/friend_area_action_menu.c6
-rw-r--r--src/friend_area_action_menu_1.c22
-rw-r--r--src/friend_rescue.c2
-rw-r--r--src/friend_rescue_1.c6
-rw-r--r--src/items.c116
-rw-r--r--src/items_1.c413
-rw-r--r--src/kangaskhan_storage_2.c24
-rw-r--r--src/kecleon_items_1.c32
-rw-r--r--src/other_menus.c6
-rw-r--r--src/save.c6
-rw-r--r--src/trade_items_menu.c18
-rw-r--r--src/wonder_mail.c12
21 files changed, 584 insertions, 179 deletions
diff --git a/src/adventure_log.c b/src/adventure_log.c
index 41419f6..cb20682 100644
--- a/src/adventure_log.c
+++ b/src/adventure_log.c
@@ -248,7 +248,7 @@ void DisplayAdventureLog(void)
default:
break;
}
- sub_8014FF0(8, sub_8013800(gAdventureLog, counter), GetAdventureLogLine(uVar6), gAdventureLog->unk34, 0);
+ xxx_format_and_draw(8, sub_8013800(gAdventureLog, counter), GetAdventureLogLine(uVar6), gAdventureLog->unk34, 0);
}
else
{
@@ -389,7 +389,7 @@ void DisplayAdventureLog(void)
"\tstr r0, [sp]\n"
"\tmovs r0, 0x8\n"
"\tadds r1, r5, 0\n"
- "\tbl sub_8014FF0\n"
+ "\tbl xxx_format_and_draw\n"
"\tb _08032234\n"
"\t.align 2, 0\n"
"_08032214: .4byte gUnknown_202DE30\n"
diff --git a/src/code_801AFA4.c b/src/code_801AFA4.c
index 4ad68a8..c9d71dd 100644
--- a/src/code_801AFA4.c
+++ b/src/code_801AFA4.c
@@ -2,11 +2,10 @@
#include "memory.h"
#include "text.h"
#include "item.h"
-#include "gUnknown_203B460.h"
+#include "team_inventory.h"
-extern struct unkStruct_203B460 *gUnknown_203B460;
+extern struct TeamInventory *gTeamInventory_203B460;
-extern u16 GetItemMove(u8);
extern void sub_8092C84(u8 *, u16);
extern void sub_8099690(u32);
extern u32 sub_801B2F4(void);
@@ -25,7 +24,7 @@ extern u32 gUnknown_80DBA0C;
extern u8 gUnknown_202E1C8[0x50];
-extern bool8 sub_80915A0(u8);
+extern bool8 IsHMItem(u8);
extern void DisplayGulpinDialogueSprite(u32, u32, u32 *);
extern void sub_801B178(void);
extern void sub_8094060(u32 *, u32 *);
@@ -60,7 +59,7 @@ u32 sub_801AFA4(u32 r0)
{
gUnknown_203B22C = MemoryAlloc(0xA4, 8);
gUnknown_203B22C->unk4 = r0;
- gUnknown_203B22C->unk8 = gUnknown_203B460->fill0[r0].itemIndex;
+ gUnknown_203B22C->unk8 = gTeamInventory_203B460->teamItems[r0].itemIndex;
gUnknown_203B22C->unkA = GetItemMove(gUnknown_203B22C->unk8);
sub_8092C84(gUnknown_202E1C8, gUnknown_203B22C->unkA);
sub_8099690(0);
@@ -130,10 +129,10 @@ void sub_801B080(void)
break;
case 2:
sub_8094060(&gUnknown_203B22C->unkC, &gUnknown_203B22C->unk5C->unk2C);
- if(!sub_80915A0(gUnknown_203B22C->unk8))
+ if(!IsHMItem(gUnknown_203B22C->unk8))
{
- gUnknown_203B460->fill0[gUnknown_203B22C->unk4].numItems = gUnknown_203B22C->unk8 - 0x7D;
- gUnknown_203B460->fill0[gUnknown_203B22C->unk4].itemIndex = 0x7C;
+ gTeamInventory_203B460->teamItems[gUnknown_203B22C->unk4].numItems = gUnknown_203B22C->unk8 - 0x7D;
+ gTeamInventory_203B460->teamItems[gUnknown_203B22C->unk4].itemIndex = ITEM_ID_USED_TM;
}
PlaySound(0x9C << 1);
// #+CM$m8#R learned
diff --git a/src/code_801B3C0.c b/src/code_801B3C0.c
index da993d5..502ce60 100644
--- a/src/code_801B3C0.c
+++ b/src/code_801B3C0.c
@@ -3,7 +3,7 @@
#include "input.h"
#include "memory.h"
#include "item.h"
-#include "gUnknown_203B460.h"
+#include "team_inventory.h"
struct subStruct_203B240
{
@@ -16,7 +16,7 @@ struct unkStruct_203B230
{
// size: 0x94
s32 state;
- struct ItemStruct_203B460 unk4;
+ struct ItemSlot unk4;
s32 unk8;
s32 unkC;
struct subStruct_203B240 *unk10[2];
@@ -36,11 +36,11 @@ extern u8 gUnknown_80DBA4C[];
extern void sub_8008C54(u32);
extern void sub_80073E0(u32);
extern void sub_80073B8(u32);
-extern void sub_8014FF0(u32, u32, u8 *, u32, u32);
+extern void xxx_format_and_draw(u32, u32, u8 *, u32, u32);
extern void PlayMenuSoundEffect(u32);
extern void sub_8013F84(void);
extern u32 sub_8012A64(u32 *, u32);
-extern s32 sub_80913E0(struct ItemStruct_203B460 *, u32, struct subStruct_203B240 **);
+extern s32 sub_80913E0(struct ItemSlot *, u32, struct subStruct_203B240 **);
extern void sub_801317C(u32 *);
extern void sub_80140B4(struct UnkTextStruct2 *);
@@ -52,7 +52,7 @@ void sub_801B590();
void sub_801B480();
-u32 sub_801B3C0(struct ItemStruct_203B460 *param_1)
+u32 sub_801B3C0(struct ItemSlot *param_1)
{
ResetSprites(1);
gUnknown_203B230 = MemoryAlloc(sizeof(struct unkStruct_203B230),8);
@@ -115,8 +115,8 @@ void sub_801B480(void)
sub_80073B8(gUnknown_203B230->unk24);
preload = gUnknown_203B230->unk10[gUnknown_203B230->unk8];
strcpy(gAvailablePokemonNames, preload->pokeName);
- sub_8014FF0(16, 0, gUnknown_80DBA4C, gUnknown_203B230->unk24, 0); // $m0
- sub_8014FF0(4, 16, gUnknown_203B230->unk10[gUnknown_203B230->unk8]->unk4, gUnknown_203B230->unk24, 0);
+ xxx_format_and_draw(16, 0, gUnknown_80DBA4C, gUnknown_203B230->unk24, 0); // $m0
+ xxx_format_and_draw(4, 16, gUnknown_203B230->unk10[gUnknown_203B230->unk8]->unk4, gUnknown_203B230->unk24, 0);
sub_80073E0(gUnknown_203B230->unk24);
break;
case 2:
diff --git a/src/code_801C620.c b/src/code_801C620.c
index 8272340..7ae8c6a 100644
--- a/src/code_801C620.c
+++ b/src/code_801C620.c
@@ -2,12 +2,7 @@
#include "input.h"
#include "memory.h"
#include "text.h"
-
-struct subStruct_203B240
-{
- char * unk0;
- char * unk4;
-};
+#include "subStruct_203B240.h"
struct unkStruct_203B240
{
@@ -39,7 +34,7 @@ extern void sub_801317C(u32 *);
extern void sub_80140B4(struct UnkTextStruct2 *);
-extern void sub_8014FF0(u32, u32, char *, u32, u32);
+extern void xxx_format_and_draw(u32, u32, char *, u32, u32);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void xxx_call_draw_string(u32, u32, char *, u32, u32);
@@ -116,7 +111,7 @@ void sub_801C6E4(void)
sub_80073B8(gUnknown_203B240->unk24);
skillName = GetIQSkillName(gUnknown_203B240->unk4);
strcpy(gUnknown_202DE58,skillName);
- sub_8014FF0(16,0,gUnknown_80DBE2C,0,0); // $i0
+ xxx_format_and_draw(16,0,gUnknown_80DBE2C,0,0); // $i0
xxx_call_draw_string(8,16,GetIQSkillDescription(gUnknown_203B240->unk4),gUnknown_203B240->unk24,0);
sub_80073E0(gUnknown_203B240->unk24);
gUnknown_203B240->unkC = sub_8097DF0(GetIQSkillDescription(gUnknown_203B240->unk4),gUnknown_203B240->unk10);
@@ -127,8 +122,8 @@ void sub_801C6E4(void)
sub_80073B8(gUnknown_203B240->unk24);
preload = gUnknown_203B240->unk10[gUnknown_203B240->unk8];
strcpy(gAvailablePokemonNames,preload->unk0);
- sub_8014FF0(16,0,gUnknown_80DBE30,gUnknown_203B240->unk24,0); // $m0
- sub_8014FF0(4,16,gUnknown_203B240->unk10[gUnknown_203B240->unk8]->unk4, gUnknown_203B240->unk24,0);
+ xxx_format_and_draw(16,0,gUnknown_80DBE30,gUnknown_203B240->unk24,0); // $m0
+ xxx_format_and_draw(4,16,gUnknown_203B240->unk10[gUnknown_203B240->unk8]->unk4, gUnknown_203B240->unk24,0);
sub_80073E0(gUnknown_203B240->unk24);
break;
case 2:
diff --git a/src/code_801D760.c b/src/code_801D760.c
index e499d47..f48e717 100644
--- a/src/code_801D760.c
+++ b/src/code_801D760.c
@@ -3,7 +3,7 @@
#include "constants/friend_area.h"
#include "file_system.h"
#include "item.h"
-#include "gUnknown_203B460.h"
+#include "team_inventory.h"
#include "memory.h"
#include "input.h"
#include "text.h"
@@ -95,7 +95,7 @@ struct unk_203B250
struct unk_203B250 *gUnknown_203B250;
-extern struct unkStruct_203B460 *gUnknown_203B460;
+extern struct TeamInventory *gTeamInventory_203B460;
void sub_801D680(void)
{
@@ -332,7 +332,7 @@ void sub_801D894(void)
rank = GetRescueTeamRank();
ExpandPlaceholdersBuffer(buffer, r5, GetTeamRankString(rank), GetTeamRankPts());
xxx_call_draw_string(32, 4, buffer, 2, 0);
- ExpandPlaceholdersBuffer(buffer, &gUnknown_80DBF4C, gUnknown_203B460->teamMoney);
+ ExpandPlaceholdersBuffer(buffer, &gUnknown_80DBF4C, gTeamInventory_203B460->teamMoney);
xxx_call_draw_string(32, 18, buffer, 2, 0);
sub_80073E0(2);
}
diff --git a/src/code_8057824.c b/src/code_8057824.c
index 27a546f..248709f 100644
--- a/src/code_8057824.c
+++ b/src/code_8057824.c
@@ -30,8 +30,8 @@ extern void sub_806F370(struct unkDungeon_8041D5C *r0, struct unkDungeon_8041D5C
extern u32 gUnknown_80FD018;
-extern s16 sub_8057600(u32, u32);
-extern u32 sub_8092B00(u32);
+extern s16 sub_8057600(void*, u32);
+extern u32 sub_8092B00(void*);
bool32 sub_8057824(struct unkDungeon_8041D5C *param_1, struct unkDungeon_8041D5C *param_2)
{
@@ -100,7 +100,7 @@ bool32 sub_8057954(struct unkDungeon_8041D5C *param_1, struct unkDungeon_8041D5C
return TRUE;
}
-bool32 sub_8057974(struct unkDungeon_8041D5C *param_1, struct unkDungeon_8041D5C *param_2, u32 param_3, u32 param_4)
+bool32 sub_8057974(struct unkDungeon_8041D5C *param_1, struct unkDungeon_8041D5C *param_2, void* param_3, u32 param_4)
{
s32 newHP;
u8 local_24;
diff --git a/src/code_80958E8.c b/src/code_80958E8.c
index 457da51..c8fae63 100644
--- a/src/code_80958E8.c
+++ b/src/code_80958E8.c
@@ -35,7 +35,7 @@ extern bool8 sub_809017C(u8 *);
extern s16 sub_808E770(s16);
extern bool8 sub_8092040(u8);
extern u8 sub_803C1D0(u8 *, u8);
-extern bool8 sub_8091524(u8);
+extern bool8 IsNotMoneyOrUsedTMItem(u8);
extern u8 sub_8091E60(u8 ,u8 );
extern u32 GetMaxItemCount(u8);
extern u8 sub_803C0DC(s16);
@@ -146,9 +146,9 @@ bool8 ValidateWonderMail(struct WonderMail *data)
if(sub_8092040(data->targetItem))
return FALSE;
- if(sub_8090A60(data->targetItem))
+ if(IsThrowableItem(data->targetItem))
return FALSE;
- if(!sub_8091524(data->targetItem))
+ if(!IsNotMoneyOrUsedTMItem(data->targetItem))
return FALSE;
// Item finding
diff --git a/src/debug_menu_mid.c b/src/debug_menu_mid.c
index 3ed684c..b479cca 100644
--- a/src/debug_menu_mid.c
+++ b/src/debug_menu_mid.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "input.h"
#include "item.h"
-#include "gUnknown_203B460.h"
+#include "team_inventory.h"
#include "memory.h"
#include "menu.h"
#include "text.h"
@@ -49,8 +49,8 @@ struct unkStruct_203B3F4
extern struct unkStruct_203B3F4 *gUnknown_203B3F4;
-extern struct unkStruct_203B460 *gUnknown_203B460;
-extern void sub_801B3C0(struct ItemStruct_203B460 *);
+extern struct TeamInventory *gTeamInventory_203B460;
+extern void sub_801B3C0(struct ItemSlot *);
extern void sub_8013AA0(u32 *);
extern struct UnkTextStruct2 gUnknown_80E7E34;
@@ -73,7 +73,7 @@ extern void sub_8012EA4(u32 *, u32);
extern void sub_80073E0(u32);
extern void sub_8013C68(u32 *);
extern void xxx_call_draw_string(s32, u32, const char *, u32, u32);
-extern bool8 sub_8091524(u8);
+extern bool8 IsNotMoneyOrUsedTMItem(u8);
extern u32 sub_801CA08(u32);
extern u8 sub_801CB24();
extern void sub_801CBB8();
@@ -181,7 +181,7 @@ void sub_803A51C(void)
void sub_803A5A0(void)
{
- struct ItemStruct_203B460 auStack8;
+ struct ItemSlot auStack8;
switch(gUnknown_203B3F0->state) {
case 0:
@@ -199,7 +199,7 @@ void sub_803A5A0(void)
gUnknown_203B3F0->unkAC = 3;
gUnknown_203B3F0->unkA4 = 0;
gUnknown_203B3F0->unkA8 = 0x3e7;
- gUnknown_203B3F0->unkA0 = gUnknown_203B460->unk50[gUnknown_203B3F0->itemIndex];
+ gUnknown_203B3F0->unkA0 = gTeamInventory_203B460->unk50[gUnknown_203B3F0->itemIndex];
gUnknown_203B3F0->unkB0 = 1;
gUnknown_203B3F0->unkB4 = &gUnknown_203B3F0->unkD8[1];
gUnknown_203B3F0->unkB8 = 0x2C;
@@ -235,7 +235,7 @@ void sub_803A6F0(void)
gUnknown_203B3F0->menus[0].text = &gDebug_NumberText;
gUnknown_203B3F0->menus[0].menuAction = 2;
gUnknown_203B3F0->unk8 = 2;
- if (!sub_8091524(gUnknown_203B3F0->itemIndex)) {
+ if (!IsNotMoneyOrUsedTMItem(gUnknown_203B3F0->itemIndex)) {
gUnknown_203B3F0->menus[0].menuAction = -1;
gUnknown_203B3F0->unk8 = 3;
}
@@ -300,7 +300,7 @@ void sub_803A810(void)
switch(sub_8013BBC(&gUnknown_203B3F0->unk9C))
{
case 3:
- gUnknown_203B460->unk50[gUnknown_203B3F0->itemIndex] = gUnknown_203B3F0->unk9C;
+ gTeamInventory_203B460->unk50[gUnknown_203B3F0->itemIndex] = gUnknown_203B3F0->unk9C;
// Fallthrough needed to match
case 2:
sub_803A504(1);
diff --git a/src/felicity_bank_1.c b/src/felicity_bank_1.c
index fc769cb..ac7a1db 100644
--- a/src/felicity_bank_1.c
+++ b/src/felicity_bank_1.c
@@ -1,9 +1,9 @@
#include "global.h"
#include "item.h"
-#include "gUnknown_203B460.h"
+#include "team_inventory.h"
#include "felicity_bank.h"
-extern struct unkStruct_203B460 *gUnknown_203B460;
+extern struct TeamInventory *gTeamInventory_203B460;
extern struct unkStruct_203B204 *gUnknown_203B204;
extern u8 gUnknown_80DB738;
@@ -61,8 +61,8 @@ void Felicity_DepositMoney(void)
break;
case 3:
gUnknown_203B204->chosenAmount = gUnknown_203B204->unk64;
- gUnknown_203B460->teamSavings += gUnknown_203B204->chosenAmount;
- gUnknown_203B460->teamMoney -= gUnknown_203B204->chosenAmount;
+ gTeamInventory_203B460->teamSavings += gUnknown_203B204->chosenAmount;
+ gTeamInventory_203B460->teamMoney -= gUnknown_203B204->chosenAmount;
PlaySound(0x14c);
UpdateFelicityBankState(9);
break;
@@ -83,8 +83,8 @@ void Felicity_WithdrawMoney(void)
break;
case 3:
gUnknown_203B204->chosenAmount = gUnknown_203B204->unk64;
- gUnknown_203B460->teamMoney += gUnknown_203B204->chosenAmount;
- gUnknown_203B460->teamSavings -= gUnknown_203B204->chosenAmount;
+ gTeamInventory_203B460->teamMoney += gUnknown_203B204->chosenAmount;
+ gTeamInventory_203B460->teamSavings -= gUnknown_203B204->chosenAmount;
PlaySound(0x14c);
UpdateFelicityBankState(0xc);
break;
@@ -134,9 +134,9 @@ void CreateFelicityMoneySavingsHeader(u32 param_1)
sub_8008C54(param_1);
sub_80073B8(param_1);
xxx_call_draw_string(16, 4, gFelicityMoney, param_1, 0);
- sub_8012BC4(96, 4, gUnknown_203B460->teamMoney, 5, 5, param_1);
+ sub_8012BC4(96, 4, gTeamInventory_203B460->teamMoney, 5, 5, param_1);
xxx_call_draw_string(112, 4, gFelicitySavings, param_1, 0);
- sub_8012BC4(200,4,gUnknown_203B460->teamSavings,7,5,param_1);
+ sub_8012BC4(200,4,gTeamInventory_203B460->teamSavings,7,5,param_1);
sub_80073E0(param_1);
}
@@ -145,6 +145,6 @@ void DrawTeamMoneyBox(u32 param_1)
sub_8008C54(param_1);
sub_80073B8(param_1);
xxx_call_draw_string(6, 0, &gUnknown_80DB738,param_1, 0); // Money
- sub_8012BC4(42, 12, gUnknown_203B460->teamMoney, 5, 5, param_1);
+ sub_8012BC4(42, 12, gTeamInventory_203B460->teamMoney, 5, 5, param_1);
sub_80073E0(param_1);
}
diff --git a/src/friend_area_action_menu.c b/src/friend_area_action_menu.c
index 71e424b..24c0dfa 100644
--- a/src/friend_area_action_menu.c
+++ b/src/friend_area_action_menu.c
@@ -4,7 +4,7 @@
#include "input.h"
#include "menu.h"
#include "item.h"
-#include "gUnknown_203B460.h"
+#include "team_inventory.h"
#include "friend_area_action_menu.h"
extern struct unkStruct_203B2BC *gUnknown_203B2BC;
@@ -33,7 +33,7 @@ extern void sub_801A5D8(u32, u32, u32, u32);
extern void sub_801A8D0(u32);
extern void sub_801A9E0();
extern void sub_801F1B0(u32, u32);
-extern void sub_801B3C0(struct ItemStruct_203B460 *);
+extern void sub_801B3C0(struct ItemSlot *);
extern void sub_809401C(u32 *, u32 *);
extern void sub_801EE10(u32, s16, u32 *, u32, u32, u32);
@@ -167,7 +167,7 @@ void sub_802719C(void)
void sub_8027274(void)
{
- struct ItemStruct_203B460 auStack12;
+ struct ItemSlot auStack12;
switch(gUnknown_203B2BC->state) {
case 0:
diff --git a/src/friend_area_action_menu_1.c b/src/friend_area_action_menu_1.c
index 86f7430..bff9997 100644
--- a/src/friend_area_action_menu_1.c
+++ b/src/friend_area_action_menu_1.c
@@ -3,11 +3,11 @@
#include "input.h"
#include "menu.h"
#include "item.h"
-#include "gUnknown_203B460.h"
+#include "team_inventory.h"
#include "friend_area_action_menu.h"
extern struct unkStruct_203B2BC *gUnknown_203B2BC;
-extern struct unkStruct_203B460 *gUnknown_203B460;
+extern struct TeamInventory *gTeamInventory_203B460;
u32 sub_801B410();
void sub_801B450();
@@ -18,13 +18,13 @@ extern void sub_8027184(u32);
extern u8 sub_8012FD8(u32 *r0);
extern void sub_8013114(u32 *, s32 *);
extern void PlaySound(u32);
-extern void sub_80911F8(u32);
-extern void sub_80910B4();
+extern void ShiftItemsDownFrom(u32);
+extern void FillInventoryGaps();
extern void nullsub_104();
extern void sub_8091274(u8 *);
extern void sub_801A928();
extern void sub_8099690(u32);
-extern void sub_808D800(s16, struct ItemStruct_203B460_ALT *);
+extern void sub_808D800(s16, struct ItemSlot_ALT *);
extern u32 sub_801A8AC();
extern u32 sub_801A6E8(u32);
@@ -57,14 +57,14 @@ void sub_8027B28(void)
{
case 3:
gUnknown_203B2BC->unkC = sub_801A8AC();
- gUnknown_203B2BC->unk10.itemIndex = gUnknown_203B460->fill0[gUnknown_203B2BC->unkC].itemIndex;
- gUnknown_203B2BC->unk10.numItems = gUnknown_203B460->fill0[gUnknown_203B2BC->unkC].numItems;
+ gUnknown_203B2BC->unk10.itemIndex = gTeamInventory_203B460->teamItems[gUnknown_203B2BC->unkC].itemIndex;
+ gUnknown_203B2BC->unk10.numItems = gTeamInventory_203B460->teamItems[gUnknown_203B2BC->unkC].numItems;
sub_8027184(0xc);
break;
case 4:
gUnknown_203B2BC->unkC = sub_801A8AC();
- gUnknown_203B2BC->unk10.itemIndex = gUnknown_203B460->fill0[gUnknown_203B2BC->unkC].itemIndex;
- gUnknown_203B2BC->unk10.numItems = gUnknown_203B460->fill0[gUnknown_203B2BC->unkC].numItems;
+ gUnknown_203B2BC->unk10.itemIndex = gTeamInventory_203B460->teamItems[gUnknown_203B2BC->unkC].itemIndex;
+ gUnknown_203B2BC->unk10.numItems = gTeamInventory_203B460->teamItems[gUnknown_203B2BC->unkC].numItems;
sub_8099690(0);
sub_8027184(0xd);
break;
@@ -91,8 +91,8 @@ void sub_8027BD8(void)
{
case 10:
PlaySound(0x14d);
- sub_80911F8(gUnknown_203B2BC->unkC);
- sub_80910B4();
+ ShiftItemsDownFrom(gUnknown_203B2BC->unkC);
+ FillInventoryGaps();
if (gUnknown_203B2BC->unk14 != 0) {
sub_8091274(&gUnknown_203B2BC->unk14);
}
diff --git a/src/friend_rescue.c b/src/friend_rescue.c
index 15919d1..a93c317 100644
--- a/src/friend_rescue.c
+++ b/src/friend_rescue.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "text.h"
#include "item.h"
-#include "gUnknown_203B460.h"
+#include "team_inventory.h"
#include "friend_rescue.h"
#include "pokemon.h"
#include "memory.h"
diff --git a/src/friend_rescue_1.c b/src/friend_rescue_1.c
index ea33bb8..d66bc8c 100644
--- a/src/friend_rescue_1.c
+++ b/src/friend_rescue_1.c
@@ -4,11 +4,11 @@
#include "save.h"
#include "memory.h"
#include "input.h"
-#include "gUnknown_203B460.h"
+#include "team_inventory.h"
#include "friend_rescue.h"
#include "sub_8095228.h"
-extern struct unkStruct_203B460 *gUnknown_203B460;
+extern struct TeamInventory *gTeamInventory_203B460;
extern void sub_80338C4(u32);
extern s32 sub_80144A4(s32 *);
@@ -176,7 +176,7 @@ void sub_8034F88(void)
temp2 = sub_8095228(gUnknown_203B33C->unk218);
if(gUnknown_203B33C->unk41C.itemIndex != 0)
temp2->unk20 = gUnknown_203B33C->unk41C;
- gUnknown_203B460->unk50[gUnknown_203B33C->unk41C.itemIndex]--;
+ gTeamInventory_203B460->unk50[gUnknown_203B33C->unk41C.itemIndex]--;
sub_80338C4(0x75);
break;
case 7:
diff --git a/src/items.c b/src/items.c
index 1ddd5b4..f7bd24e 100644
--- a/src/items.c
+++ b/src/items.c
@@ -1,11 +1,11 @@
#include "global.h"
#include "file_system.h"
#include "item.h"
-#include "gUnknown_203B460.h"
+#include "team_inventory.h"
#include "random.h"
-extern struct unkStruct_203B460 *gUnknown_203B460;
-extern struct unkStruct_203B460 gUnknown_20389A8;
+extern struct TeamInventory *gTeamInventory_203B460;
+extern struct TeamInventory gUnknown_20389A8;
extern struct FileArchive gSystemFileArchive;
extern const char gUnknown_8109764;
@@ -15,60 +15,59 @@ EWRAM_DATA struct Item *gItemParametersData;
extern void sub_8091840(u8);
extern u8 GetItemType(u8);
extern u32 GetItemUnkThrow(u8, u32);
-extern s32 sub_80915D4(struct ItemStruct_203B460 *);
-extern bool8 sub_80914E4(u8);
-extern void sub_8090F58(u32, u8 *, struct ItemStruct_203B460 *, u32);
+extern bool8 CanSellItem(u8);
+extern void sub_8090F58(void*, u8 *, struct ItemSlot *, u32);
void LoadItemParameters(void)
{
- gUnknown_203B460 = &gUnknown_20389A8;
+ gTeamInventory_203B460 = &gUnknown_20389A8;
gItemParametersFile = OpenFileAndGetFileDataPtr(&gUnknown_8109764,&gSystemFileArchive);
gItemParametersData = (struct Item *) gItemParametersFile->data;
}
-struct unkStruct_203B460 *GetMoneyItemsInfo(void)
+struct TeamInventory *GetMoneyItemsInfo(void)
{
return &gUnknown_20389A8;
}
void InitializeMoneyItems(void)
{
- s32 iVar1;
+ s32 i;
- for(iVar1 = 0; iVar1 < 0x14; iVar1++)
+ for(i = 0; i < 20; i++)
{
- gUnknown_203B460->fill0[iVar1].unk0 = 0;
+ gTeamInventory_203B460->teamItems[i].unk0 = 0;
}
- for(iVar1 = 0; iVar1 < 0xF0; iVar1++)
+ for(i = 0; i < 0xF0; i++)
{
- gUnknown_203B460->unk50[iVar1] = 0;
+ gTeamInventory_203B460->unk50[i] = 0;
}
- for(iVar1 = 0; iVar1 < 8; iVar1++)
+ for(i = 0; i < 8; i++)
{
- sub_8091840(iVar1);
+ sub_8091840(i);
}
- gUnknown_203B460->teamMoney = 0;
- gUnknown_203B460->teamSavings = 0;
+ gTeamInventory_203B460->teamMoney = 0;
+ gTeamInventory_203B460->teamSavings = 0;
}
-s32 sub_8090A34(void)
+s32 GetNumberOfFilledInventorySlots(void)
{
- s32 iVar2;
- s32 iVar3;
+ s32 i;
+ s32 count;
- iVar3 = 0;
- for(iVar2 = 0; iVar2 < 0x14; iVar2++)
+ count = 0;
+ for(i = 0; i < 20; i++)
{
- if ((gUnknown_203B460->fill0[iVar2].unk0 & 1) != 0) {
- iVar3++;
+ if ((gTeamInventory_203B460->teamItems[i].unk0 & 1) != 0) {
+ count++;
}
}
- return iVar3;
+ return count;
}
-bool8 sub_8090A60(u8 itemIndex)
+bool8 IsThrowableItem(u8 itemIndex)
{
if ((GetItemType(itemIndex) != ITEM_TYPE_THROWABLE) && (GetItemType(itemIndex) != ITEM_TYPE_ROCK)) {
return FALSE;
@@ -78,15 +77,15 @@ bool8 sub_8090A60(u8 itemIndex)
}
}
-void sub_8090A8C(struct ItemStruct_203B460 *param_1,u8 itemIndex,u8 param_3)
+void sub_8090A8C(struct ItemSlot *param_1,u8 itemIndex,u8 param_3)
{
u32 uVar3;
u32 uVar4;
- if (itemIndex != 0) {
+ if (itemIndex != ITEM_ID_NOTHING) {
param_1->unk0 = 1;
param_1->itemIndex = itemIndex;
- if (sub_8090A60(itemIndex)) {
+ if (IsThrowableItem(itemIndex)) {
uVar3 = GetItemUnkThrow(itemIndex,0);
uVar4 = GetItemUnkThrow(itemIndex,1);
param_1->numItems = RandomRange(uVar3,uVar4);
@@ -105,19 +104,19 @@ void sub_8090A8C(struct ItemStruct_203B460 *param_1,u8 itemIndex,u8 param_3)
}
else {
param_1->unk0 = 0;
- param_1->itemIndex = 0;
+ param_1->itemIndex = ITEM_ID_NOTHING;
param_1->numItems = 0;
}
}
-void sub_8090B08(struct ItemStruct_203B460_ALT *param_1,u8 itemIndex)
+void sub_8090B08(struct ItemSlot_ALT *param_1,u8 itemIndex)
{
u32 uVar2;
u32 uVar3;
- if (itemIndex != 0) {
+ if (itemIndex != ITEM_ID_NOTHING) {
param_1->itemIndex = itemIndex;
- if (sub_8090A60(itemIndex)) {
+ if (IsThrowableItem(itemIndex)) {
uVar2 = GetItemUnkThrow(itemIndex,0);
uVar3 = GetItemUnkThrow(itemIndex,1);
param_1->numItems = RandomRange(uVar2,uVar3);
@@ -136,22 +135,22 @@ void sub_8090B08(struct ItemStruct_203B460_ALT *param_1,u8 itemIndex)
}
}
-void sub_8090B64(struct ItemStruct_203B460 *param_1, struct ItemStruct_203B460_ALT *param_2)
+void sub_8090B64(struct ItemSlot *param_1, struct ItemSlot_ALT *param_2)
{
u8 r6;
- if(param_2->itemIndex != 0)
+ if(param_2->itemIndex != ITEM_ID_NOTHING)
{
param_1->unk0 = 1;
param_1->itemIndex = param_2->itemIndex;
- r6 = sub_8090A60(param_1->itemIndex);
+ r6 = IsThrowableItem(param_1->itemIndex);
if(r6 != 0 || GetItemType(param_1->itemIndex) == ITEM_TYPE_MONEY)
{
param_1->numItems = param_2->numItems;
}
else
{
- if(param_1->itemIndex == 0x7C)
+ if(param_1->itemIndex == ITEM_ID_USED_TM)
{
param_1->numItems = param_2->numItems;
}
@@ -163,20 +162,20 @@ void sub_8090B64(struct ItemStruct_203B460 *param_1, struct ItemStruct_203B460_A
}
else
{
- param_1->itemIndex = 0;
+ param_1->itemIndex = ITEM_ID_NOTHING;
param_1->numItems = 0;
param_1->unk0 = 0;
}
}
-void sub_8090BB0(struct ItemStruct_203B460_ALT *param_1,struct ItemStruct_203B460 *param_2)
+void sub_8090BB0(struct ItemSlot_ALT *param_1,struct ItemSlot *param_2)
{
if ((param_2->unk0 & 1) != 0) {
param_1->itemIndex = param_2->itemIndex;
param_1->numItems = param_2->numItems;
}
else {
- param_1->itemIndex = 0;
+ param_1->itemIndex = ITEM_ID_NOTHING;
}
}
@@ -185,13 +184,13 @@ u8 GetItemType(u8 index)
return gItemParametersData[index].type;
}
-s32 sub_8090BE4(struct ItemStruct_203B460 *param_1)
+s32 GetStackBuyValue(struct ItemSlot *param_1)
{
- if (param_1->itemIndex == 105) {
- return sub_80915D4(param_1);
+ if (param_1->itemIndex == ITEM_ID_POKE) {
+ return GetMoneyValue(param_1);
}
else {
- if (sub_8090A60(param_1->itemIndex)) {
+ if (IsThrowableItem(param_1->itemIndex)) {
return gItemParametersData[param_1->itemIndex].buyPrice * param_1->numItems;
}
else {
@@ -200,13 +199,13 @@ s32 sub_8090BE4(struct ItemStruct_203B460 *param_1)
}
}
-s32 sub_8090C30(struct ItemStruct_203B460 *param_1)
+s32 GetStackSellValue(struct ItemSlot *param_1)
{
- if (param_1->itemIndex == 105) {
- return sub_80915D4(param_1);
+ if (param_1->itemIndex == ITEM_ID_POKE) {
+ return GetMoneyValue(param_1);
}
else {
- if (sub_8090A60(param_1->itemIndex)) {
+ if (IsThrowableItem(param_1->itemIndex)) {
return gItemParametersData[param_1->itemIndex].sellPrice * param_1->numItems;
}
else {
@@ -215,13 +214,13 @@ s32 sub_8090C30(struct ItemStruct_203B460 *param_1)
}
}
-s32 sub_8090C7C(struct ItemStruct_203B460 *param_1)
+s32 GetStackBuyPrice(struct ItemSlot *param_1)
{
- if (!sub_80914E4(param_1->itemIndex)) {
+ if (!CanSellItem(param_1->itemIndex)) {
return 0;
}
else {
- if (sub_8090A60(param_1->itemIndex)) {
+ if (IsThrowableItem(param_1->itemIndex)) {
return gItemParametersData[param_1->itemIndex].buyPrice * param_1->numItems;
}
else {
@@ -230,13 +229,13 @@ s32 sub_8090C7C(struct ItemStruct_203B460 *param_1)
}
}
-s32 sub_8090CCC(struct ItemStruct_203B460 *param_1)
+s32 GetStackSellPrice(struct ItemSlot *param_1)
{
- if (!sub_80914E4(param_1->itemIndex)) {
+ if (!CanSellItem(param_1->itemIndex)) {
return 0;
}
else {
- if (sub_8090A60(param_1->itemIndex)) {
+ if (IsThrowableItem(param_1->itemIndex)) {
return gItemParametersData[param_1->itemIndex].sellPrice * param_1->numItems;
}
else {
@@ -255,7 +254,7 @@ s32 GetItemSellPrice(u8 itemIndex)
return gItemParametersData[itemIndex].sellPrice;
}
-u8 GetItemOrder(u8 itemIndex)
+s32 GetItemOrder(u8 itemIndex)
{
return gItemParametersData[itemIndex].order;
}
@@ -285,14 +284,13 @@ u32 GetItemUnkFood(u8 itemIndex, u32 r1)
return gItemParametersData[itemIndex].unkFood1[r1];
}
-void sub_8090DC4(u32 param_1,u8 itemIndex,u32 param_3)
+void sub_8090DC4(void* param_1,u8 itemIndex,u32 param_3)
{
char acStack104 [80];
- struct ItemStruct_203B460 unkItem;
+ struct ItemSlot unkItem;
strncpy(acStack104,gItemParametersData[itemIndex].namePointer,0x50);
sub_8090A8C(&unkItem,itemIndex,0);
unkItem.numItems = 1;
sub_8090F58(param_1,acStack104,&unkItem,param_3);
-}
-
+} \ No newline at end of file
diff --git a/src/items_1.c b/src/items_1.c
new file mode 100644
index 0000000..219feb5
--- /dev/null
+++ b/src/items_1.c
@@ -0,0 +1,413 @@
+#include "global.h"
+#include "item.h"
+#include "team_inventory.h"
+#include "pokemon.h"
+#include "subStruct_203B240.h"
+
+#include <stddef.h>
+
+extern struct TeamInventory *gTeamInventory_203B460;
+extern EWRAM_DATA struct Item *gItemParametersData;
+
+extern void sub_80073B8(u32);
+extern u32 sub_8097DF0(char *, struct subStruct_203B240 **);
+extern void sub_8092A88(void*, u16); // first arg is some struct
+extern void sub_80078A4(u32, u32, u32, u32, u32);
+extern u32 sub_8092B00(void*);
+extern u8* GetUnformattedTypeString(s16);
+extern u32 sub_8092BF4(void*);
+extern void sub_80073E0(u32);
+extern void xxx_format_and_draw(u32, u32, u8 *, u32, u32);
+
+extern u8 gUnknown_202DE58[0x58];
+extern u32 gUnknown_202DE30;
+extern u8* gPtrTypeText; // ptr to "Type\0"
+extern u8* gPtrPPD0Text; // ptr to "PP $d0 \0"
+extern u32 gUnknown_810A3F0[100];
+extern struct unkStruct_203B45C *gRecruitedPokemonRef;
+
+void FillInventoryGaps()
+{
+ // fill inventory gaps
+ s32 slot_checking = 0;
+ s32 last_filled = 0;
+
+ do {
+ // effectively just a while loop
+ if ((slot_checking < 20) && !(slot_checking[gTeamInventory_203B460->teamItems].unk0 & 1)) {
+ // find next empty slot
+ do {
+ slot_checking++;
+ } while ((slot_checking < 20) && !(slot_checking[gTeamInventory_203B460->teamItems].unk0 & 1));
+ }
+
+ if (slot_checking == 20) {
+ break;
+ }
+
+ if (slot_checking > last_filled) {
+ // shift it down
+ gTeamInventory_203B460->teamItems[last_filled] = gTeamInventory_203B460->teamItems[slot_checking];
+ }
+ slot_checking++;
+ last_filled++;
+ } while (1);
+
+ // clear out the rest of the slots
+ for (; last_filled < 20; last_filled++) {
+ struct ItemSlot *slot;
+#ifdef NONMATCHING
+ slot = &gTeamInventory_203B460->teamItems[last_filled];
+#else
+ size_t offs = last_filled << 2;
+ size_t _slot = offs;
+ _slot += (size_t)gTeamInventory_203B460->teamItems;
+ slot = (struct ItemSlot*)_slot; // &gTeamInventory_203B460->teamItems[end];
+#endif
+ slot->itemIndex = 0;
+ slot->numItems = 0;
+ slot->unk0 = 0;
+ }
+}
+
+s32 FindItemInInventory(u8 itemIndex) {
+ s32 i;
+ for (i = 0; i < 20; i++) {
+ if ((gTeamInventory_203B460->teamItems[i].unk0 & 1) && (gTeamInventory_203B460->teamItems[i].itemIndex == itemIndex)) {
+ return i;
+ }
+ }
+ return -1;
+}
+
+s32 GetItemCountInInventory(u8 _itemIndex)
+{
+#ifdef NONMATCHING
+ s32 count = 0;
+ s32 i;
+ for (i = 0; i < 20; i++) {
+ if ((gTeamInventory_203B460->teamItems[i].unk0 & 1) && (gTeamInventory_203B460->teamItems[i].itemIndex == _itemIndex)) {
+ count++;
+ }
+ }
+ return count;
+#else
+ // have to do hacky stuff to fix initialization order of r6 and r2
+ u32 itemIndex = _itemIndex;
+ s32 count = 0;
+ struct ItemSlot *slot = gTeamInventory_203B460->teamItems;
+ s32 one = 1;
+ s32 i = 19;
+
+ do {
+ register u32 unk0 asm("r1") = slot->unk0;
+ u32 bottom_bit = one;
+ bottom_bit &= unk0;
+ if (bottom_bit && (slot->itemIndex == itemIndex)) {
+ count++;
+ }
+ slot++;
+ } while(--i >= 0);
+ return count;
+#endif
+}
+
+s32 GetItemPossessionCount(u8 itemIndex)
+{
+#ifdef NONMATCHING
+ s32 item_count = GetItemCountInInventory(itemIndex);
+ s32 i = 0;
+
+ struct unkStruct_203B45C *_gRecruitedPokemonRef = gRecruitedPokemonRef;
+ for (i = 0; i < NUM_SPECIES; i++) {
+ struct PokemonStruct* pokemon = &_gRecruitedPokemonRef->pokemon[i];
+ if ((pokemon->unk0 & 1)
+ && ((pokemon->unk0 >> 1) & 1)
+ && (pokemon->itemIndexHeld != ITEM_ID_NOTHING)
+ && (pokemon->itemIndexHeld == itemIndex)) {
+ item_count++;
+ }
+ }
+ return item_count;
+#else
+ // hacky stuff again to fix order of operands in & at bottom bit
+ s32 item_count = GetItemCountInInventory(itemIndex);
+ s32 i = 0;
+
+ struct unkStruct_203B45C *_gRecruitedPokemonRef = gRecruitedPokemonRef;
+ register s32 one_mask asm("r6") = 1;
+ for (i = 0; i < NUM_SPECIES; i++) {
+ struct PokemonStruct* pokemon = &_gRecruitedPokemonRef->pokemon[i];
+ register int bottom_bit asm("r0") = one_mask;
+ bottom_bit &= pokemon->unk0;
+
+ if (bottom_bit
+ && ((pokemon->unk0 >> 1) & one_mask)
+ && (pokemon->itemIndexHeld != ITEM_ID_NOTHING)
+ && (pokemon->itemIndexHeld == itemIndex)) {
+ item_count++;
+ }
+ }
+ return item_count;
+#endif
+}
+
+void ShiftItemsDownFrom(s32 start)
+{
+ s32 i, j;
+ for (i = start, j = start + 1; i < 19; i++, j++) {
+ gTeamInventory_203B460->teamItems[i] = gTeamInventory_203B460->teamItems[j];
+ }
+ gTeamInventory_203B460->teamItems[19].itemIndex = 0;
+ gTeamInventory_203B460->teamItems[19].unk0 = 0;
+}
+
+void ClearItemSlotAt(u32 index)
+{
+ gTeamInventory_203B460->teamItems[index].itemIndex = ITEM_ID_NOTHING;
+ gTeamInventory_203B460->teamItems[index].unk0 = 0;
+}
+
+bool8 sub_809124C(u8 itemIndex, u8 param_3)
+{
+ struct ItemSlot temp;
+ sub_8090A8C(&temp, itemIndex, param_3);
+ return AddItemToInventory(&temp);
+}
+
+bool8 sub_8091274(struct ItemSlot_ALT* slot)
+{
+ struct ItemSlot temp;
+
+ sub_8090B64(&temp, slot);
+ return AddItemToInventory(&temp);
+}
+
+bool8 AddItemToInventory(const struct ItemSlot* slot)
+{
+ s32 i;
+
+ // try to add item to inventory, return 1 if failed
+ for (i = 0; i < 20; i++) {
+ UNUSED struct ItemSlot* current = &gTeamInventory_203B460->teamItems[i];
+ if (!(i[gTeamInventory_203B460->teamItems].unk0 & 1)) {
+ gTeamInventory_203B460->teamItems[i] = *slot;
+ return 0;
+ }
+ }
+ return 1;
+}
+
+
+void ConvertMoneyItemToMoney()
+{
+ s32 i = 0;
+
+ do {
+ UNUSED struct TeamInventory * _gTeamInventory_203B460 = gTeamInventory_203B460;
+ UNUSED size_t offs = offsetof(struct TeamInventory, teamItems[i]);
+
+ struct ItemSlot* current_slot = &gTeamInventory_203B460->teamItems[i];
+ if ((current_slot->unk0 & 1) && (current_slot->itemIndex == ITEM_ID_POKE)) {
+ u32 result;
+
+ result = GetMoneyValue(current_slot);
+ AddToTeamMoney(result);
+ current_slot->itemIndex = 0;
+ current_slot->numItems = 0;
+ current_slot->unk0 = 0;
+ }
+ } while (++i < 20);
+ FillInventoryGaps();
+
+ i = 0;
+ do {
+ s32 lowest_index = -1;
+ UNUSED size_t offs = offsetof(struct TeamInventory, teamItems[i]);
+
+ bool8 item_occupied = i[gTeamInventory_203B460->teamItems].unk0 & 1;
+ s32 next = i + 1;
+
+ if (item_occupied) {
+ s32 lowest_order = GetItemOrder(gTeamInventory_203B460->teamItems[i].itemIndex);
+ s32 j;
+
+ // find next lowest
+ for (j = next; j < 20; j++) {
+ UNUSED size_t offs = offsetof(struct TeamInventory, teamItems[j]);
+ if ((j[gTeamInventory_203B460->teamItems].unk0 & 1) && (lowest_order > GetItemOrder(gTeamInventory_203B460->teamItems[j].itemIndex))) {
+ lowest_index = j;
+ lowest_order = GetItemOrder(gTeamInventory_203B460->teamItems[j].itemIndex);
+ }
+ }
+
+ if (lowest_index >= 0) {
+ // swap the slots
+ struct ItemSlot current = gTeamInventory_203B460->teamItems[i];
+ gTeamInventory_203B460->teamItems[i] = gTeamInventory_203B460->teamItems[lowest_index];
+ gTeamInventory_203B460->teamItems[lowest_index] = current;
+ }
+ }
+ } while (++i < 20);
+ FillInventoryGaps();
+}
+
+void AddToTeamMoney(s32 amount)
+{
+ s32 clamped_money;
+ gTeamInventory_203B460->teamMoney += amount;
+
+ // clamp money
+ clamped_money = 99999;
+ if (gTeamInventory_203B460->teamMoney <= 99999) {
+ if (gTeamInventory_203B460->teamMoney >= 0) {
+ return;
+ }
+ clamped_money = 0;
+ }
+ gTeamInventory_203B460->teamMoney = clamped_money;
+}
+
+u16 GetItemMove(u8 index)
+{
+ return gItemParametersData[index & 0xff].move;
+}
+
+u32 sub_80913E0(struct ItemSlot* slot, u32 a2, struct subStruct_203B240 ** a3)
+{
+ u8 buffer88[88]; // some struct
+
+ GetItemDescription(slot->itemIndex);
+ sub_8090DC4(buffer88, slot->itemIndex, 0);
+ if (slot->itemIndex == ITEM_ID_USED_TM) {
+ // empty HM
+ sub_8090DC4(&gUnknown_202DE58, (u8)(slot->numItems + 125), 0);
+ }
+ sub_80073B8(a2);
+ xxx_format_and_draw(16, 0, buffer88, a2, 0);
+
+ xxx_format_and_draw(8, 24, GetItemDescription(slot->itemIndex), a2, 0);
+ if (GetItemType(slot->itemIndex) == ITEM_TYPE_TM) {
+ u8* buffer8 = buffer88 + 0x50; // field in struct
+ u16 move = GetItemMove(slot->itemIndex);
+ u8 moves_data;
+ u8* typestring;
+ u32 result;
+
+ sub_8092A88(buffer8, move);
+ sub_80078A4(a2, 4, 82, 200, 7);
+ xxx_format_and_draw(4, 84, gPtrTypeText, a2, 0);
+ moves_data = sub_8092B00(buffer8);
+ typestring = GetUnformattedTypeString(moves_data);
+ xxx_format_and_draw(64, 84, typestring, a2, 0);
+ result = sub_8092BF4(buffer8);
+ gUnknown_202DE30 = result;
+ xxx_format_and_draw(128, 84, gPtrPPD0Text, a2, 0);
+ }
+
+ sub_80073E0(a2);
+ return sub_8097DF0(GetItemDescription(slot->itemIndex), a3);
+}
+
+bool8 CanSellItem(u32 id)
+{
+ u8 id_;
+ id = (u8)id;
+ id_ = id;
+
+ if((id != ITEM_ID_NOTHING)
+ && (id != ITEM_ID_POKE)
+ && (id != ITEM_ID_ROCK_PART)
+ && (id != ITEM_ID_ICE_PART)
+ && (id != ITEM_ID_STEEL_PART)
+ && (id != ITEM_ID_MUSIC_BOX)
+ && (GetItemSellPrice(id_))
+ && (GetItemBuyPrice(id_))) {
+ return 1;
+ }
+ return 0;
+}
+
+bool8 IsNotMoneyOrUsedTMItem(u8 id)
+{
+ if (id == ITEM_ID_NOTHING) {
+ return 0;
+ }
+ else if (id == ITEM_ID_POKE) {
+ return 0;
+ }
+ else if (id == ITEM_ID_USED_TM) {
+ return 0;
+ }
+ return 1;
+}
+
+bool8 IsNotSpecialItem(u8 id)
+{
+ if (id == ITEM_ID_NOTHING) {
+ return 0;
+ }
+ else if (id == ITEM_ID_POKE) {
+ return 0;
+ }
+ else if (id == ITEM_ID_ROCK_PART) {
+ return 0;
+ }
+ else if (id == ITEM_ID_ICE_PART) {
+ return 0;
+ }
+ else if (id == ITEM_ID_STEEL_PART) {
+ return 0;
+ }
+ else if (id == ITEM_ID_MUSIC_BOX) {
+ return 0;
+ }
+ return 1;
+}
+
+bool8 IsEdibleItem(u8 id)
+{
+ if (!((GetItemType(id) == ITEM_TYPE_BERRY_SEED) || (GetItemType(id) == ITEM_TYPE_APPLE_GUMMI))) {
+ return 0;
+ }
+ return 1;
+}
+
+bool8 IsHMItem(u8 id)
+{
+ if (id == ITEM_ID_CUT) {
+ return 1;
+ }
+ else if (id == ITEM_ID_FLY) {
+ return 1;
+ }
+ else if (id == ITEM_ID_SURF) {
+ return 1;
+ }
+ else if (id == ITEM_ID_STRENGTH) {
+ return 1;
+ }
+ else if (id == ITEM_ID_FLASH) {
+ return 1;
+ }
+ else if (id == ITEM_ID_ROCK_SMASH) {
+ return 1;
+ }
+ else if (id == ITEM_ID_WATERFALL) {
+ return 1;
+ }
+ else if (id == ITEM_ID_DIVE) {
+ return 1;
+ }
+ return 0;
+}
+
+u32 GetMoneyValue(struct ItemSlot* slot)
+{
+ return gUnknown_810A3F0[slot->numItems];
+}
+
+u32 GetMoneyValue2(struct ItemSlot* slot)
+{
+ return gUnknown_810A3F0[slot->numItems];
+} \ No newline at end of file
diff --git a/src/kangaskhan_storage_2.c b/src/kangaskhan_storage_2.c
index 02059d1..9155ef3 100644
--- a/src/kangaskhan_storage_2.c
+++ b/src/kangaskhan_storage_2.c
@@ -3,18 +3,18 @@
#include "memory.h"
#include "text.h"
#include "item.h"
-#include "gUnknown_203B460.h"
+#include "team_inventory.h"
#include "input.h"
#include "kangaskhan_storage.h"
extern struct unkStruct_203B208 *gUnknown_203B208;
-extern struct unkStruct_203B460 *gUnknown_203B460;
+extern struct TeamInventory *gTeamInventory_203B460;
struct unkStruct_203B20C
{
u32 state;
u8 unk4[4];
- struct ItemStruct_203B460 unk8;
+ struct ItemSlot unk8;
u8 fillC[0x14 - 0xC];
u32 unk14;
u32 unk18;
@@ -60,7 +60,7 @@ extern u8 sub_8012FD8(u32 *r0);
extern void sub_8013114(u32 *, s32 *);
extern void sub_801CBB8();
-extern bool8 sub_8091524(u8);
+extern bool8 IsNotMoneyOrUsedTMItem(u8);
extern bool8 sub_801ADA0(u32);
extern void sub_8099690(u32);
extern u32 sub_8013BBC(u32 *);
@@ -90,7 +90,7 @@ extern void sub_801CCD8();
extern void sub_80184D4();
extern void sub_8018280();
extern void sub_8013AA0(u32 *);
-extern void sub_801B3C0(struct ItemStruct_203B460 *);
+extern void sub_801B3C0(struct ItemSlot *);
extern void sub_801A5D8(u32, u32, u32, u32);
extern void sub_801C8C4(u32, u32, u32, u32);
extern void sub_8012D60(u32 *, u32 *, u32, u16 *, u32, u32);
@@ -117,13 +117,13 @@ void sub_8017AF8(void)
else
{
gUnknown_203B208->unk10 = sub_801A8AC();
- gUnknown_203B208->unkC = gUnknown_203B460->fill0[gUnknown_203B208->unk10];
+ gUnknown_203B208->unkC = gTeamInventory_203B460->teamItems[gUnknown_203B208->unk10];
UpdateKangaskhanStorageState(0xF);
}
break;
case 4:
gUnknown_203B208->unk10 = sub_801A8AC();
- gUnknown_203B208->unkC = gUnknown_203B460->fill0[gUnknown_203B208->unk10];
+ gUnknown_203B208->unkC = gTeamInventory_203B460->teamItems[gUnknown_203B208->unk10];
UpdateKangaskhanStorageState(0x10);
break;
case 2:
@@ -201,7 +201,7 @@ void sub_8017C7C(void)
{
case 2:
sub_8099690(0);
- if(!sub_8091524(gUnknown_203B208->unkC.itemIndex))
+ if(!IsNotMoneyOrUsedTMItem(gUnknown_203B208->unkC.itemIndex))
UpdateKangaskhanStorageState(9);
else
if(!sub_801ADA0(gUnknown_203B208->unk10))
@@ -232,14 +232,14 @@ void sub_8017D24(void)
switch(menuAction)
{
case 3:
- if (sub_8090A34() > 0x13)
+ if (GetNumberOfFilledInventorySlots() > 0x13)
{
sub_801CBB8();
UpdateKangaskhanStorageState(6);
}
else
{
- if(sub_8090A60(gUnknown_203B208->unkC.itemIndex))
+ if(IsThrowableItem(gUnknown_203B208->unkC.itemIndex))
UpdateKangaskhanStorageState(0x18);
else
UpdateKangaskhanStorageState(0x1B);
@@ -444,10 +444,10 @@ void sub_8018100(void)
case 12:
gUnknown_203B20C->unkD0 = 2;
gUnknown_203B20C->unkC8 = 1;
- if(gUnknown_203B460->unk50[gUnknown_203B20C->unk8.itemIndex] > 99)
+ if(gTeamInventory_203B460->unk50[gUnknown_203B20C->unk8.itemIndex] > 99)
gUnknown_203B20C->unkCC = 99;
else
- gUnknown_203B20C->unkCC = gUnknown_203B460->unk50[gUnknown_203B20C->unk8.itemIndex];
+ gUnknown_203B20C->unkCC = gTeamInventory_203B460->unk50[gUnknown_203B20C->unk8.itemIndex];
gUnknown_203B20C->unkC4 = gUnknown_203B20C->unkCC;
gUnknown_203B20C->unkD4 = 1;
gUnknown_203B20C->unkD8 = &gUnknown_203B20C->unkF0[1];
diff --git a/src/kecleon_items_1.c b/src/kecleon_items_1.c
index faa8c6b..b9a1a3c 100644
--- a/src/kecleon_items_1.c
+++ b/src/kecleon_items_1.c
@@ -4,13 +4,13 @@
#include "input.h"
#include "item.h"
#include "kecleon_items.h"
-#include "gUnknown_203B460.h"
+#include "team_inventory.h"
extern struct unkStruct_203B210 *gUnknown_203B210;
-extern struct unkStruct_203B460 *gUnknown_203B460;
+extern struct TeamInventory *gTeamInventory_203B460;
-extern u32 sub_8090CCC(struct ItemStruct_203B460 *);
-extern bool8 sub_80914E4(u8);
+extern u32 GetStackSellPrice(struct ItemSlot *);
+extern bool8 CanSellItem(u8);
extern u32 sub_8091814(void);
extern u32 sub_8091A48(void);
extern s32 sub_80144A4(s32 *);
@@ -36,14 +36,14 @@ void sub_8019B08(void)
break;
case 3:
gUnknown_203B210->unk24 = sub_801A8AC();
- gUnknown_203B210->unk1C = gUnknown_203B460->fill0[gUnknown_203B210->unk24];
- gUnknown_203B210->itemSellPrice = sub_8090CCC(&gUnknown_203B210->unk1C);
+ gUnknown_203B210->unk1C = gTeamInventory_203B460->teamItems[gUnknown_203B210->unk24];
+ gUnknown_203B210->itemSellPrice = GetStackSellPrice(&gUnknown_203B210->unk1C);
UpdateKecleonStoreState(0x1c);
break;
case 4:
gUnknown_203B210->unk24 = sub_801A8AC();
- gUnknown_203B210->unk1C = gUnknown_203B460->fill0[gUnknown_203B210->unk24];
- gUnknown_203B210->itemSellPrice = sub_8090CCC(&gUnknown_203B210->unk1C);
+ gUnknown_203B210->unk1C = gTeamInventory_203B460->teamItems[gUnknown_203B210->unk24];
+ gUnknown_203B210->itemSellPrice = GetStackSellPrice(&gUnknown_203B210->unk1C);
sub_8099690(0);
UpdateKecleonStoreState(0x1d);
break;
@@ -74,10 +74,10 @@ void sub_8019BBC(void)
}
switch(menuAction){
case 2:
- if (gUnknown_203B460->teamMoney == 0) {
+ if (gTeamInventory_203B460->teamMoney == 0) {
UpdateKecleonStoreState(0x6);
}
- else if (gUnknown_203B210->itemSellPrice > gUnknown_203B460->teamMoney) {
+ else if (gUnknown_203B210->itemSellPrice > gTeamInventory_203B460->teamMoney) {
UpdateKecleonStoreState(0xC);
}
else {
@@ -105,10 +105,10 @@ void sub_8019C78(void)
switch(menuAction){
case 3:
sub_8099690(0);
- if (!sub_80914E4(gUnknown_203B210->unk1C.itemIndex)) {
+ if (!CanSellItem(gUnknown_203B210->unk1C.itemIndex)) {
UpdateKecleonStoreState(0xd);
}
- else if (gUnknown_203B210->itemSellPrice + gUnknown_203B460->teamMoney > 99999) {
+ else if (gUnknown_203B210->itemSellPrice + gTeamInventory_203B460->teamMoney > 99999) {
UpdateKecleonStoreState(0xe);
}
else {
@@ -176,15 +176,15 @@ u32 sub_8019D8C(void)
void sub_8019DAC(void)
{
s32 iVar3;
- struct ItemStruct_203B460 *pbVar4;
+ struct ItemSlot *pbVar4;
s32 iVar5;
gUnknown_203B210->unk14 = 0;
gUnknown_203B210->unk18 = 0;
for(iVar5 = 0; iVar5 < 0x14; iVar5++){
- pbVar4 = &gUnknown_203B460->fill0[iVar5];
- if (((pbVar4->unk0 & 1) != 0) && (sub_80914E4(pbVar4->itemIndex))) {
- iVar3 = sub_8090CCC(pbVar4);
+ pbVar4 = &gTeamInventory_203B460->teamItems[iVar5];
+ if (((pbVar4->unk0 & 1) != 0) && (CanSellItem(pbVar4->itemIndex))) {
+ iVar3 = GetStackSellPrice(pbVar4);
gUnknown_203B210->unk18 += iVar3;
gUnknown_203B210->unk14++;
}
diff --git a/src/other_menus.c b/src/other_menus.c
index 99c8df9..d5134b2 100644
--- a/src/other_menus.c
+++ b/src/other_menus.c
@@ -2,7 +2,7 @@
#include "input.h"
#include "main_menu.h"
#include "item.h"
-#include "gUnknown_203B460.h"
+#include "team_inventory.h"
#include "menu.h"
#include "memory.h"
#include "text.h"
@@ -62,7 +62,7 @@ struct unkStruct_8035D94
extern struct unkStruct_8035D94 *sub_8035D94();
-extern struct unkStruct_203B460 *gUnknown_203B460;
+extern struct TeamInventory *gTeamInventory_203B460;
extern void sub_8037400(void);
extern void ResetSprites(u32);
@@ -378,7 +378,7 @@ void sub_80371B8(void)
if ((((gUnknown_203B35C->unk4 != 0) &&(gUnknown_203B35C->unk0 == 0)) &&
(pbVar2 = sub_8035D94(), pbVar2->unk0 != 0)) && (pbVar2->unk4 != 0)) {
// We received something..
- gUnknown_203B460->unk50[pbVar2->unk0] += pbVar2->unk4;
+ gTeamInventory_203B460->unk50[pbVar2->unk0] += pbVar2->unk4;
}
}
}
diff --git a/src/save.c b/src/save.c
index f679cbd..9ad7670 100644
--- a/src/save.c
+++ b/src/save.c
@@ -70,7 +70,7 @@ extern s32 gUnknown_202DE28;
extern u32 gUnknown_203B17C;
extern char *gUnknown_203B180;
extern struct unkStruct_203B45C *gRecruitedPokemonRef;
-extern struct unkStruct_203B460 *gUnknown_203B460;
+extern struct TeamInventory *gTeamInventory_203B460;
extern struct RescueTeamData *gRescueTeamInfoRef;
extern bool8 *gFriendAreas;
extern u32 gUnknown_203B46C;
@@ -624,7 +624,7 @@ void sub_8012334(struct UnkStruct_203B184 *r0)
gUnknown_203B184 = r0;
if(r0 != NULL)
{
- gUnknown_203B460 = r0->MoneyItems;
+ gTeamInventory_203B460 = r0->MoneyItems;
gRecruitedPokemonRef = r0->recruitedPokemon;
gUnknown_203B480 = r0->unk8;
gUnknown_203B484 = r0->unkC;
@@ -639,7 +639,7 @@ void sub_8012334(struct UnkStruct_203B184 *r0)
gPlayTimeRef = r0->playTime;
return;
}
- gUnknown_203B460 = GetMoneyItemsInfo();
+ gTeamInventory_203B460 = GetMoneyItemsInfo();
gRecruitedPokemonRef = GetRecruitedPokemon();
gUnknown_203B480 = sub_80950F8();
gUnknown_203B484 = sub_8095100();
diff --git a/src/trade_items_menu.c b/src/trade_items_menu.c
index 57dd99f..a2053dd 100644
--- a/src/trade_items_menu.c
+++ b/src/trade_items_menu.c
@@ -1,14 +1,14 @@
#include "global.h"
#include "input.h"
#include "item.h"
+#include "team_inventory.h"
#include "trade_items_menu.h"
-#include "gUnknown_203B460.h"
#include "memory.h"
#include "save.h"
extern struct TradeItemsMenu *gTradeItemsMenu;
-extern struct unkStruct_203B460 *gUnknown_203B460;
+extern struct TeamInventory *gTeamInventory_203B460;
extern u32 gUnknown_202DE30;
extern u32 gUnknown_202DE58;
extern struct UnkTextStruct2 gUnknown_80E6174;
@@ -44,7 +44,7 @@ extern s32 sub_80144A4(s32 *);
extern u32 sub_801CA08(u32);
extern void sub_801CBB8();
extern u8 sub_801CB24();
-extern void sub_801B3C0(struct ItemStruct_203B460 *);
+extern void sub_801B3C0(struct ItemSlot *);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, s32 *);
extern void sub_8035CC0(struct UnkTextStruct2 *, u32);
@@ -63,7 +63,7 @@ extern void sub_80073E0(u32);
extern void xxx_call_draw_string(u32, u32, u32 *, u32, u32);
extern u8 sub_801CF14(u32);
extern u32 sub_801D008();
-extern void sub_8090DC4(u32 *, u8, u32);
+extern void sub_8090DC4(void*, u8, u32);
extern void sub_801C8C4(u32, u32, s32 *, u32);
void sub_8036F30();
@@ -351,9 +351,9 @@ void TradeItem_SendItemConfirm(void)
case 5:
sub_801CBB8();
// Used temp var to get correct statements
- load = gUnknown_203B460->unk50[gTradeItemsMenu->itemToSend.itemIndex];
+ load = gTeamInventory_203B460->unk50[gTradeItemsMenu->itemToSend.itemIndex];
load -= gTradeItemsMenu->numItemsToSend;
- gUnknown_203B460->unk50[gTradeItemsMenu->itemToSend.itemIndex] = load;
+ gTeamInventory_203B460->unk50[gTradeItemsMenu->itemToSend.itemIndex] = load;
SetTradeItemMenu(TRADE_ITEMS_PREPARE_TRADE_SAVING);
PrepareSavePakWrite(SPECIES_NONE);
break;
@@ -450,9 +450,9 @@ void TradeItem_AddItem(void)
{
// Use temp var to get correct statements
u16 load;
- load = gUnknown_203B460->unk50[gTradeItemsMenu->sentItem.itemIndex];
+ load = gTeamInventory_203B460->unk50[gTradeItemsMenu->sentItem.itemIndex];
load += gTradeItemsMenu->sentItem.numItems;
- gUnknown_203B460->unk50[gTradeItemsMenu->sentItem.itemIndex] = load;
+ gTeamInventory_203B460->unk50[gTradeItemsMenu->sentItem.itemIndex] = load;
}
void sub_80369FC(void)
@@ -1082,7 +1082,7 @@ void sub_8036F30(void)
void sub_8036F74(void)
{
sub_8006518(gTradeItemsMenu->unk184);
- sub_8036ECC(2, gUnknown_203B460->unk50[gTradeItemsMenu->itemToSend.itemIndex]);
+ sub_8036ECC(2, gTeamInventory_203B460->unk50[gTradeItemsMenu->itemToSend.itemIndex]);
sub_801CCD8();
sub_8035CF4(&gTradeItemsMenu->unk44, 3, 0);
sub_8036F30();
diff --git a/src/wonder_mail.c b/src/wonder_mail.c
index af16acb..5ddebfe 100644
--- a/src/wonder_mail.c
+++ b/src/wonder_mail.c
@@ -7,11 +7,11 @@
#include "memory.h"
#include "text.h"
#include "sub_8095228.h"
-#include "gUnknown_203B460.h"
+#include "team_inventory.h"
extern struct WonderMailStruct_203B2C0 *gUnknown_203B2C0;
extern struct WonderMailStruct_203B2C4 *gUnknown_203B2C4;
-extern struct unkStruct_203B460 *gUnknown_203B460;
+extern struct TeamInventory *gTeamInventory_203B460;
extern u32 sub_80144A4(s32 *r0);
extern void sub_8011C28(u32);
@@ -29,7 +29,7 @@ extern u8 sub_80A2824(u32);
#include "data/wonder_mail_1.h"
-const struct ItemStruct_203B460 gUnknown_80DED44 =
+const struct ItemSlot gUnknown_80DED44 =
{
1, 0, 0
};
@@ -170,7 +170,7 @@ extern void sub_803092C();
extern void sub_8035CF4(u32 *, u32, u32);
extern u32 sub_801CA08(u32);
extern void sub_801CBB8();
-extern void sub_801B3C0(struct ItemStruct_203B460 *);
+extern void sub_801B3C0(struct ItemSlot *);
extern u8 sub_801CB24();
extern void sub_801B450();
extern u32 sub_801B410();
@@ -1548,7 +1548,7 @@ void sub_8029F98(void)
if (sub_80144A4(&auStack20) != 0) {
return;
}
- MemoryFill8((u8 *)&gUnknown_203B2C4->unk41C, 0, sizeof(struct ItemStruct_203B460));
+ MemoryFill8((u8 *)&gUnknown_203B2C4->unk41C, 0, sizeof(struct ItemSlot));
gUnknown_203B2C4->unk41C.itemIndex = 0;
gUnknown_203B2C4->unk41C.numItems = 1;
gUnknown_203B2C4->unk41C.unk0 = 0;
@@ -2007,7 +2007,7 @@ void sub_802A798(void)
{
return_var->unk20 = gUnknown_203B2C4->unk41C;
}
- gUnknown_203B460->unk50[gUnknown_203B2C4->unk41C.itemIndex]--;
+ gTeamInventory_203B460->unk50[gUnknown_203B2C4->unk41C.itemIndex]--;
sub_802B2BC(0x29);
break;
case 8: