summaryrefslogtreecommitdiff
path: root/src/d/d_com_static.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/d/d_com_static.cpp')
-rw-r--r--src/d/d_com_static.cpp171
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;