Files
Yanis cf8f5a80b1 Decompile more of AdventureFlags.cpp (#118)
* fix flags getters and associated relocs

* explicit ARM and improve existing matches

* match CopyTo

* document a bit the flag system and progress on unmatched functions

* remaining bottom functions

* func_ov00_02097810 params and name fix

* fix build issues

* move flag base definition to its own file

* document item flags

---------

Co-authored-by: Yanis002 <Yanis002@users.noreply.github.com>
Co-authored-by: Aetias <aetias@outlook.com>
2025-07-22 16:17:02 +02:00

190 lines
4.9 KiB
C++

#pragma once
#include "nds/math.h"
#include "DTCM/UnkStruct_027e077c.hpp"
#include "Game/Game.hpp"
#include "Message/BMG.hpp"
#include "System/SysNew.hpp"
#include "Unknown/UnkStruct_020eec9c.hpp"
#include "Unknown/func_ov000_020d0644.hpp"
// temp
#define UNK_TYPE void
#define ESCAPE_SEQUENCE_MARKER '\x1A'
#define CHECK_UNK_FLAGS(val) (((data_02056be4[data_027e077c.mUnk_0] & (val)) != 0))
typedef struct UnkStruct_0203b264 {
/* 0 */ u8 mUnk_0[0x4];
/* 4 */ u16 *mUnk_4;
/* 8 */
} UnkStruct_0203b264;
class UnkStruct_020397f8_410 {
public:
/* 0x00 */ struct UnkStruct_020397f8 *mUnk_00;
/* 0x04 */
void func_0203ec34(void);
void func_0203ebe0(void);
void func_0203ebf8(void);
void func_0203ec4c(UnkStruct_0203b264 *param_2, unk32 param_3, s32 param_4, s32 param_5);
};
// same as UnkStruct_020397f8_410?
class UnkStruct_020397f8_424 {
public:
/* 0x00 */ struct UnkStruct_020397f8 *mUnk_00;
/* 0x04 */
void func_0203ee80(unk32);
void func_0203ef78(unk16, u16, unk8);
void func_0203ef78(unk16); // overload?
void func_0203ee48(void);
UnkStruct_0203b264 *func_0203eeb0(unk32 param_2, unk32 param_3);
};
class UnkStruct_0203dae0_114 : public SysObject {
public:
/* 0x00 (vtable) */
/* 0x04 */ unk32 *mUnk_04;
/* 0x08 */
UnkStruct_0203dae0_114();
/* 0x00 */ virtual ~UnkStruct_0203dae0_114() override;
/* 0x08 */ virtual unk32 vfunc_08(void *);
/* 0x08 */ virtual unk32 vfunc_0c(void);
/* 0x0C */
unk32 *func_0203d1b4(void);
};
struct func_02038f44_param4 {
u8 mUnk_00;
u8 mUnk_01;
u8 mUnk_02;
u8 mUnk_03;
unk32 mUnk_04;
unk32 mUnk_08;
unk32 mUnk_0c;
unk32 mUnk_10;
unk8 mUnk_14;
u8 mUnk_15;
};
// TEMPORARY
extern "C" u32 func_01ff9b4c(unk32, unk32);
extern "C" unk32 func_0203c084(void);
extern "C" unk32 func_ov000_02079e04(void);
extern "C" unk32 func_02016fcc(unk32);
extern "C" unk32 func_0202d5b4(char *, char *, unk32, unk32, unk32);
extern unk32 data_020691a0;
extern unk32 data_02056af0;
extern unk32 *data_02056a00;
extern char *data_02057f08; // "MSP"
extern char *data_02057eec; // "Menu/UI_main/opening.bin"
extern char *data_02057ed8; // "MSP:opening.nclr"
struct Struct_027e0db0 {
/* 0x00 */ unk32 mUnk_00;
/* 0x04 */ unk32 mUnk_04;
void func_ov000_0207b288(GameModeId modeId);
void func_ov000_0207b2f0(unk32 param_1, bool param_2);
void func_ov000_0207b334(unk32 param_1);
void func_ov000_0207b378(unk32 param_1);
void func_ov000_0207b43c();
};
extern Struct_027e0db0 data_027e0db0;
class UnkClass_027e0cbc {
public:
void func_0203d57c();
void func_0203d5c0();
void func_0203d64c(s32);
void func_0203d664(s32);
void func_0203d67c(u16 *);
void func_0203d6d0();
unk32 func_0203d7e0(unk32);
unk32 func_0203d77c(unk32, s32, s32);
};
extern UnkClass_027e0cbc data_027e0cbc;
extern unk16 data_02056a10[];
extern unk16 data_02056a16[];
extern unk32 data_02056a04[];
extern "C" void func_0203489c(unk32, unk16, unk32 *, unk32 *);
extern "C" void func_020347b0(unk32, unk16, unk32 *, unk32 *, unk32, unk32);
extern THUMB unk32 func_0202ab48(void);
extern "C" void func_02034984(unk32, u8, unk32, unk32);
extern "C" void func_02034698(unk32, unk32, unk32 *, unk32 *);
extern struct TouchControl gTouchControl;
class UnkClass_027e0e28 {
public:
unk32 func_ov000_0207bc48();
void func_ov000_0207bc9c();
};
extern UnkClass_027e0e28 *data_027e0e28;
extern unk32 *data_ov009_0211f5b4;
extern "C" unk32 func_ov003_020f3f94(unk32 *);
extern "C" void func_ov003_020f4060(unk32 **);
extern unk32 *data_02057ed4;
// see Actor.cpp
typedef struct UnkStruct_01ffbe34 {
/* 00 */ unk32 mUnk_00;
/* 04 */ unk32 mUnk_04;
/* 08 */ unk8 mUnk_08;
/* 09 */ unk8 mUnk_09;
/* 0a */ unk8 mUnk_0a;
/* 0b */ unk8 mUnk_0b;
/* 0c */ unk32 mUnk_0c;
/* 10 */ unk32 mUnk_10;
/* 14 */ unk8 mUnk_14;
/* 15 */ unk8 mUnk_15;
/* 16 */ unk16 mUnk_16;
/* 18 */ unk32 mUnk_18;
/* 1c */ unk32 mUnk_1c;
/* 20 */
} UnkStruct_01ffbe34;
extern "C" void func_01ffbe34(UnkStruct_01ffbe34 *param1);
struct UnkClass_027e1054_unk_00_unk00 {
/* 0x00 */ u8 mUnk_00[0x95];
/* 0x95 */ u8 mUnk_95;
};
struct UnkClass_027e1054_unk_00 {
/* 0x00 */ unk32 mUnk_04;
/* 0x00 */ UnkClass_027e1054_unk_00_unk00 *mUnk_00;
};
class UnkClass_027e1054 {
public:
UnkClass_027e1054_unk_00 *mUnk_00;
unk32 mUnk_04;
void func_ov003_020f4874(void);
void func_ov003_020f4760(u8, unk32);
unk32 func_ov003_020f4960(void);
void func_ov003_020f4a5c(void);
void func_ov003_02f46f8(void);
void func_ov003_020f4678(unk32);
};
extern UnkClass_027e1054 *data_027e1054;
class UnkClass_ov000_027e0d04 {
public:
/* 0x00 */ unk16 mUnk_00;
void func_0203fe00();
void func_0203fe60(unk32);
};
extern UnkClass_ov000_027e0d04 data_027e0d04;
class UnkClass_data_027e0f7c {
public:
u8 *func_ov000_0209d90c(s8, s8);
};
extern UnkClass_data_027e0f7c data_027e0f7c;