DungeonSetupSubstruct

This commit is contained in:
DizzyEggg
2025-05-29 21:38:46 +02:00
parent 3ec12aaa44
commit 0137085dfc
4 changed files with 41 additions and 37 deletions

View File

@@ -7,7 +7,8 @@
#include "structs/str_pokemon.h"
#include "structs/str_wonder_mail.h"
typedef struct DungeonSetupInfo
// Apparently used in Dungeon and World Map SetUp Structs
typedef struct DungeonSetupSubstruct
{
DungeonLocation unk0;
u8 unk4;
@@ -20,6 +21,11 @@ typedef struct DungeonSetupInfo
u8 unkB;
u8 unkC;
u8 unkD;
} DungeonSetupSubstruct;
typedef struct DungeonSetupInfo
{
DungeonSetupSubstruct sub0; // TODO: find a better name
DungeonMailSeed dungeonSeed;
PokemonStruct1 unk18;
u8 *unk74;

View File

@@ -759,7 +759,7 @@ const char *sub_80990B8(void)
static inline bool8 sub_80990EC_sub(struct DungeonSetupInfo *iVar1, u32 iVar2)
{
bool8 flag = FALSE;
iVar1->unkB = 0;
iVar1->sub0.unkB = 0;
if ((u16)(iVar2 - 0x25) < 3)
flag = TRUE;
@@ -775,21 +775,20 @@ u8 sub_80990EC(struct DungeonSetupInfo *param_1, s16 param_2)
const DungeonInfo *iVar1;
u8 auStack_98 [24];
u8 nameBuffer [24];
u8 r5;
u8 dungeonIndex;
iVar1 = GetDungeonInfo_80A2608(param_2);
dungeonIndex = iVar1->dungeonIndex;
r5 = 0;
param_1->unk0.id = dungeonIndex;
param_1->unk0.floor = 1;
param_1->unkC = r5;
param_1->sub0.unk0.id = dungeonIndex;
param_1->sub0.unk0.floor = 1;
param_1->sub0.unkC = 0;
switch(sub_80A2750(param_2))
{
case 1:
if (sub_80990EC_sub(param_1, param_2)) {
param_1->unkC = 1;
param_1->sub0.unkC = 1;
sub_80A8EC0(auStack_98, 0x5b);
BoundedCopyStringtoBuffer(nameBuffer, auStack_98, POKEMON_NAME_LENGTH);
{
@@ -813,14 +812,14 @@ u8 sub_80990EC(struct DungeonSetupInfo *param_1, s16 param_2)
}
break;
case 4:
param_1->unkB = 0;
param_1->sub0.unkB = 0;
break;
case 2:
param_1->unkB = 2;
param_1->sub0.unkB = 2;
break;
}
param_1->unk4 = 0;
param_1->unkD = 0;
param_1->sub0.unk4 = 0;
param_1->sub0.unkD = 0;
return iVar1->unk11;
}
@@ -862,8 +861,8 @@ void sub_809927C(u8 param_1)
SetScriptVarValue(0x0,DUNGEON_ENTER,0x50);
SetScriptVarValue(0x0,DUNGEON_ENTER_INDEX,gUnknown_2039950);
sub_8095494(&gUnknown_20398C8.dungeonSeed,param_1);
gUnknown_20398C8.unkB = 1;
gUnknown_20398C8.unkC = 0;
gUnknown_20398C8.unk4 = 0;
gUnknown_20398C8.unkD = 0;
gUnknown_20398C8.sub0.unkB = 1;
gUnknown_20398C8.sub0.unkC = 0;
gUnknown_20398C8.sub0.unk4 = 0;
gUnknown_20398C8.sub0.unkD = 0;
}

View File

@@ -1040,7 +1040,7 @@ s16 HandleAction(Action *action, DebugLocation *debug)
s32 val;
sub_8099220(&unkStruct, dungeonEnter);
val = sub_80023E4(6);
res = sub_809034C(unkStruct.unk0.id, 0, gUnknown_203B4B0, val, 0);
res = sub_809034C(unkStruct.sub0.unk0.id, 0, gUnknown_203B4B0, val, 0);
gUnknown_2039DA4 = res;
switch (res) {
case 2: {

View File

@@ -45,6 +45,7 @@
#include "text_2.h"
#include "text_3.h"
#include "text_util.h"
#include "structs/str_dungeon_setup.h"
typedef struct unkTalkTable
{
@@ -71,7 +72,7 @@ static void LoadTitleScreen(void);
static void NDS_LoadOverlay_GroundMain();
static u32 sub_80009D0(u32 param_1);
/* static */ // TODO: Uncomment
void sub_80011E8(u8 *param_1);
void sub_80011E8(DungeonSetupSubstruct *info);
static void LoadAndRunDungeon_Async(DungeonSetupStruct *r0);
/* static */ // TODO: Uncomment
u32 xxx_script_related_8001334(u32 r0);
@@ -1234,7 +1235,7 @@ void LoadAndRunQuickSaveDungeon_Async(DungeonSetupStruct *param_1)
param_1->info.unk74 = MemoryAlloc(local_1c, 7); // size: 0x4800
param_1->info.unk78 = MemoryAlloc(local_18, 7); // size: sizeof(Dungeon)
if (param_1->info.unk4) {
if (param_1->info.sub0.unk4) {
PrepareQuickSaveRead(param_1->info.unk74, local_1c);
while (TRUE) {
@@ -1375,35 +1376,33 @@ u8 sub_8001170(void)
// arm9.bin::0200CDA4
/* static */ // TODO: Uncomment
void sub_80011CC(u8 *param_1, u8 param_2)
void sub_80011CC(DungeonSetupSubstruct *info, u8 dungId)
{
u32 zero = 0;
info->unk0.id = dungId;
info->unk0.floor = 0;
param_1[0] = param_2;
param_1[1] = zero;
sub_80011E8(info);
sub_80011E8(param_1);
param_1[11] = 0;
param_1[4] = 0;
param_1[12] = 0;
param_1[13] = 0;
info->unkB = 0;
info->unk4 = 0;
info->unkC = 0;
info->unkD = 0;
}
// arm9.bin::0200CD1C
/* static */ // TODO: Uncomment
void sub_80011E8(u8 *param_1)
void sub_80011E8(DungeonSetupSubstruct *info)
{
param_1[5] = sub_80023E4(8);
param_1[6] = sub_80023E4(3);
param_1[8] = sub_80023E4(7);
param_1[9] = sub_80023E4(0);
param_1[10] = sub_80023E4(5);
info->unk5 = sub_80023E4(8);
info->unk6 = sub_80023E4(3);
info->unk8 = sub_80023E4(7);
info->unk9 = sub_80023E4(0);
info->unkA = sub_80023E4(5);
if (sub_80023E4(24) && sub_80023E4(25) && sub_80023E4(26))
param_1[7] = 1;
info->unk7 = 1;
else
param_1[7] = 0;
info->unk7 = 0;
}
// arm9.bin::0200CC4C