Skip to content

Commit

Permalink
d_a_obj_appear_bridge mostly matching (#36)
Browse files Browse the repository at this point in the history
* d_a_obj_appear_bridge - weak function order issue

* Mark as nonmatching for now

* Name unk IScnObjCallback funcs

---------

Co-authored-by: elijah-thomas774 <[email protected]>
  • Loading branch information
robojumper and elijah-thomas774 authored Sep 28, 2024
1 parent 1039b3b commit 392145b
Show file tree
Hide file tree
Showing 12 changed files with 286 additions and 72 deletions.
3 changes: 3 additions & 0 deletions config/SOUE01/rels/d_a_obj_appear_bridgeNP/splits.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,6 @@ REL/global_destructor_chain.c:
REL/d/a/obj/d_a_obj_appear_bridge.cpp:
.text start:0x000000F0 end:0x000012D8
.ctors start:0x00000000 end:0x00000004
.rodata start:0x00000000 end:0x00000034
.data start:0x00000000 end:0x000002B0
.bss start:0x00000008 end:0x000000D0
129 changes: 65 additions & 64 deletions config/SOUE01/rels/d_a_obj_appear_bridgeNP/symbols.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,71 +3,72 @@ _epilog = .text:0x00000030; // type:function size:0x2C scope:global
_unresolved = .text:0x00000060; // type:function size:0x4 scope:global
__register_global_object = .text:0x00000070; // type:function size:0x1C scope:global
__destroy_global_chain = .text:0x00000090; // type:function size:0x54 scope:global
fn_407_F0 = .text:0x000000F0; // type:function size:0x140
fn_407_230 = .text:0x00000230; // type:function size:0x58
fn_407_290 = .text:0x00000290; // type:function size:0x6C
fn_407_300 = .text:0x00000300; // type:function size:0xA0
fn_407_3A0 = .text:0x000003A0; // type:function size:0xA4
fn_407_450 = .text:0x00000450; // type:function size:0x40
fn_407_490 = .text:0x00000490; // type:function size:0x174
fn_407_610 = .text:0x00000610; // type:function size:0x194
fn_407_7B0 = .text:0x000007B0; // type:function size:0x10
fn_407_7C0 = .text:0x000007C0; // type:function size:0x8
fn_407_7D0 = .text:0x000007D0; // type:function size:0x30
fn_407_800 = .text:0x00000800; // type:function size:0x10
fn_407_810 = .text:0x00000810; // type:function size:0x28
fn_407_840 = .text:0x00000840; // type:function size:0x34
fn_407_880 = .text:0x00000880; // type:function size:0x6C
fn_407_8F0 = .text:0x000008F0; // type:function size:0x7C
fn_407_970 = .text:0x00000970; // type:function size:0x70
fn_407_9E0 = .text:0x000009E0; // type:function size:0xCC
fn_407_AB0 = .text:0x00000AB0; // type:function size:0x4
fn_407_AC0 = .text:0x00000AC0; // type:function size:0x54
fn_407_B20 = .text:0x00000B20; // type:function size:0xF4
fn_407_C20 = .text:0x00000C20; // type:function size:0x4
fn_407_C30 = .text:0x00000C30; // type:function size:0xFC
fn_407_D30 = .text:0x00000D30; // type:function size:0x10
fn_407_D40 = .text:0x00000D40; // type:function size:0x4
fn_407_D50 = .text:0x00000D50; // type:function size:0x4
fn_407_D60 = .text:0x00000D60; // type:function size:0x4
fn_407_D70 = .text:0x00000D70; // type:function size:0x4
fn_407_D80 = .text:0x00000D80; // type:function size:0x4
fn_407_D90 = .text:0x00000D90; // type:function size:0x60
fn_407_DF0 = .text:0x00000DF0; // type:function size:0xC
fn_407_E00 = .text:0x00000E00; // type:function size:0x1C
fn_407_E20 = .text:0x00000E20; // type:function size:0x1C
fn_407_E40 = .text:0x00000E40; // type:function size:0x1C
fn_407_E60 = .text:0x00000E60; // type:function size:0x10
fn_407_E70 = .text:0x00000E70; // type:function size:0x10
fn_407_E80 = .text:0x00000E80; // type:function size:0x10
fn_407_E90 = .text:0x00000E90; // type:function size:0x10
fn_407_EA0 = .text:0x00000EA0; // type:function size:0x10
fn_407_EB0 = .text:0x00000EB0; // type:function size:0x10
fn_407_EC0 = .text:0x00000EC0; // type:function size:0x30
fn_407_EF0 = .text:0x00000EF0; // type:function size:0x30
fn_407_F20 = .text:0x00000F20; // type:function size:0x30
fn_407_F50 = .text:0x00000F50; // type:function size:0x2A0
fn_407_11F0 = .text:0x000011F0; // type:function size:0x58
fn_407_1250 = .text:0x00001250; // type:function size:0x88
dAcOappearBridge_c_classInit__Fv = .text:0x000000F0; // type:function size:0x140
__dt__31sFState_c<18dAcOappearBridge_c>Fv = .text:0x00000230; // type:function size:0x58
__dt__34sFStateFct_c<18dAcOappearBridge_c>Fv = .text:0x00000290; // type:function size:0x6C
__dt__87sStateMgr_c<18dAcOappearBridge_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000300; // type:function size:0xA0
__dt__57sFStateMgr_c<18dAcOappearBridge_c,20sStateMethodUsr_FI_c>Fv = .text:0x000003A0; // type:function size:0xA4
__dt__Q34nw4r3g3d15IScnObjCallbackFv = .text:0x00000450; // type:function size:0x40
createHeap__18dAcOappearBridge_cFv = .text:0x00000490; // type:function size:0x174
create__18dAcOappearBridge_cFv = .text:0x00000610; // type:function size:0x194
changeState__87sStateMgr_c<18dAcOappearBridge_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x000007B0; // type:function size:0x10
doDelete__18dAcOappearBridge_cFv = .text:0x000007C0; // type:function size:0x8
actorExecute__18dAcOappearBridge_cFv = .text:0x000007D0; // type:function size:0x30
executeState__87sStateMgr_c<18dAcOappearBridge_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000800; // type:function size:0x10
draw__18dAcOappearBridge_cFv = .text:0x00000810; // type:function size:0x28
initializeState_Wait__18dAcOappearBridge_cFv = .text:0x00000840; // type:function size:0x34
executeState_Wait__18dAcOappearBridge_cFv = .text:0x00000880; // type:function size:0x6C
finalizeState_Wait__18dAcOappearBridge_cFv = .text:0x000008F0; // type:function size:0x7C
initializeState_Appear__18dAcOappearBridge_cFv = .text:0x00000970; // type:function size:0x70
executeState_Appear__18dAcOappearBridge_cFv = .text:0x000009E0; // type:function size:0xCC
finalizeState_Appear__18dAcOappearBridge_cFv = .text:0x00000AB0; // type:function size:0x4
initializeState_Disappear__18dAcOappearBridge_cFv = .text:0x00000AC0; // type:function size:0x54
executeState_Disappear__18dAcOappearBridge_cFv = .text:0x00000B20; // type:function size:0xF4
finalizeState_Disappear__18dAcOappearBridge_cFv = .text:0x00000C20; // type:function size:0x4
__dt__18dAcOappearBridge_cFv = .text:0x00000C30; // type:function size:0xFC
getStateID__87sStateMgr_c<18dAcOappearBridge_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000D30; // type:function size:0x10
ExecCallback_DRAW_XLU__Q34nw4r3g3d15IScnObjCallbackFQ44nw4r3g3d6ScnObj6TimingPQ34nw4r3g3d6ScnObjUlPv = .text:0x00000D40; // type:function size:0x4
ExecCallback_DRAW_OPA__Q34nw4r3g3d15IScnObjCallbackFQ44nw4r3g3d6ScnObj6TimingPQ34nw4r3g3d6ScnObjUlPv = .text:0x00000D50; // type:function size:0x4
ExecCallback_CALC_MAT__Q34nw4r3g3d15IScnObjCallbackFQ44nw4r3g3d6ScnObj6TimingPQ34nw4r3g3d6ScnObjUlPv = .text:0x00000D60; // type:function size:0x4
ExecCallback_CALC_WORLD__Q34nw4r3g3d15IScnObjCallbackFQ44nw4r3g3d6ScnObj6TimingPQ34nw4r3g3d6ScnObjUlPv = .text:0x00000D70; // type:function size:0x4
ExecCallback_CALC_VIEW__Q34nw4r3g3d15IScnObjCallbackFQ44nw4r3g3d6ScnObj6TimingPQ34nw4r3g3d6ScnObjUlPv = .text:0x00000D80; // type:function size:0x4
build__34sFStateFct_c<18dAcOappearBridge_c>FRC12sStateIDIf_c = .text:0x00000D90; // type:function size:0x60
dispose__34sFStateFct_c<18dAcOappearBridge_c>FRP10sStateIf_c = .text:0x00000DF0; // type:function size:0xC
initialize__31sFState_c<18dAcOappearBridge_c>Fv = .text:0x00000E00; // type:function size:0x1C
execute__31sFState_c<18dAcOappearBridge_c>Fv = .text:0x00000E20; // type:function size:0x1C
finalize__31sFState_c<18dAcOappearBridge_c>Fv = .text:0x00000E40; // type:function size:0x1C
initializeState__87sStateMgr_c<18dAcOappearBridge_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000E60; // type:function size:0x10
finalizeState__87sStateMgr_c<18dAcOappearBridge_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000E70; // type:function size:0x10
refreshState__87sStateMgr_c<18dAcOappearBridge_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000E80; // type:function size:0x10
getState__87sStateMgr_c<18dAcOappearBridge_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000E90; // type:function size:0x10
getNewStateID__87sStateMgr_c<18dAcOappearBridge_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000EA0; // type:function size:0x10
getOldStateID__87sStateMgr_c<18dAcOappearBridge_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000EB0; // type:function size:0x10
finalizeState__33sFStateID_c<18dAcOappearBridge_c>CFR18dAcOappearBridge_c = .text:0x00000EC0; // type:function size:0x30
executeState__33sFStateID_c<18dAcOappearBridge_c>CFR18dAcOappearBridge_c = .text:0x00000EF0; // type:function size:0x30
initializeState__33sFStateID_c<18dAcOappearBridge_c>CFR18dAcOappearBridge_c = .text:0x00000F20; // type:function size:0x30
__sinit_\d_a_obj_appear_bridge_cpp = .text:0x00000F50; // type:function size:0x2A0 scope:local
__dt__33sFStateID_c<18dAcOappearBridge_c>Fv = .text:0x000011F0; // type:function size:0x58
isSameName__33sFStateID_c<18dAcOappearBridge_c>CFPCc = .text:0x00001250; // type:function size:0x88
_ctors = .ctors:0x00000000; // type:label scope:global
_dtors = .dtors:0x00000000; // type:label scope:global
__destroy_global_chain_reference = .dtors:0x00000000; // type:object size:0x4 scope:global
lbl_407_rodata_0 = .rodata:0x00000000; // type:object size:0x20 data:float
lbl_407_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float
lbl_407_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float
lbl_407_rodata_28 = .rodata:0x00000028; // type:object size:0xC data:float
lbl_407_data_0 = .data:0x00000000; // type:object size:0x48 data:4byte
lbl_407_data_48 = .data:0x00000048; // type:object size:0x20 data:string
lbl_407_data_68 = .data:0x00000068; // type:object size:0x4 data:4byte
lbl_407_data_6C = .data:0x0000006C; // type:object size:0x4 data:4byte
lbl_407_data_70 = .data:0x00000070; // type:object size:0x80
lbl_407_data_F0 = .data:0x000000F0; // type:object size:0x30
lbl_407_data_120 = .data:0x00000120; // type:object size:0x30
lbl_407_data_150 = .data:0x00000150; // type:object size:0x18
lbl_407_data_168 = .data:0x00000168; // type:object size:0x114
lbl_407_data_27C = .data:0x0000027C; // type:object size:0x34
lbl_407_rodata_0 = .rodata:0x00000000; // type:object size:0x20 scope:local data:float
lbl_407_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float
lbl_407_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float
lbl_407_rodata_28 = .rodata:0x00000028; // type:object size:0xC scope:local data:float
g_profile_OBJ_APPEAR_BRIDGE = .data:0x00000000; // type:object size:0x10 data:4byte
lbl_407_data_48 = .data:0x00000048; // type:object size:0x20 scope:local data:string
FLAGS_1 = .data:0x00000068; // type:object size:0x4 data:4byte
FLAGS_2 = .data:0x0000006C; // type:object size:0x4 data:4byte
__vt__18dAcOappearBridge_c = .data:0x00000070; // type:object size:0x80
__vt__57sFStateMgr_c<18dAcOappearBridge_c,20sStateMethodUsr_FI_c> = .data:0x000000F0; // type:object size:0x30
__vt__87sStateMgr_c<18dAcOappearBridge_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x00000120; // type:object size:0x30
__vt__34sFStateFct_c<18dAcOappearBridge_c> = .data:0x00000150; // type:object size:0x14
__vt__31sFState_c<18dAcOappearBridge_c> = .data:0x00000168; // type:object size:0x18
__vt__Q34nw4r3g3d15IScnObjCallback = .data:0x00000180; // type:object size:0x20
__vt__33sFStateID_c<18dAcOappearBridge_c> = .data:0x0000027C; // type:object size:0x34
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
lbl_407_bss_8 = .bss:0x00000008; // type:object size:0x18 data:4byte
lbl_407_bss_20 = .bss:0x00000020; // type:object size:0x40 data:4byte
lbl_407_bss_60 = .bss:0x00000060; // type:object size:0x40 data:4byte
lbl_407_bss_A0 = .bss:0x000000A0; // type:object size:0x30 data:4byte
lbl_407_bss_8 = .bss:0x00000008; // type:object size:0x18 scope:local data:4byte
StateID_Wait__18dAcOappearBridge_c = .bss:0x00000020; // type:object size:0x30 data:4byte
StateID_Appear__18dAcOappearBridge_c = .bss:0x00000060; // type:object size:0x30 data:4byte
StateID_Disappear__18dAcOappearBridge_c = .bss:0x000000A0; // type:object size:0x30 data:4byte
10 changes: 5 additions & 5 deletions config/SOUE01/symbols.txt
Original file line number Diff line number Diff line change
Expand Up @@ -630,7 +630,7 @@ fn_80019D70 = .text:0x80019D70; // type:function size:0x58
fn_80019DD0 = .text:0x80019DD0; // type:function size:0x5C
fn_80019E30 = .text:0x80019E30; // type:function size:0x44
fn_80019E80 = .text:0x80019E80; // type:function size:0x3A8
fn_8001A230 = .text:0x8001A230; // type:function size:0x50
attach__14dScnCallback_cFRQ23m3d9scnLeaf_c = .text:0x8001A230; // type:function size:0x50
fn_8001A280 = .text:0x8001A280; // type:function size:0x144
fn_8001A3D0 = .text:0x8001A3D0; // type:function size:0x140
fn_8001A510 = .text:0x8001A510; // type:function size:0x4
Expand Down Expand Up @@ -3599,7 +3599,7 @@ fn_800A0B90 = .text:0x800A0B90; // type:function size:0x10
fn_800A0BA0 = .text:0x800A0BA0; // type:function size:0x94
__ct__5EventFPcUlUlPvPv = .text:0x800A0C40; // type:function size:0xEC
fn_800A0D30 = .text:0x800A0D30; // type:function size:0xEC
fn_800A0E20 = .text:0x800A0E20; // type:function size:0x208
__ct__5EventFUllUlPvPv = .text:0x800A0E20; // type:function size:0x208
fn_800A1030 = .text:0x800A1030; // type:function size:0x208
__dt__5EventFv = .text:0x800A1240; // type:function size:0x40
fn_800A1280 = .text:0x800A1280; // type:function size:0x2E4
Expand Down Expand Up @@ -3723,7 +3723,7 @@ fn_800A99D0 = .text:0x800A99D0; // type:function size:0xE0
fn_800A9AB0 = .text:0x800A9AB0; // type:function size:0x50
fn_800A9B00 = .text:0x800A9B00; // type:function size:0xC4
fn_800A9BD0 = .text:0x800A9BD0; // type:function size:0x78
fn_800A9C50 = .text:0x800A9C50; // type:function size:0xD4
checkPosInArea__FllRC7mVec3_cPPv = .text:0x800A9C50; // type:function size:0xD4
fn_800A9D30 = .text:0x800A9D30; // type:function size:0x60
fn_800A9D90 = .text:0x800A9D90; // type:function size:0x90
fn_800A9E20 = .text:0x800A9E20; // type:function size:0x12C
Expand Down Expand Up @@ -19097,7 +19097,7 @@ fn_80339CF0 = .text:0x80339CF0; // type:function size:0x68
fn_80339D60 = .text:0x80339D60; // type:function size:0x78
fn_80339DE0 = .text:0x80339DE0; // type:function size:0x58
fn_80339E40 = .text:0x80339E40; // type:function size:0x100
fn_80339F40 = .text:0x80339F40; // type:function size:0xEC
destroyActorBgCollision__21CollisionCheckContextFR14ActorCollision = .text:0x80339F40; // type:function size:0xEC
fn_8033A030 = .text:0x8033A030; // type:function size:0x88
fn_8033A0C0 = .text:0x8033A0C0; // type:function size:0x74
fn_8033A140 = .text:0x8033A140; // type:function size:0xA0
Expand Down Expand Up @@ -29880,7 +29880,7 @@ lbl_80500A20 = .data:0x80500A20; // type:object size:0x50
lbl_80500A70 = .data:0x80500A70; // type:object size:0x2C
lbl_80500A9C = .data:0x80500A9C; // type:object size:0xC
lbl_80500AA8 = .data:0x80500AA8; // type:object size:0x10 data:string
lbl_80500AB8 = .data:0x80500AB8; // type:object size:0x20
__vt__14dScnCallback_c = .data:0x80500AB8; // type:object size:0x20
lbl_80500AD8 = .data:0x80500AD8; // type:object size:0x44
lbl_80500B1C = .data:0x80500B1C; // type:object size:0x2C
lbl_80500B48 = .data:0x80500B48; // type:object size:0xC
Expand Down
1 change: 1 addition & 0 deletions configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -954,6 +954,7 @@ def nw4rLib(lib_name, objects, extra_cflags=[]):
Rel(NonMatching, "d_a_nusi_npc", "REL/d/a/d_a_nusi_npc.cpp"),
Rel(NonMatching, "d_a_obj_amber", "REL/d/a/obj/d_a_obj_amber.cpp"),
Rel(NonMatching, "d_a_obj_ancient_jewels", "REL/d/a/obj/d_a_obj_ancient_jewels.cpp"),
# matching except for IScnObjCallback weak function order issue
Rel(NonMatching, "d_a_obj_appear_bridge", "REL/d/a/obj/d_a_obj_appear_bridge.cpp"),
Rel(NonMatching, "d_a_obj_arrow_switch", "REL/d/a/obj/d_a_obj_arrow_switch.cpp"),
Rel(NonMatching, "d_a_obj_asura_pillar", "REL/d/a/obj/d_a_obj_asura_pillar.cpp"),
Expand Down
6 changes: 3 additions & 3 deletions include/d/a/d_a_base.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,9 @@ class dAcBase_c : public dBase_c {
/* 0x84 */ ObjInfo *obj_info;
/* 0x88 */ TList<SoundInfo, 0xC> sound_list;
/* 0x94 */ SoundSource *sound_source;
/* 0x9C */ mVec3_c *obj_pos;
/* 0x9c */ mVec3_c pos_copy;
/* 0xa8 */ u32 params2;
/* 0x98 */ mVec3_c *obj_pos;
/* 0x9C */ mVec3_c pos_copy;
/* 0xA8 */ u32 params2;
/* 0xAC */ mAng3_c rot_copy;
/* 0xB2 */ u16 obj_id; // enemydefeat flag / id on obj-map
/* 0xB4 */ s8 room_id_copy;
Expand Down
50 changes: 50 additions & 0 deletions include/d/a/obj/d_a_obj_appear_bridge.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#ifndef D_A_OBJ_APPEAR_BRIDGE_H
#define D_A_OBJ_APPEAR_BRIDGE_H

#include <d/a/obj/d_a_obj_base.h>
#include <m/m3d/m_anmmatclr.h>
#include <m/m3d/m_anmtexsrt.h>
#include <m/m3d/m_smdl.h>
#include <s/s_State.hpp>
#include <s/s_StateMgr.hpp>
#include <toBeSorted/actor_collision.h>
#include <toBeSorted/actor_event.h>
#include <toBeSorted/stage_render_stuff.h>

class dAcOappearBridge_c : public dAcObjBase_c {
public:
dAcOappearBridge_c() : mStateMgr(*this, sStateID::null), mActorEvent(*this, nullptr), mSceneCallback(this) {}
virtual ~dAcOappearBridge_c() {}
virtual bool createHeap() override;
virtual int create() override;
virtual int actorExecute() override;
virtual int draw() override;
virtual int doDelete() override;

STATE_FUNC_DECLARE(dAcOappearBridge_c, Wait);
STATE_FUNC_DECLARE(dAcOappearBridge_c, Appear);
STATE_FUNC_DECLARE(dAcOappearBridge_c, Disappear);

private:
static const f32 sMovementRate;

nw4r::g3d::ResFile mResFile;
m3d::smdl_c mModel;
m3d::anmTexSrt_c mSrtAnm;
m3d::anmMatClr_c mClrAnm;
ActorCollision mCollision;
STATE_MGR_DECLARE(dAcOappearBridge_c);
ActorEventRelated mActorEvent;

// TODO the weak IScnObjCallback functions are in the wrong order.
// The vtable order is dtor, World, Mat, View, Opa, Xlu
// and the emitted order is dtor, Xlu, Opa, View, Mat, World
// but the order in the binary is dtor, Xlu, Opa, Mat, World, View
dScnCallback_c mSceneCallback;
/* 0x650 */ mVec3_c mSoundPosition;
/* 0x65C */ f32 field_0x65C;
/* 0x660 */ u8 mAreaIdx;
/* 0x661 */ u8 mEventId;
};

#endif
2 changes: 2 additions & 0 deletions include/nw4r/g3d/g3d_scnobj.h
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,8 @@ struct IScnObjCallback {
virtual void ExecCallback_CALC_WORLD(ScnObj::Timing, ScnObj *, u32, void *) {} // at 0xC
virtual void ExecCallback_CALC_MAT(ScnObj::Timing, ScnObj *, u32, void *) {} // at 0x10
virtual void ExecCallback_CALC_VIEW(ScnObj::Timing, ScnObj *, u32, void *) {} // at 0x14
virtual void ExecCallback_DRAW_OPA(ScnObj::Timing, ScnObj *, u32, void *) {} // at 0x18
virtual void ExecCallback_DRAW_XLU(ScnObj::Timing, ScnObj *, u32, void *) {} // at 0x1C
};

// Is there a better way of resolving this dependency?
Expand Down
1 change: 1 addition & 0 deletions include/toBeSorted/actor_collision.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ class CollisionCheckContext {

static CollisionCheckContext* get();
void registerActorBgCollision(ActorCollision&, dAcObjBase_c*);
void destroyActorBgCollision(ActorCollision&);
};

#endif
10 changes: 10 additions & 0 deletions include/toBeSorted/area_utils.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#ifndef AREA_UTILS_H
#define AREA_UTILS_H

#include <m/m_vec.h>

/* 800a9b00 */ bool checkPosInArea(void **AREA, const mVec3_c& pos);
/* 800a9bd0 */ void *getAreaForIndexInRoom(s32 areaIndex, s32 roomId);
/* 800a9c50 */ bool *checkPosInArea(s32 areaIndex, s32 roomId, const mVec3_c& pos, void **AREA);

#endif
1 change: 1 addition & 0 deletions include/toBeSorted/event.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ class Event {
public:
/** 0x800A0C40 */
Event(char *eventName, u32 unk, u32 eventFlags, void *callback1, void *callback2);
Event(u32 eventId, s32 roomId, u32 eventFlags, void *callback1, void *callback2);
/** 0x800A1240 */
virtual ~Event();
};
Expand Down
19 changes: 19 additions & 0 deletions include/toBeSorted/stage_render_stuff.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#ifndef D_STAGE_RENDER_STUFF_H
#define D_STAGE_RENDER_STUFF_H

#include <d/a/obj/d_a_obj_base.h>
#include <nw4r/g3d/g3d_scnobj.h>
#include <m/m3d/m_scnleaf.h>

class dScnCallback_c : public nw4r::g3d::IScnObjCallback {
public:
dScnCallback_c(dAcObjBase_c *arg): mpActor(arg) {}
/* vt 0x10 */ virtual void ExecCallback_CALC_MAT(nw4r::g3d::ScnObj::Timing, nw4r::g3d::ScnObj *, u32, void *) override;

/* 0x04 */ dAcObjBase_c *mpActor;
/* 0x08 */ UNKWORD field_0x08;

/* 8001a230 */ void attach(m3d::scnLeaf_c&);
};

#endif
Loading

0 comments on commit 392145b

Please sign in to comment.