document some underground code (#581)

This commit is contained in:
scbroede 2025-06-29 16:31:56 -04:00 committed by GitHub
parent 7721ebb259
commit a16b4fdda9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
17 changed files with 498 additions and 424 deletions

View File

@ -632,11 +632,11 @@ TEXT_BANK_UNDERGROUND_TRAP_NAMES
TEXT_BANK_UNDERGROUND_TRAP_NAMES_WITH_ARTICLES
TEXT_BANK_UNDERGROUND_ANSWERS
TEXT_BANK_UNDERGROUND_QUESTIONS
TEXT_BANK_UNK_0634
TEXT_BANK_UNDERGROUND_COMMON
TEXT_BANK_UNION_ROOM
TEXT_BANK_UNK_0636
TEXT_BANK_UNK_0637
TEXT_BANK_UNK_0638
TEXT_BANK_UNDERGROUND_NPCS
TEXT_BANK_UNDERGROUND_DECORATE_BASE
TEXT_BANK_UNDERGROUND_CAPTURE_FLAG
TEXT_BANK_UNK_0639
TEXT_BANK_UNK_0640
TEXT_BANK_UNK_0641

View File

@ -41,4 +41,73 @@ void ov23_02241648(int param0);
BOOL ov23_02241670(void);
void ov23_02241690(int param0, int param1);
enum MiningObjectIDs {
MINING_SMALL_PRISM_SPHERE = 1,
MINING_SMALL_PALE_SPHERE,
MINING_SMALL_RED_SPHERE,
MINING_SMALL_BLUE_SPHERE,
MINING_SMALL_GREEN_SPHERE,
MINING_LARGE_PRISM_SPHERE,
MINING_LARGE_PALE_SPHERE,
MINING_LARGE_RED_SPHERE,
MINING_LARGE_BLUE_SPHERE,
MINING_LARGE_GREEN_SPHERE,
MINING_TREASURE_OVAL_STONE,
MINING_TREASURE_ODD_KEYSTONE,
MINING_TREASURE_SUN_STONE,
MINING_TREASURE_STAR_PIECE,
MINING_TREASURE_MOON_STONE,
MINING_TREASURE_HARD_STONE,
MINING_TREASURE_THUNDERSTONE,
MINING_TREASURE_EVERSTONE,
MINING_TREASURE_FIRE_STONE,
MINING_TREASURE_WATER_STONE,
MINING_TREASURE_LEAF_STONE,
MINING_TREASURE_NUGGET_UNUSED,
MINING_TREASURE_HELIX_FOSSIL,
MINING_TREASURE_DOME_FOSSIL,
MINING_TREASURE_CLAW_FOSSIL,
MINING_TREASURE_ROOT_FOSSIL,
MINING_TREASURE_OLD_AMBER,
MINING_TREASURE_RARE_BONE,
MINING_TREASURE_REVIVE,
MINING_TREASURE_MAX_REVIVE,
MINING_TREASURE_RED_SHARD,
MINING_TREASURE_BLUE_SHARD,
MINING_TREASURE_YELLOW_SHARD,
MINING_TREASURE_GREEN_SHARD,
MINING_TREASURE_HEART_SCALE,
MINING_TREASURE_ARMOR_FOSSIL,
MINING_TREASURE_SKULL_FOSSIL,
MINING_TREASURE_LIGHT_CLAY,
MINING_TREASURE_IRON_BALL,
MINING_TREASURE_ICY_ROCK,
MINING_TREASURE_SMOOTH_ROCK,
MINING_TREASURE_HEAT_ROCK,
MINING_TREASURE_DAMP_ROCK,
MINING_TREASURE_FLAME_PLATE,
MINING_TREASURE_SPLASH_PLATE,
MINING_TREASURE_ZAP_PLATE,
MINING_TREASURE_MEADOW_PLATE,
MINING_TREASURE_ICICLE_PLATE,
MINING_TREASURE_FIST_PLATE,
MINING_TREASURE_TOXIC_PLATE,
MINING_TREASURE_EARTH_PLATE,
MINING_TREASURE_SKY_PLATE,
MINING_TREASURE_MIND_PLATE,
MINING_TREASURE_INSECT_PLATE,
MINING_TREASURE_STONE_PLATE,
MINING_TREASURE_SPOOKY_PLATE,
MINING_TREASURE_DRACO_PLATE,
MINING_TREASURE_DREAD_PLATE,
MINING_TREASURE_IRON_PLATE,
MINING_ROCK_1,
MINING_ROCK_2,
MINING_ROCK_3,
MINING_ROCK_4,
MINING_ROCK_5,
MINING_ROCK_6,
MINING_ROCK_7
};
#endif // POKEPLATINUM_OV23_0223E140_H

View File

@ -19,7 +19,7 @@ void ov23_022419B4(int param0, int param1, void *param2, void *param3);
void ov23_02241A80(UnkStruct_ov23_02241A80 *param0, int param1);
BOOL ov23_02241A88(UnkStruct_ov23_02241A80 *param0, UnkStruct_ov23_02241A88 *param1);
void ov23_02241AE8(int param0, int param1, int param2, int param3);
BOOL ov23_02241CF4(int param0);
BOOL IsMiningItemSphere(int miningItemID);
BOOL ov23_02241D04(int param0, int param1);
int ov23_02241D18(int param0);
int ov23_02241D38(int param0);

View File

@ -25,17 +25,17 @@ typedef struct UndergroundData {
u8 unk_620[100];
u8 unk_684[100][3];
u8 unk_7B0[88];
u32 unk_808;
u32 minedPlates;
u8 unk_80C[200];
u8 unk_8D4[40];
u8 unk_8FC[40];
u8 unk_924[40];
u8 unk_94C[40];
u8 unk_974[40];
u8 treasure[40];
u8 spheres[40];
u8 sphereSizes[40];
u8 unk_99C[15];
u8 stepCount;
u8 unk_9AC_0 : 4;
u8 unk_9AC_4 : 4;
u8 hasMined : 4;
} UndergroundData;
#endif // POKEPLATINUM_STRUCT_UNDERGROUND_DATA_H

View File

@ -33,7 +33,7 @@ void UndergroundData_SetUnusedField(UndergroundData *undergroundData);
void sub_02028830(UndergroundData *param0, const TrainerInfo *param1);
TrainerInfo *sub_020288C8(const UndergroundData *param0, int heapID, int param2);
u32 UndergroundData_GetRandomSeed(UndergroundData *param0);
int Underground_GetMiningItemID(int param0);
int Underground_ConvertTreasureToBagItem(int treasureID);
BOOL sub_0202895C(UndergroundData *param0, int param1);
BOOL sub_02028984(UndergroundData *param0, int param1);
int sub_020289A0(UndergroundData *param0);
@ -49,13 +49,13 @@ int sub_02028B88(UndergroundData *param0, int param1);
int sub_02028B94(UndergroundData *param0, int param1);
BOOL sub_02028BC8(UndergroundData *param0, int param1);
void sub_02028BE8(UndergroundData *param0, int param1, int param2);
int sub_02028C3C(UndergroundData *param0);
int UndergroundData_GetSphereCount(UndergroundData *undergroundData);
int sub_02028C54(UndergroundData *param0, int param1);
int sub_02028C60(UndergroundData *param0, int param1);
int sub_02028C6C(UndergroundData *param0, int param1);
BOOL sub_02028CB0(UndergroundData *param0, int param1, int param2);
void sub_02028CD8(UndergroundData *param0, int param1, int param2);
int sub_02028D58(UndergroundData *param0);
int UndergroundData_GetTreasureCount(UndergroundData *undergroundData);
int sub_02028D74(UndergroundData *param0, int param1);
int sub_02028D80(UndergroundData *param0, int param1);
BOOL sub_02028DB4(UndergroundData *param0, int param1);
@ -85,12 +85,12 @@ int sub_02029140(UndergroundData *param0, int param1, int param2);
void sub_020291A4(UndergroundData *param0, int param1);
int sub_020291CC(UndergroundData *param0, int param1);
int sub_020291EC(UndergroundData *param0, int param1);
BOOL sub_0202920C(UndergroundData *param0);
void sub_02029220(UndergroundData *param0);
BOOL UndergroundData_HasNeverMined(UndergroundData *undergroundData);
void UndergroundData_SetHasMined(UndergroundData *undergroundData);
BOOL sub_02029234(UndergroundData *param0);
void sub_02029240(UndergroundData *param0);
void sub_02029250(UndergroundData *param0, int param1);
BOOL sub_02029274(UndergroundData *param0, int param1);
void UndergroundData_SetPlateMined(UndergroundData *undergroundData, int miningItemID);
BOOL UndergroundData_HasPlateNeverBeenMined(UndergroundData *undergroundData, int miningItemID);
void UndergroundData_IncrementStepCount(UndergroundData *param0);
int UndergroundData_GetStepCount(UndergroundData *param0);
void sub_020292C0(UnkStruct_02029894 *param0);

View File

@ -70,7 +70,7 @@
<attribute name="window_context_name">used</attribute>
<language name="English">Sorry!\nSomethings come up!</language>
</row>
<row id="pl_msg_00000634_00017" index="17">
<row id="UndergroundCommon_Text_ItemWasObtained" index="17">
<attribute name="window_context_name">used</attribute>
<language name="English">{STRVAR_1 25, 2, 0}\nwas obtained.</language>
</row>
@ -78,15 +78,15 @@
<attribute name="window_context_name">used</attribute>
<language name="English">{STRVAR_1 25, 3, 0} was\nfound in the ground!\r{STRVAR_1 3, 1, 0} disengaged\nthe {STRVAR_1 25, 3, 0}!</language>
</row>
<row id="pl_msg_00000634_00019" index="19">
<row id="UndergroundCommon_Text_WallIsBulging" index="19">
<attribute name="window_context_name">used</attribute>
<language name="English">The wall is bulging slightly.\nTry digging into it?</language>
</row>
<row id="pl_msg_00000634_00020" index="20">
<row id="UndergroundCommon_Text_TooBadBagIsFull1" index="20">
<attribute name="window_context_name">used</attribute>
<language name="English">Too bad!\nYour Bag is full!</language>
</row>
<row id="pl_msg_00000634_00021" index="21">
<row id="UndergroundCommon_Text_TooBadBagIsFull2" index="21">
<attribute name="window_context_name">used</attribute>
<language name="English">Too bad!\nYour Bag is full!</language>
</row>
@ -258,19 +258,19 @@
<language name="English"></language>
<language name="日本語">XXXXXXXXXXXXXX</language>
</row>
<row id="pl_msg_00000634_00062" index="62">
<row id="UndergroundCommon_Text_SomethingPingedInWall" index="62">
<attribute name="window_context_name">used</attribute>
<language name="English">Something pinged in the wall!\n{STRVAR_1 50, 0, 0} confirmed!</language>
</row>
<row id="pl_msg_00000634_00063" index="63">
<row id="UndergroundCommon_Text_WallCollapsed" index="63">
<attribute name="window_context_name">used</attribute>
<language name="English">The wall collapsed!</language>
</row>
<row id="pl_msg_00000634_00064" index="64">
<row id="UndergroundCommon_Text_EverythingDugUp" index="64">
<attribute name="window_context_name">used</attribute>
<language name="English">Everything was dug up!</language>
</row>
<row id="pl_msg_00000634_00065" index="65">
<row id="UndergroundCommon_Text_TooBadBagIsFull3" index="65">
<attribute name="window_context_name">used</attribute>
<language name="English">Too bad!\nYour Bag is full!</language>
</row>
@ -286,7 +286,7 @@
<attribute name="window_context_name">used</attribute>
<language name="English">Blocked the entrance to decorate\nthe Secret Base.</language>
</row>
<row id="pl_msg_00000634_00069" index="69">
<row id="UndergroundCommon_Text_YouObtainedSphere" index="69">
<attribute name="window_context_name">used</attribute>
<language name="English">You obtained {STRVAR_1 25, 2, 0}, size {STRVAR_1 51, 1, 0}!</language>
</row>
@ -351,7 +351,7 @@
<attribute name="window_context_name">used</attribute>
<language name="English">You cant bury a Sphere inside\na Secret Base.</language>
</row>
<row id="pl_msg_00000634_00085" index="85">
<row id="UndergroundCommon_Text_MiningTutorial" index="85">
<attribute name="window_context_name">used</attribute>
<language name="English">...\rOh? There is a note tucked inside\nthe Explorer Kit.\r“Digging for Treasure and Spheres!”\rIve put a sledgehammer and pickax\nin your Explorer Kit!\rUse them, and youll be able to touch\nwalls to dig out all sorts of stuff!\rIm sure you can dig them out before\nthe wall comes tumbling down!\rYou can do it!\nGood luck, youngster!</language>
</row>

File diff suppressed because it is too large Load Diff

View File

@ -451,13 +451,13 @@ static void ov23_02241CAC(UnkStruct_ov23_02241974 *param0)
ov23_02241778();
}
BOOL ov23_02241CF4(int param0)
BOOL IsMiningItemSphere(int miningItemID)
{
if ((param0 != 0) && (param0 < 11)) {
return 1;
if ((miningItemID != 0) && (miningItemID < MINING_TREASURE_OVAL_STONE)) {
return TRUE;
}
return 0;
return FALSE;
}
BOOL ov23_02241D04(int param0, int param1)

View File

@ -137,11 +137,11 @@ static void CommManUnderground_Init(CommManUnderground *param0, FieldSystem *fie
sCommManUnderground->unk_1C.unk_02 = 0;
sCommManUnderground->unk_14B = 0;
sCommManUnderground->unk_147 = 1;
sCommManUnderground->unk_118 = ov23_02253D48(634, HEAP_ID_33, fieldSystem->bgConfig, v0, 500);
sCommManUnderground->unk_11C = ov23_02253D48(638, HEAP_ID_33, fieldSystem->bgConfig, v0, 0);
sCommManUnderground->unk_120 = ov23_02253D48(636, HEAP_ID_33, fieldSystem->bgConfig, v0, 1000);
sCommManUnderground->unk_124 = ov23_02253D48(637, HEAP_ID_33, fieldSystem->bgConfig, v0, 0);
sCommManUnderground->unk_128 = ov23_02253D48(630, HEAP_ID_33, fieldSystem->bgConfig, v0, 0);
sCommManUnderground->unk_118 = ov23_02253D48(TEXT_BANK_UNDERGROUND_COMMON, HEAP_ID_33, fieldSystem->bgConfig, v0, 500);
sCommManUnderground->unk_11C = ov23_02253D48(TEXT_BANK_UNDERGROUND_CAPTURE_FLAG, HEAP_ID_33, fieldSystem->bgConfig, v0, 0);
sCommManUnderground->unk_120 = ov23_02253D48(TEXT_BANK_UNDERGROUND_NPCS, HEAP_ID_33, fieldSystem->bgConfig, v0, 1000);
sCommManUnderground->unk_124 = ov23_02253D48(TEXT_BANK_UNDERGROUND_DECORATE_BASE, HEAP_ID_33, fieldSystem->bgConfig, v0, 0);
sCommManUnderground->unk_128 = ov23_02253D48(TEXT_BANK_UNDERGROUND_TRAP_NAMES, HEAP_ID_33, fieldSystem->bgConfig, v0, 0);
LoadMessageBoxGraphics(sCommManUnderground->fieldSystem->bgConfig, 3, (1024 - (18 + 12)), 10, 0, HEAP_ID_FIELD);
Graphics_LoadPalette(NARC_INDEX_DATA__UG_TRAP, 52, 0, 10 * 0x20, 4 * 0x20, HEAP_ID_FIELD);

View File

@ -240,7 +240,7 @@ static void ov23_0224DD2C(UnkStruct_ov23_0224E280 *param0)
MessageLoader *v1;
int v2;
v1 = MessageLoader_Init(MESSAGE_LOADER_BANK_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_UNK_0634, HEAP_ID_FIELD);
v1 = MessageLoader_Init(MESSAGE_LOADER_BANK_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_UNDERGROUND_COMMON, HEAP_ID_FIELD);
for (v2 = 0; v2 < NELEMS(Unk_ov23_022568B4); v2++) {
StringList_AddFromMessageBank(param0->unk_1C, v1, Unk_ov23_022568B4[v2].unk_00, Unk_ov23_022568B4[v2].unk_04);

View File

@ -335,9 +335,9 @@ void ov23_0224F634(int param0)
static int ov23_0224F658(void *param0)
{
UnkStruct_ov23_02250CD4 *v0 = param0;
UndergroundData *v1 = SaveData_GetUndergroundData(FieldSystem_GetSaveData(v0->fieldSystem));
UndergroundData *undergroundData = SaveData_GetUndergroundData(FieldSystem_GetSaveData(v0->fieldSystem));
return sub_02028C3C(v1);
return UndergroundData_GetSphereCount(undergroundData);
}
int ov23_0224F66C(int param0, void *param1)
@ -367,9 +367,9 @@ int ov23_0224F69C(int param0, void *param1)
static int ov23_0224F6B4(void *param0)
{
UnkStruct_ov23_02250CD4 *v0 = param0;
UndergroundData *v1 = SaveData_GetUndergroundData(FieldSystem_GetSaveData(v0->fieldSystem));
UndergroundData *undergroundData = SaveData_GetUndergroundData(FieldSystem_GetSaveData(v0->fieldSystem));
return sub_02028D58(v1);
return UndergroundData_GetTreasureCount(undergroundData);
}
int ov23_0224F6C8(int param0, void *param1)
@ -380,21 +380,21 @@ int ov23_0224F6C8(int param0, void *param1)
return sub_02028D74(v1, param0);
}
BOOL ov23_0224F6E0(int param0, int param1)
BOOL ov23_0224F6E0(int sphereID, int sphereSize)
{
int v0 = param0;
int v0 = sphereID;
GF_ASSERT(param0 < 11);
GF_ASSERT(sphereID < MINING_TREASURE_OVAL_STONE);
if (param0 >= 6) {
if (sphereID >= MINING_LARGE_PRISM_SPHERE) {
v0 -= 5;
}
if (param1 > 99) {
param1 = 99;
if (sphereSize > 99) {
sphereSize = 99;
}
return sub_02028CB0(Unk_ov23_022577B8->unk_00, v0, param1);
return sub_02028CB0(Unk_ov23_022577B8->unk_00, v0, sphereSize);
}
BOOL ov23_0224F710(int param0)
@ -1310,7 +1310,7 @@ static BOOL ov23_022507D8(SysTask *param0, void *param1)
ov23_0224FCF4(v0);
if (v1 == 3) {
int item = Underground_GetMiningItemID(Unk_ov23_022577B8->unk_05);
int item = Underground_ConvertTreasureToBagItem(Unk_ov23_022577B8->unk_05);
Bag *v4 = SaveData_GetBag(v0->fieldSystem->saveData);
Sound_PlayEffect(SEQ_SE_CONFIRM);

View File

@ -28,7 +28,7 @@ typedef struct UnkStruct_ov23_02253E2C_t {
SysTask *unk_20;
MessageLoader *unk_24;
StringTemplate *unk_28;
int unk_2C;
int bankID;
int unk_30;
int heapID;
int unk_38;
@ -70,7 +70,7 @@ const ListMenuTemplate *ov23_02253D40(void)
return &Unk_ov23_022569E0;
}
UnkStruct_ov23_02253E2C *ov23_02253D48(int param0, int heapID, BgConfig *param2, int param3, int param4)
UnkStruct_ov23_02253E2C *ov23_02253D48(int bankID, int heapID, BgConfig *param2, int param3, int param4)
{
int v0 = param4;
UnkStruct_ov23_02253E2C *v1 = Heap_AllocFromHeap(heapID, sizeof(UnkStruct_ov23_02253E2C));
@ -84,8 +84,8 @@ UnkStruct_ov23_02253E2C *ov23_02253D48(int param0, int heapID, BgConfig *param2,
v1->unk_00 = Strbuf_Init(v0, heapID);
v1->unk_04 = Strbuf_Init(v0, heapID);
v1->unk_28 = StringTemplate_Default(heapID);
v1->unk_2C = param0;
v1->unk_24 = MessageLoader_Init(MESSAGE_LOADER_NARC_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, param0, heapID);
v1->bankID = bankID;
v1->unk_24 = MessageLoader_Init(MESSAGE_LOADER_NARC_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, bankID, heapID);
v1->heapID = heapID;
v1->unk_18 = param2;
@ -110,13 +110,13 @@ void ov23_02253DD8(UnkStruct_ov23_02253E2C *param0)
Heap_FreeToHeap(param0);
}
void ov23_02253DFC(UnkStruct_ov23_02253E2C *param0, int param1, int param2)
void ov23_02253DFC(UnkStruct_ov23_02253E2C *param0, int bankID, int param2)
{
if (param0->unk_2C != param1) {
param0->unk_2C = param1;
if (param0->bankID != bankID) {
param0->bankID = bankID;
MessageLoader_Free(param0->unk_24);
param0->unk_24 = MessageLoader_Init(param2, NARC_INDEX_MSGDATA__PL_MSG, param1, param0->heapID);
param0->unk_24 = MessageLoader_Init(param2, NARC_INDEX_MSGDATA__PL_MSG, bankID, param0->heapID);
GF_ASSERT(param0->unk_24 != NULL);
}
}

View File

@ -176,7 +176,7 @@ static void ov23_0225437C(UnkStruct_ov23_022542D8 *param0)
4,
};
v5 = MessageLoader_Init(MESSAGE_LOADER_BANK_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_UNK_0637, HEAP_ID_FIELD);
v5 = MessageLoader_Init(MESSAGE_LOADER_BANK_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_UNDERGROUND_DECORATE_BASE, HEAP_ID_FIELD);
{
Strbuf *v8;
@ -417,7 +417,7 @@ static void ov23_022546E0(UnkStruct_ov23_02254594 *param0)
Strbuf *v15;
StringTemplate *v16;
v12 = MessageLoader_Init(MESSAGE_LOADER_BANK_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_UNK_0637, HEAP_ID_FIELD);
v12 = MessageLoader_Init(MESSAGE_LOADER_BANK_HANDLE, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_UNDERGROUND_DECORATE_BASE, HEAP_ID_FIELD);
Window_FillTilemap(&param0->unk_18, 15);

View File

@ -11,6 +11,8 @@
#include "struct_defs/underground_data.h"
#include "struct_defs/underground_record.h"
#include "overlay023/ov23_0223E140.h"
#include "heap.h"
#include "math_util.h"
#include "rtc.h"
@ -133,7 +135,7 @@ static int sub_020285F8(UndergroundData *param0)
int v0;
for (v0 = 0; v0 < 40; v0++) {
if (param0->unk_94C[v0] == 0) {
if (param0->spheres[v0] == 0) {
return v0;
}
}
@ -146,7 +148,7 @@ static int sub_02028618(UndergroundData *param0)
int v0;
for (v0 = 0; v0 < 40; v0++) {
if (param0->unk_924[v0] == 0) {
if (param0->treasure[v0] == 0) {
return v0;
}
}
@ -326,13 +328,13 @@ u32 UndergroundData_GetRandomSeed(UndergroundData *param0)
return param0->randomSeed;
}
int Underground_GetMiningItemID(int itemOptionID)
int Underground_ConvertTreasureToBagItem(int treasureID)
{
GF_ASSERT(11 <= itemOptionID);
GF_ASSERT(itemOptionID < 60);
GF_ASSERT(MINING_TREASURE_OVAL_STONE <= treasureID);
GF_ASSERT(treasureID < MINING_ROCK_1);
itemOptionID -= 11;
return sMiningItems[itemOptionID];
treasureID -= MINING_TREASURE_OVAL_STONE;
return sMiningItems[treasureID];
}
BOOL sub_0202895C(UndergroundData *param0, int param1)
@ -556,12 +558,12 @@ void sub_02028BE8(UndergroundData *param0, int param1, int param2)
}
}
int sub_02028C3C(UndergroundData *param0)
int UndergroundData_GetSphereCount(UndergroundData *undergroundData)
{
int v0;
for (v0 = 0; v0 < 40; v0++) {
if (param0->unk_94C[v0] == 0) {
if (undergroundData->spheres[v0] == 0) {
break;
}
}
@ -571,12 +573,12 @@ int sub_02028C3C(UndergroundData *param0)
int sub_02028C54(UndergroundData *param0, int param1)
{
return param0->unk_94C[param1];
return param0->spheres[param1];
}
int sub_02028C60(UndergroundData *param0, int param1)
{
return param0->unk_974[param1];
return param0->sphereSizes[param1];
}
int sub_02028C6C(UndergroundData *param0, int param1)
@ -584,28 +586,28 @@ int sub_02028C6C(UndergroundData *param0, int param1)
int v0, v1, v2;
v1 = param1;
v2 = param0->unk_94C[v1];
v2 = param0->spheres[v1];
for (v0 = v1; v0 < 40 - 1; v0++) {
param0->unk_94C[v0] = param0->unk_94C[v0 + 1];
param0->unk_974[v0] = param0->unk_974[v0 + 1];
param0->spheres[v0] = param0->spheres[v0 + 1];
param0->sphereSizes[v0] = param0->sphereSizes[v0 + 1];
}
param0->unk_94C[40 - 1] = 0;
param0->spheres[40 - 1] = 0;
return v2;
}
BOOL sub_02028CB0(UndergroundData *param0, int param1, int param2)
BOOL sub_02028CB0(UndergroundData *undergroundData, int sphereID, int sphereSize)
{
int v0;
BOOL v1 = 0;
v0 = sub_020285F8(param0);
v0 = sub_020285F8(undergroundData);
if (v0 != -1) {
param0->unk_94C[v0] = param1;
param0->unk_974[v0] = param2;
undergroundData->spheres[v0] = sphereID;
undergroundData->sphereSizes[v0] = sphereSize;
v1 = 1;
}
@ -618,30 +620,30 @@ void sub_02028CD8(UndergroundData *param0, int param1, int param2)
u8 v3[40];
u8 v4[40];
MI_CpuCopy8(param0->unk_94C, v3, 40);
MI_CpuCopy8(param0->unk_974, v4, 40);
MI_CpuCopy8(param0->spheres, v3, 40);
MI_CpuCopy8(param0->sphereSizes, v4, 40);
for (v0 = 0; v0 < 40; v0++) {
if (v0 != param1) {
param0->unk_94C[v1] = v3[v0];
param0->unk_974[v1] = v4[v0];
param0->spheres[v1] = v3[v0];
param0->sphereSizes[v1] = v4[v0];
v1++;
}
if (v0 == param2) {
param0->unk_94C[v1] = v3[param1];
param0->unk_974[v1] = v4[param1];
param0->spheres[v1] = v3[param1];
param0->sphereSizes[v1] = v4[param1];
v1++;
}
}
}
int sub_02028D58(UndergroundData *param0)
int UndergroundData_GetTreasureCount(UndergroundData *undergroundData)
{
int v0;
for (v0 = 0; v0 < 40; v0++) {
if (param0->unk_924[v0] == 0) {
if (undergroundData->treasure[v0] == 0) {
break;
}
}
@ -651,7 +653,7 @@ int sub_02028D58(UndergroundData *param0)
int sub_02028D74(UndergroundData *param0, int param1)
{
return param0->unk_924[param1];
return param0->treasure[param1];
}
int sub_02028D80(UndergroundData *param0, int param1)
@ -659,13 +661,13 @@ int sub_02028D80(UndergroundData *param0, int param1)
int v0, v1, v2;
v1 = param1;
v2 = param0->unk_924[v1];
v2 = param0->treasure[v1];
for (v0 = v1; v0 < 40 - 1; v0++) {
param0->unk_924[v0] = param0->unk_924[v0 + 1];
param0->treasure[v0] = param0->treasure[v0 + 1];
}
param0->unk_924[40 - 1] = 0;
param0->treasure[40 - 1] = 0;
return v2;
}
@ -678,7 +680,7 @@ BOOL sub_02028DB4(UndergroundData *param0, int param1)
v0 = sub_02028618(param0);
if (v0 != -1) {
param0->unk_924[v0] = param1;
param0->treasure[v0] = param1;
v1 = 1;
}
@ -690,16 +692,16 @@ void sub_02028DD8(UndergroundData *param0, int param1, int param2)
int v0, v1 = 0, v2 = 0;
u8 v3[40];
MI_CpuCopy8(param0->unk_924, v3, 40);
MI_CpuCopy8(param0->treasure, v3, 40);
for (v0 = 0; v0 < 40; v0++) {
if (v0 != param1) {
param0->unk_924[v1] = v3[v0];
param0->treasure[v1] = v3[v0];
v1++;
}
if (v0 == param2) {
param0->unk_924[v1] = v3[param1];
param0->treasure[v1] = v3[param1];
v1++;
}
}
@ -946,14 +948,14 @@ int sub_020291EC(UndergroundData *param0, int param1)
return v0;
}
BOOL sub_0202920C(UndergroundData *param0)
BOOL UndergroundData_HasNeverMined(UndergroundData *undergroundData)
{
return param0->unk_9AC_4 == 0;
return undergroundData->hasMined == FALSE;
}
void sub_02029220(UndergroundData *param0)
void UndergroundData_SetHasMined(UndergroundData *undergroundData)
{
param0->unk_9AC_4 = 1;
undergroundData->hasMined = TRUE;
}
BOOL sub_02029234(UndergroundData *param0)
@ -966,26 +968,26 @@ void sub_02029240(UndergroundData *param0)
param0->unk_9AC_0 = 0;
}
void sub_02029250(UndergroundData *param0, int param1)
void UndergroundData_SetPlateMined(UndergroundData *undergroundData, int miningItemID)
{
if ((44 > param1) || (param1 > 59)) {
if ((MINING_TREASURE_FLAME_PLATE > miningItemID) || (miningItemID > MINING_TREASURE_IRON_PLATE)) {
return;
}
param0->unk_808 |= (0x1 << (param1 - 44));
undergroundData->minedPlates |= (0x1 << (miningItemID - MINING_TREASURE_FLAME_PLATE));
}
BOOL sub_02029274(UndergroundData *param0, int param1)
BOOL UndergroundData_HasPlateNeverBeenMined(UndergroundData *undergroundData, int miningItemID)
{
if ((44 > param1) || (param1 > 59)) {
return 1;
if ((MINING_TREASURE_FLAME_PLATE > miningItemID) || (miningItemID > MINING_TREASURE_IRON_PLATE)) {
return TRUE;
}
if (param0->unk_808 & (0x1 << (param1 - 44))) {
return 0;
if (undergroundData->minedPlates & (0x1 << (miningItemID - MINING_TREASURE_FLAME_PLATE))) {
return FALSE;
}
return 1;
return TRUE;
}
void UndergroundData_IncrementStepCount(UndergroundData *undergroundData)