mirror of
https://github.com/zeldaret/ss
synced 2026-09-03 09:59:55 -04:00
Merge remote-tracking branch 'upstream/main' into d_a_obj_boomerang
This commit is contained in:
@@ -91,7 +91,7 @@ fn_129_8390 = .text:0x00008390; // type:function size:0x374
|
||||
fn_129_8710 = .text:0x00008710; // type:function size:0x29C
|
||||
fn_129_89B0 = .text:0x000089B0; // type:function size:0x3C4
|
||||
fn_129_8D80 = .text:0x00008D80; // type:function size:0x4C
|
||||
fn_129_8DD0 = .text:0x00008DD0; // type:function size:0xB8
|
||||
accelerateTowards__7dBird_cFR7mVec3_c = .text:0x00008DD0; // type:function size:0xB8
|
||||
fn_129_8E90 = .text:0x00008E90; // type:function size:0x2B4
|
||||
changesRot = .text:0x00009150; // type:function size:0x74
|
||||
fn_129_91D0 = .text:0x000091D0; // type:function size:0x374
|
||||
@@ -252,7 +252,7 @@ lbl_129_data_B50 = .data:0x00000B50; // type:object size:0xC data:string
|
||||
lbl_129_data_B5C = .data:0x00000B5C; // type:object size:0xC
|
||||
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
|
||||
lbl_129_bss_8 = .bss:0x00000008; // type:object size:0x14 data:4byte
|
||||
LOFTWING_POINTER = .bss:0x0000001C; // type:object size:0x94 data:4byte
|
||||
spInstance__7dBird_c = .bss:0x0000001C; // type:object size:0x94 data:4byte
|
||||
AcBird__STATE_MOVE = .bss:0x000000B0; // type:object size:0x40 data:4byte
|
||||
AcBird__STATE_HIDE = .bss:0x000000F0; // type:object size:0x40 data:4byte
|
||||
AcBird__STATE_RIDE_DEMO = .bss:0x00000130; // type:object size:0xC0 data:4byte
|
||||
|
||||
@@ -2,14 +2,14 @@ _prolog = .text:0x00000000; // type:function size:0x2C scope:global
|
||||
_epilog = .text:0x00000030; // type:function size:0x2C scope:global
|
||||
_unresolved = .text:0x00000060; // type:function size:0x4 scope:global
|
||||
dAcOF400GateLeaf_c_classInit__Fv = .text:0x00000070; // type:function size:0x54
|
||||
fn_628_D0 = .text:0x000000D0; // type:function size:0x98
|
||||
AcOF400GateLeaf__init = .text:0x00000170; // type:function size:0xE4
|
||||
AcOF400GateLeaf__draw = .text:0x00000260; // type:function size:0x6C
|
||||
AcOF400GateLeaf__getStoryflag = .text:0x000002D0; // type:function size:0xC
|
||||
createHeap__18dAcOF400GateLeaf_cFv = .text:0x000000D0; // type:function size:0x98
|
||||
create__18dAcOF400GateLeaf_cFv = .text:0x00000170; // type:function size:0xE4
|
||||
draw__18dAcOF400GateLeaf_cFv = .text:0x00000260; // type:function size:0x6C
|
||||
getStoryflag__18dAcOF400GateLeaf_cFv = .text:0x000002D0; // type:function size:0xC
|
||||
__dt__18dAcOF400GateLeaf_cFv = .text:0x000002E0; // type:function size:0x68
|
||||
_ctors = .ctors:0x00000000; // type:label scope:global
|
||||
_dtors = .dtors:0x00000000; // type:label scope:global
|
||||
g_profile_OBJ_F400_GATE_LEAF = .data:0x00000000; // type:object size:0x10
|
||||
lbl_628_section4_10 = .data:0x00000010; // type:object size:0x10
|
||||
lbl_628_section4_20 = .data:0x00000020; // type:object size:0x20 data:string
|
||||
lbl_628_section4_40 = .data:0x00000040; // type:object size:0x80
|
||||
lbl_628_section4_10 = .data:0x00000010; // type:object size:0x10 scope:local
|
||||
lbl_628_section4_20 = .data:0x00000020; // type:object size:0x20 scope:local data:string
|
||||
__vt__18dAcOF400GateLeaf_c = .data:0x00000040; // type:object size:0x80
|
||||
|
||||
@@ -2,16 +2,16 @@ _prolog = .text:0x00000000; // type:function size:0x2C scope:global
|
||||
_epilog = .text:0x00000030; // type:function size:0x2C scope:global
|
||||
_unresolved = .text:0x00000060; // type:function size:0x4 scope:global
|
||||
dAcOF400GateSeal_c_classInit__Fv = .text:0x00000070; // type:function size:0x98
|
||||
AcOF400GateSeal__initModels = .text:0x00000110; // type:function size:0x11C
|
||||
fn_629_230 = .text:0x00000230; // type:function size:0x8
|
||||
AcOF400GateSeal__init = .text:0x00000240; // type:function size:0x1A4
|
||||
fn_629_3F0 = .text:0x000003F0; // type:function size:0xD8
|
||||
AcOF400GateSeal__draw = .text:0x000004D0; // type:function size:0x28
|
||||
createHeap__18dAcOF400GateSeal_cFv = .text:0x00000110; // type:function size:0x11C
|
||||
actorCreate__18dAcOF400GateSeal_cFv = .text:0x00000230; // type:function size:0x8
|
||||
actorPostCreate__18dAcOF400GateSeal_cFv = .text:0x00000240; // type:function size:0x1A4
|
||||
actorExecute__18dAcOF400GateSeal_cFv = .text:0x000003F0; // type:function size:0xD8
|
||||
draw__18dAcOF400GateSeal_cFv = .text:0x000004D0; // type:function size:0x28
|
||||
__dt__18dAcOF400GateSeal_cFv = .text:0x00000500; // type:function size:0x84
|
||||
_ctors = .ctors:0x00000000; // type:label scope:global
|
||||
_dtors = .dtors:0x00000000; // type:label scope:global
|
||||
lbl_629_rodata_0 = .rodata:0x00000000; // type:object size:0x4 data:float
|
||||
lbl_629_rodata_0 = .rodata:0x00000000; // type:object size:0x4 scope:local data:float
|
||||
g_profile_OBJ_F400_GATE_SEAL = .data:0x00000000; // type:object size:0x10
|
||||
lbl_629_data_10 = .data:0x00000010; // type:object size:0x10
|
||||
lbl_629_data_20 = .data:0x00000020; // type:object size:0x20 data:string
|
||||
AcOF400GateSeal__vtable = .data:0x00000040; // type:object size:0x80
|
||||
lbl_629_data_10 = .data:0x00000010; // type:object size:0x10 scope:local
|
||||
lbl_629_data_20 = .data:0x00000020; // type:object size:0x20 scope:local data:string
|
||||
__vt__18dAcOF400GateSeal_c = .data:0x00000040; // type:object size:0x80
|
||||
|
||||
@@ -2,15 +2,15 @@ _prolog = .text:0x00000000; // type:function size:0x2C scope:global
|
||||
_epilog = .text:0x00000030; // type:function size:0x2C scope:global
|
||||
_unresolved = .text:0x00000060; // type:function size:0x4 scope:global
|
||||
dAcObjBirdSp_c_classInit__Fv = .text:0x00000070; // type:function size:0x54
|
||||
fn_241_D0 = .text:0x000000D0; // type:function size:0x8
|
||||
AcObjBirdSp__init = .text:0x000000E0; // type:function size:0xC4
|
||||
AcObjBirdSp__update = .text:0x000001B0; // type:function size:0x230
|
||||
fn_241_3E0 = .text:0x000003E0; // type:function size:0x8
|
||||
createHeap__14dAcObjBirdSp_cFv = .text:0x000000D0; // type:function size:0x8
|
||||
create__14dAcObjBirdSp_cFv = .text:0x000000E0; // type:function size:0xC4
|
||||
actorExecute__14dAcObjBirdSp_cFv = .text:0x000001B0; // type:function size:0x230
|
||||
draw__14dAcObjBirdSp_cFv = .text:0x000003E0; // type:function size:0x8
|
||||
__dt__14dAcObjBirdSp_cFv = .text:0x000003F0; // type:function size:0x68
|
||||
_ctors = .ctors:0x00000000; // type:label scope:global
|
||||
_dtors = .dtors:0x00000000; // type:label scope:global
|
||||
lbl_241_rodata_0 = .rodata:0x00000000; // type:object size:0x18 data:float
|
||||
AcObjBirdSp__colliderInit = .data:0x00000000; // type:object size:0x30
|
||||
lbl_241_rodata_0 = .rodata:0x00000000; // type:object size:0x18 scope:local data:float
|
||||
sCcSrc__14dAcObjBirdSp_c = .data:0x00000000; // type:object size:0x30
|
||||
g_profile_OBJ_BIRD_SP_UP = .data:0x00000030; // type:object size:0x10
|
||||
lbl_241_data_40 = .data:0x00000040; // type:object size:0x20
|
||||
AcObjBirdSp__vtable = .data:0x00000060; // type:object size:0x80
|
||||
@14827 = .data:0x00000040; // type:object size:0x20 scope:local
|
||||
__vt__14dAcObjBirdSp_c = .data:0x00000060; // type:object size:0x80
|
||||
|
||||
@@ -9,6 +9,6 @@ __dt__16dAcOBirdStatue_cFv = .text:0x00000250; // type:function size:0x68
|
||||
_ctors = .ctors:0x00000000; // type:label scope:global
|
||||
_dtors = .dtors:0x00000000; // type:label scope:global
|
||||
g_profile_OBJ_BIRD_STATUE = .data:0x00000000; // type:object size:0x10
|
||||
lbl_627_section4_10 = .data:0x00000010; // type:object size:0xC
|
||||
lbl_627_section4_1C = .data:0x0000001C; // type:object size:0x24
|
||||
lbl_627_section4_40 = .data:0x00000040; // type:object size:0x80
|
||||
lbl_627_section4_10 = .data:0x00000010; // type:object size:0xC scope:local
|
||||
lbl_627_section4_1C = .data:0x0000001C; // type:object size:0x24 scope:local
|
||||
__vt__16dAcOBirdStatue_c = .data:0x00000040; // type:object size:0x80
|
||||
|
||||
@@ -2,18 +2,18 @@ _prolog = .text:0x00000000; // type:function size:0x2C scope:global
|
||||
_epilog = .text:0x00000030; // type:function size:0x2C scope:global
|
||||
_unresolved = .text:0x00000060; // type:function size:0x4 scope:global
|
||||
dAcOblade_c_classInit__Fv = .text:0x00000070; // type:function size:0x90
|
||||
fn_382_100 = .text:0x00000100; // type:function size:0x98
|
||||
fn_382_1A0 = .text:0x000001A0; // type:function size:0xC4
|
||||
fn_382_270 = .text:0x00000270; // type:function size:0x8
|
||||
fn_382_280 = .text:0x00000280; // type:function size:0x30
|
||||
fn_382_2B0 = .text:0x000002B0; // type:function size:0x28
|
||||
createHeap__11dAcOblade_cFv = .text:0x00000100; // type:function size:0x98
|
||||
create__11dAcOblade_cFv = .text:0x000001A0; // type:function size:0xC4
|
||||
doDelete__11dAcOblade_cFv = .text:0x00000270; // type:function size:0x8
|
||||
actorExecute__11dAcOblade_cFv = .text:0x00000280; // type:function size:0x30
|
||||
draw__11dAcOblade_cFv = .text:0x000002B0; // type:function size:0x28
|
||||
__dt__11dAcOblade_cFv = .text:0x000002E0; // type:function size:0x68
|
||||
_ctors = .ctors:0x00000000; // type:label scope:global
|
||||
_dtors = .dtors:0x00000000; // type:label scope:global
|
||||
lbl_382_rodata_0 = .rodata:0x00000000; // type:object size:0x4 data:float
|
||||
lbl_382_rodata_4 = .rodata:0x00000004; // type:object size:0x4 align:4 data:float
|
||||
lbl_382_rodata_0 = .rodata:0x00000000; // type:object size:0x4 scope:local data:float
|
||||
lbl_382_rodata_4 = .rodata:0x00000004; // type:object size:0x4 scope:local align:4 data:float
|
||||
g_profile_OBJ_BLADE = .data:0x00000000; // type:object size:0x10
|
||||
lbl_382_data_10 = .data:0x00000010; // type:object size:0x10 data:string
|
||||
lbl_382_data_20 = .data:0x00000020; // type:object size:0x10
|
||||
lbl_382_data_30 = .data:0x00000030; // type:object size:0x20
|
||||
lbl_382_data_50 = .data:0x00000050; // type:object size:0x80
|
||||
lbl_382_data_10 = .data:0x00000010; // type:object size:0x10 scope:local data:string
|
||||
lbl_382_data_20 = .data:0x00000020; // type:object size:0x10 scope:local
|
||||
lbl_382_data_30 = .data:0x00000030; // type:object size:0x20 scope:local
|
||||
__vt__11dAcOblade_c = .data:0x00000050; // type:object size:0x80
|
||||
|
||||
@@ -2,20 +2,20 @@ _prolog = .text:0x00000000; // type:function size:0x2C scope:global
|
||||
_epilog = .text:0x00000030; // type:function size:0x2C scope:global
|
||||
_unresolved = .text:0x00000060; // type:function size:0x4 scope:global
|
||||
dAcOdistantShip_c_classInit__Fv = .text:0x00000070; // type:function size:0x5C
|
||||
AcOdistantShip__initModels = .text:0x000000D0; // type:function size:0x90
|
||||
AcOdistantShip__init = .text:0x00000160; // type:function size:0x100
|
||||
fn_616_260 = .text:0x00000260; // type:function size:0x8
|
||||
fn_616_270 = .text:0x00000270; // type:function size:0x8
|
||||
AcOdistantShip__draw = .text:0x00000280; // type:function size:0x34
|
||||
AcOdistantShip__getModelName = .text:0x000002C0; // type:function size:0x38
|
||||
createHeap__17dAcOdistantShip_cFv = .text:0x000000D0; // type:function size:0x90
|
||||
create__17dAcOdistantShip_cFv = .text:0x00000160; // type:function size:0x100
|
||||
doDelete__17dAcOdistantShip_cFv = .text:0x00000260; // type:function size:0x8
|
||||
actorExecute__17dAcOdistantShip_cFv = .text:0x00000270; // type:function size:0x8
|
||||
draw__17dAcOdistantShip_cFv = .text:0x00000280; // type:function size:0x34
|
||||
getModelName__17dAcOdistantShip_cFv = .text:0x000002C0; // type:function size:0x38
|
||||
__dt__17dAcOdistantShip_cFv = .text:0x00000300; // type:function size:0x68
|
||||
_ctors = .ctors:0x00000000; // type:label scope:global
|
||||
_dtors = .dtors:0x00000000; // type:label scope:global
|
||||
lbl_616_rodata_0 = .rodata:0x00000000; // type:object size:0x4 data:float
|
||||
lbl_616_rodata_4 = .rodata:0x00000004; // type:object size:0x4 align:4 data:float
|
||||
lbl_616_rodata_0 = .rodata:0x00000000; // type:object size:0x4 scope:local data:float
|
||||
lbl_616_rodata_4 = .rodata:0x00000004; // type:object size:0x4 scope:local align:4 data:float
|
||||
g_profile_OBJ_DIS_SHIP = .data:0x00000000; // type:object size:0x10
|
||||
lbl_616_data_10 = .data:0x00000010; // type:object size:0x10 data:string
|
||||
lbl_616_data_20 = .data:0x00000020; // type:object size:0x20
|
||||
lbl_616_data_40 = .data:0x00000040; // type:object size:0x10
|
||||
lbl_616_data_50 = .data:0x00000050; // type:object size:0x18
|
||||
AcOdistantShip__vtable = .data:0x00000068; // type:object size:0x80
|
||||
lbl_616_data_10 = .data:0x00000010; // type:object size:0x10 scope:local data:string
|
||||
lbl_616_data_20 = .data:0x00000020; // type:object size:0x20 scope:local
|
||||
lbl_616_data_40 = .data:0x00000040; // type:object size:0x10 scope:local
|
||||
lbl_616_data_50 = .data:0x00000050; // type:object size:0x18 scope:local
|
||||
__vt__17dAcOdistantShip_c = .data:0x00000068; // type:object size:0x80
|
||||
|
||||
@@ -20,7 +20,7 @@ fn_572_1250 = .text:0x00001250; // type:function size:0x16C4
|
||||
fn_572_2920 = .text:0x00002920; // type:function size:0x1C
|
||||
AcODoor__update = .text:0x00002940; // type:function size:0x808
|
||||
fn_572_3150 = .text:0x00003150; // type:function size:0x98
|
||||
AcODoor__isLocked = .text:0x000031F0; // type:function size:0x158
|
||||
isLocked__10dAcOdoor_cFv = .text:0x000031F0; // type:function size:0x158
|
||||
fn_572_3350 = .text:0x00003350; // type:function size:0x84
|
||||
fn_572_33E0 = .text:0x000033E0; // type:function size:0xC
|
||||
fn_572_33F0 = .text:0x000033F0; // type:function size:0x78
|
||||
|
||||
@@ -4,22 +4,21 @@ _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
|
||||
dAcOgirahimFoot_c_classInit__Fv = .text:0x000000F0; // type:function size:0xD0
|
||||
fn_425_1C0 = .text:0x000001C0; // type:function size:0x58
|
||||
__dt__15dShadowCircle_cFv = .text:0x000001C0; // type:function size:0x58
|
||||
__dt__30sFState_c<17dAcOgirahimFoot_c>Fv = .text:0x00000220; // type:function size:0x58
|
||||
__dt__33sFStateFct_c<17dAcOgirahimFoot_c>Fv = .text:0x00000280; // type:function size:0x6C
|
||||
__dt__86sStateMgr_c<17dAcOgirahimFoot_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x000002F0; // type:function size:0xA0
|
||||
__dt__56sFStateMgr_c<17dAcOgirahimFoot_c,20sStateMethodUsr_FI_c>Fv = .text:0x00000390; // type:function size:0xA4
|
||||
fn_425_440 = .text:0x00000440; // type:function size:0x80
|
||||
fn_425_4C0 = .text:0x000004C0; // type:function size:0xE8
|
||||
createHeap__17dAcOgirahimFoot_cFv = .text:0x00000440; // type:function size:0x80
|
||||
create__17dAcOgirahimFoot_cFv = .text:0x000004C0; // type:function size:0xE8
|
||||
changeState__86sStateMgr_c<17dAcOgirahimFoot_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x000005B0; // type:function size:0x10
|
||||
fn_425_5C0 = .text:0x000005C0; // type:function size:0x8
|
||||
fn_425_5D0 = .text:0x000005D0; // type:function size:0x30
|
||||
doDelete__17dAcOgirahimFoot_cFv = .text:0x000005C0; // type:function size:0x8
|
||||
actorExecute__17dAcOgirahimFoot_cFv = .text:0x000005D0; // type:function size:0x30
|
||||
executeState__86sStateMgr_c<17dAcOgirahimFoot_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000600; // type:function size:0x10
|
||||
fn_425_610 = .text:0x00000610; // type:function size:0xF4
|
||||
draw__17dAcOgirahimFoot_cFv = .text:0x00000610; // type:function size:0xF4
|
||||
getStateID__86sStateMgr_c<17dAcOgirahimFoot_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000710; // type:function size:0x10
|
||||
initializeState_Wait__17dAcOgirahimFoot_cFv = .text:0x00000720; // type:function size:0xC
|
||||
executeState_Wait__17dAcOgirahimFoot_cFv = .text:0x00000730; // type:function size:0x24
|
||||
fn_425_754 = .text:0x00000754; // type:function size:0x4
|
||||
executeState_Wait__17dAcOgirahimFoot_cFv = .text:0x00000730; // type:function size:0x28
|
||||
finalizeState_Wait__17dAcOgirahimFoot_cFv = .text:0x00000760; // type:function size:0x4
|
||||
initializeState_Appear__17dAcOgirahimFoot_cFv = .text:0x00000770; // type:function size:0xC
|
||||
executeState_Appear__17dAcOgirahimFoot_cFv = .text:0x00000780; // type:function size:0x68
|
||||
@@ -47,15 +46,15 @@ _dtors = .dtors:0x00000000; // type:label scope:global
|
||||
__destroy_global_chain_reference = .dtors:0x00000000; // type:object size:0x4 scope:global
|
||||
lbl_425_rodata_0 = .rodata:0x00000000; // type:object size:0x18 data:float
|
||||
g_profile_OBJ_GIRAHIM_FOOT = .data:0x00000000; // type:object size:0x10 data:4byte
|
||||
lbl_425_data_10 = .data:0x00000010; // type:object size:0x10
|
||||
lbl_425_data_20 = .data:0x00000020; // type:object size:0x20
|
||||
lbl_425_data_40 = .data:0x00000040; // type:object size:0x80
|
||||
lbl_425_data_C0 = .data:0x000000C0; // type:object size:0x30
|
||||
lbl_425_data_F0 = .data:0x000000F0; // type:object size:0x30
|
||||
lbl_425_data_120 = .data:0x00000120; // type:object size:0x18
|
||||
lbl_425_data_138 = .data:0x00000138; // type:object size:0x18
|
||||
lbl_425_data_150 = .data:0x00000150; // type:object size:0x9C
|
||||
lbl_425_data_1EC = .data:0x000001EC; // type:object size:0x34
|
||||
lbl_425_data_10 = .data:0x00000010; // type:object size:0x10 scope:local
|
||||
lbl_425_data_20 = .data:0x00000020; // type:object size:0x20 scope:local
|
||||
__vt__17dAcOgirahimFoot_c = .data:0x00000040; // type:object size:0x80
|
||||
lbl_425_data_C0 = .data:0x000000C0; // type:object size:0x30 scope:local
|
||||
lbl_425_data_F0 = .data:0x000000F0; // type:object size:0x30 scope:local
|
||||
lbl_425_data_120 = .data:0x00000120; // type:object size:0x18 scope:local
|
||||
lbl_425_data_138 = .data:0x00000138; // type:object size:0x18 scope:local
|
||||
lbl_425_data_150 = .data:0x00000150; // type:object size:0x9C scope:local
|
||||
lbl_425_data_1EC = .data:0x000001EC; // type:object size:0x34 scope:local
|
||||
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
|
||||
lbl_425_bss_8 = .bss:0x00000008; // type:object size:0x10 data:4byte
|
||||
lbl_425_bss_18 = .bss:0x00000018; // type:object size:0x40 data:4byte
|
||||
|
||||
@@ -8,13 +8,13 @@ __dt__27sFState_c<14dAcOimpaDoor_c>Fv = .text:0x000001B0; // type:function size:
|
||||
__dt__30sFStateFct_c<14dAcOimpaDoor_c>Fv = .text:0x00000210; // type:function size:0x6C
|
||||
__dt__83sStateMgr_c<14dAcOimpaDoor_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000280; // type:function size:0xA0
|
||||
__dt__53sFStateMgr_c<14dAcOimpaDoor_c,20sStateMethodUsr_FI_c>Fv = .text:0x00000320; // type:function size:0xA4
|
||||
fn_421_3D0 = .text:0x000003D0; // type:function size:0x88
|
||||
fn_421_460 = .text:0x00000460; // type:function size:0xE8
|
||||
createHeap__14dAcOimpaDoor_cFv = .text:0x000003D0; // type:function size:0x88
|
||||
create__14dAcOimpaDoor_cFv = .text:0x00000460; // type:function size:0xE8
|
||||
changeState__83sStateMgr_c<14dAcOimpaDoor_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00000550; // type:function size:0x10
|
||||
fn_421_560 = .text:0x00000560; // type:function size:0x8
|
||||
fn_421_570 = .text:0x00000570; // type:function size:0x30
|
||||
doDelete__14dAcOimpaDoor_cFv = .text:0x00000560; // type:function size:0x8
|
||||
actorExecute__14dAcOimpaDoor_cFv = .text:0x00000570; // type:function size:0x30
|
||||
executeState__83sStateMgr_c<14dAcOimpaDoor_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x000005A0; // type:function size:0x10
|
||||
fn_421_5B0 = .text:0x000005B0; // type:function size:0x28
|
||||
draw__14dAcOimpaDoor_cFv = .text:0x000005B0; // type:function size:0x28
|
||||
initializeState_Wait__14dAcOimpaDoor_cFv = .text:0x000005E0; // type:function size:0x4
|
||||
executeState_Wait__14dAcOimpaDoor_cFv = .text:0x000005F0; // type:function size:0x4
|
||||
finalizeState_Wait__14dAcOimpaDoor_cFv = .text:0x00000600; // type:function size:0x4
|
||||
@@ -40,17 +40,17 @@ isSameName__29sFStateID_c<14dAcOimpaDoor_c>CFPCc = .text:0x00000A20; // type:fun
|
||||
_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_421_rodata_0 = .rodata:0x00000000; // type:object size:0x18 data:float
|
||||
lbl_421_rodata_0 = .rodata:0x00000000; // type:object size:0x18 scope:local data:float
|
||||
g_profile_OBJ_IMPA_DOOR = .data:0x00000000; // type:object size:0x10 data:4byte
|
||||
lbl_421_data_10 = .data:0x00000010; // type:object size:0x8
|
||||
lbl_421_data_18 = .data:0x00000018; // type:object size:0x10 data:string
|
||||
lbl_421_data_28 = .data:0x00000028; // type:object size:0x20
|
||||
lbl_421_data_48 = .data:0x00000048; // type:object size:0x80
|
||||
lbl_421_data_C8 = .data:0x000000C8; // type:object size:0x30
|
||||
lbl_421_data_F8 = .data:0x000000F8; // type:object size:0x30
|
||||
lbl_421_data_128 = .data:0x00000128; // type:object size:0x18
|
||||
lbl_421_data_140 = .data:0x00000140; // type:object size:0x5C
|
||||
lbl_421_data_19C = .data:0x0000019C; // type:object size:0x34
|
||||
lbl_421_data_10 = .data:0x00000010; // type:object size:0x8 scope:local
|
||||
lbl_421_data_18 = .data:0x00000018; // type:object size:0x10 scope:local data:string
|
||||
lbl_421_data_28 = .data:0x00000028; // type:object size:0x20 scope:local
|
||||
__vt__14dAcOimpaDoor_c = .data:0x00000048; // type:object size:0x80
|
||||
__vt__53sFStateMgr_c<14dAcOimpaDoor_c,20sStateMethodUsr_FI_c> = .data:0x000000C8; // type:object size:0x30
|
||||
__vt__83sStateMgr_c<14dAcOimpaDoor_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x000000F8; // type:object size:0x30
|
||||
__vt__30sFStateFct_c<14dAcOimpaDoor_c> = .data:0x00000128; // type:object size:0x18
|
||||
__vt__27sFState_c<14dAcOimpaDoor_c> = .data:0x00000140; // type:object size:0x5C
|
||||
__vt__29sFStateID_c<14dAcOimpaDoor_c> = .data:0x0000019C; // type:object size:0x34
|
||||
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
|
||||
lbl_421_bss_8 = .bss:0x00000008; // type:object size:0x10
|
||||
lbl_421_bss_18 = .bss:0x00000018; // type:object size:0x30 data:4byte
|
||||
lbl_421_bss_8 = .bss:0x00000008; // type:object size:0x10 scope:local
|
||||
lbl_421_bss_18 = .bss:0x00000018; // type:object size:0x30 scope:local data:4byte
|
||||
|
||||
@@ -2,22 +2,22 @@ _prolog = .text:0x00000000; // type:function size:0x2C scope:global
|
||||
_epilog = .text:0x00000030; // type:function size:0x2C scope:global
|
||||
_unresolved = .text:0x00000060; // type:function size:0x4 scope:global
|
||||
dAcOislandLOD_c_classInit__Fv = .text:0x00000070; // type:function size:0x5C
|
||||
fn_426_D0 = .text:0x000000D0; // type:function size:0xAC
|
||||
fn_426_180 = .text:0x00000180; // type:function size:0xB0
|
||||
fn_426_230 = .text:0x00000230; // type:function size:0x8
|
||||
fn_426_240 = .text:0x00000240; // type:function size:0x8
|
||||
fn_426_250 = .text:0x00000250; // type:function size:0x78
|
||||
createHeap__15dAcOislandLOD_cFv = .text:0x000000D0; // type:function size:0xAC
|
||||
create__15dAcOislandLOD_cFv = .text:0x00000180; // type:function size:0xB0
|
||||
doDelete__15dAcOislandLOD_cFv = .text:0x00000230; // type:function size:0x8
|
||||
actorExecute__15dAcOislandLOD_cFv = .text:0x00000240; // type:function size:0x8
|
||||
draw__15dAcOislandLOD_cFv = .text:0x00000250; // type:function size:0x78
|
||||
__dt__15dAcOislandLOD_cFv = .text:0x000002D0; // type:function size:0x68
|
||||
_ctors = .ctors:0x00000000; // type:label scope:global
|
||||
_dtors = .dtors:0x00000000; // type:label scope:global
|
||||
dAcOislandLOD__resFilenames = .rodata:0x00000000; // type:object size:0x14
|
||||
dAcOislandLOD__resMdlNames = .rodata:0x00000014; // type:object size:0x14
|
||||
dAcOislandLOD__cullingDist = .rodata:0x00000028; // type:object size:0x4 align:4 data:float
|
||||
lbl_426_data_0 = .data:0x00000000; // type:object size:0x8 data:string
|
||||
lbl_426_data_8 = .data:0x00000008; // type:object size:0x8 data:string
|
||||
lbl_426_data_10 = .data:0x00000010; // type:object size:0x8 data:string
|
||||
lbl_426_data_18 = .data:0x00000018; // type:object size:0x8 data:string
|
||||
lbl_426_data_20 = .data:0x00000020; // type:object size:0x8 data:string
|
||||
resFilenames__15dAcOislandLOD_c = .rodata:0x00000000; // type:object size:0x14
|
||||
resMdlNames__15dAcOislandLOD_c = .rodata:0x00000014; // type:object size:0x14
|
||||
dAcOislandLOD__cullingDist = .rodata:0x00000028; // type:object size:0x4 scope:local align:4 data:float
|
||||
lbl_426_data_0 = .data:0x00000000; // type:object size:0x8 scope:local data:string
|
||||
lbl_426_data_8 = .data:0x00000008; // type:object size:0x8 scope:local data:string
|
||||
lbl_426_data_10 = .data:0x00000010; // type:object size:0x8 scope:local data:string
|
||||
lbl_426_data_18 = .data:0x00000018; // type:object size:0x8 scope:local data:string
|
||||
lbl_426_data_20 = .data:0x00000020; // type:object size:0x8 scope:local data:string
|
||||
g_profile_OBJ_ISLAND_LOD = .data:0x00000028; // type:object size:0x10
|
||||
lbl_426_data_38 = .data:0x00000038; // type:object size:0x20
|
||||
lbl_426_data_58 = .data:0x00000058; // type:object size:0x80
|
||||
lbl_426_data_38 = .data:0x00000038; // type:object size:0x20 scope:local
|
||||
__vt__15dAcOislandLOD_c = .data:0x00000058; // type:object size:0x80
|
||||
|
||||
@@ -2,9 +2,9 @@ _prolog = .text:0x00000000; // type:function size:0x2C scope:global
|
||||
_epilog = .text:0x00000030; // type:function size:0x2C scope:global
|
||||
_unresolved = .text:0x00000060; // type:function size:0x4 scope:global
|
||||
dAcOMapparts_c_classInit__Fv = .text:0x00000070; // type:function size:0x4C
|
||||
AcOMapparts__init = .text:0x000000C0; // type:function size:0x8
|
||||
create__14dAcOMapparts_cFv = .text:0x000000C0; // type:function size:0x8
|
||||
__dt__14dAcOMapparts_cFv = .text:0x000000D0; // type:function size:0x58
|
||||
_ctors = .ctors:0x00000000; // type:label scope:global
|
||||
_dtors = .dtors:0x00000000; // type:label scope:global
|
||||
g_profile_OBJ_MAPPARTS = .data:0x00000000; // type:object size:0x10
|
||||
lbl_633_section4_10 = .data:0x00000010; // type:object size:0x80
|
||||
__vt__14dAcOMapparts_c = .data:0x00000010; // type:object size:0x80
|
||||
|
||||
@@ -2,15 +2,15 @@ _prolog = .text:0x00000000; // type:function size:0x2C scope:global
|
||||
_epilog = .text:0x00000030; // type:function size:0x2C scope:global
|
||||
_unresolved = .text:0x00000060; // type:function size:0x4 scope:global
|
||||
dAcOmoleCover_c_classInit__Fv = .text:0x00000070; // type:function size:0x64
|
||||
AcOmoleCover__initModels = .text:0x000000E0; // type:function size:0x110
|
||||
AcOmoleCover__init = .text:0x000001F0; // type:function size:0xD0
|
||||
fn_424_2C0 = .text:0x000002C0; // type:function size:0x8
|
||||
fn_424_2D0 = .text:0x000002D0; // type:function size:0x8
|
||||
AcOmoleCover__draw = .text:0x000002E0; // type:function size:0x28
|
||||
createHeap__15dAcOmoleCover_cFv = .text:0x000000E0; // type:function size:0x110
|
||||
create__15dAcOmoleCover_cFv = .text:0x000001F0; // type:function size:0xD0
|
||||
doDelete__15dAcOmoleCover_cFv = .text:0x000002C0; // type:function size:0x8
|
||||
actorExecute__15dAcOmoleCover_cFv = .text:0x000002D0; // type:function size:0x8
|
||||
draw__15dAcOmoleCover_cFv = .text:0x000002E0; // type:function size:0x28
|
||||
__dt__15dAcOmoleCover_cFv = .text:0x00000310; // type:function size:0x74
|
||||
_ctors = .ctors:0x00000000; // type:label scope:global
|
||||
_dtors = .dtors:0x00000000; // type:label scope:global
|
||||
lbl_424_rodata_0 = .rodata:0x00000000; // type:object size:0x1C data:float
|
||||
lbl_424_rodata_0 = .rodata:0x00000000; // type:object size:0x1C scope:local data:float
|
||||
g_profile_OBJ_MOLE_COVER = .data:0x00000000; // type:object size:0x6C
|
||||
lbl_424_data_6C = .data:0x0000006C; // type:object size:0x24
|
||||
AcOmoleCover__vtable = .data:0x00000090; // type:object size:0x80
|
||||
lbl_424_data_6C = .data:0x0000006C; // type:object size:0x24 scope:local
|
||||
__vt__15dAcOmoleCover_c = .data:0x00000090; // type:object size:0x80
|
||||
|
||||
@@ -2,16 +2,16 @@ _prolog = .text:0x00000000; // type:function size:0x2C scope:global
|
||||
_epilog = .text:0x00000030; // type:function size:0x2C scope:global
|
||||
_unresolved = .text:0x00000060; // type:function size:0x4 scope:global
|
||||
dAcOpuzzleIsland_c_classInit__Fv = .text:0x00000070; // type:function size:0x64
|
||||
AcOpuzzleIsland__bgInteractFunc = .text:0x000000E0; // type:function size:0x7C
|
||||
AcOpuzzleIsland__initModels = .text:0x00000160; // type:function size:0x10C
|
||||
AcOpuzzleIsland__init = .text:0x00000270; // type:function size:0xD4
|
||||
fn_369_350 = .text:0x00000350; // type:function size:0x8
|
||||
AcOpuzzleIsland__update = .text:0x00000360; // type:function size:0x28
|
||||
fn_369_390 = .text:0x00000390; // type:function size:0x28
|
||||
rideCallback__18dAcOpuzzleIsland_cFP4dBgWP12dAcObjBase_cP12dAcObjBase_c = .text:0x000000E0; // type:function size:0x7C
|
||||
createHeap__18dAcOpuzzleIsland_cFv = .text:0x00000160; // type:function size:0x10C
|
||||
create__18dAcOpuzzleIsland_cFv = .text:0x00000270; // type:function size:0xD4
|
||||
doDelete__18dAcOpuzzleIsland_cFv = .text:0x00000350; // type:function size:0x8
|
||||
actorExecute__18dAcOpuzzleIsland_cFv = .text:0x00000360; // type:function size:0x28
|
||||
draw__18dAcOpuzzleIsland_cFv = .text:0x00000390; // type:function size:0x28
|
||||
__dt__18dAcOpuzzleIsland_cFv = .text:0x000003C0; // type:function size:0x74
|
||||
_ctors = .ctors:0x00000000; // type:label scope:global
|
||||
_dtors = .dtors:0x00000000; // type:label scope:global
|
||||
lbl_369_rodata_0 = .rodata:0x00000000; // type:object size:0x4 data:float
|
||||
lbl_369_rodata_0 = .rodata:0x00000000; // type:object size:0x4 scope:local data:float
|
||||
g_profile_OBJ_PUZZLE_ISLAND = .data:0x00000000; // type:object size:0x38
|
||||
lbl_369_data_38 = .data:0x00000038; // type:object size:0x20 data:string
|
||||
AcOpuzzleIsland__vtable = .data:0x00000058; // type:object size:0x80
|
||||
lbl_369_data_38 = .data:0x00000038; // type:object size:0x20 scope:local data:string
|
||||
__vt__18dAcOpuzzleIsland_c = .data:0x00000058; // type:object size:0x80
|
||||
|
||||
@@ -4,15 +4,15 @@ _unresolved = .text:0x00000060; // type:function size:0x4 scope:global
|
||||
dAcORailPost_classInit__Fv = .text:0x00000070; // type:function size:0x30
|
||||
__ct__12dAcORailPostFv = .text:0x000000A0; // type:function size:0x4C
|
||||
__dt__12dAcORailPostFv = .text:0x000000F0; // type:function size:0x74
|
||||
AcORailPost__initModels = .text:0x00000170; // type:function size:0x118
|
||||
AcORailPost__init = .text:0x00000290; // type:function size:0xA4
|
||||
AcORailPost__destroy = .text:0x00000340; // type:function size:0x38
|
||||
fn_524_380 = .text:0x00000380; // type:function size:0x8
|
||||
AcORailPost__draw = .text:0x00000390; // type:function size:0x34
|
||||
createHeap__12dAcORailPostFv = .text:0x00000170; // type:function size:0x118
|
||||
create__12dAcORailPostFv = .text:0x00000290; // type:function size:0xA4
|
||||
doDelete__12dAcORailPostFv = .text:0x00000340; // type:function size:0x38
|
||||
actorExecute__12dAcORailPostFv = .text:0x00000380; // type:function size:0x8
|
||||
draw__12dAcORailPostFv = .text:0x00000390; // type:function size:0x34
|
||||
_ctors = .ctors:0x00000000; // type:label scope:global
|
||||
_dtors = .dtors:0x00000000; // type:label scope:global
|
||||
lbl_524_rodata_0 = .rodata:0x00000000; // type:object size:0x4 data:float
|
||||
@15367 = .rodata:0x00000000; // type:object size:0x4 scope:local data:float
|
||||
g_profile_OBJ_RAIL_POST = .data:0x00000000; // type:object size:0x10
|
||||
lbl_524_data_10 = .data:0x00000010; // type:object size:0xC
|
||||
lbl_524_data_1C = .data:0x0000001C; // type:object size:0x1C
|
||||
AcORailPost__vtable = .data:0x00000038; // type:object size:0x80
|
||||
@15350 = .data:0x00000010; // type:object size:0xC scope:local
|
||||
@15366 = .data:0x0000001C; // type:object size:0x1C scope:local
|
||||
__vt__12dAcORailPost = .data:0x00000038; // type:object size:0x80
|
||||
|
||||
@@ -2,15 +2,15 @@ _prolog = .text:0x00000000; // type:function size:0x2C scope:global
|
||||
_epilog = .text:0x00000030; // type:function size:0x2C scope:global
|
||||
_unresolved = .text:0x00000060; // type:function size:0x4 scope:global
|
||||
dAcOropeBase_c_classInit__Fv = .text:0x00000070; // type:function size:0x5C
|
||||
fn_431_D0 = .text:0x000000D0; // type:function size:0xD0
|
||||
fn_431_1A0 = .text:0x000001A0; // type:function size:0xBC
|
||||
fn_431_260 = .text:0x00000260; // type:function size:0x8
|
||||
fn_431_270 = .text:0x00000270; // type:function size:0x28
|
||||
fn_431_2A0 = .text:0x000002A0; // type:function size:0x28
|
||||
createHeap__14dAcOropeBase_cFv = .text:0x000000D0; // type:function size:0xD0
|
||||
create__14dAcOropeBase_cFv = .text:0x000001A0; // type:function size:0xBC
|
||||
doDelete__14dAcOropeBase_cFv = .text:0x00000260; // type:function size:0x8
|
||||
actorExecute__14dAcOropeBase_cFv = .text:0x00000270; // type:function size:0x28
|
||||
draw__14dAcOropeBase_cFv = .text:0x000002A0; // type:function size:0x28
|
||||
__dt__14dAcOropeBase_cFv = .text:0x000002D0; // type:function size:0x68
|
||||
_ctors = .ctors:0x00000000; // type:label scope:global
|
||||
_dtors = .dtors:0x00000000; // type:label scope:global
|
||||
lbl_431_rodata_0 = .rodata:0x00000000; // type:object size:0x18 data:float
|
||||
lbl_431_rodata_0 = .rodata:0x00000000; // type:object size:0x18 scope:local data:float
|
||||
g_profile_OBJ_ROPE_BASE = .data:0x00000000; // type:object size:0x38
|
||||
lbl_431_data_38 = .data:0x00000038; // type:object size:0x20
|
||||
lbl_431_data_58 = .data:0x00000058; // type:object size:0x80
|
||||
lbl_431_data_38 = .data:0x00000038; // type:object size:0x20 scope:local
|
||||
__vt__14dAcOropeBase_c = .data:0x00000058; // type:object size:0x80
|
||||
|
||||
@@ -8,14 +8,14 @@ __dt__29sFState_c<16dAcOstreamLava_c>Fv = .text:0x00000230; // type:function siz
|
||||
__dt__32sFStateFct_c<16dAcOstreamLava_c>Fv = .text:0x00000290; // type:function size:0x6C
|
||||
__dt__85sStateMgr_c<16dAcOstreamLava_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000300; // type:function size:0xA0
|
||||
__dt__55sFStateMgr_c<16dAcOstreamLava_c,20sStateMethodUsr_FI_c>Fv = .text:0x000003A0; // type:function size:0xA4
|
||||
fn_405_450 = .text:0x00000450; // type:function size:0x40
|
||||
AcOstreamLava__initModels = .text:0x00000490; // type:function size:0x200
|
||||
AcOstreamLava__init = .text:0x00000690; // type:function size:0x1A4
|
||||
__dt__14dScnCallback_cFv = .text:0x00000450; // type:function size:0x40
|
||||
createHeap__16dAcOstreamLava_cFv = .text:0x00000490; // type:function size:0x200
|
||||
create__16dAcOstreamLava_cFv = .text:0x00000690; // type:function size:0x1A4
|
||||
changeState__85sStateMgr_c<16dAcOstreamLava_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00000840; // type:function size:0x10
|
||||
AcOstreamLava__destroy = .text:0x00000850; // type:function size:0x40
|
||||
AcOstreamLava__update = .text:0x00000890; // type:function size:0x94
|
||||
doDelete__16dAcOstreamLava_cFv = .text:0x00000850; // type:function size:0x40
|
||||
actorExecute__16dAcOstreamLava_cFv = .text:0x00000890; // type:function size:0x94
|
||||
executeState__85sStateMgr_c<16dAcOstreamLava_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000930; // type:function size:0x10
|
||||
AcOstreamLava__draw = .text:0x00000940; // type:function size:0x34
|
||||
draw__16dAcOstreamLava_cFv = .text:0x00000940; // type:function size:0x34
|
||||
initializeState_Wait__16dAcOstreamLava_cFv = .text:0x00000980; // type:function size:0x54
|
||||
executeState_Wait__16dAcOstreamLava_cFv = .text:0x000009E0; // type:function size:0x88
|
||||
finalizeState_Wait__16dAcOstreamLava_cFv = .text:0x00000A70; // type:function size:0x7C
|
||||
@@ -24,11 +24,11 @@ executeState_Stream__16dAcOstreamLava_cFv = .text:0x00000B50; // type:function s
|
||||
finalizeState_Stream__16dAcOstreamLava_cFv = .text:0x00000BE0; // type:function size:0x4
|
||||
__dt__16dAcOstreamLava_cFv = .text:0x00000BF0; // type:function size:0xFC
|
||||
getStateID__85sStateMgr_c<16dAcOstreamLava_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000CF0; // type:function size:0x10
|
||||
fn_405_D00 = .text:0x00000D00; // type:function size:0x4
|
||||
fn_405_D10 = .text:0x00000D10; // type:function size:0x4
|
||||
fn_405_D20 = .text:0x00000D20; // type:function size:0x4
|
||||
fn_405_D30 = .text:0x00000D30; // type:function size:0x4
|
||||
fn_405_D40 = .text:0x00000D40; // type:function size:0x4
|
||||
ExecCallback_DRAW_XLU__Q34nw4r3g3d15IScnObjCallbackFQ44nw4r3g3d6ScnObj6TimingPQ34nw4r3g3d6ScnObjUlPv = .text:0x00000D00; // type:function size:0x4
|
||||
ExecCallback_DRAW_OPA__Q34nw4r3g3d15IScnObjCallbackFQ44nw4r3g3d6ScnObj6TimingPQ34nw4r3g3d6ScnObjUlPv = .text:0x00000D10; // type:function size:0x4
|
||||
ExecCallback_CALC_MAT__Q34nw4r3g3d15IScnObjCallbackFQ44nw4r3g3d6ScnObj6TimingPQ34nw4r3g3d6ScnObjUlPv = .text:0x00000D20; // type:function size:0x4
|
||||
ExecCallback_CALC_WORLD__Q34nw4r3g3d15IScnObjCallbackFQ44nw4r3g3d6ScnObj6TimingPQ34nw4r3g3d6ScnObjUlPv = .text:0x00000D30; // type:function size:0x4
|
||||
ExecCallback_CALC_VIEW__Q34nw4r3g3d15IScnObjCallbackFQ44nw4r3g3d6ScnObj6TimingPQ34nw4r3g3d6ScnObjUlPv = .text:0x00000D40; // type:function size:0x4
|
||||
build__32sFStateFct_c<16dAcOstreamLava_c>FRC12sStateIDIf_c = .text:0x00000D50; // type:function size:0x60
|
||||
dispose__32sFStateFct_c<16dAcOstreamLava_c>FRP10sStateIf_c = .text:0x00000DB0; // type:function size:0xC
|
||||
initialize__29sFState_c<16dAcOstreamLava_c>Fv = .text:0x00000DC0; // type:function size:0x1C
|
||||
@@ -49,32 +49,37 @@ isSameName__31sFStateID_c<16dAcOstreamLava_c>CFPCc = .text:0x00001130; // type:f
|
||||
_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_405_rodata_0 = .rodata:0x00000000; // type:object size:0x68
|
||||
lbl_405_rodata_68 = .rodata:0x00000068; // type:object size:0x4 align:4 data:float
|
||||
lbl_405_data_0 = .data:0x00000000; // type:object size:0xC data:4byte
|
||||
lbl_405_data_C = .data:0x0000000C; // type:object size:0x10
|
||||
lbl_405_data_1C = .data:0x0000001C; // type:object size:0x10
|
||||
lbl_405_data_2C = .data:0x0000002C; // type:object size:0x14
|
||||
lbl_405_rodata_00 = .rodata:0x00000000; // type:object size:0x4 data:float
|
||||
lbl_405_rodata_04 = .rodata:0x00000004; // type:object size:0x14 scope:local
|
||||
lbl_405_rodata_18 = .rodata:0x00000018; // type:object size:0x14 scope:local
|
||||
lbl_405_rodata_2C = .rodata:0x0000002C; // type:object size:0x14 scope:local
|
||||
lbl_405_rodata_40 = .rodata:0x00000040; // type:object size:0x14 scope:local
|
||||
lbl_405_rodata_54 = .rodata:0x00000054; // type:object size:0x14 scope:local
|
||||
lbl_405_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local align:4 data:float
|
||||
lbl_405_data_00 = .data:0x00000000; // type:object size:0xC data:string
|
||||
lbl_405_data_0C = .data:0x0000000C; // type:object size:0x10 data:string
|
||||
lbl_405_data_1C = .data:0x0000001C; // type:object size:0x10 data:string
|
||||
lbl_405_data_2C = .data:0x0000002C; // type:object size:0x14 data:string
|
||||
lbl_405_data_40 = .data:0x00000040; // type:object size:0x10 data:string
|
||||
lbl_405_data_50 = .data:0x00000050; // type:object size:0x10 data:string
|
||||
lbl_405_data_60 = .data:0x00000060; // type:object size:0x10 data:string
|
||||
lbl_405_data_70 = .data:0x00000070; // type:object size:0x18
|
||||
lbl_405_data_88 = .data:0x00000088; // type:object size:0x18
|
||||
lbl_405_data_70 = .data:0x00000070; // type:object size:0x18 data:string
|
||||
lbl_405_data_88 = .data:0x00000088; // type:object size:0x18 data:string
|
||||
lbl_405_data_A0 = .data:0x000000A0; // type:object size:0x18 data:string
|
||||
lbl_405_data_B8 = .data:0x000000B8; // type:object size:0x18 data:string
|
||||
lbl_405_data_D0 = .data:0x000000D0; // type:object size:0x18 data:string
|
||||
lbl_405_data_E8 = .data:0x000000E8; // type:object size:0x18
|
||||
lbl_405_data_100 = .data:0x00000100; // type:object size:0x18
|
||||
lbl_405_data_E8 = .data:0x000000E8; // type:object size:0x18 data:string
|
||||
lbl_405_data_100 = .data:0x00000100; // type:object size:0x18 data:string
|
||||
lbl_405_data_118 = .data:0x00000118; // type:object size:0x18 data:string
|
||||
lbl_405_data_130 = .data:0x00000130; // type:object size:0x18 data:string
|
||||
lbl_405_data_148 = .data:0x00000148; // type:object size:0x18 data:string
|
||||
g_profile_OBJ_STREAM_LAVA = .data:0x00000160; // type:object size:0x10
|
||||
lbl_405_data_170 = .data:0x00000170; // type:object size:0x8
|
||||
lbl_405_data_178 = .data:0x00000178; // type:object size:0x20
|
||||
lbl_405_data_198 = .data:0x00000198; // type:object size:0x4 data:4byte
|
||||
lbl_405_data_19C = .data:0x0000019C; // type:object size:0x4 data:4byte
|
||||
lbl_405_data_1A0 = .data:0x000001A0; // type:object size:0x8
|
||||
AcOstreamLava__vtable = .data:0x000001A8; // type:object size:0x80
|
||||
lbl_405_data_170 = .data:0x00000170; // type:object size:0x8 data:string
|
||||
lbl_405_data_178 = .data:0x00000178; // type:object size:0x20 data:string
|
||||
lbl_405_data_198 = .data:0x00000198; // type:object size:0x4 data:int
|
||||
lbl_405_data_19C = .data:0x0000019C; // type:object size:0x4 data:int
|
||||
lbl_405_data_1A0 = .data:0x000001A0; // type:object size:0x8 data:string
|
||||
__vt__16dAcOstreamLava_c = .data:0x000001A8; // type:object size:0x80
|
||||
lbl_405_data_228 = .data:0x00000228; // type:object size:0x30
|
||||
lbl_405_data_258 = .data:0x00000258; // type:object size:0x30
|
||||
lbl_405_data_288 = .data:0x00000288; // type:object size:0x18
|
||||
@@ -82,5 +87,5 @@ lbl_405_data_2A0 = .data:0x000002A0; // type:object size:0xC4
|
||||
lbl_405_data_364 = .data:0x00000364; // type:object size:0x34
|
||||
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
|
||||
lbl_405_bss_8 = .bss:0x00000008; // type:object size:0x10 data:4byte
|
||||
AcOstreamLava__STATE_WAIT = .bss:0x00000018; // type:object size:0x40 data:4byte
|
||||
AcOstreamLava__STATE_STREAM = .bss:0x00000058; // type:object size:0x30 data:4byte
|
||||
StateID_Wait__16dAcOstreamLava_c = .bss:0x00000018; // type:object size:0x40 data:4byte
|
||||
StateID_Stream__16dAcOstreamLava_c = .bss:0x00000058; // type:object size:0x30 data:4byte
|
||||
|
||||
@@ -2,17 +2,17 @@ _prolog = .text:0x00000000; // type:function size:0x2C scope:global
|
||||
_epilog = .text:0x00000030; // type:function size:0x2C scope:global
|
||||
_unresolved = .text:0x00000060; // type:function size:0x4 scope:global
|
||||
dAcOTarzanPole_c_classInit__Fv = .text:0x00000070; // type:function size:0x6C
|
||||
AcOTarzanPole__initModels = .text:0x000000E0; // type:function size:0xCC
|
||||
AcOTarzanPole__init = .text:0x000001B0; // type:function size:0x16C
|
||||
fn_288_320 = .text:0x00000320; // type:function size:0x8
|
||||
AcOTarzanPole__update = .text:0x00000330; // type:function size:0x224
|
||||
AcOTarzanPole__draw = .text:0x00000560; // type:function size:0x28
|
||||
createHeap__16dAcOTarzanPole_cFv = .text:0x000000E0; // type:function size:0xCC
|
||||
create__16dAcOTarzanPole_cFv = .text:0x000001B0; // type:function size:0x16C
|
||||
doDelete__16dAcOTarzanPole_cFv = .text:0x00000320; // type:function size:0x8
|
||||
actorExecute__16dAcOTarzanPole_cFv = .text:0x00000330; // type:function size:0x224
|
||||
draw__16dAcOTarzanPole_cFv = .text:0x00000560; // type:function size:0x28
|
||||
__dt__16dAcOTarzanPole_cFv = .text:0x00000590; // type:function size:0x80
|
||||
_ctors = .ctors:0x00000000; // type:label scope:global
|
||||
_dtors = .dtors:0x00000000; // type:label scope:global
|
||||
lbl_288_rodata_0 = .rodata:0x00000000; // type:object size:0x4C data:float
|
||||
lbl_288_rodata_0 = .rodata:0x00000000; // type:object size:0x4C scope:local data:float
|
||||
g_profile_OBJ_TARZAN_POLE = .data:0x00000000; // type:object size:0x10
|
||||
lbl_288_data_10 = .data:0x00000010; // type:object size:0x30
|
||||
lbl_288_data_40 = .data:0x00000040; // type:object size:0x8 data:string
|
||||
lbl_288_data_48 = .data:0x00000048; // type:object size:0x20
|
||||
AcOTarzanPole__vtable = .data:0x00000068; // type:object size:0x80
|
||||
sCcSrc__16dAcOTarzanPole_c = .data:0x00000010; // type:object size:0x30
|
||||
@23333 = .data:0x00000040; // type:object size:0x8 scope:local data:string
|
||||
@23358 = .data:0x00000048; // type:object size:0x20 scope:local
|
||||
__vt__16dAcOTarzanPole_c = .data:0x00000068; // type:object size:0x80
|
||||
|
||||
@@ -4,10 +4,10 @@ _unresolved = .text:0x00000060; // type:function size:0x4 scope:global
|
||||
dTgShutterFenceForbiddance_c_classInit__Fv = .text:0x00000070; // type:function size:0x30
|
||||
__ct__28dTgShutterFenceForbiddance_cFv = .text:0x000000A0; // type:function size:0x50
|
||||
__dt__28dTgShutterFenceForbiddance_cFv = .text:0x000000F0; // type:function size:0x7C
|
||||
TgShutterFenceForbiddance__init = .text:0x00000170; // type:function size:0x20
|
||||
fn_631_190 = .text:0x00000190; // type:function size:0x60
|
||||
create__28dTgShutterFenceForbiddance_cFv = .text:0x00000170; // type:function size:0x20
|
||||
actorExecute__28dTgShutterFenceForbiddance_cFv = .text:0x00000190; // type:function size:0x60
|
||||
_ctors = .ctors:0x00000000; // type:label scope:global
|
||||
_dtors = .dtors:0x00000000; // type:label scope:global
|
||||
g_profile_TAG_SHUTTER_FENCE_FORBIDDANCE = .data:0x00000000; // type:object size:0x10
|
||||
lbl_631_section4_10 = .data:0x00000010; // type:object size:0x74
|
||||
__vt__28dTgShutterFenceForbiddance_c = .data:0x00000010; // type:object size:0x74
|
||||
TgShutterFenceForbiddance__FIRST_PTR = .bss:0x00000008; // type:object size:0x4 data:4byte
|
||||
|
||||
+222
-28
@@ -98,9 +98,10 @@ toBeSorted/d_unk_mdl_stuff_2.cpp:
|
||||
.ctors start:0x804DB658 end:0x804DB65C
|
||||
.sbss start:0x80575058 end:0x80575068
|
||||
|
||||
toBeSorted/blur_and_palette_manager.cpp:
|
||||
d/d_light_env.cpp:
|
||||
.text start:0x800221A0 end:0x800268AC align:16
|
||||
.ctors start:0x804DB65C end:0x804DB660
|
||||
.data start:0x80500E80 end:0x80500E98
|
||||
.sbss start:0x80575068 end:0x80575070
|
||||
.sdata2 start:0x80576BA0 end:0x80576C18
|
||||
.bss start:0x8058F210 end:0x80594FA0
|
||||
@@ -360,8 +361,10 @@ toBeSorted/arc_managers/layout_arc_manager.cpp:
|
||||
toBeSorted/arc_managers/layout_arc_control.cpp:
|
||||
.text start:0x8006A2E0 end:0x8006A544 align:16
|
||||
|
||||
toBeSorted/base_tables.cpp:
|
||||
toBeSorted/actor_info.cpp:
|
||||
.text start:0x8006A550 end:0x8006A8C8 align:16
|
||||
.rodata start:0x804E0FA8 end:0x804E3418
|
||||
.sdata2 start:0x805779F8 end:0x80579210
|
||||
|
||||
toBeSorted/unk_vec_math.cpp:
|
||||
.text start:0x8006A8D0 end:0x8006B3A4 align:16
|
||||
@@ -2346,67 +2349,152 @@ toBeSorted/col/cc/misc_unks.cpp:
|
||||
.text start:0x803598D0 end:0x80359D20 align:16
|
||||
.sbss start:0x80575D28 end:0x80575D30
|
||||
|
||||
d/snd/d_snd.cpp:
|
||||
d/snd/d_snd_mgr.cpp:
|
||||
.text start:0x80359D20 end:0x8035A558 align:16
|
||||
.data start:0x805485D0 end:0x80548678
|
||||
.sbss start:0x80575D30 end:0x80575D38
|
||||
|
||||
d/snd/d_snd_actor.cpp:
|
||||
.text start:0x8035A560 end:0x8035BB78 align:16
|
||||
.text start:0x8035A560 end:0x8035A898 align:16
|
||||
.data start:0x80548678 end:0x805486A0
|
||||
|
||||
d/snd/d_snd_engine.cpp:
|
||||
d/snd/d_snd_3d_actor.cpp:
|
||||
.text start:0x8035A8A0 end:0x8035BB78 align:16
|
||||
.data start:0x805486A0 end:0x80548710
|
||||
.sdata2 start:0x8057D2C0 end:0x8057D308
|
||||
|
||||
d/snd/d_snd_3d_engine.cpp:
|
||||
.text start:0x8035BB80 end:0x8035C3F0 align:16
|
||||
.data start:0x80548710 end:0x80548730
|
||||
.sdata2 start:0x8057D308 end:0x8057D368
|
||||
|
||||
d/snd/d_snd_unk_component_1.cpp:
|
||||
d/snd/d_snd_sound.cpp:
|
||||
.text start:0x8035C3F0 end:0x8035DA88 align:16
|
||||
.data start:0x80548730 end:0x80548758
|
||||
.sdata2 start:0x8057D368 end:0x8057D380
|
||||
|
||||
d/snd/mgr/d_snd_mgr_bgm.cpp:
|
||||
.text start:0x8035DA90 end:0x8035F010 align:16
|
||||
d/snd/d_snd_player_mgr.cpp:
|
||||
.text start:0x8035DA90 end:0x8035F04C align:16
|
||||
.data start:0x80548758 end:0x805487A0
|
||||
.sbss start:0x80575D38 end:0x80575D40
|
||||
.sdata2 start:0x8057D380 end:0x8057D390
|
||||
|
||||
d/snd/mgr/d_snd_mgr_unk1.cpp:
|
||||
.text start:0x8035F010 end:0x80360C28 align:16
|
||||
d/snd/d_snd_control_player_mgr.cpp:
|
||||
.text start:0x8035F050 end:0x80360C28 align:16
|
||||
.ctors start:0x804DB914 end:0x804DB918
|
||||
.data start:0x805487A0 end:0x805487D0
|
||||
.sbss start:0x80575D40 end:0x80575D58
|
||||
.sdata2 start:0x8057D390 end:0x8057D3B8
|
||||
|
||||
d/snd/mgr/d_snd_mgr_unk3.cpp:
|
||||
d/snd/d_snd_3d_manager.cpp:
|
||||
.text start:0x80360C30 end:0x8036145C align:16
|
||||
.data start:0x805487D0 end:0x805487E0
|
||||
.sbss start:0x80575D58 end:0x80575D60
|
||||
.sdata2 start:0x8057D3B8 end:0x8057D3F8
|
||||
|
||||
d/snd/mgr/d_snd_mgr_enemy.cpp:
|
||||
d/snd/d_snd_stage_mgr.cpp:
|
||||
.text start:0x80361460 end:0x8036642C align:16
|
||||
.ctors start:0x804DB918 end:0x804DB91C
|
||||
|
||||
d/snd/d_snd_unk_component_2.cpp:
|
||||
.text start:0x80366430 end:0x8037D800 align:16
|
||||
.text start:0x80366430 end:0x8036A3A4 align:16
|
||||
|
||||
d/snd/mgr/d_snd_mgr_effect.cpp:
|
||||
d/snd/d_snd_area_sound_effect_mgr.cpp:
|
||||
.text start:0x8036A3B0 end:0x8036B8D0 align:16
|
||||
.data start:0x80548B38 end:0x80548B48
|
||||
.sbss start:0x80575D78 end:0x80575D80
|
||||
.sdata2 start:0x8057D8B0 end:0x8057D8E8
|
||||
|
||||
d/snd/d_snd_area_sound.cpp:
|
||||
.text start:0x8036B8D0 end:0x8036C090 align:16
|
||||
.data start:0x80548B48 end:0x80548B78
|
||||
.sdata2 start:0x8057D8E8 end:0x8057D920
|
||||
|
||||
d/snd/d_snd_control_sound.cpp:
|
||||
.text start:0x8036C090 end:0x8036C444 align:16
|
||||
.data start:0x80548B78 end:0x80548C38
|
||||
.sdata2 start:0x8057D920 end:0x8057D938
|
||||
|
||||
d/snd/d_snd_control_player.cpp:
|
||||
.text start:0x8036C450 end:0x8036C6A8 align:16
|
||||
.data start:0x80548C38 end:0x80548CC8
|
||||
.sdata2 start:0x8057D938 end:0x8057D940
|
||||
|
||||
d/snd/d_snd_bgm_mgr.cpp:
|
||||
.text start:0x8036C6B0 end:0x803739CC align:16
|
||||
.sbss start:0x80575D80 end:0x80575D88
|
||||
.sdata2 start:0x8057D940 end:0x8057D970
|
||||
|
||||
d/snd/d_snd_bgm_sound_callbacks.cpp:
|
||||
.text start:0x803739D0 end:0x80378ECC align:16
|
||||
.sdata2 start:0x8057D970 end:0x8057DA50
|
||||
|
||||
d/snd/d_snd_bgm_sound_boss_callbacks.cpp:
|
||||
.text start:0x80378ED0 end:0x80379D20 align:16
|
||||
.sdata2 start:0x8057DA50 end:0x8057DA58
|
||||
|
||||
d/snd/d_snd_bgm_sound.cpp:
|
||||
.text start:0x80379D20 end:0x8037BA68 align:16
|
||||
.sbss start:0x80575D88 end:0x80575D90
|
||||
|
||||
d/snd/d_snd_unk_15.cpp:
|
||||
.text start:0x8037BA70 end:0x8037D800 align:16
|
||||
|
||||
d/snd/d_snd_small_effect_mgr.cpp:
|
||||
.text start:0x8037D800 end:0x8037F8B4 align:16
|
||||
.data start:0x805491B8 end:0x805491D0
|
||||
.sbss start:0x80575D98 end:0x80575DA0
|
||||
.sdata2 start:0x8057DA80 end:0x8057DAD0
|
||||
|
||||
d/snd/mgr/d_snd_mgr_unk_5.cpp:
|
||||
.text start:0x8037F8C0 end:0x803864C8 align:16
|
||||
d/snd/d_snd_harp_mgr.cpp:
|
||||
.text start:0x8037F8C0 end:0x80382150 align:16
|
||||
.data start:0x805491D0 end:0x805491E0
|
||||
.sbss start:0x80575DA0 end:0x80575DA8
|
||||
.sdata2 start:0x8057DAD0 end:0x8057DB48
|
||||
|
||||
d/snd/d_snd_anim_sound.cpp:
|
||||
.text start:0x80382150 end:0x8038240C align:16
|
||||
.sdata2 start:0x8057DB50 end:0x8057DB68
|
||||
|
||||
d/snd/d_snd_source_mgr.cpp:
|
||||
.text start:0x80382410 end:0x803864C8 align:16
|
||||
.ctors start:0x804DB91C end:0x804DB920
|
||||
.sdata start:0x80574310 end:0x805743D0
|
||||
.sbss start:0x80575DA8 end:0x80575DB0
|
||||
.sdata2 start:0x8057DB68 end:0x8057DBC0
|
||||
|
||||
d/snd/mgr/d_snd_mgr_unk_6.cpp:
|
||||
.text start:0x803864D0 end:0x8038C408 align:16
|
||||
d/snd/d_snd_source_group.cpp:
|
||||
.text start:0x803864D0 end:0x803889BC align:16
|
||||
.data start:0x8054A680 end:0x8054A7D0
|
||||
.sdata start:0x805743D0 end:0x80574708
|
||||
.sdata2 start:0x8057DBC0 end:0x8057DCB0
|
||||
|
||||
d/snd/d_snd_source.cpp:
|
||||
.text start:0x803889C0 end:0x8038C408 align:16
|
||||
.ctors start:0x804DB920 end:0x804DB924
|
||||
.data start:0x8054A7D0 end:0x8054AAE8
|
||||
|
||||
d/snd/mgr/d_snd_mgr_unk_7.cpp:
|
||||
d/snd/d_snd_mgr_unk_7.cpp:
|
||||
.text start:0x8038C410 end:0x8038EBF0 align:16
|
||||
.ctors start:0x804DB924 end:0x804DB928
|
||||
|
||||
d/snd/mgr/d_snd_mgr_unk_8.cpp:
|
||||
d/snd/d_snd_mgr_unk_8.cpp:
|
||||
.text start:0x8038EBF0 end:0x8038FF18 align:16
|
||||
.ctors start:0x804DB928 end:0x804DB92C
|
||||
|
||||
d/snd/mgr/d_snd_mgr_unk_9.cpp:
|
||||
d/snd/d_snd_mgr_unk_9.cpp:
|
||||
.text start:0x8038FF20 end:0x80390A18 align:16
|
||||
.ctors start:0x804DB92C end:0x804DB930
|
||||
|
||||
d/snd/mgr/d_snd_mgr_unk_10.cpp:
|
||||
d/snd/d_snd_mgr_unk_10.cpp:
|
||||
.text start:0x80390A20 end:0x80393DF4 align:16
|
||||
.ctors start:0x804DB930 end:0x804DB934
|
||||
|
||||
d/snd/mgr/d_snd_mgr_unk_11.cpp:
|
||||
d/snd/d_snd_mgr_unk_11.cpp:
|
||||
.text start:0x80393E00 end:0x8039A848 align:16
|
||||
.ctors start:0x804DB934 end:0x804DB938
|
||||
|
||||
d/snd/mgr/d_snd_mgr_unk_12.cpp:
|
||||
d/snd/d_snd_calc_pitch.cpp:
|
||||
.text start:0x8039A850 end:0x8039A960 align:16
|
||||
|
||||
RVL_SDK/kpr/KPR.c:
|
||||
@@ -2866,6 +2954,9 @@ nw4r/g3d/g3d_scnmdl.cpp:
|
||||
.rodata start:0x804F7B48 end:0x804F7B58
|
||||
.data start:0x8056DA70 end:0x8056DAB8
|
||||
|
||||
nw4r/g3d/g3d_scnmdl1mat1shp.cpp:
|
||||
.rodata start:0x804F7B58 end:0x804F7B70
|
||||
|
||||
nw4r/g3d/g3d_calcmaterial.cpp:
|
||||
.text start:0x8045FDB0 end:0x8045FFE4 align:16
|
||||
|
||||
@@ -2893,48 +2984,77 @@ nw4r/g3d/g3d_calcvtx.cpp:
|
||||
.sdata2 start:0x8057EEF0 end:0x8057EEF8
|
||||
|
||||
nw4r/snd/snd_AnimSound.cpp:
|
||||
.text start:0x80461700 end:0x804630D4 align:16
|
||||
.text start:0x80461700 end:0x80462F18 align:16
|
||||
.sdata2 start:0x8057EEF8 end:0x8057EF18
|
||||
|
||||
nw4r/snd/snd_AnimSoundReader.cpp:
|
||||
.text start:0x80462F20 end:0x804630D4 align:16
|
||||
|
||||
nw4r/snd/snd_AxManager.cpp:
|
||||
.text start:0x804630E0 end:0x80464880 align:16
|
||||
.ctors start:0x804DB958 end:0x804DB95C
|
||||
.sbss start:0x80576650 end:0x80576668
|
||||
.sdata2 start:0x8057EF18 end:0x8057EF30
|
||||
.bss start:0x80658F80 end:0x80659390
|
||||
|
||||
nw4r/snd/snd_AxVoice.cpp:
|
||||
.text start:0x80464880 end:0x80467634 align:16
|
||||
.sdata2 start:0x8057EF30 end:0x8057EF58
|
||||
|
||||
nw4r/snd/snd_AxVoiceManager.cpp:
|
||||
.text start:0x80467640 end:0x80467DC8 align:16
|
||||
.sbss start:0x80576668 end:0x80576670
|
||||
.bss start:0x80659390 end:0x806593C8
|
||||
|
||||
nw4r/snd/snd_AxfxImpl.cpp:
|
||||
.text start:0x80467DD0 end:0x80467FC8 align:16
|
||||
.sbss start:0x80576670 end:0x80576678
|
||||
|
||||
nw4r/snd/snd_Bank.cpp:
|
||||
.text start:0x80467FD0 end:0x80468248 align:16
|
||||
.sdata2 start:0x8057EF58 end:0x8057EF78
|
||||
|
||||
nw4r/snd/snd_BankFile.cpp:
|
||||
.text start:0x80468250 end:0x8046890C align:16
|
||||
.sdata2 start:0x8057EF78 end:0x8057EF80
|
||||
|
||||
nw4r/snd/snd_BasicPlayer.cpp:
|
||||
.text start:0x80468910 end:0x80468B50 align:16
|
||||
.data start:0x8056DB38 end:0x8056DB60
|
||||
.sdata2 start:0x8057EF80 end:0x8057EF88
|
||||
|
||||
nw4r/snd/snd_BasicSound.cpp:
|
||||
.text start:0x80468B50 end:0x8046A36C align:16
|
||||
.ctors start:0x804DB95C end:0x804DB960
|
||||
.data start:0x8056DB60 end:0x8056DB98
|
||||
.sbss start:0x80576678 end:0x80576680
|
||||
.sdata2 start:0x8057EF88 end:0x8057EF98
|
||||
|
||||
nw4r/snd/snd_BiquadFilterPreset.cpp:
|
||||
.text start:0x8046A370 end:0x8046A7B0 align:16
|
||||
.rodata start:0x804F7B80 end:0x804F8FB8
|
||||
.data start:0x8056DB98 end:0x8056DBE8
|
||||
.sdata2 start:0x8057EF98 end:0x8057EFA8
|
||||
|
||||
nw4r/snd/snd_Channel.cpp:
|
||||
.text start:0x8046A7B0 end:0x8046B7C8 align:16
|
||||
.sbss start:0x80576680 end:0x80576688
|
||||
.sdata2 start:0x8057EFA8 end:0x8057EFD0
|
||||
.bss start:0x806593C8 end:0x806593F8
|
||||
|
||||
nw4r/snd/snd_DisposeCallbackManager.cpp:
|
||||
.text start:0x8046B7D0 end:0x8046BB5C align:16
|
||||
.sbss start:0x80576688 end:0x80576690
|
||||
.bss start:0x806593F8 end:0x80659410
|
||||
|
||||
nw4r/snd/snd_DvdSoundArchive.cpp:
|
||||
.text start:0x8046BB60 end:0x8046C1C8 align:16
|
||||
.data start:0x8056DBE8 end:0x8056DC70
|
||||
|
||||
nw4r/snd/snd_EnvGenerator.cpp:
|
||||
.text start:0x8046C1D0 end:0x8046C5A0 align:16
|
||||
.rodata start:0x804F8FB8 end:0x804F92B8
|
||||
.sdata2 start:0x8057EFD0 end:0x8057F000
|
||||
|
||||
nw4r/snd/snd_ExternalSoundPlayer.cpp:
|
||||
.text start:0x8046C5A0 end:0x8046CB18 align:16
|
||||
@@ -2944,77 +3064,114 @@ nw4r/snd/snd_FrameHeap.cpp:
|
||||
|
||||
nw4r/snd/snd_FxReverbStdDpl2.cpp:
|
||||
.text start:0x8046D2E0 end:0x8046DA10 align:16
|
||||
.data start:0x8056DC70 end:0x8056DC98
|
||||
.sdata2 start:0x8057F000 end:0x8057F018
|
||||
|
||||
nw4r/snd/snd_InstancePool.cpp:
|
||||
.text start:0x8046DA10 end:0x8046DCF8 align:16
|
||||
|
||||
nw4r/snd/snd_Lfo.cpp:
|
||||
.text start:0x8046DD00 end:0x8046DF08 align:16
|
||||
.rodata start:0x804F92B8 end:0x804F92E0
|
||||
.sdata2 start:0x8057F018 end:0x8057F048
|
||||
|
||||
nw4r/snd/snd_MemorySoundArchive.cpp:
|
||||
.text start:0x8046DF10 end:0x8046E3B0 align:16
|
||||
.data start:0x8056DC98 end:0x8056DD18
|
||||
|
||||
nw4r/snd/snd_MidiSeqPlayer.cpp:
|
||||
.text start:0x8046E3B0 end:0x8046E458 align:16
|
||||
|
||||
nw4r/snd/snd_MmlParser.cpp:
|
||||
.text start:0x8046E460 end:0x8046F63C align:16
|
||||
.data start:0x8056DD18 end:0x8056DF48
|
||||
.sdata start:0x80574E90 end:0x80574EA0
|
||||
.sbss start:0x80576690 end:0x80576698
|
||||
.sdata2 start:0x8057F048 end:0x8057F068
|
||||
|
||||
nw4r/snd/snd_MmlSeqTrack.cpp:
|
||||
.text start:0x8046F640 end:0x8046F6F8 align:16
|
||||
.data start:0x8056DF48 end:0x8056DF58
|
||||
|
||||
nw4r/snd/snd_MmlSeqTrackAllocator.cpp:
|
||||
.text start:0x8046F700 end:0x8046F850 align:16
|
||||
.data start:0x8056DF58 end:0x8056DF70
|
||||
|
||||
nw4r/snd/snd_NandSoundArchive.cpp:
|
||||
.text start:0x8046F850 end:0x804700B8 align:16
|
||||
.data start:0x8056DF70 end:0x8056DFF0
|
||||
.sbss start:0x80576698 end:0x805766A0
|
||||
|
||||
nw4r/snd/snd_PlayerHeap.cpp:
|
||||
.text start:0x804700C0 end:0x804702DC align:16
|
||||
.data start:0x8056DFF0 end:0x8056E000
|
||||
|
||||
nw4r/snd/snd_RemoteSpeaker.cpp:
|
||||
.text start:0x804702E0 end:0x80470C90 align:16
|
||||
|
||||
nw4r/snd/snd_RemoteSpeakerManager.cpp:
|
||||
.text start:0x80470C90 end:0x80470ED8 align:16
|
||||
.sbss start:0x805766A0 end:0x805766A8
|
||||
.bss start:0x80659410 end:0x806596E8
|
||||
|
||||
nw4r/snd/snd_SeqFile.cpp:
|
||||
.text start:0x80470EE0 end:0x80471018 align:16
|
||||
|
||||
nw4r/snd/snd_SeqPlayer.cpp:
|
||||
.text start:0x80471020 end:0x804727F8 align:16
|
||||
.data start:0x8056E000 end:0x8056E088
|
||||
.sdata2 start:0x8057F068 end:0x8057F080
|
||||
.bss start:0x806596E8 end:0x80659708
|
||||
|
||||
nw4r/snd/snd_SeqSound.cpp:
|
||||
.text start:0x80472800 end:0x8047316C align:16
|
||||
.ctors start:0x804DB960 end:0x804DB964
|
||||
.data start:0x8056E088 end:0x8056E0D8
|
||||
.sbss start:0x805766A8 end:0x805766B0
|
||||
|
||||
nw4r/snd/snd_SeqSoundHandle.cpp:
|
||||
.text start:0x80473170 end:0x804732A8 align:16
|
||||
|
||||
nw4r/snd/snd_SeqTrack.cpp:
|
||||
.text start:0x804732B0 end:0x80474818 align:16
|
||||
.rodata start:0x804F92E0 end:0x804F9308
|
||||
.data start:0x8056E0D8 end:0x8056E0E8
|
||||
.sdata2 start:0x8057F080 end:0x8057F0B0
|
||||
|
||||
nw4r/snd/snd_Sound3DActor.cpp:
|
||||
.text start:0x80474820 end:0x80474BD8 align:16
|
||||
.rodata start:0x804F9308 end:0x804F9320
|
||||
.data start:0x8056E0E8 end:0x8056E118
|
||||
.sdata2 start:0x8057F0B0 end:0x8057F0B8
|
||||
|
||||
nw4r/snd/snd_Sound3DCalculator.cpp:
|
||||
.text start:0x80474BE0 end:0x804756B0 align:16
|
||||
.sdata2 start:0x8057F0B8 end:0x8057F100
|
||||
|
||||
nw4r/snd/snd_Sound3DEngine.cpp:
|
||||
.text start:0x804756B0 end:0x804759F8 align:16
|
||||
.data start:0x8056E118 end:0x8056E138
|
||||
.sdata2 start:0x8057F100 end:0x8057F118
|
||||
|
||||
nw4r/snd/snd_Sound3DListener.cpp:
|
||||
.text start:0x80475A00 end:0x80475C88 align:16
|
||||
.sdata2 start:0x8057F118 end:0x8057F128
|
||||
|
||||
nw4r/snd/snd_Sound3DManager.cpp:
|
||||
.text start:0x80475C90 end:0x80475F78 align:16
|
||||
.ctors start:0x804DB964 end:0x804DB968
|
||||
.data start:0x8056E138 end:0x8056E170
|
||||
.sdata2 start:0x8057F128 end:0x8057F130
|
||||
.bss start:0x80659708 end:0x80659720
|
||||
|
||||
nw4r/snd/snd_SoundActor.cpp:
|
||||
.text start:0x80475F80 end:0x80476264 align:16
|
||||
.text start:0x80475F80 end:0x80476278 align:16
|
||||
.data start:0x8056E170 end:0x8056E190
|
||||
.sdata2 start:0x8057F130 end:0x8057F138
|
||||
|
||||
nw4r/snd/snd_SoundArchive.cpp:
|
||||
.text start:0x80476270 end:0x8047697C align:16
|
||||
.text start:0x80476280 end:0x8047697C align:16
|
||||
.data start:0x8056E190 end:0x8056E1B0
|
||||
|
||||
nw4r/snd/snd_SoundArchiveFile.cpp:
|
||||
.text start:0x80476980 end:0x80477C90 align:16
|
||||
@@ -3024,15 +3181,21 @@ nw4r/snd/snd_SoundArchiveLoader.cpp:
|
||||
|
||||
nw4r/snd/snd_SoundArchivePlayer.cpp:
|
||||
.text start:0x80478560 end:0x8047B018 align:16
|
||||
.data start:0x8056E1B0 end:0x8056E200
|
||||
.sdata2 start:0x8057F138 end:0x8057F148
|
||||
|
||||
nw4r/snd/snd_SoundHandle.cpp:
|
||||
.text start:0x8047B020 end:0x8047B110 align:16
|
||||
|
||||
nw4r/snd/snd_SoundHeap.cpp:
|
||||
.text start:0x8047B110 end:0x8047B418 align:16
|
||||
.data start:0x8056E200 end:0x8056E210
|
||||
|
||||
nw4r/snd/snd_SoundPlayer.cpp:
|
||||
.text start:0x8047B420 end:0x8047C050 align:16
|
||||
.sbss start:0x805766B0 end:0x805766B8
|
||||
.sdata2 start:0x8057F148 end:0x8057F150
|
||||
.bss start:0x80659720 end:0x80659D40
|
||||
|
||||
nw4r/snd/snd_SoundStartable.cpp:
|
||||
.text start:0x8047C050 end:0x8047C3AC align:16
|
||||
@@ -3040,9 +3203,15 @@ nw4r/snd/snd_SoundStartable.cpp:
|
||||
nw4r/snd/snd_SoundSystem.cpp:
|
||||
.text start:0x8047C3B0 end:0x8047C708 align:16
|
||||
.ctors start:0x804DB968 end:0x804DB96C
|
||||
.data start:0x8056E210 end:0x8056E258
|
||||
.sdata start:0x80574EA0 end:0x80574EA8
|
||||
.sbss start:0x805766B8 end:0x805766C0
|
||||
.bss start:0x80659D40 end:0x8066F660
|
||||
|
||||
nw4r/snd/snd_SoundThread.cpp:
|
||||
.text start:0x8047C710 end:0x8047CD10 align:16
|
||||
.sbss start:0x805766C0 end:0x805766C8
|
||||
.bss start:0x8066F660 end:0x8066FA20
|
||||
|
||||
nw4r/snd/snd_StrmChannel.cpp:
|
||||
.text start:0x8047CD10 end:0x8047CF50 align:16
|
||||
@@ -3052,10 +3221,17 @@ nw4r/snd/snd_StrmFile.cpp:
|
||||
|
||||
nw4r/snd/snd_StrmPlayer.cpp:
|
||||
.text start:0x8047D8E0 end:0x80480588 align:16
|
||||
.data start:0x8056E258 end:0x8056E2D0
|
||||
.sbss start:0x805766C8 end:0x805766D0
|
||||
.sdata2 start:0x8057F150 end:0x8057F178
|
||||
.bss start:0x8066FA20 end:0x80673A38
|
||||
|
||||
nw4r/snd/snd_StrmSound.cpp:
|
||||
.text start:0x80480590 end:0x80480D8C align:16
|
||||
.ctors start:0x804DB96C end:0x804DB970
|
||||
.data start:0x8056E2D0 end:0x8056E308
|
||||
.sbss start:0x805766D0 end:0x805766D8
|
||||
.sdata2 start:0x8057F178 end:0x8057F188
|
||||
|
||||
nw4r/snd/snd_StrmSoundHandle.cpp:
|
||||
.text start:0x80480D90 end:0x80480EC8 align:16
|
||||
@@ -3065,34 +3241,52 @@ nw4r/snd/snd_Task.cpp:
|
||||
|
||||
nw4r/snd/snd_TaskManager.cpp:
|
||||
.text start:0x80480F10 end:0x804815D0 align:16
|
||||
.sbss start:0x805766D8 end:0x805766E0
|
||||
.bss start:0x80673A38 end:0x80673A80
|
||||
|
||||
nw4r/snd/snd_TaskThread.cpp:
|
||||
.text start:0x804815D0 end:0x80481798 align:16
|
||||
|
||||
nw4r/snd/snd_Voice.cpp:
|
||||
.text start:0x804817A0 end:0x80484034 align:16
|
||||
.data start:0x8056E308 end:0x8056E340
|
||||
.sdata2 start:0x8057F188 end:0x8057F1C0
|
||||
|
||||
nw4r/snd/snd_VoiceManager.cpp:
|
||||
.text start:0x80484040 end:0x804846F4 align:16
|
||||
.sbss start:0x805766E0 end:0x805766E8
|
||||
.bss start:0x80673A80 end:0x80673AA8
|
||||
|
||||
nw4r/snd/snd_Util.cpp:
|
||||
.text start:0x80484700 end:0x80484BD4 align:16
|
||||
.rodata start:0x804F9320 end:0x804FB7A0
|
||||
.data start:0x8056E340 end:0x8056E350
|
||||
.sdata start:0x80574EA8 end:0x80574EB0
|
||||
.sdata2 start:0x8057F1C0 end:0x8057F1F0
|
||||
|
||||
nw4r/snd/snd_WaveArchive.cpp:
|
||||
.text start:0x80484BE0 end:0x80484CE8 align:16
|
||||
|
||||
nw4r/snd/snd_WaveFile.cpp:
|
||||
.text start:0x80484BE0 end:0x80484F54 align:16
|
||||
.text start:0x80484CF0 end:0x80484F54 align:16
|
||||
|
||||
nw4r/snd/snd_WaveSound.cpp:
|
||||
.text start:0x80484F60 end:0x8048531C align:16
|
||||
.ctors start:0x804DB970 end:0x804DB974
|
||||
.data start:0x8056E350 end:0x8056E388
|
||||
.sbss start:0x805766E8 end:0x805766F0
|
||||
|
||||
nw4r/snd/snd_WaveSoundHandle.cpp:
|
||||
.text start:0x80485320 end:0x80485458 align:16
|
||||
|
||||
nw4r/snd/snd_WsdFile.cpp:
|
||||
.text start:0x80485460 end:0x80485824 align:16
|
||||
.sdata2 start:0x8057F1F0 end:0x8057F1F8
|
||||
|
||||
nw4r/snd/snd_WsdPlayer.cpp:
|
||||
.text start:0x80485830 end:0x804869D8 align:16
|
||||
.data start:0x8056E388 end:0x8056E3E8
|
||||
.sdata2 start:0x8057F1F8 end:0x8057F220
|
||||
|
||||
nw4r/snd/snd_adpcm.cpp:
|
||||
.text start:0x804869E0 end:0x80486A6C align:16
|
||||
|
||||
+1857
-1859
File diff suppressed because it is too large
Load Diff
+126
-115
@@ -313,10 +313,10 @@ def EGGLib(lib_name, objects):
|
||||
}
|
||||
|
||||
|
||||
def nw4rLib(lib_name, objects, extra_cflags=[]):
|
||||
def nw4rLib(lib_name, objects, extra_cflags=[], mw_version=None):
|
||||
return {
|
||||
"lib": lib_name,
|
||||
"mw_version": "Wii/1.3", # most seem to be around 1.2, snd is 1.6
|
||||
"mw_version": mw_version or "Wii/1.3", # most seem to be around 1.2, snd is 1.6
|
||||
"cflags": cflags_nw4r + extra_cflags,
|
||||
"progress_category": "nw4r",
|
||||
"host": False,
|
||||
@@ -387,7 +387,7 @@ config.libs = [
|
||||
Object(NonMatching, "toBeSorted/d_shadow.cpp"),
|
||||
Object(NonMatching, "toBeSorted/d_unk_mdl_stuff_1.cpp"),
|
||||
Object(NonMatching, "toBeSorted/d_unk_mdl_stuff_2.cpp"),
|
||||
Object(NonMatching, "toBeSorted/blur_and_palette_manager.cpp"),
|
||||
Object(Matching, "d/d_light_env.cpp"),
|
||||
Object(NonMatching, "toBeSorted/d_emitter.cpp"),
|
||||
Object(NonMatching, "toBeSorted/d_effects_2.cpp"),
|
||||
Object(NonMatching, "toBeSorted/sound_info.cpp"),
|
||||
@@ -435,7 +435,7 @@ config.libs = [
|
||||
Object(NonMatching, "toBeSorted/arc_managers/oarc_control.cpp"),
|
||||
Object(Matching, "toBeSorted/arc_managers/layout_arc_manager.cpp"),
|
||||
Object(NonMatching, "toBeSorted/arc_managers/layout_arc_control.cpp"),
|
||||
Object(NonMatching, "toBeSorted/base_tables.cpp"),
|
||||
Object(Matching, "toBeSorted/actor_info.cpp"),
|
||||
Object(NonMatching, "toBeSorted/unk_vec_math.cpp"),
|
||||
Object(NonMatching, "toBeSorted/unk_mdl_cc.cpp"),
|
||||
Object(NonMatching, "toBeSorted/d_camera.cpp"),
|
||||
@@ -700,26 +700,39 @@ config.libs = [
|
||||
"progress_category": "game",
|
||||
"host": False,
|
||||
"objects": [
|
||||
# These are very low quality splits since nobody has figured
|
||||
# out enough detail. Need to look into nw4r::snd first
|
||||
Object(NonMatching, "d/snd/d_snd.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_actor.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_engine.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_unk_component_1.cpp"),
|
||||
Object(NonMatching, "d/snd/mgr/d_snd_mgr_bgm.cpp"),
|
||||
Object(NonMatching, "d/snd/mgr/d_snd_mgr_unk1.cpp"),
|
||||
Object(NonMatching, "d/snd/mgr/d_snd_mgr_unk3.cpp"),
|
||||
Object(NonMatching, "d/snd/mgr/d_snd_mgr_enemy.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_mgr.cpp"),
|
||||
Object(Matching, "d/snd/d_snd_actor.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_3d_actor.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_3d_engine.cpp"),
|
||||
Object(Matching, "d/snd/d_snd_sound.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_player_mgr.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_control_player_mgr.cpp"),
|
||||
Object(Matching, "d/snd/d_snd_3d_manager.cpp"),
|
||||
# this one is a bit weird. it deals with all the stage definitions,
|
||||
# but it's not actually the bgm manager?
|
||||
Object(NonMatching, "d/snd/d_snd_stage_mgr.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_unk_component_2.cpp"),
|
||||
Object(NonMatching, "d/snd/mgr/d_snd_mgr_effect.cpp"),
|
||||
Object(NonMatching, "d/snd/mgr/d_snd_mgr_unk_5.cpp"),
|
||||
Object(NonMatching, "d/snd/mgr/d_snd_mgr_unk_6.cpp"),
|
||||
Object(NonMatching, "d/snd/mgr/d_snd_mgr_unk_7.cpp"),
|
||||
Object(NonMatching, "d/snd/mgr/d_snd_mgr_unk_8.cpp"),
|
||||
Object(NonMatching, "d/snd/mgr/d_snd_mgr_unk_9.cpp"),
|
||||
Object(NonMatching, "d/snd/mgr/d_snd_mgr_unk_10.cpp"),
|
||||
Object(NonMatching, "d/snd/mgr/d_snd_mgr_unk_11.cpp"),
|
||||
Object(NonMatching, "d/snd/mgr/d_snd_mgr_unk_12.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_area_sound_effect_mgr.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_area_sound.cpp"),
|
||||
Object(Matching, "d/snd/d_snd_control_sound.cpp"),
|
||||
Object(Matching, "d/snd/d_snd_control_player.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_bgm_mgr.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_bgm_sound_callbacks.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_bgm_sound_boss_callbacks.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_bgm_sound.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_unk_15.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_small_effect_mgr.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_harp_mgr.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_anim_sound.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_source_mgr.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_source_group.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_source.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_mgr_unk_7.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_mgr_unk_8.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_mgr_unk_9.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_mgr_unk_10.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_mgr_unk_11.cpp"),
|
||||
Object(NonMatching, "d/snd/d_snd_calc_pitch.cpp"),
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -999,7 +1012,7 @@ config.libs = [
|
||||
Object(Matching, "nw4r/g3d/g3d_scnmdl.cpp"),
|
||||
# Object(NonMatching, "nw4r/g3d/g3d_scnchoice.cpp"),
|
||||
# Object(NonMatching, "nw4r/g3d/g3d_scngroupex.cpp"),
|
||||
# Object(NonMatching, "nw4r/g3d/g3d_scnmdl1mat1shp.cpp"),
|
||||
Object(Matching, "nw4r/g3d/g3d_scnmdl1mat1shp.cpp"),
|
||||
# Object(NonMatching, "nw4r/g3d/g3d_scnmdlexpand.cpp"),
|
||||
Object(Matching, "nw4r/g3d/g3d_calcmaterial.cpp"),
|
||||
Object(Matching, "nw4r/g3d/g3d_init.cpp"),
|
||||
@@ -1012,81 +1025,83 @@ config.libs = [
|
||||
nw4rLib(
|
||||
"snd",
|
||||
[
|
||||
Object(NonMatching, "nw4r/snd/snd_AnimSound.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_AxManager.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_AxVoice.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_AxVoiceManager.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_AxfxImpl.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_Bank.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_BankFile.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_BasicPlayer.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_BasicSound.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_BiquadFilterPreset.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_Channel.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_DisposeCallbackManager.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_debug.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_DvdSoundArchive.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_EnvGenerator.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_ExternalSoundPlayer.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_FrameHeap.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_FxBase.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_FxChorus.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_FxDelay.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_FxReverbHi.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_FxReverbHiDpl2.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_FxReverbStd.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_FxReverbStdDpl2.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_InstancePool.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_Lfo.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_MemorySoundArchive.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_MidiSeqPlayer.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_MmlParser.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_MmlSeqTrack.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_MmlSeqTrackAllocator.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_NandSoundArchive.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_PlayerHeap.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_RemoteSpeaker.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_RemoteSpeakerManager.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_SeqFile.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_SeqPlayer.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_SeqSound.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_SeqSoundHandle.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_SeqTrack.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_Sound3DActor.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_Sound3DCalculator.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_Sound3DEngine.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_Sound3DListener.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_Sound3DManager.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_SoundActor.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_SoundArchive.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_SoundArchiveFile.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_SoundArchiveLoader.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_SoundArchivePlayer.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_SoundHandle.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_SoundHeap.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_SoundPlayer.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_SoundStartable.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_SoundSystem.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_SoundThread.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_StrmChannel.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_StrmFile.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_StrmPlayer.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_StrmSound.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_StrmSoundHandle.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_Task.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_TaskManager.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_TaskThread.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_Voice.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_VoiceManager.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_Util.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_WaveArchive.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_WaveFile.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_WaveSound.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_WaveSoundHandle.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_WsdFile.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_WsdPlayer.cpp"),
|
||||
Object(NonMatching, "nw4r/snd/snd_adpcm.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_AnimSound.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_AnimSoundReader.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_AxManager.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_AxVoice.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_AxVoiceManager.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_AxfxImpl.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_Bank.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_BankFile.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_BasicPlayer.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_BasicSound.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_BiquadFilterPreset.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_Channel.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_DisposeCallbackManager.cpp"),
|
||||
# Object(NonMatching, "nw4r/snd/snd_debug.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_DvdSoundArchive.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_EnvGenerator.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_ExternalSoundPlayer.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_FrameHeap.cpp"),
|
||||
# Object(NonMatching, "nw4r/snd/snd_FxBase.cpp"),
|
||||
# Object(NonMatching, "nw4r/snd/snd_FxChorus.cpp"),
|
||||
# Object(NonMatching, "nw4r/snd/snd_FxDelay.cpp"),
|
||||
# Object(NonMatching, "nw4r/snd/snd_FxReverbHi.cpp"),
|
||||
# Object(NonMatching, "nw4r/snd/snd_FxReverbHiDpl2.cpp"),
|
||||
# Object(NonMatching, "nw4r/snd/snd_FxReverbStd.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_FxReverbStdDpl2.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_InstancePool.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_Lfo.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_MemorySoundArchive.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_MidiSeqPlayer.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_MmlParser.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_MmlSeqTrack.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_MmlSeqTrackAllocator.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_NandSoundArchive.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_PlayerHeap.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_RemoteSpeaker.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_RemoteSpeakerManager.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_SeqFile.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_SeqPlayer.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_SeqSound.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_SeqSoundHandle.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_SeqTrack.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_Sound3DActor.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_Sound3DCalculator.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_Sound3DEngine.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_Sound3DListener.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_Sound3DManager.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_SoundActor.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_SoundArchive.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_SoundArchiveFile.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_SoundArchiveLoader.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_SoundArchivePlayer.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_SoundHandle.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_SoundHeap.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_SoundPlayer.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_SoundStartable.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_SoundSystem.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_SoundThread.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_StrmChannel.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_StrmFile.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_StrmPlayer.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_StrmSound.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_StrmSoundHandle.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_Task.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_TaskManager.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_TaskThread.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_Voice.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_VoiceManager.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_Util.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_WaveArchive.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_WaveFile.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_WaveSound.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_WaveSoundHandle.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_WsdFile.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_WsdPlayer.cpp"),
|
||||
Object(Matching, "nw4r/snd/snd_adpcm.cpp"),
|
||||
],
|
||||
mw_version="Wii/1.6",
|
||||
),
|
||||
nw4rLib(
|
||||
"lyt",
|
||||
@@ -1957,9 +1972,9 @@ config.libs = [
|
||||
Rel(
|
||||
NonMatching, "d_a_obj_bigbomb_flower", "REL/d/a/obj/d_a_obj_bigbomb_flower.cpp"
|
||||
),
|
||||
Rel(NonMatching, "d_a_obj_bird_sp", "REL/d/a/obj/d_a_obj_bird_sp.cpp"),
|
||||
Rel(Matching, "d_a_obj_bird_sp", "REL/d/a/obj/d_a_obj_bird_sp.cpp"),
|
||||
Rel(Matching, "d_a_obj_bird_statue", "REL/d/a/obj/d_a_obj_bird_statue.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_blade", "REL/d/a/obj/d_a_obj_blade.cpp"),
|
||||
Rel(Matching, "d_a_obj_blade", "REL/d/a/obj/d_a_obj_blade.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_blast_rock", "REL/d/a/obj/d_a_obj_blast_rock.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_block_rope", "REL/d/a/obj/d_a_obj_block_rope.cpp"),
|
||||
Rel(
|
||||
@@ -2017,7 +2032,7 @@ config.libs = [
|
||||
"d_a_obj_display_only_nbs",
|
||||
"REL/d/a/obj/d_a_obj_display_only_nbs.cpp",
|
||||
),
|
||||
Rel(NonMatching, "d_a_obj_distant_ship", "REL/d/a/obj/d_a_obj_distant_ship.cpp"),
|
||||
Rel(Matching, "d_a_obj_distant_ship", "REL/d/a/obj/d_a_obj_distant_ship.cpp"),
|
||||
Rel(
|
||||
NonMatching,
|
||||
"d_a_obj_diviner_crystal",
|
||||
@@ -2043,12 +2058,8 @@ config.libs = [
|
||||
),
|
||||
Rel(NonMatching, "d_a_obj_evil_field", "REL/d/a/obj/d_a_obj_evil_field.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_F302_light", "REL/d/a/obj/d_a_obj_F302_light.cpp"),
|
||||
Rel(
|
||||
NonMatching, "d_a_obj_F400_gate_leaf", "REL/d/a/obj/d_a_obj_F400_gate_leaf.cpp"
|
||||
),
|
||||
Rel(
|
||||
NonMatching, "d_a_obj_F400_gate_seal", "REL/d/a/obj/d_a_obj_F400_gate_seal.cpp"
|
||||
),
|
||||
Rel(Matching, "d_a_obj_F400_gate_leaf", "REL/d/a/obj/d_a_obj_F400_gate_leaf.cpp"),
|
||||
Rel(Matching, "d_a_obj_F400_gate_seal", "REL/d/a/obj/d_a_obj_F400_gate_seal.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_farmland", "REL/d/a/obj/d_a_obj_farmland.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_fence", "REL/d/a/obj/d_a_obj_fence.cpp"),
|
||||
Rel(Matching, "d_a_obj_fence_boko2", "REL/d/a/obj/d_a_obj_fence_boko2.cpp"),
|
||||
@@ -2104,11 +2115,11 @@ config.libs = [
|
||||
Rel(NonMatching, "d_a_obj_hit_lever_sw", "REL/d/a/obj/d_a_obj_hit_lever_sw.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_hole", "REL/d/a/obj/d_a_obj_hole.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_hole_minigame", "REL/d/a/obj/d_a_obj_hole_minigame.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_impa_door", "REL/d/a/obj/d_a_obj_impa_door.cpp"),
|
||||
Rel(Matching, "d_a_obj_impa_door", "REL/d/a/obj/d_a_obj_impa_door.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_insect_island", "REL/d/a/obj/d_a_obj_insect_island.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_into_hole", "REL/d/a/obj/d_a_obj_into_hole.cpp"),
|
||||
Rel(Matching, "d_a_obj_iron_stage", "REL/d/a/obj/d_a_obj_iron_stage.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_island_LOD", "REL/d/a/obj/d_a_obj_island_LOD.cpp"),
|
||||
Rel(Matching, "d_a_obj_island_LOD", "REL/d/a/obj/d_a_obj_island_LOD.cpp"),
|
||||
Rel(Matching, "d_a_obj_island_nusi", "REL/d/a/obj/d_a_obj_island_nusi.cpp"),
|
||||
Rel(
|
||||
NonMatching,
|
||||
@@ -2147,10 +2158,10 @@ config.libs = [
|
||||
Rel(NonMatching, "d_a_obj_lotus", "REL/d/a/obj/d_a_obj_lotus.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_lotus_flower", "REL/d/a/obj/d_a_obj_lotus_flower.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_lotus_seed", "REL/d/a/obj/d_a_obj_lotus_seed.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_mapparts", "REL/d/a/obj/d_a_obj_mapparts.cpp"),
|
||||
Rel(Matching, "d_a_obj_mapparts", "REL/d/a/obj/d_a_obj_mapparts.cpp"),
|
||||
Rel(Matching, "d_a_obj_megami_island", "REL/d/a/obj/d_a_obj_megami_island.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_mg_pumpkin", "REL/d/a/obj/d_a_obj_mg_pumpkin.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_mole_cover", "REL/d/a/obj/d_a_obj_mole_cover.cpp"),
|
||||
Rel(Matching, "d_a_obj_mole_cover", "REL/d/a/obj/d_a_obj_mole_cover.cpp"),
|
||||
Rel(Matching, "d_a_obj_mole_soil", "REL/d/a/obj/d_a_obj_mole_soil.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_move_elec", "REL/d/a/obj/d_a_obj_move_elec.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_move_lift_vol", "REL/d/a/obj/d_a_obj_move_lift_vol.cpp"),
|
||||
@@ -2180,9 +2191,9 @@ config.libs = [
|
||||
Rel(Matching, "d_a_obj_pumpkin_bar", "REL/d/a/obj/d_a_obj_pumpkin_bar.cpp"),
|
||||
Rel(Matching, "d_a_obj_pumpkin_leaf", "REL/d/a/obj/d_a_obj_pumpkin_leaf.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_push_block", "REL/d/a/obj/d_a_obj_push_block.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_puzzle_island", "REL/d/a/obj/d_a_obj_puzzle_island.cpp"),
|
||||
Rel(Matching, "d_a_obj_puzzle_island", "REL/d/a/obj/d_a_obj_puzzle_island.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_rail_end", "REL/d/a/obj/d_a_obj_rail_end.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_rail_post", "REL/d/a/obj/d_a_obj_rail_post.cpp"),
|
||||
Rel(Matching, "d_a_obj_rail_post", "REL/d/a/obj/d_a_obj_rail_post.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_ride_rock", "REL/d/a/obj/d_a_obj_ride_rock.cpp"),
|
||||
Rel(Matching, "d_a_obj_ring", "REL/d/a/obj/d_a_obj_ring.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_rock_boat", "REL/d/a/obj/d_a_obj_rock_boat.cpp"),
|
||||
@@ -2190,7 +2201,7 @@ config.libs = [
|
||||
Rel(NonMatching, "d_a_obj_rock_sky", "REL/d/a/obj/d_a_obj_rock_sky.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_roll_pillar", "REL/d/a/obj/d_a_obj_roll_pillar.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_roll_rock", "REL/d/a/obj/d_a_obj_roll_rock.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_rope_base", "REL/d/a/obj/d_a_obj_rope_base.cpp"),
|
||||
Rel(Matching, "d_a_obj_rope_base", "REL/d/a/obj/d_a_obj_rope_base.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_rope_igaiga", "REL/d/a/obj/d_a_obj_rope_igaiga.cpp"),
|
||||
Rel(
|
||||
NonMatching, "d_a_obj_rotation_light", "REL/d/a/obj/d_a_obj_rotation_light.cpp"
|
||||
@@ -2293,7 +2304,7 @@ config.libs = [
|
||||
Rel(NonMatching, "d_a_obj_syako_shutter", "REL/d/a/obj/d_a_obj_syako_shutter.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_tableware", "REL/d/a/obj/d_a_obj_tableware.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_tackle", "REL/d/a/obj/d_a_obj_tackle.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_tarzan_pole", "REL/d/a/obj/d_a_obj_tarzan_pole.cpp"),
|
||||
Rel(Matching, "d_a_obj_tarzan_pole", "REL/d/a/obj/d_a_obj_tarzan_pole.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_tenijima", "REL/d/a/obj/d_a_obj_tenijima.cpp"),
|
||||
Rel(NonMatching, "d_a_obj_teni_rail", "REL/d/a/obj/d_a_obj_teni_rail.cpp"),
|
||||
Rel(
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
#ifndef DECOMP_UNKNOWN_TYPES_H
|
||||
#define DECOMP_UNKNOWN_TYPES_H
|
||||
|
||||
#include "common.h"
|
||||
|
||||
// MOST LIKELY mVEC
|
||||
struct Vec3f {
|
||||
f32 x, y, z;
|
||||
};
|
||||
|
||||
struct Vec2f {
|
||||
f32 x, y;
|
||||
};
|
||||
|
||||
struct Vec3s {
|
||||
s16 x, y, z;
|
||||
};
|
||||
|
||||
struct ObjInfo {
|
||||
/* 0x00 */ char *name;
|
||||
/* 0x04 */ u16 obj_id;
|
||||
/* 0x06 */ u16 obj_id2;
|
||||
/* 0x08 */ u16 fiTextEntryId;
|
||||
/* 0x0A */ s8 unk_0xA;
|
||||
/* 0x0B */ u8 subtype;
|
||||
};
|
||||
|
||||
// is now fLiNdBa_c
|
||||
// struct ActorReference {
|
||||
// ActorReference* prev;
|
||||
// ActorReference* next;
|
||||
// fBase_c* link;
|
||||
// };
|
||||
|
||||
class UnkCollider {};
|
||||
|
||||
#endif
|
||||
+9
-82
@@ -1,95 +1,22 @@
|
||||
#ifndef D_A_BASE_H
|
||||
#define D_A_BASE_H
|
||||
|
||||
#include "UnknownTypeBelongings.h"
|
||||
#include "common.h"
|
||||
#include "d/d_base.h"
|
||||
#include "d/snd/d_snd_source_if.h"
|
||||
#include "m/m_allocator.h"
|
||||
#include "m/m_angle.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "toBeSorted/actor_info.h"
|
||||
#include "toBeSorted/raii_ptr.h"
|
||||
#include "toBeSorted/tlist.h"
|
||||
|
||||
class dAcBase_c;
|
||||
struct cBgS_PolyInfo;
|
||||
|
||||
struct SoundSource {
|
||||
virtual ~SoundSource() {}
|
||||
// TODO there's probably multiple inheritance involved and stuff
|
||||
#define SOUNDSOURCE_VIRTUAL(offset) virtual void vt_##offset();
|
||||
|
||||
SOUNDSOURCE_VIRTUAL(0x0C);
|
||||
SOUNDSOURCE_VIRTUAL(0x10);
|
||||
SOUNDSOURCE_VIRTUAL(0x14);
|
||||
SOUNDSOURCE_VIRTUAL(0x18);
|
||||
SOUNDSOURCE_VIRTUAL(0x1C);
|
||||
SOUNDSOURCE_VIRTUAL(0x20);
|
||||
SOUNDSOURCE_VIRTUAL(0x24);
|
||||
SOUNDSOURCE_VIRTUAL(0x28);
|
||||
SOUNDSOURCE_VIRTUAL(0x2C);
|
||||
SOUNDSOURCE_VIRTUAL(0x30);
|
||||
SOUNDSOURCE_VIRTUAL(0x34);
|
||||
SOUNDSOURCE_VIRTUAL(0x38);
|
||||
SOUNDSOURCE_VIRTUAL(0x3C);
|
||||
virtual void vt_0x40(s32);
|
||||
SOUNDSOURCE_VIRTUAL(0x44);
|
||||
virtual bool shutdown(); // 0x48
|
||||
SOUNDSOURCE_VIRTUAL(0x4C);
|
||||
SOUNDSOURCE_VIRTUAL(0x50);
|
||||
SOUNDSOURCE_VIRTUAL(0x54);
|
||||
SOUNDSOURCE_VIRTUAL(0x58);
|
||||
SOUNDSOURCE_VIRTUAL(0x5C);
|
||||
SOUNDSOURCE_VIRTUAL(0x60);
|
||||
SOUNDSOURCE_VIRTUAL(0x64);
|
||||
SOUNDSOURCE_VIRTUAL(0x68);
|
||||
SOUNDSOURCE_VIRTUAL(0x6C);
|
||||
SOUNDSOURCE_VIRTUAL(0x70);
|
||||
SOUNDSOURCE_VIRTUAL(0x74);
|
||||
SOUNDSOURCE_VIRTUAL(0x78);
|
||||
SOUNDSOURCE_VIRTUAL(0x7C);
|
||||
SOUNDSOURCE_VIRTUAL(0x80);
|
||||
SOUNDSOURCE_VIRTUAL(0x84);
|
||||
SOUNDSOURCE_VIRTUAL(0x88);
|
||||
SOUNDSOURCE_VIRTUAL(0x8C);
|
||||
SOUNDSOURCE_VIRTUAL(0x90);
|
||||
SOUNDSOURCE_VIRTUAL(0x94);
|
||||
SOUNDSOURCE_VIRTUAL(0x98);
|
||||
SOUNDSOURCE_VIRTUAL(0x9C);
|
||||
SOUNDSOURCE_VIRTUAL(0xA0);
|
||||
SOUNDSOURCE_VIRTUAL(0xA4);
|
||||
SOUNDSOURCE_VIRTUAL(0xA8);
|
||||
SOUNDSOURCE_VIRTUAL(0xAC);
|
||||
SOUNDSOURCE_VIRTUAL(0xB0);
|
||||
SOUNDSOURCE_VIRTUAL(0xB4);
|
||||
SOUNDSOURCE_VIRTUAL(0xB8);
|
||||
SOUNDSOURCE_VIRTUAL(0xBC);
|
||||
SOUNDSOURCE_VIRTUAL(0xC0);
|
||||
SOUNDSOURCE_VIRTUAL(0xC4);
|
||||
SOUNDSOURCE_VIRTUAL(0xC8);
|
||||
SOUNDSOURCE_VIRTUAL(0xCC);
|
||||
SOUNDSOURCE_VIRTUAL(0xD0);
|
||||
SOUNDSOURCE_VIRTUAL(0xD4);
|
||||
SOUNDSOURCE_VIRTUAL(0xD8);
|
||||
SOUNDSOURCE_VIRTUAL(0xDC);
|
||||
SOUNDSOURCE_VIRTUAL(0xE0);
|
||||
SOUNDSOURCE_VIRTUAL(0xE4);
|
||||
SOUNDSOURCE_VIRTUAL(0xE8);
|
||||
SOUNDSOURCE_VIRTUAL(0xEC);
|
||||
SOUNDSOURCE_VIRTUAL(0xF0);
|
||||
SOUNDSOURCE_VIRTUAL(0xF4);
|
||||
SOUNDSOURCE_VIRTUAL(0xF8);
|
||||
SOUNDSOURCE_VIRTUAL(0xFC);
|
||||
|
||||
virtual bool isReadyMaybe(); // 0x100
|
||||
virtual bool load(void *data, const char *name); // 0x104
|
||||
virtual void setFrame(f32 frame); // 0x108
|
||||
virtual void setRate(f32 frame); // 0x10C
|
||||
virtual void set_0x164(UNKWORD val); // 0x114
|
||||
};
|
||||
|
||||
struct SoundInfo {
|
||||
dAcBase_c *actor;
|
||||
SoundSource *sound_source;
|
||||
dSoundSourceIf_c *sound_source;
|
||||
mVec3_c *obj_pos;
|
||||
TListNode<SoundInfo> mLink;
|
||||
};
|
||||
@@ -141,9 +68,9 @@ public:
|
||||
class dAcBase_c : public dBase_c {
|
||||
public:
|
||||
/* 0x68 */ mHeapAllocator_c heap_allocator;
|
||||
/* 0x84 */ ObjInfo *obj_info;
|
||||
/* 0x84 */ const ActorInfo *mpActorInfo;
|
||||
/* 0x88 */ TList<SoundInfo, 12> sound_list;
|
||||
/* 0x94 */ RaiiPtr<SoundSource> sound_source;
|
||||
/* 0x94 */ RaiiPtr<dSoundSourceIf_c> sound_source;
|
||||
/* 0x98 */ mVec3_c *obj_pos;
|
||||
/* 0x9C */ mVec3_c pos_copy;
|
||||
/* 0xA8 */ u32 params2;
|
||||
@@ -249,10 +176,10 @@ public:
|
||||
// funcs found in TU
|
||||
/* 8002c650 */ static void setTempCreateParams(
|
||||
mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, s32 roomId, u32 params2, dAcBase_c *parent, u8 subtype, u16 unkFlag,
|
||||
s8 viewClipIdx, ObjInfo *objInfo
|
||||
s8 viewClipIdx, const ActorInfo *actorInfo
|
||||
);
|
||||
|
||||
/* 8002c690 */ SoundSource *FUN_8002c690();
|
||||
/* 8002c690 */ dSoundSourceIf_c *createSoundSource();
|
||||
/* 8002c710 */ int initAllocatorWork1Heap(int size, char *name, int align);
|
||||
/* 8002c720 */ int initAllocator(int size, char *name, EGG::Heap *heap, int align);
|
||||
/* 8002c7b0 */ bool addActorToRoom(s32 roomId);
|
||||
@@ -301,7 +228,7 @@ public:
|
||||
/* 8002d810 */ void FUN_8002d810();
|
||||
/* 8002d830 */ void FUN_8002d830();
|
||||
/* 8002d860 */ void FUN_8002d860(UNKWORD val);
|
||||
/* 8002d880 */ SoundSource *getSoundSource();
|
||||
/* 8002d880 */ dSoundSourceIf_c *getSoundSource();
|
||||
// End of SoundSource stuff
|
||||
|
||||
/* 8002d890 */ void removeSoundInfo(SoundInfo *);
|
||||
@@ -339,7 +266,7 @@ public:
|
||||
/* 80575084 */ static mAng3_c *s_Create_Rotation;
|
||||
/* 80575088 */ static mVec3_c *s_Create_Scale;
|
||||
/* 8057508C */ static dAcBase_c *s_Create_Parent;
|
||||
/* 80575090 */ static ObjInfo *s_Create_ObjInfo;
|
||||
/* 80575090 */ static const ActorInfo *s_Create_ActorInfo;
|
||||
/* 80575094 */ static u8 s_Create_Subtype;
|
||||
};
|
||||
|
||||
|
||||
@@ -26,11 +26,19 @@ public:
|
||||
STATE_FUNC_DECLARE(dBird_c, MiniGameEnd);
|
||||
STATE_FUNC_DECLARE(dBird_c, MiniGameLevelUpDemo);
|
||||
|
||||
// fn_129_8DD0, only referenced by d_a_obj_bird_sp
|
||||
void accelerateTowards(mVec3_c &targetDirection);
|
||||
|
||||
s16 getNumDashes() const {
|
||||
return mNumDashes;
|
||||
}
|
||||
|
||||
static dBird_c *getInstance() {
|
||||
return spInstance;
|
||||
}
|
||||
|
||||
private:
|
||||
static dBird_c *spInstance;
|
||||
/* 0x??? */ STATE_MGR_DECLARE(dBird_c);
|
||||
u8 _0x36C[0xF8E - 0x36C];
|
||||
/* 0xF8E */ s16 mNumDashes;
|
||||
|
||||
@@ -8,18 +8,19 @@
|
||||
#include "d/col/bg/d_bg_s_acch.h"
|
||||
#include "d/col/cc/d_cc_d.h"
|
||||
#include "d/d_jnt_col.h"
|
||||
#include "d/d_light_env.h"
|
||||
#include "d/d_shadow.h"
|
||||
#include "m/m3d/m_anmmatclr.h"
|
||||
#include "m/m3d/m_anmtexpat.h"
|
||||
#include "m/m_angle.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "s/s_State.hpp"
|
||||
#include "toBeSorted/blur_and_palette_manager.h"
|
||||
#include "toBeSorted/d_d3d.h"
|
||||
#include "toBeSorted/d_emitter.h"
|
||||
#include "toBeSorted/stage_render_stuff.h"
|
||||
#include "toBeSorted/time_area_mgr.h"
|
||||
|
||||
|
||||
class dAcEsm_c : public dAcEnBase_c {
|
||||
public:
|
||||
enum SmColor_e {
|
||||
@@ -213,7 +214,7 @@ private:
|
||||
/* 0xBCC */ u8 field_0xBCC;
|
||||
/* 0xBCD */ u8 field_0xBCD;
|
||||
/* 0xBCE */ u8 field_0xBCE;
|
||||
/* 0xBD0 */ LightParams mLightInfo;
|
||||
/* 0xBD0 */ LIGHT_INFLUENCE mLightInfo;
|
||||
|
||||
static bool sSomeArrayInit;
|
||||
static bool sSomeArray[9];
|
||||
|
||||
@@ -8,7 +8,14 @@ public:
|
||||
dAcOF400GateLeaf_c() {}
|
||||
virtual ~dAcOF400GateLeaf_c() {}
|
||||
|
||||
virtual bool createHeap() override;
|
||||
virtual int create() override;
|
||||
virtual int draw() override;
|
||||
|
||||
u16 getStoryflag();
|
||||
|
||||
private:
|
||||
/* 0x330 */ m3d::smdl_c mMdl;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -2,13 +2,25 @@
|
||||
#define D_A_OBJ_F400_GATE_SEAL_H
|
||||
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/a/obj/d_a_obj_door.h"
|
||||
#include "m/m3d/m_anmmatclr.h"
|
||||
#include "m/m3d/m_smdl.h"
|
||||
|
||||
class dAcOF400GateSeal_c : public dAcObjBase_c {
|
||||
public:
|
||||
dAcOF400GateSeal_c() {}
|
||||
virtual ~dAcOF400GateSeal_c() {}
|
||||
|
||||
virtual bool createHeap() override;
|
||||
virtual int actorCreate() override;
|
||||
virtual int actorPostCreate() override;
|
||||
virtual int actorExecute() override;
|
||||
virtual int draw() override;
|
||||
|
||||
private:
|
||||
/* 0x330 */ m3d::smdl_c mMdl;
|
||||
/* 0x34C */ m3d::anmMatClr_c mAnmClr;
|
||||
/* 0x378 */ dAcRef_c<dAcOdoor_c> mDoor;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include "d/col/c/c_cc_d.h"
|
||||
#include "d/col/c/c_m3d_g_aab.h"
|
||||
#include "d/d_jnt_col.h"
|
||||
#include "d/d_light_env.h"
|
||||
#include "d/d_linkage.h"
|
||||
#include "egg/math/eggMath.h"
|
||||
#include "m/m3d/m_shadow.h"
|
||||
@@ -17,32 +18,6 @@
|
||||
#include "m/m_vec.h"
|
||||
#include "m/types_m.h"
|
||||
|
||||
// Ghidra has it as `unk_ActorObjectBase`
|
||||
struct LightingInfo {
|
||||
/* 0x00 */ u8 mField_0x00[0x40 - 0x00];
|
||||
/* 0x40 */ mColor mTev0Color;
|
||||
/* 0x44 */ mColor mTev1Color;
|
||||
/* 0x48 */ mColor mTev2Color;
|
||||
/* 0x4C */ mColor mTevPrevColor;
|
||||
/* 0x50 */ mColor mTevK0Color;
|
||||
/* 0x54 */ mColor mTevK1Color;
|
||||
/* 0x58 */ mColor mTevK2Color;
|
||||
/* 0x5C */ mColor mTevK3Color;
|
||||
/* 0x60 */ u8 mLightingCode;
|
||||
/* 0x61 */ u8 _0x61;
|
||||
/* 0x62 */ u8 _0x62;
|
||||
/* 0x63 */ u8 _0x63;
|
||||
/* 0x64 */ u8 _0x64;
|
||||
/* 0x65 */ bool mUseTev0;
|
||||
/* 0x66 */ bool mUseTev1;
|
||||
/* 0x67 */ bool mUseTev2;
|
||||
/* 0x68 */ bool mUseTevPrev;
|
||||
/* 0x69 */ bool mUseTevK0;
|
||||
/* 0x6A */ bool mUseTevK1;
|
||||
/* 0x6B */ bool mUseTevK2;
|
||||
/* 0x6C */ bool mUseTevK3;
|
||||
/* 0x6D */ u8 mField_0x69[0x70 - 0x6D];
|
||||
};
|
||||
|
||||
// Ghidra: ActorObjectBase
|
||||
// size: 0x330
|
||||
@@ -76,7 +51,7 @@ public:
|
||||
/* 0x208 */ mAng3_c mStartingRot;
|
||||
/* 0x210 */ dLinkage_c mLinkage;
|
||||
/* 0x2B8 */ u32 mField_0x2B8;
|
||||
/* 0x2BC */ LightingInfo mLightingInfo;
|
||||
/* 0x2BC */ ActorLighting mLightingInfo;
|
||||
/* 0x32C */ u32 mField_0x32C;
|
||||
|
||||
public:
|
||||
@@ -195,7 +170,7 @@ public:
|
||||
u32 roomId
|
||||
);
|
||||
/* 8002efa0 */ void fn_8002efa0();
|
||||
/* 8002eff0 */ bool fn_8002eff0(f32 *, s16 *, UnkCollider *, f32 *, f32 *);
|
||||
/* 8002eff0 */ bool fn_8002eff0(f32 *, s16 *, f32 *, f32 *, f32 *);
|
||||
/* 8002f190 */ void createChildAttached2(
|
||||
fProfile::PROFILE_NAME_e actorId, u32 params1, mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, u32 params2,
|
||||
u32 roomId
|
||||
|
||||
@@ -2,13 +2,21 @@
|
||||
#define D_A_OBJ_BIRD_SP_H
|
||||
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/col/cc/d_cc_d.h"
|
||||
|
||||
class dAcObjBirdSp_c : public dAcObjBase_c {
|
||||
public:
|
||||
dAcObjBirdSp_c() {}
|
||||
virtual ~dAcObjBirdSp_c() {}
|
||||
|
||||
virtual bool createHeap() override;
|
||||
virtual int create() override;
|
||||
virtual int actorExecute() override;
|
||||
virtual int draw() override;
|
||||
|
||||
private:
|
||||
static dCcD_SrcSph sCcSrc;
|
||||
/* 0x330 */ dCcD_Sph mCollider;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -2,13 +2,23 @@
|
||||
#define D_A_OBJ_BLADE_H
|
||||
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "m/m3d/m_anmmdl.h"
|
||||
#include "nw4r/g3d/res/g3d_resfile.h"
|
||||
|
||||
class dAcOblade_c : public dAcObjBase_c {
|
||||
public:
|
||||
dAcOblade_c() {}
|
||||
virtual ~dAcOblade_c() {}
|
||||
|
||||
virtual bool createHeap() override;
|
||||
virtual int create() override;
|
||||
virtual int doDelete() override;
|
||||
virtual int actorExecute() override;
|
||||
virtual int draw() override;
|
||||
|
||||
private:
|
||||
/* 0x330 */ nw4r::g3d::ResFile mResFile;
|
||||
/* 0x334 */ m3d::mdlAnmChr mMdl;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -2,13 +2,25 @@
|
||||
#define D_A_OBJ_DISTANT_SHIP_H
|
||||
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "m/m3d/m_smdl.h"
|
||||
#include "nw4r/g3d/res/g3d_resfile.h"
|
||||
|
||||
class dAcOdistantShip_c : public dAcObjBase_c {
|
||||
public:
|
||||
dAcOdistantShip_c() {}
|
||||
virtual ~dAcOdistantShip_c() {}
|
||||
virtual int create() override;
|
||||
virtual int doDelete() override;
|
||||
virtual int draw() override;
|
||||
virtual bool createHeap() override;
|
||||
virtual int actorExecute() override;
|
||||
const char *getModelName();
|
||||
|
||||
private:
|
||||
/* 0x330 */ nw4r::g3d::ResFile mBrres;
|
||||
/* 0x334 */ m3d::smdl_c mModel;
|
||||
/* 0x350 */ u8 mSubtype;
|
||||
/* 0x351 */ bool mIsVisible;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -8,6 +8,8 @@ public:
|
||||
dAcOdoor_c() {}
|
||||
virtual ~dAcOdoor_c() {}
|
||||
|
||||
bool isLocked();
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
|
||||
@@ -2,19 +2,32 @@
|
||||
#define D_A_OBJ_GIRAHIM_FOOT_H
|
||||
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/col/bg/d_bg_s_acch.h"
|
||||
#include "d/d_shadow.h"
|
||||
#include "m/m3d/m_smdl.h"
|
||||
#include "nw4r/g3d/res/g3d_resfile.h"
|
||||
#include "s/s_State.hpp"
|
||||
#include "s/s_StateMgr.hpp"
|
||||
|
||||
class dAcOgirahimFoot_c : public dAcObjBase_c {
|
||||
public:
|
||||
dAcOgirahimFoot_c() : mStateMgr(*this, sStateID::null) {}
|
||||
virtual ~dAcOgirahimFoot_c() {}
|
||||
|
||||
virtual int create() override;
|
||||
virtual int doDelete() override;
|
||||
virtual int draw() override;
|
||||
virtual bool createHeap() override;
|
||||
virtual int actorExecute() override;
|
||||
|
||||
STATE_FUNC_DECLARE(dAcOgirahimFoot_c, Wait);
|
||||
STATE_FUNC_DECLARE(dAcOgirahimFoot_c, Appear);
|
||||
|
||||
private:
|
||||
/* 0x??? */ STATE_MGR_DECLARE(dAcOgirahimFoot_c);
|
||||
/* 0x330 */ nw4r::g3d::ResFile mRes;
|
||||
/* 0x334 */ m3d::smdl_c mMdl;
|
||||
/* 0x350 */ dShadowCircle_c mShadow;
|
||||
/* 0x358 */ STATE_MGR_DECLARE(dAcOgirahimFoot_c);
|
||||
/* 0x394 */ bool field_0x394;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
#define D_A_OBJ_IMPA_DOOR_H
|
||||
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "m/m3d/m_smdl.h"
|
||||
#include "nw4r/g3d/res/g3d_resfile.h"
|
||||
#include "s/s_State.hpp"
|
||||
#include "s/s_StateMgr.hpp"
|
||||
|
||||
class dAcOimpaDoor_c : public dAcObjBase_c {
|
||||
public:
|
||||
@@ -12,8 +13,16 @@ public:
|
||||
|
||||
STATE_FUNC_DECLARE(dAcOimpaDoor_c, Wait);
|
||||
|
||||
virtual bool createHeap() override;
|
||||
virtual int create() override;
|
||||
virtual int doDelete() override;
|
||||
virtual int actorExecute() override;
|
||||
virtual int draw() override;
|
||||
|
||||
private:
|
||||
/* 0x??? */ STATE_MGR_DECLARE(dAcOimpaDoor_c);
|
||||
/* 0x330 */ nw4r::g3d::ResFile mResFile;
|
||||
/* 0x334 */ m3d::smdl_c mMdl;
|
||||
/* 0x350 */ STATE_MGR_DECLARE(dAcOimpaDoor_c);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -8,7 +8,19 @@ public:
|
||||
dAcOislandLOD_c() {}
|
||||
virtual ~dAcOislandLOD_c() {}
|
||||
|
||||
virtual bool createHeap() override;
|
||||
virtual int create() override;
|
||||
virtual int doDelete() override;
|
||||
virtual int actorExecute() override;
|
||||
virtual int draw() override;
|
||||
|
||||
private:
|
||||
static const char* const resFilenames[5];
|
||||
static const char* const resMdlNames[5];
|
||||
|
||||
/* 0x330 */ nw4r::g3d::ResFile mResFile;
|
||||
/* 0x334 */ m3d::smdl_c mMdl;
|
||||
/* 0x350 */ u8 mMdlLodIdx;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -8,6 +8,8 @@ public:
|
||||
dAcOMapparts_c() {}
|
||||
virtual ~dAcOMapparts_c() {}
|
||||
|
||||
virtual int create() override;
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
|
||||
@@ -2,13 +2,25 @@
|
||||
#define D_A_OBJ_MOLE_COVER_H
|
||||
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/col/bg/d_bg_w.h"
|
||||
#include "m/m3d/m_smdl.h"
|
||||
#include "nw4r/g3d/res/g3d_resfile.h"
|
||||
|
||||
class dAcOmoleCover_c : public dAcObjBase_c {
|
||||
public:
|
||||
dAcOmoleCover_c() {}
|
||||
virtual ~dAcOmoleCover_c() {}
|
||||
|
||||
virtual bool createHeap() override;
|
||||
virtual int create() override;
|
||||
virtual int doDelete() override;
|
||||
virtual int actorExecute() override;
|
||||
virtual int draw() override;
|
||||
|
||||
private:
|
||||
/* 0x330 */ nw4r::g3d::ResFile mResFile;
|
||||
/* 0x334 */ m3d::smdl_c mMdl;
|
||||
/* 0x350 */ dBgW mBgW;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -2,13 +2,26 @@
|
||||
#define D_A_OBJ_PUZZLE_ISLAND_H
|
||||
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/col/bg/d_bg_w.h"
|
||||
#include "m/m3d/m_smdl.h"
|
||||
|
||||
class dAcOpuzzleIsland_c : public dAcObjBase_c {
|
||||
public:
|
||||
dAcOpuzzleIsland_c() {}
|
||||
virtual ~dAcOpuzzleIsland_c() {}
|
||||
|
||||
virtual bool createHeap() override;
|
||||
virtual int create() override;
|
||||
virtual int doDelete() override;
|
||||
virtual int actorExecute() override;
|
||||
virtual int draw() override;
|
||||
|
||||
static void rideCallback(dBgW *, dAcObjBase_c *, dAcObjBase_c *);
|
||||
|
||||
private:
|
||||
/* 0x330 */ m3d::smdl_c mMdl;
|
||||
/* 0x34C */ nw4r::g3d::ResFile mResFile;
|
||||
/* 0x350 */ dBgW mBgW;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -2,13 +2,22 @@
|
||||
#define D_A_OBJ_RAIL_POST_H
|
||||
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/col/bg/d_bg_w.h"
|
||||
|
||||
class dAcORailPost : public dAcObjBase_c {
|
||||
public:
|
||||
dAcORailPost();
|
||||
virtual ~dAcORailPost();
|
||||
|
||||
virtual bool createHeap() override;
|
||||
virtual int create() override;
|
||||
virtual int doDelete() override;
|
||||
virtual int actorExecute() override;
|
||||
virtual int draw() override;
|
||||
|
||||
private:
|
||||
/* 0x330 */ m3d::smdl_c mMdl;
|
||||
/* 0x350 */ dBgW mBgW;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -2,13 +2,26 @@
|
||||
#define D_A_OBJ_ROPE_BASE_H
|
||||
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "m/m3d/m_smdl.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "nw4r/g3d/res/g3d_resfile.h"
|
||||
|
||||
class dAcOropeBase_c : public dAcObjBase_c {
|
||||
public:
|
||||
dAcOropeBase_c() {}
|
||||
virtual ~dAcOropeBase_c() {}
|
||||
|
||||
virtual bool createHeap() override;
|
||||
virtual int create() override;
|
||||
virtual int doDelete() override;
|
||||
virtual int actorExecute() override;
|
||||
virtual int draw() override;
|
||||
|
||||
private:
|
||||
/* 0x330 */ nw4r::g3d::ResFile mResFile;
|
||||
/* 0x334 */ m3d::smdl_c mMdl;
|
||||
/* 0x350 */ mVec3_c mRopePos;
|
||||
/* 0x35C */ bool field_0x35C;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,20 +1,47 @@
|
||||
#ifndef D_A_OBJ_STREAM_LAVA_H
|
||||
#define D_A_OBJ_STREAM_LAVA_H
|
||||
|
||||
#include "common.h"
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/col/bg/d_bg_w.h"
|
||||
#include "m/m3d/m_anmmatclr.h"
|
||||
#include "m/m3d/m_anmtexsrt.h"
|
||||
#include "nw4r/g3d/res/g3d_resfile.h"
|
||||
#include "s/s_State.hpp"
|
||||
#include "s/s_StateMgr.hpp"
|
||||
#include "toBeSorted/actor_event.h"
|
||||
#include "toBeSorted/stage_render_stuff.h"
|
||||
|
||||
class dAcOstreamLava_c : public dAcObjBase_c {
|
||||
public:
|
||||
dAcOstreamLava_c() : mStateMgr(*this, sStateID::null) {}
|
||||
dAcOstreamLava_c() : mStateMgr(*this, sStateID::null), mEvent(*this, nullptr), mScnCallback(this) {}
|
||||
virtual int create() override;
|
||||
virtual int doDelete() override;
|
||||
virtual int draw() override;
|
||||
virtual bool createHeap() override;
|
||||
virtual ~dAcOstreamLava_c() {}
|
||||
virtual int actorExecute() override;
|
||||
|
||||
STATE_FUNC_DECLARE(dAcOstreamLava_c, Wait);
|
||||
STATE_FUNC_DECLARE(dAcOstreamLava_c, Stream);
|
||||
|
||||
private:
|
||||
/* 0x??? */ STATE_MGR_DECLARE(dAcOstreamLava_c);
|
||||
const static f32 unkFloat0;
|
||||
static u32 eventFlags1;
|
||||
static u32 eventFlags2;
|
||||
|
||||
/* 0x330 */ nw4r::g3d::ResFile mResFile;
|
||||
/* 0x334 */ m3d::smdl_c mModel;
|
||||
/* 0x350 */ m3d::anmTexSrt_c mAnmTexSrtWait;
|
||||
/* 0x37C */ m3d::anmMatClr_c mAnmMatClr;
|
||||
/* 0x3A8 */ dBgW mCollision;
|
||||
/* 0x5B8 */ STATE_MGR_DECLARE(dAcOstreamLava_c);
|
||||
/* 0x5F4 */ ActorEventRelated mEvent;
|
||||
/* 0x644 */ dScnCallback_c mScnCallback;
|
||||
|
||||
/* 0x650 */ u8 mSubtype;
|
||||
/* 0x651 */ u8 mShouldStreamSceneflag;
|
||||
/* 0x652 */ u8 mEventId;
|
||||
/* 0x653 */ bool mHideActor;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -2,13 +2,35 @@
|
||||
#define D_A_OBJ_TARZAN_POLE_H
|
||||
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/col/bg/d_bg_w.h"
|
||||
#include "d/col/cc/d_cc_d.h"
|
||||
#include "m/m3d/m_smdl.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "nw4r/g3d/res/g3d_resfile.h"
|
||||
|
||||
class dAcOTarzanPole_c : public dAcObjBase_c {
|
||||
public:
|
||||
dAcOTarzanPole_c() {}
|
||||
virtual ~dAcOTarzanPole_c() {}
|
||||
|
||||
virtual bool createHeap() override;
|
||||
virtual int create() override;
|
||||
virtual int doDelete() override;
|
||||
virtual int actorExecute() override;
|
||||
virtual int draw() override;
|
||||
|
||||
private:
|
||||
static dCcD_SrcSph sCcSrc;
|
||||
|
||||
static const f32 sXOffset;
|
||||
static const f32 sYOffset;
|
||||
|
||||
/* 0x330 */ nw4r::g3d::ResFile mBrres;
|
||||
/* 0x334 */ m3d::smdl_c mMdl;
|
||||
/* 0x350 */ dBgW mBgCollider;
|
||||
/* 0x560 */ dCcD_Sph mCollider;
|
||||
/* 0x6b0 */ mVec3_c mVec; // TODO: Find better name, once we've figured out it's purpose
|
||||
/* 0x6bc */ f32 mFloat; // TODO: No usage found yet
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "d/col/bg/d_bg_w.h"
|
||||
#include "d/col/cc/d_cc_d.h"
|
||||
#include "d/d_cc.h"
|
||||
#include "d/d_light_env.h"
|
||||
#include "d/d_shadow.h"
|
||||
#include "m/m3d/m_anmchr.h"
|
||||
#include "m/m3d/m_anmmatclr.h"
|
||||
@@ -20,10 +21,10 @@
|
||||
#include "s/s_State.hpp"
|
||||
#include "toBeSorted/actor_event.h"
|
||||
#include "toBeSorted/attention.h"
|
||||
#include "toBeSorted/blur_and_palette_manager.h"
|
||||
#include "toBeSorted/dowsing_target.h"
|
||||
#include "toBeSorted/stage_render_stuff.h"
|
||||
|
||||
|
||||
class dAcTbox_c : public dAcObjBase_c {
|
||||
public:
|
||||
enum TboxVariant_e {
|
||||
@@ -139,7 +140,7 @@ private:
|
||||
/* 0x049C */ m3d::anmTexPat_c mAnmGoddessPat;
|
||||
/* 0x04C8 */ dScnCallback_c mScnCallback;
|
||||
/* 0x04D4 */ dShadowCircle_c mShadowCircle;
|
||||
/* 0x04DC */ LightParams mLightInfo;
|
||||
/* 0x04DC */ LIGHT_INFLUENCE mLightInfo;
|
||||
/* 0x04F8 */ dBgW mBgWs[2];
|
||||
/* 0x0918 */ dCcD_Linked_Unk mCcD1;
|
||||
/* 0x0B30 */ dCcD_Linked_Unk mCcD2;
|
||||
|
||||
@@ -0,0 +1,496 @@
|
||||
#ifndef D_LIGHT_ENV_H
|
||||
#define D_LIGHT_ENV_H
|
||||
|
||||
#include "common.h"
|
||||
#include "m/m_color.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "toBeSorted/tlist.h"
|
||||
|
||||
class ActorLighting {
|
||||
public:
|
||||
typedef TList<ActorLighting, 0> ListType;
|
||||
/* 0x00 */ TListNode<ActorLighting> mNode;
|
||||
static ListType sList;
|
||||
static void fn_80026500();
|
||||
static const mColor &getLightTev2Color();
|
||||
static const mColor &getLightTev1Color();
|
||||
static const mColor &getLightTev0Color();
|
||||
static const mColor &getLightTevKColor();
|
||||
|
||||
public:
|
||||
virtual ~ActorLighting();
|
||||
|
||||
void reset();
|
||||
|
||||
public:
|
||||
/* 0x0C */ f32 field_0x0C;
|
||||
/* 0x10 */ f32 field_0x10;
|
||||
/* 0x14 */ f32 field_0x14;
|
||||
/* 0x18 */ f32 field_0x18;
|
||||
/* 0x1C */ f32 field_0x1C;
|
||||
/* 0x20 */ f32 field_0x20;
|
||||
/* 0x24 */ f32 field_0x24;
|
||||
/* 0x28 */ f32 field_0x28;
|
||||
/* 0x2C */ f32 field_0x2C;
|
||||
/* 0x30 */ f32 field_0x30;
|
||||
/* 0x34 */ f32 field_0x34;
|
||||
/* 0x38 */ f32 field_0x38;
|
||||
/* 0x3C */ s32 mLightSetIdx;
|
||||
/* 0x40 */ mColor mTev0Color;
|
||||
/* 0x44 */ mColor mTev1Color;
|
||||
/* 0x48 */ mColor mTev2Color;
|
||||
/* 0x4C */ mColor mTevPrevColor;
|
||||
/* 0x50 */ mColor mTevK0Color;
|
||||
/* 0x54 */ mColor mTevK1Color;
|
||||
/* 0x58 */ mColor mTevK2Color;
|
||||
/* 0x5C */ mColor mTevK3Color;
|
||||
/* 0x60 */ u8 mLightingCode;
|
||||
/* 0x61 */ u8 field_0x61;
|
||||
/* 0x62 */ u8 field_0x62;
|
||||
/* 0x63 */ u8 field_0x63;
|
||||
/* 0x64 */ u8 field_0x64;
|
||||
/* 0x65 */ bool mUseTev0;
|
||||
/* 0x66 */ bool mUseTev1;
|
||||
/* 0x67 */ bool mUseTev2;
|
||||
/* 0x68 */ bool mUseTevPrev;
|
||||
/* 0x69 */ bool mUseTevK0;
|
||||
/* 0x6A */ bool mUseTevK1;
|
||||
/* 0x6B */ bool mUseTevK2;
|
||||
/* 0x6C */ bool mUseTevK3;
|
||||
};
|
||||
|
||||
struct LIGHT_INFLUENCE {
|
||||
void SetColor(mColor clr) {
|
||||
mClr = clr;
|
||||
}
|
||||
void SetScale(f32 scale) {
|
||||
mScale = scale;
|
||||
}
|
||||
void SetPosition(const mVec3_c &pos) {
|
||||
mPos.x = pos.x;
|
||||
mPos.y = pos.y;
|
||||
mPos.z = pos.z;
|
||||
}
|
||||
|
||||
/* 0x00 */ mVec3_c mPos;
|
||||
/* 0x0C */ mColor mClr;
|
||||
/* 0x10 */ f32 mScale;
|
||||
/* 0x14 */ s32 mIdx;
|
||||
/* 0x18 */ bool field_0x18;
|
||||
};
|
||||
|
||||
// This is a weird one - mColor / nw4r::ut::Color are assumed
|
||||
// to be 4-byte-aligned so that all the u32 type punning works
|
||||
// correctly, but field_0x1D5 is unaligned and uses a separate
|
||||
// assignment operator! So we'll go with a separate type for now.
|
||||
struct UnalignedColor {
|
||||
UnalignedColor &operator=(const mColor &color) {
|
||||
r = color.r;
|
||||
g = color.g;
|
||||
b = color.b;
|
||||
a = color.a;
|
||||
return *this;
|
||||
}
|
||||
u8 r, g, b, a;
|
||||
};
|
||||
|
||||
struct PaletteDefaultMCF {
|
||||
/* 0x00 */ mColor MA00_kColor3;
|
||||
/* 0x04 */ mColor MA01_tevReg1;
|
||||
/* 0x08 */ mColor MA01_kColor2;
|
||||
/* 0x0C */ mColor MA02_tevReg1;
|
||||
/* 0x10 */ mColor MA02_kColor2;
|
||||
/* 0x14 */ mColor MA03_kColor3;
|
||||
/* 0x18 */ mColor MA06_kColor3;
|
||||
/* 0x1C */ mColor field_0x1C;
|
||||
};
|
||||
|
||||
struct TwoPaletteDefaultMCF {
|
||||
/* 0x00 */ PaletteDefaultMCF field_0x00;
|
||||
/* 0x20 */ PaletteDefaultMCF field_0x20;
|
||||
};
|
||||
|
||||
struct ActorPalette {
|
||||
/* 0x000 */ mColor mAmbientClr;
|
||||
/* 0x004 */ mColor mDiffuseClr;
|
||||
/* 0x008 */ mColor mBrightnessClr;
|
||||
/* 0x00C */ mColor mSpecularClr;
|
||||
/* 0x010 */ mColor mDarkShadowClr;
|
||||
/* 0x014 */ mColor mDarkLightClr;
|
||||
/* 0x018 */ f32 mSpecular;
|
||||
/* 0x01C */ mColor field_0x01C;
|
||||
/* 0x020 */ f32 mTemperature; // -1 cool, 1 warm
|
||||
/* 0x024 */ f32 field_0x24;
|
||||
/* 0x028 */ mColor mShadowClr;
|
||||
/* 0x02C */ mColor field_0x02C;
|
||||
};
|
||||
|
||||
struct StagePalette {
|
||||
/* 0x000 */ f32 mBrightness;
|
||||
/* 0x004 */ mColor mShadowClr;
|
||||
/* 0x008 */ mColor mLightClr;
|
||||
/* 0x00C */ f32 mSunMoonAngle1;
|
||||
/* 0x010 */ f32 mSunMoonAngle2;
|
||||
|
||||
/* 0x014 */ mColor field_0x014;
|
||||
/* 0x018 */ u8 field_0x018[5];
|
||||
/* 0x020 */ mColor field_0x020[5];
|
||||
/* 0x034 */ f32 field_0x034[5];
|
||||
/* 0x048 */ f32 field_0x048[5];
|
||||
|
||||
/* 0x05C */ f32 field_0x05C;
|
||||
/* 0x060 */ mColor field_0x060;
|
||||
/* 0x064 */ u8 field_0x064[5];
|
||||
/* 0x06C */ mColor field_0x06C[5];
|
||||
/* 0x080 */ f32 field_0x080[5];
|
||||
/* 0x094 */ f32 field_0x094[5];
|
||||
|
||||
/* 0x0A8 */ f32 field_0x0A8;
|
||||
/* 0x0AC */ mColor field_0x0AC;
|
||||
/* 0x0B0 */ u8 field_0x0B0[5];
|
||||
/* 0x0B8 */ mColor field_0x0B8[5];
|
||||
/* 0x0CC */ f32 field_0x0CC[5];
|
||||
/* 0x0E0 */ f32 field_0x0E0[5];
|
||||
|
||||
/* 0x0F4 */ f32 field_0x0F4;
|
||||
/* 0x0F8 */ mColor field_0x0F8;
|
||||
/* 0x0FC */ u8 field_0x0FC[5];
|
||||
/* 0x104 */ mColor field_0x104[5];
|
||||
/* 0x118 */ f32 field_0x118[5];
|
||||
/* 0x12C */ f32 field_0x12C[5];
|
||||
};
|
||||
|
||||
struct SkyPalette {
|
||||
/* 0x000 */ mColor field_0x00;
|
||||
/* 0x004 */ mColor field_0x04;
|
||||
/* 0x008 */ mColor field_0x08;
|
||||
/* 0x00C */ mColor mCloudColor;
|
||||
/* 0x010 */ mColor mSkyColor;
|
||||
/* 0x014 */ mColor field_0x14;
|
||||
/* 0x018 */ mColor mSkyFilter;
|
||||
/* 0x01C */ mVec3_c mSkyCenter;
|
||||
/* 0x028 */ mVec3_c mSkyScale;
|
||||
};
|
||||
|
||||
struct SffSub {
|
||||
mColor field_0x00;
|
||||
f32 field_0x04;
|
||||
f32 field_0x08;
|
||||
};
|
||||
|
||||
struct SpfSubUnk0 {
|
||||
/* 0x00 */ SffSub field_0x00;
|
||||
/* 0x0C */ f32 field_0x0C[3];
|
||||
};
|
||||
|
||||
struct SpfSubUnk1 {
|
||||
/* 0x00 */ u8 field_0x00;
|
||||
/* 0x04 */ f32 field_0x04;
|
||||
/* 0x08 */ f32 field_0x08;
|
||||
/* 0x0C */ u8 field_0x0C;
|
||||
/* 0x10 */ f32 field_0x10;
|
||||
/* 0x14 */ f32 field_0x14;
|
||||
/* 0x18 */ u8 field_0x18;
|
||||
/* 0x19 */ UnalignedColor field_0x19; // Bloom Color
|
||||
/* 0x1D */ u8 field_0x1D;
|
||||
};
|
||||
|
||||
struct SpfSubUnk2 {
|
||||
/* 0x00 */ f32 field_0x00; // Blur Dist
|
||||
/* 0x04 */ f32 field_0x04; // Blur Diffuse
|
||||
/* 0x08 */ f32 field_0x08; // Softness Distance
|
||||
/* 0x0C */ f32 field_0x0C; // Softness diffuse
|
||||
/* 0x10 */ u8 field_0x10;
|
||||
/* 0x11 */ u8 field_0x11; // Turning this to not 0 disables effects
|
||||
/* 0x12 */ u16 field_0x12;
|
||||
/* 0x14 */ f32 field_0x14;
|
||||
/* 0x18 */ f32 field_0x18;
|
||||
/* 0x1C */ f32 field_0x1C; // Blur?
|
||||
/* 0x20 */ f32 field_0x20; // Fog? Shadow?
|
||||
};
|
||||
|
||||
// Broken up in a way to get the assignment operator to match.
|
||||
// Not 100% certain
|
||||
struct Spf {
|
||||
/* 0x000 */ ActorPalette mActorPalette;
|
||||
/* 0x030 */ StagePalette mStagePalette;
|
||||
/* 0x170 */ SkyPalette mSkyPalette;
|
||||
/* 0x1A4 */ SpfSubUnk0 field_0x1A4;
|
||||
/* 0x1BC */ SpfSubUnk1 field_0x1BC;
|
||||
/* 0x1DC */ SpfSubUnk2 field_0x1D4;
|
||||
/* 0x200 */ mColor mParticleTransparentClr;
|
||||
/* 0x204 */ mColor mParticleSolidClr;
|
||||
};
|
||||
|
||||
struct Sff {
|
||||
SffSub field_0x00[3];
|
||||
};
|
||||
|
||||
struct EFLIGHT_PROC {
|
||||
/* 0x00 */ u8 mState;
|
||||
/* 0x01 */ u8 mFrame;
|
||||
/* 0x04 */ int mLightType;
|
||||
/* 0x08 */ LIGHT_INFLUENCE field_0x8;
|
||||
};
|
||||
|
||||
// Deals with the direction wind particles go?
|
||||
struct WIND_INFLUENCE {
|
||||
/* 0x00 */ mVec3_c mVel;
|
||||
/* 0x0C */ f32 field_0x0C;
|
||||
/* 0x10 */ f32 field_0x10;
|
||||
};
|
||||
|
||||
struct PaletteEAF_smol_entry {
|
||||
mColor field_0x00;
|
||||
mColor field_0x04;
|
||||
mColor field_0x08;
|
||||
mColor field_0x0C;
|
||||
};
|
||||
|
||||
struct PaletteEAF_smol {
|
||||
PaletteEAF_smol_entry field_0x00[8];
|
||||
};
|
||||
|
||||
struct PaletteEAF_big_entry {
|
||||
mColor field_0x00;
|
||||
mColor field_0x04;
|
||||
mColor field_0x08;
|
||||
mColor field_0x0C;
|
||||
u8 field_0x10;
|
||||
};
|
||||
|
||||
struct PaletteEAF_big {
|
||||
/* 0x00 */ PaletteEAF_big_entry field_0x00[8];
|
||||
};
|
||||
|
||||
// Apparently particle color related
|
||||
struct Bpm3 {
|
||||
/* 0x00 */ PaletteEAF_smol field_0x00[0x20];
|
||||
};
|
||||
|
||||
struct Bpm4 {
|
||||
/* 0x00 */ PaletteEAF_big field_0x00[0x20];
|
||||
};
|
||||
|
||||
struct SHADOW_INFLUENCE {
|
||||
/* 0x00 */ mVec3_c mPos;
|
||||
/* 0x0C */ f32 mRadius;
|
||||
/* 0x10 */ s16 mIdx;
|
||||
};
|
||||
struct Bpm8 {
|
||||
/* 0x00 */ mVec3_c mPos;
|
||||
/* 0x0C */ f32 mRadius;
|
||||
/* 0x10 */ s32 field_0x10;
|
||||
};
|
||||
|
||||
struct Bpm9 {
|
||||
/* 0x00 */ bool field_0x00;
|
||||
/* 0x04 */ mVec3_c mPos;
|
||||
/* 0x10 */ f32 mRadius;
|
||||
};
|
||||
|
||||
struct Mist {
|
||||
/* 0x00 */ u8 mMode;
|
||||
/* 0x01 */ u8 mDecay;
|
||||
/* 0x02 */ u8 mAlpha;
|
||||
/* 0x04 */ f32 mDirection;
|
||||
/* 0x08 */ f32 mSpeed;
|
||||
};
|
||||
|
||||
struct SpfSetting {
|
||||
s16 mIdxStart;
|
||||
s16 mIdxEnd;
|
||||
f32 mRatio;
|
||||
};
|
||||
|
||||
struct SpfTransitionSetting {
|
||||
s16 mIdxBefore;
|
||||
s16 mIdxAfter;
|
||||
s32 mNumFrames;
|
||||
};
|
||||
|
||||
class dLightEnv_c {
|
||||
public:
|
||||
dLightEnv_c();
|
||||
virtual ~dLightEnv_c();
|
||||
|
||||
static dLightEnv_c &GetInstance() {
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
static dLightEnv_c *GetPInstance() {
|
||||
return sPInstance;
|
||||
}
|
||||
|
||||
void get_vectle_calc(const mVec3_c *, const mVec3_c *, mVec3_c *);
|
||||
void sphere_to_cartesian(f32 ang_y, f32 ang_xz, mVec3_c *);
|
||||
|
||||
void efplight_set(LIGHT_INFLUENCE *pLightInfo);
|
||||
void efplight_cut(LIGHT_INFLUENCE *pLightInfo);
|
||||
LIGHT_INFLUENCE *eflight_influence(const mVec3_c *);
|
||||
|
||||
// Name is guess based on closest func in tp
|
||||
void SordFlush_set(const mVec3_c *pPos, s32 lightType);
|
||||
|
||||
void plight_set(LIGHT_INFLUENCE *pLightInfo);
|
||||
void plight_cut(LIGHT_INFLUENCE *pLightInfo);
|
||||
LIGHT_INFLUENCE *light_influence(const mVec3_c *, bool param2);
|
||||
LIGHT_INFLUENCE *light_influence2(const mVec3_c *, bool param2);
|
||||
|
||||
void shadow_set(SHADOW_INFLUENCE *pShadowInfo);
|
||||
void shadow_cut(SHADOW_INFLUENCE *pShadowInfo);
|
||||
SHADOW_INFLUENCE *shadow_influence(const mVec3_c *);
|
||||
|
||||
void setLightFilter(f32 ratio);
|
||||
void set0x35B0(f32 f);
|
||||
|
||||
// Params are guesses
|
||||
void setBPM8(const mVec3_c *pos, u32 type, f32 radius);
|
||||
void setBPM8_Type4(const mVec3_c *pos);
|
||||
void setBPM8_Type6(const mVec3_c *pos);
|
||||
void setBPM8_Type10(const mVec3_c *pos);
|
||||
void setBPM8_Type10_2(const mVec3_c *pos);
|
||||
void setBPM8_Type6_2(const mVec3_c *pos);
|
||||
bool check_BPM8(const mVec3_c *pos, mVec3_c *pOutPos);
|
||||
bool check_BPM8_1001(const mVec3_c *pos, mVec3_c *pOutPos);
|
||||
bool check_BPM8_501(const mVec3_c *pos, mVec3_c *pOutPos);
|
||||
|
||||
bool setUnk(const mVec3_c *pos, f32 radius);
|
||||
void setBPM9(const mVec3_c *pos, f32 radius);
|
||||
bool check_BPM9(const mVec3_c *pos);
|
||||
|
||||
s32 checkBPM9_Entity(mVec3_c *pOutPos);
|
||||
|
||||
void setAlternateRoomId(s32 roomId);
|
||||
s32 getAlterateRoomId();
|
||||
|
||||
mColor color_ratio_set(const mColor &start, const mColor &end, f32 ratio);
|
||||
mVec3_c vec_ratio_set(const mVec3_c &start, const mVec3_c &end, f32 ratio);
|
||||
f32 f32_ratio_set(const f32 start, const f32 end, f32 ratio);
|
||||
u16 u16_ratio_set(const u16 start, const u16 end, f32 ratio);
|
||||
u8 u8_ratio_set(const u8 start, const u8 end, f32 ratio);
|
||||
|
||||
void spf_ratio_set(Spf &out, const Spf &start, const Spf &end, f32 ratio);
|
||||
void light_influence_ratio_set(
|
||||
LIGHT_INFLUENCE &out, const LIGHT_INFLUENCE &start, const LIGHT_INFLUENCE &end, f32 ratio
|
||||
);
|
||||
void sff_ratio_set(Sff &out, const Sff &start, const Sff &end, f32 ratio);
|
||||
|
||||
void set_override_spf(s16 start, s16 end, f32 ratio);
|
||||
|
||||
void setMist(u8 mode, u8 decay, u8 alpha, f32 dir, f32 speed);
|
||||
void setMistMode3(const mVec3_c &vel, f32 value);
|
||||
|
||||
void setDOF(f32 dof);
|
||||
void disableDOF();
|
||||
|
||||
void setWind(mVec3_c mPos, f32 f);
|
||||
|
||||
void setField_0x2F20(f32 arg) {
|
||||
field_0x2F20 = arg;
|
||||
}
|
||||
|
||||
void set_palette_transition(s16 before, s16 after, s32 numFrames);
|
||||
|
||||
// All related
|
||||
void fn_80024740(u8, u8);
|
||||
bool fn_80024770(u8);
|
||||
bool fn_800247A0(u8);
|
||||
|
||||
u8 get0x2DE8() const {
|
||||
return field_0x2DE8[0];
|
||||
}
|
||||
|
||||
const PaletteDefaultMCF &GetCurrentDefaultMcf() const {
|
||||
return field_0x5CE4;
|
||||
}
|
||||
|
||||
const Spf &GetCurrentSpf() const {
|
||||
return currentSpf;
|
||||
}
|
||||
|
||||
const PaletteEAF_smol_entry &getSmallEAF(s32 idx1, s32 idx2) {
|
||||
return field_0x38E4.field_0x00[idx1].field_0x00[idx2];
|
||||
}
|
||||
|
||||
f32 getfield_0x2F14() const {
|
||||
return field_0x2F14;
|
||||
}
|
||||
|
||||
f32 getfield_0x2F18() const {
|
||||
return field_0x2F18;
|
||||
}
|
||||
|
||||
f32 getfield_0x2F1C() const {
|
||||
return field_0x2F1C;
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x0004 */ Spf currentSpf;
|
||||
/* 0x020C */ Spf spfs[20];
|
||||
/* 0x2AAC */ Sff currentSff;
|
||||
/* 0x2AD0 */ Sff sffs[20];
|
||||
/* 0x2DA0 */ SpfSetting mCurrentSpfSetting;
|
||||
/* 0x2DA8 */ u8 field_0x2DA8[0x2DB4 - 0x2DA8];
|
||||
/* 0x2DB4 */ SpfTransitionSetting mTransitionSpfSetting;
|
||||
/* 0x2DBC */ u8 field_0x2DBC[0x2DC0 - 0x2DBC];
|
||||
/* 0x2DC0 */ SpfSetting mOverrideSpfSetting;
|
||||
/* 0x2DC8 */ Mist mMistInfo;
|
||||
/* 0x2DD4 */ mVec3_c mMistPos;
|
||||
/* 0x2DE0 */ bool mDofEnabled;
|
||||
/* 0x2DE4 */ f32 mDof;
|
||||
/* 0x2DE8 */ u8 field_0x2DE8[0x2DEC - 0x2DE8];
|
||||
/* 0x2DEC */ mColor field_0x2DEC;
|
||||
/* 0x2DF0 */ u8 field_0x2DF0[0x2DF4 - 0x2DF0];
|
||||
/* 0x2DF4 */ mColor field_0x2DF4;
|
||||
/* 0x2DF8 */ mVec3_c field_0x2DF8;
|
||||
/* 0x2E04 */ u8 field_0x2E04[0x2E08 - 0x2E04];
|
||||
/* 0x2E08 */ mVec3_c field_0x2E08[5];
|
||||
/* 0x2E44 */ mVec3_c field_0x2E44[5];
|
||||
/* 0x2E80 */ mVec3_c field_0x2E80[5];
|
||||
/* 0x2EBC */ mVec3_c field_0x2EBC[5];
|
||||
/* 0x2EF8 */ mColor field_0x2EF8;
|
||||
/* 0x2EFC */ mColor field_0x2EFC;
|
||||
/* 0x2F00 */ mVec3_c field_0x2F00;
|
||||
/* 0x2F0C */ s16 field_0x2F0C;
|
||||
/* 0x2F0E */ s16 field_0x2F0E;
|
||||
/* 0x2F10 */ u8 field_0x2F10;
|
||||
/* 0x2F14 */ f32 field_0x2F14;
|
||||
/* 0x2F18 */ f32 field_0x2F18;
|
||||
/* 0x2F1C */ f32 field_0x2F1C;
|
||||
/* 0x2F20 */ f32 field_0x2F20;
|
||||
/* 0x2F24 */ u8 field_0x2F24[4];
|
||||
/* 0x2F28 */ LIGHT_INFLUENCE *efplight[5];
|
||||
/* 0x2F3C */ LIGHT_INFLUENCE *pointlight[200];
|
||||
/* 0x325C */ SHADOW_INFLUENCE *pshadow[200];
|
||||
/* 0x357C */ EFLIGHT_PROC eflight;
|
||||
/* 0x35A0 */ WIND_INFLUENCE mWind;
|
||||
/* 0x35B4 */ SHADOW_INFLUENCE field_0x35B4[8];
|
||||
/* 0x3654 */ Bpm8 field_0x3654[10];
|
||||
/* 0x371C */ Bpm9 field_0x371C[20];
|
||||
/* 0x387C */ u32 field_0x387C;
|
||||
/* 0x38B0 */ bool field_0x38B0;
|
||||
/* 0x38B4 */ mVec3_c field_0x38B4;
|
||||
/* 0x38C0 */ f32 field_0x38C0;
|
||||
/* 0x38C4 */ s32 field_0x38C4;
|
||||
/* 0x38C8 */ mVec3_c field_0x38C8;
|
||||
/* 0x38D4 */ u32 mPlayerRoomId;
|
||||
/* 0x38D8 */ s32 mAlternateRoomId;
|
||||
/* 0x38D8 */ u32 field_0x38DC;
|
||||
/* 0x38D8 */ s32 field_0x38E0;
|
||||
/* 0x38E4 */ Bpm3 field_0x38E4;
|
||||
/* 0x48E4 */ Bpm4 field_0x48E4;
|
||||
/* 0x5CE4 */ PaletteDefaultMCF field_0x5CE4;
|
||||
/* 0x5D04 */ TwoPaletteDefaultMCF field_0x5D04;
|
||||
/* 0x5D44 */ u8 field_0x5D44[0x5D59 - 0x5D44];
|
||||
/* 0x5D59 */ struct { // Anonymous until more is known
|
||||
bool mEnabled;
|
||||
u8 mValue;
|
||||
} field_0x5D59[9];
|
||||
/* 0x5D6C */ u8 field_0x5D6C[0x5D70 - 0x5D6C];
|
||||
|
||||
static dLightEnv_c sInstance;
|
||||
static dLightEnv_c *sPInstance;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,51 @@
|
||||
#ifndef D_OBJ_LIGHT_H
|
||||
#define D_OBJ_LIGHT_H
|
||||
|
||||
#include "d/d_base.h"
|
||||
#include "f/f_base.h"
|
||||
#include "m/m_color.h"
|
||||
#include "toBeSorted/d_emitter.h"
|
||||
|
||||
struct UnkLightThing /* : Inheritance Chain TODO */ {
|
||||
UnkLightThing();
|
||||
virtual ~UnkLightThing();
|
||||
|
||||
/* 0x04 */ u8 _0x04[0x40 - 0x04];
|
||||
};
|
||||
class dObjLight_c : public dBase_c {
|
||||
public:
|
||||
dObjLight_c();
|
||||
|
||||
virtual ~dObjLight_c() {}
|
||||
virtual int create() override;
|
||||
virtual int doDelete() override;
|
||||
virtual int execute() override;
|
||||
virtual int draw() override;
|
||||
|
||||
public:
|
||||
static bool CreateInstance();
|
||||
static dObjLight_c *GetInstance();
|
||||
|
||||
mColor &GetColor0x68();
|
||||
mColor &GetColor0x6C();
|
||||
mColor &GetColor0x100();
|
||||
mColor &GetColor0x104();
|
||||
|
||||
private:
|
||||
/* 0x068 */ mColor field_0x68[1][3];
|
||||
/* 0x074 */ EffectsStruct mEff;
|
||||
/* 0x0A8 */ u8 _0xA8[0xB4 - 0xA8];
|
||||
/* 0x0B4 */ mColor field_0xB4;
|
||||
/* 0x0B8 */ u8 _0xB8[0xD0 - 0xB8];
|
||||
/* 0x0D0 */ mColor field_0xD0;
|
||||
/* 0x0D4 */ u8 _0xD4[0x100 - 0xD4];
|
||||
/* 0x100 */ mColor field_0x100;
|
||||
/* 0x104 */ mColor field_0x104;
|
||||
/* 0x108 */ u8 _0x108[0x10C - 0x108];
|
||||
/* 0x10C */ UnkLightThing field_0x10C[8];
|
||||
|
||||
private:
|
||||
static dObjLight_c sInstance;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -35,6 +35,10 @@ public:
|
||||
|
||||
u16 getUncommittedValue_Priv(u16 flag) const;
|
||||
|
||||
u32 checkFlagValid(u16 counterIdx) const {
|
||||
return mpFlagIndex->checkFlagValid(counterIdx, mFlagCount);
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
void setFlagSizes(u16 flagCount, u16 flagSizeBytes);
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
#ifndef D_SND_ACTOR_H
|
||||
#define D_SND_ACTOR_H
|
||||
|
||||
#include "common.h"
|
||||
#include "d/snd/d_snd_misc.h"
|
||||
#include "nw4r/math/math_types.h"
|
||||
#include "nw4r/snd/snd_Sound3DActor.h"
|
||||
|
||||
class dSnd3DActor_c : public nw4r::snd::Sound3DActor {
|
||||
public:
|
||||
dSnd3DActor_c(dSndSourceParam *pSourceParam, u8 sourceType);
|
||||
|
||||
virtual ~dSnd3DActor_c() {}
|
||||
|
||||
virtual bool d_vt_0x30() {
|
||||
return true;
|
||||
}
|
||||
|
||||
virtual void d_vt_0x34(const nw4r::math::VEC3 &);
|
||||
|
||||
virtual void d_vt_0x38(bool flag, int fadeFrames) = 0;
|
||||
|
||||
virtual UNKWORD d_vt_0x3C() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
virtual UNKWORD d_vt_0x40() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
virtual UNKWORD d_vt_0x44() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
virtual const nw4r::math::VEC3 &getPositionRelativeToPlayer();
|
||||
virtual f32 getDistanceToPlayer(); // vt 0x4C
|
||||
virtual void updatePositionRelativeToPlayer(); // vt 0x50
|
||||
virtual void updateDistanceToPlayer(); // vt 0x54
|
||||
virtual void d_vt_0x58() = 0;
|
||||
virtual void d_vt_0x5C() = 0;
|
||||
|
||||
void resetCachedRelativePositions();
|
||||
|
||||
void updatePositionTransformedByListener();
|
||||
void updateCameraDirectionDot();
|
||||
void updatePositionRelativeToCameraTarget();
|
||||
void calculatePositionRelativeToCameraTarget();
|
||||
void updateDistanceToCameraTarget();
|
||||
void calculatePositionRelativeToListener();
|
||||
void updatePositionRelativeToListener();
|
||||
void updateDistanceToListener();
|
||||
|
||||
bool checkFlag(u16 flag) const {
|
||||
return (mFlags & flag);
|
||||
}
|
||||
|
||||
void setFlag(u16 flag) {
|
||||
mFlags |= flag;
|
||||
}
|
||||
|
||||
f32 getDistanceToListener() {
|
||||
updateDistanceToListener();
|
||||
return mDistanceToListener;
|
||||
}
|
||||
|
||||
bool hasPlayingSounds() const;
|
||||
bool isPlayingSound(u32 id);
|
||||
|
||||
const char *soundIdToSoundLabel(u32 soundId) const;
|
||||
u32 soundLabelToSoundId(const char *soundLabel) const;
|
||||
|
||||
protected:
|
||||
// a_ prefix to prevent multiple inheritance clashes
|
||||
/* 0x7D */ u8 a_field_0x7D;
|
||||
/* 0x7E */ u8 a_field_0x7E;
|
||||
/* 0x7F */ u8 a_field_0x7F;
|
||||
/* 0x80 */ u8 a_field_0x80;
|
||||
/* 0x84 */ f32 a_field_0x84;
|
||||
/* 0x88 */ f32 a_field_0x88;
|
||||
/* 0x8C */ f32 a_field_0x8C;
|
||||
/* 0x90 */ f32 a_field_0x90;
|
||||
/* 0x94 */ f32 mDistanceToListener;
|
||||
/* 0x98 */ f32 mCameraDirectionDot;
|
||||
/* 0x9C */ f32 a_field_0x9C;
|
||||
/* 0xA0 */ nw4r::math::VEC3 mPositionRelativeToListener;
|
||||
/* 0xAC */ nw4r::math::VEC3 mPositionTransformedByListener;
|
||||
/* 0xB8 */ f32 mDistanceToCameraTarget;
|
||||
/* 0xBC */ nw4r::math::VEC3 mPositionRelativeToCameraTarget;
|
||||
/* 0xC8 */ dSndSourceParam *mpSourceParam;
|
||||
/* 0xCC */ u16 mFlags;
|
||||
/* 0xD0 */ nw4r::math::VEC3 mPositionRelativeToPlayer;
|
||||
/* 0xDC */ f32 mDistanceToPlayer;
|
||||
/* 0xE0 */ f32 a_field_0xE0;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,18 @@
|
||||
#ifndef D_SND_3D_ENGINE
|
||||
#define D_SND_3D_ENGINE
|
||||
|
||||
#include "nw4r/snd/snd_BasicSound.h"
|
||||
#include "nw4r/snd/snd_Sound3DEngine.h"
|
||||
#include "nw4r/snd/snd_Sound3DManager.h"
|
||||
|
||||
class dSnd3DEngine_c : public nw4r::snd::Sound3DEngine {
|
||||
public:
|
||||
dSnd3DEngine_c();
|
||||
|
||||
virtual void UpdateAmbientParam(
|
||||
const nw4r::snd::Sound3DManager *mgr, const nw4r::snd::Sound3DParam *param3d, u32 unk, u32 flags,
|
||||
nw4r::snd::SoundAmbientParam *paramAmb
|
||||
) override;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,63 @@
|
||||
#ifndef D_SND_3D_MANAGER_H
|
||||
#define D_SND_3D_MANAGER_H
|
||||
|
||||
#include "d/snd/d_snd_3d_engine.h"
|
||||
#include "d/snd/d_snd_util.h"
|
||||
#include "egg/gfx/eggCamera.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "nw4r/math/math_types.h"
|
||||
#include "nw4r/snd/snd_Sound3DListener.h"
|
||||
#include "nw4r/snd/snd_Sound3DManager.h"
|
||||
|
||||
SND_DISPOSER_FORWARD_DECL(dSnd3DManager_c);
|
||||
|
||||
class dSnd3DManager_c {
|
||||
SND_DISPOSER_MEMBERS(dSnd3DManager_c);
|
||||
|
||||
public:
|
||||
dSnd3DManager_c();
|
||||
|
||||
void setup();
|
||||
void updateFromCamera(EGG::LookAtCamera &camera);
|
||||
void setCamDistance(f32 value);
|
||||
void resetCamDistance();
|
||||
void calc();
|
||||
void clearState();
|
||||
|
||||
nw4r::snd::Sound3DManager &getManager() {
|
||||
return mManager;
|
||||
}
|
||||
|
||||
const mVec3_c &getCameraTargetPos() const {
|
||||
return mCameraTargetPosition;
|
||||
}
|
||||
|
||||
const mVec3_c &getNrmCameraDirection() const {
|
||||
return mCameraDirectionNormalized;
|
||||
}
|
||||
|
||||
const nw4r::math::VEC3 &getSndListenerPos() const {
|
||||
return mListener.GetPosition();
|
||||
}
|
||||
|
||||
const nw4r::math::MTX34 &getSndListenerMatrix() const {
|
||||
return mListener.GetMatrix();
|
||||
}
|
||||
|
||||
private:
|
||||
void updateListenerPos(f32);
|
||||
/* 0x010 */ bool mIsSetup;
|
||||
/* 0x011 */ bool mCalculationsFresh;
|
||||
/* 0x014 */ dSnd3DEngine_c *mpEngine;
|
||||
/* 0x018 */ nw4r::snd::Sound3DManager mManager;
|
||||
/* 0x044 */ nw4r::snd::Sound3DListener mListener;
|
||||
/* 0xB0 */ EGG::LookAtCamera mCamera;
|
||||
/* 0x138 */ mVec3_c mCameraDirectionNormalized;
|
||||
/* 0x144 */ mVec3_c mCameraTargetPosition;
|
||||
/* 0x150 */ f32 mCameraPosSqVelocity;
|
||||
/* 0x154 */ f32 mCameraAtSqVelocity;
|
||||
/* 0x158 */ f32 mCamDistance;
|
||||
/* 0x15C */ s16 mTimer;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,14 @@
|
||||
#ifndef D_SND_3D_ACTOR_H
|
||||
#define D_SND_3D_ACTOR_H
|
||||
|
||||
#include "nw4r/snd/snd_SoundActor.h"
|
||||
|
||||
class dSndActor_c : public nw4r::snd::SoundActor {
|
||||
public:
|
||||
dSndActor_c(nw4r::snd::SoundArchivePlayer &rPlayer);
|
||||
|
||||
private:
|
||||
void doesSomethingWithForeachSound();
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,38 @@
|
||||
#ifndef D_SND_AREA_SOUND_H
|
||||
#define D_SND_AREA_SOUND_H
|
||||
|
||||
#include "common.h"
|
||||
#include "d/snd/d_snd_sound.h"
|
||||
|
||||
/** A sound class used for dSndAreaSoundEffectMgr */
|
||||
class dSndAreaSound_c : public dSndSound_c {
|
||||
public:
|
||||
dSndAreaSound_c();
|
||||
|
||||
virtual void cancel() override; // 0x08
|
||||
virtual void calc() override; // 0x0C
|
||||
virtual void fadeIn(u32 id, s32 fadeFrames) override; // 0x10
|
||||
|
||||
virtual void initCallback(u32 id); // 0x28
|
||||
|
||||
typedef void (*Callback)(dSndAreaSound_c &sound);
|
||||
|
||||
using dSndSound_c::pause;
|
||||
|
||||
void pause(s32 fadeFrames);
|
||||
void unpause(s32 fadeFrames);
|
||||
|
||||
private:
|
||||
bool isFadingOut() const {
|
||||
return mIsFadingOut && IsAttachedSound();
|
||||
}
|
||||
|
||||
/* 0x0F0 */ bool field_0xF0;
|
||||
/* 0x0F4 */ Callback mpCalcCallback;
|
||||
/* 0x0F8 */ UNKWORD field_0xF8;
|
||||
/* 0x0FC */ UNKWORD field_0xFC;
|
||||
/* 0x100 */ UNKWORD field_0x100;
|
||||
/* 0x104 */ UNKWORD field_0x104;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,39 @@
|
||||
#ifndef D_SND_AREA_SOUND_EFFECT_MGR_H
|
||||
#define D_SND_AREA_SOUND_EFFECT_MGR_H
|
||||
|
||||
#include "common.h"
|
||||
#include "d/snd/d_snd_actor.h"
|
||||
#include "d/snd/d_snd_area_sound.h"
|
||||
#include "d/snd/d_snd_util.h"
|
||||
|
||||
SND_DISPOSER_FORWARD_DECL(dSndAreaSoundEffectMgr_c);
|
||||
|
||||
/**
|
||||
* A singleton sound actor for playing persistent environmental background
|
||||
* sound effects. Turn this off and the Faron birds will stop singing.
|
||||
*
|
||||
* Plays sounds like SE_A_F100 (hence the name, not sure if it's the real meaning).
|
||||
*/
|
||||
class dSndAreaSoundEffectMgr_c {
|
||||
SND_DISPOSER_MEMBERS(dSndAreaSoundEffectMgr_c)
|
||||
|
||||
public:
|
||||
dSndAreaSoundEffectMgr_c();
|
||||
|
||||
bool startSound(u32 soundId, u32 handleIdx);
|
||||
void calc();
|
||||
void stopSounds(s32 fadeFrames);
|
||||
|
||||
private:
|
||||
bool isPlayingAnySound() const;
|
||||
bool isPlayingSound(u32 soundId) const;
|
||||
|
||||
/* 0x010 */ dSndAreaSound_c mSounds[3];
|
||||
/* 0x328 */ UNKWORD field_0x328;
|
||||
/* 0x32C */ f32 field_0x32C;
|
||||
/* 0x330 */ f32 field_0x330;
|
||||
/* 0x334 */ dSndActor_c mActor;
|
||||
/* 0x388 */ f32 field_0x388;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,10 @@
|
||||
#ifndef D_SND_CALC_PITCH_H
|
||||
#define D_SND_CALC_PITCH_H
|
||||
|
||||
#include "common.h"
|
||||
|
||||
f32 pitchScaleForPitchIdx(s32 idx);
|
||||
f32 pitchScaleForPitchIdxTenths(f32 idx);
|
||||
f32 pitchIdxTenthsForPitchScale(f32 scale);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,107 @@
|
||||
#ifndef D_SND_CHECKERS_H
|
||||
#define D_SND_CHECKERS_H
|
||||
|
||||
#include "nw4r/snd/snd_SoundHandle.h"
|
||||
#include "toBeSorted/music_mgrs.h"
|
||||
|
||||
class SoundPropertiesChecker {
|
||||
public:
|
||||
virtual void operator()(nw4r::snd::SoundHandle &pHandle) {
|
||||
if (mSoundId != -1 && mSoundId != pHandle.GetId()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (mpPlayCounter != nullptr) {
|
||||
(*mpPlayCounter)++;
|
||||
} else {
|
||||
mPlayCounter++;
|
||||
}
|
||||
|
||||
if (pHandle.IsPause()) {
|
||||
if (mpPauseCounter != nullptr) {
|
||||
(*mpPauseCounter)++;
|
||||
} else {
|
||||
mPauseCounter++;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (fn_803721F0(FANFARE_SOUND_MGR, pHandle.GetId())) {
|
||||
if (mpCounter3 != nullptr) {
|
||||
(*mpCounter3)++;
|
||||
} else {
|
||||
mCounter3++;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (fn_803720E0(FANFARE_SOUND_MGR, pHandle.GetId())) {
|
||||
if (mpCounter3 != nullptr) {
|
||||
(*mpCounter3)++;
|
||||
} else {
|
||||
mCounter3++;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (fn_80372070(FANFARE_SOUND_MGR, pHandle.GetId())) {
|
||||
if (mpCounter4 != nullptr) {
|
||||
(*mpCounter4)++;
|
||||
} else {
|
||||
mCounter4++;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (fn_803734C0(FANFARE_SOUND_MGR, pHandle.GetId()) && !fn_80373550(FANFARE_SOUND_MGR, pHandle.GetId())) {
|
||||
mCounter3++;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x04 */ u32 mSoundId;
|
||||
/* 0x08 */ u32 mPlayCounter;
|
||||
/* 0x0C */ u32 mPauseCounter;
|
||||
/* 0x10 */ u32 mCounter3;
|
||||
/* 0x14 */ u32 mCounter4;
|
||||
/* 0x18 */ u32 *mpPlayCounter;
|
||||
/* 0x1C */ u32 *mpPauseCounter;
|
||||
/* 0x20 */ u32 *mpCounter3;
|
||||
/* 0x24 */ u32 *mpCounter4;
|
||||
};
|
||||
|
||||
|
||||
// used at the very least when trying to finish Demise
|
||||
class IsCurrentSoundIdChecker {
|
||||
public:
|
||||
IsCurrentSoundIdChecker(u32 id, bool *pResult) : mSoundId(id), mpResult(pResult) {}
|
||||
~IsCurrentSoundIdChecker() {}
|
||||
|
||||
virtual void operator()(nw4r::snd::SoundHandle &pHandle) {
|
||||
if (mSoundId == pHandle.GetId()) {
|
||||
*mpResult = true;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x04 */ u32 mSoundId;
|
||||
/* 0x08 */ bool *mpResult;
|
||||
};
|
||||
|
||||
class SoundStopper {
|
||||
public:
|
||||
SoundStopper(u32 id, s32 fadeFrames) : mSoundId(id), mFadeFrames(fadeFrames) {}
|
||||
~SoundStopper() {}
|
||||
|
||||
virtual void operator()(nw4r::snd::SoundHandle &pHandle) {
|
||||
if (mSoundId == pHandle.GetId()) {
|
||||
pHandle.Stop(mFadeFrames);
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x04 */ u32 mSoundId;
|
||||
/* 0x08 */ s32 mFadeFrames;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,53 @@
|
||||
#ifndef D_SND_CONTROL_PLAYER_H
|
||||
#define D_SND_CONTROL_PLAYER_H
|
||||
|
||||
#include "d/snd/d_snd_sound.h"
|
||||
#include "nw4r/snd/snd_SoundPlayer.h"
|
||||
|
||||
class dSndControlPlayer_c : public dSndControl_c {
|
||||
public:
|
||||
dSndControlPlayer_c(f32 value, f32 min, f32 max) : dSndControl_c(value, min, max) {}
|
||||
virtual void reset() override; // vt 0x0C
|
||||
|
||||
virtual void stop() override; // vt 0x18
|
||||
virtual void apply() = 0; // vt 0x1C
|
||||
virtual f32 getAppliedValue() = 0; // vt 0x20
|
||||
|
||||
void setIndex1(u32 idx);
|
||||
void setIndex2(u32 idx);
|
||||
|
||||
protected:
|
||||
/* 0x30 */ nw4r::snd::SoundPlayer *mpPlayer;
|
||||
/* 0x34 */ u32 mIndex;
|
||||
};
|
||||
|
||||
class dSndControlPlayerVolumeBase_c : public dSndControlPlayer_c {
|
||||
public:
|
||||
dSndControlPlayerVolumeBase_c();
|
||||
};
|
||||
|
||||
class dSndControlPlayerVolume_c : public dSndControlPlayerVolumeBase_c {
|
||||
public:
|
||||
dSndControlPlayerVolume_c() {}
|
||||
|
||||
virtual void apply() override; // vt 0x1C
|
||||
virtual f32 getAppliedValue() override; // vt 0x20
|
||||
};
|
||||
|
||||
class dSndControlPlayerLpfFreq_c : public dSndControlPlayer_c {
|
||||
public:
|
||||
dSndControlPlayerLpfFreq_c() : dSndControlPlayer_c(0.0f, -1.0f, 0.0f) {}
|
||||
|
||||
virtual void apply() override; // vt 0x1C
|
||||
virtual f32 getAppliedValue() override; // vt 0x20
|
||||
};
|
||||
|
||||
class dSndControlPlayerFxSend_c : public dSndControlPlayer_c {
|
||||
public:
|
||||
dSndControlPlayerFxSend_c() : dSndControlPlayer_c(0.0f, 0.0f, 1.0f) {}
|
||||
|
||||
virtual void apply() override; // vt 0x1C
|
||||
virtual f32 getAppliedValue() override; // vt 0x20
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,95 @@
|
||||
#ifndef D_SND_CONTROL_PLAYER_MGR_H
|
||||
#define D_SND_CONTROL_PLAYER_MGR_H
|
||||
|
||||
#include "d/snd/d_snd_control_player.h"
|
||||
#include "d/snd/d_snd_util.h"
|
||||
#include "nw4r/snd/snd_SoundPlayer.h"
|
||||
#include "nw4r/ut/ut_list.h"
|
||||
|
||||
SND_DISPOSER_FORWARD_DECL(dSndControlPlayerMgr_c);
|
||||
|
||||
class dSndControlPlayerMgr_c {
|
||||
SND_DISPOSER_MEMBERS(dSndControlPlayerMgr_c);
|
||||
|
||||
public:
|
||||
enum PlayerCtrl_e {
|
||||
CTRL_VOLUME = 0,
|
||||
CTRL_LPF_FREQ = 1,
|
||||
CTRL_FX_SEND = 2,
|
||||
|
||||
CTRL_MAX = 3,
|
||||
};
|
||||
|
||||
dSndControlPlayerMgr_c();
|
||||
|
||||
void calc();
|
||||
|
||||
static const s32 sNumPlayers;
|
||||
static const s32 sPlayerMax;
|
||||
|
||||
nw4r::snd::SoundPlayer *getPlayer1(u32) const;
|
||||
nw4r::snd::SoundPlayer *getPlayer2(u32) const;
|
||||
|
||||
void setVolume(u32 playerIdx, f32 value, s32 frames);
|
||||
|
||||
void setLpfFreq(u32 playerIdx, f32 value, s32 frames);
|
||||
void setFxSend(u32 playerIdx, f32 value, s32 frames);
|
||||
|
||||
void overrideVolume(u32 playerIdx, f32 volume, s32 frames);
|
||||
void restoreVolume(u32 playerIdx, s32 frames);
|
||||
|
||||
void muteAllWorldSounds(s32 fadeFrames);
|
||||
void unmuteAllWorldSounds(s32 fadeFrames);
|
||||
|
||||
enum MuteLevel {
|
||||
MUTE_FULL = 0,
|
||||
MUTE_PARTIAL = 1,
|
||||
|
||||
MUTE_MAX = 2,
|
||||
};
|
||||
|
||||
enum VolumeControlGroup {
|
||||
/** PLAYER_BGM, PLAYER_BGM_BOSS */
|
||||
CTRL_GROUP_BGM = 0,
|
||||
/** PLAYER_TG_SOUND - PLAYER_AREA_IN_WATER_LV */
|
||||
CTRL_GROUP_STAGE_EFFECTS = 1,
|
||||
/** PLAYER_ENEMY - PLAYER_ENEMY_FOOTSTEP */
|
||||
CTRL_GROUP_ENEMY = 2,
|
||||
/* PLAYER_OBJECT_1 - PLAYER_TG_SOUND, but not PLAYER_NPC_VOICE */
|
||||
CTRL_GROUP_OBJECTS = 3,
|
||||
|
||||
CTRL_GROUP_MAX = 4,
|
||||
};
|
||||
void setGroupVolumeFlag(VolumeControlGroup group, MuteLevel level);
|
||||
|
||||
void setBgmVolumeDecreaseSpeed(f32 speed);
|
||||
void setStageEffectsVolume(f32 volume, s32 fadeFrames);
|
||||
|
||||
private:
|
||||
void setBgmMuteVolume(f32 volume);
|
||||
void setStageEffectsMuteVolume(f32 volume);
|
||||
void setEnemyMuteVolume(f32 volume);
|
||||
void setObjectMuteVolume(f32 volume);
|
||||
void setPlayerVolumeInternal(u32 playerIdx, f32 volume);
|
||||
|
||||
void resetControls();
|
||||
void calcVolumes();
|
||||
void calcMuteFlags();
|
||||
void executeControls();
|
||||
void linkCtrl(dSndControlPlayer_c *);
|
||||
void unlinkCtrl(dSndControlPlayer_c *);
|
||||
void setControlValue(PlayerCtrl_e ctrlType, u32 playerIdx, f32 value, s32 frames);
|
||||
f32 getAppliedPlayerVolume(u32 playerIdx) const;
|
||||
f32 getControlTarget(PlayerCtrl_e ctrlType, u32 playerIdx) const;
|
||||
|
||||
/* 0x10 */ dSndControlPlayer_c *mpCtrls[CTRL_MAX];
|
||||
/* 0x1C */ f32 *mpTargetVolumes;
|
||||
/* 0x20 */ f32 *mpMaxVolumeDecreases;
|
||||
/* 0x24 */ f32 *mpMaxVolumeIncreases;
|
||||
/* 0x28 */ f32 *mpSavedVolumes;
|
||||
/* 0x2C */ u32 mOverrideVolumeMask;
|
||||
/* 0x30 */ nw4r::ut::List mActiveControls;
|
||||
/* 0x3C */ s16 mTimersForGroupVolume[4][2];
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,33 @@
|
||||
#ifndef D_SND_MGR_H
|
||||
#define D_SND_MGR_H
|
||||
|
||||
#include "egg/audio/eggAudioMgr.h"
|
||||
#include "nw4r/snd/snd_SoundArchivePlayer.h"
|
||||
|
||||
/** The core audio manager used for most sounds. */
|
||||
class dSndMgr_c : public EGG::SimpleAudioMgr {
|
||||
public:
|
||||
dSndMgr_c();
|
||||
|
||||
virtual void calc() override;
|
||||
void initialize(EGG::Heap *heap, u32 size);
|
||||
void initHbm(u32 frame);
|
||||
|
||||
static void restoreEffectsCallback();
|
||||
|
||||
static dSndMgr_c *GetInstance() {
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
static nw4r::snd::SoundArchivePlayer* getPlayer() {
|
||||
return sInstance->ArcPlayer::getPlayer();
|
||||
}
|
||||
|
||||
private:
|
||||
static dSndMgr_c *sInstance;
|
||||
|
||||
/* 0x6C8 */ u8 _0x6C8[0x6CC - 0x6C8];
|
||||
/* 0x6CC */ u8 field_0x6CC;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,29 @@
|
||||
#ifndef D_SND_MISC_H
|
||||
#define D_SND_MISC_H
|
||||
|
||||
#include "common.h"
|
||||
|
||||
// This is at least accessed by dSnd3DEngine_c's functions that
|
||||
// are called as part of UpdateAmbientParam. Appears to be
|
||||
// related to the biquadFilterValue.
|
||||
struct dSndSourceParam {
|
||||
dSndSourceParam() {
|
||||
reset();
|
||||
}
|
||||
|
||||
void reset() {
|
||||
field_0x00 = 300.0;
|
||||
field_0x04 = 1000.0f;
|
||||
field_0x08 = 100.0f;
|
||||
field_0x0C = 400.0f;
|
||||
field_0x10 = 5000.0f;
|
||||
}
|
||||
|
||||
/* 0x00 */ f32 field_0x00;
|
||||
/* 0x04 */ f32 field_0x04;
|
||||
/* 0x08 */ f32 field_0x08;
|
||||
/* 0x0C */ f32 field_0x0C;
|
||||
/* 0x10 */ f32 field_0x10;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,169 @@
|
||||
#ifndef D_SND_PLAYER_MGR_H
|
||||
#define D_SND_PLAYER_MGR_H
|
||||
|
||||
#include "d/snd/d_snd_mgr.h"
|
||||
#include "d/snd/d_snd_util.h"
|
||||
#include "nw4r/snd/snd_MemorySoundArchive.h"
|
||||
#include "nw4r/snd/snd_SoundArchivePlayer.h"
|
||||
#include "nw4r/snd/snd_SoundHandle.h"
|
||||
#include "nw4r/snd/snd_SoundStartable.h"
|
||||
|
||||
SND_DISPOSER_FORWARD_DECL(dSndPlayerMgr_c);
|
||||
|
||||
/**
|
||||
* The main interface for managing sound stuff. Will delegate to dSndMgr_c for
|
||||
* most things, but handles demo (cutscene) sound effects (SE_DEMO*) by itself.
|
||||
*
|
||||
* Previous Ghidra name: BgmMgr
|
||||
*/
|
||||
class dSndPlayerMgr_c {
|
||||
public:
|
||||
SND_DISPOSER_MEMBERS(dSndPlayerMgr_c);
|
||||
|
||||
public:
|
||||
dSndPlayerMgr_c();
|
||||
|
||||
void shutdown();
|
||||
void calc();
|
||||
|
||||
void enterMenu();
|
||||
void leaveMenu();
|
||||
void enterMap();
|
||||
void leaveMap();
|
||||
void enterHelp();
|
||||
void leaveHelp();
|
||||
|
||||
void enterHbm();
|
||||
void leaveHbm();
|
||||
|
||||
u32 getFreeSize();
|
||||
bool loadDemoArchive(const char *demoArchiveName);
|
||||
const char *getSoundArchivePath();
|
||||
u32 convertLabelStringToSoundId(const char *label) const;
|
||||
|
||||
nw4r::snd::SoundArchivePlayer &getSoundArchivePlayerForType(u8 sourceType);
|
||||
bool canUseThisPlayer(u8 sourceType) const;
|
||||
|
||||
enum PlayerMgrFlag_e {
|
||||
MGR_HBM = 0x1,
|
||||
MGR_UNK_0x2 = 0x2,
|
||||
MGR_PAUSE = 0x4,
|
||||
MGR_MAP = 0x8,
|
||||
MGR_HELP = 0x10,
|
||||
};
|
||||
|
||||
bool checkFlag(u32 mask) const {
|
||||
return mFlags & mask;
|
||||
}
|
||||
|
||||
void onFlag(u32 mask) {
|
||||
mFlags |= mask;
|
||||
}
|
||||
|
||||
void offFlag(u32 mask) {
|
||||
mFlags &= ~mask;
|
||||
}
|
||||
|
||||
u32 getEventMuteMask(u32 id) {
|
||||
nw4r::snd::SoundArchive *archive;
|
||||
if (mSoundArchivePlayer.IsAvailable()) {
|
||||
archive = &mSoundArchive;
|
||||
} else {
|
||||
archive = dSndMgr_c::GetInstance()->getArchive();
|
||||
}
|
||||
return archive->GetSoundUserParam(id) & sEventMuteFlagsMask;
|
||||
}
|
||||
|
||||
enum FanfareUnmuteParam_e {
|
||||
FANFARE_UNMUTE_BGM = 0x10000,
|
||||
FANFARE_UNMUTE_STAGE_EFFECTS = 0x20000,
|
||||
FANFARE_UNMUTE_ENEMY = 0x40000,
|
||||
FANFARE_UNMUTE_OBJECTS = 0x80000,
|
||||
};
|
||||
|
||||
// seem to be used for Small and Event sounds
|
||||
enum UserParamEventSmall_e {
|
||||
MUTE_BGM_PART = 0x10000,
|
||||
MUTE_BGM_FULL = 0x20000,
|
||||
MUTE_STAGE_EFFECTS_PART = 0x40000,
|
||||
MUTE_STAGE_EFFECTS_FULL = 0x80000,
|
||||
MUTE_ENEMY_PART = 0x100000,
|
||||
MUTE_ENEMY_FULL = 0x200000,
|
||||
MUTE_OBJECTS_PART = 0x400000,
|
||||
MUTE_OBJECTS_FULL = 0x800000,
|
||||
};
|
||||
|
||||
static const u32 sEventMuteFlagsMask;
|
||||
|
||||
// For a full overview over which sounds are played by which players,
|
||||
// see https://gist.github.com/robojumper/f81a55857cebed2c79cf3cf3c1ec8f04
|
||||
enum PlayerIndex_e {
|
||||
/** Background music */
|
||||
PLAYER_BGM = 0,
|
||||
/** Background music, boss battle */
|
||||
PLAYER_BGM_BOSS = 1,
|
||||
/** "fanfare?" */
|
||||
PLAYER_FAN = 2,
|
||||
/** small sound effects, only a few (UI navigation related) */
|
||||
PLAYER_SMALL_IMPORTANT = 3,
|
||||
/** small sound, often UI related */
|
||||
PLAYER_SMALL_NORMAL = 4,
|
||||
/** hit, roll attack, cloth, sink */
|
||||
PLAYER_LINK_BODY = 5,
|
||||
/** Link voice */
|
||||
PLAYER_LINK_VOICE = 6,
|
||||
/** Link footstep, swimming */
|
||||
PLAYER_LINK_FOOTSTEP = 7,
|
||||
/** Sword, beetle, ... */
|
||||
PLAYER_LINK_EQUIPMENT = 8,
|
||||
/** Enemy sound effects */
|
||||
PLAYER_ENEMY = 9,
|
||||
/** Enemy voices */
|
||||
PLAYER_ENEMY_VOICE = 10,
|
||||
/** Enemy footstep */
|
||||
PLAYER_ENEMY_FOOTSTEP = 11,
|
||||
/** Misc objects */
|
||||
PLAYER_OBJECT_1 = 12,
|
||||
/** Misc objects */
|
||||
PLAYER_OBJECT_2 = 13,
|
||||
/** NPC footsteps */
|
||||
PLAYER_NPC_FOOTSTEP = 14,
|
||||
/** NPC voices */
|
||||
PLAYER_NPC_VOICE = 15,
|
||||
/** leaves, grass */
|
||||
PLAYER_FOLIAGE = 16,
|
||||
/** misc TgSound environmental effects */
|
||||
PLAYER_TG_SOUND = 17,
|
||||
/** area sound effects (Faron birds...) */
|
||||
PLAYER_AREA = 18,
|
||||
/** not sure, only SE_A_IN_WATER_LV */
|
||||
PLAYER_AREA_IN_WATER_LV = 19,
|
||||
/** event */
|
||||
PLAYER_EVENT = 20,
|
||||
/** not sure */
|
||||
PLAYER_UNK_21 = 21,
|
||||
};
|
||||
|
||||
private:
|
||||
/* 0x010 */ u8 field_0x010;
|
||||
/* 0x011 */ u8 field_0x011;
|
||||
/* 0x014 */ s32 field_0x014;
|
||||
/* 0x018 */ s32 field_0x018;
|
||||
/* 0x01C */ s32 field_0x01C;
|
||||
/* 0x020 */ u32 mFlags;
|
||||
|
||||
// system menu, inventory, map
|
||||
void enterPauseState();
|
||||
void leavePauseState();
|
||||
|
||||
virtual nw4r::snd::SoundStartable::StartResult
|
||||
startSound(nw4r::snd::SoundHandle *pHandle, u32 soundId, const nw4r::snd::SoundStartable::StartInfo *pStartInfo);
|
||||
virtual nw4r::snd::SoundStartable::StartResult startSound(
|
||||
nw4r::snd::SoundHandle *pHandle, const char *soundLabel, const nw4r::snd::SoundStartable::StartInfo *pStartInfo
|
||||
);
|
||||
|
||||
/* 0x028 */ nw4r::snd::MemorySoundArchive mSoundArchive;
|
||||
/* 0x178 */ nw4r::snd::SoundArchivePlayer mSoundArchivePlayer;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,56 @@
|
||||
#ifndef D_SND_SMALL_EFFECT_MGR_H
|
||||
#define D_SND_SMALL_EFFECT_MGR_H
|
||||
|
||||
#include "d/snd/d_snd_source.h"
|
||||
#include "d/snd/d_snd_util.h"
|
||||
#include "d/snd/d_snd_wzsound.h" // IWYU pragma: export
|
||||
#include "nw4r/snd/snd_SoundHandle.h"
|
||||
|
||||
|
||||
SND_DISPOSER_FORWARD_DECL(dSndSmallEffectMgr_c);
|
||||
|
||||
/**
|
||||
* An interface for playing the SE_S ("sound effect, small"?) sounds.
|
||||
*/
|
||||
class dSndSmallEffectMgr_c {
|
||||
SND_DISPOSER_MEMBERS(dSndSmallEffectMgr_c)
|
||||
|
||||
public:
|
||||
dSndSmallEffectMgr_c();
|
||||
|
||||
bool playSound(u32 soundId);
|
||||
bool playSoundWithPan(u32 soundId, f32 pan);
|
||||
void playSoundWithPitch(u32 soundId, f32 pitch);
|
||||
|
||||
|
||||
bool playButtonPressSoundWhenAdvancingTextBoxes(f32);
|
||||
void resetButtonPressSound();
|
||||
void setButtonPressSound(dSoundSource_c *source);
|
||||
|
||||
private:
|
||||
bool playSoundInternal(u32 soundId);
|
||||
void stopSounds(u32 playerIdx, u32 soundId, s32 fadeFrames);
|
||||
void stopSounds(u32 soundId, s32 fadeFrames);
|
||||
bool isPlayingSound(u32 playerIdx, u32 soundId);
|
||||
bool isPlayingSound(u32 soundId);
|
||||
|
||||
/* 0x10 */ nw4r::snd::SoundHandle mHandle1;
|
||||
// used for most sounds
|
||||
/* 0x14 */ nw4r::snd::SoundHandle mNormalSound;
|
||||
/* 0x18 */ nw4r::snd::SoundHandle mHandle3;
|
||||
// apparently used for shield gauge sounds, but maybe not given
|
||||
// that the callers appear unreachable
|
||||
/* 0x1C */ nw4r::snd::SoundHandle mShieldGaugeHandles[3];
|
||||
|
||||
/* 0x28 */ s32 field_0x28;
|
||||
/* 0x2C */ s32 field_0x2C;
|
||||
/* 0x30 */ s32 field_0x30;
|
||||
/* 0x34 */ s32 field_0x34;
|
||||
/* 0x38 */ u32 mTextboxAdvanceSound;
|
||||
/* 0x3C */ nw4r::snd::SoundHandle mHandle4;
|
||||
/* 0x40 */ u16 field_0x40;
|
||||
/* 0x42 */ u16 field_0x42;
|
||||
/* 0x44 */ s32 field_0x44;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,225 @@
|
||||
#ifndef D_SND_SOUND_H
|
||||
#define D_SND_SOUND_H
|
||||
|
||||
#include "common.h"
|
||||
#include "nw4r/snd/snd_SeqTrack.h"
|
||||
#include "nw4r/snd/snd_SoundHandle.h"
|
||||
#include "nw4r/snd/snd_SoundStartable.h"
|
||||
#include "nw4r/ut/ut_list.h"
|
||||
|
||||
class dSndSound_c;
|
||||
|
||||
// Not sure, handles a bunch of floats, exists in a ton of variants
|
||||
class dSndControl_c {
|
||||
public:
|
||||
dSndControl_c(f32 value, f32 min, f32 max)
|
||||
: mResetValue(value),
|
||||
mMax(max),
|
||||
mMin(min),
|
||||
mCurrValue(value),
|
||||
mStartValue(value),
|
||||
mTargetValue(value),
|
||||
mDuration(0),
|
||||
mTimer(0),
|
||||
mIsLinked(false) {}
|
||||
|
||||
~dSndControl_c() {}
|
||||
|
||||
virtual void configure(f32 value, f32 min, f32 max); // vt 0x08
|
||||
virtual void reset(); // vt 0x0C
|
||||
virtual void set(f32 value, s32 frames); // vt 0x10
|
||||
virtual void calc(); // vt 0x14
|
||||
virtual void stop(); // vt 0x18
|
||||
|
||||
bool isLinked() const {
|
||||
return mIsLinked;
|
||||
}
|
||||
|
||||
void setLinked(bool linked) {
|
||||
mIsLinked = linked;
|
||||
}
|
||||
|
||||
f32 getCurrentValue() const {
|
||||
return mCurrValue;
|
||||
}
|
||||
|
||||
f32 getTargetValue() const {
|
||||
return mTargetValue;
|
||||
}
|
||||
|
||||
bool isFinished() const {
|
||||
return mTimer >= mDuration;
|
||||
}
|
||||
|
||||
protected:
|
||||
/* 0x04 */ f32 mResetValue;
|
||||
/* 0x08 */ f32 mMax;
|
||||
/* 0x0C */ f32 mMin;
|
||||
/* 0x10 */ f32 mCurrValue;
|
||||
/* 0x14 */ f32 mStartValue;
|
||||
/* 0x18 */ f32 mTargetValue;
|
||||
/* 0x1C */ s32 mDuration;
|
||||
/* 0x20 */ s32 mTimer;
|
||||
/* 0x24 */ nw4r::ut::Node mNode;
|
||||
/* 0x2C */ bool mIsLinked;
|
||||
};
|
||||
|
||||
class dSndControlSound_c : public dSndControl_c {
|
||||
public:
|
||||
dSndControlSound_c(f32 value, f32 min, f32 max) : dSndControl_c(value, min, max) {}
|
||||
virtual void apply(dSndSound_c *pHandle) = 0; // vt 0x1C
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
class dSndControlSoundVolume_c : public dSndControlSound_c {
|
||||
public:
|
||||
dSndControlSoundVolume_c() : dSndControlSound_c(1.0f, 0.0f, 2.0f) {}
|
||||
virtual void apply(dSndSound_c *pHandle) override;
|
||||
};
|
||||
|
||||
class dSndControlSoundPitch_c : public dSndControlSound_c {
|
||||
public:
|
||||
dSndControlSoundPitch_c() : dSndControlSound_c(1.0f, 0.25f, 4.0f) {}
|
||||
virtual void apply(dSndSound_c *pHandle) override;
|
||||
};
|
||||
|
||||
/** Stores pitch as a value from -24 to 24, exponentially scaling it to 0.25-4.0 */
|
||||
class dSndControlSoundPitchLinear_c : public dSndControlSound_c {
|
||||
public:
|
||||
dSndControlSoundPitchLinear_c();
|
||||
virtual void apply(dSndSound_c *pHandle) override;
|
||||
virtual void set(f32 value, s32 frames) override;
|
||||
|
||||
void setControl(dSndControlSound_c *ctrl) {
|
||||
mpOtherControl = ctrl;
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x30 */ dSndControlSound_c *mpOtherControl;
|
||||
};
|
||||
|
||||
class dSndControlSoundSeqTempoRatio_c : public dSndControlSound_c {
|
||||
public:
|
||||
dSndControlSoundSeqTempoRatio_c() : dSndControlSound_c(1.0f, 0.25f, 4.0f) {}
|
||||
virtual void apply(dSndSound_c *pHandle) override;
|
||||
};
|
||||
|
||||
class dSndControlSoundSeqTrackVolume_c : public dSndControlSound_c {
|
||||
public:
|
||||
dSndControlSoundSeqTrackVolume_c() : dSndControlSound_c(1.0f, 0.0f, 2.0f) {}
|
||||
virtual void apply(dSndSound_c *pHandle) override;
|
||||
|
||||
void setMask(u16 mask) {
|
||||
mMask = mask;
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x2E */ u16 mMask;
|
||||
};
|
||||
|
||||
class dSndControlSoundStrmTrackVolume_c : public dSndControlSound_c {
|
||||
public:
|
||||
dSndControlSoundStrmTrackVolume_c() : dSndControlSound_c(1.0f, 0.0f, 2.0f) {}
|
||||
virtual void apply(dSndSound_c *pHandle) override;
|
||||
|
||||
void setMask(u16 mask) {
|
||||
mMask = mask;
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x2E */ u16 mMask;
|
||||
};
|
||||
|
||||
class dSndSound_c : public nw4r::snd::SoundHandle {
|
||||
public:
|
||||
dSndSound_c();
|
||||
~dSndSound_c();
|
||||
|
||||
virtual void cancel(); // 0x08
|
||||
virtual void calc(); // 0x0C
|
||||
virtual void fadeIn(u32 id, s32 fadeFrames); // 0x10
|
||||
virtual nw4r::snd::SoundStartable::StartResult prepareSound(u32 soundId, u32 startOffset); // 0x14
|
||||
virtual nw4r::snd::SoundStartable::StartResult prepareSound(const char *label, u32 startOffset); // 0x18
|
||||
virtual void onPreparing(u32 soundId, u32 startOffset); // 0x1C
|
||||
virtual void stop(s32 fadeFrames); // 0x20
|
||||
virtual void pause(bool pauseFlag, s32 fadeFrames); // 0x24
|
||||
|
||||
bool isStrmSound();
|
||||
bool isWaveSound();
|
||||
bool isSeqSound();
|
||||
|
||||
f32 getCurrentStrmTrackVolume(u32 index) const;
|
||||
|
||||
void setVolume(f32 volume, s32 frames);
|
||||
void setPitchRelated(f32 pitch, s32 frames);
|
||||
void setLinearPitch(f32 pitch, s32 frames);
|
||||
void setTrackVolume(u32 trackFlags, f32 volume, s32 frames);
|
||||
void setStrmTrackVolume(u32 trackFlags, f32 volume, s32 frames);
|
||||
void setSingleSeqTrackVolume(u16 index, f32 volume, s32 frames);
|
||||
void setSingleStrmTrackVolume(u16 index, f32 volume, s32 frames);
|
||||
|
||||
// why f32 frames?
|
||||
void setEachSeqTrackVolume(u32 trackFlags, f32 frames);
|
||||
void setEachStrmTrackVolume(u32 trackFlags, f32 frames);
|
||||
|
||||
void setSeqTempoRatio(f32 ratio, s32 frames);
|
||||
void setSeqTrackMute(u32 trackFlags, nw4r::snd::SeqMute mute);
|
||||
void forceStop();
|
||||
|
||||
s16 readSeqTrackVariable(int varNo);
|
||||
void writeSeqTrackVariable(int varNo, s16 value);
|
||||
|
||||
void linkCtrl(dSndControlSound_c *);
|
||||
void unlinkCtrl(dSndControlSound_c *);
|
||||
|
||||
protected:
|
||||
bool cannotStart() const {
|
||||
return mIsRunning && !mIsFadingOut && IsAttachedSound();
|
||||
}
|
||||
|
||||
bool isRunning() const {
|
||||
return mIsRunning && IsAttachedSound();
|
||||
}
|
||||
|
||||
bool isPreparing() const {
|
||||
return mIsPreparing && !mIsRunning;
|
||||
}
|
||||
|
||||
bool canCancel() const {
|
||||
return mIsRunning || mIsPreparing || IsAttachedSound();
|
||||
}
|
||||
|
||||
bool isPreparingSoundId(u32 soundId) const {
|
||||
bool ret = mIsPreparing;
|
||||
if (ret) {
|
||||
ret = !mIsRunning;
|
||||
}
|
||||
if (ret) {
|
||||
ret = GetId() == soundId;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
void resetControls();
|
||||
void resetTrackVolumes();
|
||||
|
||||
void setControlValue(dSndControlSound_c *ctrl, f32 value, s32 frames);
|
||||
|
||||
/* 0x08 */ u8 _0x08[0x10 - 0x08];
|
||||
|
||||
/* 0x10 */ u32 mPrevStartOffset;
|
||||
/* 0x14 */ bool mIsPreparing;
|
||||
/* 0x15 */ bool mPauseFlag;
|
||||
/* 0x16 */ bool mIsRunning;
|
||||
/* 0x17 */ bool mIsFadingOut;
|
||||
/* 0x18 */ dSndControlSoundVolume_c mCtrlVolume;
|
||||
/* 0x48 */ dSndControlSoundPitch_c mCtrlPitch;
|
||||
/* 0x78 */ dSndControlSoundPitchLinear_c mLinearPitch;
|
||||
/* 0xAC */ dSndControlSoundSeqTrackVolume_c *mpCtrlSeqTrackVolume;
|
||||
/* 0xB0 */ dSndControlSoundStrmTrackVolume_c *mpCtrlStrmTrackVolume;
|
||||
/* 0xB4 */ dSndControlSoundSeqTempoRatio_c mpCtrlSeqTempoRatio;
|
||||
/* 0xE4 */ nw4r::ut::List mList;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,115 @@
|
||||
#ifndef D_SOUND_SOURCE_H
|
||||
#define D_SOUND_SOURCE_H
|
||||
|
||||
#include "common.h"
|
||||
#include "d/snd/d_snd_3d_actor.h"
|
||||
#include "d/snd/d_snd_source_if.h"
|
||||
#include "nw4r/ut/ut_list.h"
|
||||
|
||||
#include <cstring>
|
||||
|
||||
class dSndSourceGroup_c;
|
||||
|
||||
/** Manages sound relating to a particular actor. */
|
||||
/** Size: probably 0x15C */
|
||||
class dSoundSource_c : public dSoundSourceIf_c, public dSnd3DActor_c {
|
||||
public:
|
||||
dSoundSource_c(u8 sourceType, dAcBase_c *, const char *name, dSndSourceGroup_c *pOwnerGroup);
|
||||
virtual ~dSoundSource_c();
|
||||
|
||||
static u32 getCharacterTalkSoundId(u32 baseSoundId, dSoundSource_c *source);
|
||||
u32 getRemoConSoundVariant(u32 soundId) const;
|
||||
|
||||
// This is where it gets a bit wild and this class starts mixing in overrides between
|
||||
// new virtual functions, which causes the vtable to list these functions in exactly this
|
||||
// order.
|
||||
virtual const char *getName() const;
|
||||
bool isName(const char *name) const {
|
||||
return !std::strcmp(getName(), name);
|
||||
}
|
||||
virtual void d_s_vt_0x180();
|
||||
virtual void d_s_vt_0x184();
|
||||
virtual void d_s_vt_0x188();
|
||||
virtual void d_s_vt_0x18C();
|
||||
virtual void d_s_vt_0x190();
|
||||
virtual void d_s_vt_0x194();
|
||||
|
||||
virtual void d_vt_0x58() override;
|
||||
|
||||
virtual void d_s_vt_0x19C();
|
||||
virtual void d_s_vt_0x1A0();
|
||||
|
||||
virtual void d_vt_0x5C() override;
|
||||
virtual StartResult
|
||||
SetupSound(nw4r::snd::SoundHandle *pHandle, u32 soundId, const StartInfo *pStartInfo, void *) override;
|
||||
|
||||
virtual void d_s_vt_0x1AC();
|
||||
virtual void d_s_vt_0x1B0();
|
||||
virtual void d_s_vt_0x1B4();
|
||||
virtual void d_s_vt_0x1B8();
|
||||
virtual void d_s_vt_0x1BC();
|
||||
virtual void d_s_vt_0x1C0();
|
||||
virtual void d_s_vt_0x1C4(bool flag, int fadeFrames);
|
||||
virtual void d_s_vt_0x1C8();
|
||||
virtual void d_s_vt_0x1CC();
|
||||
|
||||
virtual void d_vt_0x38(bool flag, int fadeFrames) override;
|
||||
|
||||
virtual void d_s_vt_0x1D4();
|
||||
virtual void d_s_vt_0x1D8();
|
||||
virtual void d_s_vt_0x1DC();
|
||||
virtual void d_s_vt_0x1E0();
|
||||
virtual void d_s_vt_0x1E4();
|
||||
virtual void d_s_vt_0x1E8();
|
||||
|
||||
// Overrides of dSoundSourceIf_c - always in the first section of
|
||||
// the vtable, so the order is not certain. May have to reorder for weak
|
||||
// function order.
|
||||
virtual s32 getCategory() const override {
|
||||
return mSourceCategory;
|
||||
}
|
||||
virtual const nw4r::math::VEC3 &getListenerPosition() const override;
|
||||
|
||||
virtual bool hasPlayingSounds() const override; // 0x48
|
||||
virtual bool isPlayingSound(u32 soundId) override; // 0x4C
|
||||
virtual bool isPlayingSound(const char *soundId) override; // 0x50
|
||||
|
||||
virtual bool isReadyMaybe() override {
|
||||
return false;
|
||||
} // 0x100
|
||||
virtual void load(void *data, const char *name) override {} // 0x104
|
||||
virtual void setFrame(f32 frame) override {} // 0x108
|
||||
virtual void setRate(f32 frame) override {} // 0x10C
|
||||
|
||||
private:
|
||||
// at 0x00: dSoundSourceIf_c vtable
|
||||
// at 0x04: dSnd3DActor_c sub-object
|
||||
// at 0x58: thunk-vtable
|
||||
|
||||
/* 0xE8 */ nw4r::ut::Node mMgrLink;
|
||||
/* 0x0F0 */ const char *mpName;
|
||||
/* 0x0F4 */ UNKWORD field_0x0F4;
|
||||
/* 0x0F8 */ dAcBase_c *mpPlayer;
|
||||
/* 0x0FC */ u8 mSourceCategory;
|
||||
/* 0x0FD */ u8 mSourceType;
|
||||
/* 0x0FE */ u8 field_0x0FE;
|
||||
/* 0x0FF */ u8 field_0x0FF;
|
||||
/* 0x100 */ u8 field_0x100;
|
||||
/* 0x101 */ u8 field_0x101;
|
||||
/* 0x102 */ u8 field_0x102;
|
||||
/* 0x104 */ UNKWORD field_0x104;
|
||||
/* 0x108 */ UNKWORD field_0x108;
|
||||
/* 0x10C */ UNKWORD field_0x10C;
|
||||
/* 0x110 */ nw4r::ut::List field_0x110; // node offset 0xEC
|
||||
/* 0x11C */ UNKWORD field_0x11C;
|
||||
/* 0x120 */ nw4r::ut::List field_0x120; // node offset 0x4
|
||||
/* 0x12C */ nw4r::ut::List field_0x12C; // node offset 0x4
|
||||
/* 0x138 */ nw4r::ut::Node mGroupLink; // node for list in dSndSourceGroup_c
|
||||
/* 0x140 */ dSndSourceGroup_c *mpOwnerGroup;
|
||||
/* 0x144 */ u8 _0x144[0x154 - 0x144];
|
||||
/* 0x154 */ UNKWORD field_0x154;
|
||||
/* 0x158 */ s16 field_0x158;
|
||||
/* 0x15A */ s16 field_0x15A;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,74 @@
|
||||
#ifndef D_SND_SOURCE_ENUMS_H
|
||||
#define D_SND_SOURCE_ENUMS_H
|
||||
|
||||
// TODO: Expand when we figure out what the other entries have in common
|
||||
enum SoundSourceType_e {
|
||||
// 0-1: Player (0)
|
||||
SND_SOURCE_PLAYER = 0,
|
||||
SND_SOURCE_PLAYER_HEAD = 1,
|
||||
|
||||
// 2-9: Equipment (1)
|
||||
SND_SOURCE_NET = 2,
|
||||
SND_SOURCE_BLADE = 3,
|
||||
SND_SOURCE_SHIELD = 4,
|
||||
SND_SOURCE_WHIP = 5,
|
||||
SND_SOURCE_BOOMERANG = 6,
|
||||
SND_SOURCE_ARROW = 7,
|
||||
SND_SOURCE_BOMB = 8,
|
||||
SND_SOURCE_HOOKSHOT = 9,
|
||||
|
||||
// 10-31: Enemy? (2)
|
||||
SND_SOURCE_ENEMY_10 = 10,
|
||||
SND_SOURCE_BIGBOSS = 20,
|
||||
SND_SOURCE_GIRAHUMU_3 = 24,
|
||||
SND_SOURCE_BULLET = 29,
|
||||
SND_SOURCE_ENEMY_31 = 31,
|
||||
|
||||
// 32-42: Object? (3)
|
||||
SND_SOURCE_OBJECT = 32,
|
||||
SND_SOURCE_BAMBOO = 34,
|
||||
SND_SOURCE_ITEM = 35,
|
||||
SND_SOURCE_TERRY_SHOP = 36,
|
||||
SND_SOURCE_TIME_STONE = 37,
|
||||
SND_SOURCE_CLEF = 38,
|
||||
SND_SOURCE_SHUTTER = 39,
|
||||
SND_SOURCE_OBJECT_42 = 42,
|
||||
|
||||
// 43-52: Npc (4)
|
||||
SND_SOURCE_NPC_43 = 43,
|
||||
SND_SOURCE_KENSEI = 44,
|
||||
SND_SOURCE_PLAYER_BIRD = 45,
|
||||
SND_SOURCE_NPC_48 = 48,
|
||||
SND_SOURCE_INSECT = 49,
|
||||
SND_SOURCE_NPC_NRM = 51,
|
||||
SND_SOURCE_NPC_DRAGON = 52,
|
||||
|
||||
// 53: TagSound (5)
|
||||
SND_SOURCE_TG_SOUND = 53,
|
||||
|
||||
// 54-57: Harp Related (6)
|
||||
SND_SOURCE_54 = 54,
|
||||
SND_SOURCE_OBJECT_WARP = 55,
|
||||
SND_SOURCE_SW_HARP = 56,
|
||||
SND_SOURCE_57 = 57,
|
||||
|
||||
// 58: ? (7)
|
||||
SND_SOURCE_58 = 58,
|
||||
|
||||
// 59: ? (9)
|
||||
SND_SOURCE_59 = 59,
|
||||
};
|
||||
|
||||
enum SoundSourceCategory_e {
|
||||
SND_SOURCE_CATEGORY_PLAYER = 0,
|
||||
SND_SOURCE_CATEGORY_EQUIPMENT = 1,
|
||||
SND_SOURCE_CATEGORY_ENEMY = 2,
|
||||
SND_SOURCE_CATEGORY_OBJECT = 3,
|
||||
SND_SOURCE_CATEGORY_NPC = 4,
|
||||
SND_SOURCE_CATEGORY_TG_SOUND = 5,
|
||||
SND_SOURCE_CATEGORY_6 = 6,
|
||||
SND_SOURCE_CATEGORY_7 = 7,
|
||||
SND_SOURCE_CATEGORY_9 = 9,
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,63 @@
|
||||
#ifndef D_SND_SOURCE_GROUP_H
|
||||
#define D_SND_SOURCE_GROUP_H
|
||||
|
||||
#include "common.h"
|
||||
#include "d/snd/d_snd_misc.h"
|
||||
#include "nw4r/ut/ut_list.h"
|
||||
#include "sized_string.h"
|
||||
|
||||
class dSoundSource_c;
|
||||
|
||||
/**
|
||||
* All similar dSoundSource_c's are put in a group. The game can then find the closest
|
||||
* source for a given type by name/id, for example for changing things about the music
|
||||
* depending on proximity to a certain object or enemy.
|
||||
*
|
||||
* Through its dSndSourceParam, it can also "send" parameters to all dSnd3DActors
|
||||
* corresponding to these sound sources.
|
||||
*
|
||||
* Size: 0x70
|
||||
*/
|
||||
class dSndSourceGroup_c {
|
||||
public:
|
||||
dSndSourceGroup_c();
|
||||
dSndSourceGroup_c(s32 sourceType, const char*, u32, s32 mSubtype);
|
||||
~dSndSourceGroup_c();
|
||||
|
||||
void registerSource(dSoundSource_c *);
|
||||
void unregisterSource(dSoundSource_c *);
|
||||
|
||||
dSndSourceParam* getAmbientParam() {
|
||||
return &mParam;
|
||||
}
|
||||
|
||||
dSoundSource_c *getSourceClosestToListener();
|
||||
dSoundSource_c *getSourceClosestToPlayer();
|
||||
|
||||
s32 getNumSources() const;
|
||||
void set(s32 type, const char *name);
|
||||
void calc();
|
||||
|
||||
private:
|
||||
bool setParamFromName(const char *name);
|
||||
void resetSoundSourceParam();
|
||||
void clearList();
|
||||
|
||||
/* 0x00 */ nw4r::ut::Node mNode1;
|
||||
/* 0x08 */ nw4r::ut::Node mNode2;
|
||||
/* 0x10 */ UNKWORD field_0x10;
|
||||
/* 0x14 */ s32 mSourceCategory;
|
||||
/* 0x18 */ s32 mSubtype;
|
||||
/* 0x1C */ u8 field_0x1C;
|
||||
/* 0x1D */ u8 field_0x1D;
|
||||
/* 0x1E */ SizedString<32> mName;
|
||||
/* 0x40 */ UNKWORD field_0x40;
|
||||
/* 0x44 */ nw4r::ut::List mSourceList;
|
||||
/* 0x50 */ dSndSourceParam mParam;
|
||||
/* 0x64 */ dSoundSource_c *mpCachedClosestSourceToListener;
|
||||
/* 0x68 */ dSoundSource_c *mpCachedClosestSourceToPlayer;
|
||||
/* 0x6C */ bool mCalculatedClosestToListener;
|
||||
/* 0x6D */ bool mCalculatedClosestToPlayer;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,87 @@
|
||||
#ifndef D_SOUND_SOURCE_IF_H
|
||||
#define D_SOUND_SOURCE_IF_H
|
||||
|
||||
#include "common.h"
|
||||
#include "nw4r/math/math_types.h"
|
||||
|
||||
class dAcBase_c;
|
||||
|
||||
/** An abstract interface for sound relating to a particular actor. */
|
||||
class dSoundSourceIf_c {
|
||||
public:
|
||||
virtual ~dSoundSourceIf_c() {}
|
||||
#define SOUNDSOURCE_VIRTUAL(offset) virtual void vt_##offset() = 0;
|
||||
|
||||
SOUNDSOURCE_VIRTUAL(0x0C);
|
||||
virtual s32 getCategory() const = 0; // 0x10
|
||||
SOUNDSOURCE_VIRTUAL(0x14);
|
||||
virtual s32 getActorType() const = 0;
|
||||
SOUNDSOURCE_VIRTUAL(0x1C);
|
||||
SOUNDSOURCE_VIRTUAL(0x20);
|
||||
SOUNDSOURCE_VIRTUAL(0x24);
|
||||
virtual const nw4r::math::VEC3 &getListenerPosition() const = 0; // 0x28
|
||||
SOUNDSOURCE_VIRTUAL(0x2C);
|
||||
SOUNDSOURCE_VIRTUAL(0x30);
|
||||
SOUNDSOURCE_VIRTUAL(0x34);
|
||||
SOUNDSOURCE_VIRTUAL(0x38);
|
||||
SOUNDSOURCE_VIRTUAL(0x3C);
|
||||
SOUNDSOURCE_VIRTUAL(0x40);
|
||||
SOUNDSOURCE_VIRTUAL(0x44);
|
||||
virtual bool hasPlayingSounds() const = 0; // 0x48
|
||||
virtual bool isPlayingSound(u32 soundId) = 0; // 0x4C
|
||||
virtual bool isPlayingSound(const char *soundId) = 0; // 0x50
|
||||
SOUNDSOURCE_VIRTUAL(0x54);
|
||||
SOUNDSOURCE_VIRTUAL(0x58);
|
||||
SOUNDSOURCE_VIRTUAL(0x5C);
|
||||
SOUNDSOURCE_VIRTUAL(0x60);
|
||||
SOUNDSOURCE_VIRTUAL(0x64);
|
||||
SOUNDSOURCE_VIRTUAL(0x68);
|
||||
SOUNDSOURCE_VIRTUAL(0x6C);
|
||||
SOUNDSOURCE_VIRTUAL(0x70);
|
||||
SOUNDSOURCE_VIRTUAL(0x74);
|
||||
SOUNDSOURCE_VIRTUAL(0x78);
|
||||
SOUNDSOURCE_VIRTUAL(0x7C);
|
||||
SOUNDSOURCE_VIRTUAL(0x80);
|
||||
SOUNDSOURCE_VIRTUAL(0x84);
|
||||
SOUNDSOURCE_VIRTUAL(0x88);
|
||||
SOUNDSOURCE_VIRTUAL(0x8C);
|
||||
SOUNDSOURCE_VIRTUAL(0x90);
|
||||
SOUNDSOURCE_VIRTUAL(0x94);
|
||||
SOUNDSOURCE_VIRTUAL(0x98);
|
||||
SOUNDSOURCE_VIRTUAL(0x9C);
|
||||
SOUNDSOURCE_VIRTUAL(0xA0);
|
||||
SOUNDSOURCE_VIRTUAL(0xA4);
|
||||
SOUNDSOURCE_VIRTUAL(0xA8);
|
||||
SOUNDSOURCE_VIRTUAL(0xAC);
|
||||
SOUNDSOURCE_VIRTUAL(0xB0);
|
||||
SOUNDSOURCE_VIRTUAL(0xB4);
|
||||
SOUNDSOURCE_VIRTUAL(0xB8);
|
||||
SOUNDSOURCE_VIRTUAL(0xBC);
|
||||
SOUNDSOURCE_VIRTUAL(0xC0);
|
||||
SOUNDSOURCE_VIRTUAL(0xC4);
|
||||
SOUNDSOURCE_VIRTUAL(0xC8);
|
||||
SOUNDSOURCE_VIRTUAL(0xCC);
|
||||
SOUNDSOURCE_VIRTUAL(0xD0);
|
||||
SOUNDSOURCE_VIRTUAL(0xD4);
|
||||
SOUNDSOURCE_VIRTUAL(0xD8);
|
||||
SOUNDSOURCE_VIRTUAL(0xDC);
|
||||
SOUNDSOURCE_VIRTUAL(0xE0);
|
||||
SOUNDSOURCE_VIRTUAL(0xE4);
|
||||
SOUNDSOURCE_VIRTUAL(0xE8);
|
||||
SOUNDSOURCE_VIRTUAL(0xEC);
|
||||
SOUNDSOURCE_VIRTUAL(0xF0);
|
||||
SOUNDSOURCE_VIRTUAL(0xF4);
|
||||
SOUNDSOURCE_VIRTUAL(0xF8);
|
||||
SOUNDSOURCE_VIRTUAL(0xFC);
|
||||
|
||||
virtual bool isReadyMaybe() = 0; // 0x100
|
||||
virtual void load(void *data, const char *name) = 0; // 0x104
|
||||
virtual void setFrame(f32 frame) = 0; // 0x108
|
||||
virtual void setRate(f32 frame) = 0; // 0x10C
|
||||
|
||||
SOUNDSOURCE_VIRTUAL(0x110);
|
||||
SOUNDSOURCE_VIRTUAL(0x114);
|
||||
SOUNDSOURCE_VIRTUAL(0x118);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,60 @@
|
||||
#ifndef D_SND_SOURCE_MGR_H
|
||||
#define D_SND_SOURCE_MGR_H
|
||||
|
||||
#include "d/snd/d_snd_source.h"
|
||||
#include "d/snd/d_snd_source_group.h"
|
||||
#include "d/snd/d_snd_util.h"
|
||||
#include "nw4r/ut/ut_list.h"
|
||||
|
||||
SND_DISPOSER_FORWARD_DECL(dSndSourceMgr_c);
|
||||
|
||||
class dSndSourceMgr_c {
|
||||
SND_DISPOSER_MEMBERS(dSndSourceMgr_c);
|
||||
|
||||
static const u32 NUM_GROUPS = 128;
|
||||
|
||||
public:
|
||||
dSndSourceMgr_c();
|
||||
|
||||
void registerSource(dSoundSource_c *source);
|
||||
void unregisterSource(dSoundSource_c *source);
|
||||
|
||||
void playFlowSound(u32 id);
|
||||
static s32 getSourceCategoryForSourceType(s32 sourceType, const char *name);
|
||||
|
||||
private:
|
||||
static bool isCertainEnemyType(dSoundSource_c *source);
|
||||
void removeSourceFromList(dSoundSource_c *source, nw4r::ut::List *list);
|
||||
void clearSourceLists();
|
||||
void clearSourceList(nw4r::ut::List *list);
|
||||
|
||||
/* 0x0010 */ u8 field_0x0010;
|
||||
/* 0x0011 */ u8 field_0x0011;
|
||||
/* 0x0012 */ u8 field_0x0012;
|
||||
/* 0x0013 */ u8 field_0x0013;
|
||||
|
||||
/* 0x0014 */ dSndSourceGroup_c *mpDefaultGroup;
|
||||
/* 0x0018 */ nw4r::ut::List mGroupList1;
|
||||
/* 0x0024 */ nw4r::ut::List mGroupList2;
|
||||
/* 0x0030 */ nw4r::ut::List mGroupList3;
|
||||
/* 0x003C */ dSndSourceGroup_c mGroups[NUM_GROUPS];
|
||||
|
||||
// Not sure what these are for
|
||||
/* 0x383C */ nw4r::ut::List mAllSources; // node offset 0xE8, probably into dSoundSource::mMgrLink
|
||||
/* 0x3848 */ nw4r::ut::List field_0x3848; // node offset 0x15C, possibly a subset of source types
|
||||
/* 0x3854 */ nw4r::ut::List field_0x3854; // node offset 0x160
|
||||
|
||||
/* 0x3860 */ UNKWORD field_0x3860;
|
||||
/* 0x3864 */ UNKWORD field_0x3864;
|
||||
/* 0x3868 */ UNKWORD field_0x3868;
|
||||
/* 0x386C */ f32 field_0x386C;
|
||||
|
||||
/* 0x3870 */ dSoundSource_c *mpPlayerSource;
|
||||
/* 0x3874 */ dSoundSource_c *mpKenseiSource;
|
||||
/* 0x3878 */ dSoundSource_c *mpBoomerangSource;
|
||||
/* 0x387C */ dSoundSource_c *mpTBoatSource;
|
||||
/* 0x3880 */ dSoundSource_c *field_0x3880; // fi singing related?
|
||||
/* 0x3884 */ dSoundSource_c *field_0x3884;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,71 @@
|
||||
#ifndef D_SND_UTIL_H
|
||||
#define D_SND_UTIL_H
|
||||
|
||||
#include "common.h"
|
||||
#include "egg/core/eggDisposer.h"
|
||||
|
||||
// This setup is only inferred. d/snd uses it all over the place.
|
||||
// This works for dSndPlayerMgr_c, which has a vtable of its own but the Disposer at offset 0.
|
||||
// It also works for the factory at 0x80399c20, which calls a base class ctor,
|
||||
// an inline ctor, and has the Disposer at offset 0x18
|
||||
|
||||
template <typename T>
|
||||
struct SndMgrDisposer : public EGG::Disposer {
|
||||
virtual ~SndMgrDisposer();
|
||||
|
||||
static T *create();
|
||||
static void remove();
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
SndMgrDisposer<T>::~SndMgrDisposer() {
|
||||
if (this == T::sDisposer) {
|
||||
remove();
|
||||
}
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
T *SndMgrDisposer<T>::create() {
|
||||
if (T::sInstance == nullptr) {
|
||||
T::sInstance = new T();
|
||||
T::sDisposer = T::sInstance->GetDisposer();
|
||||
}
|
||||
return T::sInstance;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void SndMgrDisposer<T>::remove() {
|
||||
T::sInstance = nullptr;
|
||||
T::sDisposer = nullptr;
|
||||
}
|
||||
|
||||
#define SND_DISPOSER_FORWARD_DECL(class_name) \
|
||||
class class_name; \
|
||||
extern template class SndMgrDisposer<class_name>;
|
||||
|
||||
#define SND_DISPOSER_DEFINE(class_name) \
|
||||
template class SndMgrDisposer<class_name>; \
|
||||
class_name *class_name::sInstance; \
|
||||
SndMgrDisposer<class_name> *class_name::sDisposer;
|
||||
|
||||
#define SND_DISPOSER_MEMBERS(class_name) \
|
||||
public: \
|
||||
SndMgrDisposer<class_name> *GetDisposer() { \
|
||||
return &mDisposer; \
|
||||
} \
|
||||
\
|
||||
static class_name *GetInstance() { \
|
||||
return sInstance; \
|
||||
} \
|
||||
\
|
||||
static void create() { \
|
||||
SndMgrDisposer<class_name>::create(); \
|
||||
} \
|
||||
\
|
||||
static class_name *sInstance; \
|
||||
static SndMgrDisposer<class_name> *sDisposer; \
|
||||
\
|
||||
private: \
|
||||
SndMgrDisposer<class_name> mDisposer;
|
||||
|
||||
#endif
|
||||
@@ -1,9 +1,8 @@
|
||||
#ifndef SMALL_SOUND_MGR_H
|
||||
#define SMALL_SOUND_MGR_H
|
||||
#ifndef D_SND_WZSOUND_H
|
||||
#define D_SND_WZSOUND_H
|
||||
|
||||
// Thanks kiwi! https://gist.github.com/kiwi515/47bb17b07ed502bdfa7faa60bc48a3c7
|
||||
|
||||
#include "common.h"
|
||||
enum WZSound {
|
||||
/* 0x0000 */ SE_L_FLIPED,
|
||||
/* 0x0001 */ SE_L_FS_START,
|
||||
@@ -6469,18 +6468,4 @@ enum WZSound {
|
||||
/* 0x193D */ LABEL_SOUND_END
|
||||
};
|
||||
|
||||
class SmallSoundManager {
|
||||
public:
|
||||
void playSound(WZSound id);
|
||||
void playSoundWithPitch(WZSound id, f32 pitch);
|
||||
void playButtonPressSoundWhenAdvancingTextBoxes(f32);
|
||||
|
||||
static SmallSoundManager *GetInstance() {
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
private:
|
||||
static SmallSoundManager *sInstance;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,13 +1,16 @@
|
||||
#ifndef D_T_SHUTTER_FENCE_FORBIDDANCE_H
|
||||
#define D_T_SHUTTER_FENCE_FORBIDDANCE_H
|
||||
|
||||
#include "d/a/d_a_base.h"
|
||||
#include "d/t/d_tg.h"
|
||||
|
||||
class dTgShutterFenceForbiddance_c : public dAcBase_c {
|
||||
class dTgShutterFenceForbiddance_c : public dTg_c {
|
||||
public:
|
||||
dTgShutterFenceForbiddance_c();
|
||||
virtual ~dTgShutterFenceForbiddance_c();
|
||||
|
||||
virtual int create() override;
|
||||
virtual int actorExecute() override;
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
|
||||
@@ -26,12 +26,20 @@ public:
|
||||
void stopAllSound();
|
||||
|
||||
u32 changeNameToId(const char *name) {
|
||||
return mOpenSndArchive->ConvertLabelStringToSoundId(name);
|
||||
u32 id = -1;
|
||||
if (mOpenSndArchive != nullptr) {
|
||||
id = mOpenSndArchive->ConvertLabelStringToSoundId(name);
|
||||
}
|
||||
return id;
|
||||
}
|
||||
nw4r::snd::SoundArchivePlayer *getPlayer() {
|
||||
return mActiveSndArchivePlayer;
|
||||
}
|
||||
|
||||
nw4r::snd::SoundArchive *getArchive() {
|
||||
return mOpenSndArchive;
|
||||
}
|
||||
|
||||
void setLoadStringLabels(bool bLoad) {
|
||||
mLoadLabelStringData = bLoad;
|
||||
}
|
||||
@@ -65,12 +73,7 @@ public:
|
||||
|
||||
virtual bool startSound(nw4r::snd::SoundHandle *handle, const char *name) // at 0x40
|
||||
{
|
||||
u32 id = -1;
|
||||
if (mOpenSndArchive) {
|
||||
id = changeNameToId(name);
|
||||
}
|
||||
|
||||
return ArcPlayer::startSound(handle, id);
|
||||
return ArcPlayer::startSound(handle, changeNameToId(name));
|
||||
}
|
||||
|
||||
virtual bool prepareSound(nw4r::snd::SoundHandle *handle, u32 id) // at 0x44
|
||||
@@ -85,12 +88,7 @@ public:
|
||||
|
||||
virtual bool prepareSound(nw4r::snd::SoundHandle *handle, const char *name) // at 0x4C
|
||||
{
|
||||
u32 id = -1;
|
||||
if (mOpenSndArchive) {
|
||||
id = changeNameToId(name);
|
||||
}
|
||||
|
||||
return ArcPlayer::prepareSound(handle, id);
|
||||
return ArcPlayer::prepareSound(handle, changeNameToId(name));
|
||||
}
|
||||
|
||||
virtual bool holdSound(nw4r::snd::SoundHandle *handle, u32 id) // at 0x50
|
||||
@@ -105,12 +103,7 @@ public:
|
||||
|
||||
virtual bool holdSound(nw4r::snd::SoundHandle *handle, const char *name) // at 0x58
|
||||
{
|
||||
u32 id = -1;
|
||||
if (mOpenSndArchive) {
|
||||
id = changeNameToId(name);
|
||||
}
|
||||
|
||||
return ArcPlayer::holdSound(handle, id);
|
||||
return ArcPlayer::holdSound(handle, changeNameToId(name));
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
@@ -21,9 +21,38 @@ public:
|
||||
~SoundHeapMgr() {
|
||||
destroySoundHeap();
|
||||
}
|
||||
virtual bool loadState(s32 id) {}
|
||||
virtual int getCurrentLevel() {}
|
||||
virtual void stateProc() {}
|
||||
int saveState() {
|
||||
return mSoundHeap.SaveState();
|
||||
}
|
||||
virtual bool loadState(s32 id) {
|
||||
s32 level = mSoundHeap.GetCurrentLevel();
|
||||
if (id > 0 && level >= id) {
|
||||
mSoundHeap.LoadState(id);
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
virtual int getCurrentLevel() {
|
||||
return mSoundHeap.GetCurrentLevel();
|
||||
}
|
||||
virtual void stateProc() {
|
||||
OSMessage msg;
|
||||
if (OSReceiveMessage(&mQueue1.mQueue, &msg, 0)) {
|
||||
bool ok = loadState((s32)msg);
|
||||
OSSendMessage(&mQueue3.mQueue, (OSMessage)ok, 0);
|
||||
}
|
||||
|
||||
if (OSReceiveMessage(&mQueue2.mQueue, &msg, 0)) {
|
||||
int ok = mSoundHeap.SaveState();
|
||||
OSSendMessage(&mQueue3.mQueue, (OSMessage)ok, 0);
|
||||
}
|
||||
|
||||
if (OSReceiveMessage(&mQueue, &msg, 0)) {
|
||||
int level = getCurrentLevel();
|
||||
OSSendMessage(&mQueue3.mQueue, (OSMessage)level, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void createSoundHeap(Allocator *allocator, u32 size);
|
||||
void destroySoundHeap();
|
||||
@@ -34,7 +63,9 @@ public:
|
||||
|
||||
private:
|
||||
nw4r::snd::SoundHeap mSoundHeap;
|
||||
u8 unk[0x68 - 0x38];
|
||||
// I guess we're not initializing this queue?
|
||||
OSMessageQueue mQueue;
|
||||
OSMessage mBuffer[4];
|
||||
SoundMessageQueue mQueue1;
|
||||
SoundMessageQueue mQueue2;
|
||||
SoundMessageQueue mQueue3;
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace EGG {
|
||||
struct MultiArcSimpleAudioMgr {
|
||||
u8 field_0x000[0x0FC - 0x000];
|
||||
s32 field_0x0FC;
|
||||
ArcPlayer players[];
|
||||
ArcPlayer players[1];
|
||||
|
||||
nw4r::snd::SoundArchivePlayer *getPlayer(int i) {
|
||||
return players[i].getPlayer();
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
#include "egg/core/eggHeap.h"
|
||||
#include "egg/core/eggStreamDecomp.h"
|
||||
|
||||
|
||||
namespace EGG {
|
||||
|
||||
class DvdRipper {
|
||||
@@ -28,6 +27,29 @@ public:
|
||||
typedef void (*UnkCallback)(void *);
|
||||
|
||||
public:
|
||||
// Not sure
|
||||
struct Arg {
|
||||
Arg(const char *path, u8 *pOut, Heap *pHeap, EAllocDirection allocDir, u32 offset, u32 *pRead, u32 *fileSize)
|
||||
: path(path),
|
||||
pOut(pOut),
|
||||
pHeap(pHeap),
|
||||
allocDir(allocDir),
|
||||
offset(offset),
|
||||
pRead(pRead),
|
||||
fileSize(fileSize) {}
|
||||
const char *path;
|
||||
u8 *pOut;
|
||||
Heap *pHeap;
|
||||
EAllocDirection allocDir;
|
||||
u32 offset;
|
||||
u32 *pRead;
|
||||
u32 *fileSize;
|
||||
};
|
||||
|
||||
static u8 *loadToMainRAM(Arg &arg) {
|
||||
return loadToMainRAM(arg.path, arg.pOut, arg.pHeap, arg.allocDir, arg.offset, arg.pRead, arg.fileSize);
|
||||
}
|
||||
|
||||
static u8 *
|
||||
loadToMainRAM(s32 entryNum, u8 *pOut, Heap *pHeap, EAllocDirection allocDir, u32 offset, u32 *pRead, u32 *fileSize);
|
||||
|
||||
|
||||
@@ -35,6 +35,15 @@ protected:
|
||||
class LookAtCamera : public BaseCamera {
|
||||
public:
|
||||
LookAtCamera() : mPos(0.0f, 10.0f, 0.0f), mAt(0.0f, 0.0f, 0.0f), mUp(0.0f, 1.0f, 0.0f) {}
|
||||
|
||||
LookAtCamera& operator=(const LookAtCamera &other) {
|
||||
mViewMtx.copyFrom(other.mViewMtx);
|
||||
mOtherMtx.copyFrom(other.mOtherMtx);
|
||||
mPos = other.mPos;
|
||||
mAt = other.mAt;
|
||||
mUp = other.mUp;
|
||||
return *this;
|
||||
}
|
||||
// Which way around?
|
||||
virtual Matrix34f &getViewMatrix() override {
|
||||
return mViewMtx;
|
||||
@@ -53,7 +62,15 @@ public:
|
||||
virtual void doDraw() override;
|
||||
virtual Matrix34f &getViewMatrixOld() override;
|
||||
|
||||
protected:
|
||||
Vector3f getDirection() const {
|
||||
return mAt - mPos;
|
||||
}
|
||||
|
||||
Vector3f getOtherDirection() const {
|
||||
return mPos - mAt;
|
||||
}
|
||||
|
||||
public:
|
||||
/* 0x64 */ Vector3f mPos;
|
||||
/* 0x70 */ Vector3f mAt;
|
||||
/* 0x7C */ Vector3f mUp;
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "common.h"
|
||||
#include "egg/math/eggQuat.h"
|
||||
#include "egg/math/eggVector.h"
|
||||
#include "nw4r/math/math_types.h"
|
||||
|
||||
namespace EGG {
|
||||
|
||||
@@ -55,6 +56,14 @@ struct Matrix34f {
|
||||
void multiplyTo(const Matrix34f &m2, Matrix34f &to) const;
|
||||
void dump();
|
||||
|
||||
operator nw4r::math::MTX34 *() {
|
||||
return (nw4r::math::MTX34 *)this;
|
||||
}
|
||||
|
||||
operator const nw4r::math::MTX34 *() const {
|
||||
return (nw4r::math::MTX34 *)this;
|
||||
}
|
||||
|
||||
public:
|
||||
void concat(const Matrix34f &, Matrix34f &) const;
|
||||
void rotate(const Vector3f &rpy) const;
|
||||
|
||||
@@ -39,14 +39,14 @@ struct Quatf {
|
||||
/* 8049b3b0 */ void setAxisRotation(const Vector3f &, f32);
|
||||
/* 8049b450 */ f32 norm();
|
||||
/* 8049b480 */ void normalise();
|
||||
/* 8049b500 */ Quatf conjugate();
|
||||
/* 8049b500 */ Quatf conjugate() const;
|
||||
/* */ Quatf inverse();
|
||||
/* 8049b550 */ Vector3f rotateVector(const Vector3f &);
|
||||
/* */ Vector3f rotateVectorInv(const Vector3f &);
|
||||
/* 8049b800 */ void slerpTo(const Quatf &, f32, Quatf &out) const;
|
||||
/* 8049b800 */ void limitSlerpTo(const Quatf &, f32, f32, Quatf &out) const;
|
||||
/* */ void makeVectorRotationLimit(Vector3f &, Vector3f &, f32);
|
||||
/* 8049bbb0 */ void makeVectorRotation(Vector3f &, Vector3f &);
|
||||
/* 8049bbb0 */ void makeVectorRotation(const Vector3f &, const Vector3f &);
|
||||
|
||||
void multScalar(f32 s) {
|
||||
w *= s;
|
||||
|
||||
+4
-1
@@ -15,7 +15,6 @@
|
||||
#include "f/f_manager.h"
|
||||
#include "f/f_profile.h"
|
||||
|
||||
|
||||
// Ghidra: fBase
|
||||
// size: 0x64
|
||||
// official name
|
||||
@@ -91,6 +90,10 @@ public:
|
||||
group_type = m_tmpCtData.group_type;
|
||||
}
|
||||
|
||||
u32 getFromParams(u8 shift, u32 mask) {
|
||||
return (params >> shift) & mask;
|
||||
}
|
||||
|
||||
public:
|
||||
/* 802e12f0 */ fBase_c();
|
||||
/* 802e23b0 */ static void *operator new(size_t);
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
#define NW4R_LYT_LAYOUT_H
|
||||
|
||||
#include "common.h"
|
||||
#include "new.h"
|
||||
#include "nw4r/lyt/lyt_animation.h"
|
||||
#include "nw4r/lyt/lyt_types.h"
|
||||
#include "rvl/MEM/mem_allocator.h"
|
||||
|
||||
#include <new>
|
||||
|
||||
namespace nw4r {
|
||||
namespace lyt {
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
#include "nw4r/types_nw4r.h" // IWYU pragma: export
|
||||
#include "rvl/OS.h" // IWYU pragma: export
|
||||
|
||||
#include <cmath>
|
||||
|
||||
#define NW4R_MATH_QNAN (-(0.0f / 0.0f))
|
||||
#define NW4R_MATH_FLT_MAX 3.402823466e+38f
|
||||
|
||||
@@ -30,7 +32,7 @@ inline f32 FAbs(register f32 x) {
|
||||
}
|
||||
|
||||
inline f32 FCeil(f32 x) {
|
||||
return ceilf(x);
|
||||
return std::ceilf(x);
|
||||
}
|
||||
|
||||
inline f32 FExp(f32 x) {
|
||||
@@ -38,7 +40,7 @@ inline f32 FExp(f32 x) {
|
||||
}
|
||||
|
||||
inline f32 FFloor(f32 x) {
|
||||
return floorf(x);
|
||||
return std::floorf(x);
|
||||
}
|
||||
|
||||
inline f32 FInv(register f32 x) {
|
||||
|
||||
@@ -1 +1,129 @@
|
||||
/* Only implemented to the extent necessary to match data sections. */
|
||||
|
||||
#include "nw4r/snd/snd_AnimSoundReader.h"
|
||||
#include "nw4r/snd/snd_BasicSound.h"
|
||||
#include "nw4r/snd/snd_SoundHandle.h"
|
||||
#include "nw4r/snd/snd_SoundStartable.h"
|
||||
|
||||
// Class and non-inlined function names from InazumaWii
|
||||
// Names of automatically inlined functions from BBA
|
||||
|
||||
namespace nw4r {
|
||||
namespace snd {
|
||||
namespace detail {
|
||||
|
||||
class AnimEventPlayer {
|
||||
public:
|
||||
AnimEventPlayer();
|
||||
~AnimEventPlayer();
|
||||
|
||||
SoundHandle *GetHandle() {
|
||||
return &mHandle;
|
||||
}
|
||||
|
||||
bool IsAttachedSound() const {
|
||||
return mHandle.IsAttachedSound();
|
||||
}
|
||||
|
||||
bool IsCurrentEvent(const AnimEvent *event) const {
|
||||
return event == mpEvent;
|
||||
}
|
||||
|
||||
int GetPriority() const {
|
||||
if (!IsAttachedSound()) {
|
||||
return 0;
|
||||
}
|
||||
return mHandle.detail_GetAttachedSound()->GetPriority();
|
||||
}
|
||||
|
||||
bool IsRunning() const {
|
||||
return mIsRunning;
|
||||
}
|
||||
|
||||
void UpdateFrame();
|
||||
|
||||
void ForceStop();
|
||||
|
||||
void StopEvent(const AnimEvent *event) {
|
||||
if (mpEvent == event) {
|
||||
ForceStop();
|
||||
}
|
||||
}
|
||||
|
||||
void SetVolume(f32 volume) {
|
||||
if (IsAttachedSound()) {
|
||||
mHandle.detail_GetAttachedSound()->SetVolume(volume, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void SetPitch(f32 pitch) {
|
||||
if (IsAttachedSound()) {
|
||||
mHandle.detail_GetAttachedSound()->SetPitch(pitch);
|
||||
}
|
||||
}
|
||||
|
||||
void StartEvent(const AnimEvent *event, SoundStartable *startable, bool b);
|
||||
void HoldEvent(const AnimEvent *event, SoundStartable *startable, bool b);
|
||||
|
||||
// Not sure about these, this could be related to
|
||||
// InitParam__Q44nw4r3snd6detail15AnimEventPlayerFPCQ44nw4r3snd6detail9AnimEventb
|
||||
// from BBA, but SetVariable is almost certainly an inline (duplicated code)
|
||||
// but the float argument is read from AnimSoundImpl so something seems to have
|
||||
// changed.
|
||||
void SetVolumePitch(const AnimEvent *event, bool b);
|
||||
void SetVariable(const AnimEvent *event, u32 varNo, f32 f);
|
||||
|
||||
private:
|
||||
SoundHandle mHandle; // at 0x00
|
||||
const AnimEvent *mpEvent; // at 0x04
|
||||
bool mIsRunning; // at 0x08
|
||||
};
|
||||
|
||||
class AnimSoundImpl {
|
||||
public:
|
||||
enum PlayDirection {
|
||||
FORWARD,
|
||||
BACKWARD,
|
||||
};
|
||||
|
||||
AnimSoundImpl(SoundStartable &startable, AnimEventPlayer *player, int);
|
||||
~AnimSoundImpl();
|
||||
|
||||
bool Setup(const void *data);
|
||||
void Shutdown();
|
||||
void ResetFrame(f32, int);
|
||||
void UpdateFrame(f32 frame, PlayDirection dir);
|
||||
void UpdateForward(f32 frame);
|
||||
void UpdateBackward(f32 frame);
|
||||
void UpdateOneFrame(s32 duration, PlayDirection direction);
|
||||
void UpdateTrigger(const AnimEventRef *, s32, PlayDirection);
|
||||
void UpdateForwardRange(const AnimEventRef *, s32);
|
||||
void UpdateBackwardRange(const AnimEventRef *, s32);
|
||||
|
||||
void StartEvent(const AnimEvent *, bool);
|
||||
void HoldEvent(const AnimEvent *, bool);
|
||||
void StopEvent(const AnimEvent *);
|
||||
bool IsPlayableLoopCount(const nw4r::snd::detail::AnimEventFrameInfo&);
|
||||
|
||||
|
||||
typedef void (*Callback)(int, s32, const char *, UNKWORD, UNKWORD);
|
||||
|
||||
private:
|
||||
/* 0x00 */ SoundStartable &mStartable;
|
||||
/* 0x04 */ AnimSoundFileReader mReader;
|
||||
/* 0x0C */ f32 field_0x0C;
|
||||
/* 0x10 */ AnimEventPlayer *mpSounds;
|
||||
/* 0x14 */ int mNumSounds;
|
||||
/* 0x18 */ bool mIsActive;
|
||||
/* 0x19 */ u8 field_0x19;
|
||||
/* 0x1A */ u8 field_0x1A;
|
||||
/* 0x1C */ UNKWORD field_0x1C;
|
||||
/* 0x20 */ Callback mCallback;
|
||||
/* 0x24 */ UNKWORD field_0x24;
|
||||
/* 0x28 */ f32 field_0x28;
|
||||
/* 0x2C */ f32 mVariableValue;
|
||||
};
|
||||
|
||||
} // namespace detail
|
||||
} // namespace snd
|
||||
} // namespace nw4r
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
#include "nw4r/snd/snd_Util.h"
|
||||
#include "nw4r/ut/ut_binaryFileFormat.h"
|
||||
|
||||
namespace nw4r {
|
||||
namespace snd {
|
||||
namespace detail {
|
||||
|
||||
// Type and name revealed by BBA
|
||||
struct AnimEventFrameInfo {
|
||||
int field_0x00; // at 0x00
|
||||
int field_0x04; // at 0x04
|
||||
u8 flags; // at 0x08
|
||||
s8 field_0x09; // at 0x09
|
||||
u8 field_0x0A; // at 0x0A
|
||||
};
|
||||
|
||||
struct AnimEvent {
|
||||
u32 flags; // at 0x00
|
||||
u32 soundId; // at 0x04
|
||||
detail::Util::DataRef<const char> soundLabelRef; // at 0x08
|
||||
u8 volume; // at 0x10
|
||||
u8 field_0x11; // at 0x11
|
||||
u8 varNo; // at 0x12
|
||||
f32 pitch; // at 0x14
|
||||
UNKWORD field_0x18; // at 0x18
|
||||
UNKWORD field_0x1C; // at 0x1C
|
||||
|
||||
bool ShouldPreventStart() const {
|
||||
return flags & 1;
|
||||
}
|
||||
|
||||
const char *GetSoundLabel() const {
|
||||
return Util::GetDataRefAddress0(soundLabelRef, this);
|
||||
}
|
||||
|
||||
bool GetVarNo(u32 *var) const {
|
||||
if (flags & 2) {
|
||||
*var = varNo;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool MatchesDirection(int playDirection) const {
|
||||
bool ret = 0;
|
||||
u32 config = field_0x11;
|
||||
if ((config == 0 || (playDirection == 0 && config == 1) || (playDirection == 1 && config == 2))) {
|
||||
ret = true;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
};
|
||||
|
||||
// Name from Inazuma, BBA
|
||||
struct AnimEventRef {
|
||||
AnimEventFrameInfo mInfo; // at 0x00
|
||||
Util::DataRef<AnimEvent> event; // at 0x0C
|
||||
};
|
||||
|
||||
// Names unknown
|
||||
struct AnimSoundFile {
|
||||
static u32 const SIGNATURE_FILE = NW4R_FOUR_BYTE('R', 'A', 'S', 'D');
|
||||
static int const FILE_VERSION = NW4R_FILE_VERSION(1, 0);
|
||||
|
||||
struct Header {
|
||||
ut::BinaryFileHeader fileHeader; // size 0x10, offset 0x00
|
||||
u32 blockOffset; // at 0x10
|
||||
};
|
||||
|
||||
struct EventTable {
|
||||
Util::Table<AnimEventRef> eventRef; // at 0x00
|
||||
};
|
||||
|
||||
struct Block {
|
||||
ut::BinaryBlockHeader blockHeader; // at 0x00
|
||||
u32 duration; // at 0x08
|
||||
Util::DataRef<EventTable> eventTable; // at 0x0C
|
||||
};
|
||||
};
|
||||
|
||||
// Name from Inazuma
|
||||
class AnimSoundFileReader {
|
||||
public:
|
||||
AnimSoundFileReader();
|
||||
bool Setup(const void *buf);
|
||||
void Shutdown();
|
||||
u32 GetEventCount() const;
|
||||
|
||||
const AnimSoundFile::EventTable *GetEventTable() const;
|
||||
const AnimEventRef *GetEventRef(u32 id) const;
|
||||
const AnimEvent *GetEvent(const AnimEventRef *ref) const;
|
||||
|
||||
bool IsValid() const {
|
||||
return mpHeader != NULL;
|
||||
}
|
||||
|
||||
u32 GetAnimDuration() const {
|
||||
if (!IsValid()) {
|
||||
return 0;
|
||||
}
|
||||
return mpBlock->duration;
|
||||
}
|
||||
|
||||
private:
|
||||
const AnimSoundFile::Header *mpHeader; // at 0x00
|
||||
const AnimSoundFile::Block *mpBlock; // at 0x04
|
||||
};
|
||||
|
||||
} // namespace detail
|
||||
} // namespace snd
|
||||
} // namespace nw4r
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#include "nw4r/snd/snd_AxVoice.h"
|
||||
#include "nw4r/snd/snd_global.h"
|
||||
|
||||
#include "nw4r/snd/snd_FxBase.h"
|
||||
@@ -106,6 +107,10 @@ namespace nw4r { namespace snd { namespace detail
|
||||
return mResetReadyCounter == 0;
|
||||
}
|
||||
|
||||
AxVoice::SrcType GetSrcType() const {
|
||||
return mSrcType;
|
||||
}
|
||||
|
||||
private:
|
||||
// cdtors
|
||||
AxManager();
|
||||
@@ -117,11 +122,11 @@ namespace nw4r { namespace snd { namespace detail
|
||||
|
||||
// static members
|
||||
private:
|
||||
static u8 const AUX_CALLBACK_WAIT_FRAME;
|
||||
static u8 const AUX_CALLBACK_WAIT_FRAME = 6;
|
||||
static u16 const AUX_RETURN_VOLUME_MAX = AX_MAX_VOLUME;
|
||||
static int const FX_SAMPLE_RATE;
|
||||
static SampleFormat const FX_SAMPLE_FORMAT;
|
||||
static int const FX_BUFFER_SIZE;
|
||||
static int const FX_SAMPLE_RATE = 32000;
|
||||
static SampleFormat const FX_SAMPLE_FORMAT = SAMPLE_FORMAT_PCM_S32;
|
||||
static int const FX_BUFFER_SIZE = 0x180;
|
||||
static int const ZERO_BUFFER_SIZE = 256;
|
||||
static int const SAMPLES_PAR_AUDIO_FRAME;
|
||||
static int const AUDIO_FRAME_INTERVAL;
|
||||
@@ -147,7 +152,7 @@ namespace nw4r { namespace snd { namespace detail
|
||||
MoveValue<f32, int> mMainOutVolume; // size 0x10, offset 0x2c
|
||||
MoveValue<f32, int> mVolumeForReset; // size 0x10, offset 0x3c
|
||||
AIDMACallback mOldAidCallback; // size 0x04, offset 0x4c
|
||||
s32 mResetReadyCounter; // size 0x04, offset 0x50
|
||||
volatile s32 mResetReadyCounter; // size 0x04, offset 0x50
|
||||
MoveValue<f32, int> mAuxFadeVolume[AUX_BUS_NUM]; // size 0x30, offset 0x54
|
||||
MoveValue<f32, int> mAuxUserVolume[AUX_BUS_NUM]; // size 0x30, offset 0x84
|
||||
FxBase::LinkList mFxList[AUX_BUS_NUM]; // size 0x24, offset 0xb4
|
||||
@@ -156,7 +161,8 @@ namespace nw4r { namespace snd { namespace detail
|
||||
u8 mAuxCallbackWaitCounter[AUX_BUS_NUM]; // size 0x03, offset 0xf0
|
||||
/* 1 byte padding */
|
||||
u32 mEffectProcessTick[AUX_BUS_NUM]; // size 0x0c, offset 0xf4
|
||||
}; // size 0x100
|
||||
AxVoice::SrcType mSrcType;
|
||||
}; // size 0x104
|
||||
}}} // namespace nw4r::snd::detail
|
||||
|
||||
#endif // NW4R_SND_AX_MANAGER_H
|
||||
|
||||
@@ -121,6 +121,8 @@ namespace nw4r { namespace snd { namespace detail
|
||||
void SetVoiceBiquad(AXPBBIQUAD const &biquad);
|
||||
void SetVoiceBiquadCoefs(u16 b0, u16 b1, u16 b2, u16 a1, u16 a2);
|
||||
void SetVoiceRmtIIR(__AXPBRMTIIR const &iir);
|
||||
void SetVoiceRmtOn(u16 on);
|
||||
void SetVoiceRmtMix(_AXPBRMTMIX const &iir);
|
||||
void SetVoiceRmtIIRCoefs(u16 type, ...);
|
||||
|
||||
void Set(AXVPB *vpb);
|
||||
@@ -235,6 +237,7 @@ namespace nw4r { namespace snd { namespace detail
|
||||
void SetLoopFlag(bool loopFlag);
|
||||
void SetPriority(u32 priority);
|
||||
void SetVoiceType(VoiceType type);
|
||||
void EnableRemote(bool enable);
|
||||
void ResetDelta();
|
||||
void SetAddr(bool loopFlag, void const *waveAddr, u32 startOffset,
|
||||
u32 loopStart, u32 loopEnd);
|
||||
@@ -242,6 +245,7 @@ namespace nw4r { namespace snd { namespace detail
|
||||
void SetAdpcm(AdpcmParam const *param);
|
||||
void SetAdpcmLoop(AdpcmLoopParam const *param);
|
||||
bool SetMix(MixParam const ¶m);
|
||||
void SetRmtMix(const RemoteMixParam ¶m);
|
||||
void SetSrc(f32 ratio, bool initialUpdate);
|
||||
void SetVe(f32 volume, f32 initVolume);
|
||||
void SetLpf(u16 freq);
|
||||
@@ -269,7 +273,7 @@ namespace nw4r { namespace snd { namespace detail
|
||||
|
||||
static void CalcOffsetAdpcmParam(u16 *outPredScale, u16 *outYn1,
|
||||
u16 *outYn2, u32 offset,
|
||||
void *dataAddr,
|
||||
const void *dataAddr,
|
||||
AdpcmParam const &adpcmParam);
|
||||
|
||||
private:
|
||||
|
||||
@@ -9,13 +9,12 @@ namespace snd {
|
||||
namespace detail {
|
||||
|
||||
struct AxfxImpl {
|
||||
bool mIsActive; // at 0x0
|
||||
MEMiHeapHead *mHeap; // at 0x4
|
||||
u32 mAllocCount; // at 0x8
|
||||
|
||||
static const u32 HEAP_SIZE_MIN = MEM_FRM_HEAP_MIN_SIZE + 32;
|
||||
|
||||
AxfxImpl() : mIsActive(false), mHeap(NULL), mAllocCount(0) {}
|
||||
AxfxImpl() : mHeap(NULL), mAllocCount(0) {}
|
||||
|
||||
bool CreateHeap(void *pBuffer, u32 size);
|
||||
void DestroyHeap();
|
||||
@@ -29,7 +28,7 @@ struct AxfxImpl {
|
||||
}
|
||||
|
||||
void HookAlloc(AXFXAllocHook *pAllocHook, AXFXFreeHook *pFreeHook);
|
||||
void RestoreAlloc(AXFXAllocHook allocHook, AXFXFreeHook freeHook);
|
||||
u32 RestoreAlloc(AXFXAllocHook allocHook, AXFXFreeHook freeHook);
|
||||
|
||||
static void *Alloc(u32 size);
|
||||
static void Free(void *pBlock);
|
||||
|
||||
@@ -44,7 +44,8 @@ namespace nw4r { namespace snd { namespace detail
|
||||
PanMode panMode; // size 0x04, offset 0x28
|
||||
PanCurve panCurve; // size 0x04, offset 0x2c
|
||||
f32 fxSend[AUX_BUS_NUM]; // size 0x0c, offset 0x30
|
||||
VoiceOutParam voiceOutParam[4]; // size 0x60, offset 0x3c
|
||||
f32 remoteOutVolume[4]; // size 0x04, offset 0x3c
|
||||
VoiceOutParam voiceOutParam[4]; // size 0x60, offset 0x5c
|
||||
}; // size 0x9c
|
||||
}}} // namespace nw4r::snd::detail
|
||||
|
||||
@@ -75,6 +76,8 @@ namespace nw4r { namespace snd { namespace detail
|
||||
|
||||
// methods
|
||||
void InitParam();
|
||||
void SetRemoteOutVolume(int remote, f32 volume);
|
||||
f32 GetRemoteOutVolume(int remote) const;
|
||||
|
||||
f32 GetVolume() const { return mPlayerParamSet.volume; }
|
||||
f32 GetPitch() const { return mPlayerParamSet.pitch; }
|
||||
|
||||
@@ -44,7 +44,8 @@ namespace nw4r { namespace snd
|
||||
lpf (0.0f),
|
||||
biquadFilterValue (0.0f),
|
||||
biquadFilterType (0),
|
||||
priority (0)
|
||||
priority (0),
|
||||
field_0x24 (0)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -59,6 +60,7 @@ namespace nw4r { namespace snd
|
||||
f32 biquadFilterValue; // size 0x04, offset 0x18
|
||||
int biquadFilterType; // size 0x04, offset 0x1c
|
||||
int priority; // size 0x04, offset 0x20
|
||||
UNKWORD field_0x24;
|
||||
}; // size 0x24
|
||||
|
||||
// [R89JEL]:/bin/RVL/Debug/mainD.elf:.debug::0x27514
|
||||
@@ -76,7 +78,8 @@ namespace nw4r { namespace snd
|
||||
lpf (0.0f),
|
||||
biquadFilterValue (0.0f),
|
||||
biquadFilterType (0),
|
||||
priority (0)
|
||||
priority (0),
|
||||
field_0x24 (0)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -91,6 +94,7 @@ namespace nw4r { namespace snd
|
||||
f32 biquadFilterValue; // size 0x04, offset 0x18
|
||||
int biquadFilterType; // size 0x04, offset 0x1c
|
||||
int priority; // size 0x04, offset 0x20
|
||||
UNKWORD field_0x24;
|
||||
VoiceOutParam voiceOutParam[4]; // size 0x60, offset 0x24
|
||||
}; // size 0x84
|
||||
|
||||
@@ -141,10 +145,10 @@ namespace nw4r { namespace snd { namespace detail
|
||||
|
||||
// typedefs
|
||||
public:
|
||||
typedef ut::LinkList<BasicSound, 0xe0> PriorityLinkList;
|
||||
typedef ut::LinkList<BasicSound, 0xe8> SoundPlayerPlayLinkList;
|
||||
typedef ut::LinkList<BasicSound, 0xf0> SoundPlayerPriorityLinkList;
|
||||
typedef ut::LinkList<BasicSound, 0xf8> ExtSoundPlayerPlayLinkList;
|
||||
typedef ut::LinkList<BasicSound, 0xf0> PriorityLinkList;
|
||||
typedef ut::LinkList<BasicSound, 0xf8> SoundPlayerPlayLinkList;
|
||||
typedef ut::LinkList<BasicSound, 0x100> SoundPlayerPriorityLinkList;
|
||||
typedef ut::LinkList<BasicSound, 0x108> ExtSoundPlayerPlayLinkList;
|
||||
|
||||
// nested types
|
||||
public:
|
||||
@@ -165,10 +169,10 @@ namespace nw4r { namespace snd { namespace detail
|
||||
};
|
||||
// methods
|
||||
public:
|
||||
virtual void at_0x08();
|
||||
virtual void at_0x0c(void *, int, int, void *);
|
||||
virtual int at_0x10(void *, int);
|
||||
virtual int at_0x14(void *, int);
|
||||
virtual ~AmbientParamUpdateCallback() {}
|
||||
virtual void detail_UpdateAmbientParam(const void*, u32, int, SoundAmbientParam*);
|
||||
virtual int detail_GetAmbientPriority(const void*, u32);
|
||||
virtual int detail_GetRequiredVoiceOutCount(const void*, u32);
|
||||
|
||||
// members
|
||||
private:
|
||||
@@ -182,8 +186,8 @@ namespace nw4r { namespace snd { namespace detail
|
||||
public:
|
||||
// virtual function ordering
|
||||
// vtable AmbientArgUpdateCallback
|
||||
virtual void at_0x08();
|
||||
virtual void at_0x0c(void *, void *);
|
||||
virtual ~AmbientArgUpdateCallback() {}
|
||||
virtual void at_0x0c(void *, BasicSound *);
|
||||
|
||||
// members
|
||||
private:
|
||||
@@ -198,9 +202,11 @@ namespace nw4r { namespace snd { namespace detail
|
||||
public:
|
||||
// virtual function ordering
|
||||
// vtable AmbientArgAllocaterCallback
|
||||
virtual void at_0x08();
|
||||
virtual void *at_0x0c(int);
|
||||
virtual void at_0x10(void *, void *);
|
||||
virtual ~AmbientArgAllocaterCallback() {}
|
||||
virtual void *detail_AllocAmbientArg(u32 size); // at 0x8
|
||||
|
||||
virtual void detail_FreeAmbientArg(void *pArg,
|
||||
const detail::BasicSound *pSound); // at 0xC
|
||||
|
||||
// members
|
||||
private:
|
||||
@@ -244,25 +250,32 @@ namespace nw4r { namespace snd { namespace detail
|
||||
void StartPrepared();
|
||||
void Update();
|
||||
void Pause(bool flag, int fadeFrames);
|
||||
bool IsPaused() const;
|
||||
bool IsPause() const;
|
||||
void Stop(int fadeFrames);
|
||||
void SetAutoStopCounter(int count);
|
||||
void FadeIn(int fadeFrames);
|
||||
|
||||
bool GetStartedFlag() const { return mStartedFlag; }
|
||||
u32 GetId() const { return mId; }
|
||||
PlayerHeap *GetPlayerHeap() { return mPlayerHeap; }
|
||||
SoundPlayer *GetSoundPlayer() { return mSoundPlayer; }
|
||||
int GetVoiceOutCount() const;
|
||||
int GetPriority() const { return mPriority; }
|
||||
|
||||
void SetPlayerPriority(int priority);
|
||||
void SetInitialVolume(f32 volume);
|
||||
void SetVolume(f32 volume, int frames);
|
||||
void SetPitch(f32 pitch);
|
||||
void SetPan(f32 pan);
|
||||
void SetSurroundPan(f32 pan);
|
||||
void SetLpfFreq(f32 freq);
|
||||
void SetFxSend(AuxBus bus, f32 send);
|
||||
void SetRemoteFilter(int filter);
|
||||
void SetPanMode(PanMode mode);
|
||||
void SetPanCurve(PanCurve curve);
|
||||
void SetAmbientInfo(AmbientInfo const &ambientArgInfo);
|
||||
void SetId(u32 id);
|
||||
void SetOutputLineFlag(int flag);
|
||||
|
||||
void AttachPlayerHeap(PlayerHeap *heap);
|
||||
void AttachSoundPlayer(SoundPlayer *player);
|
||||
@@ -279,12 +292,18 @@ namespace nw4r { namespace snd { namespace detail
|
||||
void DetachGeneralHandle();
|
||||
void DetachTempGeneralHandle();
|
||||
|
||||
int GetRemainingFadeFrames() const;
|
||||
|
||||
int CalcCurrentPlayerPriority() const
|
||||
{
|
||||
return ut::Clamp(mPriority + mAmbientParam.priority, PRIORITY_MIN,
|
||||
PRIORITY_MAX);
|
||||
}
|
||||
|
||||
void ClearAmbientArgUpdateCallback() {
|
||||
mAmbientInfo.argUpdateCallback = NULL;
|
||||
}
|
||||
|
||||
static int GetAmbientPriority(AmbientInfo const &ambientInfo,
|
||||
u32 soundId);
|
||||
|
||||
@@ -308,41 +327,40 @@ namespace nw4r { namespace snd { namespace detail
|
||||
ExternalSoundPlayer *mExtSoundPlayer; // size 0x04, offset 0x18
|
||||
AmbientInfo mAmbientInfo; // size 0x14, offset 0x1c
|
||||
SoundParam mAmbientParam; // size 0x24, offset 0x30
|
||||
SoundActorParam mActorParam; // size 0x0c, offset 0x54
|
||||
MoveValue<f32, int> mFadeVolume; // size 0x10, offset 0x60
|
||||
MoveValue<f32, int> mPauseFadeVolume; // size 0x10, offset 0x70
|
||||
bool mStartFlag; // size 0x01, offset 0x80
|
||||
bool mStartedFlag; // size 0x01, offset 0x81
|
||||
bool mAutoStopFlag; // size 0x01, offset 0x82
|
||||
bool mFadeOutFlag; // size 0x01, offset 0x83
|
||||
PauseState mPauseState; // size 0x04, offset 0x84
|
||||
bool mUnPauseFlag; // size 0x01, offset 0x88
|
||||
SoundActorParam mActorParam; // size 0x0c, offset 0x58
|
||||
MoveValue<f32, int> mFadeVolume; // size 0x10, offset 0x64
|
||||
MoveValue<f32, int> mPauseFadeVolume; // size 0x10, offset 0x74
|
||||
bool mStartFlag; // size 0x01, offset 0x84
|
||||
bool mStartedFlag; // size 0x01, offset 0x85
|
||||
bool mAutoStopFlag; // size 0x01, offset 0x86
|
||||
bool mFadeOutFlag; // size 0x01, offset 0x87
|
||||
PauseState mPauseState; // size 0x04, offset 0x88
|
||||
bool mUnPauseFlag; // size 0x01, offset 0x8c
|
||||
/* 3 bytes padding */
|
||||
s32 mAutoStopCounter; // size 0x04, offset 0x8c
|
||||
u32 mUpdateCounter; // size 0x04, offset 0x90
|
||||
u8 mPriority; // size 0x01, offset 0x94
|
||||
u8 mVoiceOutCount; // size 0x01, offset 0x95
|
||||
u8 mBiquadFilterType; // size 0x01, offset 0x96
|
||||
s32 mAutoStopCounter; // size 0x04, offset 0x90
|
||||
u32 mUpdateCounter; // size 0x04, offset 0x94
|
||||
u8 mPriority; // size 0x01, offset 0x98
|
||||
u8 mVoiceOutCount; // size 0x01, offset 0x99
|
||||
u8 mBiquadFilterType; // size 0x01, offset 0x9a
|
||||
/* 1 byte padding */
|
||||
u32 mId; // size 0x04, offset 0x98
|
||||
MoveValue<f32, int> mExtMoveVolume; // size 0x10, offset 0x9c
|
||||
f32 mInitVolume; // size 0x04, offset 0xac
|
||||
f32 mExtPan; // size 0x04, offset 0xb0
|
||||
f32 mExtSurroundPan; // size 0x04, offset 0xb4
|
||||
f32 mExtPitch; // size 0x04, offset 0xb8
|
||||
f32 mLpfFreq; // size 0x04, offset 0xbc
|
||||
f32 mBiquadFilterValue; // size 0x04, offset 0xc0
|
||||
int mOutputLineFlag; // size 0x04, offset 0xc4
|
||||
f32 mMainOutVolume; // size 0x04, offset 0xc8
|
||||
f32 mMainSend; // size 0x04, offset 0xcc
|
||||
f32 mFxSend[AUX_BUS_NUM]; // size 0x0c, offset 0xd0
|
||||
// NOTE: Name is not from DWARF; derived from usage and other nearby names
|
||||
u32 mPauseNestCounter; // size 0x04, offset 0xdc
|
||||
u32 mId; // size 0x04, offset 0x9c
|
||||
MoveValue<f32, int> mExtMoveVolume; // size 0x10, offset 0xa0
|
||||
f32 mInitVolume; // size 0x04, offset 0xb0
|
||||
f32 mExtPan; // size 0x04, offset 0xb4
|
||||
f32 mExtSurroundPan; // size 0x04, offset 0xb8
|
||||
f32 mExtPitch; // size 0x04, offset 0xbc
|
||||
f32 mLpfFreq; // size 0x04, offset 0xc0
|
||||
f32 mBiquadFilterValue; // size 0x04, offset 0xc4
|
||||
int mOutputLineFlag; // size 0x04, offset 0xc8
|
||||
f32 mMainOutVolume; // size 0x04, offset 0xcc
|
||||
f32 mMainSend; // size 0x04, offset 0xd0
|
||||
f32 mFxSend[AUX_BUS_NUM]; // size 0x0c, offset 0xd4
|
||||
f32 mRemoteOutVolume[4]; // size 0x10, offset 0xe0
|
||||
public:
|
||||
ut::LinkListNode mPriorityLink; // size 0x08, offset 0xe0
|
||||
ut::LinkListNode mSoundPlayerPlayLink; // size 0x08, offset 0xe8
|
||||
ut::LinkListNode mSoundPlayerPriorityLink; // size 0x08, offset 0xf0
|
||||
ut::LinkListNode mExtSoundPlayerPlayLink; // size 0x08, offset 0xf8
|
||||
ut::LinkListNode mPriorityLink; // size 0x08, offset 0xf0
|
||||
ut::LinkListNode mSoundPlayerPlayLink; // size 0x08, offset 0xf8
|
||||
ut::LinkListNode mSoundPlayerPriorityLink; // size 0x08, offset 0x100
|
||||
ut::LinkListNode mExtSoundPlayerPlayLink; // size 0x08, offset 0x108
|
||||
|
||||
// friends
|
||||
private:
|
||||
|
||||
@@ -63,7 +63,7 @@ namespace nw4r { namespace snd { namespace detail
|
||||
ChannelCallbackStatus status,
|
||||
u32 userData);
|
||||
|
||||
typedef ut::LinkList<Channel, 0xc8> LinkList;
|
||||
typedef ut::LinkList<Channel, 0xd8> LinkList;
|
||||
|
||||
// methods
|
||||
public:
|
||||
@@ -115,6 +115,10 @@ namespace nw4r { namespace snd { namespace detail
|
||||
{
|
||||
mUserSurroundPan = surroundPan;
|
||||
}
|
||||
void SetRemoteOutVolume(int channel, f32 volume)
|
||||
{
|
||||
mRemoteOutVolume[channel] = volume;
|
||||
}
|
||||
void SetUserLpfFreq(f32 lpfFreq) { mUserLpfFreq = lpfFreq; }
|
||||
void SetOutputLine(int lineFlag) { mOutputLineFlag = lineFlag; }
|
||||
void SetMainOutVolume(f32 volume) { mMainOutVolume = volume; }
|
||||
@@ -208,6 +212,7 @@ namespace nw4r { namespace snd { namespace detail
|
||||
f32 mMainOutVolume; // size 0x04, offset 0x5c
|
||||
f32 mMainSend; // size 0x04, offset 0x60
|
||||
f32 mFxSend[AUX_BUS_NUM]; // size 0x0c, offset 0x64
|
||||
f32 mRemoteOutVolume[4];
|
||||
f32 mUserPitch; // size 0x04, offset 0x70
|
||||
f32 mSweepPitch; // size 0x04, offset 0x74
|
||||
s32 mSweepCounter; // size 0x04, offset 0x78
|
||||
|
||||
@@ -6,11 +6,15 @@
|
||||
*/
|
||||
|
||||
#include "nw4r/snd/snd_BasicSound.h"
|
||||
#include "nw4r/snd/snd_SoundHandle.h"
|
||||
#include "nw4r/snd/snd_global.h"
|
||||
|
||||
/*******************************************************************************
|
||||
* classes and functions
|
||||
*/
|
||||
|
||||
namespace nw4r { namespace snd { class SoundActor; }}
|
||||
|
||||
namespace nw4r { namespace snd { namespace detail
|
||||
{
|
||||
// [R89JEL]:/bin/RVL/Debug/mainD.elf:.debug::0x27049
|
||||
@@ -24,12 +28,43 @@ namespace nw4r { namespace snd { namespace detail
|
||||
int GetPlayingSoundCount() const { return mSoundList.GetSize(); }
|
||||
int GetPlayableSoundCount() const { return mPlayableCount; }
|
||||
void SetPlayableSoundCount(int count);
|
||||
void StopAllSound(int fadeFrames);
|
||||
void PauseAllSound(bool flag, int fadeFrames);
|
||||
void DetachSoundActorAll(SoundActor *sound);
|
||||
|
||||
bool AppendSound(BasicSound *sound);
|
||||
void RemoveSound(BasicSound *sound);
|
||||
|
||||
bool detail_CanPlaySound(int startPriority);
|
||||
|
||||
template <typename TForEachFunc>
|
||||
TForEachFunc ForEachSound(TForEachFunc pFunc, bool reverse) {
|
||||
if (reverse) {
|
||||
detail::BasicSound::ExtSoundPlayerPlayLinkList::ReverseIterator it = mSoundList.GetBeginReverseIter();
|
||||
|
||||
while (it != mSoundList.GetEndReverseIter()) {
|
||||
detail::BasicSound::ExtSoundPlayerPlayLinkList::ReverseIterator curr = it;
|
||||
|
||||
SoundHandle handle;
|
||||
handle.detail_AttachSoundAsTempHandle(&*curr);
|
||||
pFunc(handle);
|
||||
|
||||
if (handle.IsAttachedSound()) {
|
||||
++it;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
NW4R_RANGE_FOR_NO_AUTO_INC(it, mSoundList) {
|
||||
decltype(it) curItr = it++;
|
||||
SoundHandle handle;
|
||||
handle.detail_AttachSoundAsTempHandle(&*curItr);
|
||||
pFunc(handle);
|
||||
}
|
||||
}
|
||||
|
||||
return pFunc;
|
||||
}
|
||||
|
||||
private:
|
||||
BasicSound *GetLowestPrioritySound();
|
||||
|
||||
|
||||
@@ -34,22 +34,19 @@ public:
|
||||
private:
|
||||
struct Block {
|
||||
NW4R_UT_LIST_NODE_DECL(); // at 0x0
|
||||
u32 mSize; // at 0x8
|
||||
FreeCallback mCallback; // at 0xc
|
||||
void *mCallbackArg; // at 0x10
|
||||
void *mpBuffer; // at 0x8
|
||||
u32 mSize; // at 0xC
|
||||
FreeCallback mCallback; // at 0x10
|
||||
void *mCallbackArg; // at 0x14
|
||||
|
||||
Block(u32 size, FreeCallback pCallback, void *pCallbackArg)
|
||||
: mSize(size), mCallback(pCallback), mCallbackArg(pCallbackArg) {}
|
||||
Block(void *pBuffer2, u32 size, FreeCallback pCallback, void *pCallbackArg)
|
||||
: mSize(size), mCallback(pCallback), mCallbackArg(pCallbackArg), mpBuffer(pBuffer2) {}
|
||||
|
||||
~Block() {
|
||||
if (mCallback != NULL) {
|
||||
mCallback(GetBufferAddr(), mSize, mCallbackArg);
|
||||
mCallback(mpBuffer, mSize, mCallbackArg);
|
||||
}
|
||||
}
|
||||
|
||||
void *GetBufferAddr() {
|
||||
return ut::AddOffsetToPtr(this, BLOCK_BUFFER_SIZE);
|
||||
}
|
||||
};
|
||||
|
||||
NW4R_UT_LIST_TYPEDEF_DECL(Block);
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace nw4r { namespace snd
|
||||
// vtable FxBase
|
||||
virtual bool StartUp();
|
||||
virtual void Shutdown();
|
||||
virtual void UpdateBuffer(int, void *, u32, SampleFormat, f32,
|
||||
virtual void UpdateBuffer(int, void **, u32, SampleFormat, f32,
|
||||
OutputMode);
|
||||
virtual void OnChangeOutputMode();
|
||||
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
#ifndef NW4R_SND_FX_REVERB_STD_DPL2_H
|
||||
#define NW4R_SND_FX_REVERB_STD_DPL2_H
|
||||
|
||||
#include "nw4r/snd/snd_AxfxImpl.h"
|
||||
#include "nw4r/snd/snd_FxBase.h"
|
||||
#include "nw4r/types_nw4r.h"
|
||||
|
||||
#include "rvl/AXFX.h" // IWYU pragma: export
|
||||
|
||||
namespace nw4r {
|
||||
namespace snd {
|
||||
|
||||
namespace detail {
|
||||
struct FxReverbStdParam {
|
||||
f32 field_0x00;
|
||||
f32 field_0x04;
|
||||
f32 field_0x08;
|
||||
f32 field_0x0C;
|
||||
f32 field_0x10;
|
||||
int field_0x14;
|
||||
f32 field_0x18;
|
||||
int field_0x1C;
|
||||
f32 field_0x20;
|
||||
f32 field_0x24;
|
||||
|
||||
FxReverbStdParam()
|
||||
: field_0x00(0.02f),
|
||||
field_0x04(3.0f),
|
||||
field_0x08(0.6f),
|
||||
field_0x0C(0.4f),
|
||||
field_0x10(1.0f),
|
||||
field_0x14(5),
|
||||
field_0x18(0.02f),
|
||||
field_0x1C(0),
|
||||
field_0x20(0.0f),
|
||||
field_0x24(1.0f) {}
|
||||
};
|
||||
} // namespace detail
|
||||
|
||||
class FxReverbStdDpl2 : public FxBase {
|
||||
public:
|
||||
public:
|
||||
FxReverbStdDpl2();
|
||||
|
||||
virtual ~FxReverbStdDpl2() {
|
||||
Shutdown();
|
||||
ReleaseWorkBuffer();
|
||||
} // at 0x8
|
||||
|
||||
virtual bool StartUp() override; // at 0xC
|
||||
virtual void Shutdown() override; // at 0x10
|
||||
|
||||
virtual void UpdateBuffer(
|
||||
int channels, void **ppBuffer, u32 size, SampleFormat format, f32 sampleRate,
|
||||
OutputMode mode
|
||||
) override; // at 0x14
|
||||
|
||||
virtual bool AssignWorkBuffer(void *pBuffer, u32 size); // at 0x18
|
||||
virtual void ReleaseWorkBuffer(); // at 0x1C
|
||||
|
||||
u32 GetRequiredMemSize();
|
||||
bool SetParam(const detail::FxReverbStdParam &rParam);
|
||||
|
||||
void OnChangeOutputMode() override;
|
||||
|
||||
private:
|
||||
u8 mIsActive;
|
||||
int mOutputMode; // at 0x10
|
||||
detail::AxfxImpl mImpl; // at 0x14
|
||||
detail::FxReverbStdParam mParam; // at 0x1C
|
||||
AXFX_REVERBSTD_EXP mAxfxParam; // at 0x44
|
||||
AXFX_REVERBSTD_EXP_DPL2 mAxfxParamDpl; // at 0x12C
|
||||
};
|
||||
|
||||
} // namespace snd
|
||||
} // namespace nw4r
|
||||
|
||||
#endif
|
||||
@@ -41,6 +41,10 @@ namespace nw4r { namespace snd { namespace detail
|
||||
|
||||
bool IsFinished() const { return mCounter >= mFrame; }
|
||||
|
||||
TTime GetRemainingTime() const {
|
||||
return IsFinished() ? 0 : mFrame - mCounter;
|
||||
}
|
||||
|
||||
void InitValue(TValue value)
|
||||
{
|
||||
mOrigin = value;
|
||||
|
||||
@@ -21,8 +21,9 @@ public:
|
||||
private:
|
||||
static const int SPEAKER_ALARM_HZ = 150;
|
||||
|
||||
static const int SPEAKER_ALARM_PERIOD_NSEC = static_cast<int>(1.0f / SPEAKER_ALARM_HZ * 1000 * 1000 * 1000);
|
||||
|
||||
// commented out since it causes compiler warnings
|
||||
// static const int SPEAKER_ALARM_PERIOD_NSEC = static_cast<int>(1.0f / SPEAKER_ALARM_HZ * 1000 * 1000 * 1000);
|
||||
static const int SPEAKER_ALARM_PERIOD_NSEC = 6666667;
|
||||
private:
|
||||
RemoteSpeakerManager();
|
||||
|
||||
|
||||
@@ -9,7 +9,9 @@
|
||||
|
||||
#include "nw4r/snd/snd_BasicPlayer.h"
|
||||
#include "nw4r/snd/snd_DisposeCallbackManager.h" // DisposeCallback
|
||||
#include "nw4r/snd/snd_SeqTrack.h"
|
||||
#include "nw4r/snd/snd_SoundThread.h"
|
||||
#include "nw4r/ut/ut_Lock.h"
|
||||
|
||||
/*******************************************************************************
|
||||
* types
|
||||
@@ -128,6 +130,10 @@ namespace nw4r { namespace snd { namespace detail
|
||||
SeqTrack *GetPlayerTrack(int trackNo);
|
||||
s16 volatile *GetVariablePtr(int varNo);
|
||||
|
||||
s16 GetLocalVariable(int varNo) const;
|
||||
void SetLocalVariable(int varNo, s16 value);
|
||||
static void SetGlobalVariable(int varNo, s16 value);
|
||||
|
||||
void SetTempoRatio(f32 tempo);
|
||||
void SetReleasePriorityFix(bool fix);
|
||||
void SetChannelPriority(int priority);
|
||||
@@ -143,11 +149,19 @@ namespace nw4r { namespace snd { namespace detail
|
||||
return mParserParam.timebase * mParserParam.tempo * mTempoRatio;
|
||||
}
|
||||
|
||||
u32 GetTickCounter() const {
|
||||
return mTickCounter;
|
||||
}
|
||||
|
||||
void SetSeqData(void const *seqBase, s32 seqOffset);
|
||||
|
||||
void CallSeqUserprocCallback(u16 procId, SeqTrack *track);
|
||||
Channel *NoteOn(int bankNo, NoteOnInfo const ¬eOnInfo);
|
||||
|
||||
void SetTrackMute(u32 trackFlags, SeqMute mute);
|
||||
void SetTrackSilence(u32 trackFlags, bool silence, int fadeFrames);
|
||||
void SetTrackVolume(u32 trackFlags, f32 volume);
|
||||
|
||||
static void InitSeqPlayer();
|
||||
|
||||
private:
|
||||
@@ -162,6 +176,40 @@ namespace nw4r { namespace snd { namespace detail
|
||||
void UpdateTick(int msec);
|
||||
void SkipTick();
|
||||
|
||||
template <typename T>
|
||||
void SetTrackParam(u32 trackFlags, void (SeqTrack::*pSetter)(T), T param) {
|
||||
ut::AutoInterruptLock lock;
|
||||
|
||||
for (int i = 0; i < TRACK_NUM && trackFlags != 0;
|
||||
trackFlags >>= 1, i++) {
|
||||
|
||||
if (trackFlags & 1) {
|
||||
SeqTrack* pTrack = GetPlayerTrack(i);
|
||||
|
||||
if (pTrack != NULL) {
|
||||
(pTrack->*pSetter)(param);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
template <typename T, typename U>
|
||||
void SetTrackParam(u32 trackFlags, void (SeqTrack::*pSetter)(T, U), T param, U param2) {
|
||||
ut::AutoInterruptLock lock;
|
||||
|
||||
for (int i = 0; i < TRACK_NUM && trackFlags != 0;
|
||||
trackFlags >>= 1, i++) {
|
||||
|
||||
if (trackFlags & 1) {
|
||||
SeqTrack* pTrack = GetPlayerTrack(i);
|
||||
|
||||
if (pTrack != NULL) {
|
||||
(pTrack->*pSetter)(param, param2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// static members
|
||||
public:
|
||||
static int const MAX_SKIP_TICK_PER_FRAME = 768;
|
||||
@@ -172,6 +220,8 @@ namespace nw4r { namespace snd { namespace detail
|
||||
static int const GLOBAL_VARIABLE_NUM = 16;
|
||||
static int const PLAYER_VARIABLE_NUM = 16;
|
||||
|
||||
static const int TRACK_NUM = 16;
|
||||
|
||||
private:
|
||||
static s16 mGlobalVariable[GLOBAL_VARIABLE_NUM];
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ namespace nw4r { namespace snd { namespace detail
|
||||
/* redeclare with this class instead of BasicSound for
|
||||
* SoundInstanceManager
|
||||
*/
|
||||
typedef ut::LinkList<SeqSound, 0xe0> PriorityLinkList;
|
||||
typedef ut::LinkList<SeqSound, 0xf0> PriorityLinkList;
|
||||
|
||||
// nested types
|
||||
public:
|
||||
@@ -121,6 +121,15 @@ namespace nw4r { namespace snd { namespace detail
|
||||
static void NotifyLoadAsyncEndSeqData(bool result, void const *seqBase,
|
||||
void *userData);
|
||||
|
||||
void SetTrackMute(u32 trackFlags, SeqMute mute);
|
||||
void SetTrackSilence(u32 trackFlags, bool silence, int fadeFrames);
|
||||
void SetTrackVolume(u32 trackFlags, f32 volume);
|
||||
bool ReadVariable(int varNo, s16 *value) const;
|
||||
bool WriteVariable(int varNo, s16 value);
|
||||
static bool WriteGlobalVariable(int varNo, s16 value);
|
||||
bool WriteTrackVariable(int trackNo, int varNo, s16 value);
|
||||
u32 GetTick() const;
|
||||
|
||||
static DebugSoundType GetSoundType()
|
||||
{
|
||||
return DEBUG_SOUND_TYPE_SEQSOUND;
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
|
||||
#include "common.h" // nullptr
|
||||
|
||||
#include "nw4r/snd/snd_SeqSound.h"
|
||||
#include "nw4r/snd/snd_SeqTrack.h"
|
||||
#include "nw4r/ut/ut_NonCopyable.h" // ut::NonCopyable
|
||||
|
||||
/*******************************************************************************
|
||||
@@ -27,11 +29,38 @@ namespace nw4r { namespace snd
|
||||
{
|
||||
// methods
|
||||
public:
|
||||
SeqSoundHandle(SoundHandle*);
|
||||
~SeqSoundHandle() { DetachSound(); }
|
||||
// methods
|
||||
bool IsAttachedSound() const { return mSound != nullptr; }
|
||||
|
||||
void DetachSound();
|
||||
|
||||
void WriteVariable(int varNo, s16 value) {
|
||||
if (IsAttachedSound())
|
||||
mSound->WriteVariable(varNo, value);
|
||||
}
|
||||
|
||||
void ReadVariable(int varNo, s16 *value) {
|
||||
if (IsAttachedSound())
|
||||
mSound->ReadVariable(varNo, value);
|
||||
}
|
||||
|
||||
void SetTrackMute(u32 trackFlags, SeqMute mute) {
|
||||
if (IsAttachedSound())
|
||||
mSound->SetTrackMute(trackFlags, mute);
|
||||
}
|
||||
|
||||
void SetTempoRatio(f32 tempoRatio) {
|
||||
if (IsAttachedSound())
|
||||
mSound->SetTempoRatio(tempoRatio);
|
||||
}
|
||||
|
||||
void SetVolume(u32 trackFlags, f32 volume) {
|
||||
if (IsAttachedSound())
|
||||
mSound->SetTrackVolume(trackFlags, volume);
|
||||
}
|
||||
|
||||
// members
|
||||
private:
|
||||
/* base ut::NonCopyable */ // size 0x00, offset 0x00
|
||||
|
||||
@@ -93,9 +93,9 @@ namespace nw4r { namespace snd { namespace detail
|
||||
MoveValue<u8, s16> volume; // size 0x06, offset 0x54
|
||||
MoveValue<s8, s16> pan; // size 0x06, offset 0x5a
|
||||
MoveValue<s8, s16> surroundPan; // size 0x06, offset 0x60
|
||||
MoveValue<s8, s16> pitchBend; // size 0x01, offset 0x68
|
||||
u8 volume2; // size 0x01, offset 0x66
|
||||
u8 velocityRange; // size 0x01, offset 0x67
|
||||
s8 pitchBend; // size 0x01, offset 0x68
|
||||
u8 bendRange; // size 0x01, offset 0x69
|
||||
s8 initPan; // size 0x01, offset 0x6a
|
||||
s8 transpose; // size 0x01, offset 0x6b
|
||||
@@ -141,6 +141,7 @@ namespace nw4r { namespace snd { namespace detail
|
||||
|
||||
void SetPlayerTrackNo(int playerTrackNo);
|
||||
void SetVolume(f32);
|
||||
void SetTrackVariable(int variable, s16 value);
|
||||
void SetPitch(f32);
|
||||
void SetPan(f32);
|
||||
void SetSurroundPan(f32);
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
#ifndef NW4R_SND_SOUND_3D_ACTOR_H
|
||||
#define NW4R_SND_SOUND_3D_ACTOR_H
|
||||
|
||||
#include "nw4r/math.h"
|
||||
#include "nw4r/snd/snd_BasicSound.h"
|
||||
#include "nw4r/snd/snd_SoundActor.h"
|
||||
#include "nw4r/types_nw4r.h"
|
||||
|
||||
#include "nw4r/math.h"
|
||||
|
||||
namespace nw4r {
|
||||
namespace snd {
|
||||
@@ -14,27 +14,32 @@ namespace snd {
|
||||
class Sound3DActor : public SoundActor, public detail::BasicSound::AmbientInfo::AmbientArgUpdateCallback {
|
||||
public:
|
||||
Sound3DActor(SoundArchivePlayer &rPlayer, Sound3DManager &rManager);
|
||||
virtual ~Sound3DActor(); // at 0x8
|
||||
virtual ~Sound3DActor();
|
||||
|
||||
virtual StartResult detail_SetupSound(
|
||||
SoundHandle *pHandle, u32 id, detail::BasicSound::AmbientInfo *pArgInfo,
|
||||
detail::ExternalSoundPlayer *pPlayer, bool hold,
|
||||
const StartInfo *pStartInfo
|
||||
); // at 0xC
|
||||
virtual StartResult SetupSound(SoundHandle *pHandle, u32 soundId, const StartInfo *pStartInfo, void *) override;
|
||||
|
||||
virtual void detail_Update(void *pArg,
|
||||
const detail::BasicSound *pSound); // at 0xC
|
||||
// AmbientArgUpdateCallback
|
||||
virtual void at_0x0c(void *arg, detail::BasicSound* sound) override;
|
||||
|
||||
const nw4r::math::VEC3 &GetPosition() const {
|
||||
return mPosition;
|
||||
}
|
||||
void SetPosition(const math::VEC3 &rPosition);
|
||||
|
||||
void SetUserParam(u32 userParam) {
|
||||
mUserParam = userParam;
|
||||
}
|
||||
|
||||
private:
|
||||
static void ClearUpdateCallback(SoundHandle &rHandle);
|
||||
|
||||
private:
|
||||
Sound3DManager &m3DManager; // at 0xAC
|
||||
SoundArchivePlayer &mSoundArchivePlayer; // at 0xB0
|
||||
u32 mUserParam; // at 0xB4
|
||||
math::VEC3 mPosition; // at 0xB8
|
||||
Sound3DManager &m3DManager; // at 0x58
|
||||
SoundArchivePlayer *mSoundArchivePlayer; // at 0x5C
|
||||
u32 mUserParam; // at 0x60
|
||||
math::VEC3 mPosition; // at 0x64
|
||||
math::VEC3 mVelocity; // at 0x70
|
||||
bool mSkipVelocityUpdate; // at 0x7C
|
||||
};
|
||||
|
||||
} // namespace snd
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
#ifndef NW4R_SND_SOUND_3D_CALCULATOR_H
|
||||
#define NW4R_SND_SOUND_3D_CALCULATOR_H
|
||||
|
||||
#include "common.h"
|
||||
#include "nw4r/math/math_triangular.h"
|
||||
|
||||
namespace nw4r {
|
||||
namespace snd {
|
||||
|
||||
class Sound3DManager;
|
||||
class Sound3DParam;
|
||||
|
||||
class Sound3DCalculator {
|
||||
public:
|
||||
struct CalcPanParam {
|
||||
f32 speakerAngleStereo; // at 0x00
|
||||
f32 frontSpeakerAngleDpl2; // at 0x04
|
||||
f32 rearSpeakerAngleDpl2; // at 0x08
|
||||
f32 initPan; // at 0x0C
|
||||
|
||||
CalcPanParam()
|
||||
: speakerAngleStereo(NW4R_MATH_PI / 4),
|
||||
frontSpeakerAngleDpl2(NW4R_MATH_PI / 6),
|
||||
rearSpeakerAngleDpl2(2 * NW4R_MATH_PI / 3),
|
||||
initPan(0.0f) {}
|
||||
};
|
||||
|
||||
static void
|
||||
CalcVolumeAndPriority(const Sound3DManager &, const Sound3DListener &, const Sound3DParam &, float *, int *);
|
||||
static void CalcPan(
|
||||
const Sound3DManager &, const Sound3DListener &, const Sound3DParam &, const Sound3DCalculator::CalcPanParam &,
|
||||
float *pan, float *surroundPan
|
||||
);
|
||||
static void CalcPitch(const Sound3DManager &, const Sound3DListener &, const Sound3DParam &, float *);
|
||||
static void CalcBiquadFilterValue(const Sound3DManager &, const Sound3DListener &, const Sound3DParam &, float *);
|
||||
static void CalcPanDpl2(const nw4r::math::VEC3 &, float, float, float, float, float, float, float *, float *);
|
||||
static void CalcPanStereo(const nw4r::math::VEC3 &, float, float, float, float, float *, float *);
|
||||
static void CalcAngleAndDistance(const nw4r::math::VEC3 &, float, float, float *, float *);
|
||||
};
|
||||
|
||||
} // namespace snd
|
||||
} // namespace nw4r
|
||||
|
||||
#endif
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user