diff --git a/configure.py b/configure.py index 900efc0d1..2f13894ce 100644 --- a/configure.py +++ b/configure.py @@ -342,7 +342,7 @@ config.libs = [ Object(NonMatching, "d/d_map.cpp"), Object(Matching, "d/d_com_inf_game.cpp", extra_cflags=['-sym off']), Object(Matching, "d/d_com_lib_game.cpp"), - Object(NonMatching, "d/d_com_static.cpp"), + Object(Matching, "d/d_com_static.cpp", extra_cflags=['-sym off']), Object(NonMatching, "d/d_lib.cpp"), Object(Matching, "d/d_save.cpp", extra_cflags=['-pragma "nosyminline on"']), Object(Matching, "d/d_save_init.cpp"), diff --git a/include/d/actor/d_a_canon.h b/include/d/actor/d_a_canon.h index 43f424fd0..8b64771d6 100644 --- a/include/d/actor/d_a_canon.h +++ b/include/d/actor/d_a_canon.h @@ -36,6 +36,8 @@ public: void PadMove(); void CreateHeap(); void GameInfo2DDraw(); + + static daCanon_c* canon_p; public: /* Place member variables here */ diff --git a/include/d/actor/d_a_dai.h b/include/d/actor/d_a_dai.h index 2a305815f..d549920b6 100644 --- a/include/d/actor/d_a_dai.h +++ b/include/d/actor/d_a_dai.h @@ -30,8 +30,8 @@ public: mNowDaizaNum = 0; mNowItemNum = 0; } - static void getMaxDaiza(); - static void getDaizaSetItemNum(); + static s8 getMaxDaiza(); + static s8 getDaizaSetItemNum(); static s8 mNowDaizaNum; static s8 mNowItemNum; diff --git a/include/d/actor/d_a_dai_item.h b/include/d/actor/d_a_dai_item.h index 834a72ab1..15f5c80f9 100644 --- a/include/d/actor/d_a_dai_item.h +++ b/include/d/actor/d_a_dai_item.h @@ -12,7 +12,7 @@ class J3DNode; class daStandItem_c : public fopAc_ac_c { public: - void getItemNo() const {} + int getItemNo() const { return mItemNo; } bool _delete(); void CreateHeap(); diff --git a/include/d/actor/d_a_lod_bg.h b/include/d/actor/d_a_lod_bg.h index 310223c37..f841a44a1 100644 --- a/include/d/actor/d_a_lod_bg.h +++ b/include/d/actor/d_a_lod_bg.h @@ -6,6 +6,7 @@ class J3DModelData; class mDoDvdThd_mountXArchive_c; class JKRArchive; +class JKRExpHeap; class daLodbg_c : public fopAc_ac_c { public: @@ -20,6 +21,9 @@ public: void execCreateWait(); void execReadWait(); void execDeleteWait(); + + static s32 sObjectCount; + static JKRExpHeap* sLocalHeap; public: /* 0x290 */ int (daLodbg_c::*mExecFunc)(); diff --git a/include/d/actor/d_a_npc_bs1.h b/include/d/actor/d_a_npc_bs1.h index 2afcdeef3..2615bbdb8 100644 --- a/include/d/actor/d_a_npc_bs1.h +++ b/include/d/actor/d_a_npc_bs1.h @@ -22,13 +22,14 @@ public: s8 getBackboneJntNum() { return m_backbone_jnt_num; } s16 getBackbone_x() { return mJntCtrl.getBackbone_x(); } s16 getBackbone_y() { return mJntCtrl.getBackbone_y(); } - void getBuyItem() {} - void getBuyItemMax() {} int getHeadJntNum() { return m_head_jnt_num; } s16 getHead_x() { return mJntCtrl.getHead_x(); } s16 getHead_y() { return mJntCtrl.getHead_y(); } - void getPayRupee() {} - void incAttnSetCount() {} + void incAttnSetCount() { + if (m72F != 0xFF) { + m72F += 1; + } + } void setAction(ActionFunc func, void* arg) { if (mCurrActionFunc != func) { if (mCurrActionFunc) { @@ -41,10 +42,14 @@ public: } } void setAttentionBasePos(cXyz value) { m718 = value;} - void setBuyItem(u8) {} - void setBuyItemMax(u8) {} void setEyePos(cXyz other) { eyePos = other; } - void setPayRupee(s16) {} + + static u8 getBuyItemMax() { return m_tag_buy_item_max; } + static void setBuyItemMax(u8 count) { m_tag_buy_item_max = count; } + static u8 getBuyItem() { return m_tag_buy_item; } + static void setBuyItem(u8 count) { m_tag_buy_item = count; } + static s16 getPayRupee() { return m_tag_pay_rupee; } + static void setPayRupee(s16 count) { m_tag_pay_rupee = count; } s16 XyEventCB(int); BOOL initTexPatternAnm(bool); diff --git a/include/d/actor/d_a_npc_kg1.h b/include/d/actor/d_a_npc_kg1.h index e42d0aa59..f70366b0d 100644 --- a/include/d/actor/d_a_npc_kg1.h +++ b/include/d/actor/d_a_npc_kg1.h @@ -29,10 +29,12 @@ public: void wait_action(); void clr_seq_flag(); void getMsg(); - void next_msgStatus(unsigned long*); - void anmAtr(unsigned short); + void next_msgStatus(u32*); + void anmAtr(u16); void setAnm(); + static const u8 m_highscore; + public: /* 0x6C4 */ J3DModel* m6C4; /* 0x6C8 */ mDoExt_btpAnm mBtpAnm; diff --git a/include/d/actor/d_a_npc_kg2.h b/include/d/actor/d_a_npc_kg2.h index 7fff18548..009855d73 100644 --- a/include/d/actor/d_a_npc_kg2.h +++ b/include/d/actor/d_a_npc_kg2.h @@ -7,21 +7,21 @@ class daNpc_Kg2_c : public fopAc_ac_c { public: void getAttentionBasePos() {} void getEyePos() {} - void seStart(unsigned long) {} + void seStart(u32) {} void setAction(int (daNpc_Kg2_c::*)(void*), void*) {} - void setCanonGameResult(unsigned char) {} + void setCanonGameResult(u8) {} void set_mtx(); void initTexPatternAnm(bool); void playTexPatternAnm(); - void setAnm(signed char, float); + void setAnm(s8, f32); void subAnm(); - void chkAttention(cXyz, short); + void chkAttention(cXyz, s16); void eventOrder(); void checkOrder(); void getMsg(); - void next_msgStatus(unsigned long*); - void anmAtr(unsigned short); + void next_msgStatus(u32*); + void anmAtr(u16); void setAttention(); void lookBack(); void CreateHeap(); @@ -48,6 +48,7 @@ public: } static s8 canon_game_result; + static daNpc_Kg2_c* l_kg2_pointer; public: /* Place member variables here */ diff --git a/include/d/actor/d_a_npc_sarace.h b/include/d/actor/d_a_npc_sarace.h index 7b8006017..c2d3a4397 100644 --- a/include/d/actor/d_a_npc_sarace.h +++ b/include/d/actor/d_a_npc_sarace.h @@ -14,13 +14,13 @@ public: void initTexPatternAnm(bool); void playTexPatternAnm(); - void setAnm(signed char, float); - void chkAttention(cXyz, short); + void setAnm(s8, f32); + void chkAttention(cXyz, s16); void eventOrder(); void checkOrder(); - void next_msgStatus(unsigned long*); + void next_msgStatus(u32*); void getMsg(); - void anmAtr(unsigned short); + void anmAtr(u16); void CreateInit(); void setAttention(); void lookBack(); @@ -35,6 +35,9 @@ public: BOOL _delete(); s32 _create(); void CreateHeap(); + + static s32 ship_race_rupee; + static s32 ship_race_result; public: /* Place member variables here */ diff --git a/include/d/actor/d_a_obj_light.h b/include/d/actor/d_a_obj_light.h index cbe8bd259..357c2d05e 100644 --- a/include/d/actor/d_a_obj_light.h +++ b/include/d/actor/d_a_obj_light.h @@ -16,8 +16,8 @@ namespace daObjLight { void draw_fire(); void exe_fire(); void delete_fire(); - void now_event(short); - void set_event(short); + void now_event(s16); + void set_event(s16); void exe_event(); void set_mtx(); void renew_angle(); @@ -26,11 +26,16 @@ namespace daObjLight { BOOL _execute(); BOOL _draw(); - static void renew_light_angle(); - static void get_light_angle(); - static void get_light_dif_angle(); - static void set_light_dif_angle_LOD(short); - static void set_light_dif_angle_FRRS(short); + static BOOL renew_light_angle(); + static s16 get_light_angle(); + static s16 get_light_dif_angle(); + static BOOL set_light_dif_angle_LOD(s16); + static BOOL set_light_dif_angle_FRRS(s16); + + static s16 M_S_light_angle; + static u32 M_S_pre_set_frame_LOD; + static u32 M_S_pre_set_frame_FRRS; + static u8 M_S_lod_access; public: /* Place member variables here */ diff --git a/include/d/actor/d_a_obj_pirateship.h b/include/d/actor/d_a_obj_pirateship.h index 264f3bf7a..a188fb7d7 100644 --- a/include/d/actor/d_a_obj_pirateship.h +++ b/include/d/actor/d_a_obj_pirateship.h @@ -4,7 +4,7 @@ #include "f_op/f_op_actor.h" namespace daObjPirateship { - static f32 getShipOffsetY(s16*, s16*, f32); + f32 getShipOffsetY(s16*, s16*, f32); class Act_c : public fopAc_ac_c { public: diff --git a/include/d/actor/d_a_obj_roten.h b/include/d/actor/d_a_obj_roten.h index 624dc4aa0..390f1a029 100644 --- a/include/d/actor/d_a_obj_roten.h +++ b/include/d/actor/d_a_obj_roten.h @@ -14,7 +14,7 @@ public: void CreateHeap(); void CreateInit(); - static void getCreateCount(); + static int getCreateCount(); public: /* Place member variables here */ diff --git a/include/d/actor/d_a_salvage.h b/include/d/actor/d_a_salvage.h index 270b14c4f..aac904094 100644 --- a/include/d/actor/d_a_salvage.h +++ b/include/d/actor/d_a_salvage.h @@ -4,13 +4,13 @@ #include "f_op/f_op_actor.h" #include "d/actor/d_a_oship.h" -class daSalvage_control_c; +class dSalvage_control_c; class daSalvage_c : public fopAc_ac_c { public: void checkRegist(int) {} void checkUsed(int) {} - void clrFlag(int, unsigned char) {} + void clrFlag(int, u8) {} void debug_print() {} void debug_print_reg() {} void getAlphaP(int) {} @@ -33,10 +33,10 @@ public: void init_one(int) {} void isValidSalvageId() {} void setDrawMode(int, int) {} - void setFlag(int, unsigned char) {} - void setNowAlpha(int, unsigned char) {} + void setFlag(int, u8) {} + void setNowAlpha(int, u8) {} void setPos(int, cXyz) {} - void setSRoomNo(signed char) {} + void setSRoomNo(s8) {} void setSalvageId(int) {} void CreateHeap(); @@ -57,7 +57,7 @@ public: void end_salvage(); void checkDistance(); void checkXZDistance(); - void getDistance(int, float*); + void getDistance(int, f32*); void send_agb(); void debug_print2(); BOOL _draw(); @@ -65,7 +65,7 @@ public: void isEffectKind(int); void debugDraw(); - static void init_room(signed char); + static void init_room(s8); static void init() { mNowRoomNo = -1; @@ -73,10 +73,10 @@ public: mSalvageId = -1; } - static s8 mNowRoomNo; - static daSalvage_control_c* mTagData_p; - static s32 mSalvageId; static const u16 m_savelabel[]; + static dSalvage_control_c* mTagData_p; + static s8 mNowRoomNo; + static s32 mSalvageId; public: /* Place member variables here */ diff --git a/include/d/actor/d_a_tag_light.h b/include/d/actor/d_a_tag_light.h index 7f127cf77..3c0037f70 100644 --- a/include/d/actor/d_a_tag_light.h +++ b/include/d/actor/d_a_tag_light.h @@ -54,6 +54,16 @@ namespace daTagLight { BOOL _execute(); void set_material(J3DMaterial*, unsigned char); BOOL _draw(); + + static const f32 M_box_x_min; + static const f32 M_box_x_max; + static const f32 M_box_y_min; + static const f32 M_box_y_max; + static const f32 M_box_z_min; + static const f32 M_box_z_max; + static const f32 M_cone_lower; + static const f32 M_cone_upper; + static const f32 M_cone_r; public: /* Place member variables here */ diff --git a/include/d/actor/d_a_windmill.h b/include/d/actor/d_a_windmill.h index eaa9d275f..253307874 100644 --- a/include/d/actor/d_a_windmill.h +++ b/include/d/actor/d_a_windmill.h @@ -20,6 +20,8 @@ public: void set_at(); void set_co(); BOOL _draw(); + + static const s16 m_max_rot_speed[]; public: /* Place member variables here */ diff --git a/include/d/actor/d_a_ykgr.h b/include/d/actor/d_a_ykgr.h index b677bd86c..96980734d 100644 --- a/include/d/actor/d_a_ykgr.h +++ b/include/d/actor/d_a_ykgr.h @@ -3,6 +3,7 @@ #include "f_op/f_op_actor.h" +class dPath; class JPABaseEmitter; class JPABaseParticle; @@ -21,11 +22,13 @@ public: } }; - static JPABaseEmitter* m_emitter; static u8 m_flag; static u8 m_alpha_flag; static u8 m_alpha; - + static f32 m_aim_rate; + static dPath* m_path; + static JPABaseEmitter* m_emitter; + inline s32 _create(); inline BOOL _delete(); inline BOOL _draw(); diff --git a/include/d/d_shop.h b/include/d/d_shop.h index f1dc39927..5ae09e933 100644 --- a/include/d/d_shop.h +++ b/include/d/d_shop.h @@ -120,7 +120,7 @@ public: BOOL isHide() { return mbIsHide; } s16 getItemDataIdx() { return mItemSetListGlobalIdx; } void setItemDataIdx(s16 idx) { mItemSetListGlobalIdx = idx; } - void setItemSum(s16) {} + void setItemSum(s16 count) { mNumItems = count; } void init() {} void createItem(int, int); diff --git a/src/d/actor/d_a_npc_bs1.cpp b/src/d/actor/d_a_npc_bs1.cpp index e84a5f50b..c31e5e2d0 100644 --- a/src/d/actor/d_a_npc_bs1.cpp +++ b/src/d/actor/d_a_npc_bs1.cpp @@ -241,9 +241,7 @@ static BOOL nodeCallBack_Bs(J3DNode* node, int value) { offset.z = 0.0f; MtxPosition(&offset, &pos); i_this->setEyePos(pos); - if (i_this->m72F != (u8)-1) { - i_this->m72F += 1; - } + i_this->incAttnSetCount(); } else if (jntNo == i_this->getBackboneJntNum()) { mDoMtx_XrotM(*calc_mtx, i_this->getBackbone_y()); mDoMtx_ZrotM(*calc_mtx, -i_this->getBackbone_x()); @@ -505,7 +503,7 @@ static void daNpc_Bs1_setPayRupee(int unknownParam1, int unknownParam2) { int r5 = maxRupees - rupee; int paymentTotal = cLib_maxLimit(unknownParam1 * unknownParam2, r5); - daNpc_Bs1_c::m_tag_pay_rupee = paymentTotal; + daNpc_Bs1_c::setPayRupee(paymentTotal); } /* 000010EC-00001F7C .text next_msgStatus__11daNpc_Bs1_cFPUl */ @@ -549,8 +547,8 @@ u16 daNpc_Bs1_c::next_msgStatus(u32* pMsgNo) { case 0xF9E: m83C = dComIfGp_getMessageRupee(); int buyMax = daNpc_Bs1_getBuyItemMax(m83C, m840); - m_tag_buy_item_max = buyMax; - m_tag_buy_item = buyMax; + setBuyItemMax(buyMax); + setBuyItem(buyMax); if(buyMax != 0) { *pMsgNo += 1; break; @@ -561,8 +559,8 @@ u16 daNpc_Bs1_c::next_msgStatus(u32* pMsgNo) { case 0xFD4: m83C = dComIfGp_getMessageRupee(); buyMax = daNpc_Bs1_getBuyItemMax(m83C, m840); - m_tag_buy_item_max = buyMax; - m_tag_buy_item = buyMax; + setBuyItemMax(buyMax); + setBuyItem(buyMax); if(buyMax != 0) { *pMsgNo = 0xF9F; break; @@ -599,7 +597,7 @@ u16 daNpc_Bs1_c::next_msgStatus(u32* pMsgNo) { case 0xF97: case 0xF9C: case 0xFD2: - daNpc_Bs1_setPayRupee(m83C, m_tag_buy_item); + daNpc_Bs1_setPayRupee(m83C, getBuyItem()); *pMsgNo += 1; break; @@ -644,15 +642,15 @@ u16 daNpc_Bs1_c::next_msgStatus(u32* pMsgNo) { idx = 3; break; } - dComIfGp_setItemRupeeCount(m_tag_pay_rupee); - dComIfGp_setItemBeastNumCount(idx, -m_tag_buy_item); + dComIfGp_setItemRupeeCount(getPayRupee()); + dComIfGp_setItemBeastNumCount(idx, -getBuyItem()); if(*pMsgNo == 0xFD3) { u8 r3 = dComIfGs_getEventReg(0x7F0F); - r3 += m_tag_buy_item; + r3 += getBuyItem(); u8 temp = cLib_maxLimit(r3, 0xF); - dComIfGs_setEventReg(0x7F0F, temp); + if(temp < 0xA) { *pMsgNo = 0xFD5; break; @@ -912,7 +910,7 @@ u16 daNpc_Bs1_c::next_msgStatus(u32* pMsgNo) { execItemGet(itemNo); if(mType == 0) { - if(dComIfGs_getEventReg(0x86FF)) { + if(dComIfGs_getEventReg(0x86FF) != 0) { *pMsgNo = 0xF4C; break; } @@ -1004,7 +1002,8 @@ u16 daNpc_Bs1_c::next_msgStatus(u32* pMsgNo) { case 0xF4C: case 0xF4E: int points = dComIfGs_getEventReg(0x86FF); - points = points + 1 > 0xFF ? 0xFF : points + 1; + points += 1; + points = cLib_maxLimit(points, 0xFF); dComIfGs_setEventReg(0x86FF, points); if(points > 60) { @@ -1033,6 +1032,7 @@ u16 daNpc_Bs1_c::next_msgStatus(u32* pMsgNo) { break; default: msgStatus = fopMsgStts_MSG_ENDS_e; + break; } return msgStatus; @@ -1235,6 +1235,7 @@ u32 daNpc_Bs1_c::getMsg() { } msgNo = 0x2F5E; + break; } if(dComIfGs_isEventBit(0x1F10)) { @@ -1582,7 +1583,7 @@ void daNpc_Bs1_c::createShopList() { } } - mShopItems.mNumItems = 3; + mShopItems.setItemSum(3); mShopItems.setItemSetDataList(mpItemSetList); for(int i = 0; i < 3; i++) { mShopItems.mSelectedItemIdx = i; diff --git a/src/d/actor/d_a_player_main.cpp b/src/d/actor/d_a_player_main.cpp index 5586c303d..bbb036227 100644 --- a/src/d/actor/d_a_player_main.cpp +++ b/src/d/actor/d_a_player_main.cpp @@ -27,6 +27,7 @@ #include "d/actor/d_a_bomb.h" #include "d/actor/d_a_ship.h" #include "d/actor/d_a_boko.h" +#include "d/actor/d_a_npc_sarace.h" #include "SSystem/SComponent/c_counter.h" #include "m_Do/m_Do_graphic.h" @@ -2966,7 +2967,6 @@ void daPy_lk_c::checkFallCode() { /* 80120724-80120BBC .text startRestartRoom__9daPy_lk_cFUlifi */ BOOL daPy_lk_c::startRestartRoom(u32 param_1, int eventInfoIdx, f32 param_3, int i_point) { - /* Nonmatching - npc_sarace */ if (!checkNoResetFlg0(daPyFlg0_UNK4000) && (i_point != 0 || dComIfGp_event_compulsory(this))) { mDemo.setOriginalDemoType(); if (i_point == 0) { @@ -2978,7 +2978,7 @@ BOOL daPy_lk_c::startRestartRoom(u32 param_1, int eventInfoIdx, f32 param_3, int if (dComIfGp_getMiniGameType() == 1) { dComIfGp_setNextStage("sea", 1, 48); mDoAud_seStart(JA_SE_FORCE_BACK); - // daNpc_Sarace_c::ship_race_result = 3; + daNpc_Sarace_c::ship_race_result = 3; mTinkleShieldTimer = 0; return TRUE; } else { diff --git a/src/d/d_com_static.cpp b/src/d/d_com_static.cpp index 1b5c70266..167781037 100644 --- a/src/d/d_com_static.cpp +++ b/src/d/d_com_static.cpp @@ -5,17 +5,27 @@ #include "dolphin/types.h" #include "d/d_com_inf_game.h" +#include "d/d_salvage.h" +#include "d/d_procname.h" +#include "d/actor/d_a_lod_bg.h" #include "d/actor/d_a_agb.h" #include "d/actor/d_a_agbsw0.h" #include "d/actor/d_a_npc_kamome.h" #include "d/actor/d_a_npc_os.h" #include "d/actor/d_a_npc_md.h" +#include "d/actor/d_a_npc_sarace.h" +#include "d/actor/d_a_canon.h" #include "d/actor/d_a_arrow.h" #include "d/actor/d_a_ib.h" #include "d/actor/d_a_item.h" +#include "d/actor/d_a_tag_light.h" #include "d/actor/d_a_obj_movebox.h" +#include "d/actor/d_a_windmill.h" +#include "d/actor/d_a_npc_kg1.h" +#include "d/actor/d_a_npc_kg2.h" #include "d/actor/d_a_obj_pirateship.h" #include "d/actor/d_a_steam_tag.h" +#include "d/actor/d_a_ykgr.h" #include "d/actor/d_a_tag_kb_item.h" #include "d/actor/d_a_tag_waterlevel.h" #include "d/actor/d_a_title.h" @@ -25,9 +35,15 @@ #include "d/actor/d_a_dai.h" #include "d/actor/d_a_obj_roten.h" #include "d/actor/d_a_dai_item.h" -#include "d/d_procname.h" +#include "d/actor/d_a_npc_ji1.h" +#include "d/actor/d_a_npc_bs1.h" +#include "SSystem/SComponent/c_counter.h" static Vec dummy_3569; + +s32 daLodbg_c::sObjectCount; +JKRExpHeap* daLodbg_c::sLocalHeap; + u8 daSteamTag_c::mEmitterNum; /* 8005662C-80056638 .text init__12daSteamTag_cFv */ @@ -35,6 +51,13 @@ void daSteamTag_c::init() { mEmitterNum = 0; } +u8 daYkgr_c::m_flag; +u8 daYkgr_c::m_alpha_flag; +u8 daYkgr_c::m_alpha; +f32 daYkgr_c::m_aim_rate; +dPath* daYkgr_c::m_path; +JPABaseEmitter* daYkgr_c::m_emitter; + /* 80056638-800566F0 .text getShipOffsetY__15daObjPirateshipFPsPsf */ f32 daObjPirateship::getShipOffsetY(s16* param_1, s16* param_2, f32 param_3) { if (*param_1 > 0x4000 || *param_1 < -0x4000) { @@ -100,37 +123,70 @@ const u16 daSalvage_c::m_savelabel[] = { 0x3C10, 0x3C08, 0x3C04, 0x3C02, }; +dSalvage_control_c* daSalvage_c::mTagData_p; +s8 daSalvage_c::mNowRoomNo; +s32 daSalvage_c::mSalvageId; /* 80056760-80056790 .text init_room__11daSalvage_cFSc */ -void daSalvage_c::init_room(signed char) { - /* Nonmatching */ +void daSalvage_c::init_room(s8 roomNo) { + if (mTagData_p) { + mTagData_p->init_room(roomNo); + } } +s16 daObjLight::Act_c::M_S_light_angle; +u32 daObjLight::Act_c::M_S_pre_set_frame_LOD; +u32 daObjLight::Act_c::M_S_pre_set_frame_FRRS; +u8 daObjLight::Act_c::M_S_lod_access; + /* 80056790-800567F8 .text renew_light_angle__Q210daObjLight5Act_cFv */ -void daObjLight::Act_c::renew_light_angle() { - /* Nonmatching */ +BOOL daObjLight::Act_c::renew_light_angle() { + M_S_lod_access = 1; + if (dKy_daynight_check() == 1) { + if (dComIfGs_isEventBit(0x1C02) == 1) { + set_light_dif_angle_LOD(get_light_dif_angle() + 0x80); + return TRUE; + } + } + return FALSE; } /* 800567F8-80056824 .text get_light_angle__Q210daObjLight5Act_cFv */ -void daObjLight::Act_c::get_light_angle() { - /* Nonmatching */ +s16 daObjLight::Act_c::get_light_angle() { + return get_light_dif_angle() + 0xF6C2; } /* 80056824-8005682C .text get_light_dif_angle__Q210daObjLight5Act_cFv */ -void daObjLight::Act_c::get_light_dif_angle() { - /* Nonmatching */ +s16 daObjLight::Act_c::get_light_dif_angle() { + return M_S_light_angle; } /* 8005682C-80056860 .text set_light_dif_angle_LOD__Q210daObjLight5Act_cFs */ -void daObjLight::Act_c::set_light_dif_angle_LOD(short) { - /* Nonmatching */ +BOOL daObjLight::Act_c::set_light_dif_angle_LOD(s16 r3) { + if (g_Counter.mCounter0 != M_S_pre_set_frame_FRRS) { + M_S_light_angle = r3; + M_S_pre_set_frame_LOD = g_Counter.mCounter0; + return TRUE; + } else { + M_S_pre_set_frame_LOD = g_Counter.mCounter0; + return FALSE; + } } /* 80056860-800568A8 .text set_light_dif_angle_FRRS__Q210daObjLight5Act_cFs */ -void daObjLight::Act_c::set_light_dif_angle_FRRS(short) { - /* Nonmatching */ +BOOL daObjLight::Act_c::set_light_dif_angle_FRRS(s16 r3) { + if (g_Counter.mCounter0 != M_S_pre_set_frame_LOD && g_Counter.mCounter0-1 == M_S_pre_set_frame_FRRS) { + M_S_light_angle = r3; + M_S_pre_set_frame_FRRS = g_Counter.mCounter0; + return TRUE; + } else { + M_S_pre_set_frame_FRRS = *(s32*)&g_Counter.mCounter0; // fakematch + return FALSE; + } } +s8 daDai_c::mNowDaizaNum; +s8 daDai_c::mNowItemNum; const u16 daDai_c::m_savelabel[] = { 0xF8FF, 0xF7FF, 0xF6FF, 0xF5FF, @@ -155,13 +211,13 @@ const u16 daDai_c::m_savelabel[] = { }; /* 800568A8-800568B0 .text getMaxDaiza__7daDai_cFv */ -void daDai_c::getMaxDaiza() { - /* Nonmatching */ +s8 daDai_c::getMaxDaiza() { + return mNowDaizaNum; } /* 800568B0-800568B8 .text getDaizaSetItemNum__7daDai_cFv */ -void daDai_c::getDaizaSetItemNum() { - /* Nonmatching */ +s8 daDai_c::getDaizaSetItemNum() { + return mNowItemNum; } bool daNpc_Os_c::m_playerRoom[3] = { false, false, false }; @@ -180,6 +236,14 @@ s16 daNpc_Md_c::getMaxFlyingTimer() { return 15*30; } +s32 daNpc_Sarace_c::ship_race_rupee; +s32 daNpc_Sarace_c::ship_race_result; + +daCanon_c* daCanon_c::canon_p; + +s8 daNpc_Kg2_c::canon_game_result; +daNpc_Kg2_c* daNpc_Kg2_c::l_kg2_pointer; + u8 daArrow_c::m_keep_type; /* 800568C0-800568C8 .text getKeepType__9daArrow_cFv */ @@ -240,10 +304,38 @@ void daIball_c::remove_old() { } /* 80056A18-80056AD0 .text getCreateCount__13daObj_Roten_cFv */ -void daObj_Roten_c::getCreateCount() { - /* Nonmatching */ +int daObj_Roten_c::getCreateCount() { + u8 r30 = 0; + int r29 = 0; + for (; r30 <= 0xB; r30++) { + if (dComIfGs_isGetItemReserve(r30)) { + r29++; + } else if (r30 == 0) { + r29++; + } + } + + if (r29 > 9) { + return 4; + } else if (r29 > 6) { + return 3; + } else if (r29 > 3) { + return 2; + } else { + return 1; + } } +const f32 daTagLight::Act_c::M_box_x_min = -50.0f; +const f32 daTagLight::Act_c::M_box_x_max = 50.0f; +const f32 daTagLight::Act_c::M_box_y_min = 0.0f; +const f32 daTagLight::Act_c::M_box_y_max = 100.0f; +const f32 daTagLight::Act_c::M_box_z_min = -50.0f; +const f32 daTagLight::Act_c::M_box_z_max = 50.0f; +const f32 daTagLight::Act_c::M_cone_lower = 0.0f; +const f32 daTagLight::Act_c::M_cone_upper = 100.0f; +const f32 daTagLight::Act_c::M_cone_r = 50.0f; + const s16 daObjMovebox::Act_c::M_dir_base[4] = { 0x0000, 0x4000, @@ -251,6 +343,13 @@ const s16 daObjMovebox::Act_c::M_dir_base[4] = { 0xC000, }; +const s16 daWindMill_c::m_max_rot_speed[] = { + 0x09C4, + 0x09C4, +}; + +const u8 daNpc_Kg1_c::m_highscore = 20; + /* 80056AD0-80056AFC .text kb_dig__13daTagKbItem_cFP10fopAc_ac_c */ void daTagKbItem_c::kb_dig(fopAc_ac_c* i_actor) { field_0x299 = 1; @@ -283,11 +382,9 @@ void daTagKbItem_c::dig_main() { if (field_0x2a0 != 0xFF) { angle.y = cM_rndF((f32)0x7FFE); s8 roomNo = current.roomNo; - f32 speedY = cM_rndFX(5.0f) + 60.0f; - f32 speedF = cM_rndF(5.0f); daItem_c* item = (daItem_c*)fopAcM_fastCreateItem( &mpActor->current.pos, field_0x2a0, roomNo, &angle, - &scale, speedF, speedY, -6.0f, field_0x29c + &scale, cM_rndF(5.0f), 60.0f + cM_rndFX(5.0f), -6.0f, field_0x29c ); if (item) { fopAcM_OnStatus(item, fopAcStts_UNK4000_e); @@ -321,10 +418,36 @@ void daTitle_proc_c::daTitle_Kirakira_Sound_flag_on() { } /* 80056CCC-80056DE0 .text daiItemNodeCallBack__13daStandItem_cFP7J3DNodei */ -BOOL daStandItem_c::daiItemNodeCallBack(J3DNode*, int) { - /* Nonmatching */ +BOOL daStandItem_c::daiItemNodeCallBack(J3DNode* node, int param_1) { + if (!param_1) { + 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) == PROC_STANDITEM) { + daStandItem_c* i_this = (daStandItem_c*)userArea; + mDoMtx_stack_c::copy(model->getAnmMtx(jntNo)); + switch (i_this->getItemNo()) { + case 0x92: + mDoMtx_stack_c::XrotM(i_this->m6B4); + break; + case 0x95: + if (jntNo == 0) { + mDoMtx_copy(mDoMtx_stack_c::get(), i_this->m630); + } else if (jntNo == 1) { + 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; } +s8 daNpc_Ji1_c::game_life_point; + bool daNpc_kam_c::m_hyoi_kamome; u8 daNpc_Bs1_c::m_tag_buy_item_max;