mirror of
https://github.com/zeldaret/tww.git
synced 2026-06-04 18:58:35 -04:00
100% text
This commit is contained in:
+1
-1
@@ -1605,7 +1605,7 @@ config.libs = [
|
||||
ActorRel(NonMatching, "d_a_npc_kg1"),
|
||||
ActorRel(NonMatching, "d_a_npc_kg2"),
|
||||
ActorRel(NonMatching, "d_a_npc_kk1"),
|
||||
ActorRel(NonMatching, "d_a_npc_km1"),
|
||||
ActorRel(Equivalent, "d_a_npc_km1",extra_cflags=['-pragma "nosyminline on"']), # weak func order
|
||||
ActorRel(NonMatching, "d_a_npc_ko1"),
|
||||
ActorRel(NonMatching, "d_a_npc_kp1"),
|
||||
ActorRel(NonMatching, "d_a_npc_ls1"),
|
||||
|
||||
@@ -5,22 +5,41 @@
|
||||
#include "f_op/f_op_actor.h"
|
||||
#include "m_Do/m_Do_hostIO.h"
|
||||
|
||||
|
||||
|
||||
class daNpc_Km1_c : public fopNpc_npc_c {
|
||||
public:
|
||||
|
||||
typedef int (daNpc_Km1_c::*ActionFunc)(void*);
|
||||
|
||||
struct anm_prm_c {
|
||||
|
||||
s8 field_0x0;
|
||||
s8 field_0x1;
|
||||
u16 field_0x2;
|
||||
float field_0x4;
|
||||
float field_0x8;
|
||||
int field_0xC;
|
||||
};
|
||||
struct prm_tbl {
|
||||
u32 field_0x00;
|
||||
u32 field_0x04;
|
||||
u32 field_0x08;
|
||||
u32 field_0x0C;
|
||||
u32 field_0x10;
|
||||
f32 field_0x14;
|
||||
u32 field_0x18;
|
||||
};
|
||||
|
||||
void getAttPos() {}
|
||||
void getBackboneJntNum() {}
|
||||
Vec* getAttPos() {return &field_0x780;}
|
||||
s8 getBackboneJntNum() {return m_backbone_jnt_num;}
|
||||
void getBackbone_x() {}
|
||||
void getBackbone_y() {}
|
||||
void getEyePos() {}
|
||||
void getHeadJntNum() {}
|
||||
Vec* getEyePos() {return &field_0x78C;}
|
||||
s8 getHeadJntNum() {return m_head_jnt_num;}
|
||||
void getHead_x() {}
|
||||
void getHead_y() {}
|
||||
|
||||
void createInit();
|
||||
bool createInit();
|
||||
void setMtx();
|
||||
bool anmResID(int, int*, int*);
|
||||
void BtpNum2ResID(int, int*);
|
||||
@@ -28,7 +47,7 @@ public:
|
||||
u8 init_btp(bool, int);
|
||||
bool initTexPatternAnm(bool);
|
||||
void playTexPatternAnm();
|
||||
void setAnm_anm(anm_prm_c*);
|
||||
s32 setAnm_anm(anm_prm_c*);
|
||||
void setAnm();
|
||||
void chngAnmTag();
|
||||
void ctrlAnmTag();
|
||||
@@ -50,26 +69,31 @@ public:
|
||||
void privateCut();
|
||||
void endEvent();
|
||||
void event_proc();
|
||||
void set_action(int (daNpc_Km1_c::*)(void*), void*);
|
||||
void wait01();
|
||||
void talk01();
|
||||
void wait_action1(void*);
|
||||
void demo();
|
||||
bool set_action(ActionFunc, void*);
|
||||
BOOL wait01();
|
||||
BOOL talk01();
|
||||
int wait_action1(void*);
|
||||
u8 demo();
|
||||
bool _draw();
|
||||
bool _execute();
|
||||
bool _delete();
|
||||
cPhs_State _create();
|
||||
void CreateHeap();
|
||||
BOOL CreateHeap();
|
||||
|
||||
public:
|
||||
/* 0x6C4 */ u8 m6C4[0x6CC - 0x6C4];
|
||||
/* 0x6CC */ u8 mHeadJntIdx;
|
||||
/* 0x6CD */ u8 mBackBoneJntIdx;
|
||||
/* 0x6CE */ u8 field_0x6CE[0x6F4 - 0x6CE];
|
||||
/* 0x6F4 */ int (daNpc_Km1_c::*field_0x6F4)();
|
||||
/* 0x700 */ u8 field_0x700[0x738 - 0x700];
|
||||
/* 0x700 */ cXyz field_0x738;
|
||||
/* 0x700 */ u8 field_0x744[0x76C - 0x744];
|
||||
/* 0x6C4 */ request_of_phase_process_class field_0x6C4;
|
||||
/* 0x6CC */ s8 m_head_jnt_num;
|
||||
/* 0x6CD */ s8 m_backbone_jnt_num;
|
||||
/* 0x6CE */ u8 field_0x6CE[0x6D0 - 0x6CE];
|
||||
/* 0x6D0 */ u32 mShadowId;
|
||||
/* 0x6D4 */ J3DModel* field_0x6D4;
|
||||
/* 0x6D8 */ J3DAnmTexPattern* m_head_tex_pattern;
|
||||
/* 0x6DC */ mDoExt_btpAnm mBtpAnm;
|
||||
/* 0x6F0 */ u8 mBtpFrame;
|
||||
/* 0x6F1 */ u8 field_0x6F1;
|
||||
/* 0x6F2 */ s16 field_0x6F2;
|
||||
/* 0x6F4 */ ActionFunc field_0x6F4;
|
||||
/* 0x700 */ dNpc_EventCut_c mEventCut;
|
||||
/* 0x76C */ csXyz field_0x76C;
|
||||
/* 0x772 */ u8 field_0x772[0x774 - 0x772];
|
||||
/* 0x774 */ cXyz field_0x774;
|
||||
@@ -79,39 +103,49 @@ public:
|
||||
/* 0x7A4 */ f32 field_0x7A4;
|
||||
/* 0x7A8 */ u8 field_0x7A8[0x7AC - 0x7A8];
|
||||
/* 0x7AC */ f32 field_0x7AC;
|
||||
|
||||
/* 0x7B0 */ s16 field_0x7B0;
|
||||
/* 0x7B2 */ s16 field_0x7B2;
|
||||
/* 0x7B4 */ s8 field_0x7B4;
|
||||
/* 0x7B5 */ s8 field_0x7B5;
|
||||
/* 0x7B6 */ u8 field_0x7B6[0x7B8 - 0x7B6];
|
||||
/* 0x7B6 */ u8 field_0x7B6;
|
||||
/* 0x7B7 */ u8 field_0x7B7;
|
||||
/* 0x7B8 */ u8 field_0x7B8;
|
||||
/* 0x7B9 */ u8 field_0x7B9[0x7BC - 0x7B9];
|
||||
/* 0x7BC */ s32 field_0x7BC;
|
||||
/* 0x7C0 */ s32 field_0x7C0;
|
||||
/* 0x7C4 */ u16 field_0x7C5;
|
||||
/* 0x7C4 */ u8 field_0x7C4;
|
||||
/* 0x7C5 */ u8 field_0x7C5;
|
||||
/* 0x7C6 */ bool mHeadOnlyFollow;
|
||||
/* 0x7C7 */ u8 field_0x7C7;
|
||||
/* 0x7C8 */ u8 field_0x7C8[0x7CA - 0x7C8];
|
||||
/* 0x7C8 */ u8 field_0x7C8;
|
||||
/* 0x7C8 */ s8 field_0x7C9;
|
||||
/* 0x7CA */ s8 field_0x7CA;
|
||||
/* 0x7CB */ s8 field_0x7CB;
|
||||
/* 0x7CC */ s8 field_0x7CC;
|
||||
/* 0x7CB */ u8 field_0x7CB;
|
||||
/* 0x7CC */ u8 field_0x7CC;
|
||||
/* 0x7CD */ s8 field_0x7CD;
|
||||
/* 0x7CE */ s8 field_0x7CE;
|
||||
/* 0x7CF */ u8 field_0x7CF;
|
||||
/* 0x7CF */ s8 field_0x7CF;
|
||||
/* 0x7D0 */ s8 field_0x7D0;
|
||||
/* 0x7D0 */ s8 field_0x7D1;
|
||||
/* 0x7D0 */ s8 field_0x7D2;
|
||||
/* 0x7D0 */ s8 field_0x7D3;
|
||||
/* 0x7D0 */ s8 field_0x7D4;
|
||||
/* 0x7D0 */ s8 field_0x7D5;
|
||||
/* 0x7D0 */ s8 field_0x7D6;
|
||||
/* 0x7D0 */ s8 field_0x7D7;
|
||||
/* 0x7D1 */ s8 field_0x7D1;
|
||||
/* 0x7D2 */ s8 field_0x7D2;
|
||||
/* 0x7D3 */ s8 field_0x7D3;
|
||||
/* 0x7D4 */ s8 field_0x7D4;
|
||||
/* 0x7D5 */ s8 field_0x7D5;
|
||||
/* 0x7D6 */ s8 field_0x7D6;
|
||||
/* 0x7D7 */ s8 field_0x7D7;
|
||||
}; // Size: 0x7D8
|
||||
|
||||
class daNpc_Km1_HIO_c : mDoHIO_entry_c {
|
||||
class daNpc_Km1_HIO_c : public JORReflexible{
|
||||
struct daNpc_Km1_HIO__PrmTbl{
|
||||
s16 field_0[0x9];
|
||||
s16 field_0;
|
||||
s16 field_2;
|
||||
s16 field_4;
|
||||
s16 field_6;
|
||||
s16 field_8;
|
||||
s16 field_A;
|
||||
s16 field_C;
|
||||
s16 field_E;
|
||||
s16 field_10;
|
||||
s16 field_12;
|
||||
f32 mAttentionArrowYOffset;
|
||||
f32 field_18;
|
||||
@@ -121,7 +155,7 @@ public:
|
||||
virtual ~daNpc_Km1_HIO_c(){};
|
||||
public:
|
||||
/* Place member variables here */
|
||||
/* 0x4 */ s8 field_0x4;
|
||||
/* 0x4 */ s8 mNo;
|
||||
/* 0x5 */ s8 field_0x5;
|
||||
/* 0x6 */ s8 field_0x6;
|
||||
/* 0x7 */ s8 field_0x7;
|
||||
|
||||
+502
-100
@@ -5,30 +5,82 @@
|
||||
|
||||
#include "d/actor/d_a_npc_km1.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_s_play.h"
|
||||
#include "d/d_snap.h"
|
||||
#include "m_Do/m_Do_ext.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "d/d_priority.h"
|
||||
|
||||
#include "weak_bss_936_to_1036.h"
|
||||
static daNpc_Km1_HIO_c l_HIO;
|
||||
|
||||
/* 000000EC-00000144 .text __ct__15daNpc_Km1_HIO_cFv */
|
||||
daNpc_Km1_HIO_c::daNpc_Km1_HIO_c() {
|
||||
/* Nonmatching */
|
||||
|
||||
static daNpc_Km1_c::prm_tbl a_prm_tbl[] = {0x1FFE38E0, 0xE002C720, 0x00000000, 0x00000000,
|
||||
0x08000800, 150.0, 0x00000000};
|
||||
memcpy(&mPrmTbl,a_prm_tbl,0x1C);
|
||||
mNo = -1;
|
||||
field_0x8 = -1;
|
||||
return;
|
||||
}
|
||||
|
||||
/* 00000144-000002F0 .text nodeCallBack_Km__FP7J3DNodei */
|
||||
static BOOL nodeCallBack_Km(J3DNode*, int) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
static BOOL nodeCallBack_Km(J3DNode* i_node, int i_calcTiming) {
|
||||
|
||||
|
||||
if (i_calcTiming == 0) {
|
||||
J3DModel* model = j3dSys.getModel();
|
||||
daNpc_Km1_c* km1Actor = (daNpc_Km1_c *)(model->getUserArea());
|
||||
u16 jointIdx;
|
||||
if (km1Actor) {
|
||||
static cXyz a_att_pos_offst(0.0,0.0,0.0);
|
||||
static cXyz a_eye_pos_offst(20.0,20.0,0.0);
|
||||
jointIdx = ((J3DJoint*)(i_node))->getJntNo();
|
||||
mDoMtx_stack_c::copy(model->getAnmMtx(jointIdx));
|
||||
if(jointIdx == km1Actor->getHeadJntNum()){
|
||||
MTXMultVec(mDoMtx_stack_c::get(),&a_att_pos_offst,km1Actor->getAttPos());
|
||||
mDoMtx_stack_c::XrotM(km1Actor->m_jnt.getHead_y());
|
||||
mDoMtx_stack_c::ZrotM(km1Actor->m_jnt.getHead_x());
|
||||
MTXMultVec(mDoMtx_stack_c::get(),&a_eye_pos_offst,km1Actor->getEyePos());
|
||||
}else if(jointIdx == km1Actor->getBackboneJntNum()){
|
||||
mDoMtx_stack_c::XrotM(km1Actor->m_jnt.getBackbone_y());
|
||||
mDoMtx_stack_c::ZrotM(km1Actor->m_jnt.getBackbone_x());
|
||||
}
|
||||
MtxP stack = mDoMtx_stack_c::get();
|
||||
cMtx_copy(stack,J3DSys::mCurrentMtx);
|
||||
MTXCopy(stack,model->getAnmMtx(jointIdx));
|
||||
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
extern dCcD_SrcCyl dNpc_cyl_src;
|
||||
/* 0000032C-0000043C .text createInit__11daNpc_Km1_cFv */
|
||||
void daNpc_Km1_c::createInit() {
|
||||
/* Nonmatching */
|
||||
bool daNpc_Km1_c::createInit() {
|
||||
|
||||
mEventCut.setActorInfo2("Km1", this);
|
||||
attention_info.flags = fopAc_Attn_LOCKON_TALK_e | fopAc_Attn_ACTION_SPEAK_e;
|
||||
attention_info.distances[1] = 0xAB;
|
||||
attention_info.distances[3] = 0xA9;
|
||||
gravity = -4.0;
|
||||
field_0x798 = current.pos;
|
||||
set_action(&daNpc_Km1_c::wait_action1,NULL);
|
||||
shape_angle = current.angle;
|
||||
mStts.Init(0xFF,0xFF,this);
|
||||
mCyl.SetStts(&mStts);
|
||||
mCyl.Set(dNpc_cyl_src);
|
||||
mpMorf->setMorf(0.0);
|
||||
field_0x7BC = 1;
|
||||
setMtx();
|
||||
return 1;
|
||||
|
||||
}
|
||||
|
||||
/* 0000043C-0000054C .text setMtx__11daNpc_Km1_cFv */
|
||||
void daNpc_Km1_c::setMtx() {
|
||||
/* Nonmatching */
|
||||
|
||||
u32 uVar1;
|
||||
char cVar2;
|
||||
u8 bVar3;
|
||||
@@ -55,45 +107,27 @@ void daNpc_Km1_c::setMtx() {
|
||||
setAttention();
|
||||
}
|
||||
|
||||
#define ANM_END 1
|
||||
static int a_anm_idx_tbl[1][2];
|
||||
|
||||
/* 0000054C-00000654 .text anmResID__11daNpc_Km1_cFiPiPi */
|
||||
bool daNpc_Km1_c::anmResID(int i_num, int* o_bck_num, int* o_bas_num) {
|
||||
/* Nonmatching */
|
||||
bool check_safe = false;
|
||||
if(0 <= i_num && i_num < ANM_END){
|
||||
check_safe = true;
|
||||
}
|
||||
if(!check_safe){
|
||||
JUTAssertion::showAssert(JUTAssertion::getSDevice(),"d_a_npc_km1.cpp",0x11A,"0 <= i_num && i_num < ANM_END"); //ANM_END = 1
|
||||
OSPanic("d_a_npc_km1.cpp", 0x11A, "Halt");
|
||||
}
|
||||
check_safe = false;
|
||||
if(o_bck_num != NULL && o_bas_num != NULL){
|
||||
check_safe = true;
|
||||
}
|
||||
if(!check_safe){
|
||||
JUTAssertion::showAssert(JUTAssertion::getSDevice(),"d_a_npc_km1.cpp",0x11A,"o_bck_num && o_bas_num");
|
||||
OSPanic("d_a_npc_km1.cpp", 0x11B, "Halt");
|
||||
}
|
||||
const int ANM_END = 1;
|
||||
static const int a_anm_idx_tbl[1][2] = {1,0};
|
||||
|
||||
JUT_ASSERT(0x11A,0 <= i_num && i_num < ANM_END);
|
||||
JUT_ASSERT(0x11B,o_bck_num && o_bas_num);
|
||||
*o_bck_num = a_anm_idx_tbl[i_num][0];
|
||||
*o_bas_num = a_anm_idx_tbl[i_num][1];
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int a_btp_arc_ix_tbl[2] = {0,3};
|
||||
|
||||
/* 00000654-000006F0 .text BtpNum2ResID__11daNpc_Km1_cFiPi */
|
||||
void daNpc_Km1_c::BtpNum2ResID(int i_num, int* o_btp_num)
|
||||
{
|
||||
bool check_safe = false;
|
||||
if (0 <= i_num && i_num < ANM_END) { //TODO: Possibly not this define, 1 instead.
|
||||
check_safe = true;
|
||||
}
|
||||
if (!check_safe) {
|
||||
JUTAssertion::showAssert(JUTAssertion::getSDevice(),"d_a_npc_km1.cpp",0x130,"0 <= i_num && i_num < TEXPATTERN_END");
|
||||
OSPanic("d_a_npc_km1.cpp",0x130,"Halt");
|
||||
}
|
||||
*o_btp_num = a_btp_arc_ix_tbl[i_num];
|
||||
const int TEXPATTERN_END = 1;
|
||||
static const int a_btp_arc_ix_tbl[1] = {3};
|
||||
JUT_ASSERT(0x130,0 <= i_num && i_num < TEXPATTERN_END);
|
||||
*o_btp_num = a_btp_arc_ix_tbl[i_num];
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -107,8 +141,27 @@ void daNpc_Km1_c::setAnm_tex(signed char i_param_1) {
|
||||
}
|
||||
|
||||
/* 00000734-00000850 .text init_btp__11daNpc_Km1_cFbi */
|
||||
u8 daNpc_Km1_c::init_btp(bool, int) {
|
||||
/* Nonmatching */
|
||||
u8 daNpc_Km1_c::init_btp(bool param_1, int param_2) {
|
||||
|
||||
int btp_num;
|
||||
int iVar3;
|
||||
J3DModelData *pJVar4;
|
||||
|
||||
pJVar4 = mpMorf->getModel()->getModelData();
|
||||
if (param_2 >= 0) {
|
||||
BtpNum2ResID(param_2,&btp_num);
|
||||
J3DAnmTexPattern* pVVar1 = (J3DAnmTexPattern*)dComIfG_getObjectIDRes("Km",btp_num);
|
||||
m_head_tex_pattern = pVVar1;
|
||||
JUT_ASSERT(0x151,m_head_tex_pattern != 0);
|
||||
iVar3 = mBtpAnm.init(pJVar4,m_head_tex_pattern,1,2,1.0,0,-1,param_1,0);
|
||||
|
||||
if (iVar3 == 0) {
|
||||
return 0;
|
||||
}
|
||||
mBtpFrame = 0;
|
||||
field_0x6F2 = 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 00000850-00000894 .text initTexPatternAnm__11daNpc_Km1_cFb */
|
||||
@@ -125,63 +178,164 @@ bool daNpc_Km1_c::initTexPatternAnm(bool param_1) {
|
||||
|
||||
/* 00000894-00000958 .text playTexPatternAnm__11daNpc_Km1_cFv */
|
||||
void daNpc_Km1_c::playTexPatternAnm() {
|
||||
/* Nonmatching */
|
||||
|
||||
|
||||
//TODO: Rewrite this conditional logic
|
||||
bool var_r4 = 1;
|
||||
if(field_0x7CD == 0){
|
||||
var_r4 = !cLib_calcTimer(&field_0x6F2);
|
||||
}
|
||||
if(!var_r4){
|
||||
return;
|
||||
}
|
||||
|
||||
if((mBtpFrame += 1) < m_head_tex_pattern->getFrameMax()){
|
||||
return;
|
||||
}
|
||||
|
||||
if(field_0x7CD){
|
||||
mBtpFrame = m_head_tex_pattern->getFrameMax();
|
||||
return;
|
||||
|
||||
}else{
|
||||
mBtpFrame = 0;
|
||||
field_0x6F2 = cM_rndF(60.0) + 30.0f;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/* 00000958-00000A24 .text setAnm_anm__11daNpc_Km1_cFPQ211daNpc_Km1_c9anm_prm_c */
|
||||
void daNpc_Km1_c::setAnm_anm(daNpc_Km1_c::anm_prm_c*) {
|
||||
/* Nonmatching */
|
||||
s32 daNpc_Km1_c::setAnm_anm(daNpc_Km1_c::anm_prm_c* i_anm_ptr) {
|
||||
|
||||
u32 uVar2 = 0;
|
||||
int local_18;
|
||||
int local_14;
|
||||
|
||||
|
||||
if (i_anm_ptr->field_0x0 >= 0 && field_0x7CE != i_anm_ptr->field_0x0) {
|
||||
|
||||
field_0x7CE = i_anm_ptr->field_0x0;
|
||||
if (mpMorf != NULL) {
|
||||
anmResID(field_0x7CE,&local_18,&local_14);
|
||||
if (local_18 >= 0) {
|
||||
dNpc_setAnmIDRes(mpMorf,i_anm_ptr->field_0xC,i_anm_ptr->field_0x4,i_anm_ptr->field_0x8,local_18,local_14,"Km");
|
||||
}
|
||||
uVar2 = 1;
|
||||
}
|
||||
field_0x7A4 = 0;
|
||||
field_0x7B5 = 0;
|
||||
field_0x7B4 = 0;
|
||||
}
|
||||
return uVar2;
|
||||
}
|
||||
|
||||
/* 00000A24-00000A8C .text setAnm__11daNpc_Km1_cFv */
|
||||
void daNpc_Km1_c::setAnm() {
|
||||
/* Nonmatching */
|
||||
|
||||
static daNpc_Km1_c::anm_prm_c a_anm_prm_tbl2[3] = {
|
||||
{-1,-1,0,0,0,-1},
|
||||
{0,0,0x00,8,1,2},
|
||||
{-1,-1,0,0,0,-1}
|
||||
};
|
||||
setAnm_tex(a_anm_prm_tbl2[field_0x7D0].field_0x1);
|
||||
setAnm_anm(&a_anm_prm_tbl2[field_0x7D0]);
|
||||
}
|
||||
|
||||
/* 00000A8C-00000A98 .text chngAnmTag__11daNpc_Km1_cFv */
|
||||
void daNpc_Km1_c::chngAnmTag() {
|
||||
/* Nonmatching */
|
||||
|
||||
switch(field_0x7CC){
|
||||
case 0:
|
||||
break;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/* 00000A98-00000AA4 .text ctrlAnmTag__11daNpc_Km1_cFv */
|
||||
void daNpc_Km1_c::ctrlAnmTag() {
|
||||
/* Nonmatching */
|
||||
|
||||
switch(field_0x7CB){
|
||||
case 0:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* 00000AA4-00000AE4 .text chngAnmAtr__11daNpc_Km1_cFUc */
|
||||
void daNpc_Km1_c::chngAnmAtr(unsigned char) {
|
||||
/* Nonmatching */
|
||||
void daNpc_Km1_c::chngAnmAtr(unsigned char param_1) {
|
||||
if(param_1 < 1 && param_1 != field_0x7CB){
|
||||
field_0x7CB = param_1;
|
||||
setAnm_ATR(1);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/* 00000AE4-00000AE8 .text ctrlAnmAtr__11daNpc_Km1_cFv */
|
||||
void daNpc_Km1_c::ctrlAnmAtr() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
}
|
||||
/* 00000AE8-00000B50 .text setAnm_ATR__11daNpc_Km1_cFi */
|
||||
void daNpc_Km1_c::setAnm_ATR(int) {
|
||||
/* Nonmatching */
|
||||
void daNpc_Km1_c::setAnm_ATR(int param_1) {
|
||||
|
||||
static daNpc_Km1_c::anm_prm_c a_anm_prm_tbl3[1] = {
|
||||
{0x00,0x00,0x00,8,1,2}
|
||||
};
|
||||
if(param_1 != 0){
|
||||
setAnm_tex(a_anm_prm_tbl3[field_0x7CB].field_0x1);
|
||||
}
|
||||
setAnm_anm((&a_anm_prm_tbl3[field_0x7CB]));
|
||||
return;
|
||||
}
|
||||
|
||||
/* 00000B50-00000C0C .text anmAtr__11daNpc_Km1_cFUs */
|
||||
void daNpc_Km1_c::anmAtr(unsigned short) {
|
||||
/* Nonmatching */
|
||||
void daNpc_Km1_c::anmAtr(unsigned short param_1) {
|
||||
|
||||
if(param_1 == 6){
|
||||
if(field_0x7D6 == 0){
|
||||
field_0x7CC = 0xFF;
|
||||
chngAnmAtr(dComIfGp_getMesgAnimeAttrInfo());
|
||||
field_0x7D6 += 1;
|
||||
}
|
||||
u8 uVar1 = dComIfGp_getMesgAnimeTagInfo();
|
||||
if(uVar1 != 0xFF && uVar1 != field_0x7CC){
|
||||
dComIfGp_clearMesgAnimeTagInfo();
|
||||
field_0x7CC = uVar1;
|
||||
chngAnmTag();
|
||||
}
|
||||
}else if(param_1 == 0xE){
|
||||
field_0x7D6 = 0;
|
||||
}
|
||||
ctrlAnmAtr();
|
||||
ctrlAnmTag();
|
||||
return;
|
||||
}
|
||||
|
||||
/* 00000C0C-00000C64 .text setStt__11daNpc_Km1_cFSc */
|
||||
void daNpc_Km1_c::setStt(signed char) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
void daNpc_Km1_c::setStt(signed char param_1) {
|
||||
|
||||
s8 uVar1 = field_0x7D0;
|
||||
field_0x7D0 = param_1;
|
||||
switch((s8)field_0x7D0) {
|
||||
case 2:
|
||||
field_0x7D2 = 1;
|
||||
field_0x7CB = 0xFF;
|
||||
field_0x7D1 = uVar1;
|
||||
break;
|
||||
default:
|
||||
case 1:
|
||||
setAnm();
|
||||
break;
|
||||
}
|
||||
return;
|
||||
}
|
||||
/* 00000C64-00000C6C .text next_msgStatus__11daNpc_Km1_cFPUl */
|
||||
u16 daNpc_Km1_c::next_msgStatus(unsigned long*) {
|
||||
/* Nonmatching */
|
||||
|
||||
return 0x10;
|
||||
}
|
||||
|
||||
/* 00000C6C-00000C74 .text getMsg__11daNpc_Km1_cFv */
|
||||
u32 daNpc_Km1_c::getMsg() {
|
||||
/* Nonmatching */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -199,7 +353,7 @@ void daNpc_Km1_c::eventOrder() {
|
||||
|
||||
/* 00000CC4-00000D04 .text checkOrder__11daNpc_Km1_cFv */
|
||||
void daNpc_Km1_c::checkOrder() {
|
||||
/* Nonmatching */
|
||||
|
||||
if(eventInfo.checkCommandDemoAccrpt()){
|
||||
return;
|
||||
}
|
||||
@@ -216,18 +370,13 @@ void daNpc_Km1_c::checkOrder() {
|
||||
|
||||
/* 00000D04-00000E94 .text lookBack__11daNpc_Km1_cFv */
|
||||
void daNpc_Km1_c::lookBack() {
|
||||
/* Nonmatching */
|
||||
// mLookBackHeadY = m_jnt.getHead_y();
|
||||
// mLookBackBackboneY = m_jnt.getBackbone_y();
|
||||
// mLookBackAngleY = current.angle.y;
|
||||
|
||||
cXyz vec1;
|
||||
cXyz vec2 = current.pos;
|
||||
vec2.y = eyePos.y;
|
||||
|
||||
vec1.setall(0.0);
|
||||
|
||||
int Int1;
|
||||
fopAc_ac_c *pActor;
|
||||
|
||||
cXyz* dstPos = NULL;
|
||||
s16 targetY = current.angle.y;
|
||||
bool headOnlyFollow = mHeadOnlyFollow;
|
||||
@@ -271,6 +420,7 @@ bool daNpc_Km1_c::chkAttention() {
|
||||
}
|
||||
}
|
||||
|
||||
const u32 fillerbytes[] = {0xFF000080,0x0000FF80};
|
||||
/* 00000F14-00000F78 .text setAttention__11daNpc_Km1_cFv */
|
||||
void daNpc_Km1_c::setAttention() {
|
||||
|
||||
@@ -316,102 +466,354 @@ bool daNpc_Km1_c::event_action() {
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static char* cut_name_tbl[] = {"ACTION"};
|
||||
/* 0000103C-00001144 .text privateCut__11daNpc_Km1_cFv */
|
||||
void daNpc_Km1_c::privateCut() {
|
||||
/* Nonmatching */
|
||||
// dComIfGp_evmng_getMyStringP()
|
||||
// int staffIdx = dComIfGp_evmng_getMyStaffId()
|
||||
|
||||
int staffIdx = dComIfGp_evmng_getMyStaffId("Km1",NULL,0);
|
||||
if(staffIdx != -1){
|
||||
int uVar1 = dComIfGp_evmng_getMyActIdx(staffIdx,cut_name_tbl,1,1,0);
|
||||
field_0x7C9 = uVar1;
|
||||
if(field_0x7C9 == -1){
|
||||
dComIfGp_evmng_cutEnd(staffIdx);
|
||||
return;
|
||||
}
|
||||
if(dComIfGp_evmng_getIsAddvance(staffIdx)){
|
||||
switch(field_0x7C9){
|
||||
case 0:
|
||||
event_actionInit(staffIdx);
|
||||
}
|
||||
}
|
||||
bool bVar1;
|
||||
switch(field_0x7C9){
|
||||
case 0:
|
||||
bVar1 = event_action();
|
||||
break;
|
||||
default:
|
||||
bVar1 = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
if(bVar1){
|
||||
dComIfGp_evmng_cutEnd(staffIdx);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/* 00001144-00001164 .text endEvent__11daNpc_Km1_cFv */
|
||||
void daNpc_Km1_c::endEvent() {
|
||||
/* Nonmatching */
|
||||
|
||||
dComIfGp_event_onEventFlag(8);
|
||||
field_0x7CB = 0xFF;
|
||||
return;
|
||||
}
|
||||
|
||||
/* 00001164-000011C4 .text event_proc__11daNpc_Km1_cFv */
|
||||
void daNpc_Km1_c::event_proc() {
|
||||
/* Nonmatching */
|
||||
|
||||
if(!mEventCut.cutProc()){
|
||||
privateCut();
|
||||
}
|
||||
lookBack();
|
||||
shape_angle = current.angle;
|
||||
}
|
||||
|
||||
/* 000011C4-00001270 .text set_action__11daNpc_Km1_cFM11daNpc_Km1_cFPCvPvPv_iPv */
|
||||
void daNpc_Km1_c::set_action(int (daNpc_Km1_c::*)(void*), void*) {
|
||||
/* Nonmatching */
|
||||
bool daNpc_Km1_c::set_action(ActionFunc i_action, void* param_2) {
|
||||
|
||||
if(field_0x6F4 != i_action){
|
||||
if(field_0x6F4 != 0){
|
||||
field_0x7D5 = 0xFF;
|
||||
(this->*field_0x6F4)(param_2);
|
||||
}
|
||||
field_0x6F4 = i_action;
|
||||
field_0x7D5 = 0;
|
||||
(this->*field_0x6F4)(param_2);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 00001270-00001368 .text wait01__11daNpc_Km1_cFv */
|
||||
void daNpc_Km1_c::wait01() {
|
||||
/* Nonmatching */
|
||||
BOOL daNpc_Km1_c::wait01() {
|
||||
|
||||
if(field_0x7C5 != 0){
|
||||
bool set_stt = true;
|
||||
field_0x7B7 = 0xFF;
|
||||
if(dComIfGp_event_chkTalkXY()){
|
||||
if(dComIfGp_evmng_ChkPresentEnd() != 0){
|
||||
field_0x7B7 = dComIfGp_event_getPreItemNo();
|
||||
}else{
|
||||
set_stt = false;
|
||||
}
|
||||
}
|
||||
if(set_stt){
|
||||
setStt(2);
|
||||
}
|
||||
}else{
|
||||
field_0x7CF = 2;
|
||||
if(field_0x7C4){
|
||||
field_0x7D2 = 1;
|
||||
}else{
|
||||
field_0x7D2 = 3;
|
||||
field_0x7B2 = field_0x76C.y;
|
||||
m_jnt.setTrn();
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 00001368-000013F8 .text talk01__11daNpc_Km1_cFv */
|
||||
void daNpc_Km1_c::talk01() {
|
||||
/* Nonmatching */
|
||||
BOOL daNpc_Km1_c::talk01() {
|
||||
talk(1);
|
||||
if(mpCurrMsg != NULL){
|
||||
switch(mpCurrMsg->mStatus){
|
||||
case 6:
|
||||
case 2:
|
||||
break;
|
||||
case 19:
|
||||
field_0x7B7 = 0xFF;
|
||||
setStt((field_0x7D1));
|
||||
field_0x7C8 = 0;
|
||||
field_0x7C5 = 0;
|
||||
endEvent();
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 000013F8-000014AC .text wait_action1__11daNpc_Km1_cFPv */
|
||||
void daNpc_Km1_c::wait_action1(void*) {
|
||||
/* Nonmatching */
|
||||
int daNpc_Km1_c::wait_action1(void*) {
|
||||
|
||||
if(field_0x7D5 == 0){
|
||||
setStt(1);
|
||||
field_0x7D5 += 1;
|
||||
}else if( field_0x7D5 != -1){
|
||||
|
||||
field_0x7C4 = chkAttention();
|
||||
switch(field_0x7D0){
|
||||
case 2:
|
||||
field_0x7C0 = talk01();
|
||||
break;
|
||||
case 1:
|
||||
field_0x7C0 = wait01();
|
||||
break;
|
||||
default:
|
||||
field_0x7C0 = 0;
|
||||
break;
|
||||
}
|
||||
lookBack();
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 000014AC-00001548 .text demo__11daNpc_Km1_cFv */
|
||||
void daNpc_Km1_c::demo() {
|
||||
/* Nonmatching */
|
||||
u8 daNpc_Km1_c::demo() {
|
||||
|
||||
if(demoActorID == 0){
|
||||
if(field_0x7C7 != 0){
|
||||
field_0x7C7 = 0;
|
||||
}
|
||||
}else{
|
||||
field_0x7C7 = 1;
|
||||
dComIfGp_demo_getActor(demoActorID);
|
||||
dDemo_setDemoData(this,0x6A,mpMorf,"Km",0,0,0,0);
|
||||
}
|
||||
return field_0x7C7;
|
||||
}
|
||||
|
||||
/* 00001548-000016AC .text _draw__11daNpc_Km1_cFv */
|
||||
bool daNpc_Km1_c::_draw() {
|
||||
/* Nonmatching */
|
||||
|
||||
J3DModelData *model_data;
|
||||
J3DModel *model;
|
||||
model = mpMorf->getModel();
|
||||
model_data = model->getModelData();
|
||||
g_env_light.settingTevStruct(TEV_TYPE_ACTOR,¤t.pos,&tevStr);
|
||||
g_env_light.setLightTevColorType(model,&tevStr);
|
||||
mBtpAnm.entry(model_data,mBtpFrame);
|
||||
mpMorf->entryDL();
|
||||
mBtpAnm.remove(model_data);
|
||||
dNpc_setShadowModel(field_0x6D4,model_data,model);
|
||||
|
||||
cXyz pos(current.pos.x,current.pos.y+150.0f,current.pos.z);
|
||||
mShadowId = dComIfGd_setRealShadow(mShadowId,1,field_0x6D4,&pos,800.0,current.pos.y-mObjAcch.GetGroundH(),NULL);
|
||||
if(mShadowId == 0){
|
||||
cXyz* pFloorNrm = (cXyz*)dComIfG_Bgsp()->GetTriPla(mObjAcch.m_gnd.GetBgIndex(),mObjAcch.m_gnd.GetPolyIndex());
|
||||
dComIfGd_setSimpleShadow(¤t.pos,mObjAcch.GetGroundH(),40.0,pFloorNrm);
|
||||
}
|
||||
dSnap_RegistFig(0x58,this,1.0,1.0,1.0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 000016AC-00001808 .text _execute__11daNpc_Km1_cFv */
|
||||
bool daNpc_Km1_c::_execute() {
|
||||
/* Nonmatching */
|
||||
|
||||
if(field_0x7B8 == 0){
|
||||
field_0x774 = current.pos;
|
||||
field_0x76C = current.angle;
|
||||
field_0x7B8 = 1;
|
||||
}
|
||||
m_jnt.setParam(l_HIO.mPrmTbl.field_8,
|
||||
l_HIO.mPrmTbl.field_A,l_HIO.mPrmTbl.field_C,
|
||||
l_HIO.mPrmTbl.field_E,l_HIO.mPrmTbl.field_0,
|
||||
l_HIO.mPrmTbl.field_2,l_HIO.mPrmTbl.field_4,
|
||||
l_HIO.mPrmTbl.field_6,l_HIO.mPrmTbl.field_10);
|
||||
checkOrder();
|
||||
if(demo() == 0){
|
||||
if (dComIfGp_event_runCheck() && !eventInfo.checkCommandTalk()){
|
||||
event_proc();
|
||||
}else{
|
||||
(this->*field_0x6F4)(NULL);
|
||||
shape_angle = current.angle;
|
||||
}
|
||||
}
|
||||
eventOrder();
|
||||
if(field_0x7C7 == 0){
|
||||
fopAcM_posMoveF(this,(cXyz*)&mStts);
|
||||
}
|
||||
setMtx();
|
||||
setCollision(60.0,150.0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 00001808-0000188C .text _delete__11daNpc_Km1_cFv */
|
||||
bool daNpc_Km1_c::_delete() {
|
||||
/* Nonmatching */
|
||||
|
||||
fopAcM_GetID(this);
|
||||
dComIfG_resDelete(&field_0x6C4,"Km");
|
||||
|
||||
if(mpMorf != NULL){
|
||||
mpMorf->stopZelAnime();
|
||||
}
|
||||
if(l_HIO.field_0x8 >= 0){
|
||||
l_HIO.field_0x8 += -1;
|
||||
if(l_HIO.field_0x8 < 0){
|
||||
mDoHIO_deleteChild(l_HIO.mNo);
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
|
||||
}
|
||||
|
||||
/* 0000188C-000018AC .text CheckCreateHeap__FP10fopAc_ac_c */
|
||||
static BOOL CheckCreateHeap(fopAc_ac_c*) {
|
||||
/* Nonmatching */
|
||||
static BOOL CheckCreateHeap(fopAc_ac_c* actor) {
|
||||
|
||||
return ((daNpc_Km1_c*)actor)->CreateHeap();
|
||||
}
|
||||
|
||||
/* 000018AC-00001A1C .text _create__11daNpc_Km1_cFv */
|
||||
cPhs_State daNpc_Km1_c::_create() {
|
||||
/* Nonmatching */
|
||||
|
||||
static int a_heap_size_tbl[1] = {0x000272E0};
|
||||
fopAcM_SetupActor(this,daNpc_Km1_c);
|
||||
|
||||
|
||||
if (!decideType(base.mParameters & 0xff)) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
s32 resLoadResult = dComIfG_resLoad(&field_0x6C4,"Km");
|
||||
|
||||
|
||||
if(resLoadResult != cPhs_COMPLEATE_e){
|
||||
return resLoadResult;
|
||||
}
|
||||
if(l_HIO.field_0x8 < 0){
|
||||
l_HIO.mNo = mDoHIO_createChild("金持ちム−ル",&l_HIO);
|
||||
}
|
||||
l_HIO.field_0x8 += 1;
|
||||
if(fopAcM_entrySolidHeap(this,CheckCreateHeap,a_heap_size_tbl[field_0x7D3])){
|
||||
|
||||
cullMtx = (MtxP)mpMorf->mpModel->getBaseTRMtx();
|
||||
fopAcM_SetMtx(this,cullMtx);
|
||||
fopAcM_setCullSizeBox(this,-60.0,-20.0,-80.0,60.0,160.0,60.0);
|
||||
|
||||
}else{
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
if (createInit() == 0) {
|
||||
resLoadResult = cPhs_ERROR_e;
|
||||
|
||||
|
||||
}
|
||||
return resLoadResult;
|
||||
|
||||
}
|
||||
|
||||
/* 00001E4C-00002158 .text CreateHeap__11daNpc_Km1_cFv */
|
||||
void daNpc_Km1_c::CreateHeap() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
BOOL daNpc_Km1_c::CreateHeap() {
|
||||
|
||||
static u8 a_tex_pattern_num_tbl[1] = {0};
|
||||
J3DModelData *a_mdl_data;
|
||||
|
||||
|
||||
a_mdl_data = (J3DModelData*)dComIfG_getObjectIDRes("Km",0x2);
|
||||
JUT_ASSERT(0x52D,a_mdl_data != 0);
|
||||
mpMorf = new mDoExt_McaMorf(
|
||||
a_mdl_data,
|
||||
NULL, NULL,
|
||||
(J3DAnmTransform*)dComIfG_getObjectIDRes("Km", 0x1),
|
||||
J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1, 1, NULL,
|
||||
0x80000, 0x11020002
|
||||
);
|
||||
if (mpMorf){
|
||||
if(mpMorf->getModel()) {
|
||||
|
||||
m_head_jnt_num = a_mdl_data->getJointName()->getIndex("head");
|
||||
JUT_ASSERT(0x540,m_head_jnt_num >= 0);
|
||||
m_backbone_jnt_num = a_mdl_data->getJointName()->getIndex("backbone");
|
||||
JUT_ASSERT(0x542,m_backbone_jnt_num >= 0);
|
||||
field_0x7CD = a_tex_pattern_num_tbl[field_0x7D3];
|
||||
if (initTexPatternAnm(false) != 0) {
|
||||
field_0x6D4 = mDoExt_J3DModel__create(a_mdl_data,0x20000,0x11020203);
|
||||
if (field_0x6D4 != 0) {
|
||||
for (u16 i = 0; i < a_mdl_data->getJointNum(); i += 1) {
|
||||
if ((i == m_head_jnt_num) || (i == m_backbone_jnt_num)) {
|
||||
mpMorf->mpModel->getModelData()->getJointNodePointer(i)->setCallBack(nodeCallBack_Km);
|
||||
}
|
||||
}
|
||||
mpMorf->getModel()->setUserArea((u32)this);
|
||||
mAcchCir.SetWall(30.0,60.0);
|
||||
mObjAcch.Set(¤t.pos,&old.pos,(fopAc_ac_c *)this,1,
|
||||
&mAcchCir,&speed,NULL,NULL);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
mpMorf = NULL;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
/* 00002158-00002178 .text daNpc_Km1_Create__FP10fopAc_ac_c */
|
||||
static cPhs_State daNpc_Km1_Create(fopAc_ac_c*) {
|
||||
/* Nonmatching */
|
||||
static cPhs_State daNpc_Km1_Create(fopAc_ac_c* obj) {
|
||||
|
||||
(static_cast<daNpc_Km1_c*>(obj))->_create();
|
||||
}
|
||||
|
||||
/* 00002178-00002198 .text daNpc_Km1_Delete__FP11daNpc_Km1_c */
|
||||
static BOOL daNpc_Km1_Delete(daNpc_Km1_c*) {
|
||||
/* Nonmatching */
|
||||
static BOOL daNpc_Km1_Delete(daNpc_Km1_c* obj) {
|
||||
|
||||
(static_cast<daNpc_Km1_c*>(obj))->_delete();
|
||||
}
|
||||
|
||||
/* 00002198-000021B8 .text daNpc_Km1_Execute__FP11daNpc_Km1_c */
|
||||
static BOOL daNpc_Km1_Execute(daNpc_Km1_c*) {
|
||||
/* Nonmatching */
|
||||
static BOOL daNpc_Km1_Execute(daNpc_Km1_c* obj) {
|
||||
|
||||
(static_cast<daNpc_Km1_c*>(obj))->_execute();
|
||||
}
|
||||
|
||||
/* 000021B8-000021D8 .text daNpc_Km1_Draw__FP11daNpc_Km1_c */
|
||||
static BOOL daNpc_Km1_Draw(daNpc_Km1_c*) {
|
||||
/* Nonmatching */
|
||||
static BOOL daNpc_Km1_Draw(daNpc_Km1_c* obj) {
|
||||
|
||||
(static_cast<daNpc_Km1_c*>(obj))->_draw();
|
||||
}
|
||||
|
||||
/* 000021D8-000021E0 .text daNpc_Km1_IsDelete__FP11daNpc_Km1_c */
|
||||
static BOOL daNpc_Km1_IsDelete(daNpc_Km1_c*) {
|
||||
/* Nonmatching */
|
||||
return TRUE;
|
||||
|
||||
}
|
||||
|
||||
static actor_method_class l_daNpc_Km1_Method = {
|
||||
|
||||
Reference in New Issue
Block a user