Merge remote-tracking branch 'upstream/master' into Majora

This commit is contained in:
petrie911
2021-09-29 10:27:10 -05:00
42 changed files with 5833 additions and 406 deletions
+7
View File
@@ -0,0 +1,7 @@
#ifndef ALLOCA_H
#define ALLOCA_H
void* alloca(u32);
#define alloca __builtin_alloca
#endif
+6
View File
@@ -0,0 +1,6 @@
#ifndef BGM_H
#define BGM_H
#define NA_BGM_STOP 0x100000FF
#endif
+30 -30
View File
@@ -139,22 +139,22 @@ void StackCheck_Cleanup(StackEntry* entry);
StackStatus StackCheck_GetState(StackEntry* entry);
u32 StackCheck_CheckAll(void);
u32 StackCheck_Check(StackEntry* entry);
// void GfxPrint_InitDlist(void);
// void GfxPrint_SetColor(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
// void GfxPrint_SetPosPx(void);
// void GfxPrint_SetPos(void);
void GfxPrint_InitDlist(GfxPrint*);
void GfxPrint_SetColor(GfxPrint*, u32, u32, u32, u32);
void GfxPrint_SetPosPx(GfxPrint*, s32, s32);
void GfxPrint_SetPos(GfxPrint*, s32, s32);
void GfxPrint_SetBasePosPx(GfxPrint* this, s32 param_2, s32 param_3);
void GfxPrint_PrintCharImpl(GfxPrint* this, u8 c);
void GfxPrint_PrintChar(GfxPrint* this, u8 c);
// void GfxPrint_PrintStringWithSize(void);
// void GfxPrint_PrintString(void);
// void GfxPrint_Callback(void);
// void GfxPrint_Init(void);
// void GfxPrint_Destroy(void);
// void GfxPrint_Open(void);
// void GfxPrint_Close(void);
// void GfxPrint_VPrintf(void);
// void GfxPrint_Printf(void);
void GfxPrint_PrintStringWithSize(GfxPrint*, const void*, size_t, size_t);
void GfxPrint_PrintString(GfxPrint*, const char*);
GfxPrint* GfxPrint_Callback(GfxPrint*, const char*, size_t);
void GfxPrint_Init(GfxPrint*);
void GfxPrint_Destroy(GfxPrint*);
void GfxPrint_Open(GfxPrint*, Gfx*);
Gfx* GfxPrint_Close(GfxPrint*);
void GfxPrint_VPrintf(GfxPrint*, const char*, va_list);
void GfxPrint_Printf(GfxPrint*, const char*, ...);
// void MtxConv_F2L(void);
// void MtxConv_L2F(void);
void __assert(const char* file, u32 lineNum);
@@ -807,8 +807,8 @@ s32 func_800B863C(Actor* actor, GlobalContext* globalCtx);
u32 func_800B867C(Actor* actor, GlobalContext* globalCtx);
UNK_TYPE4 func_800B86C8(Actor* actor1, GlobalContext* globalCtx, Actor* actor2);
s32 func_800B8708(GlobalContext* globalCtx);
// void func_800B8718(void);
// void func_800B874C(void);
s32 func_800B8718(Actor* actor, GlobalContext* globalCtx);
void func_800B874C(Actor* actor, GlobalContext* globalCtx, f32 arg2, f32 arg3);
// void func_800B8804(void);
// void func_800B882C(void);
// void func_800B886C(void);
@@ -887,13 +887,13 @@ Actor* func_800BC444(GlobalContext* globalCtx, Actor* actor, f32 arg2);
// void func_800BC4EC(void);
// void func_800BC5B8(void);
s32 func_800BC5EC(GlobalContext* globalCtx, Actor* actor);
void func_800BC620(Vec3f* arg0, Vec3f* arg1, UNK_TYPE arg2, GlobalContext* globalCtx);
void func_800BC620(Vec3f* arg0, Vec3f* arg1, u8 arg2, GlobalContext* globalCtx);
// void func_800BC770(void);
// void func_800BC7D8(void);
// void func_800BC848(void);
// void func_800BC8B8(void);
// void func_800BCB50(void);
void func_800BCB70(Actor* actor, s16 arg1, s16 arg2, s16 arg3, s16 arg4);
void func_800BCB70(Actor* actor, u16 arg1, u16 arg2, s16 arg3, s16 arg4);
void func_800BCBF4(Vec3f* uParm1, GlobalContext* globalCtx);
void func_800BCC68(Vec3f* param_1, GlobalContext* globalCtx);
UNK_RET func_800BCCDC(Vec3s* points, u8 pathcount, Vec3f* pos1, Vec3f* pos2, UNK_TYPE parm5);
@@ -1762,13 +1762,13 @@ void func_800F9824(GlobalContext* globalCtx, EnvironmentContext* envCtx, View* v
// void func_800FA39C(void);
// void func_800FA3C4(void);
// void func_800FA9FC(void);
// void func_800FAAB4(void);
void func_800FAAB4(GlobalContext* globalCtx, u8 arg1);
// void func_800FAC20(void);
// void func_800FAF74(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE1 param_5);
// void func_800FB010(void);
void func_800FB320(GlobalContext* globalCtx, u8 param_2);
// void func_800FB388(void);
// void func_800FB758(void);
void func_800FB758(GlobalContext* globalCtx);
// void func_800FB9B4(void);
// void func_800FBCBC(void);
// void func_800FBDEC(void);
@@ -1814,7 +1814,7 @@ void func_800FE658(f32 arg0);
// void func_800FEA50(void);
void func_800FEAB0(void);
// void func_800FEAC0(void);
// void func_800FEAF4(void);
void func_800FEAF4(EnvironmentContext* envCtx);
void* Lib_MemCpy(void* dest, void* src, size_t size);
void* Lib_MemSet(void* buffer, s32 value, size_t size);
f32 Math_CosS(s16 angle);
@@ -2127,7 +2127,7 @@ void func_8010E9F0(s16 arg0, s16 arg1);
// void func_8010EB50(void);
// void func_8010EBA0(void);
// void func_8010EC54(void);
// void func_8010EE74(void);
void func_8010EE74(GlobalContext* globalCtx, s32 day);
void Interface_ChangeAlpha(u16 param_1);
// void func_8010EF9C(void);
// void func_8010F0D4(void);
@@ -2142,7 +2142,7 @@ void func_80112B40(GlobalContext* globalCtx, s32 arg1);
u32 Item_Give(GlobalContext* globalCtx, u8 param_2);
// void func_801143CC(void);
UNK_TYPE func_80114978(UNK_TYPE arg0);
// void func_801149A0(void);
void func_801149A0(s32 arg0, s16 arg1);
// void func_80114A9C(void);
// void func_80114B84(void);
// void func_80114CA0(void);
@@ -2820,8 +2820,8 @@ void Sram_IncrementDay(void);
u32 Sram_CalcChecksum(u8* data, u32 length);
// void func_80144628(void);
// void Sram_GenerateRandomSaveFields(void);
// void func_80144890(void);
// void func_80144968(void);
void func_80144890(void);
void Sram_InitDebugSave(void);
// void func_80144A94(void);
// void func_80144E78(void);
// void func_8014546C(void);
@@ -2879,7 +2879,7 @@ void func_80150D08(GlobalContext* globalCtx, u32 uParm2);
// void func_801514B0(void);
void func_801518B0(GlobalContext* globalCtx, u16 textId, Actor* Actor);
void func_80151938(GlobalContext* globalCtx, u16 textId);
void func_80151A68(GlobalContext* globalCtx, u16 param_2);
void func_80151A68(GlobalContext* globalCtx, u16 textId);
void func_80151BB4(GlobalContext* globalCtx, u32 uParm2);
// void func_80151C9C(void);
// void func_80151DA4(void);
@@ -3058,7 +3058,7 @@ void func_80169EFC(GlobalContext* globalCtx);
s32 FrameAdvance_IsEnabled(GlobalContext* globalCtx);
// UNK_TYPE4 func_8016A02C(s32 param_1, s32 param_2, s16* param_3);
// void func_8016A0AC(void);
// void func_8016A168(void);
s32 func_8016A168(void);
// void func_8016A178(void);
// void func_8016A268(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE1 param_5, UNK_TYPE1 param_6);
void Play_Init(GameState* gameState);
@@ -3792,7 +3792,7 @@ void func_8019AEC0(UNK_PTR param_1, UNK_PTR param_2);
// void func_8019B38C(void);
// void func_8019B3D0(void);
// void func_8019B4B8(void);
// void func_8019B544(void);
void func_8019B544(u16 arg0);
// void func_8019B568(void);
// void func_8019B5AC(void);
// void func_8019B5EC(void);
@@ -3804,7 +3804,7 @@ void func_8019AEC0(UNK_PTR param_1, UNK_PTR param_2);
// void func_8019C1D0(void);
// void func_8019C268(void);
// void func_8019C2E4(void);
// void func_8019C300(void);
void func_8019C300(s32 arg0);
// void func_8019C398(void);
// void func_8019C5A0(void);
// void func_8019C8D8(void);
@@ -3871,7 +3871,7 @@ void func_8019FE74(f32* arg0, f32 arg1, UNK_TYPE arg2);
// void func_8019FF9C(void);
// void func_801A0048(void);
// void func_801A00EC(void);
// void func_801A0124(void);
void func_801A0124(Vec3f* pos, u8 arg1);
// void func_801A0184(void);
// void func_801A01C4(void);
void func_801A0204(UNK_TYPE);
@@ -4014,7 +4014,7 @@ void func_801A7794(u32 param_1, u32 param_2, u32 param_3);
// void func_801A7B10(void);
// void func_801A7D04(void);
// void func_801A7D84(void);
void func_801A89A8(s32 arg0);
void Audio_QueueSeqCmd(u32 arg0);
// void func_801A89D0(void);
s32 func_801A8A50(s32 param1);
// void func_801A8ABC(void);
+13
View File
@@ -26,6 +26,17 @@
(curState)->nextGameStateInit = (GameStateFunc)newInit; \
(curState)->nextGameStateSize = sizeof(newStruct)
#define SET_FULLSCREEN_VIEWPORT(view) \
{ \
Viewport viewport; \
viewport.bottomY = SCREEN_HEIGHT; \
viewport.rightX = SCREEN_WIDTH; \
viewport.topY = 0; \
viewport.leftX = 0; \
View_SetViewport(view, &viewport); \
} \
(void)0
#define PLAYER ((Player*)globalCtx->actorCtx.actorList[ACTORCAT_PLAYER].first)
#define FIRST_ENEMY ((Actor*)globalCtx->actorCtx.actorList[ACTORCAT_ENEMY].first)
@@ -38,6 +49,7 @@
#define CURRENT_DAY (((void)0, gSaveContext.day) % 5)
#define CLOCK_TIME(hr, min) ((s32)(((hr) * 60 + (min)) * 0x10000 / (24 * 60)))
#define CLOCK_TIME_MINUTE (CLOCK_TIME(0, 1))
#define SLOT(item) gItemSlots[item]
#define AMMO(item) gSaveContext.inventory.ammo[SLOT(item)]
@@ -56,6 +68,7 @@
#define TAKE_EQUIPPED_ITEM(equip) (gSaveContext.equips.equipment = ((((void)0, gSaveContext.equips.equipment) & (gEquipNegMasks[equip])) | (u16)(0 << gEquipShifts[equip])))
#define CUR_FORM_EQUIP(button) (gSaveContext.equips.buttonItems[gSaveContext.playerForm == PLAYER_FORM_HUMAN ? 0 : gSaveContext.playerForm][button])
#define CHECK_QUEST_ITEM(item) (((void)0, gSaveContext.inventory.questItems) & gBitFlags[item])
#define REMOVE_QUEST_ITEM(item) (gSaveContext.inventory.questItems = (((void)0, gSaveContext.inventory.questItems) & (-1 - gBitFlags[item])))
#define CAPACITY(upg, value) gUpgradeCapacities[upg][value]
#define CUR_CAPACITY(upg) CAPACITY(upg, CUR_UPG_VALUE(upg) - 4)
+12 -6
View File
@@ -910,7 +910,7 @@ extern UNK_TYPE1 D_801BA550;
// extern UNK_TYPE1 D_801BB100;
// extern UNK_TYPE2 D_801BB124;
// extern UNK_TYPE2 D_801BB128;
// extern UNK_TYPE1 D_801BB12C;
extern u8 D_801BB12C;
// extern UNK_TYPE1 D_801BB130;
extern cutscene_update_func sCsStateHandlers1[5];
extern cutscene_update_func sCsStateHandlers2[5];
@@ -949,7 +949,7 @@ extern GameStateOverlay daytelopGameStateInfo;
// extern UNK_TYPE2 D_801BDA74;
// extern UNK_TYPE2 D_801BDA78;
// extern UNK_TYPE2 D_801BDA7C;
// extern UNK_TYPE4 D_801BDA9C;
extern s32 D_801BDA9C;
extern UNK_TYPE4 D_801BDAA0;
// extern UNK_TYPE4 D_801BDAA4;
// extern UNK_TYPE2 D_801BDAA8;
@@ -977,7 +977,7 @@ extern u8 kanfontOrdering[92];
// extern UNK_TYPE1 D_801BDBA0;
// extern UNK_TYPE1 D_801BDBA4;
// extern UNK_TYPE1 D_801BDBA8;
// extern UNK_TYPE1 D_801BDBB0;
extern u8 D_801BDBB0;
// extern UNK_TYPE1 D_801BDBB4;
// extern UNK_TYPE1 D_801BDBB8;
// extern UNK_TYPE1 D_801BDBBC;
@@ -3310,7 +3310,7 @@ extern s16 D_801F4E4C;
extern f32 D_801F4E70;
// extern UNK_TYPE1 D_801F4E74;
// extern UNK_TYPE1 D_801F4E78;
// extern UNK_TYPE1 D_801F4E7A;
extern s16 D_801F4E7A;
// extern UNK_TYPE1 D_801F4E80;
// extern UNK_TYPE1 D_801F4EE0;
// extern UNK_TYPE1 D_801F4EE8;
@@ -3952,8 +3952,14 @@ extern UNK_TYPE D_0400E3D8;
extern UNK_TYPE D_0400E408;
extern UNK_TYPE D_0400E410;
extern UNK_TYPE D_0400E418;
extern UNK_TYPE D_0400EB7C;
extern UNK_TYPE D_040117A8;
extern CollisionHeader D_0400E710; // Pink Deku Flower collision
extern AnimationHeader D_0400EB7C; // Deku Flower intense flutter animation
extern Gfx D_0400ED80; // Pink Deku Flower display list
extern SkeletonHeader D_04011518; // Pink Deku Flower skeleton
extern AnimationHeader D_040117A8; // Deku Flower small flutter animation
extern CollisionHeader D_040118D8; // Gold Deku Flower collision
extern Gfx D_04011BD0; // Gold Deku Flower display list
extern SkeletonHeader D_040127E8; // Gold Deku Flower skeleton
extern UNK_TYPE D_04012860;
extern UNK_TYPE D_040128BC;
extern UNK_TYPE D_04015FA0;
+1
View File
@@ -16,6 +16,7 @@
#include "xstdio.h"
#include "unk.h"
#include "bgm.h"
#include "sfx.h"
#include "color.h"
#include "ichain.h"
+2 -1
View File
@@ -20,7 +20,8 @@ typedef enum {
} UpgradeType;
typedef enum {
/* 0x01 */ ITEM_BOW = 0x01,
/* 0x00 */ ITEM_OCARINA,
/* 0x01 */ ITEM_BOW,
/* 0x06 */ ITEM_BOMB = 0x06,
/* 0x07 */ ITEM_BOMBCHU,
/* 0x08 */ ITEM_STICK,
+1 -3
View File
@@ -93,9 +93,7 @@ typedef enum LightType {
/* 0x02 */ LIGHT_POINT_GLOW
} LightType;
typedef struct GlobalContext GlobalContext;
typedef void (*LightsBindFunc)(Lights* lights, LightParams* params, Vec3f* vec);
typedef void (*LightsPosBindFunc)(Lights* lights, LightParams* params, GlobalContext* globalCtx);
typedef void (*LightsPosBindFunc)(Lights* lights, LightParams* params, struct GlobalContext* globalCtx);
#endif
+1 -1
View File
@@ -176,7 +176,7 @@ typedef struct Player {
/* 0x386 */ u16 unk_386;
/* 0x388 */ Actor* unk_388;
/* 0x38C */ s16 unk_38C;
/* 0x390 */ Actor* unk_390;
/* 0x390 */ Actor* rideActor;
/* 0x394 */ u8 unk_394;
/* 0x395 */ u8 unk_395;
/* 0x396 */ u8 unk_396;
+11 -17
View File
@@ -704,16 +704,14 @@ beginseg
name "ovl_select"
compress
include "build/src/overlays/gamestates/ovl_select/z_select.o"
include "build/data/ovl_select/ovl_select.data.o"
include "build/data/ovl_select/ovl_select.reloc.o"
include "build/src/overlays/gamestates/ovl_select/ovl_select_reloc.o"
endseg
beginseg
name "ovl_opening"
compress
include "build/src/overlays/gamestates/ovl_opening/z_opening.o"
include "build/data/ovl_opening/ovl_opening.data.o"
include "build/data/ovl_opening/ovl_opening.reloc.o"
include "build/src/overlays/gamestates/ovl_opening/ovl_opening_reloc.o"
endseg
beginseg
@@ -1182,8 +1180,7 @@ beginseg
name "ovl_En_Rd"
compress
include "build/src/overlays/actors/ovl_En_Rd/z_en_rd.o"
include "build/data/ovl_En_Rd/ovl_En_Rd.data.o"
include "build/data/ovl_En_Rd/ovl_En_Rd.reloc.o"
include "build/src/overlays/actors/ovl_En_Rd/ovl_En_Rd_reloc.o"
endseg
beginseg
@@ -2916,9 +2913,11 @@ beginseg
name "ovl_En_Test4"
compress
include "build/src/overlays/actors/ovl_En_Test4/z_en_test4.o"
include "build/data/ovl_En_Test4/ovl_En_Test4.data.o"
include "build/data/ovl_En_Test4/ovl_En_Test4.bss.o"
#ifdef NON_MATCHING
include "build/src/overlays/actors/ovl_En_Test4/ovl_En_Test4_reloc.o"
#else
include "build/data/ovl_En_Test4/ovl_En_Test4.reloc.o"
#endif
endseg
beginseg
@@ -3207,8 +3206,7 @@ beginseg
name "ovl_Obj_Etcetera"
compress
include "build/src/overlays/actors/ovl_Obj_Etcetera/z_obj_etcetera.o"
include "build/data/ovl_Obj_Etcetera/ovl_Obj_Etcetera.data.o"
include "build/data/ovl_Obj_Etcetera/ovl_Obj_Etcetera.reloc.o"
include "build/src/overlays/actors/ovl_Obj_Etcetera/ovl_Obj_Etcetera_reloc.o"
endseg
beginseg
@@ -4486,8 +4484,7 @@ beginseg
name "ovl_En_Zot"
compress
include "build/src/overlays/actors/ovl_En_Zot/z_en_zot.o"
include "build/data/ovl_En_Zot/ovl_En_Zot.data.o"
include "build/data/ovl_En_Zot/ovl_En_Zot.reloc.o"
include "build/src/overlays/actors/ovl_En_Zot/ovl_En_Zot_reloc.o"
endseg
beginseg
@@ -5311,9 +5308,7 @@ beginseg
name "ovl_En_Thiefbird"
compress
include "build/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.o"
include "build/data/ovl_En_Thiefbird/ovl_En_Thiefbird.data.o"
include "build/data/ovl_En_Thiefbird/ovl_En_Thiefbird.bss.o"
include "build/data/ovl_En_Thiefbird/ovl_En_Thiefbird.reloc.o"
include "build/src/overlays/actors/ovl_En_Thiefbird/ovl_En_Thiefbird_reloc.o"
endseg
beginseg
@@ -5523,8 +5518,7 @@ beginseg
name "ovl_En_Ending_Hero6"
compress
include "build/src/overlays/actors/ovl_En_Ending_Hero6/z_en_ending_hero6.o"
include "build/data/ovl_En_Ending_Hero6/ovl_En_Ending_Hero6.data.o"
include "build/data/ovl_En_Ending_Hero6/ovl_En_Ending_Hero6.reloc.o"
include "build/src/overlays/actors/ovl_En_Ending_Hero6/ovl_En_Ending_Hero6_reloc.o"
endseg
beginseg
+1 -1
View File
@@ -6,7 +6,7 @@
#pragma GLOBAL_ASM("asm/non_matchings/code/code_801A7B10/func_801A7D84.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/code_801A7B10/func_801A89A8.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/code_801A7B10/Audio_QueueSeqCmd.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/code_801A7B10/func_801A89D0.s")
+1 -1
View File
@@ -18,7 +18,7 @@
#pragma GLOBAL_ASM("asm/non_matchings/code/z_sram_NES/func_80144890.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/z_sram_NES/func_80144968.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/z_sram_NES/Sram_InitDebugSave.s")
#pragma GLOBAL_ASM("asm/non_matchings/code/z_sram_NES/func_80144A94.s")
@@ -304,7 +304,7 @@ void EnBji01_DialogueHandler(EnBji01* this, GlobalContext* globalCtx) {
void func_809CD634(EnBji01* this, GlobalContext* globalCtx) {
func_801A5BD0(0x6F);
func_801A89A8(0xE0000101);
Audio_QueueSeqCmd(0xE0000101);
globalCtx->nextEntranceIndex = 0x54A0; /* Termina Field from telescope */
gSaveContext.respawn[0].entranceIndex = globalCtx->nextEntranceIndex;
func_80169EFC(globalCtx); /* Load new entrance? */
@@ -363,7 +363,7 @@ void EnBji01_Init(Actor* thisx, GlobalContext* globalCtx) {
case 0x4C20: /* Observatory from Termina Field telescope */
this->actor.flags |= 0x10000;
func_801A5BD0(0);
func_801A89A8(0xE0000100);
Audio_QueueSeqCmd(0xE0000100);
this->actor.params = ENBJI01_PARAMS_LOOKED_THROUGH_TELESCOPE;
func_809CCE98(this, globalCtx);
break;
@@ -1,3 +1,9 @@
/*
* File: z_en_ending_hero6.c
* Overlay: ovl_En_Ending_Hero6
* Description:
*/
#include "z_en_ending_hero6.h"
#define FLAGS 0x00000009
@@ -9,9 +15,40 @@ void EnEndingHero6_Destroy(Actor* thisx, GlobalContext* globalCtx);
void EnEndingHero6_Update(Actor* thisx, GlobalContext* globalCtx);
void EnEndingHero6_Draw(Actor* thisx, GlobalContext* globalCtx);
void func_80C23E18(EnEndingHero6* this, GlobalContext* globalCtx);
void EnEndingHero6_InitSkelAnime(EnEndingHero6* this, s32 npcIndex);
void EnEndingHero6_SetupIdle(EnEndingHero6* this);
void EnEndingHero6_Idle(EnEndingHero6* this, GlobalContext* globalCtx);
extern FlexSkeletonHeader D_0600B0CC; // object_dt
extern FlexSkeletonHeader D_06007908; // object_bai
extern FlexSkeletonHeader D_06007150; // object_toryo
extern FlexSkeletonHeader D_0600D640; // object_sdn
extern FlexSkeletonHeader D_0600A850; // object_daiku
extern AnimationHeader D_06000BE0; // object_dt
extern AnimationHeader D_060011C0; // object_bai
extern AnimationHeader D_06000E50; // object_toryo
extern AnimationHeader D_06002A84; // object_sdn
extern AnimationHeader D_06002FA0; // object_daiku
// object_daiku
extern Gfx D_060070C0[];
extern Gfx D_06006FB0[];
extern Gfx D_06006E80[];
extern Gfx D_06006D70[];
extern Gfx D_0600A390_dl[];
// object_dt
extern TexturePtr D_06007350;
extern TexturePtr D_06009590;
extern TexturePtr D_06009F90;
extern TexturePtr D_0600A790;
extern TexturePtr D_0600AB90;
extern TexturePtr D_06007750;
extern TexturePtr D_0600A390_tex;
extern TexturePtr D_0600A490;
#if 0
const ActorInit En_Ending_Hero6_InitVars = {
ACTOR_EN_ENDING_HERO6,
ACTORCAT_NPC,
@@ -24,20 +61,131 @@ const ActorInit En_Ending_Hero6_InitVars = {
(ActorFunc)EnEndingHero6_Draw,
};
#endif
static FlexSkeletonHeader* sSkeletons[] = { &D_0600B0CC, &D_06007908, &D_06007150, &D_0600D640, &D_0600A850,
&D_0600A850, &D_0600A850, &D_0600A850, &D_0600A850 };
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Ending_Hero6/EnEndingHero6_Init.s")
static AnimationHeader* sAnimations[] = { &D_06000BE0, &D_060011C0, &D_06000E50, &D_06002A84, &D_06002FA0,
&D_06002FA0, &D_06002FA0, &D_06002FA0, &D_06002FA0 };
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Ending_Hero6/EnEndingHero6_Destroy.s")
static s32 sLimbCounts[] = { 15, 20, 17, 17, 17, 17, 17, 17, 17 };
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Ending_Hero6/func_80C23D60.s")
void EnEndingHero6_Init(Actor* thisx, GlobalContext* globalCtx) {
EnEndingHero6* this = THIS;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Ending_Hero6/func_80C23DDC.s")
this->actor.colChkInfo.mass = MASS_IMMOVABLE;
Actor_SetScale(&this->actor, 0.01f);
this->actor.targetMode = 6;
this->actor.gravity = -3.0f;
SkelAnime_InitSV(globalCtx, &this->skelAnime, sSkeletons[this->npcIndex], sAnimations[this->npcIndex],
this->jointTable, this->morphTable, sLimbCounts[this->npcIndex]);
ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 25.0f);
EnEndingHero6_SetupIdle(this);
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Ending_Hero6/func_80C23E18.s")
void EnEndingHero6_Destroy(Actor* thisx, GlobalContext* globalCtx) {
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Ending_Hero6/EnEndingHero6_Update.s")
void EnEndingHero6_InitSkelAnime(EnEndingHero6* this, s32 npcIndex) {
this->animIndex = npcIndex;
this->frameCount = SkelAnime_GetFrameCount(&sAnimations[npcIndex]->common);
SkelAnime_ChangeAnim(&this->skelAnime, sAnimations[this->animIndex], 1.0f, 0.f, this->frameCount, 0, 0.0f);
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Ending_Hero6/func_80C23F14.s")
void EnEndingHero6_SetupIdle(EnEndingHero6* this) {
EnEndingHero6_InitSkelAnime(this, this->npcIndex);
this->isIdle = 1;
this->actionFunc = EnEndingHero6_Idle;
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Ending_Hero6/EnEndingHero6_Draw.s")
void EnEndingHero6_Idle(EnEndingHero6* this, GlobalContext* globalCtx) {
SkelAnime_FrameUpdateMatrix(&this->skelAnime);
}
void EnEndingHero6_Update(Actor* thisx, GlobalContext* globalCtx) {
EnEndingHero6* this = THIS;
if (this->timer != 0) {
this->timer--;
}
this->actor.shape.rot.y = this->actor.world.rot.y;
if (this->blinkTimer == 0) {
this->eyeState++;
if (this->eyeState >= 3) {
this->eyeState = 0;
this->blinkTimer = (s16)Rand_ZeroFloat(60.0f) + 20;
}
}
this->actionFunc(this, globalCtx);
Actor_SetVelocityAndMoveYRotationAndGravity(&this->actor);
Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 20.0f, 20.0f, 50.0f, 0x1D);
}
void EnEndingHero6_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
static Gfx* D_80C2426C[] = { D_060070C0, D_06006FB0, D_06006E80, D_06006D70, D_0600A390_dl };
EnEndingHero6* this = THIS;
s32 index;
OPEN_DISPS(globalCtx->state.gfxCtx);
if (this->npcIndex >= 4 && limbIndex == 15) {
index = this->npcIndex - 4;
gSPDisplayList(POLY_OPA_DISP++, D_80C2426C[index]);
}
CLOSE_DISPS(globalCtx->state.gfxCtx);
}
void EnEndingHero6_Draw(Actor* thisx, GlobalContext* globalCtx) {
static TexturePtr D_80C24280[] = { &D_06007350, &D_06009590, &D_06009F90, &D_0600A790, &D_0600AB90 };
static TexturePtr D_80C24294[] = { &D_06007750, &D_0600A390_tex, &D_0600A490 };
s32 pad;
EnEndingHero6* this = THIS;
s32 index = 0;
if (this->isIdle == 1) {
OPEN_DISPS(globalCtx->state.gfxCtx);
func_8012C28C(globalCtx->state.gfxCtx);
func_8012C2DC(globalCtx->state.gfxCtx);
if (this->objectIndex >= 0 && Object_IsLoaded(&globalCtx->objectCtx, this->objectIndex)) {
gSPSegment(POLY_OPA_DISP++, 0x06, globalCtx->objectCtx.status[this->objectIndex].segment);
switch (this->npcIndex) {
case 4:
gDPSetEnvColor(POLY_OPA_DISP++, 170, 10, 70, 255);
break;
case 5:
gDPSetEnvColor(POLY_OPA_DISP++, 170, 200, 255, 255);
break;
case 6:
gDPSetEnvColor(POLY_OPA_DISP++, 0, 230, 70, 255);
break;
case 7:
gDPSetEnvColor(POLY_OPA_DISP++, 200, 0, 150, 255);
break;
case 8:
gDPSetEnvColor(POLY_OPA_DISP++, 245, 155, 0, 255);
break;
}
if (this->npcIndex == 0) {
gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(D_80C24280[this->eyeState]));
if (this->eyeState < 3) {
index = this->eyeState;
}
gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(D_80C24294[index]));
}
SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl,
this->skelAnime.dListCount, NULL, EnEndingHero6_PostLimbDraw, &this->actor);
}
CLOSE_DISPS(globalCtx->state.gfxCtx);
}
}
@@ -9,9 +9,18 @@ typedef void (*EnEndingHero6ActionFunc)(struct EnEndingHero6*, GlobalContext*);
typedef struct EnEndingHero6 {
/* 0x0000 */ Actor actor;
/* 0x0144 */ char unk_144[0x134];
/* 0x0144 */ SkelAnime skelAnime;
/* 0x0188 */ Vec3s jointTable[20];
/* 0x0200 */ Vec3s morphTable[20];
/* 0x0278 */ EnEndingHero6ActionFunc actionFunc;
/* 0x027C */ char unk_27C[0x18];
/* 0x027C */ s32 animIndex;
/* 0x0280 */ s32 npcIndex;
/* 0x0284 */ s8 objectIndex;
/* 0x0286 */ s16 timer;
/* 0x0288 */ s16 blinkTimer;
/* 0x028A */ s16 eyeState;
/* 0x028C */ f32 frameCount;
/* 0x0290 */ s16 isIdle;
} EnEndingHero6; // size = 0x294
extern const ActorInit En_Ending_Hero6_InitVars;
+1 -1
View File
@@ -76,7 +76,7 @@ const ActorInit En_Fsn_InitVars = {
(ActorFunc)EnFsn_Draw,
};
ActorAnimationEntryS sAnimations[] = {
static ActorAnimationEntryS sAnimations[] = {
{ &D_06012C34, 1.0f, 0, -1, 0, 0 }, { &D_060131FC, 1.0f, 0, -1, 0, 0 }, { &D_0600C58C, 1.0f, 0, -1, 2, 0 },
{ &D_0600C58C, -1.0f, 0, -1, 2, 0 }, { &D_0600E3EC, 1.0f, 0, -1, 2, 0 }, { &D_0600F00C, 1.0f, 0, -1, 0, 0 },
{ &D_0600CB3C, 1.0f, 0, -1, 2, 0 }, { &D_0600D354, 1.0f, 0, -1, 0, 0 }, { &D_060138B0, 1.0f, 0, -1, 2, 0 },
@@ -7,7 +7,9 @@ struct EnHorse;
typedef struct EnHorse {
/* 0x000 */ Actor actor;
/* 0x144 */ char unk_144[0x450];
/* 0x144 */ char unk_144[0x00C];
/* 0x150 */ s32 unk_150;
/* 0x154 */ char unk_154[0x440];
} EnHorse; // size = 0x594
extern const ActorInit En_Horse_InitVars;
@@ -1699,7 +1699,7 @@ void func_80B4627C(EnInvadepoh* this, GlobalContext* globalCtx) {
} else {
func_80B454BC(this, globalCtx);
func_80B452EC(this, globalCtx);
func_801A89A8(0x800D);
Audio_QueueSeqCmd(0x800D);
func_80B46F88(this);
}
} else if (D_80B4E940 == 3) {
@@ -1987,7 +1987,7 @@ void func_80B46EE8(EnInvadepoh* this, GlobalContext* globalCtx) {
this->actionTimer--;
if (this->actionTimer <= 0) {
ActorCutscene_Stop(D_80B50404[0]);
func_801A89A8(0x800D);
Audio_QueueSeqCmd(0x800D);
func_80B46F88(this);
}
}
+2 -2
View File
@@ -750,8 +750,8 @@ void EnMa4_HorsebackGameWait(EnMa4* this, GlobalContext* globalCtx) {
void EnMa4_SetupHorsebackGameEnd(EnMa4* this, GlobalContext* globalCtx) {
gSaveContext.weekEventReg[0x8] &= (u8)~0x01;
this->actionFunc = EnMa4_HorsebackGameEnd;
func_801A89A8(0x100000FF);
func_801A89A8(0x8041);
Audio_QueueSeqCmd(NA_BGM_STOP);
Audio_QueueSeqCmd(0x8041);
}
void EnMa4_HorsebackGameEnd(EnMa4* this, GlobalContext* globalCtx) {
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More