d_a_obj_bemos equivalent (#2679)

* checkpoint

* e_wb changes

* checkpoint

* small fix

* d_a_obj_bemos equivalent

* add comment, fix other version symbols

* fixes for hatal
This commit is contained in:
Howard Luck 2025-09-21 10:00:19 -06:00 committed by GitHub
parent c97dbcea0e
commit 9a19ec0c13
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 2458 additions and 2327 deletions

View File

@ -4,7 +4,7 @@ _unresolved = .text:0x00000058; // type:function size:0x20 scope:global
__register_global_object = .text:0x00000078; // type:function size:0x1C scope:global
__destroy_global_chain = .text:0x00000094; // type:function size:0x58 scope:global
PPCallBack__9daObjBm_cFP10fopAc_ac_cP10fopAc_ac_csQ29dBgW_Base13PushPullLabel = .text:0x000000EC; // type:function size:0x13C scope:global
nodeCallBack__FP8J3DJointi = .text:0x00000228; // type:function size:0x154 scope:global
nodeCallBack__FP8J3DJointi = .text:0x00000228; // type:function size:0x154 scope:local
initBaseMtx__9daObjBm_cFv = .text:0x0000037C; // type:function size:0x90 scope:global
setBaseMtx__9daObjBm_cFv = .text:0x0000040C; // type:function size:0xEC scope:global
Create__9daObjBm_cFv = .text:0x000004F8; // type:function size:0x364 scope:global
@ -90,11 +90,11 @@ _ctors = .ctors:0x00000000; // type:label scope:global
__destroy_global_chain_reference = .dtors:0x00000000; // type:object size:0x4 scope:global
_dtors = .dtors:0x00000000; // type:label scope:global
...rodata.0 = .rodata:0x00000000; // type:label scope:local
l_eye_offset = .rodata:0x00000000; // type:object size:0xC scope:global
l_high_beam_offset = .rodata:0x0000000C; // type:object size:0xC scope:global
l_mid_beam_offset = .rodata:0x00000018; // type:object size:0xC scope:global
l_low_beam_offset = .rodata:0x00000024; // type:object size:0xC scope:global
l_craw_offset = .rodata:0x00000030; // type:object size:0x30 scope:global
l_eye_offset = .rodata:0x00000000; // type:object size:0xC scope:local
l_high_beam_offset = .rodata:0x0000000C; // type:object size:0xC scope:local
l_mid_beam_offset = .rodata:0x00000018; // type:object size:0xC scope:local
l_low_beam_offset = .rodata:0x00000024; // type:object size:0xC scope:local
l_craw_offset = .rodata:0x00000030; // type:object size:0x30 scope:local
M_dir_base__9daObjBm_c = .rodata:0x00000060; // type:object size:0x8 scope:global
@3933 = .rodata:0x00000068; // type:object size:0x4 scope:local align:4 data:float
@3934 = .rodata:0x0000006C; // type:object size:0x4 scope:local align:4 data:float
@ -136,21 +136,22 @@ l_eff_id2$5639 = .rodata:0x00000278; // type:object size:0x6 scope:local
@5876 = .rodata:0x00000284; // type:object size:0x4 scope:local
@stringBase0 = .rodata:0x00000288; // type:object size:0x34 scope:local data:string_table
...data.0 = .data:0x00000000; // type:label scope:local
cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:global
cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:local
@1787 = .data:0x0000000C; // type:object size:0x4 scope:local
lbl_406_data_10 = .data:0x00000010; // type:object size:0x10
l_arcName = .data:0x00000020; // type:object size:0x4 scope:global data:4byte
l_eye_matName = .data:0x00000024; // type:object size:0x4 scope:global
l_head_joint = .data:0x00000028; // type:object size:0x4 scope:global
l_bigGear_joint = .data:0x0000002C; // type:object size:0x4 scope:global
l_smallGear0_joint = .data:0x00000030; // type:object size:0x4 scope:global
l_smallGear1_joint = .data:0x00000034; // type:object size:0x4 scope:global
l_smallGear2_joint = .data:0x00000038; // type:object size:0x4 scope:global
l_joint_table = .data:0x0000003C; // type:object size:0x14 scope:global
l_cull_box = .data:0x00000050; // type:object size:0x18 scope:global
l_sph_src = .data:0x00000068; // type:object size:0x40 scope:global
l_cps_src = .data:0x000000A8; // type:object size:0x4C scope:global
l_cyl_src = .data:0x000000F4; // type:object size:0x44 scope:global
_three$localstatic4$sqrtf = .data:0x00000010; // type:object size:0x8
_half$localstatic3$sqrtf = .data:0x00000018; // type:object size:0x8
l_arcName = .data:0x00000020; // type:object size:0x4 scope:local data:4byte
l_eye_matName = .data:0x00000024; // type:object size:0x4 scope:local
l_head_joint = .data:0x00000028; // type:object size:0x4 scope:local
l_bigGear_joint = .data:0x0000002C; // type:object size:0x4 scope:local
l_smallGear0_joint = .data:0x00000030; // type:object size:0x4 scope:local
l_smallGear1_joint = .data:0x00000034; // type:object size:0x4 scope:local
l_smallGear2_joint = .data:0x00000038; // type:object size:0x4 scope:local
l_joint_table = .data:0x0000003C; // type:object size:0x14 scope:local
l_cull_box = .data:0x00000050; // type:object size:0x18 scope:local
l_sph_src = .data:0x00000068; // type:object size:0x40 scope:local
l_cps_src = .data:0x000000A8; // type:object size:0x4C scope:local
l_cyl_src = .data:0x000000F4; // type:object size:0x44 scope:local
@4298 = .data:0x00000138; // type:object size:0xC scope:local
@4299 = .data:0x00000144; // type:object size:0xC scope:local
l_func$4297 = .data:0x00000150; // type:object size:0x18 scope:local
@ -172,7 +173,7 @@ mode_proc$4406 = .data:0x00000210; // type:object size:0x30 scope:local
l_eff_func$4732 = .data:0x00000270; // type:object size:0x30 scope:local
M_lin5__Q29daObjBm_c5Bgc_c = .data:0x000002A0; // type:object size:0x50 scope:global
@6065 = .data:0x000002F0; // type:object size:0x20 scope:local
daObjBm_METHODS = .data:0x00000310; // type:object size:0x20 scope:global
daObjBm_METHODS = .data:0x00000310; // type:object size:0x20 scope:local
g_profile_Obj_Bemos = .data:0x00000330; // type:object size:0x30 scope:global
__vt__12dBgS_AcchCir = .data:0x00000360; // type:object size:0xC scope:global
__vt__10cCcD_GStts = .data:0x0000036C; // type:object size:0xC scope:global
@ -188,26 +189,26 @@ __vt__14dBgS_ObjGndChk = .data:0x0000040C; // type:object size:0x30 scope:global
__vt__11dBgS_WtrChk = .data:0x0000043C; // type:object size:0x30 scope:global
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
...bss.0 = .bss:0x00000008; // type:label scope:local
@1109 = .bss:0x00000008; // type:object size:0x1 scope:local data:byte
@1107 = .bss:0x0000000C; // type:object size:0x1 scope:local
@1105 = .bss:0x00000010; // type:object size:0x1 scope:local
@1104 = .bss:0x00000014; // type:object size:0x1 scope:local
@1099 = .bss:0x00000018; // type:object size:0x1 scope:local
@1097 = .bss:0x0000001C; // type:object size:0x1 scope:local
@1095 = .bss:0x00000020; // type:object size:0x1 scope:local
@1094 = .bss:0x00000024; // type:object size:0x1 scope:local
@1057 = .bss:0x00000028; // type:object size:0x1 scope:local
@1055 = .bss:0x0000002C; // type:object size:0x1 scope:local
@1053 = .bss:0x00000030; // type:object size:0x1 scope:local
@1052 = .bss:0x00000034; // type:object size:0x1 scope:local
@1014 = .bss:0x00000038; // type:object size:0x1 scope:local
@1012 = .bss:0x0000003C; // type:object size:0x1 scope:local
@1010 = .bss:0x00000040; // type:object size:0x1 scope:local
@1009 = .bss:0x00000044; // type:object size:0x1 scope:local
lbl_406_bss_45 = .bss:0x00000045; // type:object size:0x1 data:byte
lbl_406_bss_46 = .bss:0x00000046; // type:object size:0x1 data:byte
lbl_406_bss_47 = .bss:0x00000047; // type:object size:0x1 data:byte
lbl_406_bss_48 = .bss:0x00000048; // type:object size:0x1 data:byte
lit_1109 = .bss:0x00000008; // type:object size:0x1 scope:local data:byte
lit_1107 = .bss:0x0000000C; // type:object size:0x1 scope:local
lit_1105 = .bss:0x00000010; // type:object size:0x1 scope:local
lit_1104 = .bss:0x00000014; // type:object size:0x1 scope:local
lit_1099 = .bss:0x00000018; // type:object size:0x1 scope:local
lit_1097 = .bss:0x0000001C; // type:object size:0x1 scope:local
lit_1095 = .bss:0x00000020; // type:object size:0x1 scope:local
lit_1094 = .bss:0x00000024; // type:object size:0x1 scope:local
lit_1057 = .bss:0x00000028; // type:object size:0x1 scope:local
lit_1055 = .bss:0x0000002C; // type:object size:0x1 scope:local
lit_1053 = .bss:0x00000030; // type:object size:0x1 scope:local
lit_1052 = .bss:0x00000034; // type:object size:0x1 scope:local
lit_1014 = .bss:0x00000038; // type:object size:0x1 scope:local
lit_1012 = .bss:0x0000003C; // type:object size:0x1 scope:local
lit_1010 = .bss:0x00000040; // type:object size:0x1 scope:local
lit_1009 = .bss:0x00000044; // type:object size:0x1 scope:local
init$2123 = .bss:0x00000045; // type:object size:0x1 scope:local data:byte
init$2180 = .bss:0x00000046; // type:object size:0x1 scope:local data:byte
init$2232 = .bss:0x00000047; // type:object size:0x1 scope:local data:byte
init$2548 = .bss:0x00000048; // type:object size:0x1 scope:local data:byte
@4973 = .bss:0x0000004C; // type:object size:0xC scope:local
@4976 = .bss:0x0000005C; // type:object size:0xC scope:local
@4977 = .bss:0x00000068; // type:object size:0xC scope:local

View File

@ -4,7 +4,7 @@ _unresolved = .text:0x00000058; // type:function size:0x20 scope:global
__register_global_object = .text:0x00000078; // type:function size:0x1C scope:global
__destroy_global_chain = .text:0x00000094; // type:function size:0x58 scope:global
PPCallBack__9daObjBm_cFP10fopAc_ac_cP10fopAc_ac_csQ29dBgW_Base13PushPullLabel = .text:0x000000EC; // type:function size:0x13C scope:global
nodeCallBack__FP8J3DJointi = .text:0x00000228; // type:function size:0x154 scope:global
nodeCallBack__FP8J3DJointi = .text:0x00000228; // type:function size:0x154 scope:local
initBaseMtx__9daObjBm_cFv = .text:0x0000037C; // type:function size:0x90 scope:global
setBaseMtx__9daObjBm_cFv = .text:0x0000040C; // type:function size:0xEC scope:global
Create__9daObjBm_cFv = .text:0x000004F8; // type:function size:0x364 scope:global
@ -90,11 +90,11 @@ _ctors = .ctors:0x00000000; // type:label scope:global
__destroy_global_chain_reference = .dtors:0x00000000; // type:object size:0x4 scope:global
_dtors = .dtors:0x00000000; // type:label scope:global
...rodata.0 = .rodata:0x00000000; // type:label scope:local
l_eye_offset = .rodata:0x00000000; // type:object size:0xC scope:global
l_high_beam_offset = .rodata:0x0000000C; // type:object size:0xC scope:global
l_mid_beam_offset = .rodata:0x00000018; // type:object size:0xC scope:global
l_low_beam_offset = .rodata:0x00000024; // type:object size:0xC scope:global
l_craw_offset = .rodata:0x00000030; // type:object size:0x30 scope:global
l_eye_offset = .rodata:0x00000000; // type:object size:0xC scope:local
l_high_beam_offset = .rodata:0x0000000C; // type:object size:0xC scope:local
l_mid_beam_offset = .rodata:0x00000018; // type:object size:0xC scope:local
l_low_beam_offset = .rodata:0x00000024; // type:object size:0xC scope:local
l_craw_offset = .rodata:0x00000030; // type:object size:0x30 scope:local
M_dir_base__9daObjBm_c = .rodata:0x00000060; // type:object size:0x8 scope:global
@3933 = .rodata:0x00000068; // type:object size:0x4 scope:local align:4 data:float
@3934 = .rodata:0x0000006C; // type:object size:0x4 scope:local align:4 data:float
@ -135,21 +135,22 @@ l_eff_id2$5639 = .rodata:0x00000278; // type:object size:0x6 scope:local
@5875 = .rodata:0x00000280; // type:object size:0x4 scope:local
@5876 = .rodata:0x00000284; // type:object size:0x4 scope:local
@stringBase0 = .rodata:0x00000288; // type:object size:0x34 scope:local data:string_table
cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:global
cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:local
@1787 = .data:0x0000000C; // type:object size:0x4 scope:local
lbl_406_data_10 = .data:0x00000010; // type:object size:0x10
l_arcName = .data:0x00000020; // type:object size:0x4 scope:global data:4byte
l_eye_matName = .data:0x00000024; // type:object size:0x4 scope:global
l_head_joint = .data:0x00000028; // type:object size:0x4 scope:global
l_bigGear_joint = .data:0x0000002C; // type:object size:0x4 scope:global
l_smallGear0_joint = .data:0x00000030; // type:object size:0x4 scope:global
l_smallGear1_joint = .data:0x00000034; // type:object size:0x4 scope:global
l_smallGear2_joint = .data:0x00000038; // type:object size:0x4 scope:global
l_joint_table = .data:0x0000003C; // type:object size:0x14 scope:global
l_cull_box = .data:0x00000050; // type:object size:0x18 scope:global
l_sph_src = .data:0x00000068; // type:object size:0x40 scope:global
l_cps_src = .data:0x000000A8; // type:object size:0x4C scope:global
l_cyl_src = .data:0x000000F4; // type:object size:0x44 scope:global
_three$localstatic4$sqrtf = .data:0x00000010; // type:object size:0x8
_half$localstatic3$sqrtf = .data:0x00000018; // type:object size:0x8
l_arcName = .data:0x00000020; // type:object size:0x4 scope:local data:4byte
l_eye_matName = .data:0x00000024; // type:object size:0x4 scope:local
l_head_joint = .data:0x00000028; // type:object size:0x4 scope:local
l_bigGear_joint = .data:0x0000002C; // type:object size:0x4 scope:local
l_smallGear0_joint = .data:0x00000030; // type:object size:0x4 scope:local
l_smallGear1_joint = .data:0x00000034; // type:object size:0x4 scope:local
l_smallGear2_joint = .data:0x00000038; // type:object size:0x4 scope:local
l_joint_table = .data:0x0000003C; // type:object size:0x14 scope:local
l_cull_box = .data:0x00000050; // type:object size:0x18 scope:local
l_sph_src = .data:0x00000068; // type:object size:0x40 scope:local
l_cps_src = .data:0x000000A8; // type:object size:0x4C scope:local
l_cyl_src = .data:0x000000F4; // type:object size:0x44 scope:local
@4298 = .data:0x00000138; // type:object size:0xC scope:local
@4299 = .data:0x00000144; // type:object size:0xC scope:local
l_func$4297 = .data:0x00000150; // type:object size:0x18 scope:local
@ -171,7 +172,7 @@ mode_proc$4406 = .data:0x00000210; // type:object size:0x30 scope:local
l_eff_func$4732 = .data:0x00000270; // type:object size:0x30 scope:local
M_lin5__Q29daObjBm_c5Bgc_c = .data:0x000002A0; // type:object size:0x50 scope:global
@6065 = .data:0x000002F0; // type:object size:0x20 scope:local
daObjBm_METHODS = .data:0x00000310; // type:object size:0x20 scope:global
daObjBm_METHODS = .data:0x00000310; // type:object size:0x20 scope:local
g_profile_Obj_Bemos = .data:0x00000330; // type:object size:0x30 scope:global
__vt__12dBgS_AcchCir = .data:0x00000360; // type:object size:0xC scope:global
__vt__10cCcD_GStts = .data:0x0000036C; // type:object size:0xC scope:global
@ -187,26 +188,26 @@ __vt__14dBgS_ObjGndChk = .data:0x0000040C; // type:object size:0x30 scope:global
__vt__11dBgS_WtrChk = .data:0x0000043C; // type:object size:0x30 scope:global
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
...bss.0 = .bss:0x00000008; // type:label scope:local
@1109 = .bss:0x00000008; // type:object size:0x1 scope:local data:byte
@1107 = .bss:0x0000000C; // type:object size:0x1 scope:local
@1105 = .bss:0x00000010; // type:object size:0x1 scope:local
@1104 = .bss:0x00000014; // type:object size:0x1 scope:local
@1099 = .bss:0x00000018; // type:object size:0x1 scope:local
@1097 = .bss:0x0000001C; // type:object size:0x1 scope:local
@1095 = .bss:0x00000020; // type:object size:0x1 scope:local
@1094 = .bss:0x00000024; // type:object size:0x1 scope:local
@1057 = .bss:0x00000028; // type:object size:0x1 scope:local
@1055 = .bss:0x0000002C; // type:object size:0x1 scope:local
@1053 = .bss:0x00000030; // type:object size:0x1 scope:local
@1052 = .bss:0x00000034; // type:object size:0x1 scope:local
@1014 = .bss:0x00000038; // type:object size:0x1 scope:local
@1012 = .bss:0x0000003C; // type:object size:0x1 scope:local
@1010 = .bss:0x00000040; // type:object size:0x1 scope:local
@1009 = .bss:0x00000044; // type:object size:0x1 scope:local
lbl_406_bss_45 = .bss:0x00000045; // type:object size:0x1 data:byte
lbl_406_bss_46 = .bss:0x00000046; // type:object size:0x1 data:byte
lbl_406_bss_47 = .bss:0x00000047; // type:object size:0x1 data:byte
lbl_406_bss_48 = .bss:0x00000048; // type:object size:0x1 data:byte
lit_1109 = .bss:0x00000008; // type:object size:0x1 scope:local data:byte
lit_1107 = .bss:0x0000000C; // type:object size:0x1 scope:local
lit_1105 = .bss:0x00000010; // type:object size:0x1 scope:local
lit_1104 = .bss:0x00000014; // type:object size:0x1 scope:local
lit_1099 = .bss:0x00000018; // type:object size:0x1 scope:local
lit_1097 = .bss:0x0000001C; // type:object size:0x1 scope:local
lit_1095 = .bss:0x00000020; // type:object size:0x1 scope:local
lit_1094 = .bss:0x00000024; // type:object size:0x1 scope:local
lit_1057 = .bss:0x00000028; // type:object size:0x1 scope:local
lit_1055 = .bss:0x0000002C; // type:object size:0x1 scope:local
lit_1053 = .bss:0x00000030; // type:object size:0x1 scope:local
lit_1052 = .bss:0x00000034; // type:object size:0x1 scope:local
lit_1014 = .bss:0x00000038; // type:object size:0x1 scope:local
lit_1012 = .bss:0x0000003C; // type:object size:0x1 scope:local
lit_1010 = .bss:0x00000040; // type:object size:0x1 scope:local
lit_1009 = .bss:0x00000044; // type:object size:0x1 scope:local
init$2123 = .bss:0x00000045; // type:object size:0x1 scope:local data:byte
init$2180 = .bss:0x00000046; // type:object size:0x1 scope:local data:byte
init$2232 = .bss:0x00000047; // type:object size:0x1 scope:local data:byte
init$2548 = .bss:0x00000048; // type:object size:0x1 scope:local data:byte
@4973 = .bss:0x0000004C; // type:object size:0xC scope:local
@4976 = .bss:0x0000005C; // type:object size:0xC scope:local
@4977 = .bss:0x00000068; // type:object size:0xC scope:local

View File

@ -4,7 +4,7 @@ _unresolved = .text:0x00000058; // type:function size:0x20 scope:global
__register_global_object = .text:0x00000078; // type:function size:0x1C scope:global
__destroy_global_chain = .text:0x00000094; // type:function size:0x58 scope:global
PPCallBack__9daObjBm_cFP10fopAc_ac_cP10fopAc_ac_csQ29dBgW_Base13PushPullLabel = .text:0x000000EC; // type:function size:0x13C scope:global
nodeCallBack__FP8J3DJointi = .text:0x00000228; // type:function size:0x154 scope:global
nodeCallBack__FP8J3DJointi = .text:0x00000228; // type:function size:0x154 scope:local
initBaseMtx__9daObjBm_cFv = .text:0x0000037C; // type:function size:0x90 scope:global
setBaseMtx__9daObjBm_cFv = .text:0x0000040C; // type:function size:0xEC scope:global
Create__9daObjBm_cFv = .text:0x000004F8; // type:function size:0x364 scope:global
@ -90,11 +90,11 @@ _ctors = .ctors:0x00000000; // type:label scope:global
__destroy_global_chain_reference = .dtors:0x00000000; // type:object size:0x4 scope:global
_dtors = .dtors:0x00000000; // type:label scope:global
...rodata.0 = .rodata:0x00000000; // type:label scope:local
l_eye_offset = .rodata:0x00000000; // type:object size:0xC scope:global
l_high_beam_offset = .rodata:0x0000000C; // type:object size:0xC scope:global
l_mid_beam_offset = .rodata:0x00000018; // type:object size:0xC scope:global
l_low_beam_offset = .rodata:0x00000024; // type:object size:0xC scope:global
l_craw_offset = .rodata:0x00000030; // type:object size:0x30 scope:global
l_eye_offset = .rodata:0x00000000; // type:object size:0xC scope:local
l_high_beam_offset = .rodata:0x0000000C; // type:object size:0xC scope:local
l_mid_beam_offset = .rodata:0x00000018; // type:object size:0xC scope:local
l_low_beam_offset = .rodata:0x00000024; // type:object size:0xC scope:local
l_craw_offset = .rodata:0x00000030; // type:object size:0x30 scope:local
M_dir_base__9daObjBm_c = .rodata:0x00000060; // type:object size:0x8 scope:global
@3933 = .rodata:0x00000068; // type:object size:0x4 scope:local align:4 data:float
@3934 = .rodata:0x0000006C; // type:object size:0x4 scope:local align:4 data:float
@ -135,21 +135,22 @@ l_eff_id2$5639 = .rodata:0x00000278; // type:object size:0x6 scope:local
@5875 = .rodata:0x00000280; // type:object size:0x4 scope:local
@5876 = .rodata:0x00000284; // type:object size:0x4 scope:local
@stringBase0 = .rodata:0x00000288; // type:object size:0x34 scope:local data:string_table
cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:global
cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:local
@1787 = .data:0x0000000C; // type:object size:0x4 scope:local
lbl_406_data_10 = .data:0x00000010; // type:object size:0x10
l_arcName = .data:0x00000020; // type:object size:0x4 scope:global data:4byte
l_eye_matName = .data:0x00000024; // type:object size:0x4 scope:global
l_head_joint = .data:0x00000028; // type:object size:0x4 scope:global
l_bigGear_joint = .data:0x0000002C; // type:object size:0x4 scope:global
l_smallGear0_joint = .data:0x00000030; // type:object size:0x4 scope:global
l_smallGear1_joint = .data:0x00000034; // type:object size:0x4 scope:global
l_smallGear2_joint = .data:0x00000038; // type:object size:0x4 scope:global
l_joint_table = .data:0x0000003C; // type:object size:0x14 scope:global
l_cull_box = .data:0x00000050; // type:object size:0x18 scope:global
l_sph_src = .data:0x00000068; // type:object size:0x40 scope:global
l_cps_src = .data:0x000000A8; // type:object size:0x4C scope:global
l_cyl_src = .data:0x000000F4; // type:object size:0x44 scope:global
_three$localstatic4$sqrtf = .data:0x00000010; // type:object size:0x8
_half$localstatic3$sqrtf = .data:0x00000018; // type:object size:0x8
l_arcName = .data:0x00000020; // type:object size:0x4 scope:local data:4byte
l_eye_matName = .data:0x00000024; // type:object size:0x4 scope:local
l_head_joint = .data:0x00000028; // type:object size:0x4 scope:local
l_bigGear_joint = .data:0x0000002C; // type:object size:0x4 scope:local
l_smallGear0_joint = .data:0x00000030; // type:object size:0x4 scope:local
l_smallGear1_joint = .data:0x00000034; // type:object size:0x4 scope:local
l_smallGear2_joint = .data:0x00000038; // type:object size:0x4 scope:local
l_joint_table = .data:0x0000003C; // type:object size:0x14 scope:local
l_cull_box = .data:0x00000050; // type:object size:0x18 scope:local
l_sph_src = .data:0x00000068; // type:object size:0x40 scope:local
l_cps_src = .data:0x000000A8; // type:object size:0x4C scope:local
l_cyl_src = .data:0x000000F4; // type:object size:0x44 scope:local
@4298 = .data:0x00000138; // type:object size:0xC scope:local
@4299 = .data:0x00000144; // type:object size:0xC scope:local
l_func$4297 = .data:0x00000150; // type:object size:0x18 scope:local
@ -171,7 +172,7 @@ mode_proc$4406 = .data:0x00000210; // type:object size:0x30 scope:local
l_eff_func$4732 = .data:0x00000270; // type:object size:0x30 scope:local
M_lin5__Q29daObjBm_c5Bgc_c = .data:0x000002A0; // type:object size:0x50 scope:global
@6065 = .data:0x000002F0; // type:object size:0x20 scope:local
daObjBm_METHODS = .data:0x00000310; // type:object size:0x20 scope:global
daObjBm_METHODS = .data:0x00000310; // type:object size:0x20 scope:local
g_profile_Obj_Bemos = .data:0x00000330; // type:object size:0x30 scope:global
__vt__12dBgS_AcchCir = .data:0x00000360; // type:object size:0xC scope:global
__vt__10cCcD_GStts = .data:0x0000036C; // type:object size:0xC scope:global
@ -187,26 +188,26 @@ __vt__14dBgS_ObjGndChk = .data:0x0000040C; // type:object size:0x30 scope:global
__vt__11dBgS_WtrChk = .data:0x0000043C; // type:object size:0x30 scope:global
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
...bss.0 = .bss:0x00000008; // type:label scope:local
@1109 = .bss:0x00000008; // type:object size:0x1 scope:local data:byte
@1107 = .bss:0x0000000C; // type:object size:0x1 scope:local
@1105 = .bss:0x00000010; // type:object size:0x1 scope:local
@1104 = .bss:0x00000014; // type:object size:0x1 scope:local
@1099 = .bss:0x00000018; // type:object size:0x1 scope:local
@1097 = .bss:0x0000001C; // type:object size:0x1 scope:local
@1095 = .bss:0x00000020; // type:object size:0x1 scope:local
@1094 = .bss:0x00000024; // type:object size:0x1 scope:local
@1057 = .bss:0x00000028; // type:object size:0x1 scope:local
@1055 = .bss:0x0000002C; // type:object size:0x1 scope:local
@1053 = .bss:0x00000030; // type:object size:0x1 scope:local
@1052 = .bss:0x00000034; // type:object size:0x1 scope:local
@1014 = .bss:0x00000038; // type:object size:0x1 scope:local
@1012 = .bss:0x0000003C; // type:object size:0x1 scope:local
@1010 = .bss:0x00000040; // type:object size:0x1 scope:local
@1009 = .bss:0x00000044; // type:object size:0x1 scope:local
lbl_406_bss_45 = .bss:0x00000045; // type:object size:0x1 data:byte
lbl_406_bss_46 = .bss:0x00000046; // type:object size:0x1 data:byte
lbl_406_bss_47 = .bss:0x00000047; // type:object size:0x1 data:byte
lbl_406_bss_48 = .bss:0x00000048; // type:object size:0x1 data:byte
lit_1109 = .bss:0x00000008; // type:object size:0x1 scope:local data:byte
lit_1107 = .bss:0x0000000C; // type:object size:0x1 scope:local
lit_1105 = .bss:0x00000010; // type:object size:0x1 scope:local
lit_1104 = .bss:0x00000014; // type:object size:0x1 scope:local
lit_1099 = .bss:0x00000018; // type:object size:0x1 scope:local
lit_1097 = .bss:0x0000001C; // type:object size:0x1 scope:local
lit_1095 = .bss:0x00000020; // type:object size:0x1 scope:local
lit_1094 = .bss:0x00000024; // type:object size:0x1 scope:local
lit_1057 = .bss:0x00000028; // type:object size:0x1 scope:local
lit_1055 = .bss:0x0000002C; // type:object size:0x1 scope:local
lit_1053 = .bss:0x00000030; // type:object size:0x1 scope:local
lit_1052 = .bss:0x00000034; // type:object size:0x1 scope:local
lit_1014 = .bss:0x00000038; // type:object size:0x1 scope:local
lit_1012 = .bss:0x0000003C; // type:object size:0x1 scope:local
lit_1010 = .bss:0x00000040; // type:object size:0x1 scope:local
lit_1009 = .bss:0x00000044; // type:object size:0x1 scope:local
init$2123 = .bss:0x00000045; // type:object size:0x1 scope:local data:byte
init$2180 = .bss:0x00000046; // type:object size:0x1 scope:local data:byte
init$2232 = .bss:0x00000047; // type:object size:0x1 scope:local data:byte
init$2548 = .bss:0x00000048; // type:object size:0x1 scope:local data:byte
@4973 = .bss:0x0000004C; // type:object size:0xC scope:local
@4976 = .bss:0x0000005C; // type:object size:0xC scope:local
@4977 = .bss:0x00000068; // type:object size:0xC scope:local

View File

@ -1932,7 +1932,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_batta"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_bbox"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_bed"),
ActorRel(NonMatching, "d_a_obj_bemos"),
ActorRel(Equivalent, "d_a_obj_bemos"), # .rodata incorrect order / missing data
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_bhbridge"), # vtable order
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_bk_leaf"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_bky_rock"),

