diff --git a/configure.py b/configure.py index f535fe304..25c293028 100755 --- a/configure.py +++ b/configure.py @@ -460,12 +460,12 @@ config.libs = [ Object(NonMatching, "d/d_a_obj.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_a_obj_tribox_static.cpp"), Object(Matching, "d/d_a_ship_static.cpp"), - Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_a_boko_static.cpp"), + Object(Matching, "d/d_a_boko_static.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_a_bomb_static.cpp"), Object(Matching, "d/d_a_branch_static.cpp"), Object(Matching, "d/d_a_mgameboard_static.cpp"), Object(Matching, "d/d_a_itembase_static.cpp"), - Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_a_item_static.cpp"), + Object(Matching, "d/d_a_item_static.cpp"), Object(Matching, "d/d_a_shop_item_static.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_a_race_item_static.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_a_leaflift_static.cpp"), @@ -489,7 +489,7 @@ config.libs = [ Object(NonMatching, "d/d_kankyo_rain.cpp"), Object(Matching, "d/d_kankyo_demo.cpp"), Object(NonMatching, "d/d_detect.cpp"), - Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_vibration.cpp"), + Object(Matching, "d/d_vibration.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_vib_pattern.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_attention.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_att_dist.cpp"), @@ -555,11 +555,11 @@ config.libs = [ Object(NonMatching, "d/d_auction_screen.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_place_name.cpp"), Object(NonMatching, "d/d_camera.cpp"), - Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_envse.cpp"), + Object(Matching, "d/d_envse.cpp"), Object(NonMatching, "d/d_file_error.cpp"), Object(NonMatching, "d/d_file_select.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_gameover.cpp"), - Object(NonMatching, "d/d_kankyo.cpp"), + Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_kankyo.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_kyeff.cpp"), Object(Matching, "d/d_kyeff2.cpp"), Object(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d/d_ky_thunder.cpp"), @@ -1343,7 +1343,7 @@ config.libs = [ Rel("f_pc_profile_lst", [Object(Matching, "f_pc/f_pc_profile_lst.cpp")]), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_agbsw0", extra_cflags=['-pragma "nosyminline on"']), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_andsw0"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_andsw2"), + ActorRel(Matching, "d_a_andsw2"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_att", extra_cflags=['-pragma "nosyminline on"']), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_bflower", extra_cflags=['-pragma "nosyminline on"']), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_bita", extra_cflags=['-pragma "nosyminline on"']), @@ -1354,7 +1354,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_demo_dk"), ActorRel(NonMatching, "d_a_demo_kmm"), ActorRel(NonMatching, "d_a_door10"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_dr"), + ActorRel(Matching, "d_a_dr"), ActorRel(NonMatching, "d_a_dr2"), ActorRel(NonMatching, "d_a_ep"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_floor"), @@ -1368,14 +1368,14 @@ config.libs = [ ActorRel(NonMatching, "d_a_ki"), ActorRel(NonMatching, "d_a_knob00"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_kui"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_kytag00"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_kytag01"), + ActorRel(Matching, "d_a_kytag00"), + ActorRel(Matching, "d_a_kytag01"), ActorRel(NonMatching, "d_a_kytag02"), - ActorRel(NonMatching, "d_a_kytag03"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_kytag04"), + ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_kytag03"), + ActorRel(Matching, "d_a_kytag04"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_kytag05"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_kytag06"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_kytag07"), + ActorRel(Matching, "d_a_kytag07"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_lamp" , extra_cflags=['-sym off']), ActorRel(NonMatching, "d_a_lod_bg"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_lwood"), @@ -1385,7 +1385,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_msw"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_mtoge"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_AjavW", extra_cflags=['-pragma "nosyminline on"']), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_Ygush00", extra_cflags=['-pragma "nosyminline on"']), + ActorRel(Matching, "d_a_obj_Ygush00", extra_cflags=['-pragma "nosyminline on"']), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_akabe"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_barrel", extra_cflags=['-pragma "nosyminline on"']), ActorRel(NonMatching, "d_a_obj_barrel2"), @@ -1396,7 +1396,7 @@ config.libs = [ ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_doguu", extra_cflags=['-pragma "nosyminline on"']), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_doguu_demo"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_gryw00", extra_cflags=['-pragma "nosyminline on"']), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_hfuck1", extra_cflags=['-pragma "nosyminline on"']), + ActorRel(Matching, "d_a_obj_hfuck1", extra_cflags=['-pragma "nosyminline on"']), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_hole", extra_cflags=['-pragma "nosyminline on"']), ActorRel(NonMatching, "d_a_obj_ice"), ActorRel(NonMatching, "d_a_obj_ikada"), @@ -1432,7 +1432,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_sbox"), ActorRel(NonMatching, "d_a_sk"), ActorRel(NonMatching, "d_a_sk2"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_spotbox"), + ActorRel(Matching, "d_a_spotbox"), ActorRel(NonMatching, "d_a_ssk"), ActorRel(NonMatching, "d_a_stone"), ActorRel(NonMatching, "d_a_stone2"), @@ -1441,17 +1441,17 @@ config.libs = [ ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_swtdoor"), ActorRel(NonMatching, "d_a_tag_attention"), ActorRel(NonMatching, "d_a_tag_ba1"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_tag_event"), + ActorRel(Matching, "d_a_tag_event"), ActorRel(Matching, "d_a_tag_evsw", extra_cflags=['-pragma "nosyminline on"']), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_tag_ghostship"), ActorRel(NonMatching, "d_a_tag_hint"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_tag_kb_item"), + ActorRel(Matching, "d_a_tag_kb_item"), ActorRel(Equivalent, "d_a_tag_kk1", extra_cflags=['-pragma "nosyminline on"']), # weak func order ActorRel(NonMatching, "d_a_tag_light"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_tag_msg"), ActorRel(NonMatching, "d_a_tag_photo"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_tag_waterlevel"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_tama", extra_cflags=['-pragma "nosyminline on"']), + ActorRel(Matching, "d_a_tama", extra_cflags=['-pragma "nosyminline on"']), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_tbox", extra_cflags=['-pragma "nosyminline on"']), ActorRel(Matching, "d_a_tpota", extra_cflags=['-pragma "nosyminline on"']), ActorRel(NonMatching, "d_a_tsubo"), @@ -1537,7 +1537,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_bmdfoot"), ActorRel(NonMatching, "d_a_bmdhand"), ActorRel(NonMatching, "d_a_bo"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_boss_item"), + ActorRel(Matching, "d_a_boss_item"), ActorRel(NonMatching, "d_a_bpw"), ActorRel(NonMatching, "d_a_bst"), ActorRel(NonMatching, "d_a_btd"), @@ -1553,7 +1553,7 @@ config.libs = [ ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_fan", extra_cflags=['-pragma "nosyminline on"']), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_fganon", extra_cflags=['-pragma "nosyminline on"']), ActorRel(NonMatching, "d_a_fgmahou"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_fire", extra_cflags=['-pragma "nosyminline on"']), + ActorRel(Matching, "d_a_fire", extra_cflags=['-pragma "nosyminline on"']), ActorRel(NonMatching, "d_a_fm"), ActorRel(NonMatching, "d_a_gm"), ActorRel(NonMatching, "d_a_gnd"), @@ -1573,7 +1573,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_mant"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_mbdoor"), ActorRel(NonMatching, "d_a_mgameboard"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_mmusic"), + ActorRel(Matching, "d_a_mmusic"), ActorRel(NonMatching, "d_a_mo2"), ActorRel(NonMatching, "d_a_mozo"), ActorRel(NonMatching, "d_a_mt"), @@ -1647,10 +1647,10 @@ config.libs = [ ActorRel(NonMatching, "d_a_obj_buoyrace"), ActorRel(NonMatching, "d_a_obj_correct"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_dmgroom", extra_cflags=['-pragma "nosyminline on"']), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_dragonhead", extra_cflags=['-pragma "nosyminline on"']), + ActorRel(Matching, "d_a_obj_dragonhead", extra_cflags=['-pragma "nosyminline on"']), ActorRel(NonMatching, "d_a_obj_drift"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_eayogn"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_ebomzo", extra_cflags=['-pragma "nosyminline on"']), + ActorRel(Matching, "d_a_obj_ebomzo", extra_cflags=['-pragma "nosyminline on"']), ActorRel(NonMatching, "d_a_obj_ekskz"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_eskban", extra_cflags=['-pragma "nosyminline on"']), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_ferris", extra_cflags=['-pragma "nosyminline on"']), @@ -1670,7 +1670,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_obj_hami3"), ActorRel(NonMatching, "d_a_obj_hami4"), ActorRel(Equivalent, "d_a_obj_hat"), # weak func order - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_hbrf1"), + ActorRel(Matching, "d_a_obj_hbrf1"), ActorRel(NonMatching, "d_a_obj_hcbh"), ActorRel(Equivalent, "d_a_obj_hha"), # weak func order ActorRel(NonMatching, "d_a_obj_hlift"), @@ -1691,11 +1691,11 @@ config.libs = [ ActorRel(NonMatching, "d_a_obj_msdan2"), ActorRel(NonMatching, "d_a_obj_msdan_sub"), ActorRel(NonMatching, "d_a_obj_msdan_sub2"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_mtest", extra_cflags=['-pragma "nosyminline on"']), + ActorRel(Matching, "d_a_obj_mtest", extra_cflags=['-pragma "nosyminline on"']), ActorRel(NonMatching, "d_a_obj_nest"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_ojtree"), ActorRel(NonMatching, "d_a_obj_ospbox"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_paper", extra_cflags=['-pragma "nosyminline on"']), + ActorRel(Matching, "d_a_obj_paper", extra_cflags=['-pragma "nosyminline on"']), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_pbka"), ActorRel(NonMatching, "d_a_obj_pfall"), ActorRel(NonMatching, "d_a_obj_plant"), @@ -1704,12 +1704,12 @@ config.libs = [ ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_smplbg", extra_cflags=['-pragma "nosyminline on"']), ActorRel(NonMatching, "d_a_obj_tapestry"), ActorRel(NonMatching, "d_a_obj_tntrap"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_tower"), + ActorRel(Matching, "d_a_obj_tower"), ActorRel(NonMatching, "d_a_obj_trap"), ActorRel(NonMatching, "d_a_obj_tribox"), ActorRel(NonMatching, "d_a_obj_try"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_usovmc"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_vfan", extra_cflags=[ '-pragma "nosyminline on"']), + ActorRel(Matching, "d_a_obj_vfan", extra_cflags=[ '-pragma "nosyminline on"']), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_vgnfd", extra_cflags=[ '-pragma "nosyminline on"']), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_vmc", extra_cflags=["-sym off"]), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_obj_vmsdz"), @@ -1730,13 +1730,13 @@ config.libs = [ ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_shutter", extra_cflags=['-pragma "nosyminline on"']), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_shutter2"), ActorRel(NonMatching, "d_a_st"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_steam_tag", extra_cflags=['-pragma "nosyminline on"']), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_swattack", extra_cflags=['-pragma "nosyminline on"']), + ActorRel(Matching, "d_a_steam_tag", extra_cflags=['-pragma "nosyminline on"']), + ActorRel(Matching, "d_a_swattack", extra_cflags=['-pragma "nosyminline on"']), ActorRel(Matching, "d_a_switem", extra_cflags=['-pragma "nosyminline on"']), ActorRel(NonMatching, "d_a_swpropeller"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_swtact"), ActorRel(Matching, "d_a_tag_etc"), - ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_tag_island"), + ActorRel(Matching, "d_a_tag_island"), ActorRel(NonMatching, "d_a_tag_kf1"), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_tag_ret", extra_cflags=['-pragma "nosyminline on"']), ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_tag_volcano"), diff --git a/include/SSystem/SComponent/c_m3d_g_aab.h b/include/SSystem/SComponent/c_m3d_g_aab.h index f1e89556b..b4ece9707 100644 --- a/include/SSystem/SComponent/c_m3d_g_aab.h +++ b/include/SSystem/SComponent/c_m3d_g_aab.h @@ -53,12 +53,12 @@ public: VECScale(pOut, pOut, 0.5f); } void ClearForMinMax() { - mMin.z = 1000000000.0f; - mMin.y = 1000000000.0f; - mMin.x = 1000000000.0f; - mMax.z = -1000000000.0f; - mMax.y = -1000000000.0f; - mMax.x = -1000000000.0f; + mMin.z = G_CM3D_F_INF; + mMin.y = G_CM3D_F_INF; + mMin.x = G_CM3D_F_INF; + mMax.z = -G_CM3D_F_INF; + mMax.y = -G_CM3D_F_INF; + mMax.x = -G_CM3D_F_INF; } void ClearForMinMaxY() { mMin.y = G_CM3D_F_INF; diff --git a/include/SSystem/SComponent/c_m3d_g_sph.h b/include/SSystem/SComponent/c_m3d_g_sph.h index b4a642d6f..9a84623d8 100644 --- a/include/SSystem/SComponent/c_m3d_g_sph.h +++ b/include/SSystem/SComponent/c_m3d_g_sph.h @@ -21,9 +21,14 @@ public: cM3dGSph() {} virtual ~cM3dGSph() {} - void SetC(const cXyz&); - void SetC(f32, f32, f32) {} - void SetR(f32); +#if VERSION == VERSION_DEMO + void SetC(const cXyz& p) { mCenter = p; } + void SetR(f32 r) { mRadius = r; } +#else + void SetC(const cXyz& p); + void SetR(f32 r); +#endif + void SetC(f32, f32, f32) {} // TODO void Set(const cM3dGSphS & src) { SetC(src.mCenter); SetR(src.mRadius); diff --git a/include/d/actor/d_a_boss_item.h b/include/d/actor/d_a_boss_item.h index 4df13746b..bdf7c31c7 100644 --- a/include/d/actor/d_a_boss_item.h +++ b/include/d/actor/d_a_boss_item.h @@ -2,9 +2,14 @@ #define D_A_BOSS_ITEM_H #include "f_op/f_op_actor.h" +#include "f_op/f_op_actor_mng.h" class bossitem_class : public fopAc_ac_c { /* 0x290 */ u8 m290[0x298 - 0x290]; }; +namespace daBossItem_prm { + inline int getStage(bossitem_class* actor) { return fopAcM_GetParam(actor) & 0xFF; } +} + #endif /* D_A_BOSS_ITEM_H */ diff --git a/include/d/actor/d_a_npc_btsw2.h b/include/d/actor/d_a_npc_btsw2.h index 8bccbd7b5..54967c8c4 100644 --- a/include/d/actor/d_a_npc_btsw2.h +++ b/include/d/actor/d_a_npc_btsw2.h @@ -14,7 +14,7 @@ public: ACTION_ENDING = -1, }; - void getAttentionBasePos() {} + cXyz& getAttentionBasePos() { return mAttPos; } void setAction(ActionFunc func, void* arg) { if (mCurrActionFunc != func) { if (mCurrActionFunc) { diff --git a/include/d/actor/d_a_npc_ji1.h b/include/d/actor/d_a_npc_ji1.h index f25b3ee92..bfbe403f0 100644 --- a/include/d/actor/d_a_npc_ji1.h +++ b/include/d/actor/d_a_npc_ji1.h @@ -177,8 +177,8 @@ public: /* 0x418 */ mDoExt_btkAnm field_0x418; /* 0x42C */ f32 field_0x42C; /* 0x430 */ JPABaseEmitter* field_0x430; - /* 0x434 */ dBgS_ObjAcch field_0x434; - /* 0x5F8 */ dBgS_AcchCir field_0x5F8; + /* 0x434 */ dBgS_ObjAcch mAcch; + /* 0x5F8 */ dBgS_AcchCir mAcchCir; /* 0x638 */ dCcD_Stts field_0x638; /* 0x674 */ dCcD_Stts field_0x674; /* 0x6B0 */ dCcD_Cyl field_0x6B0; diff --git a/include/d/actor/d_a_obj_Ygush00.h b/include/d/actor/d_a_obj_Ygush00.h index ee667e372..547ed34a2 100644 --- a/include/d/actor/d_a_obj_Ygush00.h +++ b/include/d/actor/d_a_obj_Ygush00.h @@ -37,11 +37,15 @@ public: class daObjYgush00_HIO_c : public JORReflexible { public: daObjYgush00_HIO_c(); + virtual ~daObjYgush00_HIO_c() {} void genMessage(JORMContext* ctx); public: /* 0x04 */ s8 mNo; + /* 0x05 */ s8 m05; + /* 0x06 */ s8 m06; + /* 0x07 */ s8 m07; }; #endif /* D_A_OBJ_YGUSH00_H */ diff --git a/include/d/actor/d_a_obj_hfuck1.h b/include/d/actor/d_a_obj_hfuck1.h index 49652a795..2eb988f25 100644 --- a/include/d/actor/d_a_obj_hfuck1.h +++ b/include/d/actor/d_a_obj_hfuck1.h @@ -5,6 +5,9 @@ #include "SSystem/SComponent/c_phase.h" #include "d/d_bg_w.h" #include "d/d_cc_d.h" +#if VERSION == VERSION_DEMO +#include "m_Do/m_Do_hostIO.h" +#endif class daObjHfuck1_c : public fopAc_ac_c { public: @@ -26,4 +29,18 @@ public: /* 0x40C */ fopAc_ac_c * mpHookshotActor; }; +#if VERSION == VERSION_DEMO +class daObjHfuck1_HIO_c : public JORReflexible { +public: + daObjHfuck1_HIO_c(); + virtual ~daObjHfuck1_HIO_c() {} + + /* 0x04 */ s8 mNo; + f32 field_0x08; + f32 field_0x0C; + f32 field_0x10; + f32 field_0x14; +}; +#endif + #endif /* D_A_OBJ_HFUCK1_H */ diff --git a/include/d/actor/d_a_obj_hha.h b/include/d/actor/d_a_obj_hha.h index 788bc98b2..1ece6786a 100644 --- a/include/d/actor/d_a_obj_hha.h +++ b/include/d/actor/d_a_obj_hha.h @@ -51,31 +51,56 @@ public: bool chk_stop() { return mbIsActive == false; } void delete_s() { +#if VERSION == VERSION_DEMO + if(mpEmitter != NULL){ + mSplashCb.remove(); + mpEmitter = NULL; + mbIsActive = false; + } +#else if(mSplashCb.getEmitter() != NULL){ mSplashCb.remove(); mbIsActive = false; } +#endif } void play_particle() { +#if VERSION == VERSION_DEMO + if(mpEmitter != NULL){ + mpEmitter->playCreateParticle(); + mbIsActive = true; + } +#else JPABaseEmitter* pSplashEmitter = mSplashCb.getEmitter(); if(pSplashEmitter != NULL){ pSplashEmitter->playCreateParticle(); mbIsActive = true; } +#endif } void stop_particle() { +#if VERSION == VERSION_DEMO + if(mpEmitter != NULL){ + mpEmitter->stopCreateParticle(); + mbIsActive = false; + } +#else JPABaseEmitter* pSplashEmitter = mSplashCb.getEmitter(); if(pSplashEmitter != NULL){ pSplashEmitter->stopCreateParticle(); mbIsActive = false; } +#endif } void create_s(u16, cXyz*, float, float, csXyz*); public: +#if VERSION == VERSION_DEMO + /* 0x00 */ JPABaseEmitter* mpEmitter; +#endif /* 0x00 */ dPa_followEcallBack mSplashCb; /* 0x14 */ cXyz mBasePos; /* 0x20 */ cXyz mPos; @@ -138,8 +163,10 @@ public: bool _draw(); public: +#if VERSION > VERSION_DEMO static const dCcD_SrcCyl M_cyl_data; static const dCcD_SrcSph M_sph_data; +#endif static const char M_arcname[4]; enum State_t {State_OPEN = 0, State_SWITCHING = 1, State_CLOSED = 2}; @@ -149,20 +176,22 @@ public: /* 0x2C4 */ dCcD_Stts mCylStts; /* 0x300 */ dCcD_Cyl mCyl; /* 0x430 */ bool mHitboxActive; +#if VERSION > VERSION_DEMO /* 0x434 */ dCcD_Stts mSphStts; /* 0x470 */ dCcD_Sph mSph; +#endif /* 0x59C */ daObjHhaYgush_c mYgush; /* 0x6A0 */ daObjHhaPart_c mPartA[2]; /* 0x738 */ daObjHhaSplash_c mSplashA[2]; /* 0x7A0 */ cXyz mPosOffset; /* 0x7AC */ u32 mSwitchNo; /* 0x7B0 */ u8 mIsMiddle; - /* 0x7B2 */ short mPartTimer; - /* 0x7B4 */ float mWtrScale; - /* 0x7B8 */ float mWtrScaleMin; + /* 0x7B2 */ s16 mPartTimer; + /* 0x7B4 */ f32 mWtrScale; + /* 0x7B8 */ f32 mWtrScaleMin; /* 0x7BC */ u16 mWtrTimer; /* 0X7BE */ u8 mWtrState; - /* 0x7C0 */ short mEventIdx; + /* 0x7C0 */ s16 mEventIdx; /* 0x7C2 */ u8 mState; /* 0x7C3 */ bool mWaterSound; }; diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index bc139d1c5..d8fba0876 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -550,12 +550,14 @@ public: inline void setHeapLockFlag(u8 flag) { mHeapLockFlag = flag; } inline void offHeapLockFlag() { mHeapLockFlag = 0; } - // These inlines aren't present in WW JP debug maps, but are present in TP debug. +#if VERSION > VERSION_DEMO + // These inlines aren't present in WW demo debug maps, but are present in TP debug. inline u8 getNowVibration() { return mNowVibration; } inline void setNowVibration(u8 vibration) { mNowVibration = vibration; } +#endif #if VERSION > VERSION_JPN - // Inline name is fake (not present in JP debug maps), but was guessed based on the similar + // Inline name is fake (not present in demo debug maps), but was guessed based on the similar // dSv_player_config_c::getPalLanguage() const inline in TP debug. inline u8 getPalLanguage() { return mPalLanguage; } inline void setPalLanguage(u8 lang) { mPalLanguage = lang; } @@ -810,7 +812,9 @@ public: /* 0x4960 */ u8 mPictureFormat; /* 0x4961 */ u8 field_0x4961; /* 0x4962 */ u8 mHeapLockFlag; +#if VERSION > VERSION_DEMO /* 0x4963 */ u8 mNowVibration; +#endif #if VERSION > VERSION_JPN /* 0x4964 */ u8 mPalLanguage; #endif @@ -1446,10 +1450,12 @@ inline void dComIfGs_setOptVibration(u8 vib) { g_dComIfG_gameInfo.save.getPlayer().getConfig().setVibration(vib); } +#if VERSION > VERSION_DEMO /* Not present in debug maps, imitates TP version */ inline u8 dComIfGs_checkOptVibration() { return g_dComIfG_gameInfo.save.getPlayer().getConfig().checkVibration(); } +#endif inline BOOL dComIfGs_isTbox(int i_no) { return g_dComIfG_gameInfo.save.getMemory().getBit().isTbox(i_no); @@ -1604,6 +1610,14 @@ inline BOOL dComIfGs_isItem(int bitNo, int roomNo) { return g_dComIfG_gameInfo.save.isItem(bitNo, roomNo); } +inline void dComIfGs_onVisitedRoom(int i_no) { + g_dComIfG_gameInfo.save.getMemory().getBit().onVisitedRoom(i_no); +} + +inline bool dComIfGs_isVisitedRoom(int i_no) { + return g_dComIfG_gameInfo.save.getMemory().getBit().isVisitedRoom(i_no); +} + inline void dComIfGs_clearRoomSwitch(int i_zoneNo) { g_dComIfG_gameInfo.save.getZone(i_zoneNo).getZoneBit().clearRoomSwitch(); } @@ -2797,6 +2811,7 @@ inline void dComIfGp_offHeapLockFlag() { g_dComIfG_gameInfo.play.offHeapLockFlag(); } +#if VERSION > VERSION_DEMO // Inline name from TP debug. inline u8 dComIfGp_getNowVibration() { return g_dComIfG_gameInfo.play.getNowVibration(); @@ -2806,6 +2821,7 @@ inline u8 dComIfGp_getNowVibration() { inline void dComIfGp_setNowVibration(u8 vibration) { g_dComIfG_gameInfo.play.setNowVibration(vibration); } +#endif #if VERSION > VERSION_JPN // Inline name is official because while it's not present in the JPN debug maps, it is present in @@ -3589,6 +3605,14 @@ inline int dComIfG_syncStageRes(const char* name) { return g_dComIfG_gameInfo.mResControl.syncStageRes(name); } +#if VERSION == VERSION_DEMO +// A number of actors used dComIfG_deleteObjectRes in actor delete functions, but these were changed +// to dComIfG_resDelete for the retail version. +#define dComIfG_resDeleteDemo(i_phase, i_resName) dComIfG_deleteObjectRes(i_resName) +#else +#define dComIfG_resDeleteDemo(i_phase, i_resName) dComIfG_resDelete(i_phase, i_resName); +#endif + inline int dComIfG_deleteObjectRes(const char* res) { return g_dComIfG_gameInfo.mResControl.deleteObjectRes(res); } diff --git a/include/d/d_kankyo.h b/include/d/d_kankyo.h index f7139dc8a..2a235597f 100644 --- a/include/d/d_kankyo.h +++ b/include/d/d_kankyo.h @@ -277,10 +277,12 @@ public: /* 0xB88 */ GXColorS10 mBgAddColDif; /* 0xB90 */ GXColorS10 mBg1AddColAmb; /* 0xB98 */ GXColorS10 mBg1AddColDif; +#if VERSION > VERSION_DEMO /* 0xBA0 */ GXColorS10 mBg2AddColAmb; /* 0xBA8 */ GXColorS10 mBg2AddColDif; /* 0xBB0 */ GXColorS10 mBg3AddColAmb; /* 0xBB8 */ GXColorS10 mBg3AddColDif; +#endif /* 0xBC0 */ GXColorS10 mAddColFog; /* 0xBC8 */ GXColorS10 mVrboxAddColSky0; /* 0xBD0 */ GXColorS10 mVrboxAddColKasumi; @@ -356,7 +358,9 @@ public: extern dScnKy_env_light_c g_env_light; +#if VERSION > VERSION_DEMO STATIC_ASSERT(sizeof(dScnKy_env_light_c) == 0xC9C); +#endif inline dScnKy_env_light_c& dKy_getEnvlight() { return g_env_light; diff --git a/include/d/d_particle.h b/include/d/d_particle.h index 0e75e5c41..1802b092f 100644 --- a/include/d/d_particle.h +++ b/include/d/d_particle.h @@ -90,7 +90,6 @@ private: /* 0x14 */ s8 field_0x14; /* 0x15 */ u8 mWindOff; /* 0x16 */ GXColor mColor; - /* 0x1A */ u8 field_0x1A[0x1C - 0x1A]; /* 0x1C */ dKy_tevstr_c* mTevstr; }; // Size: 0x20 diff --git a/include/d/d_save.h b/include/d/d_save.h index 4ce034969..f339618b7 100644 --- a/include/d/d_save.h +++ b/include/d/d_save.h @@ -459,7 +459,9 @@ STATIC_ASSERT(sizeof(dSv_player_info_c) == 0x5C); class dSv_player_config_c { public: void init(); +#if VERSION > VERSION_DEMO s32 checkVibration(); +#endif u8 getRuby() { return mRuby; } void setRuby(u8 ruby) { mRuby = ruby; } diff --git a/include/d/d_stage.h b/include/d/d_stage.h index c40821c5a..737a1726c 100644 --- a/include/d/d_stage.h +++ b/include/d/d_stage.h @@ -895,7 +895,7 @@ public: static int getZoneNo(int i_roomNo) { return mStatus[i_roomNo].mZoneNo; } static void setZoneCount(int i_roomNo, int count) { mStatus[i_roomNo].mZoneCount = count; } - static s8 getStayNo() { return mStayNo; } + static int getStayNo() { return mStayNo; } static s8 getMemoryBlockID(int i_roomNo) { return mStatus[i_roomNo].mMemBlockID; } static void onStatusDraw(int i_roomNo) { mStatus[i_roomNo].mDraw = true; } static void setProcID(fpc_ProcID id) { mProcID = id; } diff --git a/include/d/d_vibration.h b/include/d/d_vibration.h index 04b06df63..314d916e5 100644 --- a/include/d/d_vibration.h +++ b/include/d/d_vibration.h @@ -58,8 +58,13 @@ public: /* 0x80 */ /* vtable */ public: +#if VERSION == VERSION_DEMO + dVibration_c() { setDefault(); } + virtual ~dVibration_c() { Kill(); } +#else dVibration_c(); virtual ~dVibration_c(); +#endif int Run(); bool StartShock(int, int, cXyz); diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index 861e60b71..a5ea8ecab 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -412,10 +412,15 @@ inline BOOL fopAcM_isItemForIb(int itemBitNo, u8 itemNo, s8 roomNo) { } inline void dComIfGs_onSaveSwitch(int i_stageNo, int i_no); +inline void dComIfGs_onVisitedRoom(int i_no); inline void fopAcM_onItemForIb(int itemBitNo, u8 itemNo, s8 roomNo) { if (itemNo == dItem_BLUE_JELLY_e) { +#if VERSION == VERSION_DEMO + dComIfGs_onVisitedRoom(itemBitNo); +#else // Blue Chu Jelly uses itemBitNo as if it was a switch in stageNo 0xE. dComIfGs_onSaveSwitch(dSv_save_c::STAGE_BLUE_CHU_JELLY, itemBitNo); +#endif } else { dComIfGs_onItem(itemBitNo, roomNo); } diff --git a/src/SSystem/SComponent/c_bg_w.cpp b/src/SSystem/SComponent/c_bg_w.cpp index c5aafd61e..d76fb77e8 100644 --- a/src/SSystem/SComponent/c_bg_w.cpp +++ b/src/SSystem/SComponent/c_bg_w.cpp @@ -208,8 +208,8 @@ void cBgW::MakeBlckBnd(int i, cXyz* min, cXyz* max) { if (!mbNeedsFullTransform) { MakeBlckTransMinMax(min, max); } else { - min->x = min->y = min->z = 1000000000.0f; - max->x = max->y = max->z = -1000000000.0f; + min->x = min->y = min->z = G_CM3D_F_INF; + max->x = max->y = max->z = -G_CM3D_F_INF; for (s32 j = startTri; j <= lastTri; j++) { MakeBlckMinMax(pm_bgd->m_t_tbl[j].vtx0, min, max); diff --git a/src/SSystem/SComponent/c_m3d_g_sph.cpp b/src/SSystem/SComponent/c_m3d_g_sph.cpp index 004aed508..75cc872d9 100644 --- a/src/SSystem/SComponent/c_m3d_g_sph.cpp +++ b/src/SSystem/SComponent/c_m3d_g_sph.cpp @@ -12,6 +12,7 @@ #define CHECK_FLOAT_RANGE(line, x) JUT_ASSERT(line, -1.0e32f < x && x < 1.0e32f); #define CHECK_VEC3_RANGE(line, v) JUT_ASSERT(line, -1.0e32f < v.x && v.x < 1.0e32f && -1.0e32f < v.y && v.y < 1.0e32f && -1.0e32f < v.z && v.z < 1.0e32f) +#if VERSION > VERSION_DEMO /* 8025238C-80252624 .text SetC__8cM3dGSphFRC4cXyz */ void cM3dGSph::SetC(const cXyz& p) { CHECK_FLOAT_CLASS(18, p.x); @@ -27,6 +28,7 @@ void cM3dGSph::SetR(float r) { CHECK_FLOAT_RANGE(33, r); mRadius = r; } +#endif /* 80252750-8025277C .text cross__8cM3dGSphCFPC8cM3dGSphP4cXyz */ bool cM3dGSph::cross(const cM3dGSph* pOther, cXyz* pOut) const { diff --git a/src/d/actor/d_a_am.cpp b/src/d/actor/d_a_am.cpp index bcd54e394..a69abe01e 100644 --- a/src/d/actor/d_a_am.cpp +++ b/src/d/actor/d_a_am.cpp @@ -131,12 +131,17 @@ static BOOL daAM_Draw(am_class* i_this) { static void anm_init(am_class* i_this, int bckFileIdx, f32 morf, u8 loopMode, f32 speed, int soundFileIdx) { i_this->mCurrBckIdx = bckFileIdx; if (soundFileIdx >= 0) { - void* soundAnm = dComIfG_getObjectRes("AM", soundFileIdx); - J3DAnmTransform* bckAnm = (J3DAnmTransform*)dComIfG_getObjectRes("AM", bckFileIdx); - i_this->mpMorf->setAnm(bckAnm, loopMode, morf, speed, 0.0f, -1.0f, soundAnm); + i_this->mpMorf->setAnm( + (J3DAnmTransform*)dComIfG_getObjectRes("AM", bckFileIdx), + loopMode, morf, speed, 0.0f, -1.0f, + dComIfG_getObjectRes("AM", soundFileIdx) + ); } else { - J3DAnmTransform* bckAnm = (J3DAnmTransform*)dComIfG_getObjectRes("AM", bckFileIdx); - i_this->mpMorf->setAnm(bckAnm, loopMode, morf, speed, 0.0f, -1.0f, NULL); + i_this->mpMorf->setAnm( + (J3DAnmTransform*)dComIfG_getObjectRes("AM", bckFileIdx), + loopMode, morf, speed, 0.0f, -1.0f, + NULL + ); } } @@ -144,7 +149,7 @@ static void anm_init(am_class* i_this, int bckFileIdx, f32 morf, u8 loopMode, f3 static void body_atari_check(am_class* i_this) { daPy_py_c* player = daPy_getPlayerActorClass(); -#if VERSION <= VERSION_JPN +#if VERSION == VERSION_JPN if (i_this->mStartsInactive == 1 && i_this->mSwitch != 0xFF && !dComIfGs_isSwitch(i_this->mSwitch, dComIfGp_roomControl_getStayNo())) { return; } diff --git a/src/d/actor/d_a_am2.cpp b/src/d/actor/d_a_am2.cpp index 84ee4e76c..17bee58cc 100644 --- a/src/d/actor/d_a_am2.cpp +++ b/src/d/actor/d_a_am2.cpp @@ -116,12 +116,17 @@ static BOOL daAM2_Draw(am2_class* i_this) { static void anm_init(am2_class* i_this, int bckFileIdx, f32 morf, u8 loopMode, f32 speed, int soundFileIdx) { i_this->mCurrBckIdx = bckFileIdx; if (soundFileIdx >= 0) { - void* soundAnm = dComIfG_getObjectRes("AM2", soundFileIdx); - J3DAnmTransform* bckAnm = (J3DAnmTransform*)dComIfG_getObjectRes("AM2", bckFileIdx); - i_this->mpMorf->setAnm(bckAnm, loopMode, morf, speed, 0.0f, -1.0f, soundAnm); + i_this->mpMorf->setAnm( + (J3DAnmTransform*)dComIfG_getObjectRes("AM2", bckFileIdx), + loopMode, morf, speed, 0.0f, -1.0f, + dComIfG_getObjectRes("AM2", soundFileIdx) + ); } else { - J3DAnmTransform* bckAnm = (J3DAnmTransform*)dComIfG_getObjectRes("AM2", bckFileIdx); - i_this->mpMorf->setAnm(bckAnm, loopMode, morf, speed, 0.0f, -1.0f, NULL); + i_this->mpMorf->setAnm( + (J3DAnmTransform*)dComIfG_getObjectRes("AM2", bckFileIdx), + loopMode, morf, speed, 0.0f, -1.0f, + NULL + ); } } diff --git a/src/d/actor/d_a_andsw2.cpp b/src/d/actor/d_a_andsw2.cpp index 0ec1a7399..99a8d515e 100644 --- a/src/d/actor/d_a_andsw2.cpp +++ b/src/d/actor/d_a_andsw2.cpp @@ -77,7 +77,7 @@ BOOL daAndsw2_c::chkAllSw2() { return false; } for (int i = 0; i < num; i++) { - if (!dComIfGs_isSwitch(topSw+i, current.roomNo)) { + if (!dComIfGs_isSwitch(topSw+i, fopAcM_GetRoomNo(this))) { return false; } } @@ -93,9 +93,7 @@ static BOOL daAndsw2_actionOnAll(daAndsw2_c* i_this) { } else if (i_this->mEventIdx != -1) { i_this->setActio(ACT_ORDER); } else { - int room = i_this->current.roomNo; - int sw = i_this->getSwbit(); - dComIfGs_onSwitch(sw, room); + dComIfGs_onSwitch(i_this->getSwbit(), fopAcM_GetRoomNo(i_this)); if (i_this->getType() == TYPE_CONTINUOUS) { i_this->setActio(ACT_OFF); @@ -116,9 +114,7 @@ static BOOL daAndsw2_actionTimer(daAndsw2_c* i_this) { } else if (i_this->mEventIdx != -1) { i_this->setActio(ACT_ORDER); } else { - int room = i_this->current.roomNo; - int sw = i_this->getSwbit(); - dComIfGs_onSwitch(sw, room); + dComIfGs_onSwitch(i_this->getSwbit(), fopAcM_GetRoomNo(i_this)); if (i_this->getType() == TYPE_CONTINUOUS) { i_this->setActio(ACT_WAIT); @@ -131,9 +127,7 @@ static BOOL daAndsw2_actionTimer(daAndsw2_c* i_this) { static BOOL daAndsw2_actionOrder(daAndsw2_c* i_this) { if (i_this->eventInfo.checkCommandDemoAccrpt()) { i_this->setActio(ACT_EVENT); - int room = i_this->current.roomNo; - int sw = i_this->getSwbit(); - dComIfGs_onSwitch(sw, room); + dComIfGs_onSwitch(i_this->getSwbit(), fopAcM_GetRoomNo(i_this)); } else if (i_this->getType() == TYPE_CONTINUOUS && !i_this->chkAllSw2()) { i_this->setActio(ACT_ON_ALL); } else { @@ -159,9 +153,7 @@ static BOOL daAndsw2_actionEvent(daAndsw2_c* i_this) { static BOOL daAndsw2_actionOff(daAndsw2_c* i_this) { if (!i_this->chkAllSw2()) { i_this->setActio(ACT_ON_ALL); - int room = i_this->current.roomNo; - int sw = i_this->getSwbit(); - dComIfGs_offSwitch(sw, room); + dComIfGs_offSwitch(i_this->getSwbit(), fopAcM_GetRoomNo(i_this)); } return TRUE; } @@ -191,7 +183,7 @@ cPhs_State daAndsw2_c::create() { switch (getType()) { case TYPE_ONE_OFF: - if (sw == 0xFF || dComIfGs_isSwitch(sw, current.roomNo)) { + if (sw == 0xFF || dComIfGs_isSwitch(sw, fopAcM_GetRoomNo(this))) { // Switch invalid or already set. setActio(ACT_WAIT); } else { @@ -204,7 +196,7 @@ cPhs_State daAndsw2_c::create() { if (sw == 0xFF) { // Switch invalid. setActio(ACT_WAIT); - } else if (dComIfGs_isSwitch(sw, current.roomNo)) { + } else if (dComIfGs_isSwitch(sw, fopAcM_GetRoomNo(this))) { // Switch already set, wait for the condition to no longer be met. setActio(ACT_OFF); } else { diff --git a/src/d/actor/d_a_auction.cpp b/src/d/actor/d_a_auction.cpp index 04c7aa770..1030aa6ee 100644 --- a/src/d/actor/d_a_auction.cpp +++ b/src/d/actor/d_a_auction.cpp @@ -297,9 +297,14 @@ cPhs_State daAuction_c::createInit() { /* 000008C4-0000092C .text _delete__11daAuction_cFv */ BOOL daAuction_c::_delete() { - dComIfG_resDelete(&mPhs, "Pspl"); + dComIfG_resDeleteDemo(&mPhs, "Pspl"); - if (heap != NULL && mpEmitter != NULL) { +#if VERSION == VERSION_DEMO + if (mpEmitter != NULL) +#else + if (heap != NULL && mpEmitter != NULL) +#endif + { mpEmitter->becomeInvalidEmitter(); } diff --git a/src/d/actor/d_a_bk.cpp b/src/d/actor/d_a_bk.cpp index bf9f2d5c8..cce6709e0 100644 --- a/src/d/actor/d_a_bk.cpp +++ b/src/d/actor/d_a_bk.cpp @@ -87,12 +87,17 @@ static void anm_init(bk_class* i_this, int bckFileIdx, f32 morf, u8 loopMode, f3 return; } if (soundFileIdx >= 0) { - void* soundAnm = dComIfG_getObjectRes("Bk", soundFileIdx); - J3DAnmTransform* bckAnm = (J3DAnmTransform*)dComIfG_getObjectRes("Bk", bckFileIdx); - i_this->mpMorf->setAnm(bckAnm, loopMode, morf, speed, 0.0f, -1.0f, soundAnm); + i_this->mpMorf->setAnm( + (J3DAnmTransform*)dComIfG_getObjectRes("Bk", bckFileIdx), + loopMode, morf, speed, 0.0f, -1.0f, + dComIfG_getObjectRes("Bk", soundFileIdx) + ); } else { - J3DAnmTransform* bckAnm = (J3DAnmTransform*)dComIfG_getObjectRes("Bk", bckFileIdx); - i_this->mpMorf->setAnm(bckAnm, loopMode, morf, speed, 0.0f, -1.0f, NULL); + i_this->mpMorf->setAnm( + (J3DAnmTransform*)dComIfG_getObjectRes("Bk", bckFileIdx), + loopMode, morf, speed, 0.0f, -1.0f, + NULL + ); } } diff --git a/src/d/actor/d_a_bomb2.cpp b/src/d/actor/d_a_bomb2.cpp index 30c1912e4..12b154f5f 100644 --- a/src/d/actor/d_a_bomb2.cpp +++ b/src/d/actor/d_a_bomb2.cpp @@ -287,7 +287,7 @@ namespace daBomb2 { void Act_c::crr_init() { mCir.SetWall(30.0f, 30.0f); - mAcch.Set(¤t.pos, &old.pos, this, 1, &mCir, &speed, ¤t.angle, &shape_angle); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mCir, fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this)); mAcch.ClrWaterNone(); mAcch.ClrRoofNone(); mAcch.m_roof_crr_height = 50.0f; diff --git a/src/d/actor/d_a_bomb3.inc b/src/d/actor/d_a_bomb3.inc index 9998aef54..506a1e977 100644 --- a/src/d/actor/d_a_bomb3.inc +++ b/src/d/actor/d_a_bomb3.inc @@ -1392,7 +1392,7 @@ static dCcD_SrcSph l_sph_src = { /* 800DCF18-800DD1A4 .text create_init__8daBomb_cFv */ void daBomb_c::create_init() { mCir.SetWall(30.0f, 30.0f); - mAcch.Set(¤t.pos, &old.pos, this, 1, &mCir, &speed, ¤t.angle, &shape_angle); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mCir, fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this)); mAcch.ClrWaterNone(); mAcch.ClrRoofNone(); mAcch.m_roof_crr_height = 50.0f; diff --git a/src/d/actor/d_a_boss_item.cpp b/src/d/actor/d_a_boss_item.cpp index aec37c92c..8a2909233 100644 --- a/src/d/actor/d_a_boss_item.cpp +++ b/src/d/actor/d_a_boss_item.cpp @@ -22,17 +22,16 @@ static BOOL daBossItem_Delete(bossitem_class* i_this) { /* 00000088-00000128 .text daBossItem_Create__FP10fopAc_ac_c */ static cPhs_State daBossItem_Create(fopAc_ac_c* i_this) { - bossitem_class* bItem = static_cast(i_this); + bossitem_class* a_this = (bossitem_class*)i_this; + fopAcM_SetupActor(i_this, bossitem_class); - fopAcM_SetupActor(bItem, bossitem_class); - - int stageNo = bItem->base.mParameters & 0xFF; + int stageNo = daBossItem_prm::getStage(a_this); BOOL isStageBossDead = dComIfGs_isStageBossEnemy(stageNo); if (isStageBossDead && !dComIfGs_isStageLife(stageNo)) { fopAcM_createItemForBoss( - &bItem->current.pos, 1, bItem->current.roomNo, - &bItem->current.angle, NULL, 1 + &i_this->current.pos, 1, fopAcM_GetRoomNo(i_this), + &i_this->current.angle, NULL, 1 ); } diff --git a/src/d/actor/d_a_dai_item.cpp b/src/d/actor/d_a_dai_item.cpp index f4e70ae79..d81c72368 100644 --- a/src/d/actor/d_a_dai_item.cpp +++ b/src/d/actor/d_a_dai_item.cpp @@ -307,7 +307,7 @@ void daStandItem_c::CreateInit() { fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); fopAcM_setCullSizeBox(this, -100.0f, -0.0f, -100.0f, 100.0f, 300.0f, 100.0f); mAcchCir.SetWall(30.0f, 30.0f); - mAcch.Set(¤t.pos, &old.pos, this, 1, &mAcchCir, &speed); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this)); if (fopAcM_checkCarryNow(this)) mode_carry_init(); else diff --git a/src/d/actor/d_a_demo_item.cpp b/src/d/actor/d_a_demo_item.cpp index 8655c3ab0..8a6bffd12 100644 --- a/src/d/actor/d_a_demo_item.cpp +++ b/src/d/actor/d_a_demo_item.cpp @@ -327,7 +327,8 @@ bool daDitem_c::CreateInit() { /* 000003F0-000004AC .text set_effect__9daDitem_cFv */ void daDitem_c::set_effect() { s16 angleX = dCam_getAngleX(dComIfGp_getCamera(0)) - 0x2000; - s16 angleY = dCam_getAngleY(dComIfGp_getCamera(0)); + // Fakematch? Just angleY needs to be const to match the demo build. No effect on retail. + const s16 angleY = dCam_getAngleY(dComIfGp_getCamera(0)); for (int i = 0; i < (int)ARRAY_SIZE(mpEmitters); i++) { if (mpEmitters[i] == NULL) { continue; diff --git a/src/d/actor/d_a_dr.cpp b/src/d/actor/d_a_dr.cpp index 71e0e7629..3acc8ab79 100644 --- a/src/d/actor/d_a_dr.cpp +++ b/src/d/actor/d_a_dr.cpp @@ -32,11 +32,16 @@ daDr_HIO_c::daDr_HIO_c() { /* 00000148-000001DC .text daDr_Draw__FP8dr_class */ static BOOL daDr_Draw(dr_class* i_this) { + fopAc_ac_c* actor = i_this; J3DModel* model = i_this->mpMorf->getModel(); - g_env_light.settingTevStruct(TEV_TYPE_ACTOR, &i_this->current.pos, &i_this->tevStr); - g_env_light.setLightTevColorType(model, &i_this->tevStr); + g_env_light.settingTevStruct(TEV_TYPE_ACTOR, &actor->current.pos, &actor->tevStr); + g_env_light.setLightTevColorType(model, &actor->tevStr); i_this->mpMorf->entryDL(); - dSnap_RegistFig(DSNAP_TYPE_DR, i_this, i_this->eyePos, i_this->shape_angle.y, 1.0f, 1.0f, 1.0f); +#if VERSION == VERSION_DEMO + dSnap_RegistFig(DSNAP_TYPE_DR, actor, 1.0f, 1.0f, 1.0f); +#else + dSnap_RegistFig(DSNAP_TYPE_DR, actor, actor->eyePos, actor->shape_angle.y, 1.0f, 1.0f, 1.0f); +#endif return TRUE; } @@ -46,12 +51,17 @@ static void anm_init(dr_class* i_this, int bckFileIdx, f32 morf, u8 loopMode, f3 morf = 0.0f; } if (soundFileIdx >= 0) { - void* soundAnm = dComIfG_getObjectRes("Dr", soundFileIdx); - J3DAnmTransform* bckAnm = (J3DAnmTransform*)dComIfG_getObjectRes("Dr", bckFileIdx); - i_this->mpMorf->setAnm(bckAnm, loopMode, morf, speed, 0.0f, -1.0f, soundAnm); + i_this->mpMorf->setAnm( + (J3DAnmTransform*)dComIfG_getObjectRes("Dr", bckFileIdx), + loopMode, morf, speed, 0.0f, -1.0f, + dComIfG_getObjectRes("Dr", soundFileIdx) + ); } else { - J3DAnmTransform* bckAnm = (J3DAnmTransform*)dComIfG_getObjectRes("Dr", bckFileIdx); - i_this->mpMorf->setAnm(bckAnm, loopMode, morf, speed, 0.0f, -1.0f, NULL); + i_this->mpMorf->setAnm( + (J3DAnmTransform*)dComIfG_getObjectRes("Dr", bckFileIdx), + loopMode, morf, speed, 0.0f, -1.0f, + NULL + ); } i_this->mCurrBckIdx = bckFileIdx; } @@ -205,7 +215,7 @@ static BOOL daDr_IsDelete(dr_class* i_this) { /* 00000A94-00000AE8 .text daDr_Delete__FP8dr_class */ static BOOL daDr_Delete(dr_class* i_this) { - dComIfG_resDelete(&i_this->mPhs, "Dr"); + dComIfG_resDeleteDemo(&i_this->mPhs, "Dr"); if (l_HIO.mNo >= 0) { mDoHIO_deleteChild(l_HIO.mNo); } @@ -233,18 +243,24 @@ static BOOL createHeap(fopAc_ac_c* i_actor) { } /* 00000C08-00000CE4 .text daDr_Create__FP10fopAc_ac_c */ -static cPhs_State daDr_Create(fopAc_ac_c* i_actor) { - fopAcM_SetupActor(i_actor, dr_class); +static cPhs_State daDr_Create(fopAc_ac_c* i_this) { + dr_class* a_this = (dr_class*)i_this; - dr_class* i_this = (dr_class*)i_actor; - - cPhs_State phase_state = dComIfG_resLoad(&i_this->mPhs, "Dr"); +#if VERSION == VERSION_DEMO + cPhs_State phase_state = dComIfG_resLoad(&a_this->mPhs, "Dr"); if (phase_state == cPhs_COMPLEATE_e) { - if (!fopAcM_entrySolidHeap(i_this, createHeap, 0xF000)) { + fopAcM_SetupActor(a_this, dr_class); +#else + fopAcM_SetupActor(a_this, dr_class); + + cPhs_State phase_state = dComIfG_resLoad(&a_this->mPhs, "Dr"); + if (phase_state == cPhs_COMPLEATE_e) { +#endif + if (!fopAcM_entrySolidHeap(a_this, createHeap, 0xF000)) { return cPhs_ERROR_e; } - daDr_setMtx(i_this); + daDr_setMtx(a_this); if (l_HIO.mNo < 0) { l_HIO.mNo = mDoHIO_createChild("ドラゴン", &l_HIO); // "Dragon" diff --git a/src/d/actor/d_a_fire.cpp b/src/d/actor/d_a_fire.cpp index 4390e4aa0..d534bd75b 100644 --- a/src/d/actor/d_a_fire.cpp +++ b/src/d/actor/d_a_fire.cpp @@ -261,6 +261,8 @@ void daFire_c::search_wind() { /* 00000AD8-00000E8C .text ctrlEffect__8daFire_cFv */ void daFire_c::ctrlEffect() { + f32 f31 = 0.025f; + if (field_0x902 == 0) { return; } @@ -285,7 +287,8 @@ void daFire_c::ctrlEffect() { } else if (hit_obj->ChkAtType(AT_TYPE_WIND) && wind != field_0x2CC[0].GetTgHitAc()) { field_0x8E0 = *field_0x2CC[0].GetTgRVecP(); - f32 dist_sq = (field_0x8E0.x * field_0x8E0.x + field_0x8E0.z * field_0x8E0.z) / 1000.0f; + f32 f2 = 1000.0f; + f32 dist_sq = (field_0x8E0.x * field_0x8E0.x + field_0x8E0.z * field_0x8E0.z) / f2; field_0x8E0.y = sqrt(dist_sq); if (!field_0x8E0.normalizeRS()) { field_0x8E0.set(0.0f, 1.0f, 0.0f); @@ -296,9 +299,9 @@ void daFire_c::ctrlEffect() { field_0x2CC[0].ClrTgHit(); } else { - cLib_chaseF(&field_0x8E0.x, 0.0f, 0.025f); - cLib_chaseF(&field_0x8E0.y, 1.0f, 0.025f); - cLib_chaseF(&field_0x8E0.z, 0.0f, 0.025f); + cLib_chaseF(&field_0x8E0.x, 0.0f, f31); + cLib_chaseF(&field_0x8E0.y, 1.0f, f31); + cLib_chaseF(&field_0x8E0.z, 0.0f, f31); } if (field_0x8D1 == 0 && field_0x8D2 != 0) { @@ -373,7 +376,7 @@ void daFire_c::eventOrder() { } else { field_0x903 = 5; } - } else if (mType == 0 && dComIfGs_isSwitch(mSwitchNo, fopAcM_GetHomeRoomNo(this))) { + } else if (mType == 0 && fopAcM_isSwitch(this, mSwitchNo)) { flag = 1; } @@ -467,9 +470,10 @@ void daFire_c::execPlayFire() { /* 00001408-000014E4 .text setDirParticle__8daFire_cFP4cXyz */ void daFire_c::setDirParticle(cXyz* dir) { - cLib_chaseF(&field_0x8D4.x, dir->x, 1.0f); - cLib_chaseF(&field_0x8D4.y, dir->y, 1.0f); - cLib_chaseF(&field_0x8D4.z, dir->z, 1.0f); + f32 f31 = 1.0f; + cLib_chaseF(&field_0x8D4.x, dir->x, f31); + cLib_chaseF(&field_0x8D4.y, dir->y, f31); + cLib_chaseF(&field_0x8D4.z, dir->z, f31); if (field_0x8BC) { field_0x8BC->setDirection(JGeometry::TVec3(field_0x8D4)); diff --git a/src/d/actor/d_a_ib.cpp b/src/d/actor/d_a_ib.cpp index a2778dbcd..dbf81dbb8 100644 --- a/src/d/actor/d_a_ib.cpp +++ b/src/d/actor/d_a_ib.cpp @@ -325,7 +325,7 @@ void daIball_c::CreateInit() { mCyl.Set(m_cyl_src); mCyl.SetStts(&mStts); mAcchCir.SetWall(30.0f, 30.0f); - mAcch.Set(¤t.pos, &old.pos, this, 1, &mAcchCir, &speed); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this)); mAcch.OnSeaCheckOn(); mAcch.OnSeaWaterHeight(); diff --git a/src/d/actor/d_a_item.cpp b/src/d/actor/d_a_item.cpp index 70defcad5..7cff4c465 100644 --- a/src/d/actor/d_a_item.cpp +++ b/src/d/actor/d_a_item.cpp @@ -78,9 +78,11 @@ float daItem_c::getYOffset() { void daItem_c::set_mtx() { cXyz pos = current.pos; csXyz rot = current.angle; +#if VERSION > VERSION_DEMO if (m_itemNo == dItem_HEART_CONTAINER_e) { rot.y = shape_angle.y; } +#endif set_mtx_base(mpModel, pos, rot); if (isArrow(m_itemNo)) { @@ -132,7 +134,7 @@ void itemGetCallBack(fopAc_ac_c* item_actor, dCcD_GObjInf*, fopAc_ac_c* collided /* 800F5044-800F53EC .text CreateInit__8daItem_cFv */ void daItem_c::CreateInit() { mAcchCir.SetWall(30.0f, 30.0f); - mAcch.Set(¤t.pos, &old.pos, this, 1, &mAcchCir, fopAcM_GetSpeed_p(this)); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this)); mAcch.ClrWaterNone(); mAcch.ClrRoofNone(); @@ -225,7 +227,10 @@ cPhs_State daItem_c::_daItem_create() { } mItemBitNo = daItem_prm::getItemBitNo(this); - if (m_itemNo != dItem_BLUE_JELLY_e) { // Blue Chu Jelly uses mItemBitNo as if it was a switch. +#if VERSION > VERSION_DEMO + if (m_itemNo != dItem_BLUE_JELLY_e) // Blue Chu Jelly uses mItemBitNo as if it was a switch. +#endif + { mItemBitNo &= 0x7F; if (fopAcM_isItem(this, mItemBitNo) && mItemBitNo != 0x7F) { // Already picked up, don't create the item again. @@ -236,8 +241,11 @@ cPhs_State daItem_c::_daItem_create() { cPhs_State phase_state = dComIfG_resLoad(&mPhs, dItem_data::getFieldArc(m_itemNo)); if (phase_state == cPhs_COMPLEATE_e) { - // Note: The demo version calls getHeapSize instead of getFieldHeapSize here. +#if VERSION == VERSION_DEMO + u32 heap_size = dItem_data::getHeapSize(m_itemNo); +#else u32 heap_size = dItem_data::getFieldHeapSize(m_itemNo); +#endif if (!fopAcM_entrySolidHeap(this, CheckFieldItemCreateHeap, heap_size)) { return cPhs_ERROR_e; } @@ -334,9 +342,11 @@ void daItem_c::mode_proc_call() { } } +#if VERSION > VERSION_DEMO if (mType == daItemType_1_e && (fopAcM_checkHookCarryNow(this) || checkFlag(FLAG_BOOMERANG))) { mType = daItemType_3_e; } +#endif } /* 800F59CC-800F5AFC .text execInitNormalDirection__8daItem_cFv */ @@ -399,7 +409,7 @@ void daItem_c::execInitGetDemoDirection() { if (player == link) { fopAcM_orderItemEvent(this); eventInfo.onCondition(dEvtCnd_CANGETITEM_e); - mDemoItemBsPcId = fopAcM_createItemForTrBoxDemo(¤t.pos, m_itemNo, -1, current.roomNo); + mDemoItemBsPcId = fopAcM_createItemForTrBoxDemo(¤t.pos, m_itemNo, -1, fopAcM_GetRoomNo(this)); mItemStatus = STATUS_WAIT_GET_DEMO; } } @@ -762,10 +772,12 @@ void daItem_c::itemGetExecute() { clrFlag(FLAG_UNK04); +#if VERSION > VERSION_DEMO mCyl.SetTgType(0); mCyl.OffCoSetBit(); mCyl.ClrTgHit(); mCyl.ClrCoHit(); +#endif } /* 800F6D24-800F6D78 .text itemDefaultRotateY__8daItem_cFv */ @@ -832,9 +844,9 @@ BOOL daItem_c::itemActionForRupee() { if (mAcch.ChkGroundLanding()) { f32 temp2 = field_0x650 * getData()->mGroundReflect; if (temp2 > gravity - 0.5f) { - speedF = 0.0f; + fopAcM_SetSpeedF(this, 0.0f); } else { - speed.set(0.0f, -temp2, 0.0f); + fopAcM_GetSpeed(this).set(0.0f, -temp2, 0.0f); } mOnGroundTimer++; @@ -845,13 +857,13 @@ BOOL daItem_c::itemActionForRupee() { set_bound_se(); } else if (mAcch.ChkGroundHit()) { itemDefaultRotateY(); - speedF = 0.0f; + fopAcM_SetSpeedF(this, 0.0f); clrFlag(FLAG_UNK04); mOnGroundTimer = 1; } - if (speed.y != 0.0f) { - field_0x650 = speed.y; + if (fopAcM_GetSpeed(this).y != 0.0f) { + field_0x650 = fopAcM_GetSpeed(this).y; } mRotateSpeed = getData()->mRotateXSpeed; @@ -921,8 +933,8 @@ BOOL daItem_c::itemActionForKey() { itemDefaultRotateY(); } - if (speed.y != 0.0f) { - field_0x650 = speed.y; + if (fopAcM_GetSpeed(this).y != 0.0f) { + field_0x650 = fopAcM_GetSpeed(this).y; } mRotateSpeed = getData()->mRotateXSpeed; @@ -958,8 +970,8 @@ BOOL daItem_c::itemActionForEmono() { speedF = 0.0f; } - if (speed.y != 0.0f) { - field_0x650 = speed.y; + if (fopAcM_GetSpeed(this).y != 0.0f) { + field_0x650 = fopAcM_GetSpeed(this).y; } return TRUE; @@ -1068,11 +1080,15 @@ BOOL daItem_c::itemActionForArrow() { } else if (mAcch.ChkGroundHit()) { speedF = 0.0f; - if (m_itemNo != dItem_HEART_CONTAINER_e) { +#if VERSION > VERSION_DEMO + if (m_itemNo != dItem_HEART_CONTAINER_e) +#endif + { itemDefaultRotateY(); } } +#if VERSION > VERSION_DEMO if (m_itemNo == dItem_HEART_CONTAINER_e) { if (mOnGroundTimer != 0) { getData(); @@ -1082,9 +1098,10 @@ BOOL daItem_c::itemActionForArrow() { cLib_chaseAngleS(&shape_angle.y, shape_angle.y + mRotateSpeed, mRotateSpeed); } +#endif - if (speed.y != 0.0f) { - field_0x650 = speed.y; + if (fopAcM_GetSpeed(this).y != 0.0f) { + field_0x650 = fopAcM_GetSpeed(this).y; } return TRUE; @@ -1199,7 +1216,7 @@ BOOL daItem_c::timeCount() { /* 800F7F0C-800F7F50 .text mode_wait_init__8daItem_cFv */ void daItem_c::mode_wait_init() { mMode = MODE_WAIT; - gravity = getData()->mGravity; + fopAcM_SetGravity(this, getData()->mGravity); mPtclRippleCb.remove(); } @@ -1221,16 +1238,14 @@ void daItem_c::mode_water_init() { fopAcM_SetSpeed(this, 0.0f, 0.0f, 0.0f); fopAcM_SetSpeedF(this, 0.0f); - current.angle.z = 0; - current.angle.x = 0; + current.angle.x = current.angle.z = 0; mExtraZRot = 0; mRotateSpeed = 0; clrFlag(FLAG_UNK04); scale.set(mScaleTarget.x, mScaleTarget.y, mScaleTarget.z); cXyz particleScale; - f32 temp = dItem_data::getShadowSize(m_itemNo); - f32 temp3 = temp / dItem_data::getShadowSize(dItem_GREEN_RUPEE_e); + f32 temp3 = (f32)dItem_data::getShadowSize(m_itemNo) / dItem_data::getShadowSize(dItem_GREEN_RUPEE_e); temp3 *= scale.x; particleScale.setall(temp3); @@ -1268,7 +1283,9 @@ void daItem_c::mode_wait() { break; case dItem_SMALL_MAGIC_e: case dItem_LARGE_MAGIC_e: +#if VERSION > VERSION_DEMO case dItem_JOY_PENDANT_e: +#endif case dItem_SKULL_NECKLACE_e: case dItem_BOKOBABA_SEED_e: case dItem_GOLDEN_FEATHER_e: @@ -1344,17 +1361,21 @@ BOOL daItem_c::initAction() { scale.setall(0.0f); mItemStatus = STATUS_WAIT_BOSS1; fopAcM_OnStatus(this, fopAcStts_UNK4000_e); +#if VERSION > VERSION_DEMO mRotateSpeed = 0x4A8; +#endif break; case daItemAct_BOSS_e: scale.setall(1.0f); mItemStatus = STATUS_WAIT_BOSS2; fopAcM_OnStatus(this, fopAcStts_UNK4000_e); +#if VERSION > VERSION_DEMO mRotateSpeed = 0x4A8; +#endif break; } - gravity = getData()->mGravity; + fopAcM_SetGravity(this, getData()->mGravity); clrFlag(FLAG_UNK04); mMode = MODE_WAIT; diff --git a/src/d/actor/d_a_kita.cpp b/src/d/actor/d_a_kita.cpp index 14ec2771c..bf8ad8c2a 100644 --- a/src/d/actor/d_a_kita.cpp +++ b/src/d/actor/d_a_kita.cpp @@ -79,7 +79,7 @@ void kita_move(kita_class* i_this) { daPy_py_c* player_actor = daPy_getPlayerActorClass(); i_this->mMoveCounter++; switch(i_this->field_29A){ - case 0: + case 0: { s32 mask = 0; for(int i = 0; i < 4; i++){ if(i_this->field_318[i] == 2){ @@ -95,7 +95,7 @@ void kita_move(kita_class* i_this) { } } - short xa_offset, ya_offset; + s16 xa_offset, ya_offset; ya_offset = himo_off_ya[mask]; xa_offset = himo_off_xa[mask]; cLib_addCalc2(&i_this->mHeight, REG0_F(4) + (-static_cast(himo_off_yp[mask]) * 0.3f), 0.05, i_this->field_320 * 250.0f); @@ -108,7 +108,7 @@ void kita_move(kita_class* i_this) { sgc_y -= 200.0f; sgc_pos.x = sgc_c; sgc_pos.y = sgc_y; sgc_pos.z = sgc_z; solid_ground_check.SetPos(&sgc_pos); - float solid_ground_cross = REG0_F(13) + dComIfG_Bgsp()->GroundCross(&solid_ground_check); + f32 solid_ground_cross = REG0_F(13) + dComIfG_Bgsp()->GroundCross(&solid_ground_check); if (i_this->field_35C < solid_ground_cross) i_this->field_35C = solid_ground_cross; dBgS_ObjGndChk_Spl liquid_ground_check; @@ -117,7 +117,7 @@ void kita_move(kita_class* i_this) { lgc_y -= 200.0f; lgc_pos.x = lgc_x; lgc_pos.y = lgc_y; lgc_pos.z = lgc_z; liquid_ground_check.SetPos(&lgc_pos); - float liquid_gnd_cross = dComIfG_Bgsp()->GroundCross(&liquid_ground_check); + f32 liquid_gnd_cross = dComIfG_Bgsp()->GroundCross(&liquid_ground_check); if(liquid_gnd_cross != -G_CM3D_F_INF && liquid_gnd_cross > i_this->field_35C){ i_this->field_35C = liquid_gnd_cross + 40.0f + REG0_F(17); i_this->field_360 = 1; @@ -144,7 +144,7 @@ void kita_move(kita_class* i_this) { cLib_addCalc0(&i_this->mPosRel.y, 0.05f, REG0_F(7) + 2.0f); break; - + } case 1: if(i_this->field_360 == 2){ i_this->mSph.SetC(actor->current.pos); @@ -451,7 +451,7 @@ static cPhs_State daKita_Create(fopAc_ac_c* a_this) { fopAcM_SetMax(i_this, i_this->scale.x * 200.0f, 200.0f, i_this->scale.z * 200.0f); i_this->mModel->setBaseScale(i_this->scale); i_this->health = 1; - i_this->mAcch.Set(&i_this->current.pos, &i_this->old.pos, i_this, 1, &i_this->mAcchCir, &i_this->speed); + i_this->mAcch.Set(fopAcM_GetPosition_p(i_this), fopAcM_GetOldPosition_p(i_this), i_this, 1, &i_this->mAcchCir, fopAcM_GetSpeed_p(i_this)); i_this->mAcchCir.SetWall(50.0f, 300.0f); i_this->mStts.Init(0xff, 0xff, i_this); i_this->mSph.Set(utiwa_sph_src); diff --git a/src/d/actor/d_a_ks.cpp b/src/d/actor/d_a_ks.cpp index 7ad475d8d..c18e8bdbd 100644 --- a/src/d/actor/d_a_ks.cpp +++ b/src/d/actor/d_a_ks.cpp @@ -1555,7 +1555,7 @@ static cPhs_State daKS_Create(fopAc_ac_c* i_this) { i_this->attention_info.flags = 0; - a_this->mAcch.Set(&i_this->current.pos, &i_this->old.pos, i_this, 1, &a_this->mAcchCir, &i_this->speed, NULL, NULL); + a_this->mAcch.Set(fopAcM_GetPosition_p(i_this), fopAcM_GetOldPosition_p(i_this), i_this, 1, &a_this->mAcchCir, fopAcM_GetSpeed_p(i_this), NULL, NULL); a_this->mStts.Init(2, 1, i_this); diff --git a/src/d/actor/d_a_kytag01.cpp b/src/d/actor/d_a_kytag01.cpp index 5520d2c7c..228fe572b 100644 --- a/src/d/actor/d_a_kytag01.cpp +++ b/src/d/actor/d_a_kytag01.cpp @@ -49,11 +49,19 @@ void wave_make() { env_light.mWaveChan.mWaveReset = 0; env_light.mWaveChan.mWaveScale = 300.0f; env_light.mWaveChan.mWaveScaleRand = 0.001f; +#if VERSION == VERSION_DEMO + env_light.mWaveChan.mWaveCounterSpeedScale = 1.3f; +#else env_light.mWaveChan.mWaveCounterSpeedScale = 1.2f; +#endif env_light.mWaveChan.field_0x2f = 0; env_light.mWaveChan.mWaveScaleBottom = 6.0f; env_light.mWaveChan.mWaveCount = 300; +#if VERSION == VERSION_DEMO + env_light.mWaveChan.mWaveSpeed = 60.0f; +#else env_light.mWaveChan.mWaveSpeed = 30.0f; +#endif env_light.mWaveChan.mWaveFlatInter = 0.0f; if (strcmp(dComIfGp_getStartStageName(), "MajyuE") == 0) { env_light.mWaveChan.mWaveSpawnDist = 25000.0f; diff --git a/src/d/actor/d_a_kytag02.cpp b/src/d/actor/d_a_kytag02.cpp index 86048d7c3..3795b99dc 100644 --- a/src/d/actor/d_a_kytag02.cpp +++ b/src/d/actor/d_a_kytag02.cpp @@ -11,17 +11,16 @@ #include "f_op/f_op_actor_mng.h" /* 00000078-000000C0 .text set_path_info__FP10fopAc_ac_c */ -dPath* set_path_info(fopAc_ac_c* i_ac) { +dPath* set_path_info(fopAc_ac_c* i_this) { dPath* ret = NULL; - u8 pathId = (fopAcM_GetParam(i_ac) >> 16); - if (pathId != 0xFF) - ret = dPath_GetRoomPath(pathId, i_ac->current.roomNo); + if (((fopAcM_GetParam(i_this) >> 16) & 0xFF) != 0xFF) + ret = dPath_GetRoomPath(((fopAcM_GetParam(i_this) >> 16) & 0xFF), fopAcM_GetRoomNo(i_this)); return ret; } /* 000000C0-000000F0 .text set_next_path_info__FP13kytag02_classP5dPath */ dPath* set_next_path_info(kytag02_class* i_this, dPath* path) { - return dPath_GetNextRoomPath(path, i_this->current.roomNo); + return dPath_GetNextRoomPath(path, fopAcM_GetRoomNo(i_this)); } /* 000000F0-0000017C .text get_railwind_vec__FP5dPathi */ @@ -37,7 +36,6 @@ cXyz get_railwind_vec(dPath* path, int i_no) { /* 0000017C-000002E8 .text get_nearpos_rail__FP13kytag02_classP5dPathP4cXyzPi */ dPath* get_nearpos_rail(kytag02_class* i_this, dPath* i_path, cXyz* pos, int* i_no) { - /* Nonmatching */ dPath* path; dPath* bestPath; f32 best; @@ -46,7 +44,7 @@ dPath* get_nearpos_rail(kytag02_class* i_this, dPath* i_path, cXyz* pos, int* i_ bestIdx = 0; path = i_path; best = 1000000000.0f; - bestPath = path; + bestPath = i_path; while (true) { for (s32 i = 0; i < path->m_num; i++) { @@ -108,10 +106,10 @@ static BOOL daKytag02_Delete(kytag02_class* i_this) { } /* 00000420-0000047C .text daKytag02_Create__FP10fopAc_ac_c */ -static cPhs_State daKytag02_Create(fopAc_ac_c* i_ac) { - kytag02_class* i_this = (kytag02_class*)i_ac; - fopAcM_SetupActor(i_this, kytag02_class); - i_this->mpPath = set_path_info(i_this); +static cPhs_State daKytag02_Create(fopAc_ac_c* i_this) { + kytag02_class* a_this = (kytag02_class*)i_this; + fopAcM_SetupActor(a_this, kytag02_class); + a_this->mpPath = set_path_info(a_this); return cPhs_COMPLEATE_e; } diff --git a/src/d/actor/d_a_kytag03.cpp b/src/d/actor/d_a_kytag03.cpp index 390b5a889..718b13bb8 100644 --- a/src/d/actor/d_a_kytag03.cpp +++ b/src/d/actor/d_a_kytag03.cpp @@ -47,59 +47,56 @@ void draw_SUB(kytag03_class* i_this) { /* 00000280-0000050C .text daKytag03_Execute__FP13kytag03_class */ static BOOL daKytag03_Execute(kytag03_class* i_this) { - /* Nonmatching */ - if (!dComIfGp_event_runCheck() || !dComIfGp_event_chkEventFlag(dEvtFlag_STAFF_ALL_e)) { - if (i_this->tevStr.mRoomNo == dStage_roomControl_c::getStayNo()) { + fopAc_ac_c* actor = i_this; + if (dComIfGp_event_runCheck() == FALSE || !dComIfGp_event_chkEventFlag(dEvtFlag_STAFF_ALL_e)) { + if (actor->tevStr.mRoomNo == dComIfGp_roomControl_getStayNo()) { i_this->mbRoomActive = true; - if (i_this->mSwitchNo != 0xFF) { - if (dComIfGs_isSwitch(i_this->mSwitchNo, dStage_roomControl_c::getStayNo())) { - if (!dKy_contrast_flg_get()) { - dKy_contrast_flg_set(true); - dKy_change_colpat(4); - } - - i_this->mbIsActive = true; - } else { - if (dKy_contrast_flg_get()) { - dKy_contrast_flg_set(false); - dKy_change_colpat(0); - } - - i_this->mbIsActive = false; + if (i_this->mSwitchNo != 0xFF && dComIfGs_isSwitch(i_this->mSwitchNo, dComIfGp_roomControl_getStayNo())) { + if (!dKy_contrast_flg_get()) { + dKy_contrast_flg_set(true); + dKy_change_colpat(4); } + + i_this->mbIsActive = true; + } else { + if (dKy_contrast_flg_get()) { + dKy_contrast_flg_set(false); + dKy_change_colpat(0); + } + + i_this->mbIsActive = false; } } } else if (!i_this->mbRoomActive) { - if (i_this->tevStr.mRoomNo != dStage_roomControl_c::getStayNo()) { - if (i_this->mSwitchNo != 0xFF) { - if (dComIfGs_isSwitch(i_this->mSwitchNo, i_this->tevStr.mRoomNo)) { - if (!dKy_contrast_flg_get()) { - dKy_contrast_flg_set(true); - dKy_change_colpat(4); - } - - i_this->mbIsActive = true; - } else { - if (dKy_contrast_flg_get()) { - dKy_contrast_flg_set(false); - dKy_change_colpat(0); - } - - i_this->mbIsActive = false; + if (actor->tevStr.mRoomNo != dComIfGp_roomControl_getStayNo()) { + if (i_this->mSwitchNo != 0xFF && dComIfGs_isSwitch(i_this->mSwitchNo, actor->tevStr.mRoomNo)) { + if (!dKy_contrast_flg_get()) { + dKy_contrast_flg_set(true); + dKy_change_colpat(4); } + + i_this->mbIsActive = true; + } else { + if (dKy_contrast_flg_get()) { + dKy_contrast_flg_set(false); + dKy_change_colpat(0); + } + + i_this->mbIsActive = false; } } - } else if (i_this->tevStr.mRoomNo != dStage_roomControl_c::getStayNo()) { - fopAc_ac_c* player = dComIfGp_getPlayer(0); + } else if (actor->tevStr.mRoomNo != dComIfGp_roomControl_getStayNo()) { + fopAc_ac_c* player = (fopAc_ac_c*)dComIfGp_getPlayer(0); if (!i_this->mbIsActive && dKy_contrast_flg_get()) { if (!i_this->mbVisible) { cXyz pos; - pos.x = cM_scos(0) * cM_ssin(player->shape_angle.y); + s16 y = player->shape_angle.y; + pos.x = cM_scos(0) * cM_ssin(y); pos.y = cM_ssin(0); - pos.z = cM_scos(0) * cM_scos(player->shape_angle.y); - i_this->current.pos = player->current.pos + pos * -100.0f; - i_this->current.angle.y = player->current.angle.y; - i_this->shape_angle.y = player->shape_angle.y; + pos.z = cM_scos(0) * cM_scos(y); + actor->current.pos = player->current.pos + pos * -100.0f; + actor->current.angle.y = player->current.angle.y; + actor->shape_angle.y = player->shape_angle.y; } i_this->mbVisible = true; } @@ -120,16 +117,22 @@ static BOOL daKytag03_IsDelete(kytag03_class* i_this) { /* 00000514-00000544 .text daKytag03_Delete__FP13kytag03_class */ static BOOL daKytag03_Delete(kytag03_class* i_this) { - dComIfG_resDelete(&i_this->mPhs, "M_DOOR"); + dComIfG_resDeleteDemo(&i_this->mPhs, "M_DOOR"); return TRUE; } /* 00000544-00000604 .text daKytag03_Create__FP10fopAc_ac_c */ static cPhs_State daKytag03_Create(fopAc_ac_c* i_ac) { kytag03_class* i_this = (kytag03_class*)i_ac; +#if VERSION == VERSION_DEMO + cPhs_State ret = dComIfG_resLoad(&i_this->mPhs, "M_DOOR"); + if (ret == cPhs_COMPLEATE_e) { + fopAcM_SetupActor(i_this, kytag03_class); +#else fopAcM_SetupActor(i_this, kytag03_class); cPhs_State ret = dComIfG_resLoad(&i_this->mPhs, "M_DOOR"); if (ret == cPhs_COMPLEATE_e) { +#endif if (!fopAcM_entrySolidHeap(i_this, useHeapInit, 0x4c30)) { return cPhs_ERROR_e; } diff --git a/src/d/actor/d_a_kytag07.cpp b/src/d/actor/d_a_kytag07.cpp index 50f98a408..c4d9262d2 100644 --- a/src/d/actor/d_a_kytag07.cpp +++ b/src/d/actor/d_a_kytag07.cpp @@ -75,17 +75,24 @@ static BOOL daKytag07_IsDelete(kytag07_class*) { /* 000002B0-000002C8 .text daKytag07_Delete__FP13kytag07_class */ static BOOL daKytag07_Delete(kytag07_class*) { - dKy_getEnvlight().mbDayNightTactStop = false; + dScnKy_env_light_c& env_light = dKy_getEnvlight(); + env_light.mbDayNightTactStop = false; return TRUE; } /* 000002C8-00000350 .text daKytag07_Create__FP10fopAc_ac_c */ -static cPhs_State daKytag07_Create(fopAc_ac_c* i_ac) { - dScnKy_env_light_c& envLight = dKy_getEnvlight(); - kytag07_class* i_this = (kytag07_class*)i_ac; - fopAcM_SetupActor(i_this, kytag07_class); +static cPhs_State daKytag07_Create(fopAc_ac_c* i_this) { + kytag07_class* a_this = (kytag07_class*)i_this; + dScnKy_env_light_c& env_light = dKy_getEnvlight(); +#if VERSION == VERSION_DEMO if (strcmp(dComIfGp_getStartStageName(), "GTower") != 0) - envLight.mbDayNightTactStop = true; + env_light.mbDayNightTactStop = true; + fopAcM_SetupActor(a_this, kytag07_class); +#else + fopAcM_SetupActor(a_this, kytag07_class); + if (strcmp(dComIfGp_getStartStageName(), "GTower") != 0) + env_light.mbDayNightTactStop = true; +#endif return cPhs_COMPLEATE_e; } diff --git a/src/d/actor/d_a_mmusic.cpp b/src/d/actor/d_a_mmusic.cpp index 8cfc911f8..900c107b7 100644 --- a/src/d/actor/d_a_mmusic.cpp +++ b/src/d/actor/d_a_mmusic.cpp @@ -13,12 +13,13 @@ namespace daMmusic { namespace { struct Attr_c { - /* 0x00 */ u32 mTimer; + /* 0x00 */ u16 field_0x00; + /* 0x02 */ u16 field_0x02; /* 0x04 */ u16 field_0x04; }; static const Attr_c L_attr = { - 120, 180, + 0, 120, 180, }; inline const Attr_c & attr() { return L_attr; } @@ -59,14 +60,16 @@ cPhs_State daMmusic::Act_c::_create() { fopAcM_SetupActor(this, Act_c); cPhs_State ret = cPhs_COMPLEATE_e; - if (fopAcM_entrySolidHeap(this, solidHeapCB, 0)) { - set_mtx(); - fopAcM_SetMtx(this, mMtx); - field_0x298 = Macore_is_playing(); - fopAcM_setCullSizeSphere(this, 0.0f, 0.0f, 0.0f, 300.0f); - init_se(); - } else { - ret = cPhs_ERROR_e; + if (ret == cPhs_COMPLEATE_e) { + if (fopAcM_entrySolidHeap(this, solidHeapCB, 0)) { + set_mtx(); + fopAcM_SetMtx(this, mMtx); + field_0x298 = Macore_is_playing(); + fopAcM_setCullSizeSphere(this, 0.0f, 0.0f, 0.0f, 300.0f); + init_se(); + } else { + ret = cPhs_ERROR_e; + } } return ret; } diff --git a/src/d/actor/d_a_npc_bs1.cpp b/src/d/actor/d_a_npc_bs1.cpp index 7077a7915..f8e1f0060 100644 --- a/src/d/actor/d_a_npc_bs1.cpp +++ b/src/d/actor/d_a_npc_bs1.cpp @@ -2212,7 +2212,7 @@ BOOL daNpc_Bs1_c::CreateHeap() { } mpMorf->getModel()->setUserArea((u32)this); mAcchCir.SetWall(30.0f, 0.0f); - mAcch.Set(¤t.pos, &old.pos, this, 1, &mAcchCir, &speed); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this)); mpShopCursor = ShopCursor_create((J3DModelData*)dComIfG_getObjectRes("Bs", BS_INDEX_BMD_SHOP_CURSOR01), (J3DAnmTevRegKey*)dComIfG_getObjectRes("Bs", BS_INDEX_BRK_SHOP_CURSOR01), l_HIO.mChild[mType].m30); diff --git a/src/d/actor/d_a_npc_btsw2.cpp b/src/d/actor/d_a_npc_btsw2.cpp index dd42c6731..cc06b0c8f 100644 --- a/src/d/actor/d_a_npc_btsw2.cpp +++ b/src/d/actor/d_a_npc_btsw2.cpp @@ -108,11 +108,10 @@ static BOOL nodeCallBack(J3DNode* node, int calcTiming) { u16 jointNo = joint->getJntNo(); mDoMtx_stack_c::copy(model->getAnmMtx(jointNo)); if (jointNo == i_this->m_jnt.getHeadJntNum()) { - mDoMtx_stack_c::multVec(&a_att_pos_offst, &i_this->mAttPos); + mDoMtx_stack_c::multVec(&a_att_pos_offst, &i_this->getAttentionBasePos()); Mtx sp14; cMtx_copy(mDoMtx_stack_c::get(), sp14); - cXyz sp8; - mDoMtx_multVecZero(sp14, &sp8); + cXyz sp8(sp14[0][3], sp14[1][3], sp14[2][3]); sp14[0][3] = sp14[1][3] = sp14[2][3] = 0.0f; mDoMtx_stack_c::transS(sp8); mDoMtx_stack_c::YrotM(i_this->current.angle.y + i_this->m_jnt.getHead_y()); @@ -382,7 +381,7 @@ BOOL daNpc_Btsw2_c::CreateHeap() { modelData->getJointNodePointer(m_jnt.getBackboneJntNum())->setCallBack(nodeCallBack); mpMorf->getModel()->setUserArea((u32)this); mAcchCir.SetWall(30.0f, 0.0f); - mObjAcch.Set(¤t.pos, &old.pos, this, 1, &mAcchCir, &speed); + mObjAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this)); return TRUE; } @@ -400,7 +399,7 @@ BOOL daNpc_Btsw2_c::CreateInit() { setCollision(60.0f, 150.0f); m724 = 0; mPathNo = fopAcM_GetParamBit(fopAcM_GetParam(this), 0x10, 8); - mpPath = dPath_GetRoomPath(mPathNo, current.roomNo); + mpPath = dPath_GetRoomPath(mPathNo, fopAcM_GetRoomNo(this)); mFinalPathPntIdx = mpPath->m_num - 1; m73E = 1.0f + cM_rndF(3.0f); m742 = 90.0f + cM_rndF(300.0f); @@ -555,7 +554,12 @@ cPhs_State daNpc_Btsw2_c::_create() { /* 00001C34-00001C8C .text _delete__13daNpc_Btsw2_cFv */ BOOL daNpc_Btsw2_c::_delete() { dComIfG_resDelete(&mPhs, m_arc_name); - if (heap && mpMorf) { +#if VERSION == VERSION_DEMO + if (mpMorf) +#else + if (heap && mpMorf) +#endif + { mpMorf->stopZelAnime(); } return TRUE; diff --git a/src/d/actor/d_a_npc_ji1.cpp b/src/d/actor/d_a_npc_ji1.cpp index fb5a05f4b..c51f6905d 100644 --- a/src/d/actor/d_a_npc_ji1.cpp +++ b/src/d/actor/d_a_npc_ji1.cpp @@ -2182,7 +2182,7 @@ BOOL daNpc_Ji1_c::teachSPRollCutAction(void*) { temp.z -= field_0xC9C * cM_scos(current.angle.y); f32 temp2 = 45.0f; - if(field_0x434.ChkWallHit()) { + if(mAcch.ChkWallHit()) { temp2 = 10.0f; } @@ -3262,9 +3262,9 @@ BOOL daNpc_Ji1_c::CreateHeap() { field_0x330->getModel()->setUserArea((u32)this); - field_0x5F8.SetWall(60.0f, 50.0f); - field_0x434.Set(¤t.pos, &old.pos, this, 1, &field_0x5F8, &speed); - field_0x434.OnLineCheck(); + mAcchCir.SetWall(60.0f, 50.0f); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this)); + mAcch.OnLineCheck(); field_0xC54[0] = dComIfGp_evmng_getEventIdx("Ji1_StartSpeak"); field_0xC54[1] = dComIfGp_evmng_getEventIdx("Ji1_Speak"); @@ -3469,8 +3469,8 @@ BOOL daNpc_Ji1_c::_execute() { s8 roomNo = fopAcM_GetRoomNo(this); u32 sound; - if(field_0x434.ChkGroundHit()) { - sound = dComIfG_Bgsp()->GetMtrlSndId(field_0x434.m_gnd); + if(mAcch.ChkGroundHit()) { + sound = dComIfG_Bgsp()->GetMtrlSndId(mAcch.m_gnd); } else { sound = 0; @@ -3535,10 +3535,10 @@ BOOL daNpc_Ji1_c::_execute() { eyePos.set(current.pos.x, current.pos.y + 150.0f, current.pos.z); fopAcM_posMoveF(this, field_0x638.GetCCMoveP()); cXyz temp(current.pos); - field_0x434.CrrPos(*dComIfG_Bgsp()); + mAcch.CrrPos(*dComIfG_Bgsp()); field_0xC40 = current.pos - temp; - tevStr.mRoomNo = dComIfG_Bgsp()->GetRoomId(field_0x434.m_gnd); - tevStr.mEnvrIdxOverride = dComIfG_Bgsp()->GetPolyColor(field_0x434.m_gnd); + tevStr.mRoomNo = dComIfG_Bgsp()->GetRoomId(mAcch.m_gnd); + tevStr.mEnvrIdxOverride = dComIfG_Bgsp()->GetPolyColor(mAcch.m_gnd); set_mtx(); field_0x6B0.SetC(current.pos); dComIfG_Ccsp()->Set(&field_0x6B0); @@ -3579,7 +3579,7 @@ BOOL daNpc_Ji1_c::_draw() { cXyz temp(current.pos.x, current.pos.y + 150.0f, current.pos.z); field_0x3F0 = dComIfGd_setShadow( field_0x3F0, 1, field_0x330->getModel(), &temp, 800.0f, 20.0f, - current.pos.y, field_0x434.GetGroundH(), field_0x434.m_gnd, &tevStr + current.pos.y, mAcch.GetGroundH(), mAcch.m_gnd, &tevStr ); if(field_0x3F0 != 0 && field_0xD84 != 0) { dComIfGd_addRealShadow(field_0x3F0, mpMorf->getModel()); @@ -3730,7 +3730,7 @@ void daNpc_Ji1_c::BackSlide(f32 param_1, f32 param_2) { temp.x -= field_0xC9C * cM_ssin(current.angle.y); temp.z -= field_0xC9C * cM_scos(current.angle.y); - if(field_0x434.ChkWallHit()) { + if(mAcch.ChkWallHit()) { param_2 *= 0.35f; } diff --git a/src/d/actor/d_a_npc_kamome.cpp b/src/d/actor/d_a_npc_kamome.cpp index a72e1a2d0..2b9141878 100644 --- a/src/d/actor/d_a_npc_kamome.cpp +++ b/src/d/actor/d_a_npc_kamome.cpp @@ -395,7 +395,7 @@ BOOL daNpc_kam_c::init() { mAcchCirs[0].SetWall(20.0f, 50.0f); mAcchCirs[1].SetWall(-20.0f, 50.0f); - mAcch.Set(¤t.pos, &old.pos, this, ARRAY_SIZE(mAcchCirs), mAcchCirs, &speed); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, ARRAY_SIZE(mAcchCirs), mAcchCirs, fopAcM_GetSpeed_p(this)); mAcch.ClrRoofNone(); mAcch.SetRoofCrrHeight(20.0f); mAcch.OnLineCheck(); diff --git a/src/d/actor/d_a_npc_md.cpp b/src/d/actor/d_a_npc_md.cpp index 246ea6dbe..d7af68d2d 100644 --- a/src/d/actor/d_a_npc_md.cpp +++ b/src/d/actor/d_a_npc_md.cpp @@ -886,7 +886,7 @@ BOOL daNpc_Md_c::createHeap() { mAcchCir[0].SetWall(20.0f, 20.0f); mAcchCir[1].SetWall(60.0f, 20.0f); - mAcch.Set(¤t.pos, &old.pos, this, ARRAY_SIZE(mAcchCir), mAcchCir, &speed); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, ARRAY_SIZE(mAcchCir), mAcchCir, fopAcM_GetSpeed_p(this)); mAcch.ClrRoofNone(); mAcch.SetRoofCrrHeight(120.0f); mAcch.OnLineCheck(); diff --git a/src/d/actor/d_a_npc_nz.cpp b/src/d/actor/d_a_npc_nz.cpp index 80e905004..f0ce3acaa 100644 --- a/src/d/actor/d_a_npc_nz.cpp +++ b/src/d/actor/d_a_npc_nz.cpp @@ -848,7 +848,7 @@ BOOL daNpc_Nz_c::createInit() { modeProcInit(0); mAcchCir.SetWall(30.0f, 10.0f); - mAcch.Set(¤t.pos, &old.pos, this, 1, &mAcchCir, &speed); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this)); mAcch.OnLineCheckNone(); mAcch.SetWallNone(); mAcch.SetRoofNone(); diff --git a/src/d/actor/d_a_npc_os.cpp b/src/d/actor/d_a_npc_os.cpp index 72177f3ea..f4debe7e5 100644 --- a/src/d/actor/d_a_npc_os.cpp +++ b/src/d/actor/d_a_npc_os.cpp @@ -290,7 +290,7 @@ BOOL daNpc_Os_c::createHeap() { mAcchCir[0].SetWall(20.0f, 40.0f); mAcchCir[1].SetWall(60.0f, 40.0f); - mAcch.Set(¤t.pos, &old.pos, this, 2, &mAcchCir[0], &speed); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 2, &mAcchCir[0], fopAcM_GetSpeed_p(this)); mAcch.OnLineCheck(); mAcch.ClrRoofNone(); mAcch.SetRoofCrrHeight(120.0f); diff --git a/src/d/actor/d_a_npc_people.cpp b/src/d/actor/d_a_npc_people.cpp index 14e3b0ba0..34194fb2d 100644 --- a/src/d/actor/d_a_npc_people.cpp +++ b/src/d/actor/d_a_npc_people.cpp @@ -4369,7 +4369,7 @@ BOOL daNpcPeople_c::createHeap() { mpMorf->getModel()->setUserArea((u32)this); mAcchCir.SetWall(30.0f, 30.0f); - mObjAcch.Set(¤t.pos, &old.pos, this, 1, &mAcchCir, &speed, ¤t.angle, &shape_angle); + mObjAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this)); if(l_etc_bmd_ix_tbl[mNpcType][mbIsNight] >= 0) { J3DModelData* temp = (J3DModelData*)(dComIfG_getObjectIDRes(l_arcname_tbl[mNpcType], l_etc_bmd_ix_tbl[mNpcType][mbIsNight])); diff --git a/src/d/actor/d_a_npc_roten.cpp b/src/d/actor/d_a_npc_roten.cpp index 45404ef81..24e616fb2 100644 --- a/src/d/actor/d_a_npc_roten.cpp +++ b/src/d/actor/d_a_npc_roten.cpp @@ -1709,7 +1709,7 @@ BOOL daNpcRoten_c::createHeap() { mpMorf->getModel()->setUserArea((u32)this); mAcchCir.SetWall(30.0f, 30.0f); - mObjAcch.Set(¤t.pos, &old.pos, this, 1, &mAcchCir, &speed, ¤t.angle, &shape_angle); + mObjAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this)); return true; } diff --git a/src/d/actor/d_a_obj_Ygush00.cpp b/src/d/actor/d_a_obj_Ygush00.cpp index 342b8889e..8bd9e5179 100644 --- a/src/d/actor/d_a_obj_Ygush00.cpp +++ b/src/d/actor/d_a_obj_Ygush00.cpp @@ -20,18 +20,20 @@ namespace { static const char l_arcname[] = "Ygush00"; }; -#ifdef DEBUG -#include "weak_bss_936_to_1036.h" // IWYU pragma: keep +#if VERSION == VERSION_DEMO static daObjYgush00_HIO_c l_HIO; -#endif daObjYgush00_HIO_c::daObjYgush00_HIO_c() { - + mNo = -1; + m05 = 0; + m06 = 0; + m07 = 0; } void daObjYgush00_HIO_c::genMessage(JORMContext* ctx) { ctx->genCheckBox(NULL, NULL, 0, 0, NULL, 0, 0, 0, 0); // placeholder } +#endif /* 00000078-0000009C .text solidHeapCB__14daObjYgush00_cFP10fopAc_ac_c */ BOOL daObjYgush00_c::solidHeapCB(fopAc_ac_c* ac) { @@ -51,7 +53,7 @@ bool daObjYgush00_c::create_heap() { J3DAnmTransform * pBck = static_cast(dComIfG_getObjectRes(l_arcname, bck_table[mType])); if (!pModelData || !pBtk || !pBck) { - JUT_ASSERT(207, FALSE); + JUT_ASSERT(VERSION_SELECT(203, 207, 207, 207), FALSE); ret = false; } else { mpModel = mDoExt_J3DModel__create(pModelData, 0x80000, 0x11000222); @@ -88,17 +90,17 @@ cPhs_State daObjYgush00_c::_create() { fopAcM_setCullSizeBox(this, scale.x * -80.0f, 0.0f, scale.z * -80.0f, scale.x * 80.0f, scale.y * 125.0f, scale.z * 80.0f); - -#ifdef DEBUG - if (l_HIO.mNo < 0) { - l_HIO.mNo = mDoHIO_createChild("", &l_HIO); - } -#endif } else { ret = cPhs_ERROR_e; } } +#if VERSION == VERSION_DEMO + if (l_HIO.mNo < 0) { + l_HIO.mNo = mDoHIO_createChild("湧き水", &l_HIO); + } +#endif + return ret; } @@ -106,7 +108,7 @@ cPhs_State daObjYgush00_c::_create() { bool daObjYgush00_c::_delete() { dComIfG_resDelete(&mPhase, l_arcname); -#ifdef DEBUG +#if VERSION == VERSION_DEMO if (l_HIO.mNo >= 0) { mDoHIO_deleteChild(l_HIO.mNo); l_HIO.mNo = -1; diff --git a/src/d/actor/d_a_obj_barrel.cpp b/src/d/actor/d_a_obj_barrel.cpp index 783c9df2b..b859270e2 100644 --- a/src/d/actor/d_a_obj_barrel.cpp +++ b/src/d/actor/d_a_obj_barrel.cpp @@ -114,7 +114,7 @@ cPhs_State daObjBarrel::Act_c::_create() { if (rt == cPhs_COMPLEATE_e) { if(fopAcM_entrySolidHeap(this, solidHeapCB, 0x820) != 0) { mAcchCir.SetWall(30.0f, l_l_radius); - mAcch.Set(¤t.pos, &old.pos, this, 1, &mAcchCir, &speed, ¤t.angle, &shape_angle); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this)); mAcch.ClrWaterNone(); fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); cull_set_draw(); diff --git a/src/d/actor/d_a_obj_dragonhead.cpp b/src/d/actor/d_a_obj_dragonhead.cpp index a3bba03c1..a36db003d 100644 --- a/src/d/actor/d_a_obj_dragonhead.cpp +++ b/src/d/actor/d_a_obj_dragonhead.cpp @@ -56,7 +56,7 @@ namespace daObjDragonhead_prm { /* 00000098-00000228 .text CreateHeap__17daObjDragonhead_cFv */ BOOL daObjDragonhead_c::CreateHeap() { J3DModelData* model_data = (J3DModelData*)(dComIfG_getObjectRes("Qdghd", QDGHD_BDL_QDGHD)); - JUT_ASSERT(0xA0, model_data != NULL); + JUT_ASSERT(VERSION_SELECT(158, 160, 160, 160), model_data != NULL); mpModel = mDoExt_J3DModel__create(model_data, 0x00, 0x11020203); if (!mpModel) return FALSE; @@ -117,7 +117,7 @@ cPhs_State daObjDragonhead_c::_create() { cPhs_State ret = dComIfG_resLoad(&mPhs, "Qdghd"); if (ret == cPhs_COMPLEATE_e) { - if (fopAcM_entrySolidHeap(this, CheckCreateHeap, 0x10500) == 0) { + if (fopAcM_entrySolidHeap(this, CheckCreateHeap, VERSION_SELECT(0x300, 0x10500, 0x10500, 0x10500)) == 0) { ret = cPhs_ERROR_e; } else { CreateInit(); @@ -128,8 +128,14 @@ cPhs_State daObjDragonhead_c::_create() { } bool daObjDragonhead_c::_delete() { - if (heap != NULL && field_0x40c == 1) + if ( +#if VERSION > VERSION_DEMO + heap != NULL && +#endif + field_0x40c == 1 + ) { dComIfG_Bgsp()->Release(mpBgW); + } mDoAud_seDeleteObject(&mSphCenter); dComIfG_resDelete(&mPhs, "Qdghd"); diff --git a/src/d/actor/d_a_obj_hbrf1.cpp b/src/d/actor/d_a_obj_hbrf1.cpp index b069c4949..45e78a901 100644 --- a/src/d/actor/d_a_obj_hbrf1.cpp +++ b/src/d/actor/d_a_obj_hbrf1.cpp @@ -71,8 +71,7 @@ BOOL daObjHbrf1::Act_c::Delete() { BOOL daObjHbrf1::Act_c::Mthd_Delete() { BOOL ret = MoveBGDelete(); - // The demo version (and thus the demo debug maps) used dComIfG_deleteObjectRes here instead. - dComIfG_resDelete(&mPhs, M_arcname); + dComIfG_resDeleteDemo(&mPhs, M_arcname); return ret; } diff --git a/src/d/actor/d_a_obj_hfuck1.cpp b/src/d/actor/d_a_obj_hfuck1.cpp index 4a3cffb87..cae384f92 100644 --- a/src/d/actor/d_a_obj_hfuck1.cpp +++ b/src/d/actor/d_a_obj_hfuck1.cpp @@ -13,6 +13,7 @@ #include "d/d_priority.h" #include "d/actor/d_a_player.h" #include "m_Do/m_Do_ext.h" +#include "m_Do/m_Do_hostIO.h" #include "m_Do/m_Do_mtx.h" namespace { @@ -43,13 +44,29 @@ namespace { // cM3dGSphS { /* Center */ 0.0f, 0.0f, 0.0f, +#if VERSION == VERSION_DEMO + /* Radius */ 35.0f, +#else /* Radius */ 90.0f, +#endif }, }; static const Vec l_hook_offset = { 0.0f, 0.0f, 0.0f }; }; +#if VERSION == VERSION_DEMO +daObjHfuck1_HIO_c l_HIO; + +daObjHfuck1_HIO_c::daObjHfuck1_HIO_c() { + mNo = -1; + field_0x08 = 90.0f; + field_0x0C = -50.0f; + field_0x10 = 0.0f; + field_0x14 = 0.0f; +} +#endif + /* 00000078-00000100 .text init_mtx__13daObjHfuck1_cFv */ void daObjHfuck1_c::init_mtx() { mpModel->setBaseScale(scale); @@ -70,7 +87,7 @@ bool daObjHfuck1_c::create_heap() { J3DModelData* pModelData = static_cast(dComIfG_getObjectRes(l_arcname, HFUCK1_BDL_HFUCK1)); if (!pModelData) { - JUT_ASSERT(0xf5, FALSE); + JUT_ASSERT(VERSION_SELECT(241, 245, 245, 245), FALSE); ret = false; } else { mpModel = mDoExt_J3DModel__create(pModelData, 0x80000, 0x11000022); @@ -114,6 +131,9 @@ cPhs_State daObjHfuck1_c::_create() { mSph.Set(l_sph_src); mSph.SetStts(&mStts); +#if VERSION == VERSION_DEMO + mSph.SetC(current.pos); +#else mDoMtx_stack_c::transS(current.pos); mDoMtx_stack_c::XYZrotM(shape_angle); mDoMtx_stack_c::transM(0.0f, 0.0f, -50.0f); @@ -121,12 +141,19 @@ cPhs_State daObjHfuck1_c::_create() { mDoMtx_stack_c::multVecZero(¢er); mSph.SetC(center); mSph.SetR(90.0f); +#endif } } else { ret = cPhs_ERROR_e; } } +#if VERSION == VERSION_DEMO + if (l_HIO.mNo < 0) { + l_HIO.mNo = mDoHIO_createChild("フックショットの的", &l_HIO); + } +#endif + return ret; } @@ -134,14 +161,28 @@ cPhs_State daObjHfuck1_c::_create() { bool daObjHfuck1_c::_delete() { dComIfG_resDelete(&mPhs, l_arcname); - if (heap != NULL && mpBgW != NULL) { +#if VERSION == VERSION_DEMO + if (mpBgW != NULL) +#else + if (heap != NULL && mpBgW != NULL) +#endif + { if (mpBgW->ChkUsed()) { dComIfG_Bgsp()->Release(mpBgW); } +#if VERSION > VERSION_DEMO mpBgW = NULL; +#endif } +#if VERSION == VERSION_DEMO + if (l_HIO.mNo >= 0) { + mDoHIO_deleteChild(l_HIO.mNo); + l_HIO.mNo = -1; + } +#endif + return true; } @@ -149,10 +190,22 @@ bool daObjHfuck1_c::_delete() { bool daObjHfuck1_c::_execute() { mpBgW->Move(); mStts.Move(); + +#if VERSION == VERSION_DEMO + mSph.SetR(l_HIO.field_0x08); + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::XYZrotM(shape_angle); + mDoMtx_stack_c::transM(0.0f, 0.0f, l_HIO.field_0x0C); + cXyz center; + mDoMtx_stack_c::multVecZero(¢er); + mSph.SetC(center); +#endif + if (mpHookshotActor != NULL) { if (fopAcM_IsActor(mpHookshotActor) == TRUE && fopAcM_GetName(mpHookshotActor) == PROC_HOOKSHOT) { - if (daPy_getPlayerActorClass() != NULL) { - daPy_getPlayerActorClass()->setHookshotCarryOffset(fopAcM_GetID(this), (const cXyz*)&l_hook_offset); + daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); + if (player != NULL) { + player->setHookshotCarryOffset(fopAcM_GetID(this), (const cXyz*)&l_hook_offset); } } mpHookshotActor = NULL; diff --git a/src/d/actor/d_a_obj_hha.cpp b/src/d/actor/d_a_obj_hha.cpp index 930535b5b..135eb5ca6 100644 --- a/src/d/actor/d_a_obj_hha.cpp +++ b/src/d/actor/d_a_obj_hha.cpp @@ -12,7 +12,12 @@ #include "d/d_priority.h" #include "d/res/res_hha.h" -const dCcD_SrcCyl daObjHha_c::M_cyl_data = { +#if VERSION == VERSION_DEMO +dCcD_SrcCyl l_daObjHha_cyl_data = +#else +const dCcD_SrcCyl daObjHha_c::M_cyl_data = +#endif +{ // dCcD_SrcGObjInf { /* Flags */ 0, @@ -42,6 +47,7 @@ const dCcD_SrcCyl daObjHha_c::M_cyl_data = { }, }; +#if VERSION > VERSION_DEMO const dCcD_SrcSph daObjHha_c::M_sph_data = { // dCcD_SrcGObjInf { @@ -70,6 +76,7 @@ const dCcD_SrcSph daObjHha_c::M_sph_data = { /* Radius */ 220.0f, }, }; +#endif const HHA_RES_FILE_ID l_daObjHha_bdl_idx_table[2] = {HHA_BDL_HHA1, HHA_BDL_HHA2}; const HHA_RES_FILE_ID l_daObjHha_dzb_idx_table[2] = {HHA_DZB_HHA1, HHA_DZB_HHA2}; @@ -88,16 +95,18 @@ void daObjHhaPart_c::init_data(float yPos, float yTar, u16 speed, u8 i, u8 isMid mDeltaY = (yTar - yPos) / speed; mPosDeltaDir = mPosTarget - mPos; mPosDeltaDir.normalizeRS(); - setExeProc(&daObjHhaPart_c::exe_normal); + mCbExec = &daObjHhaPart_c::exe_normal; mCbDraw = &daObjHhaPart_c::draw_normal; mbMid = isMiddle; } /* 00000170-00000224 .text set_mdl_area__14daObjHhaPart_cFPCci */ BOOL daObjHhaPart_c::set_mdl_area(const char* arcname, int index) { - BOOL ret = FALSE; - J3DModelData* mdl_data = static_cast(dComIfG_getObjectRes(arcname, index)); - JUT_ASSERT(0x1d9, mdl_data != NULL); + J3DModelData* mdl_data; + BOOL ret; + ret = FALSE; + mdl_data = static_cast(dComIfG_getObjectRes(arcname, index)); + JUT_ASSERT(VERSION_SELECT(410, 473, 473, 473), mdl_data != NULL); if(mdl_data != NULL){ mpModel = mDoExt_J3DModel__create(mdl_data, 0, 0x11020203); ret = TRUE; @@ -183,6 +192,9 @@ void daObjHhaSplash_c::create_s(u16 particleID, cXyz* pPos, float offsetY, float mPos += calcVec; mBasePos = mPos; mAngle = *pAngle; +#if VERSION == VERSION_DEMO + mpEmitter = +#endif dComIfGp_particle_set(particleID, &mPos, &mAngle, NULL, 255, &mSplashCb); mbIsActive = true; } @@ -192,19 +204,19 @@ BOOL daObjHhaYgush_c::create_area(const char* arcname) { BOOL ret = FALSE; J3DModelData* mdl_data = static_cast(dComIfG_getObjectRes(arcname, HHA_BDL_YGSTP00)); - JUT_ASSERT(0x280, mdl_data != NULL); + JUT_ASSERT(VERSION_SELECT(577, 640, 640, 640), mdl_data != NULL); if(mdl_data != NULL){ M_mdl = mDoExt_J3DModel__create(mdl_data, 0x80000, 0x11000222); - JUT_ASSERT(0x289, M_mdl != NULL); + JUT_ASSERT(VERSION_SELECT(586, 649, 649, 649), M_mdl != NULL); if(M_mdl != NULL){ J3DAnmTextureSRTKey* btk_data = static_cast(dComIfG_getObjectRes(arcname, HHA_BTK_YGSTP00)); - JUT_ASSERT(0x290, btk_data != NULL); + JUT_ASSERT(VERSION_SELECT(593, 656, 656, 656), btk_data != NULL); if(mBtk.init(M_mdl->getModelData(), btk_data, true, J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1, false, false) != false){ J3DAnmTransform* bck_data = static_cast(dComIfG_getObjectRes(arcname, HHA_BCK_YGSTP00)); - JUT_ASSERT(0x295, bck_data != NULL); + JUT_ASSERT(VERSION_SELECT(598, 661, 661, 661), bck_data != NULL); if(mBck.init(M_mdl->getModelData(), bck_data, true, J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1, false) != false){ ret = TRUE; @@ -253,7 +265,7 @@ void daObjHhaYgush_c::draw() { } } -const char daObjHha_c::M_arcname[4] = "Hha"; +const char daObjHha_c::M_arcname[] = "Hha"; /* 00000C2C-00000C4C .text solidHeapCB__10daObjHha_cFP10fopAc_ac_c */ int daObjHha_c::solidHeapCB(fopAc_ac_c* i_this) { @@ -365,7 +377,9 @@ cPhs_State daObjHha_c::_create() { /* 000018EC-000019EC .text _delete__10daObjHha_cFv */ bool daObjHha_c::_delete() { int i; +#if VERSION > VERSION_DEMO if(heap != NULL){ +#endif for(i = 0; i < 2; i++){ cBgW* bgw = mPartA[i].mpBgw; if(bgw != NULL){ @@ -379,11 +393,15 @@ bool daObjHha_c::_delete() { if(toErase){ dComIfG_Bgsp()->Release(bgw); +#if VERSION > VERSION_DEMO mPartA[i].mpBgw = NULL; +#endif } } } +#if VERSION > VERSION_DEMO } +#endif for(i = 0; i < 2; i++){ mSplashA[i].delete_s(); @@ -429,9 +447,14 @@ void daObjHha_c::init_co() { mCylStts.Init(0xff, 0xff, this); mCyl.SetStts(&mCylStts); +#if VERSION == VERSION_DEMO + mCyl.Set(l_daObjHha_cyl_data); +#else mCyl.Set(M_cyl_data); +#endif mCyl.SetC(center); +#if VERSION > VERSION_DEMO bool doSphInit = false; if(!check_sw() && mIsMiddle == 0){ doSphInit = true; @@ -445,6 +468,7 @@ void daObjHha_c::init_co() { mSph.SetC(center); mSph.SetR(220.0f); } +#endif } /* 00001C64-00001E14 .text get_water_h__10daObjHha_cFv */ @@ -638,10 +662,12 @@ bool daObjHha_c::_execute() { calcVec.y = get_water_h(); mCyl.SetC(calcVec); dComIfG_Ccsp()->Set(&mCyl); +#if VERSION > VERSION_DEMO bool isSphActive = (!check_sw() && mIsMiddle == 0); if(isSphActive){ dComIfG_Ccsp()->Set(&mSph); } +#endif } return TRUE; diff --git a/src/d/actor/d_a_obj_hole.cpp b/src/d/actor/d_a_obj_hole.cpp index 1645f1740..31f1dee8c 100644 --- a/src/d/actor/d_a_obj_hole.cpp +++ b/src/d/actor/d_a_obj_hole.cpp @@ -209,7 +209,7 @@ void daObj_Hole_c::createInit() { fopAcM_setCullSizeFar(this, 10.0f); mAcchCir.SetWall(100.0f, 10.0f); - mAcch.Set(¤t.pos, &old.pos, this, 1, &mAcchCir, &speed); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this)); mAcch.SetWallNone(); mAcch.SetRoofNone(); diff --git a/src/d/actor/d_a_obj_mknjd.cpp b/src/d/actor/d_a_obj_mknjd.cpp index 1e0a8f2cd..46b091589 100644 --- a/src/d/actor/d_a_obj_mknjd.cpp +++ b/src/d/actor/d_a_obj_mknjd.cpp @@ -4,6 +4,7 @@ // #include "d/actor/d_a_obj_mknjd.h" +#include "d/d_s_play.h" #include "d/res/res_mknjd.h" #include "f_op/f_op_actor_mng.h" #include "f_pc/f_pc_manager.h" @@ -85,12 +86,12 @@ static BOOL nodeCallBackL(J3DNode* i_node, int calcTiming) { daObjMknjD::Act_c* actor = (daObjMknjD::Act_c*)mdl->getUserArea(); if (actor != NULL) { - mDoMtx_copy(mdl->getAnmMtx(jntNo), *calc_mtx); + MTXCopy(mdl->getAnmMtx(jntNo), *calc_mtx); MtxTrans(actor->mLeftHalfPos.x, actor->mLeftHalfPos.y, actor->mLeftHalfPos.z, 1); mdl->setAnmMtx(jntNo, *calc_mtx); - mDoMtx_copy(*calc_mtx, j3dSys.mCurrentMtx); + MTXCopy(*calc_mtx, j3dSys.mCurrentMtx); } } @@ -106,12 +107,12 @@ static BOOL nodeCallBackR(J3DNode* i_node, int calcTiming) { daObjMknjD::Act_c* actor = (daObjMknjD::Act_c*)mdl->getUserArea(); if (actor != NULL) { - mDoMtx_copy(mdl->getAnmMtx(jntNo), *calc_mtx); + MTXCopy(mdl->getAnmMtx(jntNo), *calc_mtx); MtxTrans(actor->mRightHalfPos.x, actor->mRightHalfPos.y, actor->mRightHalfPos.z, 1); mdl->setAnmMtx(jntNo, *calc_mtx); - mDoMtx_copy(*calc_mtx, j3dSys.mCurrentMtx); + MTXCopy(*calc_mtx, j3dSys.mCurrentMtx); } } @@ -128,12 +129,12 @@ static BOOL nodeCallBack_Hahen(J3DNode* i_node, int calcTiming) { daObjMknjD::Act_c* actor = (daObjMknjD::Act_c*)mdl->getUserArea(); if (actor != NULL) { - mDoMtx_copy(mdl->getAnmMtx(jntNo), *calc_mtx); + MTXCopy(mdl->getAnmMtx(jntNo), *calc_mtx); MtxTrans(actor->mShardPositions[shardIdx].x, actor->mShardPositions[shardIdx].y, actor->mShardPositions[shardIdx].z, 1); mdl->setAnmMtx(jntNo, *calc_mtx); - mDoMtx_copy(*calc_mtx, j3dSys.mCurrentMtx); + MTXCopy(*calc_mtx, j3dSys.mCurrentMtx); } } @@ -166,15 +167,14 @@ s16 daObjMknjD::Act_c::XyEventCB(int) { /* 0000031C-00000620 .text CreateHeap__Q210daObjMknjD5Act_cFv */ BOOL daObjMknjD::Act_c::CreateHeap() { - const void* temp_r26; // Fakematch to get it to use the same register for model_data_d and jntName + J3DModelData* model_data_d; if (m043E == true) { - temp_r26 = dComIfG_getObjectRes(M_arcname, MKNJD_BDL_MKNJK); + model_data_d = (J3DModelData*)dComIfG_getObjectRes(M_arcname, MKNJD_BDL_MKNJK); } else { - temp_r26 = dComIfG_getObjectRes(M_arcname, MKNJD_BDL_MKNJD); + model_data_d = (J3DModelData*)dComIfG_getObjectRes(M_arcname, MKNJD_BDL_MKNJD); } - J3DModelData* model_data_d = (J3DModelData*)temp_r26; J3DModelData* model_data_h = (J3DModelData*)dComIfG_getObjectRes(M_arcname, MKNJD_BDL_MKNJH); JUT_ASSERT(0x123, model_data_d != NULL) @@ -183,17 +183,17 @@ BOOL daObjMknjD::Act_c::CreateHeap() { mMainMdl = mDoExt_J3DModel__create(model_data_d, 0x80000, 0x31000002); mBreakMdl = mDoExt_J3DModel__create(model_data_h, 0x80000, 0x11000002); + const char* jntName; if (mMainMdl != NULL && mBreakMdl != NULL) { JUTNameTab* nameTable = mMainMdl->getModelData()->getJointName(); for (u16 i = 0; i < mMainMdl->getModelData()->getJointNum(); i++) { - // const char* jntName = nameTable->getName(i); - temp_r26 = nameTable->getName(i); + jntName = nameTable->getName(i); - if (strcmp("MknjL", (const char*)temp_r26) == 0) { + if (strcmp("MknjL", jntName) == 0) { mMainMdl->getModelData()->getJointNodePointer(i)->setCallBack(nodeCallBackL); } - else if (strcmp("MknjR", (const char*)temp_r26) == 0) { + else if (strcmp("MknjR", jntName) == 0) { mMainMdl->getModelData()->getJointNodePointer(i)->setCallBack(nodeCallBackR); } } @@ -204,11 +204,10 @@ BOOL daObjMknjD::Act_c::CreateHeap() { nameTable = mBreakMdl->getModelData()->getJointName(); for (u16 i = 0; i < mBreakMdl->getModelData()->getJointNum(); i++) { - // const char* jntName = nameTable->getName(i); - temp_r26 = nameTable->getName(i); + jntName = nameTable->getName(i); for (u16 j = 0; j < 20; j++) { - if (strcmp(daObjMknjD_jointName[j], (const char*)temp_r26) == 0) { + if (strcmp(daObjMknjD_jointName[j], jntName) == 0) { mBreakMdl->getModelData()->getJointNodePointer(i)->setCallBack(nodeCallBack_Hahen); joint_number_table[curTblIdx++] = j; @@ -248,6 +247,9 @@ BOOL daObjMknjD::Act_c::Create() { for (int i = 0; i < 4; i++) { mEmitters[i] = NULL; +#if VERSION == VERSION_DEMO + mSmokeCBs[i] = dPa_smokeEcallBack(0); +#endif } if (m043E == true) { @@ -320,11 +322,20 @@ cPhs_State daObjMknjD::Act_c::Mthd_Create() { /* 00000B64-00000BDC .text Delete__Q210daObjMknjD5Act_cFv */ BOOL daObjMknjD::Act_c::Delete() { +#if VERSION == VERSION_DEMO + if (mEmitters[2]) { + mSmokeCBs[2].remove(); + } + if (mEmitters[3]) { + mSmokeCBs[3].remove(); + } +#else dComIfGp_att_revivalAleart(); for (int i = 0; i < 4; i++) { - mSmokeCBs[i].end(); + mSmokeCBs[i].remove(); } +#endif return TRUE; } @@ -334,7 +345,7 @@ BOOL daObjMknjD::Act_c::Mthd_Delete() { int bgDeleteResult = MoveBGDelete(); if (fpcM_CreateResult(this) != cPhs_STOP_e) { - dComIfG_resDelete(&mPhs, M_arcname); + dComIfG_resDeleteDemo(&mPhs, M_arcname); } return bgDeleteResult; @@ -348,7 +359,7 @@ void daObjMknjD::Act_c::set_mtx() { mMainMdl->setBaseTRMtx(mDoMtx_stack_c::get()); mBreakMdl->setBaseTRMtx(mDoMtx_stack_c::get()); - mDoMtx_copy(mDoMtx_stack_c::get(), M_tmp_mtx); + cMtx_copy(mDoMtx_stack_c::get(), M_tmp_mtx); } /* 00000CC8-00000D28 .text init_mtx__Q210daObjMknjD5Act_cFv */ @@ -376,12 +387,12 @@ void daObjMknjD::Act_c::setGoal(int i_staffIdx) { /* 00000E04-00000E84 .text setPlayerAngle__Q210daObjMknjD5Act_cFi */ void daObjMknjD::Act_c::setPlayerAngle(int i_staffIdx) { - u32 angle = *dComIfGp_evmng_getMyIntegerP(i_staffIdx, "angle"); + s16 angle = *dComIfGp_evmng_getMyIntegerP(i_staffIdx, "angle"); daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); player->setPlayerPosAndAngle( &player->current.pos, - current.angle.y + (s16)angle + current.angle.y + angle ); } @@ -513,12 +524,14 @@ void daObjMknjD::Act_c::privateCut() { mDoAud_bgmStart(JA_BGM_D_EARTH); } +#if VERSION > VERSION_DEMO if (mSmokeCBs[2].getEmitter() != NULL) { - mSmokeCBs[2].end(); + mSmokeCBs[2].remove(); } if (mSmokeCBs[3].getEmitter() != NULL) { - mSmokeCBs[3].end(); + mSmokeCBs[3].remove(); } +#endif doCutEnd = true; } @@ -683,15 +696,15 @@ bool daObjMknjD::Act_c::daObjMknjD_break() { /* Falling shards */ // After 160 frames, the shards of the broken statue model begin to fall. if (mBreakTimer >= 160) { - int fallingShardNum = 19 - (mBreakTimer - 160); + int i = 19 - (mBreakTimer - 160); - if (fallingShardNum < 0) { - fallingShardNum = 0; + if (i < 0) { + i = 0; } - for (; fallingShardNum < 20; fallingShardNum++) { - mShardHeights[fallingShardNum] -= 2.0f; - mShardPositions[fallingShardNum].y += mShardHeights[fallingShardNum]; + for (; i < 20; i++) { + mShardHeights[i] -= 2.0f; + mShardPositions[i].y += mShardHeights[i]; } } @@ -714,10 +727,16 @@ BOOL daObjMknjD::Act_c::Execute(Mtx** i_mtx) { else if (player != NULL) { cXyz partnerDiff = current.pos - player->current.pos; +#if VERSION > VERSION_DEMO s16 rotDiff = cM_atan2s(partnerDiff.x, partnerDiff.z) - current.angle.y; +#endif f32 absXZ = partnerDiff.absXZ(); - if (absXZ < 800.0f && (rotDiff < -0x4000 || rotDiff > 0x4000)) { + if (absXZ < 800.0f +#if VERSION > VERSION_DEMO + && (rotDiff < -0x4000 || rotDiff > 0x4000) +#endif + ) { if (dComIfGp_checkPlayerStatus1(0, daPyStts1_WIND_WAKER_CONDUCT_e)) { m043F = 1; manage_friend_draw(0); @@ -739,12 +758,18 @@ BOOL daObjMknjD::Act_c::Execute(Mtx** i_mtx) { case 2: if (dComIfGp_evmng_startCheck(mCheckEventIdx) != 0) { if (partner != NULL && player != NULL) { +#if VERSION > VERSION_DEMO s16 rotDiff = cM_atan2s(current.pos.x - partner->current.pos.x, current.pos.z - partner->current.pos.z) - current.angle.y; +#endif cXyz diff = player->current.pos - partner->current.pos; f32 absXZ = diff.absXZ(); - if ((absXZ < 800.0f) && ((rotDiff < -0x4000) || (rotDiff > 0x4000))) { + if ((absXZ < 800.0f) +#if VERSION > VERSION_DEMO + && ((rotDiff < -0x4000) || (rotDiff > 0x4000)) +#endif + ) { fopAcM_orderChangeEventId(this, mDemoEventIdx, 0, 0xFFFF); dComIfGs_onEventBit(m0430); @@ -805,15 +830,27 @@ BOOL daObjMknjD::Act_c::Execute(Mtx** i_mtx) { mDoAud_bgmStop(30); mDoAud_taktModeMuteOff(); +#if VERSION > VERSION_DEMO dComIfGp_att_offAleart(); +#endif if (m043E == true) { +#if VERSION == VERSION_DEMO + m0432 = 0x2B + REG20_S(2); + m0434 = 5 + REG20_S(1); +#else m0432 = 0x2B; m0434 = 5; +#endif } else { +#if VERSION == VERSION_DEMO + m0432 = 0x0E + REG20_S(2); + m0434 = 5 + REG20_S(1); +#else m0432 = 0x0E; m0434 = 5; +#endif } } @@ -822,7 +859,9 @@ BOOL daObjMknjD::Act_c::Execute(Mtx** i_mtx) { privateCut(); if (dComIfGp_evmng_endCheck(mDemoEventIdx)) { +#if VERSION > VERSION_DEMO dComIfGp_att_revivalAleart(); +#endif dComIfGp_event_reset(); fopAcM_delete(this); diff --git a/src/d/actor/d_a_obj_mtest.cpp b/src/d/actor/d_a_obj_mtest.cpp index 24e47b2f7..6a3d17780 100644 --- a/src/d/actor/d_a_obj_mtest.cpp +++ b/src/d/actor/d_a_obj_mtest.cpp @@ -291,7 +291,7 @@ BOOL daObjMtest::Act_c::Delete() { /* 00000960-000009B8 .text Mthd_Delete__Q210daObjMtest5Act_cFv */ BOOL daObjMtest::Act_c::Mthd_Delete() { s32 result = MoveBGDelete(); - dComIfG_resDelete(&mPhase, M_arcname[M_type]); + dComIfG_resDeleteDemo(&mPhase, M_arcname[M_type]); return result; } diff --git a/src/d/actor/d_a_obj_paper.cpp b/src/d/actor/d_a_obj_paper.cpp index 3fa3acd5a..ae956e0f7 100644 --- a/src/d/actor/d_a_obj_paper.cpp +++ b/src/d/actor/d_a_obj_paper.cpp @@ -57,7 +57,11 @@ namespace daObjPaper { }, { /* mResName */ "Ppos", +#if VERSION == VERSION_DEMO + /* mHeapSize */ 0x1000, +#else /* mHeapSize */ 0x04C0, +#endif /* mModelId */ PPOS_BDL_PPOS, /* mEyeOffset */ 0x00, /* mAttentionOffset */ 0x32, @@ -71,7 +75,11 @@ namespace daObjPaper { }, { /* mResName */ "Piwa", +#if VERSION == VERSION_DEMO + /* mHeapSize */ 0x8000, +#else /* mHeapSize */ 0x04C0, +#endif /* mModelId */ PIWA_BDL_PIWA, /* mEyeOffset */ 0x3C, /* mAttentionOffset */ 0x82, @@ -191,7 +199,7 @@ namespace daObjPaper { /* 000006F4-00000730 .text _delete__Q210daObjPaper5Act_cFv */ bool daObjPaper::Act_c::_delete() { - dComIfG_resDelete(&mPhs, attr(mType).mResName); + dComIfG_resDeleteDemo(&mPhs, attr(mType).mResName); return TRUE; } diff --git a/src/d/actor/d_a_obj_toripost.cpp b/src/d/actor/d_a_obj_toripost.cpp index ad4d30bb6..53b270cf4 100644 --- a/src/d/actor/d_a_obj_toripost.cpp +++ b/src/d/actor/d_a_obj_toripost.cpp @@ -943,7 +943,7 @@ void daObjTpost_c::createInit() { modeProcInit(MODE_WAIT); mAcchCir.SetWall(30.0f, 30.0f); - mAcch.Set(¤t.pos, &old.pos, this, 1, &mAcchCir, &speed); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this)); mAcch.SetRoofNone(); gravity = -4.5f; diff --git a/src/d/actor/d_a_obj_tower.cpp b/src/d/actor/d_a_obj_tower.cpp index 304fd3e23..c86274104 100644 --- a/src/d/actor/d_a_obj_tower.cpp +++ b/src/d/actor/d_a_obj_tower.cpp @@ -159,7 +159,11 @@ actor_process_profile_definition g_profile_Obj_Tower = { /* Leaf SubMtd */ &g_fopAc_Method.base, /* Priority */ PRIO_Obj_Tower, /* Actor SubMtd */ &daObj_TowerMethodTable, +#if VERSION == VERSION_DEMO + /* Status */ fopAcStts_NOCULLEXEC_e | fopAcStts_CULL_e | fopAcStts_UNK40000_e, +#else /* Status */ fopAcStts_UNK40000_e, +#endif /* Group */ fopAc_ACTOR_e, /* CullType */ fopAc_CULLBOX_CUSTOM_e, }; diff --git a/src/d/actor/d_a_obj_vfan.cpp b/src/d/actor/d_a_obj_vfan.cpp index 4e7cecdc6..27f5d3297 100644 --- a/src/d/actor/d_a_obj_vfan.cpp +++ b/src/d/actor/d_a_obj_vfan.cpp @@ -111,7 +111,7 @@ BOOL daObjVfan::Act_c::Delete() { BOOL daObjVfan::Act_c::Mthd_Delete() { int res = MoveBGDelete(); if (fpcM_CreateResult(this) != cPhs_STOP_e) { - dComIfG_resDelete(&mPhs, M_arcname); + dComIfG_resDeleteDemo(&mPhs, M_arcname); } return res; } diff --git a/src/d/actor/d_a_player_main.cpp b/src/d/actor/d_a_player_main.cpp index bf32baeb4..b23aeaa01 100644 --- a/src/d/actor/d_a_player_main.cpp +++ b/src/d/actor/d_a_player_main.cpp @@ -12154,7 +12154,7 @@ void daPy_lk_c::playerInit() { m_anm_heap_upper[i].m_buffer = reinterpret_cast(buffer_start); } - mAcch.Set(¤t.pos, &old.pos, this, ARRAY_SIZE(mAcchCir), mAcchCir, &speed, ¤t.angle, &shape_angle); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, ARRAY_SIZE(mAcchCir), mAcchCir, fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this)); mAcch.ClrWaterNone(); mAcch.SetWaterCheckOffset(500.0f); mAcch.OnLineCheck(); diff --git a/src/d/actor/d_a_race_item.cpp b/src/d/actor/d_a_race_item.cpp index 0503f32c0..77c7e2cee 100644 --- a/src/d/actor/d_a_race_item.cpp +++ b/src/d/actor/d_a_race_item.cpp @@ -99,7 +99,7 @@ BOOL daRaceItem_c::CreateInit() { mCyl.SetH(height); mAcchCir.SetWall(30.0f, 30.0f); - mAcch.Set(¤t.pos, &old.pos, this, 1, &mAcchCir, &speed); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this)); mAcch.ClrWaterNone(); mAcch.ClrRoofNone(); diff --git a/src/d/actor/d_a_spc_item01.cpp b/src/d/actor/d_a_spc_item01.cpp index 9c92e8009..015616cee 100644 --- a/src/d/actor/d_a_spc_item01.cpp +++ b/src/d/actor/d_a_spc_item01.cpp @@ -113,7 +113,7 @@ BOOL daSpcItem01_c::CreateInit() { mCyl.SetR(tempVar2); mCyl.SetH(tempVar1); mAcchCir.SetWall(30.0f, 30.0f); - mAcch.Set(¤t.pos, &old.pos, this, 1, &mAcchCir, &speed); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this)); field_0x644 = daSpcItem01_prm::getFlag(this); fopAcM_SetGravity(this, -4.0f); diff --git a/src/d/actor/d_a_spotbox.cpp b/src/d/actor/d_a_spotbox.cpp index d2b859e85..be4f26bb0 100644 --- a/src/d/actor/d_a_spotbox.cpp +++ b/src/d/actor/d_a_spotbox.cpp @@ -85,7 +85,11 @@ actor_process_profile_definition g_profile_SPOTBOX = { /* Leaf SubMtd */ &g_fopAc_Method.base, /* Priority */ PRIO_SPOTBOX, /* Actor SubMtd */ &l_daSpotbox_Method, +#if VERSION == VERSION_DEMO + /* Status */ fopAcStts_NOCULLEXEC_e | fopAcStts_CULL_e | fopAcStts_UNK40000_e, +#else /* Status */ fopAcStts_NOCULLEXEC_e | fopAcStts_CULL_e | fopAcStts_UNK4000_e | fopAcStts_UNK40000_e, +#endif /* Group */ fopAc_ACTOR_e, /* CullType */ fopAc_CULLBOX_CUSTOM_e, }; diff --git a/src/d/actor/d_a_steam_tag.cpp b/src/d/actor/d_a_steam_tag.cpp index c811c9a49..9f2ffc64d 100644 --- a/src/d/actor/d_a_steam_tag.cpp +++ b/src/d/actor/d_a_steam_tag.cpp @@ -130,9 +130,12 @@ BOOL daSteamTag_c::execute() { mCreateTimer--; if (mCreateTimer == 0) { if (createEmitter()) { - // TODO: fakematch? debug map indicates TVec3(s16, s16, s16) constructor was used here, but the codegen doesn't match - // JGeometry::TVec3 angle(current.angle.x, current.angle.y, current.angle.z); - JGeometry::TVec3 angle; + // TODO: Fakematch? The demo debug map indicates TVec3(s16, s16, s16) constructor + // was used here, but just doing that doesn't match for either the demo or retail. + // Assigning x/y/z with 3 individual assignments matches for retail, but doesn't + // match for the demo. However, first using the TVec3(s16, s16, s16) ctor and then + // *also* assigning x/y/z separately matches for both demo and retail. + JGeometry::TVec3 angle(current.angle.x, current.angle.y, current.angle.z); angle.x = current.angle.x; angle.y = current.angle.y; angle.z = current.angle.z; diff --git a/src/d/actor/d_a_swattack.cpp b/src/d/actor/d_a_swattack.cpp index 02f3e6524..db34cdb94 100644 --- a/src/d/actor/d_a_swattack.cpp +++ b/src/d/actor/d_a_swattack.cpp @@ -114,7 +114,7 @@ bool daSwAt_c::_execute() { } if (triggered) { - dComIfGs_onSwitch(mSwitchNo, fopAcM_GetHomeRoomNo(this)); + fopAcM_onSwitch(this, mSwitchNo); } mCyl.SetC(current.pos); diff --git a/src/d/actor/d_a_tag_ghostship.cpp b/src/d/actor/d_a_tag_ghostship.cpp index cd1069f04..3a3f69d59 100644 --- a/src/d/actor/d_a_tag_ghostship.cpp +++ b/src/d/actor/d_a_tag_ghostship.cpp @@ -52,7 +52,7 @@ void daTag_Gship_c::modeClearEvent() { if(dComIfGp_evmng_endCheck("PSHIP_CLEAR")) { mDoAud_seStart(JA_SE_LK_WARP_TO_G_SHIP); - s8 room = dComIfGs_getEventReg(0xC3FF); + u8 room = dComIfGs_getEventReg(0xC3FF); s8 spawn = dComIfGs_getEventReg(0x85FF); dKy_set_nexttime(120.0f); dComIfGp_setNextStage("sea", spawn, room, 0xFF, 0.0f, 5); diff --git a/src/d/actor/d_a_tag_island.cpp b/src/d/actor/d_a_tag_island.cpp index 2c6d108f7..a0dfeee6d 100644 --- a/src/d/actor/d_a_tag_island.cpp +++ b/src/d/actor/d_a_tag_island.cpp @@ -406,8 +406,8 @@ BOOL daTag_Island_c::actionReady() { setActio(ACT_EVENT); actionEvent(); if (swbit != 0xFF) - dComIfGs_onSwitch(swbit, current.roomNo); - } else if (swbit != 0xFF && dComIfGs_isSwitch(swbit, current.roomNo)) { + dComIfGs_onSwitch(swbit, fopAcM_GetRoomNo(this)); + } else if (swbit != 0xFF && dComIfGs_isSwitch(swbit, fopAcM_GetRoomNo(this))) { setActio(ACT_WAIT); } else { makeEvId(); @@ -419,7 +419,7 @@ BOOL daTag_Island_c::actionReady() { /* 00001130-000011E4 .text actionHunt__14daTag_Island_cFv */ BOOL daTag_Island_c::actionHunt() { s32 swbit = getSwbit(); - if (swbit != 0xFF && dComIfGs_isSwitch(swbit, current.roomNo)) { + if (swbit != 0xFF && dComIfGs_isSwitch(swbit, fopAcM_GetRoomNo(this))) { setActio(ACT_WAIT); } else { if (otherCheck() && checkArea()) { @@ -454,7 +454,7 @@ cPhs_State daTag_Island_c::create() { eventInfo.setEventId(mEventId); eventInfo.mMapToolId = getEventNo(); - if (mEventId != -1 && swbit != 0xFF && !dComIfGs_isSwitch(swbit, current.roomNo)) { + if (mEventId != -1 && swbit != 0xFF && !dComIfGs_isSwitch(swbit, fopAcM_GetRoomNo(this))) { setActio(ACT_ARRIVAL); } else { setActio(ACT_WAIT); diff --git a/src/d/actor/d_a_tag_kb_item.cpp b/src/d/actor/d_a_tag_kb_item.cpp index adc5b0628..022f9b1f0 100644 --- a/src/d/actor/d_a_tag_kb_item.cpp +++ b/src/d/actor/d_a_tag_kb_item.cpp @@ -35,8 +35,8 @@ cPhs_State daTagKbItem_c::_create() { fopAcM_SetupActor(this, daTagKbItem_c); CreateInit(); - if (field_0x29c != 0x1f && dComIfGs_isItem(field_0x29c, home.roomNo) || - field_0x2a4 != 0xff && dComIfGs_isSwitch(field_0x2a4, home.roomNo)) + if ((field_0x29c != 0x1f && dComIfGs_isItem(field_0x29c, fopAcM_GetHomeRoomNo(this))) || + (field_0x2a4 != 0xff && dComIfGs_isSwitch(field_0x2a4, fopAcM_GetHomeRoomNo(this)))) { return cPhs_ERROR_e; } @@ -46,8 +46,8 @@ cPhs_State daTagKbItem_c::_create() { /* 000001BC-000001C4 .text _execute__13daTagKbItem_cFv */ bool daTagKbItem_c::_execute() { #if VERSION <= VERSION_JPN - if (field_0x29c != 0x1f && dComIfGs_isItem(field_0x29c, home.roomNo) || - field_0x2a4 != 0xff && dComIfGs_isSwitch(field_0x2a4, home.roomNo)) + if ((field_0x29c != 0x1f && dComIfGs_isItem(field_0x29c, fopAcM_GetHomeRoomNo(this))) || + (field_0x2a4 != 0xff && dComIfGs_isSwitch(field_0x2a4, fopAcM_GetHomeRoomNo(this)))) { fopAcM_delete(this); } diff --git a/src/d/actor/d_a_tag_kk1.cpp b/src/d/actor/d_a_tag_kk1.cpp index ec9630425..f1166e98e 100644 --- a/src/d/actor/d_a_tag_kk1.cpp +++ b/src/d/actor/d_a_tag_kk1.cpp @@ -37,13 +37,10 @@ bool daTag_Kk1_c::_draw() { /* 00000130-0000024C .text _execute__11daTag_Kk1_cFv */ bool daTag_Kk1_c::_execute() { - f32 distance = current.pos.abs(dComIfGp_getPlayer(0)->current.pos); f32 vert_distance = dComIfGp_getPlayer(0)->current.pos.y - current.pos.y; mTagSet = false; - if ( - (distance < l_HIO.prm.mHorizontalDistance) && (vert_distance< l_HIO.prm.mVerticalDistance) - ){ + if (distance < l_HIO.prm.mHorizontalDistance && vert_distance < l_HIO.prm.mVerticalDistance) { s16 angle_deviation = dComIfGp_getPlayer(0)->shape_angle.y - current.angle.y; angle_deviation =abs(angle_deviation); if(angle_deviation < 0x1000){ @@ -56,7 +53,6 @@ bool daTag_Kk1_c::_execute() { /* 0000024C-000002A0 .text _delete__11daTag_Kk1_cFv */ bool daTag_Kk1_c::_delete() { - if (l_HIO.mNo >= 0) { mDoHIO_deleteChild(l_HIO.mNo); l_HIO.mNo = -1; @@ -66,7 +62,6 @@ bool daTag_Kk1_c::_delete() { /* 000002A0-0000046C .text _create__11daTag_Kk1_cFv */ cPhs_State daTag_Kk1_c::_create() { - u32 name_int = 0; s32 o_phsState = cPhs_COMPLEATE_e; @@ -81,7 +76,7 @@ cPhs_State daTag_Kk1_c::_create() { } if(l_HIO.mNo < 0){ - //Poor Muuru (Mila) chase startup tag + // Poor Muuru (Mila) chase startup tag l_HIO.mNo = mDoHIO_createChild("貧乏ム−ル追跡起動タグ",&l_HIO); } @@ -111,7 +106,6 @@ static BOOL daTag_Kk1_Execute(daTag_Kk1_c* obj) { /* 000006F4-00000714 .text daTag_Kk1_Draw__FP11daTag_Kk1_c */ static BOOL daTag_Kk1_Draw(daTag_Kk1_c* obj) { (static_cast(obj))->_draw(); - } /* 00000714-0000071C .text daTag_Kk1_IsDelete__FP11daTag_Kk1_c */ @@ -119,7 +113,6 @@ static BOOL daTag_Kk1_IsDelete(daTag_Kk1_c* obj) { return TRUE; } - static actor_method_class l_daTag_Kk1_Method = { (process_method_func)daTag_Kk1_Create, (process_method_func)daTag_Kk1_Delete, diff --git a/src/d/actor/d_a_tbox.cpp b/src/d/actor/d_a_tbox.cpp index 3d3451182..c093faff2 100644 --- a/src/d/actor/d_a_tbox.cpp +++ b/src/d/actor/d_a_tbox.cpp @@ -556,7 +556,7 @@ void daTbox_c::CreateInit() { if (funcType == FUNC_TYPE_GRAVITY) { mAcchCir.SetWall(30.0f, 0.0f); - mObjAcch.Set(¤t.pos, &old.pos, this, 1, &mAcchCir, &speed); + mObjAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this)); gravity = -2.5f; } diff --git a/src/d/actor/d_a_tornado.cpp b/src/d/actor/d_a_tornado.cpp index 57b2e301d..282590cf9 100644 --- a/src/d/actor/d_a_tornado.cpp +++ b/src/d/actor/d_a_tornado.cpp @@ -103,8 +103,6 @@ static BOOL daTornado_Draw(daTornado_c* i_this) { BOOL daTornado_c::execute() { static cXyz wind_scale(20.0f,20.0f,20.0f); - float fVar8; - mBck.play(); mBtkFrame += 1.0f; if (mBtkFrame >= mBtk.getBtkAnm()->getFrameMax()) { @@ -119,6 +117,7 @@ BOOL daTornado_c::execute() { mAngle1 += 500; m32c = 10000.0f; u32 param = fopAcM_GetParam(this); + f32 fVar8; if (param == 1) { if (dComIfGp_getShipActor() != NULL) { fVar8 = (dComIfGp_getShipActor()->current.pos.y - home.pos.y) / 500.0f; @@ -138,11 +137,11 @@ BOOL daTornado_c::execute() { fVar8 = 1.0f; } - for (s32 i = 0; i < 11; i++) { - float sin = cM_ssin(mAngle1 - 0x1000 * i); - float tmp1 = fVar8 * joint_offset[i]; - float fVar1 = tmp1 * (sin + 1.0f); - short angle2 = mAngle2 - 0x1800 * i; + for (int i = 0; i < 11; i++) { + f32 sin = cM_ssin(mAngle1 - 0x1000 * i); + f32 tmp1 = fVar8 * joint_offset[i]; + f32 fVar1 = tmp1 * (sin + 1.0f); + s16 angle2 = mAngle2 - 0x1800 * i; mJointX[i] = cM_ssin(angle2) * fVar1 * scale.x; mJointZ[i] = cM_scos(angle2) * fVar1 * scale.x; } @@ -150,7 +149,7 @@ BOOL daTornado_c::execute() { param = fopAcM_GetParam(this); if (param == 0) { if (!dComIfGp_event_runCheck()) { - short target = fopAcM_searchActorAngleY(this, dComIfGp_getLinkPlayer()); + s16 target = fopAcM_searchActorAngleY(this, dComIfGp_getLinkPlayer()); cLib_addCalcAngleS(¤t.angle.y, target, 10, 0x1000, 0x100); cLib_chaseF(&speedF, 20.0f, 0.2f); } diff --git a/src/d/d_a_boko_static.cpp b/src/d/d_a_boko_static.cpp index 81a69fc0f..4f73f2abb 100644 --- a/src/d/d_a_boko_static.cpp +++ b/src/d/d_a_boko_static.cpp @@ -90,7 +90,7 @@ void daBoko_c::getTopPos(cXyz* ret) { if (mpModel != NULL) { cMtx_multVec(mpModel->getBaseTRMtx(), &m_top_offset[fopAcM_GetParam(this)], ret); } else { - *ret = fopAcM_GetPosition(this) + m_top_offset[fopAcM_GetParam(this)]; + *ret = current.pos + m_top_offset[fopAcM_GetParam(this)]; } } @@ -99,6 +99,6 @@ void daBoko_c::getBlurRootPos(cXyz* ret) { if (mpModel != NULL) { cMtx_multVec(mpModel->getBaseTRMtx(), &m_blur_root_offset[fopAcM_GetParam(this)], ret); } else { - *ret = fopAcM_GetPosition(this) + m_blur_root_offset[fopAcM_GetParam(this)]; + *ret = current.pos + m_blur_root_offset[fopAcM_GetParam(this)]; } } diff --git a/src/d/d_a_item_static.cpp b/src/d/d_a_item_static.cpp index 900f21332..0e2f03031 100644 --- a/src/d/d_a_item_static.cpp +++ b/src/d/d_a_item_static.cpp @@ -17,9 +17,11 @@ BOOL daItem_c::checkControl() { if (mItemStatus == STATUS_UNK4) { return FALSE; } +#if VERSION > VERSION_DEMO if (mItemStatus == STATUS_INIT_NORMAL || mItemStatus == STATUS_MAIN_NORMAL) { return FALSE; } +#endif return TRUE; } diff --git a/src/d/d_camera.cpp b/src/d/d_camera.cpp index b4d1de893..e20e26241 100644 --- a/src/d/d_camera.cpp +++ b/src/d/d_camera.cpp @@ -2398,7 +2398,7 @@ bool dCamera_c::bumpCheck(u32 i_flags) { /* 80168EF0-801693AC .text getWaterSurfaceHeight__9dCamera_cFP4cXyz */ f32 dCamera_c::getWaterSurfaceHeight(cXyz* param_0) { /* Nonmatching - Code 100% */ - f32 var_f31 = -1000000000.0f; + f32 var_f31 = -G_CM3D_F_INF; cXyz spF8(*param_0); dBgS_RoofChk roofchk; @@ -2427,7 +2427,7 @@ f32 dCamera_c::getWaterSurfaceHeight(cXyz* param_0) { } } - if (var_f31 == -1000000000.0f) { + if (var_f31 == -G_CM3D_F_INF) { var_f31 = param_0->y; } diff --git a/src/d/d_com_inf_game.cpp b/src/d/d_com_inf_game.cpp index 6a748aa18..c37cbc714 100644 --- a/src/d/d_com_inf_game.cpp +++ b/src/d/d_com_inf_game.cpp @@ -169,6 +169,7 @@ void dComIfG_play_c::itemInit() { field_0x4978 = 0; m2dShow = 0; field_0x497a = 0; +#if VERSION > VERSION_DEMO mNowVibration = dComIfGs_getOptVibration(); daArrow_c::setKeepType(daArrow_c::TYPE_NORMAL); mMesgCamInfo.mID = 0; @@ -177,6 +178,7 @@ void dComIfG_play_c::itemInit() { for (int i = 0; i < ARRAY_SIZE(mMesgCamInfo.mActor); i++) { mMesgCamInfo.mActor[i] = 0; } +#endif } /* 80052400-8005286C .text getLayerNo__14dComIfG_play_cFi */ diff --git a/src/d/d_kankyo.cpp b/src/d/d_kankyo.cpp index 1c70d5509..723da2396 100644 --- a/src/d/d_kankyo.cpp +++ b/src/d/d_kankyo.cpp @@ -84,6 +84,9 @@ u16 lightMaskData[] = { GX_LIGHT0, GX_LIGHT1, GX_LIGHT2, GX_LIGHT3, GX_LIGHT4, GX_LIGHT5, GX_LIGHT6, GX_LIGHT7, }; +// Fakematch? Fixes weak function order. +#pragma sym off + /** * Returns true if toon lighting and shadow should be reversed. */ @@ -112,11 +115,12 @@ static s16 s16_data_ratio_set(s16 param_0, s16 param_1, f32 param_2) { /* 8018F8E4-8018F9E8 .text kankyo_color_ratio_set__FUcUcfUcUcfsf */ s16 kankyo_color_ratio_set(u8 i_b0A, u8 i_b0B, f32 i_blendAB0, u8 i_b1A, u8 i_b1B, f32 i_blendAB1, s16 i_add, f32 i_mul) { + dScnKy_env_light_c& env_light = g_env_light; // Fakematch? s16 a = s16_data_ratio_set(i_b0A, i_b0B, i_blendAB0); s16 b = s16_data_ratio_set(i_b1A, i_b1B, i_blendAB0); s16 rt = s16_data_ratio_set(a, b, i_blendAB1); rt = rt + i_add; - rt *= g_env_light.mAllColRatio * i_mul; + rt *= env_light.mAllColRatio * i_mul; if (rt < 0) rt = 0; if (rt > 0xFF) @@ -352,9 +356,11 @@ void envcolor_init() { g_regHIO.mChild[3].mShortRegs[i] = 0; } - mDoAud_zelAudio_c::getInterface()->initWindowPos(); - mDoAud_zelAudio_c::getInterface()->initSeaEnvPos(); - mDoAud_zelAudio_c::getInterface()->initRiverPos(); +#if VERSION > VERSION_DEMO + mDoAud_initWindowPos(); + mDoAud_initSeaEnvPos(); + mDoAud_initRiverPos(); +#endif dKy_actor_addcol_set(0, 0, 0, 0.0f); dKy_fog_startendz_set(0.0f, 0.0f, 0.0f); @@ -499,7 +505,9 @@ dScnKy_env_light_c g_env_light; /* 80190848-80190A18 .text setDaytime__18dScnKy_env_light_cFv */ void dScnKy_env_light_c::setDaytime() { /* Nonmatching on JPN - JAIZelBasic offsets */ +#if VERSION > VERSION_DEMO BOOL var_r30 = false; +#endif mCurTime = dComIfGs_getTime(); mDayOfWeek = dComIfGs_getDate(); @@ -512,9 +520,11 @@ void dScnKy_env_light_c::setDaytime() { } #endif - if (!dKy_checkEventNightStop() && dComIfGs_isGetItem(2, 0) && dComIfGp_event_runCheck() == FALSE && - !var_r30) - { + if (!dKy_checkEventNightStop() && dComIfGs_isGetItem(2, 0) && dComIfGp_event_runCheck() == FALSE +#if VERSION > VERSION_DEMO + && !var_r30 +#endif + ) { if (dComIfGp_roomControl_getTimePass()) { mCurTime += mTimeAdv; if ((u32)mCurTime >= 360.0f) { @@ -554,7 +564,7 @@ s32 dStage_roomControl_c::GetTimePass() { */ void dScnKy_env_light_c::SetSchbit() { stage_stag_info_class* pstag = dComIfGp_getStageStagInfo(); - int uvar1 = dStage_stagInfo_GetSchSec(pstag); + u8 uvar1 = dStage_stagInfo_GetSchSec(pstag); if (dStage_stagInfo_getStartSch(pstag) != 0) { if (mSchbit == 0) { @@ -588,7 +598,7 @@ void dScnKy_env_light_c::setSunpos() { sp8.y = std::cosf(DEG_TO_RAD(var_f1)) * 80000.0f; sp8.z = std::cosf(DEG_TO_RAD(var_f1)) * -48000.0f; - if (!dComIfGp_event_runCheck() || g_env_light.mInitAnimTimer != 0) { + if (dComIfGp_event_runCheck() == FALSE || g_env_light.mInitAnimTimer != 0) { mSunPos.x = camera_p->mLookat.mEye.x + sp8.x; mSunPos.y = camera_p->mLookat.mEye.y - sp8.y; mSunPos.z = camera_p->mLookat.mEye.z + sp8.z; @@ -611,8 +621,8 @@ int dKy_getdaytime_hour() { /* 80190C40-80190CBC .text dKy_getdaytime_minute__Fv */ int dKy_getdaytime_minute() { - f32 tmp = ((s32)(dComIfGs_getTime() * 1000000.0f) % 15000000); - return tmp / 1000000.0f / 15.0f * 60.0f; + f32 tmp = ((s32)(dComIfGs_getTime() * 1000000.0f) % 15000000) / 1000000.0f; + return tmp / 15.0f * 60.0f; } /* 80190CBC-80190CF8 .text dKy_daynight_check__Fv */ @@ -987,10 +997,14 @@ void dScnKy_env_light_c::setLight() { mFogStartZ__setLight = mFogEndZ__setLight; } - stage_vrbox_info_class* vrbox0_p = &g_env_light.mpVrboxInfo[pale0_p->mVirtIdx]; - stage_vrbox_info_class* vrbox1_p = &g_env_light.mpVrboxInfo[pale1_p->mVirtIdx]; - stage_vrbox_info_class* vrbox2_p = &g_env_light.mpVrboxInfo[pale2_p->mVirtIdx]; - stage_vrbox_info_class* vrbox3_p = &g_env_light.mpVrboxInfo[pale3_p->mVirtIdx]; + u8 virtidx0 = pale0_p->mVirtIdx; + u8 virtidx1 = pale1_p->mVirtIdx; + u8 virtidx2 = pale2_p->mVirtIdx; + u8 virtidx3 = pale3_p->mVirtIdx; + stage_vrbox_info_class* vrbox0_p = &g_env_light.mpVrboxInfo[virtidx0]; + stage_vrbox_info_class* vrbox1_p = &g_env_light.mpVrboxInfo[virtidx1]; + stage_vrbox_info_class* vrbox2_p = &g_env_light.mpVrboxInfo[virtidx2]; + stage_vrbox_info_class* vrbox3_p = &g_env_light.mpVrboxInfo[virtidx3]; mVrSkyColor.r = kankyo_color_ratio_set(vrbox0_p->mSkyColor.r, vrbox1_p->mSkyColor.r, blendAB, vrbox2_p->mSkyColor.r, vrbox3_p->mSkyColor.r, @@ -1156,6 +1170,55 @@ void dScnKy_env_light_c::setLight_bg(dKy_tevstr_c* i_tevstr, GXColorS10* i_BG0_C pale0_p->mBG1_K0.b, pale1_p->mBG1_K0.b, blendAB, pale2_p->mBG1_K0.b, pale3_p->mBG1_K0.b, i_tevstr->mColpatBlend, mBg1AddColDif.b, g_env_light.mBgColRatio); +#if VERSION == VERSION_DEMO + i_BG2_C0->r = kankyo_color_ratio_set( + pale0_p->mBG2_C0.r, pale1_p->mBG2_C0.r, blendAB, pale2_p->mBG2_C0.r, pale3_p->mBG2_C0.r, + i_tevstr->mColpatBlend, mBgAddColAmb.r, g_env_light.mBgColRatio); + + i_BG2_C0->g = kankyo_color_ratio_set( + pale0_p->mBG2_C0.g, pale1_p->mBG2_C0.g, blendAB, pale2_p->mBG2_C0.g, pale3_p->mBG2_C0.g, + i_tevstr->mColpatBlend, mBgAddColAmb.g, g_env_light.mBgColRatio); + + i_BG2_C0->b = kankyo_color_ratio_set( + pale0_p->mBG2_C0.b, pale1_p->mBG2_C0.b, blendAB, pale2_p->mBG2_C0.b, pale3_p->mBG2_C0.b, + i_tevstr->mColpatBlend, mBgAddColAmb.b, g_env_light.mBgColRatio); + + i_BG2_K0->r = kankyo_color_ratio_set( + pale0_p->mBG2_K0.r, pale1_p->mBG2_K0.r, blendAB, pale2_p->mBG2_K0.r, pale3_p->mBG2_K0.r, + i_tevstr->mColpatBlend, mBgAddColDif.r, g_env_light.mBgColRatio); + + i_BG2_K0->g = kankyo_color_ratio_set( + pale0_p->mBG2_K0.g, pale1_p->mBG2_K0.g, blendAB, pale2_p->mBG2_K0.g, pale3_p->mBG2_K0.g, + i_tevstr->mColpatBlend, mBgAddColDif.g, g_env_light.mBgColRatio); + + i_BG2_K0->b = kankyo_color_ratio_set( + pale0_p->mBG2_K0.b, pale1_p->mBG2_K0.b, blendAB, pale2_p->mBG2_K0.b, pale3_p->mBG2_K0.b, + i_tevstr->mColpatBlend, mBgAddColDif.b, g_env_light.mBgColRatio); + + i_BG3_C0->r = kankyo_color_ratio_set( + pale0_p->mBG3_C0.r, pale1_p->mBG3_C0.r, blendAB, pale2_p->mBG3_C0.r, pale3_p->mBG3_C0.r, + i_tevstr->mColpatBlend, mBgAddColAmb.r, g_env_light.mBgColRatio); + + i_BG3_C0->g = kankyo_color_ratio_set( + pale0_p->mBG3_C0.g, pale1_p->mBG3_C0.g, blendAB, pale2_p->mBG3_C0.g, pale3_p->mBG3_C0.g, + i_tevstr->mColpatBlend, mBgAddColAmb.g, g_env_light.mBgColRatio); + + i_BG3_C0->b = kankyo_color_ratio_set( + pale0_p->mBG3_C0.b, pale1_p->mBG3_C0.b, blendAB, pale2_p->mBG3_C0.b, pale3_p->mBG3_C0.b, + i_tevstr->mColpatBlend, mBgAddColAmb.b, g_env_light.mBgColRatio); + + i_BG3_K0->r = kankyo_color_ratio_set( + pale0_p->mBG3_K0.r, pale1_p->mBG3_K0.r, blendAB, pale2_p->mBG3_K0.r, pale3_p->mBG3_K0.r, + i_tevstr->mColpatBlend, mBgAddColDif.r, g_env_light.mBgColRatio); + + i_BG3_K0->g = kankyo_color_ratio_set( + pale0_p->mBG3_K0.g, pale1_p->mBG3_K0.g, blendAB, pale2_p->mBG3_K0.g, pale3_p->mBG3_K0.g, + i_tevstr->mColpatBlend, mBgAddColDif.g, g_env_light.mBgColRatio); + + i_BG3_K0->b = kankyo_color_ratio_set( + pale0_p->mBG3_K0.b, pale1_p->mBG3_K0.b, blendAB, pale2_p->mBG3_K0.b, pale3_p->mBG3_K0.b, + i_tevstr->mColpatBlend, mBgAddColDif.b, g_env_light.mBgColRatio); +#else i_BG2_C0->r = kankyo_color_ratio_set( pale0_p->mBG2_C0.r, pale1_p->mBG2_C0.r, blendAB, pale2_p->mBG2_C0.r, pale3_p->mBG2_C0.r, i_tevstr->mColpatBlend, mBg2AddColAmb.r, g_env_light.mBgColRatio); @@ -1203,6 +1266,7 @@ void dScnKy_env_light_c::setLight_bg(dKy_tevstr_c* i_tevstr, GXColorS10* i_BG0_C i_BG3_K0->b = kankyo_color_ratio_set( pale0_p->mBG3_K0.b, pale1_p->mBG3_K0.b, blendAB, pale2_p->mBG3_K0.b, pale3_p->mBG3_K0.b, i_tevstr->mColpatBlend, mBg3AddColDif.b, g_env_light.mBgColRatio); +#endif i_BG3_K0->a = 0xFF; i_BG3_C0->a = 0xFF; @@ -1357,11 +1421,15 @@ void dScnKy_env_light_c::settingTevStruct_colget_player(dKy_tevstr_c* i_tevstr) g_env_light.mEnvrIdxCurr = i_tevstr->mEnvrIdxCurr; g_env_light.mColPatBlend = 1.0f - g_env_light.mColPatBlend; +#if VERSION > VERSION_DEMO i_tevstr->mColpatBlend = 1.0f - g_env_light.mColPatBlend; +#endif } else if (g_env_light.mColPatBlend >= 1.0f || g_env_light.mColPatBlend <= 0.0f) { g_env_light.mEnvrIdxCurr = i_tevstr->mEnvrIdxCurr; g_env_light.mColPatBlend = 0.0f; +#if VERSION > VERSION_DEMO i_tevstr->mColpatBlend = 0.0f; +#endif } } } @@ -1503,11 +1571,14 @@ void dScnKy_env_light_c::settingTevStruct_eflightcol_plus(cXyz* i_pos, dKy_tevst if (bright < 1.0f) { i_tevstr->mColorK1.a = 1; GXColorS10 color = dKy_eflight_influence_col(efi); + s16 col_r = color.r; + s16 col_g = color.g; + s16 col_b = color.b; bright = 1.0f - bright; - s16 r = color.r * bright; - s16 g = color.g * bright; - s16 b = color.b * bright; + s16 r = col_r * bright; + s16 g = col_g * bright; + s16 b = col_b * bright; if (r > 0xFF) r = 0xFF; if (g > 0xFF) g = 0xFF; if (b > 0xFF) b = 0xFF; @@ -1543,11 +1614,13 @@ void dScnKy_env_light_c::settingTevStruct(int i_lightType, cXyz* i_pos, dKy_tevs GXColorS10 BG3_C0; GXColorS10 BG3_K0; +#if VERSION > VERSION_DEMO if (i_tevstr->mInitType != 123 && i_tevstr->mInitType != 124) { dKy_tevstr_init(i_tevstr, dComIfGp_roomControl_getStayNo(), 0xFF); } - i_tevstr->mInitType = 124; +#endif + i_tevstr->mColorK1.a = 0; mActorC0.a = 255; @@ -1784,6 +1857,7 @@ void setLightTevColorType_sub(J3DMaterial* i_material, dKy_tevstr_c* i_tevstr) { /* 80193A34-80193ADC .text setLightTevColorType__18dScnKy_env_light_cFP8J3DModelP12dKy_tevstr_c */ void dScnKy_env_light_c::setLightTevColorType(J3DModel* i_model, dKy_tevstr_c* i_tevstr) { +#if VERSION > VERSION_DEMO if (i_tevstr->mInitType != 0x7c) { if (i_tevstr->mInitType != 0x7b) { dKy_tevstr_init(i_tevstr, dComIfGp_roomControl_getStayNo(), 0xFF); @@ -1791,6 +1865,7 @@ void dScnKy_env_light_c::setLightTevColorType(J3DModel* i_model, dKy_tevstr_c* i settingTevStruct(TEV_TYPE_UNK99, NULL, i_tevstr); } +#endif int mat_num = i_model->getModelData()->getMaterialNum() - 1; while (mat_num >= 0) { @@ -1838,6 +1913,7 @@ void dScnKy_env_light_c::Eflight_flush_proc() { }; ColorTable * pTbl; + f32 f0; f32 wave; if (mEfLightProc.mSwordLightType == 0) { pTbl = flush_col; @@ -1847,6 +1923,7 @@ void dScnKy_env_light_c::Eflight_flush_proc() { wave = 0.0f; } + f0 = 1000.0f; switch (mEfLightProc.mSwordState) { case 0: break; @@ -1855,7 +1932,7 @@ void dScnKy_env_light_c::Eflight_flush_proc() { mEfLightProc.mSwordLight.mColor.r = pTbl[0].r; mEfLightProc.mSwordLight.mColor.g = pTbl[0].g; mEfLightProc.mSwordLight.mColor.b = pTbl[0].b; - mEfLightProc.mSwordLight.mPower = 1000.0f; + mEfLightProc.mSwordLight.mPower = f0; mEfLightProc.mSwordLight.mFluctuation = wave; dKy_efplight_set(&mEfLightProc.mSwordLight); mEfLightProc.mSwordState++; @@ -1926,6 +2003,9 @@ void dScnKy_env_light_c::SetBaseLight() { void dScnKy_env_light_c::exeKankyo() { g_env_light.mColPatMode = g_env_light.mColPatModeGather; +#if VERSION == VERSION_DEMO + g_env_light.mColPatModeGather = 0; +#else if (!dComIfGp_event_runCheck() && g_env_light.mColPatModeGather != 0) { if (g_env_light.mColPatModeGather >= 3) { g_env_light.mColPatModeGather = 0; @@ -1933,12 +2013,16 @@ void dScnKy_env_light_c::exeKankyo() { g_env_light.mColPatModeGather++; } } +#endif if (g_env_light.mColPatMode != 0) { if (g_env_light.mColpatPrevGather != 0xFF) { g_env_light.mColpatPrev = g_env_light.mColpatPrevGather; - if (g_env_light.mColPatModeGather == 0) { +#if VERSION > VERSION_DEMO + if (g_env_light.mColPatModeGather == 0) +#endif + { g_env_light.mColpatPrevGather = 0xFF; } } @@ -1946,7 +2030,10 @@ void dScnKy_env_light_c::exeKankyo() { if (g_env_light.mColpatCurrGather != 0xFF) { g_env_light.mColpatCurr = g_env_light.mColpatCurrGather; - if (g_env_light.mColPatModeGather == 0) { +#if VERSION > VERSION_DEMO + if (g_env_light.mColPatModeGather == 0) +#endif + { g_env_light.mColpatCurrGather = 0xFF; } } @@ -1954,7 +2041,10 @@ void dScnKy_env_light_c::exeKankyo() { if (g_env_light.mColPatBlendGather >= 0.0f) { g_env_light.mColPatBlend = g_env_light.mColPatBlendGather; - if (g_env_light.mColPatModeGather == 0) { +#if VERSION > VERSION_DEMO + if (g_env_light.mColPatModeGather == 0) +#endif + { g_env_light.mColPatBlendGather = -1.0f; } } @@ -2112,12 +2202,13 @@ void dKy_event_proc() { if (g_env_light.mInitAnimTimer == 0) { if (dComIfGp_roomControl_getTimePass() && dComIfGs_isGetItem(2, 0)) { if (dKy_pship_existense_chk()) { + u8 r29 = 1; g_env_light.mThunderEff.mMode = 1; dice_rain_minus(); - if (env_light.mColpatWeather != 1) { - g_env_light.mColpatWeather = 1; - g_env_light.mColpatCurrGather = 1; + if (env_light.mColpatWeather != r29) { + g_env_light.mColpatWeather = r29; + g_env_light.mColpatCurrGather = r29; } } else { f32 current_time = dComIfGs_getTime(); @@ -2257,14 +2348,18 @@ void dKy_event_proc() { } } } - } else if (dKy_pship_existense_chk()) { + } +#if VERSION > VERSION_DEMO + else if (dKy_pship_existense_chk()) { if (g_env_light.mColpatWeather != 1) { g_env_light.mColpatWeather = 1; g_env_light.mColpatCurrGather = 1; } g_env_light.mThunderEff.mMode = 1; - } else { + } +#endif + else { if (g_env_light.mColpatWeather != 0) { g_env_light.mColpatWeather = 0; g_env_light.mColpatCurrGather = 0; @@ -2294,7 +2389,9 @@ void dScnKy_env_light_c::drawKankyo() { SetBaseLight(); setLight(); dKy_Itemgetcol_chg_move(); +#if VERSION > VERSION_DEMO dKy_arrowcol_chg_move(); +#endif } /* 80194888-801948B4 .text dKy_Draw__FP17sub_kankyo__class */ @@ -2308,6 +2405,9 @@ static BOOL dKy_Execute(sub_kankyo__class*) { dKy_event_proc(); g_env_light.exeKankyo(); dKyw_wind_set(); +#if VERSION == VERSION_DEMO + dKy_arrowcol_chg_move(); +#endif return TRUE; } @@ -2318,7 +2418,9 @@ static BOOL dKy_IsDelete(sub_kankyo__class*) { /* 801948F0-80194914 .text dKy_Delete__FP17sub_kankyo__class */ static BOOL dKy_Delete(sub_kankyo__class*) { +#if VERSION > VERSION_DEMO plight_init(); +#endif return TRUE; } @@ -2559,13 +2661,18 @@ void dKy_plight_set(LIGHT_INFLUENCE* param_0) { } #endif - for (int i = 0; i < 200; i++) { + int i; + int r8 = 0; + for (i = 0; i < 200; i++) { #if VERSION <= VERSION_JPN if (g_env_light.mpPLights[i] == param_0) { return; } #endif if (g_env_light.mpPLights[i] == NULL) { + if (r8 != 0) { + continue; + } g_env_light.mpPLights[i] = param_0; g_env_light.mpPLights[i]->mIdx = i + 1; break; @@ -2591,7 +2698,11 @@ void dKy_plight_priority_set(LIGHT_INFLUENCE* param_0) { } if (i >= 200) { +#if VERSION == VERSION_DEMO + OSReport_Error("\nPOINTLIGHT COUNT OVER!!!\n"); +#else OSReport_Warning("\nPOINTLIGHT COUNT OVER!!!\n"); +#endif } } @@ -2622,7 +2733,7 @@ void dKy_efplight_set(LIGHT_INFLUENCE* param_0) { #endif for (int i = 0; i < 10; i++) { -#if VERSION <= VERSION_JPN +#if VERSION == VERSION_JPN if (g_env_light.mpEfLights[i] == param_0) { return; } @@ -2689,6 +2800,7 @@ void dKy_bg1_addcol_dif_set(s16 r, s16 g, s16 b, f32 factor) { g_env_light.mBg1AddColDif.b = b * factor; } +#if VERSION > VERSION_DEMO /* 801958D8-80195978 .text dKy_bg2_addcol_amb_set__Fsssf */ void dKy_bg2_addcol_amb_set(s16 r, s16 g, s16 b, f32 factor) { g_env_light.mBg2AddColAmb.r = r * factor; @@ -2716,6 +2828,7 @@ void dKy_bg3_addcol_dif_set(s16 r, s16 g, s16 b, f32 factor) { g_env_light.mBg3AddColDif.g = g * factor; g_env_light.mBg3AddColDif.b = b * factor; } +#endif /* 80195B58-80195BF8 .text dKy_addcol_fog_set__Fsssf */ void dKy_addcol_fog_set(s16 r, s16 g, s16 b, f32 factor) { @@ -2735,11 +2848,13 @@ void dKy_actor_addcol_set(s16 r, s16 g, s16 b, f32 factor) { dKy_bg1_addcol_amb_set(r, g, b, factor); dKy_bg1_addcol_dif_set(r, g, b, factor); +#if VERSION > VERSION_DEMO dKy_bg2_addcol_amb_set(r, g, b, factor); dKy_bg2_addcol_dif_set(r, g, b, factor); dKy_bg3_addcol_amb_set(r, g, b, factor); dKy_bg3_addcol_dif_set(r, g, b, factor); +#endif } /* 80195CF4-80195D94 .text dKy_vrbox_addcol_sky0_set__Fsssf */ @@ -2766,7 +2881,11 @@ void dKy_vrbox_addcol_set(s16 r, s16 g, s16 b, f32 factor) { /* 80195EA4-80195F3C .text dKy_fog_startendz_set__Ffff */ void dKy_fog_startendz_set(f32 i_startZ, f32 i_endZ, f32 ratio) { if (ratio < 0.0f || ratio > 1.0f) { +#if VERSION == VERSION_DEMO + OSReport_Error("\ndKy_fog_startendz_set ratio error!\n"); +#else OSReport_Warning("\ndKy_fog_startendz_set ratio error!\n"); +#endif ratio = 0.0f; } @@ -2898,10 +3017,8 @@ void dKy_arrowcol_chg_on(cXyz*, int mode) { /* 801962E0-80196764 .text dKy_arrowcol_chg_move__Fv */ void dKy_arrowcol_chg_move() { - /* Nonmatching - regalloc */ dScnKy_env_light_c& envLight = dKy_getEnvlight(); GXColorS10 amb, dif; - GXColorS10 bg3_amb, bg3_dif; switch (envLight.mColChgFlag) { case 0x10: @@ -2935,6 +3052,7 @@ void dKy_arrowcol_chg_move() { dif.r = 0x1E; dif.g = 0x1E; dif.b = 0x0A; +#if VERSION > VERSION_DEMO if (strcmp(dComIfGp_getStartStageName(), "GTower") == 0) { amb.r = 0x45; amb.g = 0x1B; @@ -2943,17 +3061,20 @@ void dKy_arrowcol_chg_move() { dif.g = 0x65; dif.b = 0x10; } +#endif } break; } + f32 f3 = 0.1f; + f32 f31 = 1.0f; switch (envLight.mColChgFlag) { case 0x10: case 0x20: case 0x30: { - cLib_addCalc(&envLight.field_0xc34, 1.0f, 0.5f, 0.1f, 0.001f); - if (envLight.field_0xc34 >= 1.0f) + cLib_addCalc(&envLight.field_0xc34, f31, 0.5f, f3, 0.001f); + if (envLight.field_0xc34 >= f31) envLight.mColChgFlag = envLight.mColChgFlag + 0x30; } break; @@ -2961,7 +3082,7 @@ void dKy_arrowcol_chg_move() { case 0x50: case 0x60: { - cLib_addCalc(&envLight.field_0xc34, 0.0f, 0.5f, 0.05f, 0.001f); + cLib_addCalc(&envLight.field_0xc34, 0.0f, 0.5f, f3 * 0.5f, 0.001f); if (envLight.field_0xc34 < 0.0000000001f) { envLight.field_0xc34 = 0.0f; envLight.mColChgFlag = 0; @@ -2969,38 +3090,78 @@ void dKy_arrowcol_chg_move() { } break; } - if ((envLight.mColChgFlag & 0xF0) != 0) { - dKy_actor_addcol_amb_set(amb.r - envLight.mActorC0.r, amb.g - envLight.mActorC0.g, amb.b - envLight.mActorC0.b, envLight.field_0xc34); - dKy_bg_addcol_amb_set(amb.r - envLight.mBG0_C0.r, amb.g - envLight.mBG0_C0.g, amb.b - envLight.mBG0_C0.b, envLight.field_0xc34); - if (strcmp(dComIfGp_getStartStageName(), "GTower") != 0) { - dKy_bg1_addcol_amb_set(amb.r - envLight.mBG1_C0.r, amb.g - envLight.mBG1_C0.g, amb.b - envLight.mBG1_C0.b, envLight.field_0xc34); - } - dKy_bg2_addcol_amb_set(amb.r - envLight.mBG2_C0.r, amb.g - envLight.mBG2_C0.g, amb.b - envLight.mBG2_C0.b, envLight.field_0xc34); - bg3_amb.r = amb.r - envLight.mBG3_C0.r; - bg3_amb.g = amb.g - envLight.mBG3_C0.g; - bg3_amb.b = amb.b - envLight.mBG3_C0.b; - if (strcmp(dComIfGp_getStartStageName(), "GTower") == 0) { - bg3_amb.r = 0xB7 - envLight.mBG3_C0.r; - bg3_amb.g = 0xB0 - envLight.mBG3_C0.g; - bg3_amb.b = 0x88 - envLight.mBG3_C0.b; - } - dKy_bg3_addcol_amb_set(bg3_amb.r, bg3_amb.g, bg3_amb.b, envLight.field_0xc34); - dKy_actor_addcol_dif_set(dif.r - envLight.mActorK0.r, dif.g - envLight.mActorK0.g, dif.b - envLight.mActorK0.b, envLight.field_0xc34); - dKy_bg_addcol_dif_set(dif.r - envLight.mBG0_K0.r, dif.g - envLight.mBG0_K0.g, dif.b - envLight.mBG0_K0.b, envLight.field_0xc34); + if ((envLight.mColChgFlag & 0xF0) != 0) { + GXColorS10 addcol_amb; + addcol_amb.r = amb.r - envLight.mActorC0.r; + addcol_amb.g = amb.g - envLight.mActorC0.g; + addcol_amb.b = amb.b - envLight.mActorC0.b; + dKy_actor_addcol_amb_set(addcol_amb.r, addcol_amb.g, addcol_amb.b, envLight.field_0xc34); +#if VERSION == VERSION_DEMO + dKy_bg_addcol_amb_set(addcol_amb.r, addcol_amb.g, addcol_amb.b, envLight.field_0xc34); + dKy_bg1_addcol_amb_set(addcol_amb.r, addcol_amb.g, addcol_amb.b, envLight.field_0xc34); +#else + addcol_amb.r = amb.r - envLight.mBG0_C0.r; + addcol_amb.g = amb.g - envLight.mBG0_C0.g; + addcol_amb.b = amb.b - envLight.mBG0_C0.b; + dKy_bg_addcol_amb_set(addcol_amb.r, addcol_amb.g, addcol_amb.b, envLight.field_0xc34); if (strcmp(dComIfGp_getStartStageName(), "GTower") != 0) { - dKy_bg1_addcol_dif_set(dif.r - envLight.mBG1_K0.r, dif.g - envLight.mBG1_K0.g, dif.b - envLight.mBG1_K0.b, envLight.field_0xc34); + addcol_amb.r = amb.r - envLight.mBG1_C0.r; + addcol_amb.g = amb.g - envLight.mBG1_C0.g; + addcol_amb.b = amb.b - envLight.mBG1_C0.b; + dKy_bg1_addcol_amb_set(addcol_amb.r, addcol_amb.g, addcol_amb.b, envLight.field_0xc34); } - dKy_bg2_addcol_dif_set(dif.r - envLight.mBG2_K0.r, dif.g - envLight.mBG2_K0.g, dif.b - envLight.mBG2_K0.b, envLight.field_0xc34); - bg3_dif.r = dif.r - envLight.mBG3_K0.r; - bg3_dif.g = dif.g - envLight.mBG3_K0.g; - bg3_dif.b = dif.b - envLight.mBG3_K0.b; + addcol_amb.r = amb.r - envLight.mBG2_C0.r; + addcol_amb.g = amb.g - envLight.mBG2_C0.g; + addcol_amb.b = amb.b - envLight.mBG2_C0.b; + dKy_bg2_addcol_amb_set(addcol_amb.r, addcol_amb.g, addcol_amb.b, envLight.field_0xc34); + addcol_amb.r = amb.r - envLight.mBG3_C0.r; + addcol_amb.g = amb.g - envLight.mBG3_C0.g; + addcol_amb.b = amb.b - envLight.mBG3_C0.b; if (strcmp(dComIfGp_getStartStageName(), "GTower") == 0) { - bg3_dif.r = 0x8A - envLight.mBG3_C0.r; - bg3_dif.g = 0x8A - envLight.mBG3_C0.g; - bg3_dif.b = 0x44 - envLight.mBG3_C0.b; + addcol_amb.r = 0xB7 - envLight.mBG3_C0.r; + addcol_amb.g = 0xB0 - envLight.mBG3_C0.g; + addcol_amb.b = 0x88 - envLight.mBG3_C0.b; } - dKy_bg3_addcol_dif_set(bg3_dif.r, bg3_dif.g, bg3_dif.b, envLight.field_0xc34); + dKy_bg3_addcol_amb_set(addcol_amb.r, addcol_amb.g, addcol_amb.b, envLight.field_0xc34); +#endif + + GXColorS10 addcol_dif; + addcol_dif.r = dif.r - envLight.mActorK0.r; + addcol_dif.g = dif.g - envLight.mActorK0.g; + addcol_dif.b = dif.b - envLight.mActorK0.b; +#if VERSION == VERSION_DEMO + dKy_actor_addcol_dif_set(addcol_dif.r, addcol_dif.g, addcol_dif.b, envLight.field_0xc34); + dKy_bg_addcol_dif_set(addcol_dif.r, addcol_dif.g, addcol_dif.b, envLight.field_0xc34); + dKy_bg1_addcol_dif_set(addcol_dif.r, addcol_dif.g, addcol_dif.b, envLight.field_0xc34); +#else + dKy_actor_addcol_dif_set(addcol_dif.r, addcol_dif.g, addcol_dif.b, envLight.field_0xc34); + + addcol_dif.r = dif.r - envLight.mBG0_K0.r; + addcol_dif.g = dif.g - envLight.mBG0_K0.g; + addcol_dif.b = dif.b - envLight.mBG0_K0.b; + dKy_bg_addcol_dif_set(addcol_dif.r, addcol_dif.g, addcol_dif.b, envLight.field_0xc34); + if (strcmp(dComIfGp_getStartStageName(), "GTower") != 0) { + addcol_dif.r = dif.r - envLight.mBG1_K0.r; + addcol_dif.g = dif.g - envLight.mBG1_K0.g; + addcol_dif.b = dif.b - envLight.mBG1_K0.b; + dKy_bg1_addcol_dif_set(addcol_dif.r, addcol_dif.g, addcol_dif.b, envLight.field_0xc34); + } + addcol_dif.r = dif.r - envLight.mBG2_K0.r; + addcol_dif.g = dif.g - envLight.mBG2_K0.g; + addcol_dif.b = dif.b - envLight.mBG2_K0.b; + dKy_bg2_addcol_dif_set(addcol_dif.r, addcol_dif.g, addcol_dif.b, envLight.field_0xc34); + + addcol_dif.r = dif.r - envLight.mBG3_K0.r; + addcol_dif.g = dif.g - envLight.mBG3_K0.g; + addcol_dif.b = dif.b - envLight.mBG3_K0.b; + if (strcmp(dComIfGp_getStartStageName(), "GTower") == 0) { + addcol_dif.r = 0x8A - envLight.mBG3_C0.r; + addcol_dif.g = 0x8A - envLight.mBG3_C0.g; + addcol_dif.b = 0x44 - envLight.mBG3_C0.b; + } + dKy_bg3_addcol_dif_set(addcol_dif.r, addcol_dif.g, addcol_dif.b, envLight.field_0xc34); +#endif } } @@ -3230,12 +3391,20 @@ void dKy_setLight_mine(dKy_tevstr_c* pTevStr) { void dKy_tevstr_init(dKy_tevstr_c* i_tevstr, s8 i_roomNo, u8 param_2) { memset(i_tevstr, 0, sizeof(dKy_tevstr_c)); +#if VERSION == VERSION_DEMO + i_tevstr->mRoomNo = i_roomNo; + i_tevstr->mEnvrIdxOverride = param_2; + i_tevstr->mInitTimer = 1; + i_tevstr->mInitType = 0; + i_tevstr->mColorC0.a = 255; + i_tevstr->mColorK0.a = 255; + i_tevstr->mFogColor.a = 255; +#else if (i_roomNo == -1) { i_tevstr->mRoomNo = dComIfGp_roomControl_getStayNo(); } else { i_tevstr->mRoomNo = i_roomNo; } - i_tevstr->mEnvrIdxCurr = i_tevstr->mRoomNo; i_tevstr->mEnvrIdxPrev = i_tevstr->mRoomNo; i_tevstr->mEnvrIdxOverride = param_2; @@ -3244,6 +3413,7 @@ void dKy_tevstr_init(dKy_tevstr_c* i_tevstr, s8 i_roomNo, u8 param_2) { i_tevstr->mColorC0.a = 255; i_tevstr->mColorK0.a = 255; i_tevstr->mFogColor.a = 255; +#endif i_tevstr->mLightObj.mInfo.mColor.g = 0; i_tevstr->mLightObj.mInfo.mColor.b = 0; @@ -3292,6 +3462,14 @@ int dKy_get_schbit_timer() { /* 80197018-80197144 .text dKy_get_seacolor__FP8_GXColorP8_GXColor */ void dKy_get_seacolor(GXColor* amb, GXColor* dif) { dScnKy_env_light_c& envLight = dKy_getEnvlight(); +#if VERSION == VERSION_DEMO + amb->r = envLight.mBG1_C0.r; + amb->g = envLight.mBG1_C0.g; + amb->b = envLight.mBG1_C0.b; + dif->r = envLight.mBG1_K0.r; + dif->g = envLight.mBG1_K0.g; + dif->b = envLight.mBG1_K0.b; +#else s16 ambr = envLight.mBG1_C0.r + dKy_getEnvlight().mBg1AddColAmb.r; s16 ambg = envLight.mBG1_C0.g + dKy_getEnvlight().mBg1AddColAmb.g; s16 ambb = envLight.mBG1_C0.b + dKy_getEnvlight().mBg1AddColAmb.b; @@ -3329,6 +3507,7 @@ void dKy_get_seacolor(GXColor* amb, GXColor* dif) { dif->r = difr; dif->g = difg; dif->b = difb; +#endif } /* 80197144-80197154 .text dKy_set_allcol_ratio__Ff */ diff --git a/src/d/d_kankyo_dayproc.inc b/src/d/d_kankyo_dayproc.inc index e01919929..7e9ee335a 100644 --- a/src/d/d_kankyo_dayproc.inc +++ b/src/d/d_kankyo_dayproc.inc @@ -45,7 +45,9 @@ static void dKankyo_DayProc() { dComIfGs_offTmpBit(0x0001); dComIfGs_offTmpBit(0x0180); dComIfGs_offTmpBit(0x0140); +#if VERSION > VERSION_DEMO dComIfGs_offTmpBit(0x0580); +#endif dComIfGs_offTmpBit(0x0104); if (dComIfGs_getEventReg(0xc103) == 1) diff --git a/src/d/d_menu_option.cpp b/src/d/d_menu_option.cpp index fa43b0a66..c1747fcca 100644 --- a/src/d/d_menu_option.cpp +++ b/src/d/d_menu_option.cpp @@ -718,18 +718,23 @@ void dMenu_Option_c::initialize() { mE3C = dComIfGs_getOptAttentionType(); mE3D = dComIfGs_getOptRuby(); mE3E = dComIfGs_getOptSound(); - +#if VERSION == VERSION_DEMO + mE3F = dComIfGs_getOptVibration(); +#else if ((JUTGamePad::sRumbleSupported & 0x80000000)) { mE3F = dComIfGp_getNowVibration(); } else { mE3F = 0; } +#endif mE41 = 0; mDoAud_setOutputMode(soundMode[mE3E]); +#if VERSION > VERSION_DEMO setSoundMode(soundMode[mE3E]); +#endif } /* 801D5224-801D53F0 .text _create__14dMenu_Option_cFv */ @@ -766,6 +771,7 @@ void dMenu_Option_c::_delete() { void dMenu_Option_c::_move() { u8 check_trigger = stick->checkTrigger(); +#if VERSION > VERSION_DEMO if (mE3F) { if ((JUTGamePad::sRumbleSupported & 0x80000000U) == 0) { mE3F = 0; @@ -782,6 +788,7 @@ void dMenu_Option_c::_move() { cursorScale(); } } +#endif if (CPad_CHECK_TRIG_A(0) && !CPad_CHECK_TRIG_START(0) && @@ -800,11 +807,14 @@ void dMenu_Option_c::_move() { dComIfGs_setOptAttentionType(mE3C); dComIfGs_setOptRuby(mE3D); +#if VERSION == VERSION_DEMO + dComIfGs_setOptVibration(mE3F); +#else if (JUTGamePad::sRumbleSupported & 0x80000000) { - dComIfGs_setOptVibration(mE3F); + dComIfGs_setOptVibration(mE3F); } - dComIfGp_setNowVibration(mE3F); +#endif dComIfGs_setOptSound(mE3E); mDoAud_seStart(JA_SE_ITM_MENU_OPT_OUT, NULL, 0); @@ -855,6 +865,7 @@ void dMenu_Option_c::_move() { yazAnime(); +#if VERSION > VERSION_DEMO if (mB30[1].mUserArea != 2 || JUTGamePad::sRumbleSupported & 0x80000000) { m858[0].pane->show(); @@ -864,6 +875,7 @@ void dMenu_Option_c::_move() { m858[0].pane->hide(); m858[1].pane->hide(); } +#endif ccAnime(); diff --git a/src/d/d_npc.cpp b/src/d/d_npc.cpp index 98086af1f..3767a139c 100644 --- a/src/d/d_npc.cpp +++ b/src/d/d_npc.cpp @@ -415,7 +415,7 @@ u8 dNpc_PathRun_c::pointArg(u8 idx) { bool dNpc_PathRun_c::setNearPathIndx(cXyz* param_1, f32 param_2) { bool set = false; if(mPath != 0) { - f32 max_dist = 1000000000.0f; + f32 max_dist = G_CM3D_F_INF; u8 pointIdx = 0; for(int i = 0; i < maxPoint(); i++) { cXyz point = getPoint(i); @@ -441,8 +441,8 @@ bool dNpc_PathRun_c::setNearPathIndx(cXyz* param_1, f32 param_2) { /* 8021B514-8021B670 .text setNearPathIndxMk__14dNpc_PathRun_cFP4cXyz */ f32 dNpc_PathRun_c::setNearPathIndxMk(cXyz* param_1) { f32 max_dist; - if(mPath != 0) { - max_dist = 1000000000.0f; + if(mPath != NULL) { + max_dist = G_CM3D_F_INF; u8 pointIdx = 0; for(int i = 0; i < maxPoint(); i++) { cXyz point = getPoint(i); @@ -465,7 +465,7 @@ bool dNpc_PathRun_c::setNearPathIndxMk2(cXyz* param_1, u8 param_2, u8 param_3) { u8 pointIdx; bool set = false; if(mPath != 0) { - f32 max_dist = 1000000000.0f; + f32 max_dist = G_CM3D_F_INF; pointIdx = param_2; for(int i = 0; i < maxPoint(); i++) { cXyz point = getPoint(i); diff --git a/src/d/d_save.cpp b/src/d/d_save.cpp index 5b7325f57..ddb3a71ab 100644 --- a/src/d/d_save.cpp +++ b/src/d/d_save.cpp @@ -973,6 +973,7 @@ void dSv_player_config_c::init() { mVibration = 1; } +#if VERSION > VERSION_DEMO /* 8005BFA4-8005BFC8 .text checkVibration__19dSv_player_config_cFv */ s32 dSv_player_config_c::checkVibration() { if (JUTGamePad::sRumbleSupported & 0x80000000) @@ -980,6 +981,7 @@ s32 dSv_player_config_c::checkVibration() { return 0; } +#endif /* 8005BFC8-8005BFD4 .text init__19dSv_player_priest_cFv */ void dSv_player_priest_c::init() { diff --git a/src/d/d_vibration.cpp b/src/d/d_vibration.cpp index 8c1d6e43b..13aea7119 100644 --- a/src/d/d_vibration.cpp +++ b/src/d/d_vibration.cpp @@ -53,9 +53,8 @@ namespace { u32 randombit(s32 rounds, s32 patt_len) { /* Makes a random rumble pattern by enabling up to rounds random bits */ u32 pattern = 0; - s32 bit = 1 << 30; for (int i = 0; i < rounds; i++){ - pattern |= (bit >> (u32)(patt_len * cM_rnd())); + pattern |= ((1 << 30) >> (u32)(patt_len * cM_rnd())); } return pattern; } @@ -64,7 +63,12 @@ namespace { /* 8009C73C-8009CCCC .text Run__12dVibration_cFv */ int dVibration_c::Run() { mRumbleState = RUMBLE_STATE_RUNNING; - if (dComIfGs_checkOptVibration() != 1U){ +#if VERSION == VERSION_DEMO + if (dComIfGs_getOptVibration() != 1U) +#else + if (dComIfGs_checkOptVibration() != 1U) +#endif + { mMotor.mShock.mPatternIdx = mMotor.mQuake.mPatternIdx = PATTERN_OFF; mMotor.mShock.mCurrentFrame = mMotor.mQuake.mCurrentFrame = RESET_FRAME; } @@ -359,7 +363,10 @@ void dVibration_c::Pause() { if (mRumbleState == RUMBLE_STATE_PAUSED){ return; } - if (mMotor.mShock.mPatternIdx != PATTERN_OFF || mMotor.mQuake.mPatternIdx != PATTERN_OFF){ +#if VERSION > VERSION_DEMO + if (mMotor.mShock.mPatternIdx != PATTERN_OFF || mMotor.mQuake.mPatternIdx != PATTERN_OFF) +#endif + { g_mDoCPd_gamePad[0]->stopMotorWaveHard(); g_mDoCPd_gamePad[0]->stopMotorHard(); } @@ -374,6 +381,7 @@ void dVibration_c::Pause() { mRumbleState = RUMBLE_STATE_PAUSED; } +#if VERSION > VERSION_DEMO /* 8009D188-8009D1C4 .text __ct__12dVibration_cFv */ dVibration_c::dVibration_c() { setDefault(); @@ -383,3 +391,4 @@ dVibration_c::dVibration_c() { dVibration_c::~dVibration_c() { Kill(); } +#endif