Demo matches (#767)

This commit is contained in:
LagoLunatic
2025-05-24 18:54:46 -04:00
committed by GitHub
parent 4a29f64e6b
commit 7cd75e8f7b
83 changed files with 945 additions and 424 deletions
+31 -31
View File
@@ -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"),
+6 -6
View File
@@ -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;
+8 -3
View File
@@ -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);
+5
View File
@@ -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 */
+1 -1
View File
@@ -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) {
+2 -2
View File
@@ -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;
+4
View File
@@ -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 */
+17
View File
@@ -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 */
+33 -4
View File
@@ -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;
};
+26 -2
View File
@@ -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);
}
+4
View File
@@ -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;
-1
View File
@@ -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
+2
View File
@@ -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; }
+1 -1
View File
@@ -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; }
+5
View File
@@ -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);
+5
View File
@@ -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);
}
+2 -2
View File
@@ -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);
+2
View File
@@ -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 {
+11 -6
View File
@@ -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;
}
+10 -5
View File
@@ -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
);
}
}
+7 -15
View File
@@ -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 {
+7 -2
View File
@@ -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();
}
+10 -5
View File
@@ -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
);
}
}
+1 -1
View File
@@ -287,7 +287,7 @@ namespace daBomb2 {
void Act_c::crr_init() {
mCir.SetWall(30.0f, 30.0f);
mAcch.Set(&current.pos, &old.pos, this, 1, &mCir, &speed, &current.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;
+1 -1
View File
@@ -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(&current.pos, &old.pos, this, 1, &mCir, &speed, &current.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;
+5 -6
View File
@@ -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<bossitem_class*>(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
);
}
+1 -1
View File
@@ -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(&current.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
+2 -1
View File
@@ -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;
+32 -16
View File
@@ -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"
+12 -8
View File
@@ -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<f32>(field_0x8D4));
+1 -1
View File
@@ -325,7 +325,7 @@ void daIball_c::CreateInit() {
mCyl.Set(m_cyl_src);
mCyl.SetStts(&mStts);
mAcchCir.SetWall(30.0f, 30.0f);
mAcch.Set(&current.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();
+43 -22
View File
@@ -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(&current.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(&current.pos, m_itemNo, -1, current.roomNo);
mDemoItemBsPcId = fopAcM_createItemForTrBoxDemo(&current.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;
+6 -6
View File
@@ -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<float>(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);
+1 -1
View File
@@ -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);
+8
View File
@@ -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;
+9 -11
View File
@@ -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;
}
+45 -42
View File
@@ -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;
}
+13 -6
View File
@@ -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;
}
+13 -10
View File
@@ -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;
}
+1 -1
View File
@@ -2212,7 +2212,7 @@ BOOL daNpc_Bs1_c::CreateHeap() {
}
mpMorf->getModel()->setUserArea((u32)this);
mAcchCir.SetWall(30.0f, 0.0f);
mAcch.Set(&current.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);
+10 -6
View File
@@ -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(&current.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;
+11 -11
View File
@@ -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(&current.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;
}
+1 -1
View File
@@ -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(&current.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();
+1 -1
View File
@@ -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(&current.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();
+1 -1
View File
@@ -848,7 +848,7 @@ BOOL daNpc_Nz_c::createInit() {
modeProcInit(0);
mAcchCir.SetWall(30.0f, 10.0f);
mAcch.Set(&current.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();
+1 -1
View File
@@ -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(&current.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);
+1 -1
View File
@@ -4369,7 +4369,7 @@ BOOL daNpcPeople_c::createHeap() {
mpMorf->getModel()->setUserArea((u32)this);
mAcchCir.SetWall(30.0f, 30.0f);
mObjAcch.Set(&current.pos, &old.pos, this, 1, &mAcchCir, &speed, &current.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]));
+1 -1
View File
@@ -1709,7 +1709,7 @@ BOOL daNpcRoten_c::createHeap() {
mpMorf->getModel()->setUserArea((u32)this);
mAcchCir.SetWall(30.0f, 30.0f);
mObjAcch.Set(&current.pos, &old.pos, this, 1, &mAcchCir, &speed, &current.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;
}
+14 -12
View File
@@ -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<J3DAnmTransform*>(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;
+1 -1
View File
@@ -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(&current.pos, &old.pos, this, 1, &mAcchCir, &speed, &current.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();
+9 -3
View File
@@ -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");
+1 -2
View File
@@ -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;
}
+57 -4
View File
@@ -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<J3DModelData*>(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(&center);
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(&center);
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;
+36 -10
View File
@@ -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<J3DModelData*>(dComIfG_getObjectRes(arcname, index));
JUT_ASSERT(0x1d9, mdl_data != NULL);
J3DModelData* mdl_data;
BOOL ret;
ret = FALSE;
mdl_data = static_cast<J3DModelData*>(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<J3DModelData*>(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<J3DAnmTextureSRTKey*>(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<J3DAnmTransform*>(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;
+1 -1
View File
@@ -209,7 +209,7 @@ void daObj_Hole_c::createInit() {
fopAcM_setCullSizeFar(this, 10.0f);
mAcchCir.SetWall(100.0f, 10.0f);
mAcch.Set(&current.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();
+71 -32
View File
@@ -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);
+1 -1
View File
@@ -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;
}
+9 -1
View File
@@ -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;
}
+1 -1
View File
@@ -943,7 +943,7 @@ void daObjTpost_c::createInit() {
modeProcInit(MODE_WAIT);
mAcchCir.SetWall(30.0f, 30.0f);
mAcch.Set(&current.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;
+4
View File
@@ -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,
};
+1 -1
View File
@@ -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;
}
+1 -1
View File
@@ -12154,7 +12154,7 @@ void daPy_lk_c::playerInit() {
m_anm_heap_upper[i].m_buffer = reinterpret_cast<void*>(buffer_start);
}
mAcch.Set(&current.pos, &old.pos, this, ARRAY_SIZE(mAcchCir), mAcchCir, &speed, &current.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();
+1 -1
View File
@@ -99,7 +99,7 @@ BOOL daRaceItem_c::CreateInit() {
mCyl.SetH(height);
mAcchCir.SetWall(30.0f, 30.0f);
mAcch.Set(&current.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();
+1 -1
View File
@@ -113,7 +113,7 @@ BOOL daSpcItem01_c::CreateInit() {
mCyl.SetR(tempVar2);
mCyl.SetH(tempVar1);
mAcchCir.SetWall(30.0f, 30.0f);
mAcch.Set(&current.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);
+4
View File
@@ -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,
};
+6 -3
View File
@@ -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<s16> angle(current.angle.x, current.angle.y, current.angle.z);
JGeometry::TVec3<s16> 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<s16> 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;
+1 -1
View File
@@ -114,7 +114,7 @@ bool daSwAt_c::_execute() {
}
if (triggered) {
dComIfGs_onSwitch(mSwitchNo, fopAcM_GetHomeRoomNo(this));
fopAcM_onSwitch(this, mSwitchNo);
}
mCyl.SetC(current.pos);
+1 -1
View File
@@ -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);
+4 -4
View File
@@ -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);
+4 -4
View File
@@ -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);
}
+2 -9
View File
@@ -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<daTag_Kk1_c*>(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,
+1 -1
View File
@@ -556,7 +556,7 @@ void daTbox_c::CreateInit() {
if (funcType == FUNC_TYPE_GRAVITY) {
mAcchCir.SetWall(30.0f, 0.0f);
mObjAcch.Set(&current.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;
}
+7 -8
View File
@@ -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(&current.angle.y, target, 10, 0x1000, 0x100);
cLib_chaseF(&speedF, 20.0f, 0.2f);
}
+2 -2
View File
@@ -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)];
}
}
+2
View File
@@ -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;
}
+2 -2
View File
@@ -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;
}
+2
View File
@@ -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 */
+242 -63
View File
@@ -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 */
+2
View File
@@ -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)
+15 -3
View File
@@ -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();
+4 -4
View File
@@ -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);
+2
View File
@@ -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() {
+13 -4
View File
@@ -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