* En_Dno

* NBS

* PR

* PR
This commit is contained in:
Maide 2021-08-08 19:05:52 +01:00 committed by GitHub
parent 1789cee1c9
commit a35f091505
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 1061 additions and 70 deletions

View File

@ -2725,17 +2725,17 @@ Actor* func_ActorCategoryIterateById(GlobalContext* globalCtx, struct Actor* act
void func_8013D9C8(GlobalContext* globalCtx, s16* arg1, s16* arg2, UNK_TYPE arg3);
u8 func_8013DB90(GlobalContext* globalCtx, UNK_PTR arg1, f32 arg2);
// void func_8013DC40(void);
// void func_8013DCE0(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE1 param_10);
// void func_8013DE04(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
// void func_8013DF3C(void);
void func_8013DCE0(GlobalContext* globalCtx, Vec3f* param_2, Actor* actor, EnDno_ActorUnkStruct* param_4, Path* param_5, s32 param_6, s32 param_7, s32 param_8, s32 param_9, s32 param_10);
void func_8013DE04(GlobalContext* globalCtx, EnDno_ActorUnkStruct* arg1, EnDno_ActorUnkFunc arg2, EnDno_ActorUnkFunc arg3, EnDno_ActorUnkFunc arg4, EnDno_ActorUnkFunc arg5);
s32 func_8013DF3C(GlobalContext* globalCtx, EnDno_ActorUnkStruct* arg1);
// void func_8013E054(void);
// void func_8013E07C(void);
// void func_8013E0A4(void);
s32 func_8013E0A4(GlobalContext* globalCtx, EnDno_ActorUnkStruct* arg1);
void func_8013E1C8(SkelAnime* skelAnime, struct_80B8E1A8 animations[], s32 animationIndex, s32* actorAnimationIndex);
s32 func_8013E2D4(Actor* actor, s16 arg1, s32 arg2, s32 arg3);
s32 func_8013E3B8(Actor* actor, s16 cutscenes[], s32 cutsceneArrayLen);
// void func_8013E4B0(void);
// void func_8013E5CC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
s32 func_8013E5CC(Vec3f* param_1, Vec3s* param_2, Vec3f* param_3, Vec3f* param_4, Vec3f* param_5, Vec3f* param_6);
// void func_8013E640(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7);
// void func_8013E748(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7);
// void func_8013E7C0(void);

View File

@ -49,6 +49,7 @@
#define ALL_EQUIP_VALUE(equip) ((gSaveContext.inventory.equipment & gEquipMasks[equip]) >> gEquipShifts[equip])
#define CUR_EQUIP_VALUE(equip) ((gSaveContext.equips.equipment & gEquipMasks[equip]) >> gEquipShifts[equip])
#define CUR_UPG_VALUE(upg) ((gSaveContext.inventory.upgrades & gUpgradeMasks[upg]) >> gUpgradeShifts[upg])
#define CHECK_QUEST_ITEM(item) (((void)0, gSaveContext.inventory.questItems) & gBitFlags[item])
#define CAPACITY(upg, value) gUpgradeCapacities[upg][value]
#define CUR_CAPACITY(upg) CAPACITY(upg, CUR_UPG_VALUE(upg) - 4)

View File

@ -4063,7 +4063,7 @@ extern Gfx D_04077480[];
extern UNK_TYPE D_04079B10;
extern UNK_TYPE D_0407AB10;
extern UNK_TYPE D_0407AFB0;
extern UNK_TYPE D_0407D590;
extern Gfx D_0407D590[];
extern UNK_TYPE D_0407D650;
extern UNK_TYPE D_0407F218;
extern UNK_TYPE D_040815D0;

View File

@ -76,6 +76,31 @@ typedef struct {
/* 0x3A */ s16 unk3A;
} ActorEnTest20C; // size = 0x3C
struct EnDno_ActorUnkStruct;
typedef s32 (*EnDno_ActorUnkFunc)(struct GlobalContext*, struct EnDno_ActorUnkStruct*);
typedef struct EnDno_ActorUnkStruct {
/* 0x00 */ Vec3f unk_00;
/* 0x0C */ UNK_TYPE1 unk_0C[0x4];
/* 0x10 */ s16 unk_10;
/* 0x12 */ UNK_TYPE1 unk_12[0xA];
/* 0x1C */ u8 unk_1C;
/* 0x1D */ u8 unk_1D;
/* 0x20 */ Vec3f unk_20;
/* 0x2C */ Vec3f unk_2C;
/* 0x38 */ UNK_TYPE1 unk_38[0x10];
/* 0x48 */ struct Actor* unk_48;
/* 0x4C */ f32 unk_4C;
/* 0x50 */ f32 unk_50;
/* 0x54 */ s16 unk_54;
/* 0x56 */ s16 unk_56;
/* 0x58 */ s32 unk_58;
/* 0x5C */ EnDno_ActorUnkFunc unk_5C;
/* 0x60 */ EnDno_ActorUnkFunc unk_60;
/* 0x64 */ EnDno_ActorUnkFunc unk_64;
/* 0x68 */ EnDno_ActorUnkFunc unk_68;
} EnDno_ActorUnkStruct; // size >= 0x6C
typedef struct {
/* 0x00 */ s16 id;
/* 0x02 */ u8 type;

View File

@ -37,6 +37,7 @@ typedef enum {
/* 0x3B */ ITEM_MASK_GARO,
/* 0x3C */ ITEM_MASK_ROMANIS,
/* 0x46 */ ITEM_MASK_BREMEN = 0x46,
/* 0x48 */ ITEM_MASK_SCENTS = 0x48,
/* 0x4D */ ITEM_SWORD_KOKIRI = 0x4D,
/* 0x4E */ ITEM_SWORD_RAZOR,
/* 0x4F */ ITEM_SWORD_GILDED,

3
spec
View File

@ -3206,8 +3206,7 @@ beginseg
name "ovl_En_Dno"
compress
include "build/src/overlays/actors/ovl_En_Dno/z_en_dno.o"
include "build/data/ovl_En_Dno/ovl_En_Dno.data.o"
include "build/data/ovl_En_Dno/ovl_En_Dno.reloc.o"
include "build/src/overlays/actors/ovl_En_Dno/ovl_En_Dno_reloc.o"
endseg
beginseg

View File

@ -11,7 +11,9 @@ typedef struct BgCraceMovebg {
/* 0x0000 */ Actor actor;
/* 0x0144 */ char unk_144[0x18];
/* 0x015C */ BgCraceMovebgActionFunc actionFunc;
/* 0x0160 */ char unk_160[0x34];
/* 0x0160 */ char unk_160[0x10];
/* 0x0170 */ s32 unk_170;
/* 0x0174 */ char unk_174[0x20];
} BgCraceMovebg; // size = 0x194
extern const ActorInit Bg_Crace_Movebg_InitVars;

File diff suppressed because it is too large Load Diff

View File

@ -5,12 +5,55 @@
struct EnDno;
typedef void (*EnDnoActionFunc)(struct EnDno* this, GlobalContext* globalCtx);
typedef void (*EnDnoActionFunc)(struct EnDno*, GlobalContext*);
#define ENDNO_GET_F(thisx) (u32)((thisx)->params & 0xF)
#define ENDNO_GET_7F(thisx) ((thisx)->params & 0x7F)
#define ENDNO_GET_7F0(thisx) (((thisx)->params >> 4) & 0x7F)
#define ENDNO_GET_3F80(thisx) (((thisx)->params >> 7) & 0x7F)
#define ENDNO_GET_C000(thisx) (((thisx)->params >> 0xE) & 0x3)
enum {
/* 0x0 */ ENDNO_GET_F_0,
/* 0x1 */ ENDNO_GET_F_1,
};
enum {
/* 0x0 */ ENDNO_GET_C000_0,
/* 0x1 */ ENDNO_GET_C000_1,
};
typedef struct EnDno {
/* 0x0000 */ Actor actor;
/* 0x0144 */ EnDnoActionFunc actionFunc;
/* 0x0148 */ char unk_144[0x324];
/* 0x000 */ Actor actor;
/* 0x144 */ EnDnoActionFunc actionFunc;
/* 0x148 */ SkelAnime skelAnime;
/* 0x18C */ ColliderCylinder collider;
/* 0x1D8 */ Vec3s jointTable[28];
/* 0x280 */ Vec3s morphTable[28];
/* 0x328 */ s32 unk_328;
/* 0x32C */ s32 unk_32C;
/* 0x330 */ UNK_TYPE1 unk_330[0x4];
/* 0x334 */ Vec3f unk_334;
/* 0x340 */ EnDno_ActorUnkStruct unk_340;
/* 0x3AC */ s16 unk_3AC;
/* 0x3AE */ s16 unk_3AE;
/* 0x3B0 */ u16 unk_3B0;
/* 0x3B2 */ UNK_TYPE1 unk_3B2[0xC];
/* 0x3BE */ s16 unk_3BE;
/* 0x3C0 */ f32 unk_3C0;
/* 0x3C4 */ UNK_TYPE1 unk_3C4[0x78];
/* 0x43C */ LightNode* lightNode;
/* 0x440 */ LightInfo lightInfo;
/* 0x44E */ u8 unk_44E;
/* 0x44F */ UNK_TYPE1 unk_44F[0x3];
/* 0x452 */ s16 unk_452;
/* 0x454 */ f32 unk_454;
/* 0x458 */ s32 unk_458;
/* 0x45C */ s16 unk_45C;
/* 0x460 */ Actor* unk_460;
/* 0x464 */ u16 unk_464;
/* 0x466 */ s16 unk_466;
/* 0x468 */ u8 unk_468;
} EnDno; // size = 0x46C
extern const ActorInit En_Dno_InitVars;

View File

@ -1003,7 +1003,7 @@ void EnFsn_GiveItem(EnFsn* this, GlobalContext* globalCtx) {
}
void EnFsn_SetupResumeInteraction(EnFsn* this, GlobalContext* globalCtx) {
if (((void)0, gSaveContext.inventory.questItems) & gBitFlags[18]) {
if (CHECK_QUEST_ITEM(18)) {
if (globalCtx->msgCtx.unk120B1 == 0) {
EnFsn_HandleSetupResumeInteraction(this, globalCtx);
}
@ -1183,7 +1183,7 @@ void EnFsn_SetupEndInteraction(EnFsn* this, GlobalContext* globalCtx) {
u8 talkState = func_80152498(&globalCtx->msgCtx);
if ((talkState == 5 || talkState == 6) && func_80147624(globalCtx)) {
if (((void)0, gSaveContext.inventory.questItems) & gBitFlags[18]) {
if (CHECK_QUEST_ITEM(18)) {
if (globalCtx->msgCtx.unk120B1 == 0) {
EnFsn_EndInteraction(this, globalCtx);
} else {
@ -1255,7 +1255,7 @@ void EnFsn_AskCanBuyMore(EnFsn* this, GlobalContext* globalCtx) {
}
}
} else if ((talkState == 5 || talkState == 6) && func_80147624(globalCtx)) {
if (((void)0, gSaveContext.inventory.questItems) & gBitFlags[18]) {
if (CHECK_QUEST_ITEM(18)) {
if (globalCtx->msgCtx.unk120B1 == 0) {
EnFsn_EndInteraction(this, globalCtx);
} else {
@ -1302,7 +1302,7 @@ void EnFsn_AskCanBuyAterRunningOutOfItems(EnFsn* this, GlobalContext* globalCtx)
}
}
} else if ((talkState == 5 || talkState == 6) && func_80147624(globalCtx)) {
if (((void)0, gSaveContext.inventory.questItems) & gBitFlags[18]) {
if (CHECK_QUEST_ITEM(18)) {
if (globalCtx->msgCtx.unk120B1 == 0) {
EnFsn_EndInteraction(this, globalCtx);
} else {

View File

@ -439,7 +439,7 @@ void EnMa4_HandlePlayerChoice(EnMa4* this, GlobalContext* globalCtx) {
func_8019F208();
func_801518B0(globalCtx, 0x334E, &this->actor);
this->textId = 0x334E;
if ((aux = gSaveContext.inventory.questItems) & gBitFlags[0xE]) {
if (CHECK_QUEST_ITEM(14)) {
func_80151BB4(globalCtx, 0x1C);
}
func_80151BB4(globalCtx, 5);
@ -611,7 +611,7 @@ void EnMa4_ChooseNextDialogue(EnMa4* this, GlobalContext* globalCtx) {
EnMa4_SetFaceExpression(this, 0, 0);
// Check if player has Epona's song
if ((aux = gSaveContext.inventory.questItems) & gBitFlags[0xE]) {
if (CHECK_QUEST_ITEM(14)) {
func_801518B0(globalCtx, 0x334C, &this->actor);
this->textId = 0x334C;
} else {
@ -624,7 +624,7 @@ void EnMa4_ChooseNextDialogue(EnMa4* this, GlobalContext* globalCtx) {
case 0x3358:
if ((gSaveContext.playerForm != PLAYER_FORM_HUMAN) ||
!((aux = gSaveContext.inventory.questItems) & gBitFlags[0xE])) {
!(CHECK_QUEST_ITEM(14))) {
func_801518B0(globalCtx, 0x335C, &this->actor);
this->textId = 0x335C;
func_80151BB4(globalCtx, 5);
@ -664,7 +664,7 @@ void EnMa4_DialogueHandler(EnMa4* this, GlobalContext* globalCtx) {
case 6: // End conversation
if (func_80147624(globalCtx) != 0) {
if ((globalCtx->msgCtx.unk120B1 == 0) ||
(((temp_v0 = gSaveContext.inventory.questItems) & gBitFlags[0x12]) == 0)) {
!CHECK_QUEST_ITEM(18)) {
EnMa4_SetupWait(this);
}
}

View File

@ -1833,6 +1833,26 @@ D_06002848 = 0x06002848;
D_06007CA4 = 0x06007CA4;
D_0600E1F8 = 0x0600E1F8;
D_801C20C0 = 0x801C20C0;
D_06000470 = 0x06000470;
D_060008F0 = 0x060008F0;
D_06000F6C = 0x06000F6C;
D_06001A50 = 0x06001A50;
D_06002530 = 0x06002530;
D_06003320 = 0x06003320;
D_060036D0 = 0x060036D0;
D_060041CC = 0x060041CC;
D_06004DD8 = 0x06004DD8;
D_06005F98 = 0x06005F98;
D_06006488 = 0x06006488;
D_060073E4 = 0x060073E4;
D_060077A8 = 0x060077A8;
D_06008324 = 0x06008324;
D_06008AE4 = 0x06008AE4;
D_06009100 = 0x06009100;
D_060051E4 = 0x060051E4;
D_06005E20 = 0x06005E20;
D_06006F84 = 0x06006F84;
// ovl_En_Dnp