Skip to content

Commit c724824

Browse files
authored
d_a_obj_key / d_a_obj_keyhole / d_a_obj_smallkey (#2584)
* obj_key equivalent * obj_keyhole done * obj_smallkey done * use macro
1 parent 3de1f91 commit c724824

File tree

14 files changed

+2130
-2383
lines changed

14 files changed

+2130
-2383
lines changed

configure.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1975,8 +1975,8 @@ def MatchingFor(*versions) -> bool:
19751975
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_katatsumuri"),
19761976
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_kazeneko"),
19771977
ActorRel(NonMatching, "d_a_obj_kbox"),
1978-
ActorRel(NonMatching, "d_a_obj_key"),
1979-
ActorRel(NonMatching, "d_a_obj_keyhole"),
1978+
ActorRel(Equivalent, "d_a_obj_key"), # weak func order
1979+
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_keyhole"),
19801980
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_ki"),
19811981
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_kiPot"),
19821982
ActorRel(NonMatching, "d_a_obj_kita"),
@@ -2098,7 +2098,7 @@ def MatchingFor(*versions) -> bool:
20982098
ActorRel(Equivalent, "d_a_obj_sekizoa"), # weak function order
20992099
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_shield"),
21002100
ActorRel(Equivalent, "d_a_obj_sm_door"), # vtable order
2101-
ActorRel(NonMatching, "d_a_obj_smallkey"),
2101+
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_smallkey"),
21022102
ActorRel(NonMatching, "d_a_obj_smgdoor"),
21032103
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_smoke"),
21042104
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_smtile"),

include/d/actor/d_a_e_db.h

Lines changed: 62 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
#ifndef D_A_E_DB_H
22
#define D_A_E_DB_H
3+
34
#include "f_op/f_op_actor_mng.h"
5+
#include "d/d_bg_s_acch.h"
6+
#include "d/d_cc_d.h"
7+
#include "d/d_cc_uty.h"
48

59
/**
610
* @ingroup actors-enemies
@@ -10,12 +14,65 @@
1014
* @details
1115
*
1216
*/
13-
class e_db_class : public fopEn_enemy_c {
17+
class e_db_class {
1418
public:
15-
/* 0x5ac */ u8 field_0x5ac[0x66a - 0x5ac];
16-
/* 0x66A */ s16 field_0x66a;
17-
/* 0x66C */ s16 field_0x66c;
18-
/* 0x66E */ u8 field_0x66e[0x1270 - 0x66e];
19+
/* 0x0000 */ fopEn_enemy_c enemy;
20+
/* 0x05AC */ request_of_phase_process_class field_0x5ac;
21+
/* 0x05B4 */ u8 field_0x5b4;
22+
/* 0x05B5 */ u8 field_0x5b5;
23+
/* 0x05B6 */ u8 field_0x5b6;
24+
/* 0x05B7 */ u8 field_0x5b7;
25+
/* 0x05B8 */ mDoExt_McaMorfSO* field_0x5b8;
26+
/* 0x05BC */ Z2CreatureEnemy sound;
27+
/* 0x0660 */ int field_0x660;
28+
/* 0x0664 */ u32 field_0x664;
29+
/* 0x0668 */ s16 field_0x668;
30+
/* 0x066A */ s16 field_0x66a;
31+
/* 0x066C */ s16 field_0x66c;
32+
/* 0x0670 */ f32 field_0x670;
33+
/* 0x0674 */ cXyz field_0x674;
34+
/* 0x0680 */ s16 field_0x680;
35+
/* 0x0682 */ u8 field_0x682[0x0684 - 0x0682];
36+
/* 0x0684 */ s16 field_0x684;
37+
/* 0x0688 */ f32 field_0x688;
38+
/* 0x068C */ f32 field_0x68c;
39+
/* 0x0690 */ f32 field_0x690;
40+
/* 0x0694 */ s16 field_0x694[3];
41+
/* 0x069A */ s16 field_0x69a;
42+
/* 0x069C */ cXyz field_0x69c[12];
43+
/* 0x072C */ csXyz field_0x72c[12];
44+
/* 0x0774 */ J3DModel* field_0x774[11];
45+
/* 0x07A0 */ u8 field_0x7A0[0x07D4 - 0x07A0];
46+
/* 0x07D4 */ f32 field_0x7d4[11];
47+
/* 0x0800 */ u8 field_0x800[0x0804 - 0x0800];
48+
/* 0x0804 */ mDoExt_3DlineMat1_c field_0x804;
49+
/* 0x0840 */ f32 field_0x840;
50+
/* 0x0844 */ f32 field_0x844;
51+
/* 0x0848 */ f32 field_0x848;
52+
/* 0x084C */ u8 field_0x84C[0x084E - 0x084C];
53+
/* 0x084E */ s16 field_0x84e;
54+
/* 0x0850 */ u8 field_0x850;
55+
/* 0x0851 */ u8 field_0x851;
56+
/* 0x0852 */ s8 field_0x852;
57+
/* 0x0854 */ f32 field_0x854;
58+
/* 0x0858 */ f32 field_0x858;
59+
/* 0x085C */ s16 field_0x85c;
60+
/* 0x085E */ u8 field_0x85E[0x0860 - 0x085E];
61+
/* 0x0860 */ s16 field_0x860;
62+
/* 0x0864 */ f32 field_0x864;
63+
/* 0x0868 */ dCcD_Stts field_0x868;
64+
/* 0x08A4 */ dCcD_Sph field_0x8a4;
65+
/* 0x09DC */ dCcD_Sph field_0x9dc;
66+
/* 0x0B14 */ u8 field_0xb14;
67+
/* 0x0B18 */ dCcD_Sph field_0xb18[4];
68+
/* 0x0FF8 */ dCcU_AtInfo field_0xff8;
69+
/* 0x101C */ dBgS_AcchCir field_0x101c;
70+
/* 0x105C */ dBgS_ObjAcch field_0x105c;
71+
/* 0x1234 */ fpc_ProcID field_0x1234;
72+
/* 0x1238 */ u8 field_0x1238;
73+
/* 0x1239 */ u8 field_0x1239;
74+
/* 0x123A */ u8 field_0x123A[0x126C - 0x123A];
75+
/* 0x126C */ u8 field_0x126c;
1976
};
2077

2178
STATIC_ASSERT(sizeof(e_db_class) == 0x1270);

include/d/actor/d_a_e_oc.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ class daE_OC_c : public fopEn_enemy_c {
8484
f32 getPlayerRange() const { return mPlayerRange; }
8585
int getActionMode() const { return mActionMode; }
8686
daE_OC_c* getTalkOc() const { return mpTalk; }
87+
J3DModel* getOcModel() { return mpMorf->getModel(); }
8788

8889
private:
8990
/* 0x5a0 */ request_of_phase_process_class mPhaseReqs[2];

include/d/actor/d_a_e_rdb.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ class e_rdb_class {
193193
/* 0x10F4 */ f32 mDemoCamFovy;
194194
/* 0x10F8 */ f32 field_0x10f8;
195195
/* 0x10FC */ u8 field_0x10fc[0x1104 - 0x10fc];
196-
/* 0x1104 */ s8 field_0x1104;
196+
/* 0x1104 */ u8 field_0x1104;
197197
/* 0x1105 */ u8 field_0x1105[0x1108 - 0x1105];
198198
/* 0x1108 */ dMsgFlow_c mMsgFlow;
199199
};

include/d/actor/d_a_obj_key.h

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,17 @@
22
#define D_A_OBJ_KEY_H
33

44
#include "f_op/f_op_actor_mng.h"
5+
#include "d/d_bg_s_acch.h"
6+
#include "d/d_cc_d.h"
7+
8+
struct obj_key_s {
9+
/* 0x00 */ J3DModel* model[3];
10+
/* 0x0C */ cXyz pos[3];
11+
/* 0x30 */ cXyz field_0x30[3];
12+
/* 0x54 */ csXyz angle[3];
13+
/* 0x68 */ f32 ground_y[3];
14+
/* 0x74 */ fpc_ProcID key_actor_id;
15+
};
516

617
/**
718
* @ingroup actors-objects
@@ -11,17 +22,39 @@
1122
* @details
1223
*
1324
*/
14-
class obj_key_class : public fopAc_ac_c {
15-
private:
16-
/* 0x568 */ u8 field_0x568[0x9b8 - 0x568];
25+
class obj_key_class {
26+
public:
27+
/* 0x000 */ fopAc_ac_c actor;
28+
/* 0x568 */ request_of_phase_process_class phase;
29+
/* 0x570 */ obj_key_s key_s;
30+
/* 0x5E8 */ Z2SoundObjSimple sound;
31+
/* 0x608 */ u8 field_0x608[0x60A - 0x608];
32+
/* 0x60A */ s16 action;
33+
/* 0x60C */ s16 field_0x60c;
34+
/* 0x60E */ s16 timers[2];
35+
/* 0x612 */ s16 field_0x612;
36+
/* 0x614 */ s16 field_0x614;
37+
/* 0x616 */ s16 field_0x616;
38+
/* 0x618 */ f32 field_0x618;
39+
/* 0x61C */ u8 hide;
40+
/* 0x620 */ dBgS_AcchCir acchcir;
41+
/* 0x660 */ dBgS_ObjAcch acch;
42+
/* 0x838 */ dCcD_Stts ccStts;
43+
/* 0x874 */ dCcD_Sph ccSph;
44+
/* 0x9AC */ u32 field_0x9ac[2];
45+
/* 0x9B4 */ u8 HIOInit;
1746
};
1847

1948
STATIC_ASSERT(sizeof(obj_key_class) == 0x9b8);
2049

2150
class daObj_Key_HIO_c {
2251
public:
2352
/* 80C3F40C */ daObj_Key_HIO_c();
24-
/* 80C40F28 */ ~daObj_Key_HIO_c();
53+
/* 80C40F28 */ virtual ~daObj_Key_HIO_c() {}
54+
55+
/* 0x4 */ s8 id;
56+
/* 0x8 */ f32 size;
57+
/* 0xC */ f32 chain_size;
2558
};
2659

2760

include/d/actor/d_a_obj_keyhole.h

Lines changed: 57 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,20 @@
22
#define D_A_OBJ_KEYHOLE_H
33

44
#include "f_op/f_op_actor_mng.h"
5+
#include "d/d_cc_d.h"
6+
#include "d/d_cc_uty.h"
7+
8+
struct kh_chain_s {
9+
/* 0x000 */ J3DModel* model[16];
10+
/* 0x040 */ cXyz field_0x40;
11+
/* 0x04C */ cXyz field_0x4c;
12+
/* 0x058 */ cXyz field_0x58[16];
13+
/* 0x118 */ cXyz field_0x118[16];
14+
/* 0x1D8 */ csXyz field_0x1d8[16];
15+
/* 0x238 */ f32 field_0x238;
16+
/* 0x23C */ dCcD_Stts ccStts;
17+
/* 0x278 */ dCcD_Sph ccSph[3];
18+
};
519

620
/**
721
* @ingroup actors-objects
@@ -11,29 +25,58 @@
1125
* @details
1226
*
1327
*/
14-
class obj_keyhole_class : public fopAc_ac_c {
28+
class obj_keyhole_class{
1529
public:
16-
void setOpen() { mOpenState = 1; }
17-
bool checkOpenEnd() { return mOpenState == 3; }
30+
void setOpen() { open_state = 1; }
31+
void setOpenEnd() { open_state = 3; }
32+
bool checkOpenEnd() { return open_state == 3; }
33+
bool checkOpen() { return open_state == 1; }
1834

19-
private:
20-
/* 0x0568 */ u8 field_0x0568[0x2ca4 - 0x568];
21-
/* 0x2ca4 */ u8 mOpenState;
22-
/* 0x2ca5 */ u8 field_0x2ca5[0x2cb8 - 0x2ca5];
35+
/* 0x0000 */ fopAc_ac_c actor;
36+
/* 0x0568 */ request_of_phase_process_class phase;
37+
/* 0x0570 */ char* arcname;
38+
/* 0x0574 */ mDoExt_McaMorf* lock_modelMorf;
39+
/* 0x0578 */ J3DModel* lock_model;
40+
/* 0x057C */ int chain_num;
41+
/* 0x0580 */ int field_0x580;
42+
/* 0x0584 */ u8 arg0;
43+
/* 0x0588 */ Z2Creature sound;
44+
/* 0x0618 */ s16 hit_timer;
45+
/* 0x061A */ s16 field_0x61a;
46+
/* 0x061C */ s16 action;
47+
/* 0x061E */ s16 mode;
48+
/* 0x0620 */ s16 timers[2];
49+
/* 0x0624 */ kh_chain_s chain_s[6];
50+
/* 0x2AE4 */ f32 field_0x2ae4;
51+
/* 0x2AE8 */ f32 field_0x2ae8;
52+
/* 0x2AEC */ s16 field_0x2aec;
53+
/* 0x2AF0 */ f32 field_0x2af0;
54+
/* 0x2AF4 */ f32 field_0x2af4;
55+
/* 0x2AF8 */ f32 field_0x2af8;
56+
/* 0x2AFC */ f32 field_0x2afc;
57+
/* 0x2B00 */ s16 field_0x2b00;
58+
/* 0x2B04 */ dCcD_Stts ccStts;
59+
/* 0x2B40 */ dCcD_Sph ccSph;
60+
/* 0x2C78 */ dCcU_AtInfo atInfo;
61+
/* 0x2C9C */ u32 field_0x2c9c;
62+
/* 0x2CA0 */ u32 field_0x2ca0;
63+
/* 0x2CA4 */ u8 open_state;
64+
/* 0x2CA5 */ u8 HIOInit;
65+
/* 0x2CA6 */ s8 field_0x2ca6;
66+
/* 0x2CA7 */ s8 hide_lock;
67+
/* 0x2CA8 */ cXyz field_0x2ca8;
68+
/* 0x2CB4 */ u8 field_0x2cb4;
2369
};
2470

2571
STATIC_ASSERT(sizeof(obj_keyhole_class) == 0x2CB8);
2672

27-
class kh_chain_s {
28-
public:
29-
/* 80C436A0 */ ~kh_chain_s();
30-
/* 80C437A4 */ kh_chain_s();
31-
};
32-
3373
class daObj_Keyhole_HIO_c {
3474
public:
3575
/* 80C4124C */ daObj_Keyhole_HIO_c();
36-
/* 80C4394C */ ~daObj_Keyhole_HIO_c();
76+
/* 80C4394C */ virtual ~daObj_Keyhole_HIO_c() {}
77+
78+
/* 0x4 */ s8 id;
79+
/* 0x8 */ f32 obj_size;
3780
};
3881

3982

0 commit comments

Comments
 (0)