mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-24 15:07:09 -05:00
Get rid of unkStruct_20398C8
This commit is contained in:
parent
69f0d89ce1
commit
3ec12aaa44
|
|
@ -4,22 +4,6 @@
|
|||
#include "structs/str_pokemon.h"
|
||||
#include "structs/str_wonder_mail.h"
|
||||
|
||||
struct unkStruct_20398C8
|
||||
{
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
u8 unk4;
|
||||
u8 fill5[0xB - 0x5];
|
||||
u8 unkB;
|
||||
u8 unkC;
|
||||
u8 unkD;
|
||||
DungeonMailSeed unk10;
|
||||
PokemonStruct1 unk18;
|
||||
u8 fill70[0x88 - 0x70];
|
||||
};
|
||||
|
||||
// size: 0xC
|
||||
typedef struct GroundConversionStruct
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef GUARD_RUN_DUNGEON_H
|
||||
#define GUARD_RUN_DUNGEON_H
|
||||
|
||||
#include "structs/str_dungeon_8042F6C.h"
|
||||
#include "structs/str_dungeon_setup.h"
|
||||
|
||||
struct UnkStruct_203B414
|
||||
{
|
||||
|
|
@ -15,7 +15,7 @@ struct UnkStruct_203B414
|
|||
|
||||
extern struct UnkStruct_203B414 *gUnknown_203B414;
|
||||
|
||||
void RunDungeon_Async(UnkStruct_RunDungeon *r8);
|
||||
void RunDungeon_Async(DungeonSetupStruct *r8);
|
||||
void sub_8043CD8(void);
|
||||
bool8 sub_8043CE4(s32 dungeonId);
|
||||
u8 GetFloorType(void);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef GUARD_STR_DUNGEON_8042F6C_H
|
||||
#define GUARD_STR_DUNGEON_8042F6C_H
|
||||
#ifndef GUARD_STR_DUNGEON_SETUP_H
|
||||
#define GUARD_STR_DUNGEON_SETUP_H
|
||||
|
||||
#include "structs/str_dungeon.h"
|
||||
#include "structs/str_dungeon_location.h"
|
||||
|
|
@ -7,28 +7,34 @@
|
|||
#include "structs/str_pokemon.h"
|
||||
#include "structs/str_wonder_mail.h"
|
||||
|
||||
typedef struct UnkStruct_RunDungeon
|
||||
typedef struct DungeonSetupInfo
|
||||
{
|
||||
u8 unk0;
|
||||
DungeonLocation unk4;
|
||||
DungeonLocation unk0;
|
||||
u8 unk4;
|
||||
u8 unk5;
|
||||
u8 unk6;
|
||||
u8 unk7;
|
||||
u8 unk8;
|
||||
u8 unk9;
|
||||
u8 unkA;
|
||||
u8 unkB;
|
||||
u8 unkC;
|
||||
u8 unkD;
|
||||
u8 unkE;
|
||||
u8 unkF;
|
||||
u8 unk10;
|
||||
u8 unk11;
|
||||
DungeonMailSeed dungeonSeed;
|
||||
PokemonStruct1 unk1C;
|
||||
PokemonStruct1 unk18;
|
||||
u8 *unk74;
|
||||
Dungeon *unk78;
|
||||
s16 unk7C; // Set to 5 if the dungeon was skipped (quicksave read failed)
|
||||
u8 unk7E;
|
||||
DungeonLocation unk80;
|
||||
DungeonMailSeed unk84;
|
||||
} UnkStruct_RunDungeon;
|
||||
} DungeonSetupInfo;
|
||||
|
||||
#endif // GUARD_STR_DUNGEON_8042F6C_H
|
||||
typedef struct DungeonSetupStruct
|
||||
{
|
||||
s32 unk0;
|
||||
DungeonSetupInfo info;
|
||||
u8 fill8C[44];
|
||||
} DungeonSetupStruct;
|
||||
|
||||
#endif // GUARD_STR_DUNGEON_SETUP_H
|
||||
|
|
@ -2,6 +2,7 @@
|
|||
#include "constants/dungeon.h"
|
||||
#include "constants/move_id.h"
|
||||
#include "structs/str_wonder_mail.h"
|
||||
#include "structs/str_dungeon_setup.h"
|
||||
#include "code_8009804.h"
|
||||
#include "code_800C9CC.h"
|
||||
#include "code_80118A4.h"
|
||||
|
|
@ -29,7 +30,7 @@ EWRAM_DATA u16 gUnknown_20398BC = {0};
|
|||
EWRAM_DATA s16 gUnknown_20398BE = {0};
|
||||
EWRAM_DATA u32 gUnknown_20398C0 = {0};
|
||||
EWRAM_DATA s16 gUnknown_20398C4 = {0};
|
||||
EWRAM_DATA struct unkStruct_20398C8 gUnknown_20398C8 = {0};
|
||||
EWRAM_DATA struct DungeonSetupInfo gUnknown_20398C8 = {0};
|
||||
EWRAM_DATA u8 gUnknown_2039950 = 0;
|
||||
|
||||
EWRAM_INIT bool8 gUnknown_203B49C = {0};
|
||||
|
|
@ -755,7 +756,7 @@ const char *sub_80990B8(void)
|
|||
}
|
||||
}
|
||||
|
||||
static inline bool8 sub_80990EC_sub(struct unkStruct_20398C8 *iVar1, u32 iVar2)
|
||||
static inline bool8 sub_80990EC_sub(struct DungeonSetupInfo *iVar1, u32 iVar2)
|
||||
{
|
||||
bool8 flag = FALSE;
|
||||
iVar1->unkB = 0;
|
||||
|
|
@ -769,7 +770,7 @@ static inline bool8 sub_80990EC_sub(struct unkStruct_20398C8 *iVar1, u32 iVar2)
|
|||
|
||||
extern void sub_80A8EC0(u8 *, u32);
|
||||
|
||||
u8 sub_80990EC(struct unkStruct_20398C8 *param_1, s16 param_2)
|
||||
u8 sub_80990EC(struct DungeonSetupInfo *param_1, s16 param_2)
|
||||
{
|
||||
const DungeonInfo *iVar1;
|
||||
u8 auStack_98 [24];
|
||||
|
|
@ -780,8 +781,8 @@ u8 sub_80990EC(struct unkStruct_20398C8 *param_1, s16 param_2)
|
|||
iVar1 = GetDungeonInfo_80A2608(param_2);
|
||||
dungeonIndex = iVar1->dungeonIndex;
|
||||
r5 = 0;
|
||||
param_1->unk0 = dungeonIndex;
|
||||
param_1->unk1 = 1;
|
||||
param_1->unk0.id = dungeonIndex;
|
||||
param_1->unk0.floor = 1;
|
||||
param_1->unkC = r5;
|
||||
|
||||
switch(sub_80A2750(param_2))
|
||||
|
|
@ -823,11 +824,11 @@ u8 sub_80990EC(struct unkStruct_20398C8 *param_1, s16 param_2)
|
|||
return iVar1->unk11;
|
||||
}
|
||||
|
||||
u8 sub_80991E0(struct unkStruct_20398C8 *param_1,short *param_2)
|
||||
u8 sub_80991E0(struct DungeonSetupInfo *param_1,short *param_2)
|
||||
{
|
||||
*param_2 = gUnknown_20398C4;
|
||||
if (gUnknown_203B49C) {
|
||||
memcpy(param_1, &gUnknown_20398C8, sizeof(struct unkStruct_20398C8));
|
||||
memcpy(param_1, &gUnknown_20398C8, sizeof(struct DungeonSetupInfo));
|
||||
return TRUE;
|
||||
}
|
||||
else {
|
||||
|
|
@ -835,7 +836,7 @@ u8 sub_80991E0(struct unkStruct_20398C8 *param_1,short *param_2)
|
|||
}
|
||||
}
|
||||
|
||||
void sub_8099220(struct unkStruct_20398C8 *param_1, s16 param_2)
|
||||
void sub_8099220(struct DungeonSetupInfo *param_1, s16 param_2)
|
||||
{
|
||||
s32 param_2_s32 = (s16)param_2;
|
||||
if (param_1 != NULL)
|
||||
|
|
@ -843,7 +844,7 @@ void sub_8099220(struct unkStruct_20398C8 *param_1, s16 param_2)
|
|||
gUnknown_203B49C = TRUE;
|
||||
gUnknown_203B49D = 0;
|
||||
gUnknown_20398C4 = param_2_s32;
|
||||
memcpy(&gUnknown_20398C8, param_1, sizeof(struct unkStruct_20398C8));
|
||||
memcpy(&gUnknown_20398C8, param_1, sizeof(struct DungeonSetupInfo));
|
||||
}
|
||||
else {
|
||||
gUnknown_203B49C = FALSE;
|
||||
|
|
@ -860,7 +861,7 @@ void sub_809927C(u8 param_1)
|
|||
gUnknown_2039950 = param_1;
|
||||
SetScriptVarValue(0x0,DUNGEON_ENTER,0x50);
|
||||
SetScriptVarValue(0x0,DUNGEON_ENTER_INDEX,gUnknown_2039950);
|
||||
sub_8095494(&gUnknown_20398C8.unk10,param_1);
|
||||
sub_8095494(&gUnknown_20398C8.dungeonSeed,param_1);
|
||||
gUnknown_20398C8.unkB = 1;
|
||||
gUnknown_20398C8.unkC = 0;
|
||||
gUnknown_20398C8.unk4 = 0;
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@
|
|||
#include "pokemon.h"
|
||||
#include "wigglytuff_shop1.h"
|
||||
#include "wonder_mail.h"
|
||||
#include "structs/str_dungeon_setup.h"
|
||||
|
||||
|
||||
void GroundMap_Select(s16);
|
||||
|
|
@ -140,7 +141,7 @@ bool8 sub_809B18C(s32 *sp);
|
|||
bool8 sub_809AFFC(u8 *);
|
||||
bool8 sub_809D234(void);
|
||||
s32 sub_80A14E8(Action *, u8, u32, s32);
|
||||
u8 sub_80990EC(struct unkStruct_20398C8 *param_1, s32 param_2);
|
||||
u8 sub_80990EC(struct DungeonSetupInfo *param_1, s32 param_2);
|
||||
|
||||
extern char gUnknown_81165D4[];
|
||||
extern char gUnknown_81165F4[];
|
||||
|
|
@ -1033,13 +1034,13 @@ s16 HandleAction(Action *action, DebugLocation *debug)
|
|||
if (action->scriptData.branchDiscriminant == 1) {
|
||||
s32 dungeonEnter;
|
||||
u32 res;
|
||||
struct unkStruct_20398C8 unkStruct;
|
||||
struct DungeonSetupInfo unkStruct;
|
||||
dungeonEnter = (s16)GetScriptVarValue(NULL, 19);
|
||||
if (sub_80990EC(&unkStruct, dungeonEnter)) {
|
||||
s32 val;
|
||||
sub_8099220(&unkStruct, dungeonEnter);
|
||||
val = sub_80023E4(6);
|
||||
res = sub_809034C(unkStruct.unk0, 0, gUnknown_203B4B0, val, 0);
|
||||
res = sub_809034C(unkStruct.unk0.id, 0, gUnknown_203B4B0, val, 0);
|
||||
gUnknown_2039DA4 = res;
|
||||
switch (res) {
|
||||
case 2: {
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
#include "globaldata.h"
|
||||
#include "constants/bg_music.h"
|
||||
#include "constants/main_menu.h"
|
||||
#include "structs/str_dungeon_8042F6C.h"
|
||||
#include "structs/str_dungeon_setup.h"
|
||||
#include "bg_control.h"
|
||||
#include "bg_palette_buffer.h"
|
||||
#include "code_800558C.h"
|
||||
|
|
@ -72,7 +72,7 @@ static void NDS_LoadOverlay_GroundMain();
|
|||
static u32 sub_80009D0(u32 param_1);
|
||||
/* static */ // TODO: Uncomment
|
||||
void sub_80011E8(u8 *param_1);
|
||||
static void LoadAndRunDungeon_Async(UnkStruct_RunDungeon *r0);
|
||||
static void LoadAndRunDungeon_Async(DungeonSetupStruct *r0);
|
||||
/* static */ // TODO: Uncomment
|
||||
u32 xxx_script_related_8001334(u32 r0);
|
||||
static void MainLoops_RunFrameActions(u32 unused);
|
||||
|
|
@ -1217,7 +1217,7 @@ static u32 sub_80009D0(u32 param_1)
|
|||
// It'd also be cool to see what happens if a quicksave load fails and the dungeon is skipped entirely
|
||||
// arm9.bin::0200D01C
|
||||
/* static */ // TODO: Uncomment
|
||||
void LoadAndRunQuickSaveDungeon_Async(UnkStruct_RunDungeon *param_1)
|
||||
void LoadAndRunQuickSaveDungeon_Async(DungeonSetupStruct *param_1)
|
||||
{
|
||||
u8 quickSaveValid;
|
||||
s32 quickSaveStatus;
|
||||
|
|
@ -1231,11 +1231,11 @@ void LoadAndRunQuickSaveDungeon_Async(UnkStruct_RunDungeon *param_1)
|
|||
sub_8014144();
|
||||
sub_8043D50(&local_1c, &local_18);
|
||||
|
||||
param_1->unk74 = MemoryAlloc(local_1c, 7); // size: 0x4800
|
||||
param_1->unk78 = MemoryAlloc(local_18, 7); // size: sizeof(Dungeon)
|
||||
param_1->info.unk74 = MemoryAlloc(local_1c, 7); // size: 0x4800
|
||||
param_1->info.unk78 = MemoryAlloc(local_18, 7); // size: sizeof(Dungeon)
|
||||
|
||||
if (param_1->unk8) {
|
||||
PrepareQuickSaveRead(param_1->unk74, local_1c);
|
||||
if (param_1->info.unk4) {
|
||||
PrepareQuickSaveRead(param_1->info.unk74, local_1c);
|
||||
|
||||
while (TRUE) {
|
||||
if (!ReadQuickSave())
|
||||
|
|
@ -1267,26 +1267,26 @@ void LoadAndRunQuickSaveDungeon_Async(UnkStruct_RunDungeon *param_1)
|
|||
sub_8099690(0);
|
||||
}
|
||||
else
|
||||
param_1->unk7C = 5;
|
||||
param_1->info.unk7C = 5;
|
||||
|
||||
if (param_1->unk7C == -2)
|
||||
sub_809542C(¶m_1->unk84);
|
||||
if (param_1->info.unk7C == -2)
|
||||
sub_809542C(¶m_1->info.unk84);
|
||||
|
||||
if (param_1->unk7C == 3 || param_1->unk7C == -2) {
|
||||
SetDungeonLocationInfo(¶m_1->unk80);
|
||||
if (param_1->info.unk7C == 3 || param_1->info.unk7C == -2) {
|
||||
SetDungeonLocationInfo(¶m_1->info.unk80);
|
||||
xxx_call_stop_bgm();
|
||||
|
||||
if (param_1->unk7C == -2)
|
||||
PrepareQuickSaveWrite(param_1->unk74, local_1c, 1);
|
||||
if (param_1->info.unk7C == -2)
|
||||
PrepareQuickSaveWrite(param_1->info.unk74, local_1c, 1);
|
||||
else
|
||||
PrepareQuickSaveWrite(param_1->unk74, local_1c, 0);
|
||||
PrepareQuickSaveWrite(param_1->info.unk74, local_1c, 0);
|
||||
|
||||
while ((quickSaveStatus = WriteQuickSave(), (quickSaveStatus != 2))) {
|
||||
if (quickSaveStatus == 3)
|
||||
break;
|
||||
if (quickSaveStatus == 1) {
|
||||
MemoryFree(param_1->unk78);
|
||||
MemoryFree(param_1->unk74);
|
||||
MemoryFree(param_1->info.unk78);
|
||||
MemoryFree(param_1->info.unk74);
|
||||
}
|
||||
|
||||
MainLoops_RunFrameActions(0);
|
||||
|
|
@ -1295,8 +1295,8 @@ void LoadAndRunQuickSaveDungeon_Async(UnkStruct_RunDungeon *param_1)
|
|||
}
|
||||
else {
|
||||
sub_808ED00();
|
||||
MemoryFree(param_1->unk78);
|
||||
MemoryFree(param_1->unk74);
|
||||
MemoryFree(param_1->info.unk78);
|
||||
MemoryFree(param_1->info.unk74);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1456,7 +1456,7 @@ static void NDS_LoadOverlay_GroundMain()
|
|||
}
|
||||
|
||||
// arm9.bin::0200CADC
|
||||
static void nullsub_2(UnkStruct_RunDungeon *r0)
|
||||
static void nullsub_2(DungeonSetupStruct *r0)
|
||||
{
|
||||
// (not a nullsub in the NDS)
|
||||
// Probably loads the dungeon overlay?
|
||||
|
|
@ -1470,7 +1470,7 @@ u32 xxx_script_related_8001334(u32 r0)
|
|||
}
|
||||
|
||||
// arm9.bin::0200CA1C
|
||||
static void LoadAndRunDungeon_Async(UnkStruct_RunDungeon *r0)
|
||||
static void LoadAndRunDungeon_Async(DungeonSetupStruct *r0)
|
||||
{
|
||||
nullsub_2(r0);
|
||||
RunDungeon_Async(r0);
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ static const s16 sDeoxysForms[4] = {MONSTER_DEOXYS_NORMAL, MONSTER_DEOXYS_ATTACK
|
|||
|
||||
// This functions is the main 'loop' when the player is in a Dungeon. It runs from the moment the player enters a dungeon, until they leave(by completing or by fainting).
|
||||
// arm9.bin::0206A848
|
||||
void RunDungeon_Async(UnkStruct_RunDungeon *r8)
|
||||
void RunDungeon_Async(DungeonSetupStruct *r8)
|
||||
{
|
||||
bool8 check;
|
||||
Entity *leader;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user