further document mining minigame (#595)

This commit is contained in:
scbroede 2025-07-10 14:19:12 -04:00 committed by GitHub
parent a53e8aa3b7
commit 86f47b3f2c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
13 changed files with 667 additions and 678 deletions

View File

@ -31,7 +31,7 @@ enum HeapId {
HEAP_ID_26,
HEAP_ID_27,
HEAP_ID_28,
HEAP_ID_29,
HEAP_ID_MINING,
HEAP_ID_DISTORTION_WORLD_WARP,
HEAP_ID_31,
HEAP_ID_FIELD_TASK,
@ -143,6 +143,7 @@ enum HeapSize {
HEAP_SIZE_CHOOSE_STARTER_APP = 0x40000,
HEAP_SIZE_LIBRARY_TV = 0x40000,
HEAP_SIZE_MINING = 0x50000,
HEAP_SIZE_DISTORTION_WORLD_WARP = 0x50000,
HEAP_SIZE_GAME_START = 0x20000,
HEAP_SIZE_MAIN_MENU = 0x40000,

View File

@ -8,6 +8,14 @@
#include "strbuf.h"
#define MAX_BURIED_OBJECTS 8
#define MAX_BURIED_ITEMS 4
#define INITIAL_WALL_INTEGRITY 196
#define MINING_GAME_WIDTH 13
#define MINING_GAME_HEIGHT 10
void ov23_0223E1E4(void *param0, FieldSystem *fieldSystem);
int ov23_0223E2E8(void);
void ov23_0223E2F0(void);
@ -22,7 +30,7 @@ void ov23_0223EB8C(int param0, int param1, void *param2, void *param3);
void ov23_0223EBC0(int param0, int param1, void *param2, void *param3);
void ov23_0223EBE4(int param0, int param1, void *param2, void *param3);
int ov23_0223EBFC(void);
void ov23_0223EC00(int param0, int param1, void *param2, void *param3);
void Mining_TakeLinkInput(int param0, int param1, void *src, void *param3);
int ov23_0223EC30(void);
BOOL ov23_02241200(int param0, int param1);
int ov23_0224121C(int param0);

View File

@ -23,8 +23,8 @@ void ov23_0224AC4C(void);
BOOL ov23_0224ACC0(int param0);
void ov23_0224ACE8(int param0, int param1, void *param2, void *param3);
void ov23_0224ACF8(int param0, int param1, void *param2, void *param3);
int ov23_0224AD04(int param0);
int ov23_0224AD40(int param0);
int Underground_GetLinkXPos(int netID);
int Underground_GetLinkZPos(int netID);
void ov23_0224AD7C(int param0, int param1);
void ov23_0224AD98(int param0);
void ov23_0224ADB0(int param0, int param1, int param2, int param3);

View File

@ -19,8 +19,8 @@ int ov23_0224F66C(int param0, void *param1);
int ov23_0224F684(int param0, void *param1);
int ov23_0224F69C(int param0, void *param1);
int ov23_0224F6C8(int param0, void *param1);
BOOL ov23_0224F6E0(int param0, int param1);
BOOL ov23_0224F710(int param0);
BOOL Underground_TryAddSphere(int sphereID, int sphereSize);
BOOL Underground_TryAddTreasure(int treasureID);
BOOL ov23_0224F730(int param0);
BOOL ov23_0224F744(int param0);
void ov23_0224F758(UnkFuncPtr_ov23_0224F758 param0, FieldSystem *fieldSystem);

View File

@ -53,12 +53,12 @@ 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);
BOOL UndergroundData_TryAddSphere(UndergroundData *undergroundData, int sphereType, int sphereSize);
void sub_02028CD8(UndergroundData *param0, int param1, int param2);
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);
BOOL UndergroundData_TryAddTreasure(UndergroundData *undergroundData, int treasureID);
void sub_02028DD8(UndergroundData *param0, int param1, int param2);
int sub_02028E28(UndergroundData *param0);
int sub_02028E44(UndergroundData *param0, int param1);

File diff suppressed because it is too large Load Diff

View File

@ -270,7 +270,7 @@ void ov23_022419B4(int param0, int param1, void *param2, void *param3)
if (v5) {
sub_020594FC();
if (ov23_0224F6E0(v5->unk_06, v5->unk_04 + v5->unk_05)) {
if (Underground_TryAddSphere(v5->unk_06, v5->unk_04 + v5->unk_05)) {
Unk_ov23_02257744->unk_468[v1] = v5->unk_06;
Sound_PlayEffect(SEQ_SE_DP_PIRORIRO2);
v4 = 99;

View File

@ -676,34 +676,34 @@ void ov23_0224ACF8(int param0, int param1, void *param2, void *param3)
ov23_02243020(v0[0]);
}
int ov23_0224AD04(int param0)
int Underground_GetLinkXPos(int netID)
{
CommPlayerManager *v0 = CommPlayerMan_Get();
if (!v0) {
return 0xffff;
} else if (CommSys_CurNetId() == param0) {
return v0->playerLocation[param0].x;
} else if (CommSys_CurNetId() == netID) {
return v0->playerLocation[netID].x;
} else if (!sub_02058C40()) {
return 0xffff;
}
return v0->playerLocation[param0].x;
return v0->playerLocation[netID].x;
}
int ov23_0224AD40(int param0)
int Underground_GetLinkZPos(int netID)
{
CommPlayerManager *v0 = CommPlayerMan_Get();
if (!v0) {
return 0xffff;
} else if (CommSys_CurNetId() == param0) {
return v0->playerLocation[param0].z;
} else if (CommSys_CurNetId() == netID) {
return v0->playerLocation[netID].z;
} else if (!sub_02058C40()) {
return 0xffff;
}
return v0->playerLocation[param0].z;
return v0->playerLocation[netID].z;
}
void ov23_0224AD7C(int param0, int param1)

View File

@ -382,27 +382,27 @@ int ov23_0224F6C8(int param0, void *param1)
return sub_02028D74(v1, param0);
}
BOOL ov23_0224F6E0(int sphereID, int sphereSize)
BOOL Underground_TryAddSphere(int sphereID, int sphereSize)
{
int v0 = sphereID;
int sphereType = sphereID;
GF_ASSERT(sphereID < MINING_TREASURE_OVAL_STONE);
if (sphereID >= MINING_LARGE_PRISM_SPHERE) {
v0 -= 5;
sphereType -= (MINING_LARGE_PRISM_SPHERE - 1);
}
if (sphereSize > 99) {
sphereSize = 99;
}
return sub_02028CB0(Unk_ov23_022577B8->unk_00, v0, sphereSize);
return UndergroundData_TryAddSphere(Unk_ov23_022577B8->unk_00, sphereType, sphereSize);
}
BOOL ov23_0224F710(int param0)
BOOL Underground_TryAddTreasure(int treasureID)
{
GF_ASSERT(param0 < 60);
return sub_02028DB4(Unk_ov23_022577B8->unk_00, param0);
GF_ASSERT(treasureID < MINING_ROCK_1);
return UndergroundData_TryAddTreasure(Unk_ov23_022577B8->unk_00, treasureID);
}
BOOL ov23_0224F730(int param0)

View File

@ -191,7 +191,7 @@ static int ov23_02252404(UnkStruct_ov23_02250CD4 *param0, int param1, int param2
} else if (param0->unk_2AC == 0) {
v0 = sub_02028BC8(v1, param0->unk_274[param1]);
} else if (param0->unk_2AC == 2) {
v0 = sub_02028DB4(v1, param0->unk_274[param1]);
v0 = UndergroundData_TryAddTreasure(v1, param0->unk_274[param1]);
}
if (v0) {
@ -476,7 +476,7 @@ static u32 ov23_02252C08(UnkStruct_ov23_02250CD4 *param0)
{
UndergroundData *v0 = SaveData_GetUndergroundData(FieldSystem_GetSaveData(param0->fieldSystem));
if (ov23_0224F6E0(param0->unk_279[0], param0->unk_27E[0])) {
if (Underground_TryAddSphere(param0->unk_279[0], param0->unk_27E[0])) {
if (param0->unk_2AC == 1) {
sub_02028E50(v0, param0->unk_2A8);
} else if (param0->unk_2AC == 0) {

View File

@ -130,26 +130,26 @@ static int sub_020285D8(UndergroundData *param0)
return -1;
}
static int sub_020285F8(UndergroundData *param0)
static int UndergroundData_FindEmptySphereSlot(UndergroundData *undergroundData)
{
int v0;
int i;
for (v0 = 0; v0 < 40; v0++) {
if (param0->spheres[v0] == 0) {
return v0;
for (i = 0; i < 40; i++) {
if (undergroundData->spheres[i] == 0) {
return i;
}
}
return -1;
}
static int sub_02028618(UndergroundData *param0)
static int UndergroundData_FindEmptyTreasureSlot(UndergroundData *undergroundData)
{
int v0;
int i;
for (v0 = 0; v0 < 40; v0++) {
if (param0->treasure[v0] == 0) {
return v0;
for (i = 0; i < 40; i++) {
if (undergroundData->treasure[i] == 0) {
return i;
}
}
@ -598,20 +598,20 @@ int sub_02028C6C(UndergroundData *param0, int param1)
return v2;
}
BOOL sub_02028CB0(UndergroundData *undergroundData, int sphereID, int sphereSize)
BOOL UndergroundData_TryAddSphere(UndergroundData *undergroundData, int sphereType, int sphereSize)
{
int v0;
BOOL v1 = 0;
int slot;
BOOL added = FALSE;
v0 = sub_020285F8(undergroundData);
slot = UndergroundData_FindEmptySphereSlot(undergroundData);
if (v0 != -1) {
undergroundData->spheres[v0] = sphereID;
undergroundData->sphereSizes[v0] = sphereSize;
v1 = 1;
if (slot != -1) {
undergroundData->spheres[slot] = sphereType;
undergroundData->sphereSizes[slot] = sphereSize;
added = TRUE;
}
return v1;
return added;
}
void sub_02028CD8(UndergroundData *param0, int param1, int param2)
@ -672,19 +672,19 @@ int sub_02028D80(UndergroundData *param0, int param1)
return v2;
}
BOOL sub_02028DB4(UndergroundData *param0, int param1)
BOOL UndergroundData_TryAddTreasure(UndergroundData *undergroundData, int treasureID)
{
int v0;
BOOL v1 = 0;
int slot;
BOOL added = FALSE;
v0 = sub_02028618(param0);
slot = UndergroundData_FindEmptyTreasureSlot(undergroundData);
if (v0 != -1) {
param0->treasure[v0] = param1;
v1 = 1;
if (slot != -1) {
undergroundData->treasure[slot] = treasureID;
added = TRUE;
}
return v1;
return added;
}
void sub_02028DD8(UndergroundData *param0, int param1, int param2)

View File

@ -161,7 +161,7 @@ BOOL ScrCmd_08F(ScriptContext *param0)
u16 *v5 = ScriptContext_GetVarPointer(param0);
v2 = SaveData_GetUndergroundData(saveData);
*v5 = sub_02028CB0(v2, v3, v4);
*v5 = UndergroundData_TryAddSphere(v2, v3, v4);
return 0;
}

View File

@ -93,7 +93,7 @@ static const CommCmdTable Unk_020F68A4[] = {
{ ov23_0223EB8C, CommPacketSizeOf_NetId, NULL },
{ ov23_0223EBC0, CommPacketSizeOf_NetId, NULL },
{ ov23_0223EBE4, ov23_0223EBFC, NULL },
{ ov23_0223EC00, ov23_0223EC30, NULL },
{ Mining_TakeLinkInput, ov23_0223EC30, NULL },
{ ov23_02243390, ov23_022433B8, NULL },
{ ov23_022413A0, sub_0203294C, NULL },
{ ov23_0224142C, ov23_022414D0, NULL },