View File

@ -65,9 +65,9 @@ struct himo_s {
* @ingroup actors-enemies
* @class e_wb_class
* @brief Bullbo (Wild Boar)
*
* @details
*
*
* @details
*
*/
class e_wb_class {
public:
@ -96,29 +96,29 @@ public:
}
public:
/* 0x0000 */ fopEn_enemy_c mEnemy;
/* 0x05AC */ request_of_phase_process_class mPhase;
/* 0x05B4 */ s16 mActionMode;
/* 0x05B8 */ char* mResName;
/* 0x05BC */ u8 mParam;
/* 0x05BD */ u8 mParam2;
/* 0x0000 */ fopEn_enemy_c mEnemy; ///< @brief Base enemy class instance.
/* 0x05AC */ request_of_phase_process_class mPhase; ///< @brief Phase process request handler.
/* 0x05B4 */ s16 mActionMode; ///< @brief Current sub-action mode within the run action.
/* 0x05B8 */ char* mResName; ///< @brief Resource name for loading models/animations.
/* 0x05BC */ u8 mParam; ///< @brief Creation parameter 1.
/* 0x05BD */ u8 mParam2; ///< @brief Creation parameter 2.
/* 0x05BE */ u8 field_0x5be;
/* 0x05BF */ bool field_0x5bf;
/* 0x05C0 */ u8 field_0x5c0;
/* 0x05C4 */ cXyz field_0x5c4;
/* 0x05D0 */ cXyz field_0x5d0;
/* 0x05DC */ s16 mAngleTarget;
/* 0x05DC */ s16 mTargetFacingAngle; ///< @brief Target facing angle for turning towards path point.
/* 0x05DE */ s16 field_0x5de;
/* 0x05E0 */ mDoExt_McaMorfSO* mpModelMorf;
/* 0x05E4 */ f32 mPlaySpeed;
/* 0x05E8 */ int mAnmID;
/* 0x05EC */ Z2CreatureRide mZ2Ride;
/* 0x05E0 */ mDoExt_McaMorfSO* mpModelMorf; ///< @brief Pointer to model morph animator.
/* 0x05E4 */ f32 mPlaySpeed; ///< @brief Animation playback speed.
/* 0x05E8 */ int mAnmID; ///< @brief Current animation ID.
/* 0x05EC */ Z2CreatureRide mZ2Ride; ///< @brief Z2 sound creature for ride effects.
/* 0x0688 */ int field_0x688;
/* 0x068C */ s8 field_0x68c;
/* 0x068C */ s8 mPathInitialized; ///< @brief Flag indicating if path has been initialized.
/* 0x068E */ s16 field_0x68e;
/* 0x0690 */ s16 mActionID;
/* 0x0690 */ s16 mActionID; ///< @brief High-level action ID.
/* 0x0692 */ s16 field_0x692;
/* 0x0694 */ int mShadowKey;
/* 0x0694 */ int mShadowKey; ///< @brief Shadow drawing key.
/* 0x0698 */ s16 field_0x698[4];
/* 0x06A0 */ s16 field_0x6a0;
/* 0x06A2 */ u8 field_0x6a2[0x6ae - 0x6a2];
@ -128,14 +128,14 @@ public:
/* 0x06B8 */ u8 field_0x6b8[0x6ba - 0x6b8];
/* 0x06BA */ s16 field_0x6ba;
/* 0x06BC */ u8 field_0x6bc;
/* 0x06BD */ s8 field_0x6bd;
/* 0x06BE */ u16 field_0x6be;
/* 0x06BD */ s8 mPursuitFlag; ///< @brief Flag indicating pursuit mode.
/* 0x06BE */ u16 mStatusFlags; ///< @brief Bitfield for various status flags.
/* 0x06C0 */ s8 field_0x6c0;
/* 0x06C4 */ f32 field_0x6c4;
/* 0x06C8 */ int mBPathIdx; // The b_path indexer
/* 0x06CC */ int mBPathIdxIter; // The amount to change the b_path indexer by
/* 0x06C8 */ int mCurrentPathIndex; ///< @brief Current index in the path points array.
/* 0x06CC */ int mPathDirection; ///< @brief Direction to iterate path points (+1 or -1).
/* 0x06D0 */ s16 field_0x6d0;
/* 0x06D2 */ s16 mTargetAngleStep;
/* 0x06D2 */ s16 mTurnStep; ///< @brief Step value for turning angle adjustment.
/* 0x06D4 */ s16 field_0x6d4;
/* 0x06D6 */ s16 field_0x6d6;
/* 0x06D8 */ s16 field_0x6d8;
@ -147,11 +147,11 @@ public:
/* 0x06E4 */ s8 field_0x6e4;
/* 0x06E5 */ u8 field_0x6e5[0x6ec - 0x6e5];
/* 0x06EC */ csXyz field_0x6ec[0x1d];
/* 0x079A */ s16 field_0x79a;
/* 0x079A */ s16 mBodyTiltAngle; ///< @brief Body tilt angle based on turning.
/* 0x079C */ u8 field_0x79c;
/* 0x079D */ s8 field_0x79d;
/* 0x079E */ s8 field_0x79e;
/* 0x079F */ s8 field_0x79f;
/* 0x079E */ s8 mLapCount; ///< @brief Lap or progress count affecting path generation.
/* 0x079F */ s8 mPathAdjustCounter; ///< @brief Counter for periodic path adjustment.
/* 0x07A0 */ s16 field_0x7a0;
/* 0x07A2 */ s8 field_0x7a2;
/* 0x07A4 */ s16 field_0x7a4;
@ -178,18 +178,18 @@ public:
/* 0x1418 */ u32 field_0x1418;
/* 0x141C */ u32 field_0x141c;
/* 0x1420 */ u32 field_0x1420[3];
/* 0x142C */ u8 field_0x142c;
/* 0x142D */ u8 field_0x142d;
/* 0x142E */ u8 field_0x142e;
/* 0x142F */ s8 field_0x142f;
/* 0x142C */ u8 mMovementType; ///< @brief Type of movement (1 for normal, 2 for faster).
/* 0x142D */ u8 mCollisionFlags; ///< @brief Flags for collision states.
/* 0x142E */ u8 mLandingFlag; ///< @brief Flag for landing after jump.
/* 0x142F */ s8 mSpeedCapTimer; ///< @brief Timer to cap speed at 30.
/* 0x1430 */ s8 field_0x1430;
/* 0x1432 */ s16 field_0x1432;
/* 0x1434 */ fpc_ProcID field_0x1434; // Rider actor ID?
/* 0x1434 */ fpc_ProcID field_0x1434; // Rider actor ID? ///< @brief Process ID of rider actor.
/* 0x1438 */ cXyz field_0x1438[2];
/* 0x1450 */ himo_s field_0x1450[2];
/* 0x15D0 */ mDoExt_3DlineMat1_c field_0x15d0[2];
/* 0x1648 */ mDoExt_3DlineMat1_c field_0x1648;
/* 0x1684 */ f32 field_0x1684;
/* 0x1684 */ f32 mAnimDuration; ///< @brief Duration or timer for animation.
/* 0x1688 */ s16 field_0x1688;
/* 0x168A */ s16 field_0x168a;
/* 0x168C */ f32 field_0x168c;
@ -221,13 +221,12 @@ public:
/* 0x17D0 */ u32 field_0x17d0[4];
/* 0x17E0 */ u8 field_0x17e0;
/* 0x17E1 */ u8 field_0x17e1;
/* 0x17E2 */ s16 mWaitRollAngle;
/* 0x17E2 */ s16 mWaitRollAngle; ///< @brief Roll angle during wait state.
/* 0x17E4 */ u8 field_0x17e4[0x17e8 - 0x17e4];
/* 0x17E8 */ f32 mSpeedRate;
/* 0x17E8 */ f32 mSpeedRate; ///< @brief Speed rate for riding calculations.
};
STATIC_ASSERT(sizeof(e_wb_class) == 0x17EC);
#endif /* D_A_E_WB_H */

