mirror of
https://github.com/zeldaret/ss
synced 2026-09-07 03:00:21 -04:00
Attempt d_a_obj_tower_hand_D101 (#96)
* Attempt d_a_obj_tower_hand_D101 * dAcOTowerHandD101_c probably equivalent * just two funcs, couldnt really do much to the rest --------- Co-authored-by: elijah-thomas774 <elijahthomas774@gmail.com>
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
# https://clangd.llvm.org/config
|
||||
CompileFlags:
|
||||
Add: [
|
||||
"-Wno-c++11-compat-deprecated-writable-strings"
|
||||
"-Wno-c++11-compat-deprecated-writable-strings",
|
||||
"-Wno-trigraphs",
|
||||
"-fno-trigraphs"
|
||||
]
|
||||
|
||||
@@ -17,3 +17,6 @@ REL/global_destructor_chain.c:
|
||||
REL/d/a/obj/d_a_obj_tower_hand_D101.cpp:
|
||||
.text start:0x000000F0 end:0x00003028
|
||||
.ctors start:0x00000000 end:0x00000004
|
||||
.rodata start:0x00000000 end:0x000000FC
|
||||
.data start:0x00000000 end:0x0000038C
|
||||
.bss start:0x00000008 end:0x00000198
|
||||
|
||||
@@ -8,66 +8,64 @@ __dt__32sFState_c<19dAcOTowerHandD101_c>Fv = .text:0x00000230; // type:function
|
||||
__dt__35sFStateFct_c<19dAcOTowerHandD101_c>Fv = .text:0x00000290; // type:function size:0x6C
|
||||
__dt__88sStateMgr_c<19dAcOTowerHandD101_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000300; // type:function size:0xA0
|
||||
__dt__58sFStateMgr_c<19dAcOTowerHandD101_c,20sStateMethodUsr_FI_c>Fv = .text:0x000003A0; // type:function size:0xA4
|
||||
fn_510_450 = .text:0x00000450; // type:function size:0x74
|
||||
fn_510_4D0 = .text:0x000004D0; // type:function size:0xC
|
||||
fn_510_4E0 = .text:0x000004E0; // type:function size:0xC
|
||||
fn_510_4F0 = .text:0x000004F0; // type:function size:0x20
|
||||
fn_510_510 = .text:0x00000510; // type:function size:0xA4
|
||||
fn_510_5C0 = .text:0x000005C0; // type:function size:0x8
|
||||
fn_510_5D0 = .text:0x000005D0; // type:function size:0x20
|
||||
fn_510_5F0 = .text:0x000005F0; // type:function size:0x2BC
|
||||
fn_510_8B0 = .text:0x000008B0; // type:function size:0x130
|
||||
fn_510_9E0 = .text:0x000009E0; // type:function size:0x120
|
||||
getScale__19dAcOTowerHandD101_cFiR7mVec3_c = .text:0x00000450; // type:function size:0x74
|
||||
getBoundingLower__19dAcOTowerHandD101_cFv = .text:0x000004D0; // type:function size:0xC
|
||||
getBoundingUpper__19dAcOTowerHandD101_cFv = .text:0x000004E0; // type:function size:0xC
|
||||
isValidDirectionParam__19dAcOTowerHandD101_cFi = .text:0x000004F0; // type:function size:0x20
|
||||
transformMtx__19dAcOTowerHandD101_cFRC7mVec3_cRC7mAng3_cRC7mVec3_cR7mVec3_c = .text:0x00000510; // type:function size:0xA4
|
||||
f32Sq__19dAcOTowerHandD101_cFf = .text:0x000005C0; // type:function size:0x8
|
||||
isValidBgWIndex__19dAcOTowerHandD101_cFi = .text:0x000005D0; // type:function size:0x20
|
||||
createHeap__19dAcOTowerHandD101_cFv = .text:0x000005F0; // type:function size:0x2BC
|
||||
actorCreate__19dAcOTowerHandD101_cFv = .text:0x000008B0; // type:function size:0x130
|
||||
actorPostCreate__19dAcOTowerHandD101_cFv = .text:0x000009E0; // type:function size:0x120
|
||||
changeState__88sStateMgr_c<19dAcOTowerHandD101_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00000B00; // type:function size:0x10
|
||||
fn_510_B10 = .text:0x00000B10; // type:function size:0x2C8
|
||||
actorExecute__19dAcOTowerHandD101_cFv = .text:0x00000B10; // type:function size:0x2C8
|
||||
executeState__88sStateMgr_c<19dAcOTowerHandD101_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000DE0; // type:function size:0x10
|
||||
fn_510_DF0 = .text:0x00000DF0; // type:function size:0x354
|
||||
actorExecuteInEvent__19dAcOTowerHandD101_cFv = .text:0x00000DF0; // type:function size:0x354
|
||||
getStateID__88sStateMgr_c<19dAcOTowerHandD101_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00001150; // type:function size:0x10
|
||||
fn_510_1160 = .text:0x00001160; // type:function size:0x28
|
||||
fn_510_1190 = .text:0x00001190; // type:function size:0x6C
|
||||
fn_510_1200 = .text:0x00001200; // type:function size:0x8
|
||||
fn_510_1210 = .text:0x00001210; // type:function size:0xC
|
||||
fn_510_1220 = .text:0x00001220; // type:function size:0xC
|
||||
fn_510_1230 = .text:0x00001230; // type:function size:0xC
|
||||
fn_510_1240 = .text:0x00001240; // type:function size:0xC
|
||||
fn_510_1250 = .text:0x00001250; // type:function size:0xC
|
||||
fn_510_1260 = .text:0x00001260; // type:function size:0xC
|
||||
fn_510_1270 = .text:0x00001270; // type:function size:0xC
|
||||
fn_510_1280 = .text:0x00001280; // type:function size:0xC
|
||||
fn_510_1290 = .text:0x00001290; // type:function size:0xC
|
||||
fn_510_12A0 = .text:0x000012A0; // type:function size:0xC
|
||||
fn_510_12B0 = .text:0x000012B0; // type:function size:0xC
|
||||
fn_510_12C0 = .text:0x000012C0; // type:function size:0xC
|
||||
fn_510_12D0 = .text:0x000012D0; // type:function size:0xC
|
||||
fn_510_12E0 = .text:0x000012E0; // type:function size:0x8
|
||||
fn_510_12F0 = .text:0x000012F0; // type:function size:0xC
|
||||
fn_510_1300 = .text:0x00001300; // type:function size:0xC
|
||||
fn_510_1310 = .text:0x00001310; // type:function size:0xC
|
||||
fn_510_1320 = .text:0x00001320; // type:function size:0xC
|
||||
fn_510_1330 = .text:0x00001330; // type:function size:0x54
|
||||
fn_510_1390 = .text:0x00001390; // type:function size:0xD0
|
||||
fn_510_1460 = .text:0x00001460; // type:function size:0x10
|
||||
fn_510_1470 = .text:0x00001470; // type:function size:0x10
|
||||
fn_510_1480 = .text:0x00001480; // type:function size:0x58
|
||||
fn_510_14E0 = .text:0x000014E0; // type:function size:0x4C
|
||||
fn_510_1530 = .text:0x00001530; // type:function size:0x24
|
||||
fn_510_1560 = .text:0x00001560; // type:function size:0x3C
|
||||
fn_510_15A0 = .text:0x000015A0; // type:function size:0x24
|
||||
fn_510_15D0 = .text:0x000015D0; // type:function size:0x24
|
||||
fn_510_1600 = .text:0x00001600; // type:function size:0x58
|
||||
fn_510_1660 = .text:0x00001660; // type:function size:0x5C
|
||||
fn_510_16C0 = .text:0x000016C0; // type:function size:0x54
|
||||
fn_510_1720 = .text:0x00001720; // type:function size:0x24
|
||||
fn_510_1744 = .text:0x00001744; // type:function size:0x4
|
||||
fn_510_1750 = .text:0x00001750; // type:function size:0x24
|
||||
fn_510_1774 = .text:0x00001774; // type:function size:0x4
|
||||
fn_510_1780 = .text:0x00001780; // type:function size:0x74
|
||||
fn_510_1800 = .text:0x00001800; // type:function size:0x38
|
||||
fn_510_1840 = .text:0x00001840; // type:function size:0x38
|
||||
fn_510_1880 = .text:0x00001880; // type:function size:0x48
|
||||
fn_510_18D0 = .text:0x000018D0; // type:function size:0x8C
|
||||
fn_510_1960 = .text:0x00001960; // type:function size:0x84
|
||||
fn_510_19F0 = .text:0x000019F0; // type:function size:0x18
|
||||
draw__19dAcOTowerHandD101_cFv = .text:0x00001160; // type:function size:0x28
|
||||
getBgW__19dAcOTowerHandD101_cFiRP4dBgW = .text:0x00001190; // type:function size:0x6C
|
||||
getEventStuff__19dAcOTowerHandD101_cFv = .text:0x00001200; // type:function size:0x8
|
||||
getItemOffsetX__19dAcOTowerHandD101_cFv = .text:0x00001210; // type:function size:0xC
|
||||
getItemOffsetY__19dAcOTowerHandD101_cFv = .text:0x00001220; // type:function size:0xC
|
||||
getItemOffsetZ__19dAcOTowerHandD101_cFv = .text:0x00001230; // type:function size:0xC
|
||||
getDist1__19dAcOTowerHandD101_cFv = .text:0x00001240; // type:function size:0xC
|
||||
getDist2__19dAcOTowerHandD101_cFv = .text:0x00001250; // type:function size:0xC
|
||||
getDist3__19dAcOTowerHandD101_cFv = .text:0x00001260; // type:function size:0xC
|
||||
getLinkOffsetX__19dAcOTowerHandD101_cFv = .text:0x00001270; // type:function size:0xC
|
||||
getLinkOffsetY__19dAcOTowerHandD101_cFv = .text:0x00001280; // type:function size:0xC
|
||||
getLinkOffsetZ__19dAcOTowerHandD101_cFv = .text:0x00001290; // type:function size:0xC
|
||||
getFrame1__19dAcOTowerHandD101_cFv = .text:0x000012A0; // type:function size:0xC
|
||||
getFrame2__19dAcOTowerHandD101_cFv = .text:0x000012B0; // type:function size:0xC
|
||||
getCloseRate__19dAcOTowerHandD101_cFv = .text:0x000012C0; // type:function size:0xC
|
||||
getOpenRate__19dAcOTowerHandD101_cFv = .text:0x000012D0; // type:function size:0xC
|
||||
doSomethingHold__19dAcOTowerHandD101_cFf = .text:0x000012E0; // type:function size:0x8
|
||||
getDirection__19dAcOTowerHandD101_cCFv = .text:0x000012F0; // type:function size:0xC
|
||||
getHoldFlag__19dAcOTowerHandD101_cCFv = .text:0x00001300; // type:function size:0xC
|
||||
getSceneFlag__19dAcOTowerHandD101_cCFv = .text:0x00001310; // type:function size:0xC
|
||||
getEventId__19dAcOTowerHandD101_cCFv = .text:0x00001320; // type:function size:0xC
|
||||
getBgWMtx__19dAcOTowerHandD101_cFiRP6mMtx_c = .text:0x00001330; // type:function size:0x54
|
||||
getNodeMtx__19dAcOTowerHandD101_cCFPCcR6mMtx_c = .text:0x00001390; // type:function size:0xD0
|
||||
getLoc1Mtx__19dAcOTowerHandD101_cCFR6mMtx_c = .text:0x00001460; // type:function size:0x10
|
||||
getLoc2Mtx__19dAcOTowerHandD101_cCFR6mMtx_c = .text:0x00001470; // type:function size:0x10
|
||||
getItemOffset__19dAcOTowerHandD101_cFv = .text:0x00001480; // type:function size:0x58
|
||||
getItemPos__19dAcOTowerHandD101_cCFR7mVec3_c = .text:0x000014E0; // type:function size:0x4C
|
||||
getDist1Sq__19dAcOTowerHandD101_cFv = .text:0x00001530; // type:function size:0x24
|
||||
getDist1PlusDist2__19dAcOTowerHandD101_cFv = .text:0x00001560; // type:function size:0x3C
|
||||
getDist1PlusDist2Sq__19dAcOTowerHandD101_cFv = .text:0x000015A0; // type:function size:0x24
|
||||
getDist3Sq__19dAcOTowerHandD101_cFv = .text:0x000015D0; // type:function size:0x24
|
||||
getLinkOffsetNormal__19dAcOTowerHandD101_cFR7mVec3_c = .text:0x00001600; // type:function size:0x58
|
||||
getLinkOffsetMirror__19dAcOTowerHandD101_cFR7mVec3_c = .text:0x00001660; // type:function size:0x5C
|
||||
getLinkOffset__19dAcOTowerHandD101_cCFR7mVec3_c = .text:0x000016C0; // type:function size:0x54
|
||||
setSceneFlag__19dAcOTowerHandD101_cCFi = .text:0x00001720; // type:function size:0x28
|
||||
unsetSceneFlag__19dAcOTowerHandD101_cCFi = .text:0x00001750; // type:function size:0x28
|
||||
checkSceneFlag1__19dAcOTowerHandD101_cCFiRb = .text:0x00001780; // type:function size:0x74
|
||||
setHoldFlag__19dAcOTowerHandD101_cFv = .text:0x00001800; // type:function size:0x38
|
||||
unsetHoldFlag__19dAcOTowerHandD101_cFv = .text:0x00001840; // type:function size:0x38
|
||||
checkFlag__19dAcOTowerHandD101_cCFRb = .text:0x00001880; // type:function size:0x48
|
||||
doEvent__19dAcOTowerHandD101_cFv = .text:0x000018D0; // type:function size:0x8C
|
||||
eventCallback__19dAcOTowerHandD101_cFPv = .text:0x00001960; // type:function size:0x84
|
||||
calcItemPosition__19dAcOTowerHandD101_cCFRC7mVec3_cR7mVec3_c = .text:0x000019F0; // type:function size:0x18
|
||||
initializeState_RemainOpen__19dAcOTowerHandD101_cFv = .text:0x00001A10; // type:function size:0x18
|
||||
executeState_RemainOpen__19dAcOTowerHandD101_cFv = .text:0x00001A30; // type:function size:0x194
|
||||
finalizeState_RemainOpen__19dAcOTowerHandD101_cFv = .text:0x00001BD0; // type:function size:0x4
|
||||
@@ -104,47 +102,48 @@ isSameName__34sFStateID_c<19dAcOTowerHandD101_c>CFPCc = .text:0x00002FA0; // typ
|
||||
_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_510_rodata_0 = .rodata:0x00000000; // type:object size:0x8 data:float
|
||||
lbl_510_rodata_8 = .rodata:0x00000008; // type:object size:0x20 data:4byte
|
||||
lbl_510_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:4byte
|
||||
lbl_510_rodata_2C = .rodata:0x0000002C; // type:object size:0x64 data:4byte
|
||||
lbl_510_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float
|
||||
lbl_510_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float
|
||||
lbl_510_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float
|
||||
lbl_510_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float
|
||||
lbl_510_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float
|
||||
lbl_510_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float
|
||||
lbl_510_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float
|
||||
lbl_510_rodata_AC = .rodata:0x000000AC; // type:object size:0x10 data:float
|
||||
lbl_510_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float
|
||||
lbl_510_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float
|
||||
lbl_510_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float
|
||||
lbl_510_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float
|
||||
lbl_510_rodata_CC = .rodata:0x000000CC; // type:object size:0x30 data:float
|
||||
lbl_510_rodata_0 = .rodata:0x00000000; // type:object size:0x8 scope:local data:float
|
||||
lbl_510_rodata_8 = .rodata:0x00000008; // type:object size:0x20 scope:local data:4byte
|
||||
lbl_510_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:4byte
|
||||
lbl_510_rodata_2C = .rodata:0x0000002C; // type:object size:0x64 scope:local data:4byte
|
||||
lbl_510_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float
|
||||
lbl_510_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float
|
||||
lbl_510_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float
|
||||
lbl_510_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float
|
||||
lbl_510_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float
|
||||
lbl_510_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float
|
||||
lbl_510_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float
|
||||
lbl_510_rodata_AC = .rodata:0x000000AC; // type:object size:0x10 scope:local data:float
|
||||
lbl_510_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float
|
||||
lbl_510_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float
|
||||
lbl_510_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float
|
||||
lbl_510_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float
|
||||
lbl_510_rodata_CC = .rodata:0x000000CC; // type:object size:0x30 scope:local data:float
|
||||
g_profile_OBJ_TOWER_HAND_D101 = .data:0x00000000; // type:object size:0x10 data:4byte
|
||||
lbl_510_data_10 = .data:0x00000010; // type:object size:0x10
|
||||
lbl_510_data_20 = .data:0x00000020; // type:object size:0x10
|
||||
lbl_510_data_30 = .data:0x00000030; // type:object size:0x10
|
||||
lbl_510_data_40 = .data:0x00000040; // type:object size:0x10
|
||||
lbl_510_data_50 = .data:0x00000050; // type:object size:0x14
|
||||
lbl_510_data_64 = .data:0x00000064; // type:object size:0x14
|
||||
lbl_510_data_78 = .data:0x00000078; // type:object size:0x14
|
||||
lbl_510_data_8C = .data:0x0000008C; // type:object size:0xC
|
||||
lbl_510_data_98 = .data:0x00000098; // type:object size:0xC
|
||||
lbl_510_data_A4 = .data:0x000000A4; // type:object size:0x24
|
||||
lbl_510_data_C8 = .data:0x000000C8; // type:object size:0x4 data:4byte
|
||||
lbl_510_data_CC = .data:0x000000CC; // type:object size:0x4 data:4byte
|
||||
lbl_510_data_D0 = .data:0x000000D0; // type:object size:0x80
|
||||
lbl_510_data_150 = .data:0x00000150; // type:object size:0x30
|
||||
lbl_510_data_180 = .data:0x00000180; // type:object size:0x30
|
||||
lbl_510_data_1B0 = .data:0x000001B0; // type:object size:0x18
|
||||
lbl_510_data_1C8 = .data:0x000001C8; // type:object size:0x190
|
||||
lbl_510_data_358 = .data:0x00000358; // type:object size:0x34
|
||||
lbl_510_data_10 = .data:0x00000010; // type:object size:0x10 scope:local
|
||||
lbl_510_data_20 = .data:0x00000020; // type:object size:0x10 scope:local
|
||||
lbl_510_data_30 = .data:0x00000030; // type:object size:0x10 scope:local
|
||||
lbl_510_data_40 = .data:0x00000040; // type:object size:0x10 scope:local
|
||||
lbl_510_data_50 = .data:0x00000050; // type:object size:0x14 scope:local
|
||||
lbl_510_data_64 = .data:0x00000064; // type:object size:0x14 scope:local
|
||||
lbl_510_data_78 = .data:0x00000078; // type:object size:0x14 scope:local
|
||||
lbl_510_data_8C = .data:0x0000008C; // type:object size:0xC scope:local
|
||||
lbl_510_data_98 = .data:0x00000098; // type:object size:0xC scope:local
|
||||
lbl_510_data_A4 = .data:0x000000A4; // type:object size:0x24 scope:local
|
||||
@LOCAL@getFlags__Fv@FLAGS_1 = .data:0x000000C8; // type:object size:0x4 data:4byte
|
||||
@LOCAL@getFlags__Fv@FLAGS_2@0 = .data:0x000000CC; // type:object size:0x4 data:4byte
|
||||
__vt__19dAcOTowerHandD101_c = .data:0x000000D0; // type:object size:0x80
|
||||
__vt__58sFStateMgr_c<19dAcOTowerHandD101_c,20sStateMethodUsr_FI_c> = .data:0x00000150; // type:object size:0x30
|
||||
__vt__88sStateMgr_c<19dAcOTowerHandD101_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x00000180; // type:object size:0x30
|
||||
__vt__35sFStateFct_c<19dAcOTowerHandD101_c> = .data:0x000001B0; // type:object size:0x14
|
||||
__vt__32sFState_c<19dAcOTowerHandD101_c> = .data:0x000001C8; // type:object size:0x18
|
||||
__vt__34sFStateID_c<19dAcOTowerHandD101_c> = .data:0x00000358; // type:object size:0x34
|
||||
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
|
||||
lbl_510_bss_8 = .bss:0x00000008; // type:object size:0x18 data:4byte
|
||||
lbl_510_bss_20 = .bss:0x00000020; // type:object size:0xC data:float
|
||||
lbl_510_bss_2C = .bss:0x0000002C; // type:object size:0x3C data:float
|
||||
lbl_510_bss_68 = .bss:0x00000068; // type:object size:0x40 data:4byte
|
||||
lbl_510_bss_A8 = .bss:0x000000A8; // type:object size:0x40 data:4byte
|
||||
lbl_510_bss_E8 = .bss:0x000000E8; // type:object size:0x40 data:4byte
|
||||
lbl_510_bss_128 = .bss:0x00000128; // type:object size:0x70 data:4byte
|
||||
lbl_510_bss_8 = .bss:0x00000008; // type:object size:0x18 scope:local data:4byte
|
||||
lbl_510_bss_20 = .bss:0x00000020; // type:object size:0xC scope:local data:float
|
||||
lbl_510_bss_2C = .bss:0x0000002C; // type:object size:0x3C scope:local data:float
|
||||
StateID_RemainOpen__19dAcOTowerHandD101_c = .bss:0x00000068; // type:object size:0x30 data:4byte
|
||||
StateID_Close__19dAcOTowerHandD101_c = .bss:0x000000A8; // type:object size:0x30 data:4byte
|
||||
StateID_RemainClosed__19dAcOTowerHandD101_c = .bss:0x000000E8; // type:object size:0x30 data:4byte
|
||||
StateID_Open__19dAcOTowerHandD101_c = .bss:0x00000128; // type:object size:0x30 data:4byte
|
||||
StateID_Hold__19dAcOTowerHandD101_c = .bss:0x00000168; // type:object size:0x30 data:4byte
|
||||
|
||||
+11
-11
@@ -908,7 +908,7 @@ fn_80026F50 = .text:0x80026F50; // type:function size:0xD8
|
||||
fn_80027030 = .text:0x80027030; // type:function size:0xD8
|
||||
fn_80027110 = .text:0x80027110; // type:function size:0xC8
|
||||
fn_800271E0 = .text:0x800271E0; // type:function size:0x44
|
||||
fn_80027230 = .text:0x80027230; // type:function size:0x78
|
||||
setMtx__13EffectsStructFRC6mMtx_c = .text:0x80027230; // type:function size:0x78
|
||||
fn_800272B0 = .text:0x800272B0; // type:function size:0x70
|
||||
fn_80027320 = .text:0x80027320; // type:function size:0x40
|
||||
fn_80027360 = .text:0x80027360; // type:function size:0x40
|
||||
@@ -920,7 +920,7 @@ fn_800274D0 = .text:0x800274D0; // type:function size:0x40
|
||||
fn_80027510 = .text:0x80027510; // type:function size:0x4C
|
||||
fn_80027560 = .text:0x80027560; // type:function size:0x5C
|
||||
__ct__13EffectsStructFv = .text:0x800275C0; // type:function size:0x44
|
||||
__ct__13EffectsStructFP9dAcBase_c = .text:0x80027610; // type:function size:0x44
|
||||
__ct__13EffectsStructFP7dBase_c = .text:0x80027610; // type:function size:0x44
|
||||
__dt__13EffectsStructFv = .text:0x80027660; // type:function size:0x78
|
||||
remove__13EffectsStructFb = .text:0x800276E0; // type:function size:0x84
|
||||
fn_80027770 = .text:0x80027770; // type:function size:0xE8
|
||||
@@ -1121,7 +1121,7 @@ restorePosRotFromCopy__12dAcObjBase_cFv = .text:0x8002E5C0; // type:function siz
|
||||
create__12dAcObjBase_cFQ28fProfile14PROFILE_NAME_eUlUlP7mVec3_cP7mAng3_cP7mVec3_cUl = .text:0x8002E630; // type:function size:0x98
|
||||
create__12dAcObjBase_cFPcUlUlP7mVec3_cP7mAng3_cP7mVec3_cUlUsSc = .text:0x8002E6D0; // type:function size:0xA0
|
||||
ActorObjectBase__findObject = .text:0x8002E770; // type:function size:0x7C
|
||||
getNextActorInList = .text:0x8002E7F0; // type:function size:0x58
|
||||
getNextObject__12dAcObjBase_cFP9fLiMgBa_cP12dAcObjBase_c = .text:0x8002E7F0; // type:function size:0x58
|
||||
isLinkPointer = .text:0x8002E850; // type:function size:0x14
|
||||
ActorObjectBase__calcVelocity = .text:0x8002E870; // type:function size:0x68
|
||||
calcVelocity__12dAcObjBase_cFv = .text:0x8002E8E0; // type:function size:0xB8
|
||||
@@ -2452,7 +2452,7 @@ isSpinAttackingVertically = .text:0x8005B850; // type:function size:0x20
|
||||
fn_8005B870 = .text:0x8005B870; // type:function size:0x28
|
||||
fn_8005B8A0 = .text:0x8005B8A0; // type:function size:0xC0
|
||||
ActorLink__setPosYRot = .text:0x8005B960; // type:function size:0x44
|
||||
fn_8005B9B0 = .text:0x8005B9B0; // type:function size:0x98
|
||||
setTransform__7dAcPy_cFRC6mMtx_ciii = .text:0x8005B9B0; // type:function size:0x98
|
||||
fn_8005BA50 = .text:0x8005BA50; // type:function size:0x30
|
||||
fn_8005BA80 = .text:0x8005BA80; // type:function size:0x8
|
||||
fn_8005BA90 = .text:0x8005BA90; // type:function size:0x8
|
||||
@@ -3523,7 +3523,7 @@ ActorEventRelated__cutEnd = .text:0x8009CEB0; // type:function size:0x30
|
||||
ActorEventRelated__getCurrentStepIndex = .text:0x8009CEE0; // type:function size:0x30
|
||||
getCurrentEventCommand__17ActorEventRelatedCFv = .text:0x8009CF10; // type:function size:0x84
|
||||
ActorEventRelated__getSomeEventRelatedNumber = .text:0x8009CFA0; // type:function size:0x80
|
||||
ActorEventRelated__isAdvance = .text:0x8009D020; // type:function size:0x34
|
||||
isAdvance__17ActorEventRelatedFv = .text:0x8009D020; // type:function size:0x34
|
||||
advanceNext__17ActorEventRelatedFv = .text:0x8009D060; // type:function size:0x50
|
||||
ActorEventRelated__getSingleIntData2 = .text:0x8009D0B0; // type:function size:0x8C
|
||||
ActorEventRelated__getSingleIntData = .text:0x8009D140; // type:function size:0x8C
|
||||
@@ -13452,10 +13452,10 @@ AcItem__stateWaitTurnOffLeave = .text:0x80250630; // type:function size:0x4
|
||||
AcItem__stateWaitSacredDewGetEffectEnter = .text:0x80250640; // type:function size:0x64
|
||||
AcItem__stateWaitSacredDewGetEffectUpdate = .text:0x802506B0; // type:function size:0x80
|
||||
AcItem__stateWaitSacredDewGetEffectLeave = .text:0x80250730; // type:function size:0x4
|
||||
getItemFromBWheelItem = .text:0x80250740; // type:function size:0xEC
|
||||
fn_80250830 = .text:0x80250830; // type:function size:0x40
|
||||
getItemFromBWheelItem__9dAcItem_cFv = .text:0x80250740; // type:function size:0xEC
|
||||
setItemPosition__9dAcItem_cFRC7mVec3_c = .text:0x80250830; // type:function size:0x40
|
||||
fn_80250870 = .text:0x80250870; // type:function size:0x38
|
||||
AcItem__isStateWait = .text:0x802508B0; // type:function size:0x50
|
||||
isStateWait__9dAcItem_cFv = .text:0x802508B0; // type:function size:0x50
|
||||
AcItem__setCarriedAndTransitionToGetState = .text:0x80250900; // type:function size:0x50
|
||||
AcItem__isGreenRupee = .text:0x80250950; // type:function size:0x10
|
||||
AcItem__isBlueRupee = .text:0x80250960; // type:function size:0x10
|
||||
@@ -17846,7 +17846,7 @@ YrotM__6mMtx_cFRC4mAng = .text:0x802F1880; // type:function size:0x4C
|
||||
mMtx__ZrotS = .text:0x802F18D0; // type:function size:0xBC
|
||||
ZrotM__6mMtx_cFRC4mAng = .text:0x802F1990; // type:function size:0x4C
|
||||
ZXYrotS__6mMtx_cFRC4mAngRC4mAngRC4mAng = .text:0x802F19E0; // type:function size:0x60
|
||||
mMtx__ZXYrotM = .text:0x802F1A40; // type:function size:0x60
|
||||
ZXYrotM__6mMtx_cFRC4mAngRC4mAngRC4mAng = .text:0x802F1A40; // type:function size:0x60
|
||||
mMtx__XYZrotS = .text:0x802F1AA0; // type:function size:0x60
|
||||
mMtx__ZYXrotM = .text:0x802F1B00; // type:function size:0x60
|
||||
toRot__6mMtx_cCFR7mAng3_c = .text:0x802F1B60; // type:function size:0xDC
|
||||
@@ -39924,7 +39924,7 @@ GROOSENATOR_REF = .sbss:0x80575360; // type:object size:0x4 data:4byte
|
||||
lbl_80575364 = .sbss:0x80575364; // type:object size:0x4 data:4byte
|
||||
lbl_80575368 = .sbss:0x80575368; // type:object size:0x8 data:4byte
|
||||
sInstance__16AttentionManager = .sbss:0x80575370; // type:object size:0x8 data:4byte
|
||||
EVENT_RELATED = .sbss:0x80575378; // type:object size:0x4 data:4byte
|
||||
sInstance__12EventManager = .sbss:0x80575378; // type:object size:0x4 data:4byte
|
||||
lbl_8057537C = .sbss:0x8057537C; // type:object size:0xC data:byte
|
||||
lbl_80575388 = .sbss:0x80575388; // type:object size:0x8 data:byte
|
||||
lbl_80575390 = .sbss:0x80575390; // type:object size:0x4 data:4byte
|
||||
@@ -40217,7 +40217,7 @@ lbl_805758B6 = .sbss:0x805758B6; // type:object size:0x1 data:byte
|
||||
lbl_805758B7 = .sbss:0x805758B7; // type:object size:0x1 data:byte
|
||||
lbl_805758B8 = .sbss:0x805758B8; // type:object size:0x4 data:float
|
||||
lbl_805758BC = .sbss:0x805758BC; // type:object size:0x4 data:float
|
||||
ITEM_ACTOR_LIST = .sbss:0x805758C0; // type:object size:0x8 data:4byte
|
||||
sItemList__9dAcItem_c = .sbss:0x805758C0; // type:object size:0x8 data:4byte
|
||||
lbl_805758C8 = .sbss:0x805758C8; // type:object size:0x8 data:4byte
|
||||
NUMBER_OF_ITEMS = .sbss:0x805758D0; // type:object size:0x4 data:4byte
|
||||
lbl_805758D4 = .sbss:0x805758D4; // type:object size:0x1 data:byte
|
||||
|
||||
+1
-1
@@ -117,7 +117,7 @@ typedef volatile f32 vf32;
|
||||
typedef volatile f64 vf64;
|
||||
|
||||
// Necesary for CW
|
||||
#if __cplusplus < 201103L && !defined(_WIN32)
|
||||
#if __MWERKS__
|
||||
#define override
|
||||
#define noexcept
|
||||
#define nullptr NULL
|
||||
|
||||
@@ -58,6 +58,9 @@ public:
|
||||
const T *get() const {
|
||||
return static_cast<const T *>(p_owner);
|
||||
}
|
||||
BOOL isLinked() const {
|
||||
return get() != nullptr;
|
||||
}
|
||||
};
|
||||
|
||||
// Ghidra: ActorBase
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
#include "d/a/d_a_base.h"
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "m/m_mtx.h"
|
||||
|
||||
class dAcPy_c : public dAcObjBase_c {
|
||||
// See Below for some info
|
||||
@@ -47,11 +49,13 @@ public:
|
||||
dAcPy_c();
|
||||
virtual ~dAcPy_c();
|
||||
|
||||
/* vt 0x080 */ virtual void IfCurrentActionToActor();
|
||||
/* vt 0x084 */ virtual void vt_0x084();
|
||||
/* vt 0x088 */ virtual void set0x439F();
|
||||
void setTransform(const mMtx_c &mtx, UNKWORD, UNKWORD, UNKWORD);
|
||||
|
||||
/* vt 0x080 */ virtual UNKWORD IfCurrentActionToActor(dAcBase_c *ac, UNKWORD);
|
||||
/* vt 0x084 */ virtual void vt_0x084(dAcBase_c *ac, UNKWORD);
|
||||
/* vt 0x088 */ virtual void set0x439F(dAcBase_c *ac, UNKWORD);
|
||||
/* vt 0x08C */ virtual void set0x43DE();
|
||||
/* vt 0x090 */ virtual void vt_0x090();
|
||||
/* vt 0x090 */ virtual f32 vt_0x090();
|
||||
/* vt 0x094 */ virtual void relatedToUsingItem0x11();
|
||||
/* vt 0x098 */ virtual void setPosRot();
|
||||
/* vt 0x09C */ virtual void isLiftingObject();
|
||||
|
||||
@@ -133,7 +133,7 @@ public:
|
||||
);
|
||||
/* 8002e770 */ static dAcObjBase_c *
|
||||
findObject(fProfile::PROFILE_NAME_e actorId, fLiNdBa_c *refList, dAcObjBase_c *parent);
|
||||
/* 8002e7f0 */ static dAcObjBase_c *getNextObject(fLiNdBa_c *ref, dAcObjBase_c *parent);
|
||||
/* 8002e7f0 */ static dAcObjBase_c *getNextObject(fLiMgBa_c *ref, dAcObjBase_c *parent);
|
||||
/* 8002e850 */ bool isPlayer();
|
||||
/* 8002e870 */ void calcVelocity(mVec3_c &pos, f32 speed);
|
||||
/* 8002e8e0 */ void calcVelocity();
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define D_A_ITEM_BASE_H
|
||||
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "m/m_vec.h"
|
||||
|
||||
// Ghidra: AcItem
|
||||
// Size: 0xd68
|
||||
@@ -14,6 +15,11 @@ public:
|
||||
static void spawnDrop(u16 item, u32 room, const mVec3_c &pos, const mAng3_c &rot);
|
||||
|
||||
static u32 checkFlag(u32 flag);
|
||||
void setItemPosition(const mVec3_c &);
|
||||
void getItemFromBWheelItem();
|
||||
bool isStateWait();
|
||||
|
||||
static fLiMgBa_c sItemList;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,13 +1,23 @@
|
||||
#ifndef D_A_OBJ_TOWER_HAND_D101_H
|
||||
#define D_A_OBJ_TOWER_HAND_D101_H
|
||||
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_base.h"
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/a/obj/d_a_obj_item.h"
|
||||
#include "d/col/bg/d_bg_w.h"
|
||||
#include "m/m3d/m_anmmdl.h"
|
||||
#include "m/m_angle.h"
|
||||
#include "m/m_mtx.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "s/s_State.hpp"
|
||||
#include "s/s_StateMgr.hpp"
|
||||
#include "toBeSorted/actor_event.h"
|
||||
#include "toBeSorted/effects_struct.h"
|
||||
|
||||
class dAcOTowerHandD101_c : public dAcObjBase_c {
|
||||
public:
|
||||
dAcOTowerHandD101_c() : mStateMgr(*this, sStateID::null) {}
|
||||
dAcOTowerHandD101_c() : mStateMgr(*this, sStateID::null), mEffects(this), mEvent(*this, nullptr), mFlags(0) {}
|
||||
virtual ~dAcOTowerHandD101_c() {}
|
||||
|
||||
STATE_FUNC_DECLARE(dAcOTowerHandD101_c, RemainOpen);
|
||||
@@ -16,8 +26,95 @@ public:
|
||||
STATE_FUNC_DECLARE(dAcOTowerHandD101_c, Open);
|
||||
STATE_FUNC_DECLARE(dAcOTowerHandD101_c, Hold);
|
||||
|
||||
virtual bool createHeap() override;
|
||||
virtual int actorCreate() override;
|
||||
virtual int actorPostCreate() override;
|
||||
virtual int actorExecute() override;
|
||||
virtual int actorExecuteInEvent() override;
|
||||
|
||||
virtual int draw() override;
|
||||
|
||||
private:
|
||||
/* 0x??? */ STATE_MGR_DECLARE(dAcOTowerHandD101_c);
|
||||
int getDirection() const;
|
||||
int getHoldFlag() const;
|
||||
int getSceneFlag() const;
|
||||
u32 getEventId() const;
|
||||
|
||||
inline bool getItem(dAcItem_c *&outItem, bool &outIsWait);
|
||||
inline bool getItem(dAcItem_c *&outItem);
|
||||
|
||||
static bool isValidDirectionParam(int param);
|
||||
static bool getScale(int direction, mVec3_c &outScale);
|
||||
bool getNodeMtx(const char *nodeName, mMtx_c &outMtx) const;
|
||||
bool getLoc1Mtx(mMtx_c &outMtx) const;
|
||||
bool getLoc2Mtx(mMtx_c &outMtx) const;
|
||||
|
||||
static const mVec3_c &getBoundingLower();
|
||||
static const mVec3_c &getBoundingUpper();
|
||||
|
||||
static bool isValidBgWIndex(int index);
|
||||
bool getBgW(int index, dBgW *&outBgW);
|
||||
bool getBgWMtx(int index, mMtx_c *&outMtx);
|
||||
|
||||
static f32 getFrame1();
|
||||
static f32 getFrame2();
|
||||
|
||||
void doSomethingHold(f32 flag);
|
||||
|
||||
void getItemPos(mVec3_c &vec) const;
|
||||
ActorEventRelated &getEventStuff();
|
||||
void doEvent();
|
||||
|
||||
static f32 getDist1();
|
||||
static f32 getDist2();
|
||||
static f32 getDist3();
|
||||
|
||||
static f32 getDist1Sq();
|
||||
static f32 getDist1PlusDist2();
|
||||
static f32 getDist1PlusDist2Sq();
|
||||
static f32 getDist3Sq();
|
||||
static f32 getCloseRate();
|
||||
static f32 getOpenRate();
|
||||
|
||||
bool checkFlag(bool &result) const;
|
||||
void setSceneFlag(int flag) const;
|
||||
void unsetSceneFlag(int flag) const;
|
||||
bool checkSceneFlag1(int flag, bool &result) const;
|
||||
|
||||
void setHoldFlag();
|
||||
void unsetHoldFlag();
|
||||
|
||||
static void eventCallback(void *self);
|
||||
|
||||
static void
|
||||
transformMtx(const mVec3_c &localTranslation, const mAng3_c &rotation, const mVec3_c &offset, mVec3_c &result);
|
||||
static f32 f32Sq(f32 val);
|
||||
|
||||
static f32 getItemOffsetX();
|
||||
static f32 getItemOffsetY();
|
||||
static f32 getItemOffsetZ();
|
||||
static mVec3_c getItemOffset();
|
||||
void calcItemPosition(const mVec3_c &offset, mVec3_c &outPosition) const;
|
||||
|
||||
static f32 getLinkOffsetX();
|
||||
static f32 getLinkOffsetY();
|
||||
static f32 getLinkOffsetZ();
|
||||
static void getLinkOffsetNormal(mVec3_c &out);
|
||||
static void getLinkOffsetMirror(mVec3_c &out);
|
||||
void getLinkOffset(mVec3_c &out) const;
|
||||
|
||||
/* 0x330 */ m3d::mdlAnmChr mMdl;
|
||||
/* 0x398 */ EffectsStruct mEffects;
|
||||
/* 0x3CC */ dBgW mBgWs[3];
|
||||
/* 0x9FC */ STATE_MGR_DECLARE(dAcOTowerHandD101_c);
|
||||
/* 0xA38 */ ActorEventRelated mEvent;
|
||||
/* 0xA88 */ mMtx_c mLoc1Mtx;
|
||||
/* 0xAB8 */ mMtx_c mLoc2Mtx;
|
||||
/* 0xAE8 */ dAcRef_c<dAcItem_c> mHeldItem;
|
||||
/* 0xAF4 */ f32 field_0xAF4;
|
||||
/* 0xAF8 */ u8 field_0xAF8[0xB04 - 0xAF8];
|
||||
/* 0xB04 */ u32 mFlags;
|
||||
/* 0xB08 */ u16 field_0xB08;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -45,10 +45,18 @@ public:
|
||||
return mMdl;
|
||||
}
|
||||
|
||||
inline const mdl_c &getModel() const {
|
||||
return mMdl;
|
||||
}
|
||||
|
||||
inline anmChr_c &getAnm() {
|
||||
return mAnm;
|
||||
}
|
||||
|
||||
inline const anmChr_c &getAnm() const {
|
||||
return mAnm;
|
||||
}
|
||||
|
||||
private:
|
||||
nw4r::g3d::ResFile mMdlFile;
|
||||
nw4r::g3d::ResFile mAnmFile;
|
||||
|
||||
+2
-2
@@ -65,10 +65,10 @@ public:
|
||||
void rot(int, int); // does some werrd operation to rotate the matrix
|
||||
bool quatRelated();
|
||||
|
||||
void trans(const mVec3_c &v) {
|
||||
void transS(const mVec3_c &v) {
|
||||
PSMTXTrans(*this, v.x, v.y, v.z);
|
||||
}
|
||||
void trans(f32 x, f32 y, f32 z) {
|
||||
void transS(f32 x, f32 y, f32 z) {
|
||||
PSMTXTrans(*this, x, y, z);
|
||||
}
|
||||
mVec3_c multVec(const mVec3_c &v) const {
|
||||
|
||||
@@ -14,6 +14,7 @@ public:
|
||||
void scheduleEvent(Event &, u32);
|
||||
u32 getCurrentEventCommand() const;
|
||||
void advanceNext();
|
||||
bool isAdvance();
|
||||
|
||||
private:
|
||||
u8 field_0x00[0x50 - 0x00];
|
||||
|
||||
@@ -3,10 +3,13 @@
|
||||
|
||||
#include "common.h"
|
||||
#include "d/d_base.h"
|
||||
#include "m/m_mtx.h"
|
||||
#include "m/m_vec.h"
|
||||
|
||||
class EffectsStruct {
|
||||
private:
|
||||
u8 field_0x00[0x1C - 0x00];
|
||||
s32 field_0x00;
|
||||
u8 field_0x04[0x1C - 0x04];
|
||||
|
||||
public:
|
||||
// vt at 0x1C
|
||||
@@ -19,6 +22,12 @@ public:
|
||||
}
|
||||
|
||||
void remove(bool);
|
||||
void fn_80029929(u16 effect, mVec3_c *pos, void *, void *, void *, void *);
|
||||
void setMtx(const mMtx_c&);
|
||||
|
||||
bool checkField0x00() const {
|
||||
return field_0x00 != 0;
|
||||
}
|
||||
|
||||
private:
|
||||
u8 field_0x20[0x28 - 0x20];
|
||||
|
||||
@@ -1,25 +1,796 @@
|
||||
#include "d/a/obj/d_a_obj_tower_hand_D101.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_player.h"
|
||||
#include "d/a/obj/d_a_obj_item.h"
|
||||
#include "d/col/bg/d_bg_s.h"
|
||||
#include "d/col/bg/d_bg_w.h"
|
||||
#include "d/flag/sceneflag_manager.h"
|
||||
#include "f/f_base.h"
|
||||
#include "m/m3d/m_fanm.h"
|
||||
#include "m/m_angle.h"
|
||||
#include "m/m_mtx.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "nw4r/g3d/g3d_resfile.h"
|
||||
#include "rvl/MTX/mtx.h"
|
||||
#include "rvl/MTX/vec.h"
|
||||
#include "s/s_Math.h"
|
||||
#include "toBeSorted/actor_event.h"
|
||||
#include "toBeSorted/event_manager.h"
|
||||
#include "toBeSorted/room_manager.h"
|
||||
|
||||
SPECIAL_ACTOR_PROFILE(OBJ_TOWER_HAND_D101, dAcOTowerHandD101_c, fProfile::OBJ_TOWER_HAND_D101, 0x180, 0, 6);
|
||||
|
||||
const mVec3_c sScales[2] = {mVec3_c(1.0f, 1.0f, 1.0f), mVec3_c(-1.0f, 1.0f, 1.0f)};
|
||||
const mVec3_c sBoundingLower = mVec3_c(-1000.0f, 0.0f, -600.0f);
|
||||
const mVec3_c sBoundingUpper = mVec3_c(1000.0f, 1000.0f, 1000.0f);
|
||||
|
||||
const mVec3_c v1 = mVec3_c::Ex * 50.0f;
|
||||
const mVec3_c v2 = mVec3_c::Ey * 50.0f;
|
||||
const mVec3_c v3 = mVec3_c::Ez * 50.0f;
|
||||
|
||||
STATE_DEFINE(dAcOTowerHandD101_c, RemainOpen);
|
||||
STATE_DEFINE(dAcOTowerHandD101_c, Close);
|
||||
STATE_DEFINE(dAcOTowerHandD101_c, RemainClosed);
|
||||
STATE_DEFINE(dAcOTowerHandD101_c, Open);
|
||||
STATE_DEFINE(dAcOTowerHandD101_c, Hold);
|
||||
|
||||
void dAcOTowerHandD101_c::initializeState_RemainOpen() {}
|
||||
void dAcOTowerHandD101_c::executeState_RemainOpen() {}
|
||||
static const char *const sOarcName = "TowerHandD101";
|
||||
static const char *const sMdlName = "TowerHandD101";
|
||||
static const char *const sAnmName = "TowerHandD101";
|
||||
|
||||
static const char *const sCollisionParts[2][3] = {
|
||||
{ "TowerHandD101A", "TowerHandD101B", "TowerHandD101C"},
|
||||
{"TowerHandD101A_R", "TowerHandD101B_R", "TowerHandD101C_R"},
|
||||
};
|
||||
|
||||
static const char *const sLocator1 = "locator1";
|
||||
static const char *const sLocator2 = "locator2";
|
||||
|
||||
// TODO there are tons of unused floats in the rodata section
|
||||
|
||||
bool dAcOTowerHandD101_c::getScale(int direction, mVec3_c &outScale) {
|
||||
if (!isValidDirectionParam(direction)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
outScale.x = sScales[direction].x;
|
||||
outScale.y = sScales[direction].y;
|
||||
outScale.z = sScales[direction].z;
|
||||
return true;
|
||||
}
|
||||
|
||||
const mVec3_c &dAcOTowerHandD101_c::getBoundingLower() {
|
||||
return sBoundingLower;
|
||||
}
|
||||
|
||||
const mVec3_c &dAcOTowerHandD101_c::getBoundingUpper() {
|
||||
return sBoundingUpper;
|
||||
}
|
||||
|
||||
bool dAcOTowerHandD101_c::isValidDirectionParam(int param) {
|
||||
return 0 <= param && param <= 1;
|
||||
}
|
||||
|
||||
void dAcOTowerHandD101_c::transformMtx(
|
||||
const mVec3_c &localTranslation, const mAng3_c &rotation, const mVec3_c &offset, mVec3_c &result
|
||||
) {
|
||||
mMtx_c tmp1, tmp2;
|
||||
tmp1.transS(localTranslation);
|
||||
tmp1.ZXYrotM(rotation.x, rotation.y, rotation.z);
|
||||
tmp2.transS(offset);
|
||||
tmp1 += tmp2;
|
||||
tmp1.getTranslation(result);
|
||||
}
|
||||
|
||||
f32 dAcOTowerHandD101_c::f32Sq(f32 value) {
|
||||
return value * value;
|
||||
}
|
||||
|
||||
bool dAcOTowerHandD101_c::isValidBgWIndex(int index) {
|
||||
return 0 <= index && index <= 2;
|
||||
}
|
||||
|
||||
bool dAcOTowerHandD101_c::createHeap() {
|
||||
const char *oarcName = sOarcName;
|
||||
void *resP = getOarcResFile(oarcName);
|
||||
if (resP == nullptr) {
|
||||
return false;
|
||||
}
|
||||
if (!mMdl.create(resP, sMdlName, sAnmName, &heap_allocator, 0x130)) {
|
||||
return false;
|
||||
}
|
||||
int direction = getDirection();
|
||||
if (!isValidDirectionParam(direction)) {
|
||||
return false;
|
||||
}
|
||||
nw4r::g3d::ResFile res = resP;
|
||||
if (!res.mFile.IsValid()) {
|
||||
return false;
|
||||
}
|
||||
RoomManager::bindStageResToFile(&res);
|
||||
if (direction == 1) {
|
||||
mMdl.getModel().setCullModeAll(GX_CULL_FRONT, false);
|
||||
}
|
||||
updateMatrix();
|
||||
mMdl.getModel().setLocalMtx(mWorldMtx);
|
||||
mVec3_c newScale;
|
||||
if (!getScale(direction, newScale)) {
|
||||
return false;
|
||||
}
|
||||
mMdl.getModel().setScale(newScale);
|
||||
mMdl.getModel().calc(false);
|
||||
mMtx_c loc1Mtx;
|
||||
getLoc1Mtx(loc1Mtx);
|
||||
mLoc1Mtx.copyFrom(loc1Mtx);
|
||||
mMtx_c loc2Mtx;
|
||||
getLoc2Mtx(loc2Mtx);
|
||||
mLoc2Mtx.copyFrom(loc2Mtx);
|
||||
|
||||
const char *const *parts = sCollisionParts[direction];
|
||||
for (int i = 0; i <= 2; i++) {
|
||||
void *dzb = getOarcDZB(oarcName, parts[i]);
|
||||
if (dzb == nullptr) {
|
||||
return false;
|
||||
}
|
||||
void *plc = getOarcPLC(oarcName, parts[i]);
|
||||
if (plc == nullptr) {
|
||||
return false;
|
||||
}
|
||||
dBgW *bgW = nullptr;
|
||||
getBgW(i, bgW);
|
||||
mMtx_c *bgWMtx;
|
||||
getBgWMtx(i, bgWMtx);
|
||||
bool ok = !(BOOL)bgW->Set((cBgD_t *)dzb, (PLC *)plc, cBgW::MOVE_BG_e, bgWMtx, &mScale);
|
||||
if (!ok) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int dAcOTowerHandD101_c::actorCreate() {
|
||||
CREATE_ALLOCATOR(dAcOTowerHandD101_c);
|
||||
|
||||
mMdl.getModel().setLocalMtx(mWorldMtx);
|
||||
mMdl.setAnm(sAnmName, m3d::PLAY_MODE_4, 0.0f);
|
||||
mMdl.getModel().setPriorityDraw(0x1C, 0);
|
||||
for (int i = 0; i <= 2; i++) {
|
||||
dBgW *bgW = nullptr;
|
||||
getBgW(i, bgW);
|
||||
bgW->SetCrrFunc(dBgS_MoveBGProc_Typical);
|
||||
dBgS::GetInstance()->Regist(bgW, this);
|
||||
}
|
||||
|
||||
boundingBox.Set(getBoundingLower(), getBoundingUpper());
|
||||
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
int dAcOTowerHandD101_c::actorPostCreate() {
|
||||
mVec3_c pos;
|
||||
getItemPos(pos);
|
||||
bool handClosed = true;
|
||||
dAcObjBase_c *ac = dAcObjBase_c::getNextObject(&dAcItem_c::sItemList, nullptr);
|
||||
f32 distLimit = 90000.0f;
|
||||
while (handClosed && ac != nullptr) {
|
||||
if (PSVECSquareDistance(pos, ac->position) < distLimit) {
|
||||
handClosed = false;
|
||||
mHeldItem.link(static_cast<dAcItem_c *>(ac));
|
||||
} else {
|
||||
ac = dAcObjBase_c::getNextObject(&dAcItem_c::sItemList, ac);
|
||||
}
|
||||
}
|
||||
|
||||
if (handClosed) {
|
||||
mFlags |= 1;
|
||||
}
|
||||
|
||||
if (handClosed) {
|
||||
mStateMgr.changeState(StateID_RemainClosed);
|
||||
} else {
|
||||
mStateMgr.changeState(StateID_RemainOpen);
|
||||
}
|
||||
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
inline bool dAcOTowerHandD101_c::getItem(dAcItem_c *&outItem) {
|
||||
outItem = !mHeldItem.isLinked() ? nullptr : mHeldItem.get();
|
||||
bool ret = outItem == nullptr;
|
||||
return ret;
|
||||
}
|
||||
|
||||
int dAcOTowerHandD101_c::actorExecute() {
|
||||
dAcPy_c *link;
|
||||
dAcItem_c *item;
|
||||
link = dAcPy_c::LINK;
|
||||
UNKWORD w = link->IfCurrentActionToActor(this, 0x3D);
|
||||
bool b = getItem(item);
|
||||
if (!b && item->isStateWait()) {
|
||||
f32 dist = PSVECSquareDistance(item->position, link->position);
|
||||
if (w == 0 && dist < 15625.0f) {
|
||||
item->getItemFromBWheelItem();
|
||||
} else {
|
||||
item->setItemPosition(item->position);
|
||||
}
|
||||
}
|
||||
|
||||
bool doSomething;
|
||||
if (b) {
|
||||
doSomething = true;
|
||||
} else {
|
||||
doSomething = !item->isStateWait();
|
||||
}
|
||||
if (b || doSomething) {
|
||||
link->vt_0x084(this, 0x3D);
|
||||
}
|
||||
mStateMgr.executeState();
|
||||
|
||||
mVec3_c newScale;
|
||||
int direction = getDirection();
|
||||
getScale(direction, newScale);
|
||||
mMdl.getModel().calc(false);
|
||||
|
||||
mMtx_c tmpMtx2;
|
||||
mMtx_c tmpMtx3;
|
||||
mMtx_c tmpMtx1;
|
||||
mMtx_c tmpMtx4;
|
||||
|
||||
getLoc1Mtx(tmpMtx2);
|
||||
PSMTXScale(tmpMtx1, newScale.x, newScale.y, newScale.z);
|
||||
PSMTXConcat(tmpMtx2, tmpMtx1, tmpMtx2);
|
||||
mLoc1Mtx.copyFrom(tmpMtx2);
|
||||
|
||||
getLoc2Mtx(tmpMtx3);
|
||||
PSMTXScale(tmpMtx4, newScale.x, newScale.y, newScale.z);
|
||||
PSMTXConcat(tmpMtx3, tmpMtx4, tmpMtx3);
|
||||
mLoc2Mtx.copyFrom(tmpMtx3);
|
||||
|
||||
if (mEffects.checkField0x00()) {
|
||||
if (direction == 1) {
|
||||
tmpMtx3.YrotM(-0x8000);
|
||||
}
|
||||
mEffects.setMtx(tmpMtx3);
|
||||
}
|
||||
for (int i = 0; i <= 2; i++) {
|
||||
dBgW *bgW = nullptr;
|
||||
getBgW(i, bgW);
|
||||
bgW->Move();
|
||||
}
|
||||
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
int dAcOTowerHandD101_c::actorExecuteInEvent() {
|
||||
u32 cmd = getEventStuff().getCurrentEventCommand();
|
||||
switch (cmd) {
|
||||
case 'wait': getEventStuff().advanceNext(); break;
|
||||
case 'clos': {
|
||||
if (getEventStuff().isAdvance()) {
|
||||
if (mStateMgr.isState(StateID_Close) || mStateMgr.isState(StateID_RemainClosed)) {
|
||||
mStateMgr.changeState(StateID_Open);
|
||||
}
|
||||
}
|
||||
|
||||
mStateMgr.executeState();
|
||||
|
||||
if (mStateMgr.isState(StateID_RemainClosed)) {
|
||||
getEventStuff().advanceNext();
|
||||
}
|
||||
|
||||
mVec3_c newScale;
|
||||
int direction = getDirection();
|
||||
getScale(direction, newScale);
|
||||
mMdl.getModel().calc(false);
|
||||
|
||||
mMtx_c tmpMtx2;
|
||||
mMtx_c tmpMtx3;
|
||||
mMtx_c tmpMtx1;
|
||||
mMtx_c tmpMtx4;
|
||||
|
||||
getLoc1Mtx(tmpMtx2);
|
||||
PSMTXScale(tmpMtx1, newScale.x, newScale.y, newScale.z);
|
||||
PSMTXConcat(tmpMtx2, tmpMtx1, tmpMtx2);
|
||||
mLoc1Mtx.copyFrom(tmpMtx2);
|
||||
|
||||
getLoc2Mtx(tmpMtx3);
|
||||
PSMTXScale(tmpMtx4, newScale.x, newScale.y, newScale.z);
|
||||
PSMTXConcat(tmpMtx3, tmpMtx4, tmpMtx3);
|
||||
mLoc2Mtx.copyFrom(tmpMtx3);
|
||||
|
||||
if (mEffects.checkField0x00()) {
|
||||
if (direction == 1) {
|
||||
tmpMtx3.YrotM(-0x8000);
|
||||
}
|
||||
mEffects.setMtx(tmpMtx3);
|
||||
}
|
||||
for (int i = 0; i <= 2; i++) {
|
||||
dBgW *bgW = nullptr;
|
||||
getBgW(i, bgW);
|
||||
bgW->Move();
|
||||
}
|
||||
} break;
|
||||
|
||||
case '????': actorExecute(); break;
|
||||
default:
|
||||
actorExecute();
|
||||
// Cool and here we're NOT using getEventStuff. Why even bother?
|
||||
mEvent.advanceNext();
|
||||
}
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
int dAcOTowerHandD101_c::draw() {
|
||||
drawModelType1(&mMdl.getModel());
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
bool dAcOTowerHandD101_c::getBgW(int index, dBgW *&outBgW) {
|
||||
if (isValidBgWIndex(index)) {
|
||||
outBgW = &mBgWs[index];
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
ActorEventRelated &dAcOTowerHandD101_c::getEventStuff() {
|
||||
return mEvent;
|
||||
}
|
||||
|
||||
f32 dAcOTowerHandD101_c::getItemOffsetX() {
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
f32 dAcOTowerHandD101_c::getItemOffsetY() {
|
||||
return 100.0f;
|
||||
}
|
||||
|
||||
f32 dAcOTowerHandD101_c::getItemOffsetZ() {
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
f32 dAcOTowerHandD101_c::getDist1() {
|
||||
return 300.0f;
|
||||
}
|
||||
|
||||
f32 dAcOTowerHandD101_c::getDist2() {
|
||||
return 200.0f;
|
||||
}
|
||||
|
||||
f32 dAcOTowerHandD101_c::getDist3() {
|
||||
return 300.0f;
|
||||
}
|
||||
|
||||
f32 dAcOTowerHandD101_c::getLinkOffsetX() {
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
f32 dAcOTowerHandD101_c::getLinkOffsetY() {
|
||||
return 180.0f;
|
||||
}
|
||||
|
||||
f32 dAcOTowerHandD101_c::getLinkOffsetZ() {
|
||||
return -180.0f;
|
||||
}
|
||||
|
||||
f32 dAcOTowerHandD101_c::getFrame1() {
|
||||
return 15.0f;
|
||||
}
|
||||
|
||||
f32 dAcOTowerHandD101_c::getFrame2() {
|
||||
return 30.0f;
|
||||
}
|
||||
|
||||
f32 dAcOTowerHandD101_c::getCloseRate() {
|
||||
return 3.65f;
|
||||
}
|
||||
|
||||
f32 dAcOTowerHandD101_c::getOpenRate() {
|
||||
return 1.0f;
|
||||
}
|
||||
|
||||
void dAcOTowerHandD101_c::doSomethingHold(f32 arg) {
|
||||
field_0xAF4 = arg;
|
||||
}
|
||||
|
||||
int dAcOTowerHandD101_c::getDirection() const {
|
||||
return params & 0xFF;
|
||||
}
|
||||
|
||||
int dAcOTowerHandD101_c::getHoldFlag() const {
|
||||
return (params >> 8) & 0xFF;
|
||||
}
|
||||
|
||||
int dAcOTowerHandD101_c::getSceneFlag() const {
|
||||
return (params >> 16) & 0xFF;
|
||||
}
|
||||
|
||||
u32 dAcOTowerHandD101_c::getEventId() const {
|
||||
return (params >> 24) & 0xFF;
|
||||
}
|
||||
|
||||
bool dAcOTowerHandD101_c::getBgWMtx(int index, mMtx_c *&outMtx) {
|
||||
switch (index) {
|
||||
case 0: outMtx = &mWorldMtx; return true;
|
||||
case 1: outMtx = &mLoc1Mtx; return true;
|
||||
case 2: outMtx = &mLoc2Mtx; return true;
|
||||
default: return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool dAcOTowerHandD101_c::getNodeMtx(const char *nodeName, mMtx_c &outMtx) const {
|
||||
int nodeId = mMdl.getModel().getNodeID(nodeName);
|
||||
if (nodeId == -1) {
|
||||
return false;
|
||||
}
|
||||
mMtx_c mtx;
|
||||
if (mMdl.getModel().getNodeWorldMtx(nodeId, mtx)) {
|
||||
outMtx.copyFrom(mtx);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool dAcOTowerHandD101_c::getLoc1Mtx(mMtx_c &outMtx) const {
|
||||
return getNodeMtx(sLocator1, outMtx);
|
||||
}
|
||||
|
||||
bool dAcOTowerHandD101_c::getLoc2Mtx(mMtx_c &outMtx) const {
|
||||
return getNodeMtx(sLocator2, outMtx);
|
||||
}
|
||||
|
||||
mVec3_c dAcOTowerHandD101_c::getItemOffset() {
|
||||
return mVec3_c(getItemOffsetX(), getItemOffsetY(), getItemOffsetZ());
|
||||
}
|
||||
|
||||
void dAcOTowerHandD101_c::getItemPos(mVec3_c &outVec) const {
|
||||
calcItemPosition(getItemOffset(), outVec);
|
||||
}
|
||||
|
||||
f32 dAcOTowerHandD101_c::getDist1Sq() {
|
||||
return f32Sq(getDist1());
|
||||
}
|
||||
|
||||
f32 dAcOTowerHandD101_c::getDist1PlusDist2() {
|
||||
return getDist1() + getDist2();
|
||||
}
|
||||
|
||||
f32 dAcOTowerHandD101_c::getDist1PlusDist2Sq() {
|
||||
return f32Sq(getDist1PlusDist2());
|
||||
}
|
||||
|
||||
f32 dAcOTowerHandD101_c::getDist3Sq() {
|
||||
return f32Sq(getDist3());
|
||||
}
|
||||
|
||||
void dAcOTowerHandD101_c::getLinkOffsetNormal(mVec3_c &out) {
|
||||
out.set(getLinkOffsetX(), getLinkOffsetY(), getLinkOffsetZ());
|
||||
}
|
||||
|
||||
void dAcOTowerHandD101_c::getLinkOffsetMirror(mVec3_c &out) {
|
||||
out.set(-getLinkOffsetX(), getLinkOffsetY(), getLinkOffsetZ());
|
||||
}
|
||||
|
||||
void dAcOTowerHandD101_c::getLinkOffset(mVec3_c &out) const {
|
||||
switch (getDirection()) {
|
||||
case 0: getLinkOffsetNormal(out); break;
|
||||
case 1: getLinkOffsetMirror(out); break;
|
||||
}
|
||||
}
|
||||
|
||||
void dAcOTowerHandD101_c::setSceneFlag(int flag) const {
|
||||
u16 theFlag = flag;
|
||||
if (theFlag >= 255) {
|
||||
return;
|
||||
}
|
||||
SceneflagManager::sInstance->setFlag(roomid, theFlag);
|
||||
}
|
||||
|
||||
void dAcOTowerHandD101_c::unsetSceneFlag(int flag) const {
|
||||
u16 theFlag = flag;
|
||||
if (theFlag >= 255) {
|
||||
return;
|
||||
}
|
||||
SceneflagManager::sInstance->unsetFlag(roomid, theFlag);
|
||||
}
|
||||
|
||||
bool dAcOTowerHandD101_c::checkSceneFlag1(int flag, bool &result) const {
|
||||
u16 theFlag = flag;
|
||||
// I guess 255 is not a valid scene flag
|
||||
bool isValidSceneFlag = theFlag < 255;
|
||||
if (isValidSceneFlag) {
|
||||
result = SceneflagManager::sInstance->checkBoolFlag(roomid, theFlag);
|
||||
}
|
||||
return isValidSceneFlag;
|
||||
}
|
||||
|
||||
void dAcOTowerHandD101_c::setHoldFlag() {
|
||||
setSceneFlag(getHoldFlag());
|
||||
}
|
||||
|
||||
void dAcOTowerHandD101_c::unsetHoldFlag() {
|
||||
unsetSceneFlag(getHoldFlag());
|
||||
}
|
||||
|
||||
bool dAcOTowerHandD101_c::checkFlag(bool &result) const {
|
||||
return checkSceneFlag1(getSceneFlag(), result);
|
||||
}
|
||||
|
||||
// ???
|
||||
inline u32 getFlags() {
|
||||
static volatile u32 FLAGS_1 = 0x00000001;
|
||||
static u32 FLAGS_2 = 0x00100001;
|
||||
// The remarkable bit here is that this does not use an `andc` instruction,
|
||||
// but rather `nor`s FLAGS_1, contrary to the other usages so far
|
||||
u32 f1 = ~FLAGS_1;
|
||||
u32 f2 = FLAGS_2;
|
||||
return f2 & f1;
|
||||
}
|
||||
|
||||
void dAcOTowerHandD101_c::doEvent() {
|
||||
Event e = Event(getEventId(), roomid, getFlags(), (void *)&eventCallback, nullptr);
|
||||
getEventStuff().scheduleEvent(e, 0);
|
||||
}
|
||||
|
||||
void dAcOTowerHandD101_c::eventCallback(void *arg) {
|
||||
dAcOTowerHandD101_c *self = static_cast<dAcOTowerHandD101_c *>(arg);
|
||||
self->mFlags |= 1;
|
||||
dAcPy_c *link = dAcPy_c::LINK;
|
||||
if (link->IfCurrentActionToActor(self, 0x3D)) {
|
||||
link->vt_0x084(self, 0x3D);
|
||||
}
|
||||
}
|
||||
|
||||
void dAcOTowerHandD101_c::calcItemPosition(const mVec3_c &offset, mVec3_c &outPosition) const {
|
||||
transformMtx(position, rotation, offset, outPosition);
|
||||
}
|
||||
|
||||
void dAcOTowerHandD101_c::initializeState_RemainOpen() {
|
||||
mMdl.setFrame(mMdl.getAnm().getStartFrame());
|
||||
}
|
||||
|
||||
inline bool dAcOTowerHandD101_c::getItem(dAcItem_c *&outItem, bool &outIsNotWait) {
|
||||
dAcItem_c *item = mHeldItem.get();
|
||||
if (item == nullptr) {
|
||||
outItem = nullptr;
|
||||
} else {
|
||||
outItem = item;
|
||||
}
|
||||
bool ret = item == nullptr;
|
||||
if (ret) {
|
||||
outIsNotWait = true;
|
||||
} else {
|
||||
outIsNotWait = !outItem->isStateWait();
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
void dAcOTowerHandD101_c::executeState_RemainOpen() {
|
||||
dAcPy_c *link = dAcPy_c::LINK;
|
||||
mVec3_c pos;
|
||||
getItemPos(pos);
|
||||
f32 linkDistToItem = PSVECSquareDistance(pos, link->position);
|
||||
if (EventManager::isInEvent() && getEventStuff().getCurrentEventCommand() == 'wait') {
|
||||
return;
|
||||
}
|
||||
if (EventManager::isInEvent() && getEventStuff().getCurrentEventCommand() == 'clos') {
|
||||
mStateMgr.changeState(StateID_Close);
|
||||
return;
|
||||
}
|
||||
bool isNotWait;
|
||||
dAcItem_c *item;
|
||||
if (getItem(item, isNotWait)) {
|
||||
if (160000.0f < linkDistToItem) {
|
||||
doEvent();
|
||||
}
|
||||
} else if (!isNotWait) {
|
||||
if (linkDistToItem < getDist1Sq()) {
|
||||
mStateMgr.changeState(StateID_Close);
|
||||
}
|
||||
}
|
||||
}
|
||||
void dAcOTowerHandD101_c::finalizeState_RemainOpen() {}
|
||||
void dAcOTowerHandD101_c::initializeState_Close() {}
|
||||
void dAcOTowerHandD101_c::executeState_Close() {}
|
||||
|
||||
extern "C" u16 PARTICLE_RESOURCE_ID_MAPPING_573;
|
||||
// extern "C" void fn_80029929()
|
||||
void dAcOTowerHandD101_c::initializeState_Close() {
|
||||
mMdl.getAnm().setPlayState(m3d::PLAY_MODE_1);
|
||||
mMdl.setRate(getCloseRate());
|
||||
mEffects.fn_80029929(PARTICLE_RESOURCE_ID_MAPPING_573, &position, nullptr, nullptr, nullptr, nullptr);
|
||||
playSound(0xC0C);
|
||||
}
|
||||
void dAcOTowerHandD101_c::executeState_Close() {
|
||||
dAcPy_c *link = dAcPy_c::LINK;
|
||||
mVec3_c pos;
|
||||
getItemPos(pos);
|
||||
f32 linkDistToItem = PSVECSquareDistance(pos, link->position);
|
||||
if (EventManager::isInEvent() && getEventStuff().getCurrentEventCommand() == 'wait') {
|
||||
mStateMgr.changeState(StateID_Open);
|
||||
return;
|
||||
}
|
||||
if (EventManager::isInEvent() && getEventStuff().getCurrentEventCommand() == 'clos') {
|
||||
mMdl.play();
|
||||
if (mMdl.getAnm().isStop()) {
|
||||
mStateMgr.changeState(StateID_RemainClosed);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
bool isNotWait;
|
||||
dAcItem_c *item;
|
||||
if (getItem(item, isNotWait)) {
|
||||
if (160000.0f < linkDistToItem) {
|
||||
doEvent();
|
||||
}
|
||||
mStateMgr.changeState(StateID_Open);
|
||||
} else if (isNotWait) {
|
||||
mStateMgr.changeState(StateID_Open);
|
||||
} else if (link->IfCurrentActionToActor(this, 0x3D)) {
|
||||
mStateMgr.changeState(StateID_Hold);
|
||||
} else {
|
||||
if (mMdl.getAnm().isStop()) {
|
||||
mStateMgr.changeState(StateID_RemainClosed);
|
||||
} else {
|
||||
if (getFrame1() <= mMdl.getAnm().getFrame() && getFrame2() <= mMdl.getAnm().getFrame() &&
|
||||
linkDistToItem < getDist1PlusDist2Sq()) {
|
||||
link->set0x439F(this, 5);
|
||||
}
|
||||
|
||||
mMdl.play();
|
||||
}
|
||||
}
|
||||
}
|
||||
void dAcOTowerHandD101_c::finalizeState_Close() {}
|
||||
void dAcOTowerHandD101_c::initializeState_RemainClosed() {}
|
||||
void dAcOTowerHandD101_c::executeState_RemainClosed() {}
|
||||
void dAcOTowerHandD101_c::finalizeState_RemainClosed() {}
|
||||
void dAcOTowerHandD101_c::initializeState_Open() {}
|
||||
void dAcOTowerHandD101_c::executeState_Open() {}
|
||||
|
||||
void dAcOTowerHandD101_c::initializeState_Open() {
|
||||
bool isFlagSet;
|
||||
checkFlag(isFlagSet);
|
||||
if (!isFlagSet) {
|
||||
mMdl.getAnm().setPlayState(m3d::PLAY_MODE_3);
|
||||
mMdl.setRate(getOpenRate());
|
||||
}
|
||||
playSound(0xC0D);
|
||||
}
|
||||
void dAcOTowerHandD101_c::executeState_Open() {
|
||||
dAcPy_c *link = dAcPy_c::LINK;
|
||||
mVec3_c pos;
|
||||
getItemPos(pos);
|
||||
f32 linkDistToItem = PSVECSquareDistance(pos, link->position);
|
||||
if (EventManager::isInEvent() && getEventStuff().getCurrentEventCommand() == 'wait') {
|
||||
if (mMdl.getAnm().isStop()) {
|
||||
mStateMgr.changeState(StateID_RemainOpen);
|
||||
} else {
|
||||
mMdl.play();
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (EventManager::isInEvent() && getEventStuff().getCurrentEventCommand() == 'clos') {
|
||||
if (mMdl.getAnm().isStop()) {
|
||||
mStateMgr.changeState(StateID_Close);
|
||||
} else {
|
||||
mMdl.play();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
bool isNotWait;
|
||||
dAcItem_c *item;
|
||||
if (getItem(item, isNotWait)) {
|
||||
if (160000.0f < linkDistToItem) {
|
||||
doEvent();
|
||||
}
|
||||
if (mMdl.getAnm().isStop()) {
|
||||
mStateMgr.changeState(StateID_Close);
|
||||
} else {
|
||||
mMdl.play();
|
||||
}
|
||||
} else if (isNotWait) {
|
||||
if (mMdl.getAnm().isStop()) {
|
||||
mStateMgr.changeState(StateID_Close);
|
||||
} else {
|
||||
mMdl.play();
|
||||
}
|
||||
} else {
|
||||
if (mMdl.getAnm().isStop()) {
|
||||
mStateMgr.changeState(StateID_Close);
|
||||
} else {
|
||||
mMdl.play();
|
||||
}
|
||||
}
|
||||
}
|
||||
void dAcOTowerHandD101_c::finalizeState_Open() {}
|
||||
void dAcOTowerHandD101_c::initializeState_Hold() {}
|
||||
void dAcOTowerHandD101_c::executeState_Hold() {}
|
||||
void dAcOTowerHandD101_c::finalizeState_Hold() {}
|
||||
|
||||
void dAcOTowerHandD101_c::initializeState_RemainClosed() {
|
||||
mMdl.setFrame(mMdl.getAnm().getEndFrame());
|
||||
bool isFlagSet = false;
|
||||
checkFlag(isFlagSet);
|
||||
if (isFlagSet) {
|
||||
mFlags |= 1;
|
||||
}
|
||||
field_0xB08 = 0;
|
||||
}
|
||||
void dAcOTowerHandD101_c::executeState_RemainClosed() {
|
||||
dAcPy_c *link = dAcPy_c::LINK;
|
||||
mVec3_c pos;
|
||||
getItemPos(pos);
|
||||
f32 linkDistToItem = PSVECSquareDistance(pos, link->position);
|
||||
if (EventManager::isInEvent() && getEventStuff().getCurrentEventCommand() == 'wait') {
|
||||
mStateMgr.changeState(StateID_Open);
|
||||
return;
|
||||
}
|
||||
|
||||
if (EventManager::isInEvent() && getEventStuff().getCurrentEventCommand() == 'clos') {
|
||||
return;
|
||||
}
|
||||
if ((mFlags & 1) == 0) {
|
||||
bool isNotWait;
|
||||
dAcItem_c *item;
|
||||
// Okay here the inline theory completely falls apart because
|
||||
// the 160000.0f is only being loaded once in the middle of that
|
||||
// this suspected inline body does
|
||||
if (getItem(item, isNotWait)) {
|
||||
if (160000.0f < linkDistToItem) {
|
||||
doEvent();
|
||||
}
|
||||
mStateMgr.changeState(StateID_Open);
|
||||
} else if (isNotWait) {
|
||||
mStateMgr.changeState(StateID_Open);
|
||||
} else {
|
||||
if (getDist1PlusDist2Sq() < 160000.0f) {
|
||||
mStateMgr.changeState(StateID_Open);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
void dAcOTowerHandD101_c::finalizeState_RemainClosed() {}
|
||||
|
||||
void dAcOTowerHandD101_c::initializeState_Hold() {
|
||||
mMdl.getAnm().setPlayState(m3d::PLAY_MODE_1);
|
||||
mMdl.setRate(getCloseRate());
|
||||
setHoldFlag();
|
||||
doSomethingHold(0.0f);
|
||||
}
|
||||
void dAcOTowerHandD101_c::executeState_Hold() {
|
||||
dAcPy_c *link = dAcPy_c::LINK;
|
||||
if (link->IfCurrentActionToActor(this, 0x3D)) {
|
||||
mMdl.play();
|
||||
f32 linkValue = link->vt_0x090();
|
||||
u32 i = 0;
|
||||
bool keepGoing = true;
|
||||
f32 counter = 0.8f;
|
||||
while (keepGoing == true && i < 4) {
|
||||
if (counter < linkValue) {
|
||||
keepGoing = false;
|
||||
} else {
|
||||
counter -= 0.2f;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
f32 value = field_0xAF4;
|
||||
sLib::addCalcScaledDiff(&value, i * 0.25f, 0.5f, 1.0f);
|
||||
doSomethingHold(value);
|
||||
mMtx_c tmpMtx1;
|
||||
tmpMtx1.transS(position);
|
||||
// Different address calculation here
|
||||
tmpMtx1.ZXYrotM(rotation.x, rotation.y, rotation.z);
|
||||
mVec3_c linkVec;
|
||||
getLinkOffset(linkVec);
|
||||
mMtx_c tmpMtx2;
|
||||
tmpMtx2.transS(linkVec);
|
||||
tmpMtx1 += tmpMtx2;
|
||||
tmpMtx1.YrotM(-0x8000);
|
||||
mMtx_c tmpMtx3;
|
||||
f32 transScale = 100.0f;
|
||||
tmpMtx3.transS(0.0f, 0.0f, field_0xAF4 * transScale);
|
||||
tmpMtx1 += tmpMtx3;
|
||||
tmpMtx1.XrotM(0x4000);
|
||||
link->setTransform(tmpMtx1, 1, 0, 0);
|
||||
} else {
|
||||
mStateMgr.changeState(StateID_Open);
|
||||
}
|
||||
}
|
||||
void dAcOTowerHandD101_c::finalizeState_Hold() {
|
||||
unsetHoldFlag();
|
||||
}
|
||||
|
||||
@@ -293,10 +293,10 @@ void dAcOTumbleWeed_c::calcMatrix() {
|
||||
|
||||
mMtx_c mtx0, mtx1, mtx2;
|
||||
mShadowMtx.copyFrom(mWorldMtx);
|
||||
mtx1.trans(getPosition() - position);
|
||||
mtx1.transS(getPosition() - position);
|
||||
mShadowMtx += mtx1;
|
||||
mtx0.fromQuat(mField_0x910);
|
||||
mtx2.trans(0.f, 40.f, 0.f);
|
||||
mtx2.transS(0.f, 40.f, 0.f);
|
||||
mWorldMtx += mtx2;
|
||||
mWorldMtx += mtx0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user