ovl_En_Nb OK (#1030)

* mips2c general pass

* EnNb_Init

* EnNb_Destroy

* EnNb_Update

* draw functions

* func_80BBFE8C

* func_80BC0D84 non_matching

* func_80BBFE60 and minor fixes

* a bunch of functions

* And another bunch

* An attempt to the last function

* import data

* Match func_80BC0D84

* Use extracted symbols instead of hardcoded ones

* Match last function

* format

* Update the reloc in the spec

* regconvert and draw

* Small docs pass

* actorfixer and format

* Minor renames

* schedule

* cleanups

* namefixer

* minor cleanups

* yeet printing stuff

* Schedule and anims cleanup

* stateFlags

* Name limbs and anims

* Name more stuff in the asset

* Finish naming simple stuff

* format

* merge fixes

* Update src/overlays/actors/ovl_En_Nb/z_en_nb.h

Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>

* Update src/overlays/actors/ovl_En_Nb/z_en_nb.h

Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>

* Update src/overlays/actors/ovl_En_Nb/z_en_nb.h

Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>

* Update src/overlays/actors/ovl_En_Nb/z_en_nb.c

Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>

* EnNb_UpdateSkelAnime

Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>

* fix typo

* Update src/overlays/actors/ovl_En_Nb/z_en_nb.c

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* Update src/overlays/actors/ovl_En_Nb/z_en_nb.c

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* review

Co-authored-by: engineer124 <engineer124engineer124@gmail.com>

* MTXMODE_APPLY

* review

Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>

* format

* Update src/overlays/actors/ovl_En_Nb/z_en_nb.h

Co-authored-by: EllipticEllipsis <elliptic.ellipsis@gmail.com>

* Update src/overlays/actors/ovl_En_Nb/z_en_nb.h

Co-authored-by: EllipticEllipsis <elliptic.ellipsis@gmail.com>

* Update src/overlays/actors/ovl_En_Nb/z_en_nb.h

Co-authored-by: EllipticEllipsis <elliptic.ellipsis@gmail.com>

* review

Co-authored-by: EllipticEllipsis <elliptic.ellipsis@gmail.com>

* review

Co-authored-by: engineer124 <engineer124engineer124@gmail.com>

* clamps

Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>
Co-authored-by: engineer124 <engineer124engineer124@gmail.com>
Co-authored-by: EllipticEllipsis <elliptic.ellipsis@gmail.com>
This commit is contained in:
Anghelo Carvajal
2022-10-16 16:44:03 -03:00
committed by GitHub
co-authored by Derek Hensley engineer124 engineer124 EllipticEllipsis
parent 7b572e8c53
commit 92d93701a9
21 changed files with 897 additions and 157 deletions
+50 -38
View File
@@ -1,46 +1,58 @@
<Root>
<!-- Assets for Anju's Grandma -->
<File Name="object_nb" Segment="6">
<Animation Name="object_nb_Anim_000290" Offset="0x290" />
<Animation Name="object_nb_Anim_00052C" Offset="0x52C" />
<Animation Name="object_nb_Anim_0006D4" Offset="0x6D4" />
<Animation Name="object_nb_Anim_000990" Offset="0x990" />
<DList Name="object_nb_DL_004A70" Offset="0x4A70" />
<DList Name="object_nb_DL_005170" Offset="0x5170" />
<DList Name="object_nb_DL_005430" Offset="0x5430" />
<DList Name="object_nb_DL_0056F0" Offset="0x56F0" />
<DList Name="object_nb_DL_005988" Offset="0x5988" />
<DList Name="object_nb_DL_005AA8" Offset="0x5AA8" />
<DList Name="object_nb_DL_006390" Offset="0x6390" />
<!-- Anju's Grandma Animations-->
<Animation Name="gNbTalkAnim" Offset="0x290" />
<Animation Name="gNbAngryAnim" Offset="0x52C" />
<Animation Name="gNbRelievedAnim" Offset="0x6D4" />
<Animation Name="gNbIdleAnim" Offset="0x990" />
<!-- Anju's Grandma DisplayLists -->
<DList Name="gNbWheelchairDL" Offset="0x4A70" /> <!-- Includes legs -->
<DList Name="gNbRightWheelDL" Offset="0x5170" />
<DList Name="gNbLeftWheelDL" Offset="0x5430" />
<DList Name="gNbTorsoDL" Offset="0x56F0" />
<DList Name="gNbNeckDL" Offset="0x5988" />
<DList Name="gNbHeadDL" Offset="0x5AA8" />
<DList Name="gNbArmsBookDL" Offset="0x6390" />
<!-- Anju's Grandma TLUTs -->
<Texture Name="object_nb_TLUT_006910" OutName="tlut_006910" Format="rgba16" Width="16" Height="16" Offset="0x6910" />
<Texture Name="object_nb_TLUT_006B10" OutName="tlut_006B10" Format="rgba16" Width="16" Height="16" Offset="0x6B10" />
<Texture Name="object_nb_TLUT_006D10" OutName="tlut_006D10" Format="rgba16" Width="16" Height="16" Offset="0x6D10" />
<Texture Name="object_nb_Tex_006F10" OutName="tex_006F10" Format="ci8" Width="8" Height="8" Offset="0x6F10" />
<Texture Name="object_nb_Tex_006F50" OutName="tex_006F50" Format="ci8" Width="16" Height="16" Offset="0x6F50" />
<Texture Name="object_nb_Tex_007050" OutName="tex_007050" Format="ci8" Width="16" Height="16" Offset="0x7050" />
<Texture Name="object_nb_Tex_007150" OutName="tex_007150" Format="ci8" Width="16" Height="8" Offset="0x7150" />
<Texture Name="object_nb_Tex_0071D0" OutName="tex_0071D0" Format="ci8" Width="16" Height="32" Offset="0x71D0" />
<Texture Name="object_nb_Tex_0073D0" OutName="tex_0073D0" Format="ci8" Width="16" Height="8" Offset="0x73D0" />
<Texture Name="object_nb_Tex_007450" OutName="tex_007450" Format="ci8" Width="16" Height="8" Offset="0x7450" />
<Texture Name="object_nb_Tex_0074D0" OutName="tex_0074D0" Format="ci8" Width="16" Height="8" Offset="0x74D0" />
<Texture Name="object_nb_Tex_007550" OutName="tex_007550" Format="ci8" Width="16" Height="16" Offset="0x7550" />
<Texture Name="gNbTigerTLUT" OutName="nb_tiger_tlut" Format="rgba16" Width="16" Height="16" Offset="0x6D10" />
<!-- Anju's Grandma Textures -->
<Texture Name="gNbSkinTex" OutName="nb_skin" Format="ci8" Width="8" Height="8" Offset="0x6F10" TlutOffset="0x6910" />
<Texture Name="gNbEarTex" OutName="nb_ear" Format="ci8" Width="16" Height="16" Offset="0x6F50" TlutOffset="0x6910" />
<Texture Name="object_nb_Tex_007050" OutName="tex_007050" Format="ci8" Width="16" Height="16" Offset="0x7050" TlutOffset="0x6910" />
<Texture Name="gNbUpperEyelidTex" OutName="nb_upper_eyelid" Format="ci8" Width="16" Height="8" Offset="0x7150" TlutOffset="0x6910" />
<Texture Name="gNbHairTex" OutName="nb_hair" Format="ci8" Width="16" Height="32" Offset="0x71D0" TlutOffset="0x6B10" />
<Texture Name="gNbEyeTex" OutName="nb_eye" Format="ci8" Width="16" Height="8" Offset="0x73D0" TlutOffset="0x6910" />
<Texture Name="gNbLowerEyelidTex" OutName="nb_lower_eyelid" Format="ci8" Width="16" Height="8" Offset="0x7450" TlutOffset="0x6910" />
<Texture Name="object_nb_Tex_0074D0" OutName="tex_0074D0" Format="ci8" Width="16" Height="8" Offset="0x74D0" TlutOffset="0x6D10" />
<Texture Name="object_nb_Tex_007550" OutName="tex_007550" Format="ci8" Width="16" Height="16" Offset="0x7550" TlutOffset="0x6B10" />
<Texture Name="object_nb_Tex_007650" OutName="tex_007650" Format="i8" Width="16" Height="16" Offset="0x7650" />
<Texture Name="object_nb_Tex_007750" OutName="tex_007750" Format="rgba16" Width="8" Height="8" Offset="0x7750" />
<Texture Name="object_nb_Tex_0077D0" OutName="tex_0077D0" Format="ci8" Width="16" Height="16" Offset="0x77D0" />
<Texture Name="object_nb_Tex_0078D0" OutName="tex_0078D0" Format="ci8" Width="16" Height="16" Offset="0x78D0" />
<Texture Name="object_nb_Tex_0079D0" OutName="tex_0079D0" Format="ci8" Width="32" Height="16" Offset="0x79D0" />
<Texture Name="object_nb_Tex_007BD0" OutName="tex_007BD0" Format="ci8" Width="16" Height="16" Offset="0x7BD0" />
<Texture Name="object_nb_Tex_007CD0" OutName="tex_007CD0" Format="ci8" Width="16" Height="16" Offset="0x7CD0" />
<Texture Name="object_nb_Tex_007DD0" OutName="tex_007DD0" Format="ci8" Width="16" Height="16" Offset="0x7DD0" />
<Texture Name="object_nb_Tex_007ED0" OutName="tex_007ED0" Format="ci8" Width="16" Height="16" Offset="0x7ED0" />
<Texture Name="object_nb_Tex_007FD0" OutName="tex_007FD0" Format="ci8" Width="32" Height="64" Offset="0x7FD0" />
<Texture Name="object_nb_Tex_0087D0" OutName="tex_0087D0" Format="ci8" Width="32" Height="32" Offset="0x87D0" />
<Limb Name="object_nb_Standardlimb_008BD0" Type="Standard" EnumName="OBJECT_NB_LIMB_01" Offset="0x8BD0" />
<Limb Name="object_nb_Standardlimb_008BDC" Type="Standard" EnumName="OBJECT_NB_LIMB_02" Offset="0x8BDC" />
<Limb Name="object_nb_Standardlimb_008BE8" Type="Standard" EnumName="OBJECT_NB_LIMB_03" Offset="0x8BE8" />
<Limb Name="object_nb_Standardlimb_008BF4" Type="Standard" EnumName="OBJECT_NB_LIMB_04" Offset="0x8BF4" />
<Limb Name="object_nb_Standardlimb_008C00" Type="Standard" EnumName="OBJECT_NB_LIMB_05" Offset="0x8C00" />
<Limb Name="object_nb_Standardlimb_008C0C" Type="Standard" EnumName="OBJECT_NB_LIMB_06" Offset="0x8C0C" />
<Limb Name="object_nb_Standardlimb_008C18" Type="Standard" EnumName="OBJECT_NB_LIMB_07" Offset="0x8C18" />
<Skeleton Name="object_nb_Skel_008C40" Type="Flex" LimbType="Standard" LimbNone="OBJECT_NB_LIMB_NONE" LimbMax="OBJECT_NB_LIMB_MAX" EnumName="ObjectNbLimb" Offset="0x8C40" />
<Texture Name="object_nb_Tex_0077D0" OutName="tex_0077D0" Format="ci8" Width="16" Height="16" Offset="0x77D0" TlutOffset="0x6B10" />
<Texture Name="object_nb_Tex_0078D0" OutName="tex_0078D0" Format="ci8" Width="16" Height="16" Offset="0x78D0" TlutOffset="0x6B10" />
<Texture Name="object_nb_Tex_0079D0" OutName="tex_0079D0" Format="ci8" Width="32" Height="16" Offset="0x79D0" TlutOffset="0x6B10" />
<Texture Name="gNbBookCoverTex" OutName="nb_book_cover" Format="ci8" Width="16" Height="16" Offset="0x7BD0" TlutOffset="0x6B10" />
<Texture Name="gNbSkirtTex" OutName="nb_skirt" Format="ci8" Width="16" Height="16" Offset="0x7CD0" TlutOffset="0x6910" />
<Texture Name="gNbBookPageTex" OutName="nb_book_page" Format="ci8" Width="16" Height="16" Offset="0x7DD0" TlutOffset="0x6D10" />
<Texture Name="gNbFingersTex" OutName="nb_fingers" Format="ci8" Width="16" Height="16" Offset="0x7ED0" TlutOffset="0x6910" />
<Texture Name="gNbTigerTex" OutName="nb_tiger" Format="ci8" Width="32" Height="64" Offset="0x7FD0" TlutOffset="0x6D10" />
<Texture Name="object_nb_Tex_0087D0" OutName="tex_0087D0" Format="ci8" Width="32" Height="32" Offset="0x87D0" TlutOffset="0x6B10" />
<!-- Anju's Grandma Limbs -->
<Limb Name="gNbWheelchairLimb" Type="Standard" EnumName="NB_LIMB_WHEELCHAIR" Offset="0x8BD0" />
<Limb Name="gNbTorsoLimb" Type="Standard" EnumName="NB_LIMB_TORSO" Offset="0x8BDC" />
<Limb Name="gNbArmsBookLimb" Type="Standard" EnumName="NB_LIMB_ARMS_BOOK" Offset="0x8BE8" />
<Limb Name="gNbNeckLimb" Type="Standard" EnumName="NB_LIMB_NECK" Offset="0x8BF4" />
<Limb Name="gNbHeadLimb" Type="Standard" EnumName="NB_LIMB_HEAD" Offset="0x8C00" />
<Limb Name="gNbLeftWheelLimb" Type="Standard" EnumName="NB_LIMB_LEFT_WHEEL" Offset="0x8C0C" />
<Limb Name="gNbRightWheelLimb" Type="Standard" EnumName="NB_LIMB_RIGHT_WHEEL" Offset="0x8C18" />
<!-- Anju's Grandma Skeleton -->
<Skeleton Name="gNbSkel" Type="Flex" LimbType="Standard" LimbNone="NB_LIMB_NONE" LimbMax="NB_LIMB_MAX" EnumName="NbLimb" Offset="0x8C40" />
</File>
</Root>
+2 -2
View File
@@ -1675,7 +1675,7 @@ void Map_Destroy(PlayState* play);
// void func_8010BEBC(void);
// void func_8010BEF0(void);
// void func_8010BF24(void);
s32 func_8010BF58(Actor* actor, PlayState* play, s32* param_3, UNK_PTR param_4, s32* param_5);
s32 func_8010BF58(Actor* actor, PlayState* play, void* param_3, UNK_PTR param_4, s32* param_5);
void Nmi_Init(void);
void Nmi_SetPrenmiStart(void);
// s32 Nmi_GetPrenmiHasStarted(void);
@@ -2393,7 +2393,7 @@ s32 func_8016A02C(GameState* thisx, Actor* actor, s16* yaw);
s32 Play_IsUnderwater(PlayState* this, Vec3f* pos);
s32 Play_IsDebugCamEnabled(void);
void Play_AssignPlayerActorCsIdsFromScene(GameState* thisx, s32 startActorCsId);
void func_8016A268(GameState* gameState, s16 arg1, u8 arg2, u8 arg3, u8 arg4, u8 arg5);
void Play_FillScreen(GameState* gameState, s16 fillScreenOn, u8 red, u8 green, u8 blue, u8 alpha);
void Play_Init(GameState* gameState);
// void func_8016AC10(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_TYPE4 param_10);
// void func_8016AE1C(void);
+8
View File
@@ -47,12 +47,19 @@
#define R_RUN_SPEED_LIMIT REG(45)
#define R_UPDATE_RATE SREG(30)
#define R_PAUSE_MENU_MODE SREG(94)
#define R_PLAY_FILL_SCREEN_ON MREG(64)
#define R_PLAY_FILL_SCREEN_R MREG(65)
#define R_PLAY_FILL_SCREEN_G MREG(66)
#define R_PLAY_FILL_SCREEN_B MREG(67)
#define R_PLAY_FILL_SCREEN_ALPHA MREG(68)
#define R_PAUSE_WORLD_MAP_YAW YREG(24)
#define R_PAUSE_WORLD_MAP_Y_OFFSET YREG(25)
#define R_PAUSE_WORLD_MAP_DEPTH YREG(26)
#define R_PAUSE_DBG_QUEST_CURSOR_ON YREG(69)
#define R_PAUSE_DBG_QUEST_CURSOR_X YREG(70)
#define R_PAUSE_DBG_QUEST_CURSOR_Y YREG(71)
#define R_C_UP_ICON_X YREG(88)
#define R_C_UP_ICON_Y YREG(89)
#define R_MAGIC_FILL_COLOR(i) ZREG(0 + i)
#define R_C_BTN_COLOR(i) ZREG(39 + i)
#define R_B_BTN_COLOR(i) ZREG(43 + i)
@@ -81,6 +88,7 @@
#define R_MOON_CRASH_TIMER_Y XREG(80)
#define R_MOON_CRASH_TIMER_X XREG(81)
#define R_PAUSE_OWLWARP_ALPHA XREG(87)
#define R_STORY_FILL_SCREEN_ALPHA XREG(91)
#define R_REVERSE_FLOOR_INDEX XREG(94)
#define R_MINIMAP_DISABLED XREG(95)
#define R_B_LABEL_DD WREG(0)
+2 -2
View File
@@ -555,8 +555,8 @@ typedef struct {
/* 0x318 */ u8 pictographBox;
/* 0x319 */ u8 all; // "another"; enables all item restrictions
} restrictions; // size = 0xC
/* 0x31A */ u8 unk_31A;
/* 0x31B */ u8 unk_31B;
/* 0x31A */ u8 storyState;
/* 0x31B */ u8 storyType;
/* 0x31C */ u8 unk_31C;
/* 0x320 */ OSMesgQueue unk_320;
/* 0x338 */ OSMesg unk_338;
+1 -2
View File
@@ -4297,8 +4297,7 @@ beginseg
name "ovl_En_Nb"
compress
include "build/src/overlays/actors/ovl_En_Nb/z_en_nb.o"
include "build/data/ovl_En_Nb/ovl_En_Nb.data.o"
include "build/data/ovl_En_Nb/ovl_En_Nb.reloc.o"
include "build/src/overlays/actors/ovl_En_Nb/ovl_En_Nb_reloc.o"
endseg
beginseg
+1 -1
View File
@@ -27,7 +27,7 @@ void Setup_SetRegs(void) {
XREG(88) = 0x56;
XREG(89) = 0x258;
XREG(90) = 0x1C2;
XREG(91) = 0;
R_STORY_FILL_SCREEN_ALPHA = 0;
R_REVERSE_FLOOR_INDEX = 0;
R_MINIMAP_DISABLED = false;
+7 -7
View File
@@ -540,13 +540,13 @@ void Play_AssignPlayerActorCsIdsFromScene(GameState* thisx, s32 startActorCsId)
}
}
// These regs are used by Gameplay_Draw, and several actors, purpose as yet unclear.
void func_8016A268(GameState* thisx, s16 arg1, u8 arg2, u8 arg3, u8 arg4, u8 arg5) {
MREG(64) = arg1;
MREG(65) = arg2;
MREG(66) = arg3;
MREG(67) = arg4;
MREG(68) = arg5;
// Set values to fill screen
void Play_FillScreen(GameState* thisx, s16 fillScreenOn, u8 red, u8 green, u8 blue, u8 alpha) {
R_PLAY_FILL_SCREEN_ON = fillScreenOn;
R_PLAY_FILL_SCREEN_R = red;
R_PLAY_FILL_SCREEN_G = green;
R_PLAY_FILL_SCREEN_B = blue;
R_PLAY_FILL_SCREEN_ALPHA = alpha;
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/Play_Init.s")
+16 -20
View File
@@ -462,20 +462,20 @@ Vec3f D_809DFA2C[] = {
{ -800.0f, -1000.0f, 0.0f }, { -800.0f, -1000.0f, 0.0f }, { -800.0f, -1000.0f, 0.0f },
};
void func_809DA1D0(PlayState* play, u8 arg1, u8 arg2, u8 arg3, u8 arg4) {
MREG(64) = 1;
MREG(65) = arg1;
MREG(66) = arg2;
MREG(67) = arg3;
MREG(68) = arg4;
void func_809DA1D0(PlayState* play, u8 red, u8 green, u8 blue, u8 alpha) {
R_PLAY_FILL_SCREEN_ON = true;
R_PLAY_FILL_SCREEN_R = red;
R_PLAY_FILL_SCREEN_G = green;
R_PLAY_FILL_SCREEN_B = blue;
R_PLAY_FILL_SCREEN_ALPHA = alpha;
}
void func_809DA22C(PlayState* play, u8 arg1) {
MREG(68) = arg1;
void func_809DA22C(PlayState* play, u8 alpha) {
R_PLAY_FILL_SCREEN_ALPHA = alpha;
}
void func_809DA24C(PlayState* play) {
MREG(64) = 0;
R_PLAY_FILL_SCREEN_ON = false;
}
void Boss02_SpawnEffectSand(TwinmoldEffect* effects, Vec3f* pos, f32 scale) {
@@ -1626,7 +1626,7 @@ void func_809DD934(Boss02* this, PlayState* play) {
Vec3f sp58;
u8 sp57 = 0;
f32 phi_f0_2;
s16 phi_v1;
s16 alpha;
this->unk_1D14++;
@@ -1995,11 +1995,9 @@ void func_809DD934(Boss02* this, PlayState* play) {
if (this->unk_1D7A >= 400) {
this->unk_1D78 = 3;
}
phi_v1 = this->unk_1D7A;
if (phi_v1 > 255) {
phi_v1 = 255;
}
func_809DA22C(play, phi_v1);
alpha = this->unk_1D7A;
alpha = CLAMP_MAX(alpha, 255);
func_809DA22C(play, alpha);
break;
case 3:
@@ -2009,11 +2007,9 @@ void func_809DD934(Boss02* this, PlayState* play) {
this->unk_1D78 = 0;
func_809DA24C(play);
} else {
phi_v1 = this->unk_1D7A;
if (phi_v1 > 255) {
phi_v1 = 255;
}
func_809DA22C(play, phi_v1);
alpha = this->unk_1D7A;
alpha = CLAMP_MAX(alpha, 255);
func_809DA22C(play, alpha);
}
break;
}
+4 -3
View File
@@ -5,7 +5,6 @@
*/
#include "z_dm_nb.h"
#include "objects/object_nb/object_nb.h"
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_8)
@@ -28,7 +27,9 @@ const ActorInit Dm_Nb_InitVars = {
(ActorFunc)DmNb_Draw,
};
static AnimationInfoS sAnimationInfo[] = { { &object_nb_Anim_000990, 1.0f, 0, -1, ANIMMODE_LOOP, 0 } };
static AnimationInfoS sAnimationInfo[] = {
{ &gNbIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
};
s32 func_80C1DED0(DmNb* this, s32 arg1) {
s32 ret = false;
@@ -70,7 +71,7 @@ void DmNb_Init(Actor* thisx, PlayState* play) {
DmNb* this = THIS;
ActorShape_Init(&this->actor.shape, 0.0f, NULL, 0.0f);
SkelAnime_InitFlex(play, &this->skelAnime, &object_nb_Skel_008C40, NULL, this->jointTable, this->morphTable, 8);
SkelAnime_InitFlex(play, &this->skelAnime, &gNbSkel, NULL, this->jointTable, this->morphTable, NB_LIMB_MAX);
this->unk1F0 = -1;
func_80C1DED0(this, 0);
this->actor.flags &= ~ACTOR_FLAG_1;
+3 -2
View File
@@ -2,6 +2,7 @@
#define Z_DM_NB_H
#include "global.h"
#include "objects/object_nb/object_nb.h"
struct DmNb;
@@ -11,8 +12,8 @@ typedef struct DmNb {
/* 0x000 */ Actor actor;
/* 0x144 */ SkelAnime skelAnime;
/* 0x188 */ DmNbActionFunc actionFunc;
/* 0x18C */ Vec3s jointTable[8];
/* 0x1BC */ Vec3s morphTable[8];
/* 0x18C */ Vec3s jointTable[NB_LIMB_MAX];
/* 0x1BC */ Vec3s morphTable[NB_LIMB_MAX];
/* 0x1EC */ u8 unk1EC;
/* 0x1F0 */ s32 unk1F0;
/* 0x1F4 */ s32 unk1F4;
@@ -261,7 +261,8 @@ void DoorShutter_Destroy(Actor* thisx, PlayState* play) {
}
void DoorShutter_SetupType(DoorShutter* this, PlayState* play) {
if (Object_IsLoaded(&play->objectCtx, this->requiredObjBankIndex) && ((MREG(64) == 0) || (MREG(68) == 0))) {
if (Object_IsLoaded(&play->objectCtx, this->requiredObjBankIndex) &&
(!R_PLAY_FILL_SCREEN_ON || (R_PLAY_FILL_SCREEN_ALPHA == 0))) {
this->actor.objBankIndex = this->requiredObjBankIndex;
this->actor.draw = DoorShutter_Draw;
DoorShutter_SetupDoor(this, play);
+1 -2
View File
@@ -361,8 +361,7 @@ s32 EnBjt_ChooseAnimation(EnBjt* this, PlayState* play) {
void EnBjt_Talk(EnBjt* this, PlayState* play) {
s16 yaw = this->actor.yawTowardsPlayer;
// TODO: Casting to remove warning for now
if (func_8010BF58(&this->actor, play, (s32)sMsgEventScript, this->msgEventCallback, &this->msgEventArg4)) {
if (func_8010BF58(&this->actor, play, sMsgEventScript, this->msgEventCallback, &this->msgEventArg4)) {
this->actor.flags &= ~ACTOR_FLAG_100;
SubS_UpdateFlags(&this->stateFlags, 3, 7);
this->stateFlags &= ~TOILET_HAND_STATE_TALKING;
File diff suppressed because it is too large Load Diff
+43 -4
View File
@@ -2,18 +2,57 @@
#define Z_EN_NB_H
#include "global.h"
#include "objects/object_nb/object_nb.h"
struct EnNb;
typedef void (*EnNbActionFunc)(struct EnNb*, PlayState*);
typedef s32 (*EnNbUnkFunc)(Actor*, PlayState*);
typedef void (*EnNbUnkFunc2)(struct EnNb*, PlayState*);
typedef enum EnNbAnimation {
/* -1 */ EN_NB_ANIM_INVALID = -1,
/* 0 */ EN_NB_ANIM_0,
/* 1 */ EN_NB_ANIM_1,
/* 2 */ EN_NB_ANIM_TALK_ONCE,
/* 3 */ EN_NB_ANIM_TALK_LOOP,
/* 4 */ EN_NB_ANIM_ANGRY,
/* 5 */ EN_NB_ANIM_RELIEVED,
} EnNbAnimation;
typedef struct EnNb {
/* 0x000 */ Actor actor;
/* 0x144 */ char unk_144[0x44];
/* 0x144 */ SkelAnime skelAnime;
/* 0x188 */ EnNbActionFunc actionFunc;
/* 0x18C */ char unk_18C[0x110];
/* 0x18C */ EnNbUnkFunc2 unk_18C;
/* 0x190 */ ColliderCylinder collider;
/* 0x1DC */ u8 scheduleResult;
/* 0x1E0 */ u8* msgEventScript;
/* 0x1E4 */ s32 msgEventArg4;
/* 0x1E8 */ Actor* unk_1E8;
/* 0x1EC */ UNK_TYPE1 unk_1EC[4];
/* 0x1F0 */ Vec3f headComputedPos;
/* 0x1FC */ Vec3s headComputedRot;
/* 0x202 */ Vec3s jointTable[NB_LIMB_MAX];
/* 0x232 */ Vec3s morphTable[NB_LIMB_MAX];
/* 0x262 */ u16 stateFlags;
/* 0x264 */ u16 textId;
/* 0x268 */ f32 animPlaySpeed;
/* 0x26C */ f32 unk_26C; // Related to unk_270
/* 0x270 */ f32 unk_270; // headDisplacement? controls how much the upper part of the head moves when she talks
/* 0x274 */ f32 unk_274;
/* 0x278 */ UNK_TYPE1 unk_278[4];
/* 0x27C */ s16 headRotZ; // Slightly rotates head when talking
/* 0x27E */ s16 headRotY;
/* 0x280 */ s16 timePathTimeSpeed;
/* 0x282 */ s16 unk_282; // timer?
/* 0x284 */ s16 unk_284; // storyState?
/* 0x286 */ s16 storyTimer;
/* 0x288 */ s16 behaviour;
/* 0x28C */ EnNbUnkFunc msgEventCallback;
/* 0x290 */ EnNbAnimation animIndex;
/* 0x294 */ UNK_TYPE1 unk_294[4];
/* 0x294 */ TextState prevTalkState;
} EnNb; // size = 0x29C
extern const ActorInit En_Nb_InitVars;
#endif // Z_EN_NB_H
+11 -11
View File
@@ -594,11 +594,11 @@ void func_80AF2030(EnTest7* this, PlayState* play) {
subCam->fov = ((subCam->fov - this->subCamFov) * sp1C) + this->subCamFov;
if (this->unk_1E54 >= 100) {
MREG(64) = 1;
MREG(65) = 255;
MREG(66) = 255;
MREG(67) = 255;
MREG(68) = 255;
R_PLAY_FILL_SCREEN_ON = true;
R_PLAY_FILL_SCREEN_R = 255;
R_PLAY_FILL_SCREEN_G = 255;
R_PLAY_FILL_SCREEN_B = 255;
R_PLAY_FILL_SCREEN_ALPHA = 255;
play->unk_18844 = 0;
this->unk_144 &= ~4;
func_80AF082C(this, func_80AF21E8);
@@ -612,13 +612,13 @@ void func_80AF21E8(EnTest7* this, PlayState* play) {
Color_RGB8 sp24 = { 64, 0, 0 };
Color_RGB8 sp20 = { 220, 220, 255 };
if (MREG(64) != 0) {
if (R_PLAY_FILL_SCREEN_ON) {
Audio_PlaySfxAtPos(&this->actor.projectedPos, NA_SE_PL_WARP_WING_VANISH);
MREG(64) = 0;
MREG(65) = 0;
MREG(66) = 0;
MREG(67) = 0;
MREG(68) = 0;
R_PLAY_FILL_SCREEN_ON = false;
R_PLAY_FILL_SCREEN_R = 0;
R_PLAY_FILL_SCREEN_G = 0;
R_PLAY_FILL_SCREEN_B = 0;
R_PLAY_FILL_SCREEN_ALPHA = 0;
}
sp1C = 1.0f - (sp2C / 10.0f);
+3 -3
View File
@@ -955,7 +955,7 @@ s32 func_80A87B48(Actor* thisx, PlayState* play) {
sp4C.z = 40.0f;
Lib_Vec3f_TranslateAndRotateY(&this->actor.world.pos, sp3E, &sp4C, &sp40);
func_80A85620(this->unk_394, &sp40, 2.0f, 0.08f, 60.0f);
func_8016A268(&play->state, 1, 160, 160, 160, 0);
Play_FillScreen(&play->state, true, 160, 160, 160, 0);
this->unk_370 = 20;
this->unk_372 = 10;
this->unk_364++;
@@ -967,7 +967,7 @@ s32 func_80A87B48(Actor* thisx, PlayState* play) {
case 2:
if (DECR(this->unk_370) != 0) {
MREG(68) = 255.0f - ((fabsf(10.0f - this->unk_370) / 10) * 255.0f);
R_PLAY_FILL_SCREEN_ALPHA = 255.0f - ((fabsf(10.0f - this->unk_370) / 10) * 255.0f);
if (this->unk_370 == 9) {
this->actor.shape.shadowDraw = NULL;
this->unk_34E |= (0x200 | 0x8);
@@ -978,7 +978,7 @@ s32 func_80A87B48(Actor* thisx, PlayState* play) {
EnTru_ChangeAnim(this, KOUME_ANIM_HOVER1);
}
} else {
MREG(64) = 0;
R_PLAY_FILL_SCREEN_ON = false;
ret = true;
}
break;
+10 -10
View File
@@ -3038,7 +3038,7 @@
0x8016A0AC:("Play_IsUnderwater",),
0x8016A168:("Play_IsDebugCamEnabled",),
0x8016A178:("Play_AssignPlayerActorCsIdsFromScene",),
0x8016A268:("func_8016A268",),
0x8016A268:("Play_FillScreen",),
0x8016A2C8:("Play_Init",),
0x8016AC10:("func_8016AC10",),
0x8016AE1C:("func_8016AE1C",),
@@ -15451,9 +15451,9 @@
0x80BBF5F0:("EnSGoro_DrawUnrolled",),
0x80BBF6BC:("EnSGoro_DrawRolledUp",),
0x80BBF7BC:("EnSGoro_Draw",),
0x80BBFDB0:("func_80BBFDB0",),
0x80BBFE60:("func_80BBFE60",),
0x80BBFE8C:("func_80BBFE8C",),
0x80BBFDB0:("EnNb_FindActor",),
0x80BBFE60:("EnNb_UpdateSkelAnime",),
0x80BBFE8C:("EnNb_ChangeAnim",),
0x80BBFF24:("func_80BBFF24",),
0x80BBFF90:("func_80BBFF90",),
0x80BBFFD4:("func_80BBFFD4",),
@@ -15470,17 +15470,17 @@
0x80BC0A18:("func_80BC0A18",),
0x80BC0B98:("func_80BC0B98",),
0x80BC0C0C:("func_80BC0C0C",),
0x80BC0C80:("func_80BC0C80",),
0x80BC0C80:("EnNb_ProcessScheduleOutput",),
0x80BC0D08:("func_80BC0D08",),
0x80BC0D1C:("func_80BC0D1C",),
0x80BC0D84:("func_80BC0D84",),
0x80BC0D1C:("EnNb_HandleSchedule",),
0x80BC0D84:("EnNb_FollowSchedule",),
0x80BC0EAC:("func_80BC0EAC",),
0x80BC0F60:("EnNb_Init",),
0x80BC1080:("EnNb_Destroy",),
0x80BC10C0:("EnNb_Update",),
0x80BC1174:("func_80BC1174",),
0x80BC11B4:("func_80BC11B4",),
0x80BC1278:("func_80BC1278",),
0x80BC1174:("EnNb_OverrideLimbDraw",),
0x80BC11B4:("EnNb_PostLimbDraw",),
0x80BC1278:("EnNb_TransformLimbDraw",),
0x80BC1374:("EnNb_Draw",),
0x80BC1900:("func_80BC1900",),
0x80BC192C:("func_80BC192C",),
+1 -1
View File
@@ -15626,7 +15626,7 @@
0x80BC15D0:("En_Nb_InitVars","UNK_TYPE1","",0x1),
0x80BC15F0:("D_80BC15F0","UNK_TYPE1","",0x1),
0x80BC161C:("D_80BC161C","UNK_TYPE1","",0x1),
0x80BC1628:("D_80BC1628","UNK_TYPE1","",0x1),
0x80BC1628:("sAnimationInfo","UNK_TYPE1","",0x1),
0x80BC1690:("jtbl_80BC1690","UNK_PTR","",0x4),
0x80BC16B8:("jtbl_80BC16B8","UNK_PTR","",0x4),
0x80BC16D0:("jtbl_80BC16D0","UNK_PTR","",0x4),
+2
View File
@@ -739,6 +739,8 @@ wordReplace = {
"globalCtx->envCtx.unk_C3": "play->envCtx.lightSettingOverride",
"globalCtx->envCtx.unk_DC": "play->envCtx.lightBlend",
"globalCtx->interfaceCtx.unk_21E": "play->interfaceCtx.bButtonDoAction",
"play->interfaceCtx.unk_31A": "play->interfaceCtx.storyState",
"play->interfaceCtx.unk_31B": "play->interfaceCtx.storyType",
# "play->actorCtx.flags": "play->actorCtx.sceneFlags",
# "play->actorCtx.unk5": "play->actorCtx.flags",
+1 -1
View File
@@ -2552,7 +2552,7 @@ asm/non_matchings/code/z_play/func_8016A02C.s,func_8016A02C,0x8016A02C,0x20
asm/non_matchings/code/z_play/Play_IsUnderwater.s,Play_IsUnderwater,0x8016A0AC,0x2F
asm/non_matchings/code/z_play/Play_IsDebugCamEnabled.s,Play_IsDebugCamEnabled,0x8016A168,0x4
asm/non_matchings/code/z_play/func_8016A178.s,func_8016A178,0x8016A178,0x3C
asm/non_matchings/code/z_play/func_8016A268.s,func_8016A268,0x8016A268,0x18
asm/non_matchings/code/z_play/Play_FillScreen.s,Play_FillScreen,0x8016A268,0x18
asm/non_matchings/code/z_play/Play_Init.s,Play_Init,0x8016A2C8,0x252
asm/non_matchings/code/z_play_hireso/func_8016AC10.s,func_8016AC10,0x8016AC10,0x83
asm/non_matchings/code/z_play_hireso/func_8016AE1C.s,func_8016AE1C,0x8016AE1C,0x117
1 asm/non_matchings/code/z_en_a_keep/EnAObj_Init.s EnAObj_Init 0x800A5AC0 0x2B
2552 asm/non_matchings/code/z_play/Play_IsUnderwater.s Play_IsUnderwater 0x8016A0AC 0x2F
2553 asm/non_matchings/code/z_play/Play_IsDebugCamEnabled.s Play_IsDebugCamEnabled 0x8016A168 0x4
2554 asm/non_matchings/code/z_play/func_8016A178.s func_8016A178 0x8016A178 0x3C
2555 asm/non_matchings/code/z_play/func_8016A268.s asm/non_matchings/code/z_play/Play_FillScreen.s func_8016A268 Play_FillScreen 0x8016A268 0x18
2556 asm/non_matchings/code/z_play/Play_Init.s Play_Init 0x8016A2C8 0x252
2557 asm/non_matchings/code/z_play_hireso/func_8016AC10.s func_8016AC10 0x8016AC10 0x83
2558 asm/non_matchings/code/z_play_hireso/func_8016AE1C.s func_8016AE1C 0x8016AE1C 0x117

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