View File

@ -1,10 +1,11 @@
#ifndef D_A_OBJ_BEMOS_H
#define D_A_OBJ_BEMOS_H
#include "f_op/f_op_actor_mng.h"
#include "d/d_bg_s_acch.h"
#include "d/d_bg_s_movebg_actor.h"
#include "d/d_bg_w_base.h"
#include "d/d_bg_w.h"
#include "d/d_cc_d.h"
#include "f_op/f_op_actor_mng.h"
#include "m_Do/m_Do_ext.h"
/**
@ -17,37 +18,71 @@
*/
class daObjBm_c : public dBgS_MoveBgActor {
public:
class BgcSrc_c {};
typedef void (daObjBm_c::*procFunc)();
typedef void (daObjBm_c::*modeFunc)();
typedef void (daObjBm_c::*effectFunc)();
class BgcSrc_c {
public:
/* 0x0 */ f32 field_0x0;
/* 0x4 */ f32 field_0x4;
/* 0x8 */ f32 field_0x8;
/* 0xC */ f32 field_0xc;
};
class Bgc_c {
public:
enum State_e {
STATE_0_e = 0x0,
STATE_1_e = 0x1,
STATE_2_e = 0x2,
STATE_4_e = 0x4,
STATE_8_e = 0x8,
STATE_10_e = 0x10,
STATE_20_e = 0x20,
STATE_40_e = 0x40,
};
/* 80BB0E0C */ Bgc_c();
/* 80BB0ED4 */ void wall_pos(fopAc_ac_c const*, daObjBm_c::BgcSrc_c const*, int, s16, f32);
/* 80BB1154 */ void chk_wall_pre(fopAc_ac_c const*, daObjBm_c::BgcSrc_c const*, int, s16);
static u8 const M_lin20[368];
static u8 M_lin5[80];
static u8 M_gnd_work[1932];
static u8 M_wrt_work[84];
static u8 M_wall_work[2576];
/* 80BB1154 */ bool chk_wall_pre(fopAc_ac_c const*, daObjBm_c::BgcSrc_c const*, int, s16);
static daObjBm_c::BgcSrc_c M_lin5[];
static const daObjBm_c::BgcSrc_c M_lin20[];
static dBgS_ObjGndChk M_gnd_work[23];
static dBgS_WtrChk M_wrt_work;
static dBgS_ObjLinChk M_wall_work[23];
/* 0x000 */ f32 field_0x0[23];
/* 0x05C */ int field_0x5c;
/* 0x060 */ f32 field_0x60;
/* 0x064 */ cXyz field_0x64[23];
/* 0x178 */ int field_0x178;
/* 0x17C */ f32 field_0x17c;
/* 0x180 */ State_e mState;
};
u32 getSwNo3() { return fopAcM_GetParamBit(this, 16,8); }
u32 getMoveType() { return fopAcM_GetParamBit(this, 24, 4); }
s16 getHeadJoint() { return mHeadJntNo; }
s16 getBigGearJoint() { return mBigGearJntNo; }
s16 getSmallGear0Joint() { return mSmallGear0JntNo; }
s16 getSmallGear1Joint() { return mSmallGear1JntNo; }
s16 getSmallGear2Joint() { return mSmallGear2JntNo; }
s8 getSwNo() { return fopAcM_GetParamBit(this,8,8);}
s8 getSwNo2() { return fopAcM_GetParamBit(this,0,8);}
/* 80BAE36C */ void PPCallBack(fopAc_ac_c*, fopAc_ac_c*, s16, dBgW_Base::PushPullLabel);
u8 getMoveType() { return fopAcM_GetParamBit(this, 24, 4); }
s16 getHeadJoint() { return mJoints[0]; }
s16 getBigGearJoint() { return mJoints[1]; }
s16 getSmallGear0Joint() { return mJoints[2]; }
s16 getSmallGear1Joint() { return mJoints[3]; }
s16 getSmallGear2Joint() { return mJoints[4]; }
u8 getSwNo() { return fopAcM_GetParamBit(this, 0, 8); }
u8 getSwNo2() { return fopAcM_GetParamBit(this, 8, 8); }
u8 getSwNo3() { return fopAcM_GetParamBit(this, 16, 8); }
u8 getSearchDist() { return fopAcM_GetParamBit(this, 28, 4); }
u8 getBeamSearchDist() { return field_0x100a & 15; }
u8 checkLockOnCamera() { return (field_0x100a & 0x8000) >> 15; }
/* 80BAE36C */ static fopAc_ac_c* PPCallBack(fopAc_ac_c*, fopAc_ac_c*, s16,
dBgW_Base::PushPullLabel);
/* 80BAE5FC */ void initBaseMtx();
/* 80BAE68C */ void setBaseMtx();
/* 80BAE778 */ int Create();
/* 80BAEADC */ int CreateHeap();
/* 80BAEFD8 */ void create1st();
/* 80BAEFD8 */ int create1st();
/* 80BAF09C */ int Execute(Mtx**);
/* 80BAF29C */ void main_proc_call();
/* 80BAF328 */ void initActionEnBemos();
@ -57,17 +92,17 @@ public:
/* 80BAF80C */ void setCrawCO();
/* 80BAF8F8 */ void calcBeamPos();
/* 80BAFC08 */ void calcBeamLenAndAt();
/* 80BAFFA8 */ void checkFindPlayer();
/* 80BB0104 */ void checkSearchPlayer();
/* 80BB0260 */ void getSearchDistance();
/* 80BB02B8 */ void getBeamSearchDistance();
/* 80BAFFA8 */ s8 checkFindPlayer();
/* 80BB0104 */ s8 checkSearchPlayer();
/* 80BB0260 */ f32 getSearchDistance();
/* 80BB02B8 */ f32 getBeamSearchDistance();
/* 80BB0310 */ void effect_proc();
/* 80BB0580 */ void effectWait();
/* 80BB0584 */ void initEffectSet0();
/* 80BB0718 */ void effectSet0();
/* 80BB071C */ void effectSet1();
/* 80BB0720 */ void effectEnd();
/* 80BB0724 */ void check_to_walk();
/* 80BB0724 */ int check_to_walk();
/* 80BB0824 */ void mode_wait_init();
/* 80BB0888 */ void mode_wait();
/* 80BB09C8 */ void mode_walk_init();
@ -87,30 +122,32 @@ public:
/* 80BB248C */ void initActionDead();
/* 80BB2700 */ void actionDead();
/* 80BB2AB0 */ int Draw();
#ifdef DEBUG
/* 0x000000 */ void debugDraw();
#endif
/* 80BB2C8C */ int Delete();
static u8 const M_dir_base[8];
// private:
/* 0x05A0 */ u8 field_0x5a0[0x8];
static s16 const M_dir_base[4];
// private:
/* 0x05A0 */ request_of_phase_process_class mPhase;
/* 0x05A8 */ J3DModel* mpModel;
/* 0x05AC */ mDoExt_brkAnm* mpBrkAnm;
/* 0x05B0 */ mDoExt_baseAnm* mpBaseAnm;
/* 0x05B0 */ mDoExt_bckAnm* mpBckAnm;
/* 0x05B4 */ J3DModel* mpModel2;
/* 0x05B8 */ u8 field_0x5b8[0xa];
/* 0x05B8 */ mDoExt_btkAnm* mpBtkAnm;
/* 0x05BC */ mDoExt_btkAnm* mpBtkAnm2;
/* 0x05C0 */ mDoExt_bckAnm* mpBckAnm2;
/* 0x05C4 */ J3DModel* mpModel3;
/* 0x05C8 */ mDoExt_baseAnm* mpBaseAnm2;
/* 0x05CC */ u8 field_0x5cc[0x7e4 - 0x5cc];
/* 0x05C8 */ mDoExt_bckAnm* mpBckAnm3;
/* 0x05CC */ dBgS_ObjAcch mAcch;
/* 0x07A4 */ dBgS_AcchCir mAcchCir;
/* 0x07E4 */ dCcD_Stts mStts;
/* 0x0820 */ dCcD_Sph mSph;
/* 0x0958 */ dCcD_Cps mCps;
/* 0x0A9c */ dCcD_Cyl mCyl[4];
/* 0x0F8C */ s16 mHeadJntNo;
/* 0x0F8E */ s16 mBigGearJntNo;
/* 0x0F90 */ s16 mSmallGear0JntNo;
/* 0x0F92 */ s16 mSmallGear1JntNo;
/* 0x0F94 */ s16 mSmallGear2JntNo;
/* 0x0A9C */ dCcD_Cyl mCyl[4];
/* 0x0F8C */ s16 mJoints[5];
/* 0x0F96 */ s16 field_0xf96;
/* 0x0F96 */ s16 field_0xf98;
/* 0x0F98 */ s16 field_0xf98;
/* 0x0F9A */ s16 field_0xf9a;
/* 0x0F9C */ s16 field_0xf9c;
/* 0x0F9E */ s16 field_0xf9e;
@ -118,39 +155,70 @@ public:
/* 0x0FA2 */ s16 field_0xfa2;
/* 0x0FA4 */ s16 field_0xfa4;
/* 0x0FA6 */ s16 field_0xfa6;
/* 0x0FA8 */ u8 field_0xfa8[0xfb4 - 0xfa8];
/* 0x0FA8 */ s16 field_0xfa8;
/* 0x0FAA */ s16 field_0xfaa;
/* 0x0FAC */ s16 field_0xfac;
/* 0x0FAE */ s16 field_0xfae;
/* 0x0FB0 */ s16 field_0xfb0;
/* 0x0FB2 */ s16 field_0xfb2;
/* 0x0FB4 */ J3DMaterial* mpMaterial;
/* 0x0FB8 */ cXyz field_0xfb8;
/* 0x0FC4 */ csXyz field_0xfc4;
/* 0x0FCA */ u8 field_0xfca[2];
/* 0x0FCC */ u32 field_0xfcc;
/* 0x0FD0 */ u8 field_0xfd0[0xff0 - 0xfd0];
/* 0x0FF0 */ f32 field_0xff0;
/* 0x0FF4 */ u8 field_0xff4[3];
/* 0x0FCC */ cXyz field_0xfcc;
/* 0x0FD8 */ cXyz field_0xfd8;
/* 0x0FE4 */ u8 field_0xfe4;
/* 0x0FE5 */ u8 field_0xfe5;
/* 0x0FE6 */ u8 field_0xfe6;
/* 0x0FE7 */ s8 field_0xfe7;
/* 0x0FE8 */ u8 field_0xfe8;
/* 0x0FE9 */ u8 field_0xfe9;
/* 0x0FEA */ u8 field_0xfea;
/* 0x0FEB */ u8 field_0xfeb;
/* 0x0FEC */ u8 field_0xfec;
/* 0x0FED */ u8 field_0xfed;
/* 0x0FF0 */ u32 field_0xff0;
/* 0x0FF4 */ u8 field_0xff4;
/* 0x0FF5 */ u8 field_0xff5;
/* 0x0FF6 */ u8 field_0xff6;
/* 0x0FF7 */ u8 field_0xff7;
/* 0x0FF8 */ f32 field_0xff8;
/* 0x0FFC */ f32 field_0xffc;
/* 0x0FF8 */ JPABaseEmitter* field_0xff8[2];
/* 0x1000 */ f32 field_0x1000;
/* 0x1004 */ u8 field_0x1004[0x100c - 0x1004];
/* 0x100C */ f32 field_0x100c;
/* 0x1010 */ u8 field_0x1010[0x1038 - 0x1010];
/* 0x1038 */ u8 field_0x1038;
/* 0x1039 */ u8 field_0x1039;
/* 0x103A */ u8 field_0x103a[0x10a0 - 0x103a];
/* 0x1004 */ f32 field_0x1004;
/* 0x1008 */ u16 field_0x1008;
/* 0x100A */ u16 field_0x100a;
/* 0x100C */ u16 field_0x100c;
/* 0x100E */ u8 field_0x100e;
/* 0x100F */ u8 field_0x100f;
/* 0x1010 */ JPABaseEmitter* field_0x1010[2];
/* 0x1018 */ JPABaseEmitter* field_0x1018[2];
/* 0x1010 */ JPABaseEmitter* field_0x1020[3];
/* 0x102C */ JPABaseEmitter* field_0x102c;
/* 0x1030 */ JPABaseEmitter* field_0x1030;
/* 0x1034 */ JPABaseEmitter* field_0x1034;
/* 0x1038 */ s8 field_0x1038;
/* 0x1039 */ s8 field_0x1039;
/* 0x103C */ cXyz field_0x103c;
/* 0x1048 */ cXyz field_0x1048;
/* 0x1054 */ cXyz field_0x1054;
/* 0x1060 */ Z2SoundObjSimple mSound;
/* 0x1080 */ Z2SoundObjSimple mSound2;
/* 0x10A0 */ cXyz field_0x10a0;
/* 0x10AC */ u8 field_0x10ac[0x10c0 - 0x10ac];
/* 0x10C0 */ int field_0x10c0;
/* 0x10C4 */ s16 field_0x10c4[4];
/* 0x10D4 */ u8 field_0x10cc[0x10d2 - 0x10cc];
/* 0x10AC */ int field_0x10ac;
/* 0x10B0 */ int field_0x10b0;
/* 0x10B4 */ int field_0x10b4;
/* 0x10B8 */ f32 field_0x10b8;
/* 0x10BC */ int field_0x10bc;
/* 0x10C0 */ dBgW::PushPullLabel mPPLabel;
/* 0x10C4 */ s16 mMomentCnt[4];
/* 0x10CC */ s16 field_0x10cc;
/* 0x10CE */ s16 field_0x10ce;
/* 0x10D0 */ s16 field_0x10d0;
/* 0x10D2 */ u8 field_0x10d2;
/* 0x10D3 */ u8 field_0x10d3;
/* 0x10D4 */ u8 field_0x10d4[0x10e8 - 0x10d4];
/* 0x10E8 */ f32 field_0x10e8;
/* 0x10EC */ f32 field_0x10ec;
/* 0x10F0 */ u8 field_0x10f0[0x1258 - 0x10f0];
/* 0x10D4 */ Bgc_c mBgc;
};
STATIC_ASSERT(sizeof(daObjBm_c) == 0x1258);
#endif /* D_A_OBJ_BEMOS_H */

