summaryrefslogtreecommitdiff
path: root/src/berry.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/berry.c')
-rw-r--r--src/berry.c65
1 files changed, 28 insertions, 37 deletions
diff --git a/src/berry.c b/src/berry.c
index e00015477..84db22a27 100644
--- a/src/berry.c
+++ b/src/berry.c
@@ -1,56 +1,47 @@
#include "global.h"
+#include "berry.h"
+#include "asm.h"
+#include "item.h"
+#include "main.h"
#include "text.h"
+#include "rng.h"
+#include "items.h"
-#define FIRST_BERRY 0x85 // ITEM_CHERI_BERRY
-#define LAST_BERRY 0xaf // ITEM_ENIGMA_BERRY
-
-extern u8 GetStageByBerryTreeId(u8);
-extern u16 GetStageDurationByBerryType(u8);
-extern void SetMainCallback2(void*);
-extern void sub_80A68CC();
-extern u16 Random(void);
-extern u8 sub_8060234(u8, u8, u8);
-extern u8 AddBagItem(u16, u8);
-extern void sub_8060288(u8, u8, u8);
-extern u8 IsBagPocketNonEmpty(u8);
-extern void GetCameraCoords(s16*, s16*);
-extern u8 FieldObjectGetBerryTreeId(u8);
-extern u8 *GetFieldObjectScriptPointerForComparison();
+#define FIRST_BERRY ITEM_CHERI_BERRY
+#define LAST_BERRY ITEM_ENIGMA_BERRY
extern struct Berry gBerries[];
extern u8 BerryTreeScript;
-extern struct BerryTree gUnknown_083CD780;
+extern struct BerryTree gBlankBerryTree;
extern u16 gScriptItemId;
extern u16 gScriptLastTalked;
extern u16 gSpecialVar_0x8004;
extern u16 gSpecialVar_0x8005;
extern u16 gSpecialVar_0x8006;
-u8 CalcBerryYield(struct BerryTree *tree);
-
-void unref_sub_80B4884(void)
+// unused
+void ClearEnigmaBerries(void)
{
CpuFill16(0, &gSaveBlock1.enigmaBerry, sizeof(gSaveBlock1.enigmaBerry));
}
-// setEnigmaBerry
-void sub_80B48A8(u8 *src)
+void SetEnigmaBerry(u8 *src)
{
- unsigned int i;
+ u32 i;
u8 *dest = (u8*)&gSaveBlock1.enigmaBerry;
for (i = 0; i < sizeof(gSaveBlock1.enigmaBerry); i++)
dest[i] = src[i];
+
gSaveBlock1.enigmaBerry.berry.description1 = gSaveBlock1.enigmaBerry.description1;
gSaveBlock1.enigmaBerry.berry.description2 = gSaveBlock1.enigmaBerry.description2;
}
-// checksum
-u32 sub_80B48F8(struct EnigmaBerry *enigmaBerry)
+u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry)
{
u8 *description1;
u8 *description2;
- unsigned int i;
+ u32 i;
u32 checksum;
u8 *dest;
@@ -61,7 +52,7 @@ u32 sub_80B48F8(struct EnigmaBerry *enigmaBerry)
dest = (u8*)enigmaBerry;
checksum = 0;
- for (i = 0; i < ((int)&gSaveBlock1.enigmaBerry.checksum - (int)&gSaveBlock1.enigmaBerry); i++)
+ for (i = 0; i < ((u32)&gSaveBlock1.enigmaBerry.checksum - (u32)&gSaveBlock1.enigmaBerry); i++)
{
checksum += dest[i];
}
@@ -72,20 +63,20 @@ u32 sub_80B48F8(struct EnigmaBerry *enigmaBerry)
return checksum;
}
-bool32 sub_80B4940(void)
+bool32 IsEnigmaBerryValid(void)
{
if (!gSaveBlock1.enigmaBerry.berry.stageDuration)
return FALSE;
if (!gSaveBlock1.enigmaBerry.berry.maxYield)
return FALSE;
- if (sub_80B48F8(&gSaveBlock1.enigmaBerry) != gSaveBlock1.enigmaBerry.checksum)
+ if (GetEnigmaBerryChecksum(&gSaveBlock1.enigmaBerry) != gSaveBlock1.enigmaBerry.checksum)
return FALSE;
return TRUE;
}
struct Berry *GetBerryInfo(u8 berry)
{
- if (berry == 0x2B && sub_80B4940())
+ if (berry == 0x2B && IsEnigmaBerryValid())
return &gSaveBlock1.enigmaBerry.berry;
else
{
@@ -133,7 +124,7 @@ bool32 IsPlayerFacingPlantedBerryTree(void)
return FALSE;
}
-u8 WaterBerryTree(void)
+u8 TryToWaterBerryTree(void)
{
if (GetFieldObjectScriptPointerForComparison() != &BerryTreeScript)
return 0;
@@ -141,11 +132,11 @@ u8 WaterBerryTree(void)
return FieldObjectInteractionWaterBerryTree();
}
-void sub_80B4A90(void)
+void ClearBerryTrees(void)
{
int i;
struct SaveBlock1 *saveBlock1 = &gSaveBlock1;
- struct BerryTree berryTree = gUnknown_083CD780;
+ struct BerryTree berryTree = gBlankBerryTree;
for (i = 0; i < 128; i++)
saveBlock1->berryTrees[i] = berryTree;
@@ -174,7 +165,7 @@ bool32 BerryTreeGrow(struct BerryTree *tree)
tree->berryYield = 0;
tree->stage = 2;
if (++tree->regrowthCount == 10)
- *tree = gUnknown_083CD780;
+ *tree = gBlankBerryTree;
break;
}
return TRUE;
@@ -193,7 +184,7 @@ void BerryTreeTimeUpdate(int time)
{
if (time >= GetStageDurationByBerryType(tree->berry) * 71)
{
- *tree = gUnknown_083CD780;
+ *tree = gBlankBerryTree;
}
else
{
@@ -222,7 +213,7 @@ void PlantBerryTree(u8 id, u8 berry, u8 stage, bool8 sparkle)
{
struct BerryTree *tree = GetBerryTreeInfo(id);
- *tree = gUnknown_083CD780;
+ *tree = gBlankBerryTree;
tree->berry = berry;
tree->secondsUntilNextStage = GetStageDurationByBerryType(berry);
tree->stage = stage;
@@ -239,7 +230,7 @@ void PlantBerryTree(u8 id, u8 berry, u8 stage, bool8 sparkle)
void RemoveBerryTree(u8 id)
{
- gSaveBlock1.berryTrees[id] = gUnknown_083CD780;
+ gSaveBlock1.berryTrees[id] = gBlankBerryTree;
}
u8 GetBerryTypeByBerryTreeId(u8 id)
@@ -397,7 +388,7 @@ void FieldObjectInteractionRemoveBerryTree(void)
u8 PlayerHasBerries(void)
{
- return IsBagPocketNonEmpty(4);
+ return IsBagPocketNonEmpty(BAG_BERRIES);
}
void ResetBerryTreeSparkleFlags(void)