diff options
| author | LagoLunatic <LagoLunatic@users.noreply.github.com> | 2024-04-13 15:16:15 -0400 |
|---|---|---|
| committer | LagoLunatic <LagoLunatic@users.noreply.github.com> | 2024-04-13 15:16:15 -0400 |
| commit | 133df570d9034e598ff06e53c90d0490e2b11991 (patch) | |
| tree | 477c033551e43a08609d94c0bd365f4c00159b1d /src/d/d_com_static.cpp | |
| parent | 282756e6e8f51d6792404ccb9921cefe3b546c2e (diff) | |
d_com_static OK
Diffstat (limited to 'src/d/d_com_static.cpp')
| -rw-r--r-- | src/d/d_com_static.cpp | 171 |
1 files changed, 147 insertions, 24 deletions
diff --git a/src/d/d_com_static.cpp b/src/d/d_com_static.cpp index 1b5c7026..16778103 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; |