View File

@ -674,12 +674,12 @@ static void ride_off(e_rd_class* i_this) {
e_wb_class* bullbo = (e_wb_class*)fopAcM_SearchByID(i_this->mWbActorID);
if (bullbo != NULL) {
bullbo->field_0x6be &= ~i_this->field_0x9be;
bullbo->mStatusFlags &= ~i_this->field_0x9be;
i_this->field_0x9be = 0;
if (bullbo->mActionID != 22 && bullbo->mActionID != 23 && bullbo->mActionID != 24) {
if (bullbo->mActionID == 1) {
if ((bullbo->field_0x6be & 3) != 0) {
if ((bullbo->mStatusFlags & 3) != 0) {
bullbo->mActionID = 6;
} else {
bullbo->mActionID = 0;
@ -688,7 +688,7 @@ static void ride_off(e_rd_class* i_this) {
bullbo->mActionMode = 0;
} else if (bullbo->mActionID == 21) {
bullbo->mActionMode = 0;
} else if ((bullbo->field_0x6be & 1) == 0) {
} else if ((bullbo->mStatusFlags & 1) == 0) {
if (bullbo->mActionID == 6 && (bullbo->mActionMode == 2 || bullbo->mActionMode == 3)) {
bullbo->mActionMode = 1;
} else {
@ -720,7 +720,7 @@ static void* s_wb_sub(void* i_actor, void* i_data) {
((e_wb_class*)i_actor)->mActionID != ACTION_DAMAGE && ((e_wb_class*)i_actor)->mActionID != ACTION_A_DAMAGE && ((e_wb_class*)i_actor)->mActionID != ACTION_STAND) {
e_rd_class* i_this = (e_rd_class*)i_data;
if (i_this->mBossMode == ((e_wb_class*)i_actor)->field_0x79d &&
(data_80519230 != 0 || (((e_wb_class*)i_actor)->field_0x6be & 3) != 3) && target_info_count < 10) {
(data_80519230 != 0 || (((e_wb_class*)i_actor)->mStatusFlags & 3) != 3) && target_info_count < 10) {
target_info[target_info_count] = (fopAc_ac_c*)i_actor;
target_info_count++;
}
@ -799,10 +799,10 @@ static void wb_check(e_rd_class* i_this, s16 param_2) {
if (bullbo != NULL) {
if (data_80519200 != 0) {
if (i_this->field_0x5bc != 1) {
if ((bullbo->field_0x6be & 1) == 0) {
if ((bullbo->mStatusFlags & 1) == 0) {
return;
}
} else if ((bullbo->field_0x6be & 1) != 0) {
} else if ((bullbo->mStatusFlags & 1) != 0) {
return;
}
}
@ -810,11 +810,11 @@ static void wb_check(e_rd_class* i_this, s16 param_2) {
i_this->mAction = ACTION_WB_SEARCH;
i_this->mMode = 0;
if ((bullbo->field_0x6be & 1) == 0) {
bullbo->field_0x6be |= 1;
if ((bullbo->mStatusFlags & 1) == 0) {
bullbo->mStatusFlags |= 1;
i_this->field_0x9be = 1;
} else if ((bullbo->field_0x6be & 2) == 0) {
bullbo->field_0x6be |= 2;
} else if ((bullbo->mStatusFlags & 2) == 0) {
bullbo->mStatusFlags |= 2;
i_this->field_0x9be = 2;
}
}
@ -831,7 +831,7 @@ static BOOL wb_init_ride(e_rd_class* i_this) {
i_this->mMode = 0;
i_this->field_0x9bc = 2;
i_this->field_0x9be = i_this->field_0x5b6;
bullbo->field_0x6be |= (s8)i_this->field_0x5b6;
bullbo->mStatusFlags |= (s8)i_this->field_0x5b6;
bullbo->mActionID = 1;
if (i_this->field_0x5bc != 0 && i_this->field_0x9be == 1) {
@ -1998,7 +1998,7 @@ static void e_rd_wb_ride(e_rd_class* i_this) {
i_this->mAction = ACTION_NORMAL;
i_this->mMode = 0;
ride_off(i_this);
} else if ((bullbo->field_0x6be & 3) == 0) {
} else if ((bullbo->mStatusFlags & 3) == 0) {
OS_REPORT("......BOSS DL !!!!\n");
if (bullbo->mActionID == 1) {
bullbo->mActionID = 0;
@ -2069,7 +2069,7 @@ static void e_rd_wb_run(e_rd_class* i_this) {
fopAcM_setStageLayer(a_this);
}
if ((bullbo->field_0x6be & 3) == 0) {
if ((bullbo->mStatusFlags & 3) == 0) {
fopAcM_delete(a_this);
return;
}
@ -2081,7 +2081,7 @@ static void e_rd_wb_run(e_rd_class* i_this) {
}
}
if ((bullbo->field_0x6be & 1) == 0 && bullbo->mActionID == ACTION_BOW2 && i_this->mMode != 40) {
if ((bullbo->mStatusFlags & 1) == 0 && bullbo->mActionID == ACTION_BOW2 && i_this->mMode != 40) {
anm_init(i_this, BCK_RD_RRUN02_BACK, 5.0f, 2, 1.0f);
i_this->mMode = 40;
@ -2096,7 +2096,7 @@ static void e_rd_wb_run(e_rd_class* i_this) {
switch (i_this->mMode) {
case 0:
if ((bullbo->field_0x6be & 4) != 0) {
if ((bullbo->mStatusFlags & 4) != 0) {
if (i_this->field_0x9be == 1) {
if (bullbo->field_0x6d0 < 0) {
anm_init(i_this, BCK_RD_RSTEP_L, 10.0f, 2, 1.0f);
@ -2107,7 +2107,7 @@ static void e_rd_wb_run(e_rd_class* i_this) {
anm_init(i_this, BCK_RD_RSTEP_BACK, 10.0f, 2, 1.0f);
}
} else {
if ((bullbo->field_0x6be & 8) != 0) {
if ((bullbo->mStatusFlags & 8) != 0) {
if (i_this->field_0x9be == 1) {
anm_init(i_this, BCK_RD_RDAMAGE, 3.0f, 0, 1.0f);
} else {
@ -2116,14 +2116,14 @@ static void e_rd_wb_run(e_rd_class* i_this) {
i_this->field_0x990[1] = cM_rndF(50.0f) + 50.0f;
} else {
if ((bullbo->field_0x6be & 16) != 0) {
if ((bullbo->mStatusFlags & 16) != 0) {
if (i_this->field_0x9be == 1) {
anm_init(i_this, BCK_RD_RRUN, 5.0f, 2, 1.0f);
} else {
anm_init(i_this, BCK_RD_RRUN_BACK, 5.0f, 2, 1.0f);
}
} else {
if ((bullbo->field_0x6be & 32) != 0) {
if ((bullbo->mStatusFlags & 32) != 0) {
if (i_this->field_0x9be == 1) {
anm_init(i_this, BCK_RD_RWAIT, 5.0f, 2, 1.0f);
} else {
@ -2342,9 +2342,9 @@ static void e_rd_wb_run_B(e_rd_class* i_this) {
switch (i_this->mMode) {
case 0: {
if ((bullbo->field_0x6be & 0x400) != 0) {
if ((bullbo->mStatusFlags & 0x400) != 0) {
anm_init(i_this, e_rdb_class::BCK_RB_RSTARTLOOP, 10.0f, 2, 1.0f);
} else if ((bullbo->field_0x6be & 0x800) != 0) {
} else if ((bullbo->mStatusFlags & 0x800) != 0) {
anm_init(i_this, e_rdb_class::BCK_RB_RSTART, 10.0f, 2, 1.0f);
}
@ -2396,7 +2396,7 @@ static void e_rd_wb_run_B(e_rd_class* i_this) {
}
// check if we need to jump a fence
if ((bullbo->field_0x6be & 0x100) != 0) {
if ((bullbo->mStatusFlags & 0x100) != 0) {
i_this->mAction = ACTION_WB_BJUMP;
i_this->mMode = 0;
}
@ -2433,7 +2433,7 @@ static void e_rd_wb_bjump(e_rd_class* i_this) {
break;
case 2:
if ((bullbo->field_0x6be & 0x200) != 0) {
if ((bullbo->mStatusFlags & 0x200) != 0) {
anm_init(i_this, BCK_RD_RUN02, 2.0f, 0, 1.0f);
i_this->mMode = 3;
}
@ -2559,7 +2559,7 @@ static void e_rd_s_damage(e_rd_class* i_this) {
if (i_this->field_0x9be != 0) {
e_wb_class* bullbo = (e_wb_class*)fopAcM_SearchByID(i_this->mWbActorID);
if (bullbo != NULL) {
bullbo->field_0x6be &= ~i_this->field_0x9be;
bullbo->mStatusFlags &= ~i_this->field_0x9be;
}
i_this->field_0x9be = 0;
@ -2660,7 +2660,7 @@ static void rd_disappear(e_rd_class* i_this) {
if (i_this->field_0x9be != 0) {
e_wb_class* bullbo = (e_wb_class*)fopAcM_SearchByID(i_this->mWbActorID);
if (bullbo != NULL) {
bullbo->field_0x6be &= ~i_this->field_0x9be;
bullbo->mStatusFlags &= ~i_this->field_0x9be;
if (bullbo->mActionID == 1) {
bullbo->mActionID = 0;
}
@ -3767,7 +3767,7 @@ static void e_rd_kiba_end(e_rd_class* i_this) {
i_this->field_0x9c8 = 1;
}
if ((bullbo->field_0x6be & 0x100) != 0) {
if ((bullbo->mStatusFlags & 0x100) != 0) {
i_this->mAction = ACTION_WB_BJUMP;
i_this->mMode = 0;
i_this->field_0x990[1] = 2000;
@ -3794,7 +3794,7 @@ static void e_rd_ikki_end(e_rd_class* i_this) {
i_this->field_0x9bc = 0;
if (daPy_getPlayerActorClass()->checkHorseRide() && bullbo != NULL) {
bullbo->field_0x6be &= ~i_this->field_0x9be;
bullbo->mStatusFlags &= ~i_this->field_0x9be;
i_this->field_0x9be = 0;
bullbo->mActionID = 16;
bullbo->mActionMode = 0;
@ -3863,7 +3863,7 @@ static void e_rd_ikki2_end(e_rd_class* i_this) {
i_this->field_0x9bc = 0;
if (bullbo != NULL) {
bullbo->field_0x6be &= ~i_this->field_0x9be;
bullbo->mStatusFlags &= ~i_this->field_0x9be;
i_this->field_0x9be = 0;
}
@ -3906,14 +3906,14 @@ static void e_rd_lv9_end(e_rd_class* i_this) {
break;
case 1:
if ((bullbo->field_0x6be & 8) != 0) {
if ((bullbo->mStatusFlags & 8) != 0) {
anm_init(i_this, e_rdb_class::BCK_RB_RWAIT, 10.0f, 2, 1.0f);
i_this->mMode = 2;
}
break;
case 2:
if ((bullbo->field_0x6be & 8) != 0) {
if ((bullbo->mStatusFlags & 8) != 0) {
anm_init(i_this, e_rdb_class::BCK_RB_LV9_END03, 5.0f, 0, 1.0f);
i_this->mSound.startCreatureVoice(Z2SE_EN_RDB_V_LV9_END03, -1);
i_this->mMode = 3;
@ -4090,7 +4090,7 @@ static void damage_check(e_rd_class* i_this) {
e_wb_class* bullbo_p = (e_wb_class*)bullbo;
int iVar1;
if (i_this->field_0x9bc == 2 && bullbo != NULL && (bullbo_p->field_0x6be & 0xC0) != 0) {
if (i_this->field_0x9bc == 2 && bullbo != NULL && (bullbo_p->mStatusFlags & 0xC0) != 0) {
if (i_this->mAction == ACTION_IKKI2_END) {
i_this->mMode = 10;
return;
@ -4100,7 +4100,7 @@ static void damage_check(e_rd_class* i_this) {
i_this->mMode = 0;
i_this->field_0x998 = 1000;
if ((bullbo_p->field_0x6be & 0x80) != 0) {
if ((bullbo_p->mStatusFlags & 0x80) != 0) {
i_this->field_0xa0e = a_this->shape_angle.y + 0x8000 + (s16)cM_rndFX(3000.0f);
i_this->field_0x9f6 = (s16)cM_rndFX(1000.0f);
} else {
@ -4132,8 +4132,8 @@ static void damage_check(e_rd_class* i_this) {
if (dComIfGp_getHorseActor()->speedF > 20.0f || sVar1 > 0x7800 || sVar1 < -0x7800) {
cc_at_check(a_this, &i_this->mAtInfo);
dScnPly_c::setPauseTimer(0);
bullbo_p->field_0x79e++;
if (bullbo_p->field_0x79e >= 3) {
bullbo_p->mLapCount++;
if (bullbo_p->mLapCount >= 3) {
mDoAud_bgmStop(30);
i_this->mAction = ACTION_IKKI2_END;
i_this->mMode = 0;
@ -4264,8 +4264,8 @@ static void damage_check(e_rd_class* i_this) {
if (i_this->mBossMode != 0 && bullbo != NULL) {
i_this->field_0x998 = 20;
if (i_this->mBossMode == 2) {
bullbo_p->field_0x79e++;
if (bullbo_p->field_0x79e == 1) {
bullbo_p->mLapCount++;
if (bullbo_p->mLapCount == 1) {
a_this->health = 0;
/* dSv_event_flag_c::M_055 - Main Event - Did damage at least once during joust/one-on-one battle */
dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[0x58]);
@ -4274,7 +4274,7 @@ static void damage_check(e_rd_class* i_this) {
dScnPly_c::setPauseTimer(0);
}
if (l_HIO.one_hit_kill != 0 || bullbo_p->field_0x79e >= 2) {
if (l_HIO.one_hit_kill != 0 || bullbo_p->mLapCount >= 2) {
mDoAud_bgmStop(30);
i_this->mAction = ACTION_IKKI_END;
i_this->mMode = 0;
@ -4299,25 +4299,25 @@ static void damage_check(e_rd_class* i_this) {
}
}
bullbo_p->field_0x79e++;
bullbo_p->field_0x79f++;
bullbo_p->mLapCount++;
bullbo_p->mPathAdjustCounter++;
part_break(i_this);
if (bullbo_p->field_0x79e == 1 || bullbo_p->field_0x79e == 2 || bullbo_p->field_0x79e == 3 ||
bullbo_p->field_0x79e == 4 || bullbo_p->field_0x79e == 6) {
if (bullbo_p->mLapCount == 1 || bullbo_p->mLapCount == 2 || bullbo_p->mLapCount == 3 ||
bullbo_p->mLapCount == 4 || bullbo_p->mLapCount == 6) {
part_break(i_this);
}
s8 sVar2 = 8 - bullbo_p->field_0x79e;
s8 sVar2 = 8 - bullbo_p->mLapCount;
if (sVar2 > 8) {
sVar2 = 8;
}
dComIfGs_BossLife_public_Set(sVar2);
if (bullbo_p->field_0x79e == 5) {
if (bullbo_p->mLapCount == 5) {
Z2GetAudioMgr()->changeSubBgmStatus(2);
}
if (bullbo_p->field_0x79e >= 8) {
if (bullbo_p->mLapCount >= 8) {
i_this->mAction = ACTION_KIBA_END;
i_this->mMode = 0;
mDoAud_seStart(Z2SE_EN_RDB_V_FAINT, 0, 0, 0);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -16,13 +16,13 @@ BOOL e_wb_class::checkWait() {
void e_wb_class::setPlayerRideNow() {
mActionID = ACT_PL_RIDE_NOW;
mActionMode = 0;
field_0x6be |= 3;
mStatusFlags |= 3;
}
void e_wb_class::setPlayerRide() {
mActionID = ACT_PL_RIDE;
mActionMode = 0;
field_0x6be |= 3;
mStatusFlags |= 3;
mZ2Ride.setLinkRiding(true);
}
@ -35,7 +35,7 @@ void e_wb_class::getOff() {
}
mActionMode = 0;
field_0x6be &= ~3;
mStatusFlags &= ~3;
mZ2Ride.setLinkRiding(false);
}

View File

@ -152,6 +152,20 @@ void mDoMtx_XrotM(Mtx mtx, s16 x) {
}
/* 8000C3DC-8000C434 006D1C 0058+00 5/5 24/24 809/809 .text mDoMtx_YrotS__FPA4_fs */
/**
* @brief Sets the given matrix to a rotation transformation around the Y-axis.
*
* This function constructs a 3x4 rotation matrix for rotating around the Y-axis by the specified angle.
* The matrix is filled directly with cosine and sine values computed from the angle.
*
* The resulting matrix layout is:
* - Row 0: cos(y), 0, sin(y), 0
* - Row 1: 0, 1, 0, 0
* - Row 2: -sin(y), 0, cos(y), 0
*
* @param mtx The 3x4 matrix to modify (output parameter).
* @param y The rotation angle as a signed 16-bit integer.
*/
void mDoMtx_YrotS(Mtx mtx, s16 y) {
f32 l_cos = JMASCos(y);
f32 l_sin = JMASSin(y);