Merge remote-tracking branch 'upstream/main' into d_menu_dmap

This commit is contained in:
Teddy Heidmann
2026-08-13 20:36:56 -07:00
74 changed files with 4830 additions and 1364 deletions
+1 -1
View File
@@ -10,7 +10,7 @@ CompileFlags:
"-Wsometimes-uninitialized",
"-Wlogical-op-parentheses",
"-Wbitwise-op-parentheses",
"-Wunused-variable",
# "-Wunused-variable",
# "-Wunused-but-set-variable",
"-Wunused-parameter",
"-Wunused-but-set-parameter",
+12 -12
View File
@@ -409,7 +409,7 @@ config.libs = [
Object(NonMatching, "m_Do/m_Do_graphic.cpp"),
Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "m_Do/m_Do_machine.cpp"),
Object(Matching, "m_Do/m_Do_mtx.cpp"),
Object(NonMatching, "m_Do/m_Do_ext.cpp"),
Object(MatchingFor("D44J01"), "m_Do/m_Do_ext.cpp"),
Object(Matching, "m_Do/m_Do_lib.cpp"),
Object(Matching, "m_Do/m_Do_hostIO.cpp"),
Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "m_Do/m_Do_Reset.cpp"),
@@ -565,7 +565,7 @@ config.libs = [
Object(Matching, "d/d_bg_w_deform.cpp"),
Object(Matching, "d/d_bg_w_hf.cpp"),
Object(Matching, "d/d_bg_w_sv.cpp"),
Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_cc_d.cpp"),
Object(Matching, "d/d_cc_d.cpp"),
Object(Matching, "d/d_cc_mass_s.cpp"),
Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_cc_s.cpp"),
Object(Matching, "d/d_cc_uty.cpp"),
@@ -593,7 +593,7 @@ config.libs = [
Object(Matching, "d/actor/d_a_bomb.cpp"),
Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/actor/d_a_bomb2.cpp"),
Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/actor/d_a_boomerang.cpp"),
Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/actor/d_a_dai_item.cpp"),
Object(Matching, "d/actor/d_a_dai_item.cpp"),
Object(Matching, "d/actor/d_a_demo00.cpp"),
Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/actor/d_a_disappear.cpp"),
Object(Matching, "d/actor/d_a_esa.cpp"),
@@ -1232,7 +1232,7 @@ config.libs = [
[
Object(NonMatching, "dolphin/gx/GXInit.c", extra_cflags=["-opt nopeephole"]),
Object(Matching, "dolphin/gx/GXFifo.c"),
Object(NonMatching, "dolphin/gx/GXAttr.c"),
Object(Matching, "dolphin/gx/GXAttr.c"),
Object(NonMatching, "dolphin/gx/GXMisc.c"),
Object(NonMatching, "dolphin/gx/GXGeometry.c"),
Object(NonMatching, "dolphin/gx/GXFrameBuf.c"),
@@ -1451,7 +1451,7 @@ config.libs = [
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_lamp"),
ActorRel(NonMatching, "d_a_lod_bg"),
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_lwood"),
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_magma"),
ActorRel(Matching, "d_a_magma"),
ActorRel(Matching, "d_a_majuu_flag"),
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_mdoor"),
ActorRel(MatchingFor("D44J01"), "d_a_msw"),
@@ -1471,7 +1471,7 @@ config.libs = [
ActorRel(Matching, "d_a_obj_hfuck1"),
ActorRel(Matching, "d_a_obj_hole"),
ActorRel(Matching, "d_a_obj_ice"),
ActorRel(NonMatching, "d_a_obj_ikada"),
ActorRel(Matching, "d_a_obj_ikada"),
ActorRel(Matching, "d_a_obj_kanat"),
ActorRel(Matching, "d_a_obj_leaves"),
ActorRel(Matching, "d_a_obj_lpalm"),
@@ -1653,7 +1653,7 @@ config.libs = [
ActorRel(Matching, "d_a_npc_ah"),
ActorRel(NonMatching, "d_a_npc_aj1"),
ActorRel(NonMatching, "d_a_npc_auction"),
ActorRel(NonMatching, "d_a_npc_ba1"),
ActorRel(Matching, "d_a_npc_ba1"),
ActorRel(NonMatching, "d_a_npc_bj1"),
ActorRel(Matching, "d_a_npc_bm1"),
ActorRel(NonMatching, "d_a_npc_bmcon1"),
@@ -1938,11 +1938,11 @@ config.progress_report_args = [
"--config preferredStringEncoding=shift_jis",
]
# Disable missing return type warnings for incomplete objects
for lib in config.libs:
for obj in lib["objects"]:
if not obj.completed:
obj.options["extra_clang_flags"].append("-Wno-return-type")
# # Disable missing return type warnings for incomplete objects
# for lib in config.libs:
# for obj in lib["objects"]:
# if not obj.completed:
# obj.options["extra_clang_flags"].append("-Wno-return-type")
if args.mode == "configure":
# Write build.ninja and objdiff.json
+4 -8
View File
@@ -44,14 +44,10 @@ public:
param_0.mBR = mColorBR;
}
const JUtility::TColor& getWhite() const { return mWhite; }
bool setBlack(JUtility::TColor black) { mBlack = black; return true; }
void setContentsColor(TContentsColor c) {
setContentsColor(c.mTL, c.mTR, c.mBL, c.mBR);
}
void setContentsColor(JUtility::TColor c) {
setContentsColor(c, c, c, c);
}
bool setWhite(JUtility::TColor white) { mWhite = white; return true; }
void setBlack(JUtility::TColor black) { mBlack = black; }
void setContentsColor(TContentsColor param_0) { setContentsColor(param_0.mTL, param_0.mTR, param_0.mBL, param_0.mBR); }
void setContentsColor(JUtility::TColor param_0) { setContentsColor(param_0, param_0, param_0, param_0); }
void setWhite(JUtility::TColor white) { mWhite = white; }
public:
/* 0x0CC */ JUTTexture* mpFrameTexture1;
@@ -430,7 +430,7 @@ public:
}
u16 getUpdateMaterialNum() const { return mTrackNum / 3; }
JUTNameTab * getUpdateMaterialName() { return &mUpdateMaterialName; }
u16 getUpdateTexMtxID(u16 idx) const {
int getUpdateTexMtxID(u16 idx) const {
J3D_ASSERT(1017, idx < (mTrackNum / 3), "Error : range over.");
return mUpdateTexMtxID[idx];
}
@@ -119,7 +119,6 @@ class J3DMtxCalcMayaAnm : public J3DMtxCalcMaya, public J3DMtxCalcAnm {
public:
J3DMtxCalcMayaAnm(J3DAnmTransform* pAnmTransform)
: J3DMtxCalcMaya(), J3DMtxCalcAnm(pAnmTransform) {}
virtual ~J3DMtxCalcMayaAnm() {}
virtual void calc(u16 jnt_no) { J3DMtxCalcAnm::calc(jnt_no); }
};
+24 -4
View File
@@ -9,8 +9,18 @@
struct J3DGXColorS10 {
J3DGXColorS10() {}
J3DGXColorS10(GXColorS10& other) { mColor = other; }
J3DGXColorS10(J3DGXColorS10& other) { mColor = other.mColor; }
J3DGXColorS10(GXColorS10& other) {
mColor.r = other.r;
mColor.g = other.g;
mColor.b = other.b;
mColor.a = other.a;
}
J3DGXColorS10(J3DGXColorS10& other) {
mColor.r = other.mColor.r;
mColor.g = other.mColor.g;
mColor.b = other.mColor.b;
mColor.a = other.mColor.a;
}
J3DGXColorS10& operator=(const J3DGXColorS10& other) {
mColor = other.mColor;
return *this;
@@ -25,8 +35,18 @@ struct J3DGXColorS10 {
struct J3DGXColor {
J3DGXColor() {}
J3DGXColor(GXColor& other) { mColor = other; }
J3DGXColor(J3DGXColor& other) { mColor = other.mColor; }
J3DGXColor(GXColor& other) {
mColor.r = other.r;
mColor.g = other.g;
mColor.b = other.b;
mColor.a = other.a;
}
J3DGXColor(J3DGXColor& other) {
mColor.r = other.mColor.r;
mColor.g = other.mColor.g;
mColor.b = other.mColor.b;
mColor.a = other.mColor.a;
}
J3DGXColor& operator=(const J3DGXColor& other) {
mColor = other.mColor;
return *this;
+4 -3
View File
@@ -12,9 +12,10 @@ enum J3DError {
J3DErrType_OutOfMemory = 4,
};
enum J3DSysDrawBuffer {
/* 0x0 */ OPA_BUFFER,
/* 0x1 */ XLU_BUFFER
enum J3DSysDrawBuf {
/* 0x0 */ J3DSysDrawBuf_Opa,
/* 0x1 */ J3DSysDrawBuf_Xlu,
/* 0x2 */ J3DSysDrawBuf_MAX,
};
class J3DMtxCalc;
+2 -2
View File
@@ -1,7 +1,7 @@
#ifndef JSYSTEM_PCH
#define JSYSTEM_PCH
#include "JSystem/JSupport/JSUList.h"
#include "JSystem/J3DGraphBase/J3DShape.h"
#include "JSystem/JSupport/JSUList.h" // IWYU pragma: export
#include "JSystem/J3DGraphBase/J3DShape.h" // IWYU pragma: export
#endif /* JSYSTEM_PCH */
+3 -3
View File
@@ -380,9 +380,9 @@ public:
cCcD_ObjCommonBase() { ct(); }
virtual ~cCcD_ObjCommonBase() {}
void ct() {
SetSPrm(0);
SetRPrm(0);
ClrObj();
mSPrm = 0;
mRPrm = 0;
mHitObj = NULL;
}
void SetSPrm(u32 sprm) { mSPrm = sprm; }
void SetRPrm(u32 rprm) { mRPrm = rprm; }
+12
View File
@@ -35,14 +35,26 @@ public:
void SetR(f32 r);
#endif
void Set(const cM3dGCylS & src) {
#if VERSION == VERSION_DEMO
mCenter = src.mCenter;
mRadius = src.mRadius;
mHeight = src.mHeight;
#else
SetC(src.mCenter);
SetR(src.mRadius);
SetH(src.mHeight);
#endif
}
void Set(const cXyz& center, f32 radius, f32 height) {
#if VERSION == VERSION_DEMO
mCenter = center;
mRadius = radius;
mHeight = height;
#else
SetC(center);
SetR(radius);
SetH(height);
#endif
}
bool cross(const cM3dGSph*, cXyz*) const;
bool cross(const cM3dGCyl*, cXyz*) const;
+10
View File
@@ -29,12 +29,22 @@ public:
#endif
void SetC(f32 x, f32 y, f32 z) { mCenter.x = x; mCenter.y = y; mCenter.z = z; }
void Set(const cM3dGSphS & src) {
#if VERSION == VERSION_DEMO
mCenter = src.mCenter;
mRadius = src.mRadius;
#else
SetC(src.mCenter);
SetR(src.mRadius);
#endif
}
void Set(const cXyz& srcCenter, f32 srcRadius) {
#if VERSION == VERSION_DEMO
mCenter = srcCenter;
mRadius = srcRadius;
#else
SetC(srcCenter);
SetR(srcRadius);
#endif
}
bool Cross(const cM3dGCps* cps, cXyz* dst) const {
return cM3d_Cross_CpsSph(*cps, *this, dst);
+1 -1
View File
@@ -23,7 +23,7 @@ public:
void check_col();
void lift_smooth_move();
void lift_normal_move();
BOOL check_path_point(cXyz, cXyz, cXyz, s8);
BOOL check_path_point(cXyz, cXyz, s8);
void set_next_pnt();
BOOL setNextPath();
bool chkSwitchPathType();
+1 -1
View File
@@ -9,7 +9,7 @@ class daMagma_c : public fopAc_ac_c {
public:
inline ~daMagma_c();
inline cPhs_State create();
inline s32 getPathNo() { return fopAcM_GetParam(this); }
inline s16 getPathNo() { return fopAcM_GetParam(this); }
public:
/* 0x290 */ request_of_phase_process_class mPhs;
+6 -2
View File
@@ -6,9 +6,11 @@
#include "d/d_drawlist.h"
#include "dolphin/dvd/dvd.h"
#if VERSION > VERSION_DEMO
#ifdef __cplusplus
extern "C" {
#endif
#endif
typedef u8 THPSample;
typedef s16 THPCoeff;
@@ -45,8 +47,10 @@ static void __THPInverseDCTY8(THPCoeff* in, u32 xPos);
static void __THPGQRSetup();
static s32 __THPHuffDecodeTab(THPFileInfo* info, THPHuffmanTab* h);
#if VERSION > VERSION_DEMO
#ifdef __cplusplus
}
} // extern "C"
#endif
#endif
class daMP_c : public fopAc_ac_c {
@@ -63,7 +67,7 @@ public:
public:
/* 0x290 */ u32 (*mpGetMovieRestFrame)();
/* 0x294 */ u32 (*mpSetPercentMovieVol)(f32);
/* 0x294 */ void (*mpSetPercentMovieVol)(f32);
#if VERSION == VERSION_PAL
/* 0x29C */ u32 (*mpTHPGetTotalFrame)(void);
#endif
+143 -76
View File
@@ -1,63 +1,70 @@
#ifndef D_A_NPC_BA1_H
#define D_A_NPC_BA1_H
#include "d/d_npc.h"
#include "f_op/f_op_actor.h"
class J3DNode;
class daNpc_Ba1_c : public fopAc_ac_c {
class daNpc_Ba1_c : public fopNpc_npc_c {
public:
typedef BOOL (daNpc_Ba1_c::*ProcFunc)(void*);
struct anm_prm_c {
/* 0x00 */ s8 mAnmNum;
/* 0x01 */ s8 mBtpNum;
/* 0x02 */ s16 field_0x02;
/* 0x04 */ f32 mMorf;
/* 0x08 */ f32 mSpeed;
/* 0x0C */ int mLoopMode;
};
void holdEventOn() { mHoldEvent = 1; }
void holdEventOn() { mbHoldEvent = 1; }
void nodeBa1Control(J3DNode*, J3DModel*);
void XyCheck_cB(int);
void XyEvent_cB(int);
void init_BA1_0();
void init_BA1_1();
void init_BA1_2();
void init_BA1_3();
void init_BA1_4();
void createInit();
bool XyCheck_cB(int);
s16 XyEvent_cB(int);
bool init_BA1_0();
bool init_BA1_1();
bool init_BA1_2();
bool init_BA1_3();
bool init_BA1_4();
bool createInit();
void setMtx(bool);
void anmNum_toResID(int);
void btpNum_toResID(int);
void setBtp(bool, int);
void iniTexPttrnAnm(bool);
int anmNum_toResID(int);
int btpNum_toResID(int);
bool setBtp(bool, int);
bool iniTexPttrnAnm(bool);
void plyTexPttrnAnm();
void setAnm_tex(signed char);
void setAnm_anm(anm_prm_c*);
void setAnm_tex(s8);
BOOL setAnm_anm(anm_prm_c*);
void setAnm_NUM(int, int);
void setAnm();
bool setAnm();
void chg_anmTag();
void control_anmTag();
void chg_anmAtr(unsigned char);
void chg_anmAtr(u8);
void control_anmAtr();
void setAnm_ATR(int);
void anmAtr(unsigned short);
void anmAtr(u16);
void eventOrder();
void checkOrder();
void chk_talk();
void chk_drct(float);
void chk_partsNotMove();
bool chk_talk();
bool chk_drct(f32);
bool chk_partsNotMove();
void lookBack();
void next_msgStatus(unsigned long*);
void getMsg_BA1_0();
void getMsg_BA1_1();
void getMsg_BA1_3();
void getMsg_BA1_4();
void getMsg();
void chkAttention();
u16 next_msgStatus(u32*);
u32 getMsg_BA1_0();
u32 getMsg_BA1_1();
u32 getMsg_BA1_3();
u32 getMsg_BA1_4();
u32 getMsg();
bool chkAttention();
void setAttention(bool);
void searchByID(fpc_ProcID);
void partner_srch_sub(void* (*)(void*, void*));
fopAc_ac_c* searchByID(fpc_ProcID);
bool partner_srch_sub(fpcLyIt_JudgeFunc);
void partner_srch();
void check_useFairyArea();
void checkCommandTalk();
void charDecide(int);
bool check_useFairyArea();
bool checkCommandTalk();
bool charDecide(int);
void eInit_SET_PLYER_GOL_();
void eInit_PLYER_INI_POS_();
void eInit_USE_FAIRY_END_();
@@ -66,61 +73,121 @@ public:
void eInit_ACTOR_DRW_CONTROL_(int*, int*);
void eInit_setEvTimer(int*);
void eInit_CHK_FAIRY_(int*);
void eInit_prmFloat(float*, float);
void eInit_SET_EYE_OFF_(float*);
void eInit_EYE_OFF_ZRO_(float*);
f32 eInit_prmFloat(f32*, f32);
void eInit_SET_EYE_OFF_(f32*);
void eInit_EYE_OFF_ZRO_(f32*);
void eInit_CHK_FAIRY_MOV_1(int*);
void event_actionInit(int);
void eMove_MOV_POS_();
void eMove_CHK_FAIRY_();
void eMove_EYE_OFF_ZRO_();
void eMove_CHK_FAIRY_MOV_1();
void event_action();
bool eMove_MOV_POS_();
bool eMove_CHK_FAIRY_();
bool eMove_EYE_OFF_ZRO_();
bool eMove_CHK_FAIRY_MOV_1();
bool event_action();
void cut_init_START_TALE1(int);
void cut_move_START_TALE1();
bool cut_move_START_TALE1();
void privateCut(int);
void endEvent();
void isEventEntry();
BOOL isEventEntry();
void event_proc(int);
void set_action(int (daNpc_Ba1_c::*)(void*), void*);
void setStt(signed char);
void wait_0();
void wait_1();
void talk_1();
void talk_2();
void wait_2();
void wait_3();
void ZZZwai();
void wait_action1(void*);
void wait_action2(void*);
void demo_action1(void*);
void wait_action3(void*);
void wait_action4(void*);
void demo();
BOOL set_action(int (daNpc_Ba1_c::*)(void*), void*);
void setStt(s8);
BOOL wait_0();
BOOL wait_1();
BOOL talk_1();
BOOL talk_2();
BOOL wait_2();
BOOL wait_3();
BOOL ZZZwai();
BOOL wait_action1(void*);
BOOL wait_action2(void*);
BOOL demo_action1(void*);
BOOL wait_action3(void*);
BOOL wait_action4(void*);
bool demo();
void shadowDraw();
BOOL _draw();
BOOL _execute();
BOOL _delete();
cPhs_State _create();
void create_Anm();
void create_itm_Mdl();
void CreateHeap();
J3DModelData* create_Anm();
bool create_itm_Mdl();
BOOL CreateHeap();
public:
/* 0x290 */ u8 m290[0x7F8 - 0x290];
/* 0x6C4 */ request_of_phase_process_class mPhs;
/* 0x6CC */ s8 m_hed_jnt_num;
/* 0x6CD */ s8 m_bbone_jnt_num;
/* 0x6CE */ s8 m_footL_jnt_num;
/* 0x6D0 */ J3DModel* mpClothModel;
/* 0x6D4 */ u32 mShadowID;
/* 0x6D8 */ J3DAnmTexPattern* m_hed_tex_pttrn;
/* 0x6DC */ mDoExt_btpAnm mHeadBtpAnm;
/* 0x6F0 */ u8 mBlinkFrame;
/* 0x6F2 */ s16 mBlinkTimer;
/* 0x6F4 */ ProcFunc mCurrProcFunc;
/* 0x700 */ u8 field_0x700[0x708 - 0x700];
/* 0x708 */ dNpc_EventCut_c mEventCut;
/* 0x774 */ fpc_ProcID mPartnerProcID;
/* 0x778 */ cXyz mInitialPos;
/* 0x784 */ csXyz mInitialAngle;
/* 0x78A */ csXyz m78A;
/* 0x790 */ cXyz mTransformedEyePos;
/* 0x79C */ cXyz m79C;
/* 0x7A8 */ u8 field_0x7A8[0x7C0 - 0x7A8];
/* 0x7C0 */ f32 mPrevMorfFrame;
/* 0x7C4 */ f32 mEyeOffset;
/* 0x7C8 */ f32 mEyeOffsetZero;
/* 0x7CC */ s16 mJointHeadY;
/* 0x7CE */ s16 mJointBackboneY;
/* 0x7D0 */ s16 mActorAngleY;
/* 0x7D2 */ s16 mEventIdTable[6];
/* 0x7DE */ s16 mEventIdx;
/* 0x7E0 */ s16 mEvTimer;
/* 0x7E2 */ s16 mEvTimer2;
/* 0x7E4 */ u8 field_0x7E4[0x7E8 - 0x7E4];
/* 0x7E8 */ s16 mLookAtMaxVel;
/* 0x7EA */ s16 mTargetYRot;
/* 0x7EC */ u8 field_0x7EC[0x7EE - 0x7EC];
/* 0x7EE */ s8 mbMorfAnimStopped;
/* 0x7EF */ u8 m7EF;
/* 0x7F0 */ s8 m7F0;
/* 0x7F1 */ u8 mItemNo;
#if VERSION > VERSION_JPN
/* 0x7F8 */ u8 m7F8;
/* 0x7F2 */ u8 m7F2;
#endif
/* Offsets below are for USA/PAL */
/* 0x7F9 */ u8 mHoldEvent;
};
class daNpc_Ba1_HIO_c {
public:
daNpc_Ba1_HIO_c();
public:
/* Place member variables here */
};
/* 0x7F3 */ u8 field_0x7F3[0x7F4 - 0x7F3];
/* 0x7F4 */ bool mbInitGrandma0;
/* 0x7F5 */ bool m7F5;
/* 0x7F6 */ bool m7F6;
/* 0x7F7 */ bool m7F7;
/* 0x7F8 */ bool m7F8;
/* 0x7F9 */ bool mbHoldEvent;
/* 0x7FA */ bool m7FA;
/* 0x7FB */ bool m7FB;
/* 0x7FC */ bool mFairyUsed;
/* 0x7FD */ bool m7FD;
/* 0x7FE */ bool m7FE;
/* 0x7FF */ bool m7FF;
/* 0x800 */ bool mbRanExecute;
/* 0x804 */ BOOL mbSetEyePos;
/* 0x808 */ bool mbAttention;
/* 0x809 */ bool m809;
/* 0x80A */ bool mHeadOnlyFollow;
/* 0x80B */ bool mbInDemo;
/* 0x80C */ s8 mActionIndex;
/* 0x80D */ s8 mActNo;
/* 0x80E */ u8 m80E;
/* 0x80F */ u8 mMesgAnimeTagInfo;
/* 0x810 */ s8 mBtpNum;
/* 0x811 */ s8 mAnmNum;
/* 0x812 */ s8 m812;
/* 0x813 */ s8 mStatus;
/* 0x814 */ s8 mPrevStatus;
/* 0x815 */ s8 mLookBackState;
/* 0x816 */ s8 mType;
/* 0x817 */ s8 mSpecificType;
/* 0x818 */ s8 m818;
/* 0x819 */ s8 m819;
}; // Size: 0x81C
#endif /* D_A_NPC_BA1_H */
+1 -1
View File
@@ -73,7 +73,7 @@ public:
u8 getMode() { return mMode; }
void setMode(u8 mode) { mMode = mode; }
bool isLinkMode() { return mMode == Mode_PLAYER_MOVE_e; }
void isBabaMode() {}
bool isBabaMode() { return mMode == Mode_BOTTLE_BABA_MOVE_e; }
u8 getSubMode() { return mSubMode; }
void setSubMode(u8 submode) { mSubMode = submode; }
-51
View File
@@ -10,7 +10,6 @@
#include "SSystem/SComponent/c_phase.h"
#include "d/d_path.h"
#include "d/d_lib.h"
#include "m_Do/m_Do_hostIO.h"
class daObj_Ikada_c : public fopAc_ac_c {
public:
@@ -185,54 +184,4 @@ public:
/* 0x1328 */ cXyz mInitPos;
};
class daObj_Ikada_HIO_c : public mDoHIO_entry_c {
public:
daObj_Ikada_HIO_c();
virtual ~daObj_Ikada_HIO_c() {}
void genMessage(JORMContext* ctx) {}
public:
/* 0x04 */ u8 mbDebugDraw;
/* 0x05 */ u8 m05;
/* 0x06 */ u8 m06;
/* 0x07 */ u8 mbNoRotAnim;
/* 0x08 */ u8 m08;
/* 0x09 */ u8 m09[0x0C - 0x09];
/* 0x0C */ Vec mFlagOffset;
/* 0x18 */ f32 mFlagScale;
/* 0x1C */ s16 m1C;
/* 0x1E */ s16 m1E;
/* 0x20 */ f32 m20;
/* 0x24 */ s16 m24;
/* 0x26 */ u8 m26[0x28 - 0x26];
/* 0x28 */ f32 m28;
/* 0x2C */ f32 mShipOffsY_Attention;
/* 0x30 */ f32 mShipOffsY_Eye;
/* 0x34 */ f32 mTerryWaveOffsZ;
/* 0x38 */ f32 mTerryWaveOffsY;
/* 0x3C */ f32 mTerryTrackOffsZ;
/* 0x40 */ f32 mSvWaveOffsX;
/* 0x44 */ f32 mSvTrackOffsX;
/* 0x48 */ f32 mSvOffsX[4];
/* 0x58 */ f32 mTrackIndTransY;
/* 0x5C */ f32 mTrackIndScaleY;
/* 0x60 */ f32 mSplashScaleMax;
/* 0x64 */ f32 mSplashMaxScaleTimer;
/* 0x68 */ f32 mWaveVelFade;
/* 0x6C */ f32 mTrackVel;
/* 0x70 */ f32 mWaveVelSpeed;
/* 0x74 */ f32 mWaveVelOffs;
/* 0x78 */ f32 mWaveMaxVelocity;
/* 0x7C */ Vec mWaveCollapsePos[2];
/* 0x94 */ s16 m94;
/* 0x96 */ s16 mPlayerStopDistance;
/* 0x98 */ s16 m98;
/* 0x9A */ s16 m9A;
/* 0x9C */ f32 m9C;
/* 0xA0 */ f32 mVelocityTargetTerry1;
/* 0xA4 */ f32 mVelocityTargetTerry3;
/* 0xA8 */ f32 mA8;
}; // size = 0xAC
#endif /* D_A_OBJ_IKADA_H */
+7 -2
View File
@@ -83,6 +83,7 @@ public:
class dDlst_2DOutFont_c {
public:
dDlst_2DOutFont_c() { m20 = NULL; m18 = NULL; m2C = NULL; m74 = 0; }
void setLeftUpPos(f32 x, f32 y) { mPosTopLeftX = x; mPosTopLeftY = y; }
void initial();
@@ -107,9 +108,13 @@ public:
/* 0x18 */ J2DPane* m18;
/* 0x1C */ u8 m1C[0x20 - 0x1C];
/* 0x20 */ JUTFont* m20;
/* 0x24 */ u8 m24[0x30 - 0x24];
/* 0x24 */ u8 m24[0x2C - 0x24];
/* 0x2C */ JUTFont* m2C;
/* 0x30 */ f32 mPosTopLeftX;
/* 0x34 */ f32 mPosTopLeftY;
};
/* 0x38 */ u8 m38[0x74 - 0x38];
/* 0x74 */ u8 m74;
/* 0x75 */ u8 m75[0x150 - 0x75];
}; // Size = 0x150
#endif /* D_2DNUMBER_H */
+1
View File
@@ -8,6 +8,7 @@
#include "d/d_drawlist.h"
#include "d/d_event.h"
#include "d/d_event_manager.h"
#include "d/d_item_data.h"
#include "d/d_map.h"
#include "d/d_particle.h"
#include "d/d_resorce.h"
+2 -2
View File
@@ -535,8 +535,8 @@ public:
J3DDrawBuffer* getXluList() { return mpXluList; }
J3DDrawBuffer* getXluListP1() { return mpXluListP1; }
void setXluDrawList(J3DDrawBuffer* buffer) { j3dSys.setDrawBuffer(buffer, XLU_BUFFER); }
void setOpaDrawList(J3DDrawBuffer* buffer) { j3dSys.setDrawBuffer(buffer, OPA_BUFFER); }
void setXluDrawList(J3DDrawBuffer* buffer) { j3dSys.setDrawBuffer(buffer, J3DSysDrawBuf_Xlu); }
void setOpaDrawList(J3DDrawBuffer* buffer) { j3dSys.setDrawBuffer(buffer, J3DSysDrawBuf_Opa); }
void setOpaList() { setOpaDrawList(mpOpaList); }
void setXluList() { setXluDrawList(mpXluList); }
void setOpaListInvisible() { setOpaDrawList(mpOpaListInvisible); }
+3
View File
@@ -52,6 +52,9 @@ public:
class CSTControl : public STControl {
public:
CSTControl(s16 a, s16 b, s16 c, s16 d, f32 e = 0.9f, f32 f = 0.5f, s16 g = 0, s16 h = 0x2000)
: STControl(a, b, c, d, e, f, g, h)
{}
virtual f32 getValueStick();
virtual s16 getAngleStick();
};
+2 -1
View File
@@ -5,13 +5,14 @@
class dMenu_base_c : public dDlst_base_c {
public:
virtual void draw() {}
virtual ~dMenu_base_c() {}
virtual void _create() {}
virtual void _delete() {}
virtual void _move() {}
virtual void _draw() {}
virtual bool _open() = 0;
virtual bool _close() = 0;
virtual void draw() {}
};
#endif //D_MENU_BASE_H
+19 -15
View File
@@ -20,6 +20,7 @@ class JUTFont;
class dMenu_Collect_c : public dMenu_base_c {
public:
~dMenu_Collect_c() {}
virtual void draw() { _draw(); }
void alphaChange(fopMsgM_pane_class* pane, float alpha) { pane->mInitAlpha *= alpha; }
@@ -32,15 +33,15 @@ public:
void setQuitArchive(JKRArchive* arc) { mpSaveArc = arc; }
void setFont(JUTFont* font, JUTFont* rfont) {
mFont = font;
mRFont = rfont;
mpFont = font;
mpRubyFont = rfont;
}
void setTactTexBuffer(void* ptr) { mTactTexBuffer = (ResTIMG*)ptr; }
void setMapTexBuffer(void* ptr) { mMapTexBuffer = (ResTIMG*)ptr; }
void setTriforceTexBuffer(int idx, void* ptr) { mTriforceTexBuffer[idx] = (ResTIMG*)ptr; }
void setSymbolTexBuffer(int idx, void* ptr) { mSymbolTexBuffer[idx] = ptr; }
void setItemTexBuffer(int idx, void* ptr) { mItemTexBuffer[idx] = ptr; }
void setSymbolTexBuffer(int idx, void* ptr) { mSymbolTexBuffer[idx] = (ResTIMG*)ptr; }
void setItemTexBuffer(int idx, void* ptr) { mItemTexBuffer[idx] = (ResTIMG*)ptr; }
void setTextArea(char* name0, char* name1, char* note0, char* note1, char* dummy0, char* dummy1) {
name[0] = name0;
@@ -58,7 +59,7 @@ public:
void initialize();
void cursorAnime();
int stickDirection(unsigned char);
int cursorMainMove();
u8 cursorMainMove();
u8 noteCheck();
void noteInit();
void noteAppear();
@@ -176,16 +177,21 @@ private:
/* 0x2464 */ JKRArchive* mpArc;
/* 0x2468 */ JKRArchive* mpOptArc;
/* 0x246C */ JKRArchive* mpSaveArc;
/* 0x2470 */ JUTFont* mFont;
/* 0x2474 */ JUTFont* mRFont;
/* 0x2470 */ JUTFont* mpFont;
/* 0x2474 */ JUTFont* mpRubyFont;
/* 0x2478 */ J2DPane* m2478;
/* 0x247C */ JPABaseEmitter* m247C[3];
/* 0x2488 */ J2DWindow::TContentsColor m2488;
/* 0x2498 */ ResTIMG* mTactTexBuffer;
/* 0x249C */ ResTIMG* mMapTexBuffer;
/* 0x24A0 */ ResTIMG* mTriforceTexBuffer[8];
/* 0x24C0 */ void* mSymbolTexBuffer[3];
/* 0x24CC */ void* mItemTexBuffer[5];
/* 0x24C0 */ ResTIMG* mSymbolTexBuffer[3];
/* 0x24CC */ ResTIMG* mItemTexBuffer[5];
#if VERSION == VERSION_PAL
/* 0x24E0 */ ResTIMG* mWordSaveTexBuffer;
/* 0x24E4 */ ResTIMG* mWordOptionTexBuffer;
/* 0x24E8 */ ResTIMG* mTitleCollectTexBuffer;
#endif
/* 0x24E0 */ fopMsgM_msgDataProc_c mMsgProc;
/* 0x2780 */ dMenu_Option_c* dMo_c;
/* 0x2784 */ dMenu_save_c* dMs_c;
@@ -197,12 +203,12 @@ private:
/* 0x27B8 */ char* note[2];
/* 0x27C0 */ char* dummy[2];
/* 0x27C8 */ u8 m27C8[0x27DC - 0x27C8];
/* 0x27DC */ u32 m27DC;
/* 0x27DC */ s32 m27DC;
/* 0x27E0 */ s16 m27E0;
/* 0x27E2 */ s16 mTimer;
/* 0x27E4 */ u16 m27E4;
/* 0x27E6 */ u16 m27E6;
/* 0x27E8 */ u16 m27E8;
/* 0x27E4 */ s16 m27E4;
/* 0x27E6 */ s16 m27E6;
/* 0x27E8 */ s16 m27E8;
/* 0x27EA */ u8 m27EA;
/* 0x27EB */ u8 m27EB;
/* 0x27EC */ u8 mTriggerInfo;
@@ -215,8 +221,6 @@ private:
/* 0x27F3 */ u8 m27F3;
}; // Size: 0x27F4
STATIC_ASSERT(sizeof(dMenu_Collect_c) == 0x27F4);
class dMc_HIO_c : public JORReflexible {
public:
dMc_HIO_c();
+9 -6
View File
@@ -11,16 +11,19 @@ struct fopMsgM_pane_class;
class JKRArchive;
class JUTFont;
class dMenu_Option_c : public dDlst_base_c {
class dMenu_Option_c {
public:
dMenu_Option_c() { }
virtual ~dMenu_Option_c() {}
void alphaChange(fopMsgM_pane_class*, f32) {}
u8 getQuitStatus() { return mE40; }
void setArchive(JKRArchive* archive) {
mpArchive = archive;
}
void setFont(JUTFont* font_1, JUTFont* font_2) {
mD2C = font_1;
mD30 = font_2;
void setFont(JUTFont* i_font, JUTFont* i_rubyFont) {
mpFont = i_font;
mpRubyFont = i_rubyFont;
}
void setTextArea(char* param_1, char* param_2, char* param_3, char* param_4) {
mD38 = param_1;
@@ -83,8 +86,8 @@ private:
/* 0xC80 */ fopMsgM_pane_class mC80[2];
/* 0xCF0 */ fopMsgM_pane_class mCF0;
/* 0xD28 */ JKRArchive* mpArchive;
/* 0xD2C */ JUTFont* mD2C;
/* 0xD30 */ JUTFont* mD30;
/* 0xD2C */ JUTFont* mpFont;
/* 0xD30 */ JUTFont* mpRubyFont;
/* 0xD34 */ STControl* stick;
/* 0xD38 */ char* mD38;
/* 0xD3C */ char* mD3C;
+5 -5
View File
@@ -45,12 +45,12 @@ public:
/* 0x0502 */ UNK_0502 = 0x0502,
/* 0x0501 */ UNK_0501 = 0x0501,
/* 0x0640 */ UNK_0640 = 0x0640,
/* 0x0608 */ UNK_0608 = 0x0608,
/* 0x0608 */ UNK_0608 = 0x0608, // Set by an unused dialogue
/* 0x0604 */ UNK_0604 = 0x0604,
/* 0x0602 */ UNK_0602 = 0x0602,
/* 0x0601 */ UNK_0601 = 0x0601,
/* 0x0602 */ UNK_0602 = 0x0602, // Grandma dialogue after sword obtained
/* 0x0601 */ UNK_0601 = 0x0601, // Grandma dialogue after Helmaroc cutscene (prologue)
/* 0x0780 */ UNK_0780 = 0x0780,
/* 0x0740 */ UNK_0740 = 0x0740,
/* 0x0740 */ UNK_0740 = 0x0740, // Grandma dialogue after Aryll kidnapped
/* 0x0720 */ UNK_0720 = 0x0720,
/* 0x0710 */ UNK_0710 = 0x0710,
/* 0x0704 */ UNK_0704 = 0x0704,
@@ -317,7 +317,7 @@ public:
/* 0x2901 */ UNK_2901 = 0x2901,
/* 0x2A80 */ UNK_2A80 = 0x2A80,
/* 0x2A40 */ UNK_2A40 = 0x2A40,
/* 0x2A20 */ UNK_2A20 = 0x2A20,
/* 0x2A20 */ GRANDMA_HEALED = 0x2A20,
/* 0x2A10 */ UNK_2A10 = 0x2A10,
/* 0x2A08 */ RODE_KORL = 0x2A08,
/* 0x2A04 */ UNK_2A04 = 0x2A04,
+1 -1
View File
@@ -79,7 +79,7 @@ enum {
/* 0x47 */ DSNAP_TYPE_UNK47,
/* 0x48 */ DSNAP_TYPE_UNK48,
/* 0x49 */ DSNAP_TYPE_NPC_LS1,
/* 0x4A */ DSNAP_TYPE_UNK4A,
/* 0x4A */ DSNAP_TYPE_NPC_BA1,
/* 0x4B */ DSNAP_TYPE_UNK4B,
/* 0x4C */ DSNAP_TYPE_UNK4C,
/* 0x4D */ DSNAP_TYPE_NPC_JI1,
+2
View File
@@ -29,8 +29,10 @@
#include "JSystem/JKernel/JKRFileFinder.h" // IWYU pragma: export
#include "d/d_bg_s_lin_chk.h" // IWYU pragma: export
#include "m_Do/m_Do_hostIO.h" // IWYU pragma: export
#include "m_Do/m_Do_graphic.h" // IWYU pragma: export
#include "d/d_cc_uty.h" // IWYU pragma: export
#include "d/d_magma.h" // IWYU pragma: export
#include "d/d_mesg.h" // IWYU pragma: export
#include "d/d_menu_base.h" // IWYU pragma: export
#endif /* DOLZEL_PCH */
+2
View File
@@ -42,6 +42,8 @@ extern "C" {
(reg) = ((u32) (reg) & ~(((1 << (nbits)) - 1) << (shift))) | \
((u32) (value) << (shift));
#define GET_REG_FIELD(reg, size, shift) ((int)((reg) >> (shift)) & ((1 << (size)) - 1))
#define SET_REG_FIELD(reg, size, shift, val) \
(reg) = ((u32)(reg) & ~(((1 << (size)) - 1) << (shift))) | ((u32)(val) << (shift)); \
+1
View File
@@ -36,6 +36,7 @@ void GXSetNumTexGens(u8 numTexGens);
void GXGetVtxAttrFmtv(GXVtxFmt param_0, GXVtxAttrFmtList* param_1);
void GXGetVtxAttrFmt(GXVtxFmt param_0, int param_1, GXCompCnt* param_2, GXCompType* param_3,
u8* param_4);
void GXGetVtxDesc(GXAttr attr, GXAttrType* type);
void GXGetVtxDescv(GXVtxDescList* attrPtr);
static inline void GXSetTexCoordGen(GXTexCoordID dst, GXTexGenType type, GXTexGenSrc src, u32 mtx) {
+1 -32
View File
@@ -28,7 +28,7 @@ typedef struct _THPComponent {
THPCoeff predDC;
} THPComponent;
typedef struct _THPFileInfo {
typedef struct _local_THPFileInfo {
THPQuantTab quantTabs[3];
THPHuffmanTab huffmanTabs[4];
THPComponent components[3];
@@ -116,37 +116,6 @@ typedef struct THPHeader {
#define THP_READ_BUFFER_COUNT 10
#define THP_TEXTURE_SET_COUNT 3
static u32 THPAudioDecode(s16* audioBuffer, u8* audioFrame, s32 flag);
static s32 __THPAudioGetNewSample(THPAudioDecodeInfo* info);
static void __THPAudioInitialize(THPAudioDecodeInfo* info, u8* ptr);
s32 __THPAudioGetNewSample(THPAudioDecodeInfo*);
void __THPAudioInitialize(THPAudioDecodeInfo*, u8*);
static void __THPSetupBuffers(void);
static u8 __THPReadFrameHeader(void);
static u8 __THPReadScaneHeader(void);
static u8 __THPReadQuantizationTable(void);
static u8 __THPReadHuffmanTableSpecification(void);
static void __THPHuffGenerateSizeTable(void);
static void __THPHuffGenerateCodeTable(void);
static void __THPHuffGenerateDecoderTables(u8 tabIndex);
static void __THPRestartDefinition(void);
static void __THPPrepBitStream(void);
static void __THPDecompressYUV(void* tileY, void* tileU, void* tileV);
static void __THPGQRRestore(void);
static void __THPDecompressiMCURow512x448(void);
static void __THPDecompressiMCURow640x480(void);
static void __THPDecompressiMCURowNxN(void);
static void __THPInverseDCTNoYPos(THPCoeff* in, u32 xPos);
static void __THPHuffDecodeDCTCompY(THPFileInfo* info, THPCoeff* block);
static void __THPHuffDecodeDCTCompU(THPFileInfo* info, THPCoeff* block);
static void __THPHuffDecodeDCTCompV(THPFileInfo* info, THPCoeff* block);
static void __THPInverseDCTY8(THPCoeff* in, u32 xPos);
static void __THPGQRSetup();
static s32 __THPHuffDecodeTab(THPFileInfo* info, THPHuffmanTab* h);
#ifdef __cplusplus
}
#endif
+12 -12
View File
@@ -17,7 +17,7 @@ public:
public:
/* 0x04 */ s8 mNo;
/* 0x05 */ u8 field_0x05;
/* 0x05 */ u8 mUsingHostIO;
/* 0x06 */ u8 mDisplayMeter;
/* 0x07 */ u8 mDisplayFlag;
/* 0x08 */ u8 field_0x08;
@@ -41,7 +41,7 @@ public:
/* 0x1D */ u8 field_0x1d;
/* 0x1E */ u8 field_0x1e;
/* 0x1F */ u8 field_0x1f;
/* 0x20 */ JUtility::TColor field_0x20;
/* 0x20 */ JUtility::TColor mColor;
/* 0x24 */ f32 mTriggerThreshLo;
/* 0x28 */ f32 mTriggerThreshHi;
/* 0x2C */ s16 mFbWidth;
@@ -58,16 +58,16 @@ public:
/* 0x39 */ u8 field_0x39;
/* 0x3A */ u8 field_0x3a;
/* 0x3B */ u8 field_0x3b;
/* 0x3C */ JUtility::TColor field_0x3c;
/* 0x40 */ JUtility::TColor field_0x40;
/* 0x44 */ JUtility::TColor field_0x44;
/* 0x48 */ JUtility::TColor field_0x48;
/* 0x4C */ u16 field_0x4c;
/* 0x4E */ u16 field_0x4e;
/* 0x50 */ u16 field_0x50;
/* 0x52 */ u16 field_0x52;
/* 0x54 */ u16 field_0x54;
/* 0x56 */ u8 field_0x56;
/* 0x3C */ JUtility::TColor mLetterTopColor;
/* 0x40 */ JUtility::TColor mLetterBottomColor;
/* 0x44 */ JUtility::TColor mLetterTopShadowColor;
/* 0x48 */ JUtility::TColor mLetterBottomShadowColor;
/* 0x4C */ u16 mLetterPositionX;
/* 0x4E */ u16 mLetterPositionY;
/* 0x50 */ u16 mLineSpacing;
/* 0x52 */ u16 mLetterSpacing;
/* 0x54 */ u16 mLetterFontSize;
/* 0x56 */ u8 mBackgroundAlpha;
}; // Size: 0x58
extern fapGm_HIO_c g_HIO;
+16 -16
View File
@@ -127,22 +127,6 @@ inline MtxP fopAcM_GetMtx(fopAc_ac_c* pActor) {
return pActor->cullMtx;
}
inline u32 fopAcM_CheckStatus(fopAc_ac_c* pActor, u32 status) {
return pActor->actor_status & status;
}
inline u32 fopAcM_checkCarryNow(fopAc_ac_c* pActor) {
return pActor->actor_status & fopAcStts_CARRY_e;
}
inline void fopAcM_ClearStatusMap(fopAc_ac_c* pActor) {
pActor->actor_status &= ~0x3F;
}
inline bool fopAcM_checkHookCarryNow(fopAc_ac_c* pActor) {
return fopAcM_CheckStatus(pActor, fopAcStts_HOOK_CARRY_e);
}
inline u32 fopAcM_GetParam(void* pActor) {
return fpcM_GetParam(pActor);
}
@@ -179,6 +163,10 @@ inline void fopAcM_SetGroup(fopAc_ac_c* pActor, u8 group) {
pActor->group = group;
}
inline u32 fopAcM_CheckStatus(fopAc_ac_c* pActor, u32 status) {
return pActor->actor_status & status;
}
inline void fopAcM_OnStatus(fopAc_ac_c* pActor, u32 flag) {
pActor->actor_status |= flag;
}
@@ -187,6 +175,14 @@ inline void fopAcM_OffStatus(fopAc_ac_c* pActor, u32 flag) {
pActor->actor_status &= ~flag;
}
inline u32 fopAcM_checkCarryNow(fopAc_ac_c* pActor) {
return pActor->actor_status & fopAcStts_CARRY_e;
}
inline bool fopAcM_checkHookCarryNow(fopAc_ac_c* pActor) {
return fopAcM_CheckStatus(pActor, fopAcStts_HOOK_CARRY_e);
}
inline BOOL fopAcM_CheckStatusMap(fopAc_ac_c* pActor, u32) {
// TODO: This implementation probably isn't right, the u32 argument is likely used for something
return (pActor->actor_status & fopAcStts_SHOWMAP_e) && (pActor->actor_status & 0x1F) == 0;
@@ -196,6 +192,10 @@ inline void fopAcM_SetStatusMap(fopAc_ac_c* pActor, u32 flag) {
pActor->actor_status = (pActor->actor_status & ~0x3F) | fopAcStts_SHOWMAP_e | flag;
}
inline void fopAcM_ClearStatusMap(fopAc_ac_c* pActor) {
pActor->actor_status &= ~0x3F;
}
inline fopAc_ac_c* fopAcM_Search(fopAcIt_JudgeFunc func, void* param) {
return (fopAc_ac_c*)fopAcIt_Judge(func, param);
}
+3 -1
View File
@@ -354,7 +354,9 @@ inline void mDoAud_tact_melodyPlay(s32 param_1) {
mDoAud_zelAudio_c::getTact().melodyPlay(param_1);
}
inline void mDoAud_tact_melodyStop() {}
inline void mDoAud_tact_melodyStop() {
mDoAud_zelAudio_c::getTact().melodyStop();
}
inline BOOL mDoAud_checkCbPracticePlay() {
return mDoAud_zelAudio_c::getInterface()->checkCbPracticePlay();
+4
View File
@@ -95,6 +95,10 @@ inline void cMtx_copy(CMtxP src, MtxP dst) {
mDoMtx_copy(src, dst);
}
inline void cMtx_trans(Mtx dst, f32 x, f32 y, f32 z) {
mDoMtx_trans(dst, x, y, z);
}
inline void cMtx_multVecArray(Mtx mtx, const Vec* src, Vec* dst, u32 count) {
mDoMtx_multVecArray(mtx, src, dst, count);
}
+1
View File
@@ -82,6 +82,7 @@ static BOOL nodeCallBack(J3DNode* node, int calcTiming) {
case AM_JNT_EYE_e:
cMtx_YrotM(*calc_mtx, i_this->mEyeRot.y);
cMtx_XrotM(*calc_mtx, i_this->mEyeRot.x);
break;
}
if (jntNo >= AM_JNT_KOSI_e && jntNo <= AM_JNT_EYE_e) {
+1 -1
View File
@@ -2027,7 +2027,7 @@ static cPhs_State daBmd_Create(fopAc_ac_c* a_this) {
i_this->mB71 = 1;
}
dKyw_pntwind_set(&i_this->mWindInfluence);
a_this->attention_info.distances[2] = 4;
a_this->attention_info.distances[fopAc_Attn_TYPE_BATTLE_e] = 4;
daBmd_Execute(i_this);
res = cPhs_COMPLEATE_e;
}
+2 -2
View File
@@ -4385,11 +4385,11 @@ void body_create_init(bpw_class* i_this) {
fopAcM_SetMtx(actor, i_this->mpMorf->getModel()->getBaseTRMtx());
fopAcM_setCullSizeBox(actor, -300.0f, -300.0f, -300.0f, 300.0f, 300.0f, 300.0f);
actor->attention_info.flags = fopAc_Attn_LOCKON_BATTLE_e;
actor->attention_info.distances[2] = 4;
actor->attention_info.distances[fopAc_Attn_TYPE_BATTLE_e] = 4;
fopAcM_OnStatus(actor, fopAcStts_BOSS_e);
i_this->mAcch.Set(fopAcM_GetPosition_p(actor), fopAcM_GetOldPosition_p(actor), actor, 1, &i_this->mAcchCir, fopAcM_GetSpeed_p(actor));
i_this->mStts.Init(0xfe, 1, actor);
actor->attention_info.distances[4] = 0x25;
actor->attention_info.distances[fopAc_Attn_TYPE_CARRY_e] = 0x25;
fopAcM_OnStatus(actor, fopAcStts_UNK10000_e);
i_this->mBodyCoSph.Set(body_co_sph_src);
i_this->mBodyCoSph.SetStts(&i_this->mStts);
+1 -1
View File
@@ -2508,7 +2508,7 @@ static cPhs_State daBwd_Create(fopAc_ac_c* a_this) {
}
}
a_this->attention_info.flags = fopAc_Attn_LOCKON_BATTLE_e;
a_this->attention_info.distances[2] = 0x22;
a_this->attention_info.distances[fopAc_Attn_TYPE_BATTLE_e] = 0x22;
if (hio_set == 0) {
i_this->m3C51 = 1;
hio_set = 1;
-1
View File
@@ -133,7 +133,6 @@ cPhs_State daDai_c::_create() {
if (PVar3 != cPhs_COMPLEATE_e) {
return PVar3;
}
#else
if (PVar2 != cPhs_COMPLEATE_e) {
return PVar2;
+81 -15
View File
@@ -202,8 +202,8 @@ bool daStandItem_c::_delete() {
m698 = NULL;
}
dComIfG_resDelete(&mPhsDai, m_arcname);
dComIfG_resDelete(&mPhsCloth, "Cloth");
dComIfG_resDeleteDemo(&mPhsDai, m_arcname);
dComIfG_resDeleteDemo(&mPhsCloth, "Cloth");
return true;
}
@@ -215,7 +215,7 @@ static BOOL CheckCreateHeap(fopAc_ac_c* i_ac) {
/* 800E37B8-800E3AF8 .text CreateHeap__13daStandItem_cFv */
BOOL daStandItem_c::CreateHeap() {
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(m_arcname, m_bmdidx[mItemType]);
JUT_ASSERT(0x239, modelData != NULL);
JUT_ASSERT(DEMO_SELECT(566, 569), modelData != NULL);
if (mItemNo == dItemNo_SHOP_GURU_STATUE_e) {
mpModel = mDoExt_J3DModel__create(modelData, 0x0, 0x11020203);
@@ -228,7 +228,7 @@ BOOL daStandItem_c::CreateHeap() {
if (m_bckidx[mItemType] != -1) {
J3DAnmTransform* pbck = (J3DAnmTransform*)dComIfG_getObjectRes(m_arcname, m_bckidx[mItemType]);
JUT_ASSERT(0x250, pbck != NULL);
JUT_ASSERT(DEMO_SELECT(589, 592), pbck != NULL);
mpBckAnm = new mDoExt_bckAnm();
static const u32 playmode[] = {
@@ -297,6 +297,37 @@ BOOL daStandItem_c::CreateHeap() {
return TRUE;
}
#if VERSION == VERSION_DEMO
// Note: Retail moved this into d_com_static.cpp as daStandItem_c::daiItemNodeCallBack
static BOOL nodeCallBack(J3DNode* node, int calcTiming) {
if (calcTiming == J3DNodeCBCalcTiming_In) {
J3DJoint* joint = (J3DJoint*)node;
s32 jntNo = joint->getJntNo();
J3DModel* model = j3dSys.getModel();
void* userArea = (void*)model->getUserArea();
if (userArea && fopAcM_IsActor(userArea) && fopAcM_GetName(userArea) == fpcNm_STANDITEM_e) {
daStandItem_c* i_this = (daStandItem_c*)userArea;
mDoMtx_stack_c::copy(model->getAnmMtx(jntNo));
switch (i_this->getItemNo()) {
case dItemNo_PINWHEEL_e:
mDoMtx_stack_c::XrotM(i_this->m6B4);
break;
case dItemNo_FOUNTAIN_IDOL_e:
if (jntNo == FOBJ09_JNT_TUBOKO_BASE_e) {
mDoMtx_copy(mDoMtx_stack_c::get(), i_this->m630);
} else if (jntNo == FOBJ09_JNT_TUBOKO_HEAD_e) {
mDoMtx_copy(mDoMtx_stack_c::get(), i_this->m660);
}
break;
}
model->setAnmMtx(jntNo, mDoMtx_stack_c::get());
cMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx);
}
}
return TRUE;
}
#endif
/* 800E3AF8-800E3E94 .text CreateInit__13daStandItem_cFv */
void daStandItem_c::CreateInit() {
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
@@ -312,7 +343,9 @@ void daStandItem_c::CreateInit() {
m6A4 = *dKyw_get_wind_vec();
m6A2 = cM_atan2s(m6A4.x, m6A4.z);
set_mtx();
#if VERSION > VERSION_DEMO
mpModel->setUserArea(NULL);
#endif
JUTNameTab* jointNameTab = mpModel->getModelData()->getJointName();
const char* jointName;
@@ -323,7 +356,7 @@ void daStandItem_c::CreateInit() {
for (i = 0; i < mpModel->getModelData()->getJointNum(); i++) {
jointName = jointNameTab->getName(i);
if (strcmp("top", jointName) == 0) {
mpModel->getModelData()->getJointNodePointer(i)->setCallBack(daiItemNodeCallBack);
mpModel->getModelData()->getJointNodePointer(i)->setCallBack(DEMO_SELECT(nodeCallBack, daiItemNodeCallBack));
break;
}
}
@@ -336,7 +369,7 @@ void daStandItem_c::CreateInit() {
for (i = 0; i < mpModel->getModelData()->getJointNum(); i++) {
jointName = jointNameTab->getName(i);
if (strcmp("tuboko_head", jointName) == 0 || strcmp("tuboko_base", jointName) == 0)
mpModel->getModelData()->getJointNodePointer(i)->setCallBack(daiItemNodeCallBack);
mpModel->getModelData()->getJointNodePointer(i)->setCallBack(DEMO_SELECT(nodeCallBack, daiItemNodeCallBack));
}
mpModel->setUserArea((u32)this);
mpModel->calc();
@@ -352,18 +385,20 @@ void daStandItem_c::CreateInit() {
s16 stopMaxTime = m_stop_max_time[mItemType];
s16 r29 = (animMinTime + animMaxTime) / 2;
s16 r28 = (animMaxTime - animMinTime) / 2;
s16 temp3 = (stopMinTime + stopMaxTime) / 2;
s16 temp = (stopMaxTime - stopMinTime) / 2;
mBckPlayTimer = 0;
f32 temp2 = cM_rndFX(temp);
s16 temp3 = (stopMinTime + stopMaxTime) / 2;
mBckStopTimer = temp3 + temp2;
if (stopMaxTime == 0) {
mBckPlayTimer = r29 + cM_rndFX(r28);
}
#if VERSION > VERSION_DEMO
m690 = NULL;
m694 = NULL;
m698 = NULL;
#endif
#if VERSION > VERSION_JPN
g_env_light.settingTevStruct(TEV_TYPE_ACTOR, &current.pos, &tevStr);
#endif
@@ -376,6 +411,23 @@ cPhs_State daStandItem_c::_create() {
mItemNo = fopAcM_GetParam(this);
mItemType = convItemNo(mItemNo);
#if VERSION == VERSION_DEMO
cPhs_State rt;
cPhs_State cloth_rt;
rt = dComIfG_resLoad(&mPhsDai, m_arcname);
cloth_rt = dComIfG_resLoad(&mPhsCloth, "Cloth");
if (rt == cPhs_ERROR_e || cloth_rt == cPhs_ERROR_e) {
return cPhs_ERROR_e;
}
if (rt != cPhs_COMPLEATE_e) {
return rt;
}
// !@bug They meant to check cloth_rt here, instead they check rt a second time.
if (rt != cPhs_COMPLEATE_e) {
return cloth_rt;
}
#else
cPhs_State rt = dComIfG_resLoad(&mPhsDai, m_arcname);
if (rt != cPhs_COMPLEATE_e)
return rt;
@@ -383,6 +435,7 @@ cPhs_State daStandItem_c::_create() {
cPhs_State cloth_rt = dComIfG_resLoad(&mPhsCloth, "Cloth");
if (cloth_rt != cPhs_COMPLEATE_e)
return cloth_rt;
#endif
if (rt == cPhs_COMPLEATE_e && cloth_rt == cPhs_COMPLEATE_e) {
if (!fopAcM_entrySolidHeap(this, CheckCreateHeap, m_heapsize[mItemType]))
@@ -509,7 +562,8 @@ bool daStandItem_c::actionFobj06() {
m6C4 = 4.0f;
}
m6B2 = m6C4 * 0x600;
int r0 = 0x600;
m6B2 = (f32)r0 * m6C4;
cLib_addCalc(&m6C4, 0.0f, 0.08f, dKyw_get_wind_pow() + 0.3f, dKyw_get_wind_pow() + 0.1f);
m6B4 += m6B2;
return true;
@@ -572,7 +626,10 @@ bool daStandItem_c::actionFobj09() {
if (m694 == NULL) {
m694 = dComIfGp_particle_set(dPa_name::ID_AK_SN_FOUNTAINFIGURE01, &current.pos, &current.angle, NULL, 0xFF, NULL, fopAcM_GetRoomNo(this), &tevStr.mColorK0);
}
if (m698 == NULL) {
#if VERSION > VERSION_DEMO
if (m698 == NULL)
#endif
{
m698 = dComIfGp_particle_set(dPa_name::ID_AK_SN_FOUNTAINFIGURE02, &current.pos, &current.angle);
}
if (m698) {
@@ -627,8 +684,8 @@ void daStandItem_c::animTest() {
}
if (mBckSpeed == 0.0f || mBckPlayTimer == 0) {
mpBckAnm->setPlaySpeed(0.0f);
s16 temp = (stopMaxTime - stopMinTime) / 2;
s16 temp2 = (stopMinTime + stopMaxTime) / 2;
s16 temp = (stopMaxTime - stopMinTime) / 2;
mBckStopTimer = temp2 + cM_rndFX(temp);
}
} else if (mBckStopTimer > 0) {
@@ -637,8 +694,8 @@ void daStandItem_c::animTest() {
mBckStopTimer = 1;
}
if (mBckStopTimer == 0) {
s16 temp = (animMaxTime - animMinTime) / 2;
s16 temp2 = (animMinTime + animMaxTime) / 2;
s16 temp = (animMaxTime - animMinTime) / 2;
mBckPlayTimer = temp2 + cM_rndFX(temp);
mBckSpeed = 1.0f;
if (mpBckAnm) {
@@ -662,8 +719,8 @@ void daStandItem_c::animTestForOneTime() {
if (mBckStopTimer == 0) {
mpBckAnm->setPlaySpeed(1.0f);
mpBckAnm->setFrame(0.0f);
s16 temp = (animMaxTime - animMinTime) / 2;
s16 temp2 = (animMinTime + animMaxTime) / 2;
s16 temp = (animMaxTime - animMinTime) / 2;
mBckPlayTimer = temp2 + cM_rndFX(temp);
}
} else if (mBckPlayTimer > 0) {
@@ -672,8 +729,8 @@ void daStandItem_c::animTestForOneTime() {
mpBckAnm->setPlaySpeed(1.0f);
mpBckAnm->setFrame(0.0f);
} else if (mBckPlayTimer == 0 && isStop) {
s16 temp = (stopMaxTime - stopMinTime) / 2;
s16 temp2 = (stopMinTime + stopMaxTime) / 2;
s16 temp = (stopMaxTime - stopMinTime) / 2;
mBckStopTimer = temp2 + cM_rndFX(temp);
} else if (mBckPlayTimer == 0) {
mBckPlayTimer = 1;
@@ -754,13 +811,22 @@ void daStandItem_c::mode_drop() {
bool daStandItem_c::_draw() {
g_env_light.settingTevStruct(TEV_TYPE_ACTOR, &current.pos, &tevStr);
g_env_light.setLightTevColorType(mpModel, &tevStr);
#if VERSION == VERSION_DEMO
if (mpBckAnm != NULL)
mpBckAnm->entry(mpModel->getModelData());
if (mItemNo == dItemNo_PINWHEEL_e)
mDoExt_bckAnmRemove(mpModel->getModelData());
#else
if (mItemNo == dItemNo_PINWHEEL_e)
mDoExt_bckAnmRemove(mpModel->getModelData());
else if (mpBckAnm != NULL)
mpBckAnm->entry(mpModel->getModelData());
#endif
if (mItemNo == dItemNo_SHOP_GURU_STATUE_e)
dDlst_texSpecmapST(&eyePos, &tevStr, mpModel->getModelData(), 1.0f);
if (mItemNo == dItemNo_SHOP_GURU_STATUE_e) {
f32 scale = 1.0f;
dDlst_texSpecmapST(&eyePos, &tevStr, mpModel->getModelData(), scale);
}
mDoExt_modelUpdateDL(mpModel);
if (mpCloth != NULL)
+1 -1
View File
@@ -174,7 +174,7 @@ BOOL daDaiocta_Eye_c::_createHeap() {
}
/* 000004E4-00000510 .text coHit_CB__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */
void coHit_CB(fopAc_ac_c* i_this, dCcD_GObjInf*, fopAc_ac_c* i_actor, dCcD_GObjInf*) {
static void coHit_CB(fopAc_ac_c* i_this, dCcD_GObjInf*, fopAc_ac_c* i_actor, dCcD_GObjInf*) {
if(i_actor) {
((daDaiocta_Eye_c *)i_this)->_coHit(i_actor);
}
+1 -1
View File
@@ -105,7 +105,7 @@ BOOL daFallRock_c::execute() {
fopAcM_posMoveF(this, mStts.GetCCMoveP());
field_0x29C.CrrPos(*dComIfG_Bgsp());
field_0x610 = fabs(speed.y) + (f64)field_0x610;
field_0x610 = fabs(speed.y) + field_0x610;
if (field_0x610 > m_falllen) {
if (deleted == FALSE) {
deleted = fopAcM_delete(this);
+2 -2
View File
@@ -526,7 +526,7 @@ bool daFm_c::jntHitCreateHeap() {
}
/* 00000A30-00000A6C .text pathMove_CB__FP4cXyzP4cXyzP4cXyzPv */
BOOL pathMove_CB(cXyz* param_1, cXyz* param_2, cXyz* param_3, void* i_this) {
static BOOL pathMove_CB(cXyz* param_1, cXyz* param_2, cXyz* param_3, void* i_this) {
return ((daFm_c*)i_this)->_pathMove(param_1, param_2, param_3 );
}
@@ -551,7 +551,7 @@ BOOL daFm_c::_pathMove(cXyz* param_1, cXyz* param_2, cXyz* param_3) {
}
/* 00000D40-00000D6C .text searchNearOtherActor_CB__FPvPv */
void* searchNearOtherActor_CB(void* param_1, void* param_2) {
static void* searchNearOtherActor_CB(void* param_1, void* param_2) {
return ((daFm_c*)param_2)->searchNearOtherActor((fopAc_ac_c*)param_1);
}
+1 -1
View File
@@ -62,7 +62,7 @@ daGy_Ctrl_HIO_c::daGy_Ctrl_HIO_c() {
}
/* 000001B8-000001E4 .text searchNearActor_CB__FPvPv */
void* searchNearActor_CB(void* arg0, void* arg1) {
static void* searchNearActor_CB(void* arg0, void* arg1) {
return ((daGy_Ctrl_c*)arg1)->searchNearActor((fopAc_ac_c*)arg0);
}
+3 -1
View File
@@ -416,7 +416,9 @@ void daHmlif_c::lift_normal_move() {
cLib_addCalcPos2(&current.pos, m450, 1.0f, fopAcM_GetSpeedF(this));
}
BOOL daHmlif_c::check_path_point(cXyz, cXyz, cXyz, s8) {
BOOL daHmlif_c::check_path_point(cXyz, cXyz, s8) {
// Unused stripped function
return FALSE;
}
/* 00001270-00001410 .text set_next_pnt__9daHmlif_cFv */
+3 -3
View File
@@ -10,11 +10,11 @@
#include "d/d_magma.h"
daMagma_c::~daMagma_c() {
dComIfG_resDelete(&mPhs, "Magma");
dComIfG_resDeleteDemo(&mPhs, "Magma");
}
cPhs_State daMagma_c::create() {
fopAcM_ct(this, daMagma_c);
fopAcM_ct_Retail(this, daMagma_c);
cPhs_State result = dComIfG_resLoad(&mPhs, "Magma");
if (result != cPhs_COMPLEATE_e) {
@@ -25,7 +25,7 @@ cPhs_State daMagma_c::create() {
dComIfGp_getMagma()->newFloor(
current.pos,
scale,
current.roomNo,
fopAcM_GetRoomNo(this),
getPathNo()
);
}
+51 -46
View File
@@ -62,68 +62,72 @@ static const f64 __THPAANScaleFactor[8] = {
#define THPROUNDUP(a, b) ((((s32)(a)) + ((s32)(b)-1L)) / ((s32)(b)))
daMP_Player_c daMP_ActivePlayer;
static daMP_Player_c daMP_ActivePlayer;
BOOL daMP_ReadThreadCreated;
OSMessageQueue daMP_FreeReadBufferQueue;
OSMessageQueue daMP_ReadedBufferQueue;
OSMessageQueue daMP_ReadedBufferQueue2;
OSMessage daMP_FreeReadBufferMessage[10];
OSMessage daMP_ReadedBufferMessage[10];
OSMessage daMP_ReadedBufferMessage2[10];
OSThread daMP_ReadThread;
u8 daMP_ReadThreadStack[0x1000];
static BOOL daMP_ReadThreadCreated;
static OSMessageQueue daMP_FreeReadBufferQueue;
static OSMessageQueue daMP_ReadedBufferQueue;
static OSMessageQueue daMP_ReadedBufferQueue2;
static OSMessage daMP_FreeReadBufferMessage[10];
static OSMessage daMP_ReadedBufferMessage[10];
static OSMessage daMP_ReadedBufferMessage2[10];
static OSThread daMP_ReadThread;
static u8 daMP_ReadThreadStack[0x1000];
BOOL daMP_VideoDecodeThreadCreated;
OSThread daMP_VideoDecodeThread;
u8 daMP_VideoDecodeThreadStack[0x64000];
static BOOL daMP_VideoDecodeThreadCreated;
static OSThread daMP_VideoDecodeThread;
static u8 daMP_VideoDecodeThreadStack[0x64000];
OSMessageQueue daMP_FreeTextureSetQueue;
OSMessageQueue daMP_DecodedTextureSetQueue;
OSMessage daMP_FreeTextureSetMessage[3];
OSMessage daMP_DecodedTextureSetMessage[3];
static OSMessageQueue daMP_FreeTextureSetQueue;
static OSMessageQueue daMP_DecodedTextureSetQueue;
static OSMessage daMP_FreeTextureSetMessage[3];
static OSMessage daMP_DecodedTextureSetMessage[3];
BOOL daMP_First;
static BOOL daMP_First;
BOOL daMP_AudioDecodeThreadCreated;
OSThread daMP_AudioDecodeThread;
u8 daMP_AudioDecodeThreadStack[0x64000];
OSMessageQueue daMP_FreeAudioBufferQueue;
OSMessageQueue daMP_DecodedAudioBufferQueue;
OSMessage daMP_FreeAudioBufferMessage[3];
OSMessage daMP_DecodedAudioBufferMessage[3];
static BOOL daMP_AudioDecodeThreadCreated;
static OSThread daMP_AudioDecodeThread;
static u8 daMP_AudioDecodeThreadStack[0x64000];
static OSMessageQueue daMP_FreeAudioBufferQueue;
static OSMessageQueue daMP_DecodedAudioBufferQueue;
static OSMessage daMP_FreeAudioBufferMessage[3];
static OSMessage daMP_DecodedAudioBufferMessage[3];
BOOL daMP_Initialized;
u32 daMP_WorkBuffer[16] ALIGN_DECL(32);
OSMessageQueue daMP_PrepareReadyQueue;
OSMessageQueue daMP_UsedTextureSetQueue;
OSMessage daMP_PrepareReadyMessage;
OSMessage daMP_UsedTextureSetMessage[3];
VIRetraceCallback daMP_OldVIPostCallback;
static BOOL daMP_Initialized;
static u32 daMP_WorkBuffer[16] ALIGN_DECL(32);
static OSMessageQueue daMP_PrepareReadyQueue;
static OSMessageQueue daMP_UsedTextureSetQueue;
static OSMessage daMP_PrepareReadyMessage;
static OSMessage daMP_UsedTextureSetMessage[3];
static VIRetraceCallback daMP_OldVIPostCallback;
u32 daMP_SoundBufferIndex;
u32 daMP_OldAIDCallback;
static u32 daMP_SoundBufferIndex;
static u32 daMP_OldAIDCallback;
void* daMP_LastAudioBuffer;
void* daMP_CurAudioBuffer;
s32 daMP_AudioSystem;
s16 daMP_SoundBuffer[2][0x460] ALIGN_DECL(32);
static void* daMP_LastAudioBuffer;
static void* daMP_CurAudioBuffer;
static s32 daMP_AudioSystem;
static s16 daMP_SoundBuffer[2][0x460] ALIGN_DECL(32);
THPVideoInfo daMP_videoInfo;
THPAudioInfo daMP_audioInfo;
u32 daMP_DrawPosX;
u32 daMP_DrawPosY;
void* daMP_buffer;
static THPVideoInfo daMP_videoInfo;
static THPAudioInfo daMP_audioInfo;
static u32 daMP_DrawPosX;
static u32 daMP_DrawPosY;
static void* daMP_buffer;
#if VERSION > VERSION_DEMO
BOOL daMP_Fail_alloc;
u16 daMP_backup_FrameRate;
u8 daMP_backup_vfilter[7];
#endif
daMP_Dlst_base_c daMP_c_Dlst_base;
#if VERSION > VERSION_DEMO
#ifdef __cplusplus
extern "C" {
#endif
#endif
/* 000000EC-00000584 .text THPAudioDecode */
static u32 THPAudioDecode(s16* audioBuffer, u8* audioFrame, s32 flag) {
@@ -2618,8 +2622,10 @@ static BOOL THPInit() {
return TRUE;
}
#if VERSION > VERSION_DEMO
#ifdef __cplusplus
}
} // extern "C"
#endif
#endif
/* 00003208-0000323C .text daMP_PopReadedBuffer__Fv */
@@ -4150,8 +4156,7 @@ static u32 daMP_Get_MovieRestFrame() {
}
/* 000062F0-00006370 .text daMP_Set_PercentMovieVolume__Ff */
static u32 daMP_Set_PercentMovieVolume(f32 volume) {
/* Nonmatching - regalloc */
static void daMP_Set_PercentMovieVolume(f32 volume) {
#if VERSION > VERSION_DEMO
if (!daMP_Fail_alloc)
#endif
+1 -1
View File
@@ -37,7 +37,7 @@ static BOOL CheckCreateHeap(fopAc_ac_c*) {
}
/* 0000044C-0000046C .text daNpc_Aj1_XyCheck_CB__FPvi */
void daNpc_Aj1_XyCheck_CB(void*, int) {
static void daNpc_Aj1_XyCheck_CB(void*, int) {
/* Nonmatching */
}
+1764 -185
View File
File diff suppressed because it is too large Load Diff
+6 -4
View File
@@ -52,8 +52,9 @@ public:
class daNpc_Bm1_HIO_c : public mDoHIO_entry_c {
public:
daNpc_Bm1_HIO_c();
virtual ~daNpc_Bm1_HIO_c() {};
void genMessage(JORMContext* ctx);
virtual ~daNpc_Bm1_HIO_c() {}
void genMessage(JORMContext* ctx) {}
public:
/* 0x04 */ s8 m4;
@@ -687,8 +688,8 @@ bool daNpc_Bm1_c::createInit() {
mEventIdTable[i] = dComIfGp_evmng_getEventIdx(l_evn_tbl[i]);
}
attention_info.flags = fopAc_Attn_LOCKON_TALK_e | fopAc_Attn_ACTION_SPEAK_e;
attention_info.distances[1] = a_att_dis_TBL[mType][0];
attention_info.distances[3] = a_att_dis_TBL[mType][1];
attention_info.distances[fopAc_Attn_TYPE_TALK_e] = a_att_dis_TBL[mType][0];
attention_info.distances[fopAc_Attn_TYPE_SPEAK_e] = a_att_dis_TBL[mType][1];
gravity = -4.5;
m82C = current.pos;
s32 iVar5 = 0xFF;
@@ -2940,6 +2941,7 @@ void daNpc_Bm1_c::privateCut(int arg0) {
break;
case 1:
cut_init_360_TRN(arg0);
break;
}
}
bool cVar3;
+1
View File
@@ -473,6 +473,7 @@ void daNpc_Km1_c::privateCut() {
switch(field_0x7C9){
case 0:
event_actionInit(staffIdx);
break;
}
}
bool bVar1;
+7 -7
View File
@@ -900,13 +900,13 @@ BOOL daNpc_P1_c::privateCut() {
switch (actIdx) {
case 2:
evn_setAnm_init(staffIdx);
break;
case 3:
mHeadAnm.swing_vertical_init(2, 0x1000, 0x800, 1);
break;
case 4:
evn_talk_init(staffIdx);
break;
}
}
switch (actIdx) {
@@ -1043,8 +1043,8 @@ cPhs_State daNpc_P1_c::_create() {
mKajiTimer = 300;
if (mType == TYPE_P1B_e) {
attention_info.distances[1] = 0xAA;
attention_info.distances[3] = 0xAA;
attention_info.distances[fopAc_Attn_TYPE_TALK_e] = 0xAA;
attention_info.distances[fopAc_Attn_TYPE_SPEAK_e] = 0xAA;
u8 type = mParam;
if (mParam == 1) {
if (dComIfGp_getStartStagePoint() == 0 || dComIfGp_getStartStagePoint() == 2) {
@@ -1064,8 +1064,8 @@ cPhs_State daNpc_P1_c::_create() {
setAction(&daNpc_P1_c::normalAction, NULL, 0);
}
} else if (mType == TYPE_P1C_e) {
attention_info.distances[1] = 0xAA;
attention_info.distances[3] = 0xAA;
attention_info.distances[fopAc_Attn_TYPE_TALK_e] = 0xAA;
attention_info.distances[fopAc_Attn_TYPE_SPEAK_e] = 0xAA;
if (!dComIfGs_isEventBit(0x820) && !dComIfGs_isEventBit(dSv_event_flag_c::UNK_0808)) {
current.pos.x -= cM_scos(current.angle.y) * 40.0f;
current.pos.z += cM_ssin(current.angle.y) * 40.0f;
@@ -1076,8 +1076,8 @@ cPhs_State daNpc_P1_c::_create() {
}
mCyl.SetR(100.0f);
} else {
attention_info.distances[1] = 0xAB;
attention_info.distances[3] = 0xAB;
attention_info.distances[fopAc_Attn_TYPE_TALK_e] = 0xAB;
attention_info.distances[fopAc_Attn_TYPE_SPEAK_e] = 0xAB;
if (m671 != 0) {
setAnm(9, 0.0f);
mCyl.SetR(REG10_F(5) + 90.0f);
+1 -1
View File
@@ -940,7 +940,7 @@ BOOL daNpc_Rsh1_c::CreateInit() {
mActorAngle = current.angle;
attention_info.flags = fopAc_Attn_LOCKON_TALK_e | fopAc_Attn_ACTION_SPEAK_e;
attention_info.distances[fopAc_Attn_TYPE_BATTLE_e] = 173;
attention_info.distances[8] = 173; // Bug?
attention_info.distances[8] = 173; // !@bug: There is no distances[8], this overwrites the first byte of position.x
gravity = -30.0f;
switch (m95E) {
+3 -3
View File
@@ -12,7 +12,7 @@ daNpc_So_HIO_c::daNpc_So_HIO_c() {
}
/* 000002A4-000002D0 .text searchEsa_CB__FPvPv */
void searchEsa_CB(void*, void*) {
static void searchEsa_CB(void*, void*) {
/* Nonmatching */
}
@@ -32,7 +32,7 @@ void daNpc_So_c::_nodeControl(J3DNode*, J3DModel*) {
}
/* 000004B0-000004DC .text searchTagSo_CB__FPvPv */
void searchTagSo_CB(void*, void*) {
static void searchTagSo_CB(void*, void*) {
/* Nonmatching */
}
@@ -42,7 +42,7 @@ void daNpc_So_c::_searchTagSo(fopAc_ac_c*) {
}
/* 0000054C-00000578 .text searchMinigameTagSo_CB__FPvPv */
void searchMinigameTagSo_CB(void*, void*) {
static void searchMinigameTagSo_CB(void*, void*) {
/* Nonmatching */
}
+1
View File
@@ -83,6 +83,7 @@ void daNpc_Tc_c::cutProc() {
break;
case 8:
cutPayProc(staffIdx);
break;
}
}
}
+89 -36
View File
@@ -20,6 +20,57 @@
#include "f_op/f_op_actor_mng.h"
#include "f_op/f_op_kankyo_mng.h"
class daObj_Ikada_HIO_c : public mDoHIO_entry_c {
public:
daObj_Ikada_HIO_c();
virtual ~daObj_Ikada_HIO_c() {}
void genMessage(JORMContext* ctx) {}
public:
/* 0x04 */ u8 mbDebugDraw;
/* 0x05 */ u8 m05;
/* 0x06 */ u8 m06;
/* 0x07 */ u8 mbNoRotAnim;
/* 0x08 */ u8 m08;
/* 0x09 */ u8 m09[0x0C - 0x09];
/* 0x0C */ cXyz mFlagOffset;
/* 0x18 */ f32 mFlagScale;
/* 0x1C */ s16 m1C;
/* 0x1E */ s16 m1E;
/* 0x20 */ f32 m20;
/* 0x24 */ s16 m24;
/* 0x26 */ u8 m26[0x28 - 0x26];
/* 0x28 */ f32 m28;
/* 0x2C */ f32 mShipOffsY_Attention;
/* 0x30 */ f32 mShipOffsY_Eye;
/* 0x34 */ f32 mTerryWaveOffsZ;
/* 0x38 */ f32 mTerryWaveOffsY;
/* 0x3C */ f32 mTerryTrackOffsZ;
/* 0x40 */ f32 mSvWaveOffsX;
/* 0x44 */ f32 mSvTrackOffsX;
/* 0x48 */ f32 mSvOffsX[4];
/* 0x58 */ f32 mTrackIndTransY;
/* 0x5C */ f32 mTrackIndScaleY;
/* 0x60 */ f32 mSplashScaleMax;
/* 0x64 */ f32 mSplashMaxScaleTimer;
/* 0x68 */ f32 mWaveVelFade;
/* 0x6C */ f32 mTrackVel;
/* 0x70 */ f32 mWaveVelSpeed;
/* 0x74 */ f32 mWaveVelOffs;
/* 0x78 */ f32 mWaveMaxVelocity;
/* 0x7C */ cXyz mWaveCollapsePos0;
/* 0x88 */ cXyz mWaveCollapsePos1;
/* 0x94 */ s16 m94;
/* 0x96 */ s16 mPlayerStopDistance;
/* 0x98 */ s16 m98;
/* 0x9A */ s16 m9A;
/* 0x9C */ f32 m9C;
/* 0xA0 */ f32 mVelocityTargetTerry1;
/* 0xA4 */ f32 mVelocityTargetTerry3;
/* 0xA8 */ f32 mA8;
}; // size = 0xAC
cXyz daObj_Ikada_c::m_rope_base_vec(0.0f, -10.0f, 0.0f);
cXyz daObj_Ikada_c::m_crane_offset(200.0f, -340.0f, 0.0f);
static daObj_Ikada_HIO_c l_HIO;
@@ -94,12 +145,12 @@ daObj_Ikada_HIO_c::daObj_Ikada_HIO_c() {
mWaveVelSpeed = 2.0f;
mWaveMaxVelocity = 15.0f;
mWaveVelOffs = 0.0f;
mWaveCollapsePos[0].x = -80.0f;
mWaveCollapsePos[0].y = -50.0f;
mWaveCollapsePos[0].z = -150.0f;
mWaveCollapsePos[1].x = -40.0f;
mWaveCollapsePos[1].y = -100.0f;
mWaveCollapsePos[1].z = -350.0f;
mWaveCollapsePos0.x = -80.0f;
mWaveCollapsePos0.y = -50.0f;
mWaveCollapsePos0.z = -150.0f;
mWaveCollapsePos1.x = -40.0f;
mWaveCollapsePos1.y = -100.0f;
mWaveCollapsePos1.z = -350.0f;
m94 = 3000;
mPlayerStopDistance = 6000;
m98 = 1000;
@@ -127,7 +178,7 @@ void daObj_Ikada_c::_nodeControl(J3DNode* node, J3DModel* model) {
J3DJoint* joint = (J3DJoint*)node;
s32 jntNo = joint->getJntNo();
mDoMtx_stack_c::copy(model->getAnmMtx(jntNo));
mDoMtx_stack_c::ZXYrotM(mJointRot[jntNo].x, mJointRot[jntNo].y, mJointRot[jntNo].z);
mDoMtx_stack_c::ZXYrotM(mJointRot[jntNo]);
if (jntNo == VSVSP_JNT_SV_CREAN_e) {
mDoMtx_stack_c::XrotM(m115A + m115E * (REG12_S(5) + 5) * cM_ssin(m115C));
}
@@ -136,7 +187,7 @@ void daObj_Ikada_c::_nodeControl(J3DNode* node, J3DModel* model) {
}
/* 00000458-00000494 .text pathMove_CB__FP4cXyzP4cXyzP4cXyzPv */
BOOL pathMove_CB(cXyz* arg1, cXyz* arg2, cXyz* arg3, void* v_this) {
static BOOL pathMove_CB(cXyz* arg1, cXyz* arg2, cXyz* arg3, void* v_this) {
return ((daObj_Ikada_c*)v_this)->_pathMove(arg1, arg2, arg3);
}
@@ -179,7 +230,7 @@ BOOL daObj_Ikada_c::_pathMove(cXyz* arg1, cXyz* arg2, cXyz* arg3) {
}
/* 000007A0-000007C8 .text ride_CB__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c */
void ride_CB(dBgW*, fopAc_ac_c* ac1, fopAc_ac_c* ac2) {
static void ride_CB(dBgW*, fopAc_ac_c* ac1, fopAc_ac_c* ac2) {
((daObj_Ikada_c*)ac1)->_ride(ac2);
}
@@ -347,8 +398,7 @@ void daObj_Ikada_c::createWave() {
JPABaseEmitter* emitter = mTrackCallBack.getEmitter();
if (emitter != NULL) {
JGeometry::TVec3<f32> scale = (Vec){1.0f, 1.0f, 1.0f};
emitter->setGlobalDynamicsScale(scale);
emitter->setGlobalParticleScale(scale);
emitter->setGlobalScale(scale);
}
}
}
@@ -391,14 +441,14 @@ void daObj_Ikada_c::setWave() {
mWaveRCallback.setPitch(l_HIO.mWaveVelOffs + 1.0f);
mWaveLCallback.setPitch(1.0f - l_HIO.mWaveVelOffs);
cXyz sp2C = l_HIO.mWaveCollapsePos[0];
cXyz sp20 = l_HIO.mWaveCollapsePos[1];
cXyz sp14 = l_HIO.mWaveCollapsePos[0];
cXyz sp08 = l_HIO.mWaveCollapsePos[1];
cXyz sp2C = l_HIO.mWaveCollapsePos0;
cXyz sp20 = l_HIO.mWaveCollapsePos1;
cXyz sp14 = sp2C;
cXyz sp08 = sp20;
mWaveRCallback.setAnchor(&sp2C, &sp20);
sp14.x = (f32)(f64)sp14.x * -1.0f;
sp08.x = (f32)(f64)sp08.x * -1.0f;
sp14.x *= -1.0f;
sp08.x *= -1.0f;
mWaveLCallback.setAnchor(&sp14, &sp08);
mWaveRCallback.setMaxDisSpeed(l_HIO.mWaveVelSpeed);
@@ -464,7 +514,7 @@ void daObj_Ikada_c::setRopePos() {
spBC = *pcVar6;
mDoMtx_stack_c::copy(mpModel->getAnmMtx(VSVSP_JNT_SV_CREAN_e));
mDoMtx_stack_c::transM(m_crane_offset.x, m_crane_offset.y, m_crane_offset.z);
mDoMtx_stack_c::transM(m_crane_offset);
mDoMtx_stack_c::multVecZero(pcVar6);
if (mCurMode == 1) {
@@ -514,7 +564,7 @@ void daObj_Ikada_c::setRopePos() {
iVar4 = 0;
} else {
mDoMtx_stack_c::copy(mpModel->getAnmMtx(VSVSP_JNT_SV_CREAN_e));
mDoMtx_stack_c::transM(m_crane_offset.x, m_crane_offset.y, m_crane_offset.z);
mDoMtx_stack_c::transM(m_crane_offset);
cMtx_copy(mDoMtx_stack_c::get(), ropeEndMtx);
spA4.set(pcVar7->x - ropeEndMtx[0][3], pcVar7->y - ropeEndMtx[1][3], pcVar7->z - ropeEndMtx[2][3]);
iVar3 = 0;
@@ -632,7 +682,7 @@ void daObj_Ikada_c::setMtx() {
mDoMtx_stack_c::copy(mpModel->getBaseTRMtx());
mDoMtx_stack_c::multVec(&sp24, &mFirePos);
mDoMtx_stack_c::transM(sp24.x, sp24.y, sp24.z);
mDoMtx_stack_c::transM(sp24);
mDoMtx_stack_c::YrotM(mLightRotY);
mDoMtx_stack_c::XrotM(mLightRotX);
mDoMtx_stack_c::scaleM(mLightPower, mLightPower, mLightPower);
@@ -1203,22 +1253,25 @@ bool daObj_Ikada_c::_execute() {
return false;
}
const u32 unused_5617[] = {
0xFFFF0080,
0xFF80,
0xFF80,
0xFF000080,
0xFF000080,
0xFF80,
0xFF000080,
0xFF000080,
0xFF000080,
};
/* 00003CA0-00003CD4 .text debugDraw__13daObj_Ikada_cFv */
void daObj_Ikada_c::debugDraw() {
cXyz sp08 = current.pos;
sp08.y += 20.0f;
// Unused colors, needed for the .rodata section to match.
GXColor unused_5617 = {0xFF, 0xFF, 0x00, 0x80};
GXColor unused_5621 = {0x00, 0x00, 0xFF, 0x80};
GXColor unused_5623 = {0x00, 0x00, 0xFF, 0x80};
GXColor unused_5625 = {0xFF, 0x00, 0x00, 0x80};
GXColor unused_5629 = {0xFF, 0x00, 0x00, 0x80};
GXColor unused_5631 = {0x00, 0x00, 0xFF, 0x80};
GXColor unused_5636 = {0xFF, 0x00, 0x00, 0x80};
GXColor unused_5640 = {0xFF, 0x00, 0x00, 0x80};
GXColor unused_5646 = {0xFF, 0x00, 0x00, 0x80};
// dDbVw_drawSphereOpa__FR4cXyzfRC8_GXColorUc
// dDbVw_drawCircleOpa__FR4cXyzfRC8_GXColorUcUc
if (isWave()) {
// ?
}
}
/* 00003CD4-00003EE0 .text _draw__13daObj_Ikada_cFv */
@@ -1246,7 +1299,7 @@ bool daObj_Ikada_c::_draw() {
J3DModelData* modelData = mpModel->getModelData();
mBckAnm.entry(modelData);
mDoExt_modelUpdateDL(mpModel);
mpModel->getModelData()->getJointNodePointer(VSVSP_JNT_SV_SHIP_ROOT_e)->setMtxCalc(NULL);
mBckAnm.remove(mpModel->getModelData());
} else {
mDoExt_modelUpdateDL(mpModel);
}
@@ -1366,10 +1419,10 @@ void daObj_Ikada_c::createInit() {
cXyz(0.0f, 0.0f, 0.0f),
cXyz(100.0f, 530.0f, 0.0f),
};
static const u32 params[] = {4, 4, 4, 4, 0x2000000};
static const u32 param[] = {4, 4, 4, 4, 0x2000000};
static const f32 flag_scale[] = {0.2f, 0.0f, 0.0f, 0.0f, 0.12f};
mFlagPcId = fopAcM_create(fpcNm_MAJUU_FLAG_e, params[mType], &current.pos, tevStr.mRoomNo, &current.angle);
mFlagPcId = fopAcM_create(fpcNm_MAJUU_FLAG_e, param[mType], &current.pos, tevStr.mRoomNo, &current.angle);
mFlagOffset = flag_offset[mType];
mFlagScale = flag_scale[mType];
}
@@ -1385,7 +1438,7 @@ void daObj_Ikada_c::createInit() {
cXyz* pcVar7 = &m07DC[m07D8 - 1];
mDoMtx_stack_c::copy(mpModel->getAnmMtx(VSVSP_JNT_SV_CREAN_e));
mDoMtx_stack_c::transM(m_crane_offset.x, m_crane_offset.y, m_crane_offset.z);
mDoMtx_stack_c::transM(m_crane_offset);
mDoMtx_stack_c::multVecZero(pcVar8);
cXyz sp80(0.0f, -1.0f, 0.0f);
+1 -1
View File
@@ -209,7 +209,7 @@ void daObj_MjDoor_c::smoke_set() {
dComIfGp_particle_setToon(dPa_name::ID_IT_ST_MJMON_SMOKE00,
&mPos, &mAngle, NULL, 0xB9, &mSmoke, fopAcM_GetRoomNo(this));
if (mSmoke.getEmitter() != NULL) {
mSmoke.getEmitter()->mGlobalPrmColor.a = 200;
mSmoke.getEmitter()->setGlobalAlpha(200);
}
}
+1 -1
View File
@@ -185,7 +185,7 @@ BOOL daObjMkie::Act_c::Create() {
#if VERSION > VERSION_DEMO
if (daObj::PrmAbstract<Prm_e>(this, PRM_FLAG_W, PRM_FLAG_S) != 0) {
actor_status &= ~0x3F;
fopAcM_ClearStatusMap(this);
gbaName = 0;
}
#endif
+1
View File
@@ -419,6 +419,7 @@ bool daObjVgnfd_c::_execute() {
dComIfGp_getVibration().StartShock(8, 27, cXyz(0.0f, 1.0f, 0.0f));
mCurModel = 2;
fopAcM_seStartCurrent(this, JA_SE_OBJ_B_BOSS_DR_BRK_3, 0);
break;
}
}
+1 -1
View File
@@ -226,7 +226,7 @@ bool daObj_Warpt_c::createBodyHeap() {
}
/* 00000620-00000648 .text ride_CB__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c */
void ride_CB(dBgW*, fopAc_ac_c* a_this, fopAc_ac_c* arg2) {
static void ride_CB(dBgW*, fopAc_ac_c* a_this, fopAc_ac_c* arg2) {
((daObj_Warpt_c*)a_this)->_ride(arg2);
}
+1 -1
View File
@@ -132,7 +132,7 @@ void daOship_c::_nodeControl(J3DNode* i_nodeP, J3DModel* i_modelP) {
}
/* 0000044C-00000488 .text pathMove_CB__FP4cXyzP4cXyzP4cXyzPv */
int pathMove_CB(cXyz* param_1, cXyz* param_2, cXyz* param_3, void* i_this) {
static int pathMove_CB(cXyz* param_1, cXyz* param_2, cXyz* param_3, void* i_this) {
return ((daOship_c *)i_this)->_pathMove(param_1, param_2, param_3);
}
+2 -2
View File
@@ -12,7 +12,7 @@ daTag_Ba1_HIO_c::daTag_Ba1_HIO_c() {
}
/* 00000144-00000164 .text daTag_Ba1_XyCheck_cB__FPvi */
void daTag_Ba1_XyCheck_cB(void*, int) {
static void daTag_Ba1_XyCheck_cB(void*, int) {
/* Nonmatching */
}
@@ -22,7 +22,7 @@ void daTag_Ba1_c::XyCheck_cB(int) {
}
/* 00000184-000001A4 .text daTag_Ba1_XyEvent_cB__FPvi */
void daTag_Ba1_XyEvent_cB(void*, int) {
static void daTag_Ba1_XyEvent_cB(void*, int) {
/* Nonmatching */
}
+1
View File
@@ -253,6 +253,7 @@ void daTagPhoto_c::privateCut() {
switch(mActIdx) {
case 0:
eventMesSetInit(staffIdx);
break;
}
}
+1
View File
@@ -2701,6 +2701,7 @@ static void Tn_move(tn_class* i_this) {
break;
case ACTION_S_DEMO:
s_demo(i_this);
break;
}
#if VERSION == VERSION_DEMO
if (r29 != 0) {
+1 -1
View File
@@ -357,7 +357,7 @@ void dCloth_packet_c::setMtx(Mtx mtx) {
/* 800642FC-80064330 .text cloth_draw__15dCloth_packet_cFv */
void dCloth_packet_c::cloth_draw() {
j3dSys.getDrawBuffer(OPA_BUFFER)->entryImm(this, 0);
j3dSys.getDrawBuffer(J3DSysDrawBuf_Opa)->entryImm(this, 0);
}
/* 80064330-8006441C .text TexObjInit__15dCloth_packet_cFP7ResTIMG */
+2
View File
@@ -457,6 +457,7 @@ void daTitle_proc_c::daTitle_Kirakira_Sound_flag_on() {
}
#endif
#if VERSION > VERSION_DEMO
/* 80056CCC-80056DE0 .text daiItemNodeCallBack__13daStandItem_cFP7J3DNodei */
BOOL daStandItem_c::daiItemNodeCallBack(J3DNode* node, int calcTiming) {
if (calcTiming == J3DNodeCBCalcTiming_In) {
@@ -485,6 +486,7 @@ BOOL daStandItem_c::daiItemNodeCallBack(J3DNode* node, int calcTiming) {
}
return TRUE;
}
#endif
u8 daNpc_Ji1_c::game_life_point;
+1 -1
View File
@@ -73,7 +73,7 @@ static void dKankyo_DayProc() {
dComIfGs_offEventBit(dSv_event_flag_c::UNK_2680);
#if VERSION > VERSION_JPN
if (dComIfGs_isEventBit(dSv_event_flag_c::UNK_2A20))
if (dComIfGs_isEventBit(dSv_event_flag_c::GRANDMA_HEALED))
#endif
{
clamped = cLib_maxLimit(dComIfGs_getEventReg(dSv_event_flag_c::UNK_A60F) + 1, 3);
+2116 -266
View File
File diff suppressed because it is too large Load Diff
+13 -13
View File
@@ -95,22 +95,22 @@ void dMenu_Option_c::screenSet() {
fopMsgM_messageGet(mDE8[3], 0x1D6);
#endif
((J2DTextBox*)m008.pane)->setFont(mD2C);
((J2DTextBox*)m008.pane)->setFont(mpFont);
#if VERSION > VERSION_JPN
((J2DTextBox*)m008.pane)->setString(mD48);
#endif
((J2DTextBox*)m740[0].pane)->setFont(mD2C);
((J2DTextBox*)m740[1].pane)->setFont(mD30);
((J2DTextBox*)m740[0].pane)->setFont(mpFont);
((J2DTextBox*)m740[1].pane)->setFont(mpRubyFont);
for (int i = 0; i < 2; i++) {
((J2DTextBox*)m9A8[i].pane)->setFont(mD2C);
((J2DTextBox*)m9A8[i].pane)->setFont(mpFont);
#if VERSION <= VERSION_JPN
((J2DTextBox*)mA18_jpn[i].pane)->setFont(mD2C);
((J2DTextBox*)mA18_jpn[i].pane)->setFont(mpFont);
#endif
#if VERSION > VERSION_JPN
((J2DTextBox*)m9A8[i].pane)->setString(mD5C[i]);
#endif
((J2DTextBox*)mAC0[i].pane)->setFont(mD2C);
((J2DTextBox*)mAC0[i].pane)->setFont(mpFont);
#if VERSION > VERSION_JPN
((J2DTextBox*)mAC0[i].pane)->setString(mD84[i]);
changeScaleCenter(&m9A8[i], mD5C[i]);
@@ -119,7 +119,7 @@ void dMenu_Option_c::screenSet() {
}
for (int i = 0; i < 3; i++) {
((J2DTextBox*)mA18[i].pane)->setFont(mD2C);
((J2DTextBox*)mA18[i].pane)->setFont(mpFont);
#if VERSION > VERSION_JPN
((J2DTextBox*)mA18[i].pane)->setString(mDAC[i]);
changeScaleCenter(&mA18[i], mDAC[i]);
@@ -130,7 +130,7 @@ void dMenu_Option_c::screenSet() {
#if VERSION > VERSION_JPN
if (i == 1) continue;
#endif
((J2DTextBox*)m8C8[i].pane)->setFont(mD2C);
((J2DTextBox*)m8C8[i].pane)->setFont(mpFont);
#if VERSION > VERSION_JPN
((J2DTextBox*)m8C8[i].pane)->setString(mDE8[i]);
changeScaleRight(&m8C8[i], mDE8[i]);
@@ -666,8 +666,8 @@ void dMenu_Option_c::noteSet() {
msgDataProc.dataInit();
msgDataProc.setBmgData((char*)mesg);
msgDataProc.setOutMessage(mD38, mD3C, mD40, mD44);
msgDataProc.setFont(mD2C);
msgDataProc.setRubyFont(mD30);
msgDataProc.setFont(mpFont);
msgDataProc.setRubyFont(mpRubyFont);
msgDataProc.setCharSpace(((J2DTextBox*)m740[0].pane)->getCharSpace());
msgDataProc.setRubyCharSpace(((J2DTextBox*)m740[1].pane)->getCharSpace());
msgDataProc.setLineSpace(((J2DTextBox*)m740[0].pane)->getLineSpace());
@@ -763,16 +763,16 @@ f32 dMenu_Option_c::stringlength(fopMsgM_pane_class* r30, char* r31) {
J2DTextBox::TFontSize sp18;
((J2DTextBox*)r30->pane)->getFontSize(sp18);
f32 f31 = ((J2DTextBox*)r30->pane)->getCharSpace();
f30 = sp18.mSizeX / mD2C->getCellWidth();
f30 = sp18.mSizeX / mpFont->getCellWidth();
while (*r31 != 0) {
if ((u8)*r31 == 0x1A) {
r31++;
r31 += (*r31 - 1);
} else {
int r26 = (u8)*r31++;
int r28 = mD2C->getWidth(r26);
int r28 = mpFont->getWidth(r26);
if (!r27) {
f29 = f30 * (r28 + mD2C->getOffset(r26));
f29 = f30 * (r28 + mpFont->getOffset(r26));
r27 = true;
} else{
f29 += f31 + r28 * f30;
+260 -426
View File
@@ -1,42 +1,34 @@
#include "dolphin/gx/GXAttr.h"
#include "dolphin/gx/GX.h"
static inline void SETVCDATTR(GXAttr name, GXAttrType type) {
switch (name) {
static inline void SETVCDATTR(GXAttr attr, GXAttrType type) {
switch (attr) {
case GX_VA_PNMTXIDX:
GX_SET_REG(gx->vcdLo, type, GX_CP_VCD_LO_POSMTXIDX_ST, GX_CP_VCD_LO_POSMTXIDX_END);
break;
case GX_VA_TEX0MTXIDX:
GX_SET_REG(gx->vcdLo, type, GX_CP_VCD_LO_TEX0MTXIDX_ST,
GX_CP_VCD_LO_TEX0MTXIDX_END);
GX_SET_REG(gx->vcdLo, type, GX_CP_VCD_LO_TEX0MTXIDX_ST, GX_CP_VCD_LO_TEX0MTXIDX_END);
break;
case GX_VA_TEX1MTXIDX:
GX_SET_REG(gx->vcdLo, type, GX_CP_VCD_LO_TEX1MTXIDX_ST,
GX_CP_VCD_LO_TEX1MTXIDX_END);
GX_SET_REG(gx->vcdLo, type, GX_CP_VCD_LO_TEX1MTXIDX_ST, GX_CP_VCD_LO_TEX1MTXIDX_END);
break;
case GX_VA_TEX2MTXIDX:
GX_SET_REG(gx->vcdLo, type, GX_CP_VCD_LO_TEX2MTXIDX_ST,
GX_CP_VCD_LO_TEX2MTXIDX_END);
GX_SET_REG(gx->vcdLo, type, GX_CP_VCD_LO_TEX2MTXIDX_ST, GX_CP_VCD_LO_TEX2MTXIDX_END);
break;
case GX_VA_TEX3MTXIDX:
GX_SET_REG(gx->vcdLo, type, GX_CP_VCD_LO_TEX3MTXIDX_ST,
GX_CP_VCD_LO_TEX3MTXIDX_END);
GX_SET_REG(gx->vcdLo, type, GX_CP_VCD_LO_TEX3MTXIDX_ST, GX_CP_VCD_LO_TEX3MTXIDX_END);
break;
case GX_VA_TEX4MTXIDX:
GX_SET_REG(gx->vcdLo, type, GX_CP_VCD_LO_TEX4MTXIDX_ST,
GX_CP_VCD_LO_TEX4MTXIDX_END);
GX_SET_REG(gx->vcdLo, type, GX_CP_VCD_LO_TEX4MTXIDX_ST, GX_CP_VCD_LO_TEX4MTXIDX_END);
break;
case GX_VA_TEX5MTXIDX:
GX_SET_REG(gx->vcdLo, type, GX_CP_VCD_LO_TEX5MTXIDX_ST,
GX_CP_VCD_LO_TEX5MTXIDX_END);
GX_SET_REG(gx->vcdLo, type, GX_CP_VCD_LO_TEX5MTXIDX_ST, GX_CP_VCD_LO_TEX5MTXIDX_END);
break;
case GX_VA_TEX6MTXIDX:
GX_SET_REG(gx->vcdLo, type, GX_CP_VCD_LO_TEX6MTXIDX_ST,
GX_CP_VCD_LO_TEX6MTXIDX_END);
GX_SET_REG(gx->vcdLo, type, GX_CP_VCD_LO_TEX6MTXIDX_ST, GX_CP_VCD_LO_TEX6MTXIDX_END);
break;
case GX_VA_TEX7MTXIDX:
GX_SET_REG(gx->vcdLo, type, GX_CP_VCD_LO_TEX7MTXIDX_ST,
GX_CP_VCD_LO_TEX7MTXIDX_END);
GX_SET_REG(gx->vcdLo, type, GX_CP_VCD_LO_TEX7MTXIDX_ST, GX_CP_VCD_LO_TEX7MTXIDX_END);
break;
case GX_VA_POS:
GX_SET_REG(gx->vcdLo, type, GX_CP_VCD_LO_POS_ST, GX_CP_VCD_LO_POS_END);
@@ -92,6 +84,29 @@ static inline void SETVCDATTR(GXAttr name, GXAttrType type) {
}
}
static void __GXXfVtxSpecs(void) {
u32 nCols = 0;
u32 nNrm;
u32 nTex;
u32 reg;
nCols = GET_REG_FIELD(gx->vcdLo, 2, 13) ? 1 : 0;
nCols += GET_REG_FIELD(gx->vcdLo, 2, 15) ? 1 : 0;
nNrm = gx->hasBiNrms ? 2 : gx->hasNrms ? 1 : 0;
nTex = 0;
nTex += GET_REG_FIELD(gx->vcdHi, 2, 0) ? 1 : 0;
nTex += GET_REG_FIELD(gx->vcdHi, 2, 2) ? 1 : 0;
nTex += GET_REG_FIELD(gx->vcdHi, 2, 4) ? 1 : 0;
nTex += GET_REG_FIELD(gx->vcdHi, 2, 6) ? 1 : 0;
nTex += GET_REG_FIELD(gx->vcdHi, 2, 8) ? 1 : 0;
nTex += GET_REG_FIELD(gx->vcdHi, 2, 10) ? 1 : 0;
nTex += GET_REG_FIELD(gx->vcdHi, 2, 12) ? 1 : 0;
nTex += GET_REG_FIELD(gx->vcdHi, 2, 14) ? 1 : 0;
reg = (nCols) | (nNrm << 2) | (nTex << 4);
GX_WRITE_XF_REG(8, reg);
gx->bpSentNot = GX_TRUE;
}
void GXSetVtxDesc(GXAttr name, GXAttrType type) {
SETVCDATTR(name, type);
@@ -120,25 +135,6 @@ void GXSetVtxDescv(GXVtxDescList* list) {
gx->dirtyState |= GX_DIRTY_VCD;
}
static void __GXXfVtxSpecs(void) {
u32 normCount, colorCount, texCount;
normCount = gx->hasBiNrms ? 2 : (gx->hasNrms ? 1 : 0);
// Both fields in one access
colorCount = 33 - __cntlzw((gx->vcdLo & (0xf << 0xd)) >> 0xd);
colorCount /= 2; // equivalent to /=2 and >>= 1
// All 16 assigned bits in VCD_Hi
texCount = 33 - __cntlzw((gx->vcdHi & (0xffff << 0)) >> 0);
texCount /= 2; // equivalent to /=2 and >>= 1
GX_XF_LOAD_REG(GX_XF_REG_INVERTEXSPEC, (colorCount) | (normCount << 2) | (texCount << 4));
gx->bpSentNot = GX_TRUE;
return;
}
void __GXSetVCD(void) {
GX_CP_LOAD_REG(GX_CP_REG_VCD_LO, gx->vcdLo);
GX_CP_LOAD_REG(GX_CP_REG_VCD_HI, gx->vcdHi);
@@ -195,105 +191,45 @@ void __GXCalculateVLim(void) {
gx->vLim = vlim;
}
void GXGetVtxDesc(int param_0, GXAttrType* param_1) {
int local_38;
void GXGetVtxDesc(GXAttr attr, GXAttrType* type) {
u32 cpType;
switch (param_0) {
case 0:
local_38 = gx->vcdLo & 1;
break;
case 1:
local_38 = (gx->vcdLo & 2) >> 1;
break;
case 2:
local_38 = (gx->vcdLo & 4) >> 2;
break;
case 3:
local_38 = (gx->vcdLo & 8) >> 3;
break;
case 4:
local_38 = (gx->vcdLo & 0x10) >> 4;
break;
case 5:
local_38 = (gx->vcdLo & 0x20) >> 5;
break;
case 6:
local_38 = (gx->vcdLo & 0x40) >> 6;
break;
case 7:
local_38 = (gx->vcdLo & 0x80) >> 7;
break;
case 8:
local_38 = (gx->vcdLo & 0x100) >> 8;
break;
case 9:
local_38 = (gx->vcdLo & 0x600) >> 9;
break;
case 10:
if (gx->hasNrms != 0) {
local_38 = (gx->vcdLo & 0x1800) >> 11;
} else {
local_38 = 0;
}
break;
case 0x19:
if (gx->hasBiNrms != 0) {
local_38 = (gx->vcdLo & 0x1800) >> 11;
} else {
local_38 = 0;
}
break;
case 11:
local_38 = (gx->vcdLo & 0x6000) >> 13;
break;
case 12:
local_38 = (gx->vcdLo & 0x18000) >> 15;
break;
case 13:
local_38 = (gx->vcdHi & 3);
break;
case 14:
local_38 = (gx->vcdHi & 0xC) >> 2;
break;
case 15:
local_38 = (gx->vcdHi & 0x30) >> 4;
break;
case 16:
local_38 = (gx->vcdHi & 0xC0) >> 6;
break;
case 17:
local_38 = (gx->vcdHi & 0x300) >> 8;
break;
case 18:
local_38 = (gx->vcdHi & 0xC00) >> 10;
break;
case 19:
local_38 = (gx->vcdHi & 0x3000) >> 12;
break;
case 20:
local_38 = (gx->vcdHi & 0xC000) >> 14;
break;
default:
local_38 = 0;
break;
switch (attr) {
case GX_VA_PNMTXIDX: cpType = GET_REG_FIELD(gx->vcdLo, 1, 0); break;
case GX_VA_TEX0MTXIDX: cpType = GET_REG_FIELD(gx->vcdLo, 1, 1); break;
case GX_VA_TEX1MTXIDX: cpType = GET_REG_FIELD(gx->vcdLo, 1, 2); break;
case GX_VA_TEX2MTXIDX: cpType = GET_REG_FIELD(gx->vcdLo, 1, 3); break;
case GX_VA_TEX3MTXIDX: cpType = GET_REG_FIELD(gx->vcdLo, 1, 4); break;
case GX_VA_TEX4MTXIDX: cpType = GET_REG_FIELD(gx->vcdLo, 1, 5); break;
case GX_VA_TEX5MTXIDX: cpType = GET_REG_FIELD(gx->vcdLo, 1, 6); break;
case GX_VA_TEX6MTXIDX: cpType = GET_REG_FIELD(gx->vcdLo, 1, 7); break;
case GX_VA_TEX7MTXIDX: cpType = GET_REG_FIELD(gx->vcdLo, 1, 8); break;
case GX_VA_POS: cpType = GET_REG_FIELD(gx->vcdLo, 2, 9); break;
case GX_VA_NRM: cpType = gx->hasNrms ? GET_REG_FIELD(gx->vcdLo, 2, 11) : 0; break;
case GX_VA_NBT: cpType = gx->hasBiNrms ? GET_REG_FIELD(gx->vcdLo, 2, 11) : 0; break;
case GX_VA_CLR0: cpType = GET_REG_FIELD(gx->vcdLo, 2, 13); break;
case GX_VA_CLR1: cpType = GET_REG_FIELD(gx->vcdLo, 2, 15); break;
case GX_VA_TEX0: cpType = GET_REG_FIELD(gx->vcdHi, 2, 0); break;
case GX_VA_TEX1: cpType = GET_REG_FIELD(gx->vcdHi, 2, 2); break;
case GX_VA_TEX2: cpType = GET_REG_FIELD(gx->vcdHi, 2, 4); break;
case GX_VA_TEX3: cpType = GET_REG_FIELD(gx->vcdHi, 2, 6); break;
case GX_VA_TEX4: cpType = GET_REG_FIELD(gx->vcdHi, 2, 8); break;
case GX_VA_TEX5: cpType = GET_REG_FIELD(gx->vcdHi, 2, 10); break;
case GX_VA_TEX6: cpType = GET_REG_FIELD(gx->vcdHi, 2, 12); break;
case GX_VA_TEX7: cpType = GET_REG_FIELD(gx->vcdHi, 2, 14); break;
default: cpType = 0; break;
}
*param_1 = local_38;
*type = cpType;
}
void GXGetVtxDescv(GXVtxDescList* attrPtr) {
int i;
void GXGetVtxDescv(GXVtxDescList* vcd) {
GXAttr attr;
for (i = 0; i <= 0x14; i++) {
attrPtr[i].attr = (GXAttr)i;
GXGetVtxDesc(i, &attrPtr[i].type);
for (attr = 0; attr < GX_VA_MAX_ATTR; attr++) {
vcd[attr].attr = attr;
GXGetVtxDesc(attr, &vcd[attr].type);
}
attrPtr[i].attr = (GXAttr)0x19;
GXGetVtxDesc(0x19, &attrPtr[i].type);
i++;
attrPtr[i].attr = (GXAttr)0xFF;
vcd[attr].attr = 0xFF;
}
void GXClearVtxDesc(void) {
@@ -329,13 +265,11 @@ static inline void SETVAT(u32* vatA, u32* vatB, u32* vatC, GXAttr attr, GXCompCn
break;
case GX_VA_CLR0:
GX_SET_REG(*vatA, compCnt, GX_CP_VAT_GRP0_CLRDIFF_CNT_ST, GX_CP_VAT_GRP0_CLRDIFF_CNT_END);
GX_SET_REG(*vatA, compType, GX_CP_VAT_GRP0_CLRDIFF_TYPE_ST,
GX_CP_VAT_GRP0_CLRDIFF_TYPE_END);
GX_SET_REG(*vatA, compType, GX_CP_VAT_GRP0_CLRDIFF_TYPE_ST, GX_CP_VAT_GRP0_CLRDIFF_TYPE_END);
break;
case GX_VA_CLR1:
GX_SET_REG(*vatA, compCnt, GX_CP_VAT_GRP0_CLRSPEC_CNT_ST, GX_CP_VAT_GRP0_CLRSPEC_CNT_END);
GX_SET_REG(*vatA, compType, GX_CP_VAT_GRP0_CLRSPEC_TYPE_ST,
GX_CP_VAT_GRP0_CLRSPEC_TYPE_END);
GX_SET_REG(*vatA, compType, GX_CP_VAT_GRP0_CLRSPEC_TYPE_ST, GX_CP_VAT_GRP0_CLRSPEC_TYPE_END);
break;
case GX_VA_TEX0:
GX_SET_REG(*vatA, compCnt, GX_CP_VAT_GRP0_TXC0_CNT_ST, GX_CP_VAT_GRP0_TXC0_CNT_END);
@@ -409,343 +343,243 @@ void GXSetVtxAttrFmtv(GXVtxFmt format, GXVtxAttrFmtList* list) {
}
void __GXSetVAT(void) {
u32 i = 0;
u32 dirtyVAT = gx->dirtyVAT;
do {
if (dirtyVAT & (1)) {
GX_CP_LOAD_REG(GX_CP_REG_VAT_GRP0 | i, gx->vatA[i]);
GX_CP_LOAD_REG(GX_CP_REG_VAT_GRP1 | i, gx->vatB[i]);
GX_CP_LOAD_REG(GX_CP_REG_VAT_GRP2 | i, gx->vatC[i]);
}
dirtyVAT >>= 1;
i++;
} while (dirtyVAT != 0);
u8 i;
for (i = 0; i < 8; i++) {
if (gx->dirtyVAT & (1 << (u8)i)) {
GX_WRITE_SOME_REG4(8, i | 0x70, gx->vatA[i], i - 12);
GX_WRITE_SOME_REG4(8, i | 0x80, gx->vatB[i], i - 12);
GX_WRITE_SOME_REG4(8, i | 0x90, gx->vatC[i], i - 12);
}
}
gx->dirtyVAT = 0;
}
static u8 GetFracForNrm(int param_0) {
int var_r31;
static inline u8 GetFracForNrm(GXCompType type) {
u8 frac;
switch (param_0) {
case 1:
var_r31 = 6;
switch (type) {
case GX_S8:
frac = 6;
break;
case 3:
var_r31 = 14;
case GX_S16:
frac = 14;
break;
default:
case 2:
var_r31 = 0;
case GX_U16:
frac = 0;
break;
}
return var_r31;
return frac;
}
void GXGetVtxAttrFmtv(GXVtxFmt param_0, GXVtxAttrFmtList* param_1) {
s32 tmp;
s32 tmp2;
s32 tmp3;
int i;
void GXGetVtxAttrFmt(GXVtxFmt fmt, int attr, GXCompCnt* cnt, GXCompType* type, u8* frac) {
u32 *va;
u32 *vb;
u32 *vc;
#ifdef DEBUG
// not fully matching
/* tmp = 1;
if (data_8074d3c8 != 0) {
OSPanic("GXAttr.c", 941, "\'GXGetVtxAttrFmtv\' is not allowed between GXBegin/GXEnd");
tmp = 0;
}
tmp2 = 1;
if (param_1 == NULL) {
OSPanic("GXAttr.c", 942, "GXSetVtxAttrFmt: list pointer is NULL");
tmp2 = 0;
}
tmp3 = 1;
if (param_0 >= 8) {
OSPanic("GXAttr.c", 943, "GXSetVtxAttrFmt: Format Index is out of range");
tmp3 = 0;
} */
#endif
for (i = 9; i <= 0x14; i++) {
param_1->attr = i;
GXGetVtxAttrFmt(param_0, i, &param_1->cnt, &param_1->type, &param_1->frac);
param_1++;
}
param_1->attr = 0xFF;
}
void GXGetVtxAttrFmt(GXVtxFmt param_0, int param_1, GXCompCnt* param_2, GXCompType* param_3,
u8* param_4) {
s32 tmp;
s32 tmp2;
GXCompCnt* tmp_1;
GXCompCnt* tmp_2;
u32* tmp_3;
#ifdef DEBUG
// not fully matching
/* tmp = 1;
if (data_8074d3c8) {
OSPanic("GXAttr.c", 844, "\'GXGetVtxAttrFmt\' is not allowed between GXBegin/GXEnd");
tmp = 0;
}
tmp2 = 1;
if (param_0 >= 8) {
OSPanic("GXAttr.c", 845, "GXSetVtxAttrFmt: Format Index is out of range");
tmp2 = 0;
} */
#endif
tmp_1 = (GXCompCnt*)&gx->vatA[param_0];
tmp_2 = (GXCompCnt*)&gx->vatB[param_0];
tmp_3 = &gx->vatC[param_0];
switch (param_1) {
case 9:
*param_2 = *tmp_1 & 1;
*param_3 = (*tmp_1 & 0xE) >> 1;
*param_4 = (*tmp_1 & 0x1F0) >> 4;
break;
case 10:
case 0x19:
*param_2 = (*tmp_1 & 0x200) >> 9;
if (*param_2 == 1 && ((*tmp_1 & 0x80000000) >> 31) != 0) {
*param_2 = 2;
va = &gx->vatA[fmt];
vb = &gx->vatB[fmt];
vc = &gx->vatC[fmt];
switch (attr) {
case GX_VA_POS:
*cnt = GET_REG_FIELD(*va, 1, 0);
*type = GET_REG_FIELD(*va, 3, 1);
*frac = GET_REG_FIELD(*va, 5, 4);
return;
case GX_VA_NRM:
case GX_VA_NBT:
*cnt = GET_REG_FIELD(*va, 1, 9);
if (*cnt == GX_TEX_ST && (u8)(*va >> 0x1F) != 0) {
*cnt = GX_NRM_NBT3;
}
*param_3 = (*tmp_1 & 0x1C00) >> 10;
*param_4 = GetFracForNrm(*param_3);
break;
case 11:
*param_2 = (*tmp_1 & 0x2000) >> 0xd;
*param_3 = (*tmp_1 & 0x1C000) >> 0xe;
*param_4 = 0;
break;
case 12:
*param_2 = (*tmp_1 & 0x20000) >> 0x11;
*param_3 = (*tmp_1 & 0x1C0000) >> 0x12;
*param_4 = 0;
break;
case 13:
*param_2 = (*tmp_1 & 0x200000) >> 0x15;
*param_3 = (*tmp_1 & 0x1C00000) >> 0x16;
*param_4 = ((*tmp_1 & 0x3e000000)) >> 25;
break;
case 14:
*param_2 = *tmp_2 & 1;
*param_3 = (*tmp_2 & 0xE) >> 1;
*param_4 = (*tmp_2 & 0x1F0) >> 4;
break;
case 15:
*param_2 = (*tmp_2 & 0x200) >> 9;
*param_3 = (*tmp_2 & 0x1C00) >> 10;
*param_4 = (*tmp_2 & 0x3E000) >> 13;
break;
case 16:
*param_2 = (*tmp_2 & 0x40000) >> 0x12;
*param_3 = (*tmp_2 & 0x380000) >> 0x13;
*param_4 = (*tmp_2 & 0x7C00000) >> 0x16;
break;
case 17:
*param_2 = (*tmp_2 & 0x8000000) >> 0x1B;
*param_3 = (*tmp_2 & 0x70000000) >> 0x1C;
*param_4 = (*tmp_3 & 0x1F);
break;
case 18:
*param_2 = (*tmp_3 & 0x20) >> 5;
*param_3 = (*tmp_3 & 0x1C0) >> 6;
*param_4 = (*tmp_3 & 0x3E00) >> 9;
break;
case 19:
*param_2 = (*tmp_3 & 0x4000) >> 0xe;
*param_3 = (*tmp_3 & 0x38000) >> 0xf;
*param_4 = (*tmp_3 & 0x7c0000) >> 0x12;
break;
case 20:
*param_2 = (*tmp_3 & 0x800000) >> 0x17;
*param_3 = (*tmp_3 & 0x7000000) >> 0x18;
*param_4 = (*tmp_3 & 0xF8000000) >> 0x1b;
break;
*type = GET_REG_FIELD(*va, 3, 10);
*frac = GetFracForNrm(*type);
return;
case GX_VA_CLR0:
*cnt = GET_REG_FIELD(*va, 1, 13);
*type = GET_REG_FIELD(*va, 3, 14);
*frac = 0;
return;
case GX_VA_CLR1:
*cnt = GET_REG_FIELD(*va, 1, 17);
*type = GET_REG_FIELD(*va, 3, 18);
*frac = 0;
return;
case GX_VA_TEX0:
*cnt = GET_REG_FIELD(*va, 1, 21);
*type = GET_REG_FIELD(*va, 3, 22);
*frac = (u8)(*va >> 0x19U) & 0x1F;
return;
case GX_VA_TEX1:
*cnt = GET_REG_FIELD(*vb, 1, 0);
*type = GET_REG_FIELD(*vb, 3, 1);
*frac = (u8)(*vb >> 4U) & 0x1F;
return;
case GX_VA_TEX2:
*cnt = GET_REG_FIELD(*vb, 1, 9);
*type = GET_REG_FIELD(*vb, 3, 10);
*frac = (u8)(*vb >> 0xDU) & 0x1F;
return;
case GX_VA_TEX3:
*cnt = GET_REG_FIELD(*vb, 1, 18);
*type = GET_REG_FIELD(*vb, 3, 19);
*frac = (u8)(*vb >> 0x16U) & 0x1F;
return;
case GX_VA_TEX4:
*cnt = GET_REG_FIELD(*vb, 1, 27);
*type = GET_REG_FIELD(*vb, 3, 28);
*frac = GET_REG_FIELD(*vc, 5, 0);
return;
case GX_VA_TEX5:
*cnt = GET_REG_FIELD(*vc, 1, 5);
*type = GET_REG_FIELD(*vc, 3, 6);
*frac = (u8)(*vc >> 9U) & 0x1F;
return;
case GX_VA_TEX6:
*cnt = GET_REG_FIELD(*vc, 1, 14);
*type = GET_REG_FIELD(*vc, 3, 15);
*frac = (u8)(*vc >> 0x12) & 0x1F;
return;
case GX_VA_TEX7:
*cnt = GET_REG_FIELD(*vc, 1, 23);
*type = GET_REG_FIELD(*vc, 3, 24);
*frac = (int)(*vc >> 0x1BU);
return;
default:
*param_2 = 1;
*param_3 = 0;
*param_4 = 0;
*cnt = GX_TEX_ST;
*type = GX_RGB565;
*frac = 0;
return;
}
}
void GXSetArray(GXAttr attr, void* basePtr, u8 stride) {
s32 newAttr;
s32 attrReg;
void GXGetVtxAttrFmtv(GXVtxFmt fmt, GXVtxAttrFmtList* vat) {
GXAttr attr;
newAttr = attr;
if (newAttr == GX_VA_NBT) {
newAttr = GX_VA_NRM;
for (attr = GX_VA_POS; attr <= GX_VA_TEX7; attr++) {
vat->attr = attr;
GXGetVtxAttrFmt(fmt, attr, &vat->cnt, &vat->type, &vat->frac);
vat++;
}
vat->attr = GX_VA_NULL;
}
attrReg = newAttr - GX_VA_POS;
void GXSetArray(GXAttr attr, void* base_ptr, u8 stride) {
GXAttr cpAttr;
u32 phyAddr;
GX_CP_LOAD_REG(GX_BP_REG_SETMODE0_TEX4 | attrReg,
// Address -> offset?
(u32)basePtr & ~0xC0000000);
GX_CP_LOAD_REG(GX_BP_REG_SETIMAGE2_TEX4 | attrReg, stride);
if (attr == GX_VA_NBT) {
attr = GX_VA_NRM;
}
cpAttr = attr - GX_VA_POS;
phyAddr = (u32)base_ptr & 0x3FFFFFFF;
GX_WRITE_SOME_REG2(8, cpAttr | GX_BP_REG_SETMODE0_TEX4, phyAddr, cpAttr - 12);
GX_WRITE_SOME_REG3(8, cpAttr | GX_BP_REG_SETIMAGE2_TEX4, stride, cpAttr - 12);
}
void GXInvalidateVtxCache(void) {
GXFIFO.u8 = GX_FIFO_CMD_INVAL_VTX;
}
void GXSetTexCoordGen2(GXTexCoordID id, GXTexGenType type, GXTexGenSrc src, u32 texMtxIdx,
GXBool normalize, u32 dualTexMtxIdx) {
u32 reg;
u32 inputRow;
GXXfTexReg inputForm;
void GXSetTexCoordGen2(GXTexCoordID dst_coord, GXTexGenType func, GXTexGenSrc src_param, u32 mtx, GXBool normalize, u32 pt_texmtx) {
u32 reg = 0;
u32 row;
u32 bumprow; // unused
u32 form;
GXAttr mtxIdAttr;
reg = 0;
inputForm = GX_XF_TEX_FORM_AB11;
inputRow = 5;
switch (src) {
case GX_TG_POS:
inputRow = 0;
inputForm = GX_XF_TEX_FORM_ABC1;
break;
case GX_TG_NRM:
inputRow = 1;
inputForm = GX_XF_TEX_FORM_ABC1;
break;
case GX_TG_BINRM:
inputRow = 3;
inputForm = GX_XF_TEX_FORM_ABC1;
break;
case GX_TG_TANGENT:
inputRow = 4;
inputForm = GX_XF_TEX_FORM_ABC1;
break;
case GX_TG_COLOR0:
inputRow = 2;
break;
case GX_TG_COLOR1:
inputRow = 2;
break;
case GX_TG_TEX0:
inputRow = 5;
break;
case GX_TG_TEX1:
inputRow = 6;
break;
case GX_TG_TEX2:
inputRow = 7;
break;
case GX_TG_TEX3:
inputRow = 8;
break;
case GX_TG_TEX4:
inputRow = 9;
break;
case GX_TG_TEX5:
inputRow = 10;
break;
case GX_TG_TEX6:
inputRow = 11;
break;
case GX_TG_TEX7:
inputRow = 12;
form = 0;
row = 5;
switch (src_param) {
case GX_TG_POS: row = 0; form = 1; break;
case GX_TG_NRM: row = 1; form = 1; break;
case GX_TG_BINRM: row = 3; form = 1; break;
case GX_TG_TANGENT: row = 4; form = 1; break;
case GX_TG_COLOR0: row = 2; break;
case GX_TG_COLOR1: row = 2; break;
case GX_TG_TEX0: row = 5; break;
case GX_TG_TEX1: row = 6; break;
case GX_TG_TEX2: row = 7; break;
case GX_TG_TEX3: row = 8; break;
case GX_TG_TEX4: row = 9; break;
case GX_TG_TEX5: row = 10; break;
case GX_TG_TEX6: row = 11; break;
case GX_TG_TEX7: row = 12; break;
case GX_TG_TEXCOORD0: bumprow; break;
case GX_TG_TEXCOORD1: bumprow; break;
case GX_TG_TEXCOORD2: bumprow; break;
case GX_TG_TEXCOORD3: bumprow; break;
case GX_TG_TEXCOORD4: bumprow; break;
case GX_TG_TEXCOORD5: bumprow; break;
case GX_TG_TEXCOORD6: bumprow; break;
default:
break;
}
switch (type) {
case GX_TG_NRM:
GX_SET_REG(reg, GX_XF_TEX_PROJ_ST, GX_XF_TEX_PROJTYPE_ST,
GX_XF_TEX_PROJTYPE_END); // 2x4 projection
GX_SET_REG(reg, inputForm, GX_XF_TEX_INPUTFORM_ST, GX_XF_TEX_INPUTFORM_END);
GX_SET_REG(reg, GX_TG_POS, GX_XF_TEX_TEXGENTYPE_ST, GX_XF_TEX_TEXGENTYPE_END);
GX_SET_REG(reg, inputRow, GX_XF_TEX_SRCROW_ST, GX_XF_TEX_SRCROW_END);
switch (func)
{
case GX_TG_MTX2x4:
SET_REG_FIELD(reg, 1, 1, 0);
SET_REG_FIELD(reg, 1, 2, form);
SET_REG_FIELD(reg, 3, 4, 0);
SET_REG_FIELD(reg, 5, 7, row);
break;
case GX_TG_POS:
GX_SET_REG(reg, GX_XF_TEX_PROJ_STQ, GX_XF_TEX_PROJTYPE_ST,
GX_XF_TEX_PROJTYPE_END); // 3x4 projection
GX_SET_REG(reg, inputForm, GX_XF_TEX_INPUTFORM_ST, GX_XF_TEX_INPUTFORM_END);
GX_SET_REG(reg, GX_TG_POS, GX_XF_TEX_TEXGENTYPE_ST, GX_XF_TEX_TEXGENTYPE_END);
GX_SET_REG(reg, inputRow, GX_XF_TEX_SRCROW_ST, GX_XF_TEX_SRCROW_END);
case GX_TG_MTX3x4:
SET_REG_FIELD(reg, 1, 1, 1);
SET_REG_FIELD(reg, 1, 2, form);
SET_REG_FIELD(reg, 3, 4, 0);
SET_REG_FIELD(reg, 5, 7, row);
break;
case GX_TG_BUMP0:
case GX_TG_BUMP1:
case GX_TG_BUMP2:
case GX_TG_BUMP3:
case GX_TG_BUMP4:
case GX_TG_BUMP5:
case GX_TG_BUMP6:
case GX_TG_BUMP7:
GX_SET_REG(reg, GX_XF_TEX_PROJ_ST, GX_XF_TEX_PROJTYPE_ST,
GX_XF_TEX_PROJTYPE_END); // 2x4 projection
GX_SET_REG(reg, inputForm, GX_XF_TEX_INPUTFORM_ST, GX_XF_TEX_INPUTFORM_END);
GX_SET_REG(reg, GX_TG_NRM, GX_XF_TEX_TEXGENTYPE_ST, GX_XF_TEX_TEXGENTYPE_END);
GX_SET_REG(reg, inputRow, GX_XF_TEX_SRCROW_ST, GX_XF_TEX_SRCROW_END);
GX_SET_REG(reg, src - GX_TG_TEXCOORD0, GX_XF_TEX_BUMPSRCTEX_ST, GX_XF_TEX_BUMPSRCTEX_END);
GX_SET_REG(reg, type - GX_TG_BUMP0, GX_XF_TEX_BUMPSRCLIGHT_ST, GX_XF_TEX_BUMPSRCLIGHT_END);
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
SET_REG_FIELD(reg, 1, 1, 0);
SET_REG_FIELD(reg, 1, 2, form);
SET_REG_FIELD(reg, 3, 4, 1);
SET_REG_FIELD(reg, 5, 7, row);
SET_REG_FIELD(reg, 3, 12, src_param - 12);
SET_REG_FIELD(reg, 3, 15, func - 2);
break;
case GX_TG_SRTG:
GX_SET_REG(reg, GX_XF_TEX_PROJ_ST, GX_XF_TEX_PROJTYPE_ST,
GX_XF_TEX_PROJTYPE_END); // 2x4 projection
GX_SET_REG(reg, inputForm, GX_XF_TEX_INPUTFORM_ST, GX_XF_TEX_INPUTFORM_END);
if (src == GX_TG_COLOR0) {
GX_SET_REG(reg, GX_XF_TG_CLR0, GX_XF_TEX_TEXGENTYPE_ST, GX_XF_TEX_TEXGENTYPE_END);
SET_REG_FIELD(reg, 1, 1, 0);
SET_REG_FIELD(reg, 1, 2, form);
if (src_param == GX_TG_COLOR0) {
SET_REG_FIELD(reg, 3, 4, 2);
} else {
GX_SET_REG(reg, GX_XF_TG_CLR1, GX_XF_TEX_TEXGENTYPE_ST, GX_XF_TEX_TEXGENTYPE_END);
SET_REG_FIELD(reg, 3, 4, 3);
}
GX_SET_REG(reg, 2, GX_XF_TEX_SRCROW_ST, GX_XF_TEX_SRCROW_END);
SET_REG_FIELD(reg, 5, 7, 2);
break;
default:
break;
}
GX_XF_LOAD_REG(GX_XF_REG_TEX0 + id, reg);
GX_WRITE_XF_REG(dst_coord + 0x40, reg);
reg = 0;
GX_SET_REG(reg, dualTexMtxIdx - 0x40, GX_XF_MTXIDX0_GEOM_ST, GX_XF_MTXIDX0_GEOM_END);
GX_SET_REG(reg, normalize, GX_XF_DUALTEX_NORMALISE_ST, GX_XF_DUALTEX_NORMALISE_END);
GX_XF_LOAD_REG(GX_XF_REG_DUALTEX0 + id, reg);
switch (id) {
case GX_TEXCOORD0:
GX_SET_REG(gx->matIdxA, texMtxIdx, GX_XF_MTXIDX0_TEX0_ST, GX_XF_MTXIDX0_TEX0_END);
break;
case GX_TEXCOORD1:
GX_SET_REG(gx->matIdxA, texMtxIdx, GX_XF_MTXIDX0_TEX1_ST, GX_XF_MTXIDX0_TEX1_END);
break;
case GX_TEXCOORD2:
GX_SET_REG(gx->matIdxA, texMtxIdx, GX_XF_MTXIDX0_TEX2_ST, GX_XF_MTXIDX0_TEX2_END);
break;
case GX_TEXCOORD3:
GX_SET_REG(gx->matIdxA, texMtxIdx, GX_XF_MTXIDX0_TEX3_ST, GX_XF_MTXIDX0_TEX3_END);
break;
case GX_TEXCOORD4:
GX_SET_REG(gx->matIdxB, texMtxIdx, GX_XF_MTXIDX1_TEX4_ST, GX_XF_MTXIDX1_TEX4_END);
break;
case GX_TEXCOORD5:
GX_SET_REG(gx->matIdxB, texMtxIdx, GX_XF_MTXIDX1_TEX5_ST, GX_XF_MTXIDX1_TEX5_END);
break;
case GX_TEXCOORD6:
GX_SET_REG(gx->matIdxB, texMtxIdx, GX_XF_MTXIDX1_TEX6_ST, GX_XF_MTXIDX1_TEX6_END);
break;
default:
GX_SET_REG(gx->matIdxB, texMtxIdx, GX_XF_MTXIDX1_TEX7_ST, GX_XF_MTXIDX1_TEX7_END);
break;
SET_REG_FIELD(reg, 6, 0, pt_texmtx - 64);
SET_REG_FIELD(reg, 1, 8, normalize);
GX_WRITE_XF_REG(dst_coord + 0x50, reg);
switch (dst_coord) {
case GX_TEXCOORD0: SET_REG_FIELD(gx->matIdxA, 6, 6, mtx); break;
case GX_TEXCOORD1: SET_REG_FIELD(gx->matIdxA, 6, 12, mtx); break;
case GX_TEXCOORD2: SET_REG_FIELD(gx->matIdxA, 6, 18, mtx); break;
case GX_TEXCOORD3: SET_REG_FIELD(gx->matIdxA, 6, 24, mtx); break;
case GX_TEXCOORD4: SET_REG_FIELD(gx->matIdxB, 6, 0, mtx); break;
case GX_TEXCOORD5: SET_REG_FIELD(gx->matIdxB, 6, 6, mtx); break;
case GX_TEXCOORD6: SET_REG_FIELD(gx->matIdxB, 6, 12, mtx); break;
default: SET_REG_FIELD(gx->matIdxB, 6, 18, mtx); break;
}
__GXSetMatrixIndex(id + 1);
mtxIdAttr = dst_coord + 1;
__GXSetMatrixIndex(mtxIdAttr);
}
void GXSetNumTexGens(u8 count) {
GX_SET_REG(gx->genMode, count, GX_BP_GENMODE_NUMTEX_ST, GX_BP_GENMODE_NUMTEX_END);
GX_XF_LOAD_REG(GX_XF_REG_NUMTEX, count);
void GXSetNumTexGens(u8 nTexGens) {
SET_REG_FIELD(gx->genMode, 4, 0, nTexGens);
GX_WRITE_XF_REG(0x3F, nTexGens);
gx->dirtyState |= GX_DIRTY_GEN_MODE;
}
+18 -17
View File
@@ -16,7 +16,7 @@ fapGm_HIO_c g_HIO;
/* 8002306C-800231BC .text __ct__11fapGm_HIO_cFv */
fapGm_HIO_c::fapGm_HIO_c() {
field_0x05 = 1;
mUsingHostIO = true;
#if VERSION > VERSION_DEMO
if (mDoMain::developmentMode) {
@@ -45,25 +45,26 @@ fapGm_HIO_c::fapGm_HIO_c() {
field_0x1a = 0;
field_0x1b = 1;
field_0x1c = 0;
mFbWidth = 0x280;
mEfbHeight = 0x1e0;
mFbWidth = 640;
mEfbHeight = 480;
field_0x30 = 0;
field_0x20.r = 0xff;
field_0x20.g = 0xff;
field_0x20.b = 0xff;
field_0x20.a = 0xff;
mColor = JUtility::TColor(0xff, 0xff, 0xff, 0xff);
mTriggerThreshLo = 0.9f;
mTriggerThreshHi = 0.6f;
field_0x3c = JUtility::TColor(0xff, 0x96, 0x00, 0xff);
field_0x40 = JUtility::TColor(0xff, 0x78, 0x00, 0xff);
field_0x44 = JUtility::TColor(0x00, 0x00, 0x00, 0xff);
field_0x48 = JUtility::TColor(0x00, 0x00, 0x00, 0xff);
field_0x4c = 0;
field_0x4e = 10;
field_0x54 = 0x1b;
field_0x50 = 0;
field_0x52 = 0;
field_0x56 = 0x82;
mLetterTopColor = JUtility::TColor(0xff, 0x96, 0x00, 0xff);
mLetterBottomColor = JUtility::TColor(0xff, 0x78, 0x00, 0xff);
mLetterTopShadowColor = JUtility::TColor(0x00, 0x00, 0x00, 0xff);
mLetterBottomShadowColor = JUtility::TColor(0x00, 0x00, 0x00, 0xff);
mLetterPositionX = 0;
mLetterPositionY = 10;
mLetterFontSize = 27;
mLineSpacing = 0;
mLetterSpacing = 0;
mBackgroundAlpha = 130;
}
/* 800231BC-800231E4 .text fapGm_After__Fv */
+1 -1
View File
@@ -1127,7 +1127,7 @@ void* fopAcM_fastCreateItem(cXyz* pos, int i_itemNo, int roomNo, csXyz* angle, c
#if VERSION > VERSION_DEMO
/* 80027254-80027280 .text stealItem_CB__FPv */
BOOL stealItem_CB(void* actor) {
static BOOL stealItem_CB(void* actor) {
if (actor) {
daItem_c* item = (daItem_c*)actor;
item->scale.setall(1.0f);
+2 -1
View File
@@ -3202,8 +3202,9 @@ u32 fopMsgM_msgDataProc_c::stringLength() {
int r7 = sp18[sp14];
#if VERSION <= VERSION_JPN
sp18[sp14] = (int)((f32)sp0C + 0.5f);
sp18[sp14] = (int)(sp0C + 0.5f);
#else
// Fakematch? Why the (f64) cast?
sp18[sp14] = (int)((f32)(f64)sp0C + 0.5f);
#endif
if (!r27) {
+71 -60
View File
@@ -159,15 +159,15 @@ int mDoExt_bpkAnm::init(J3DMaterialTable* i_matTable, J3DAnmColor* i_bpk, BOOL i
if (i_anmPlay) {
int attribute;
#if VERSION == VERSION_JPN
#if VERSION == VERSION_JPN
if (i_attribute < 0) {
attribute = mpAnm->getAttribute();
} else {
attribute = i_attribute;
}
#else
#else
attribute = i_attribute;
#endif
#endif
if (initPlay(mpAnm->getFrameMax(), attribute, i_rate, i_startF, i_endF, i_modify) == 0) {
return 0;
}
@@ -260,7 +260,7 @@ int mDoExt_btkAnm::init(J3DMaterialTable* i_matTable, J3DAnmTextureSRTKey* i_btk
J3DMaterial* material = i_matTable->getMaterialNodePointer(materialId);
u8 texMtxId = mpAnm->getUpdateTexMtxID(i);
if (texMtxId != 0xFF) {
J3DTexMtx* texMtx = material->getTexGenBlock()->getTexMtx(texMtxId);
J3DTexMtx* texMtx = material->getTexMtx(texMtxId);
if (!texMtx) {
texMtx = new J3DTexMtx();
}
@@ -286,15 +286,15 @@ int mDoExt_btkAnm::init(J3DMaterialTable* i_matTable, J3DAnmTextureSRTKey* i_btk
if (i_anmPlay) {
int attribute;
#if VERSION == VERSION_JPN
#if VERSION == VERSION_JPN
if (i_attribute < 0) {
attribute = mpAnm->getAttribute();
} else {
attribute = i_attribute;
}
#else
#else
attribute = i_attribute;
#endif
#endif
if (initPlay(mpAnm->getFrameMax(), attribute, i_rate, i_startF, i_endF, i_modify) == 0) {
return 0;
}
@@ -365,15 +365,15 @@ int mDoExt_brkAnm::init(J3DMaterialTable* i_matTable, J3DAnmTevRegKey* i_brk, BO
if (i_anmPlay) {
int attribute;
#if VERSION == VERSION_JPN
#if VERSION == VERSION_JPN
if (i_attribute < 0) {
attribute = mpAnm->getAttribute();
} else {
attribute = i_attribute;
}
#else
#else
attribute = i_attribute;
#endif
#endif
if (initPlay(mpAnm->getFrameMax(), attribute, i_rate, i_startF, i_endF, i_modify) == 0) {
return 0;
}
@@ -405,15 +405,15 @@ int mDoExt_bvaAnm::init(J3DModel* i_model, J3DAnmVisibilityFull* i_bva, BOOL i_a
}
if (i_anmPlay) {
int attribute;
#if VERSION == VERSION_JPN
#if VERSION == VERSION_JPN
if (i_attribute < 0) {
attribute = mpAnm->getAttribute();
} else {
attribute = i_attribute;
}
#else
#else
attribute = i_attribute;
#endif
#endif
if (initPlay(mpAnm->getFrameMax(), attribute, i_rate, i_startF, i_endF, i_modify) == 0) {
return 0;
}
@@ -442,15 +442,15 @@ int mDoExt_bckAnm::init(J3DModelData* i_modelData, J3DAnmTransform* i_bck, BOOL
}
if (i_anmPlay) {
int attribute;
#if VERSION == VERSION_JPN
#if VERSION == VERSION_JPN
if (i_attribute < 0) {
attribute = mpAnm->getAttribute();
} else {
attribute = i_attribute;
}
#else
#else
attribute = i_attribute;
#endif
#endif
if (initPlay(mpAnm->getFrameMax(), attribute, i_rate, i_startF, i_endF, i_modify) == 0) {
return 0;
}
@@ -850,9 +850,9 @@ JKRExpHeap* gameHeap;
JKRExpHeap* mDoExt_createGameHeap(u32 heapSize, JKRHeap* i_heap) {
JUT_ASSERT(VERSION_SELECT(2036, 2035, 2050, 2050), gameHeap == NULL || heapSize == 0);
gameHeap = JKRCreateExpHeap(heapSize, i_heap, true);
#if VERSION > VERSION_DEMO
#if VERSION > VERSION_DEMO
gameHeap->setAllocationMode(JKRExpHeap::ALLOC_MODE_1);
#endif
#endif
return gameHeap;
}
@@ -935,9 +935,9 @@ JKRExpHeap* archiveHeap;
JKRExpHeap* mDoExt_createArchiveHeap(u32 heapSize, JKRHeap* i_heap) {
JUT_ASSERT(VERSION_SELECT(2173, 2222, 2237, 2237), archiveHeap == NULL || heapSize == 0);
archiveHeap = JKRCreateExpHeap(heapSize, i_heap, true);
#if VERSION > VERSION_DEMO
#if VERSION > VERSION_DEMO
archiveHeap->setAllocationMode(JKRExpHeap::ALLOC_MODE_1);
#endif
#endif
return archiveHeap;
}
@@ -955,25 +955,28 @@ s32 mDoExt_getSafeArchiveHeapSize() {
}
#endif
#if VERSION == VERSION_DEMO
static u8 archiveHeapGroupID;
#endif
JKRHeap* mDoExt_SaveCurrentHeap;
#if VERSION == VERSION_DEMO
static u8 archiveHeapGroupID;
static u8 SolidHeapGroupID;
#endif
/* 80011AB4-80011ABC .text mDoExt_getArchiveHeap__Fv */
JKRExpHeap* mDoExt_getArchiveHeap() {
#if VERSION == VERSION_DEMO
#if VERSION == VERSION_DEMO
JKRExpHeap* heap = archiveHeap;
heap->changeGroupID(archiveHeapGroupID++);
if (archiveHeapGroupID >= 200) {
archiveHeapGroupID = 0;
}
return heap;
#else
#else
return archiveHeap;
#endif
#endif
}
static void dummy() {
@@ -993,9 +996,9 @@ JKRSolidHeap* mDoExt_createSolidHeap(u32 i_size, JKRHeap* i_heap, u32 i_alignmen
u32 size;
JKRSolidHeap* createdHeap;
#if VERSION == VERSION_DEMO
#if VERSION == VERSION_DEMO
u8 groupID = i_heap->changeGroupID(SolidHeapGroupID);
#endif
#endif
if (i_size == 0 || i_size == -1) {
createdHeap = JKRSolidHeap::create(-1, i_heap, false);
@@ -1010,15 +1013,15 @@ JKRSolidHeap* mDoExt_createSolidHeap(u32 i_size, JKRHeap* i_heap, u32 i_alignmen
createdHeap = JKRSolidHeap::create(size, i_heap, false);
}
#if VERSION == VERSION_DEMO
#if VERSION == VERSION_DEMO
i_heap->changeGroupID(groupID);
#endif
#endif
if (createdHeap != NULL) {
createdHeap->setErrorFlag(true);
}
#if VERSION == VERSION_DEMO
#if VERSION == VERSION_DEMO
if (createdHeap == NULL) {
// "mDoExt_createMaxSolidHeap: Failed to allocate a %fK solid heap. Contiguous free space=%fK Remaining free space=%f\n"
OSReport_Warning(
@@ -1034,7 +1037,7 @@ JKRSolidHeap* mDoExt_createSolidHeap(u32 i_size, JKRHeap* i_heap, u32 i_alignmen
} else {
SolidHeapGroupID = SolidHeapGroupID < 199 ? (u8)(SolidHeapGroupID + 1) : 0;
}
#endif
#endif
return createdHeap;
}
@@ -1055,9 +1058,9 @@ JKRSolidHeap* mDoExt_createSolidHeapToCurrent(u32 i_size, JKRHeap* i_parent, u32
if (!resultHeap) {
return NULL;
}
#if VERSION > VERSION_DEMO
#if VERSION > VERSION_DEMO
JUT_ASSERT(VERSION_SELECT(0, 2530, 2545, 2545), OSGetCurrentThread() == &mainThread);
#endif
#endif
JUT_ASSERT(VERSION_SELECT(2441, 2531, 2546, 2546), mDoExt_SaveCurrentHeap == NULL);
mDoExt_SaveCurrentHeap = JKRGetCurrentHeap();
mDoExt_setCurrentHeap(resultHeap);
@@ -1102,9 +1105,9 @@ JKRHeap* mDoExt_getCurrentHeap() {
/* 80011DDC-80011E98 .text mDoExt_restoreCurrentHeap__Fv */
void mDoExt_restoreCurrentHeap() {
#if VERSION > VERSION_DEMO
#if VERSION > VERSION_DEMO
JUT_ASSERT(VERSION_SELECT(0, 2739, 2754, 2754), OSGetCurrentThread() == &mainThread);
#endif
#endif
JUT_ASSERT(VERSION_SELECT(2647, 2740, 2755, 2755), mDoExt_SaveCurrentHeap != NULL);
mDoExt_SaveCurrentHeap->becomeCurrentHeap();
mDoExt_SaveCurrentHeap = NULL;
@@ -1136,6 +1139,7 @@ void mDoExt_MtxCalcAnmBlendTbl::calc(u16 jnt_no) {
Quaternion quat3;
mAnmRatio->getAnmTransform()->getTransform(jnt_no, &info2);
JMAEulerToQuat(info2.mRotation.x, info2.mRotation.y, info2.mRotation.z, &quat1);
f32 f30 = mAnmRatio[0].getRatio();
quat3 = quat1;
for (int i = 1; i < mNum; i++) {
J3DAnmTransform* transform = mAnmRatio[i].getAnmTransform();
@@ -1143,7 +1147,7 @@ void mDoExt_MtxCalcAnmBlendTbl::calc(u16 jnt_no) {
J3DTransformInfo info3;
transform->getTransform(jnt_no, &info3);
f32 ratio = mAnmRatio[i].getRatio();
f32 f30 = 1.0f - ratio;
f30 = 1.0f - ratio;
JMAEulerToQuat(info3.mRotation.x, info3.mRotation.y, info3.mRotation.z, &quat2);
JMAQuatLerp(&quat1, &quat2, ratio, &quat3);
quat1 = quat3;
@@ -1316,7 +1320,7 @@ mDoExt_McaMorf::mDoExt_McaMorf(J3DModelData* modelData, mDoExt_McaMorfCallBack1_
J3DTransformInfo* info = mpTransformInfo;
Quaternion* quat = mpQuat;
J3DModelData* r23 = mpModel->getModelData();
u16 jointNum = r23->getJointNum();
int jointNum = r23->getJointNum();
for (int i = 0; i < jointNum; i++) {
*info = r23->getJointNodePointer(i)->getTransformInfo();
JMAEulerToQuat(info->mRotation.x, info->mRotation.y, info->mRotation.z, quat);
@@ -1604,7 +1608,7 @@ mDoExt_McaMorf2::mDoExt_McaMorf2(J3DModelData* modelData, mDoExt_McaMorfCallBack
J3DTransformInfo* info = mpTransformInfo;
Quaternion* quat = mpQuat;
J3DModelData* r23 = mpModel->getModelData();
u16 jointNum = r23->getJointNum();
int jointNum = r23->getJointNum();
for (int i = 0; i < jointNum; i++) {
*info = r23->getJointNodePointer(i)->getTransformInfo();
JMAEulerToQuat(info->mRotation.x, info->mRotation.y, info->mRotation.z, quat);
@@ -1954,9 +1958,9 @@ void mDoExt_3DlineMat0_c::setMaterial() {
{0xC0, 0x00, 0x00},
};
j3dSys.reinitGX();
#if VERSION > VERSION_JPN
#if VERSION > VERSION_JPN
GXSetNumIndStages(0);
#endif
#endif
dKy_setLight_again();
GXClearVtxDesc();
@@ -2220,9 +2224,9 @@ void mDoExt_3DlineMat1_c::setMaterial() {
{0xC0, 0x00, 0x00},
};
j3dSys.reinitGX();
#if VERSION > VERSION_JPN
#if VERSION > VERSION_JPN
GXSetNumIndStages(0);
#endif
#endif
dKy_setLight_again();
GXClearVtxDesc();
@@ -2341,7 +2345,7 @@ void mDoExt_3DlineMat1_c::update(u16 i_segs, f32 i_size, GXColor& i_color, u16 i
delta = delta.outprod(eyeDelta);
f32 scale = delta.abs();
if (scale != 0.0f) {
scale = i_size / scale;
scale = r_size / scale;
delta *= scale;
}
@@ -2531,9 +2535,9 @@ void mDoExt_3DlineMatSortPacket::draw() {
lineMat->draw();
lineMat = lineMat->mpNextLineMat;
} while (lineMat);
#if VERSION > VERSION_JPN
#if VERSION > VERSION_JPN
J3DShape::resetVcdVatCache();
#endif
#endif
}
/* 800165E4-8001683C .text mDoExt_initFontCommon__FPP7JUTFontPP7ResFONTP7JKRHeapPCcP10JKRArchiveUcUlUl */
@@ -2549,11 +2553,11 @@ void mDoExt_initFontCommon(JUTFont** p_font, ResFONT** p_resfont, JKRHeap* p_hea
JUT_ASSERT(VERSION_SELECT(6544, 6637, 6651, 6651), mDoExt_resfont != NULL);
if (param_6 == 0) {
#if VERSION <= VERSION_JPN
#if VERSION <= VERSION_JPN
u32 temp = (param_8 + 0x40) * param_7;
#else
#else
u32 temp = (((param_8+0x1F) & ~0x1F) + 0x40) * param_7;
#endif
#endif
JUTCacheFont* cacheFont = new(p_heap, 0) JUTCacheFont(*p_resfont, temp, p_heap);
if (cacheFont->isValid()) {
*p_font = cacheFont;
@@ -2576,18 +2580,29 @@ void mDoExt_initFontCommon(JUTFont** p_font, ResFONT** p_resfont, JKRHeap* p_hea
JUT_ASSERT(VERSION_SELECT(6575, 6668, 6685, 6685), mDoExt_font != NULL);
}
#if VERSION == VERSION_DEMO
JUTFont* mDoExt_font0;
ResFONT* mDoExt_resfont0;
JUTFont* mDoExt_font1;
s32 mDoExt_font0_getCount;
s32 mDoExt_font1_getCount;
ResFONT* mDoExt_resfont0;
ResFONT* mDoExt_resfont1;
#else
JUTFont* mDoExt_font0;
s32 mDoExt_font0_getCount;
ResFONT* mDoExt_resfont0;
JUTFont* mDoExt_font1;
s32 mDoExt_font1_getCount;
ResFONT* mDoExt_resfont1;
#endif
#if VERSION <= VERSION_JPN
void mDoExt_initFont0() {
/* Nonmatching */
static const char* fontdata[] = {
static const char* const fontdata[] = {
"rock_24_20_4i1.bfn",
"rock_e_24_20_4i.bfn",
};
u8 r30 = g_msgDHIO.field_0x08;
const u8 r30 = g_msgDHIO.field_0x08;
mDoExt_initFontCommon(&mDoExt_font0, &mDoExt_resfont0, mDoExt_getZeldaHeap(), fontdata[r30], dComIfGp_getFontArchive(), r30, 0xB4, 0x800);
}
#else
@@ -2598,10 +2613,6 @@ void mDoExt_initFont0() {
}
#endif
JUTFont* mDoExt_font1;
ResFONT* mDoExt_resfont1;
s32 mDoExt_font1_getCount;
#if VERSION <= VERSION_JPN
void mDoExt_initFont1() {
mDoExt_initFontCommon(&mDoExt_font1, &mDoExt_resfont1, mDoExt_getZeldaHeap(), "rodb_16_11_4i.bfn", dComIfGp_getRubyArchive(), 1, 1, 0x8000);
@@ -2640,11 +2651,11 @@ void mDoExt_removeMesgFont() {
mDoExt_font0 = NULL;
if (mDoExt_resfont0) {
#if VERSION <= VERSION_JPN
#if VERSION <= VERSION_JPN
if (g_msgDHIO.field_0x08 == 0) {
JKRFileLoader::removeResource(mDoExt_resfont0, NULL);
} else
#endif
#endif
{
JKRHeap::free(mDoExt_resfont0, NULL);
}
@@ -2657,12 +2668,12 @@ void mDoExt_removeMesgFont() {
#if VERSION > VERSION_JPN
/* 80016A1C-80016A7C .text mDoExt_initFont1__Fv */
void mDoExt_initFont1() {
#if VERSION <= VERSION_JPN
#if VERSION <= VERSION_JPN
mDoExt_initFontCommon(&mDoExt_font1, &mDoExt_resfont1, mDoExt_getZeldaHeap(), "rodb_16_11_4i.bfn", dComIfGp_getRubyArchive(), 1, 1, 0x8000);
#else
#else
static const char fontdata[] = "hyrule.bfn";
mDoExt_initFontCommon(&mDoExt_font1, &mDoExt_resfont1, mDoExt_getZeldaHeap(), fontdata, dComIfGp_getRubyArchive(), 1, 1, 0x8000);
#endif
#endif
}
#endif