Player checkpoint

This commit is contained in:
robojumper
2025-05-19 01:00:30 +02:00
parent 7148cc13d9
commit c6ea169814
14 changed files with 1011 additions and 376 deletions
+162 -162
View File
@@ -2072,7 +2072,7 @@ fn_80050010 = .text:0x80050010; // type:function size:0x4
fn_80050020 = .text:0x80050020; // type:function size:0x8
fn_80050030 = .text:0x80050030; // type:function size:0x1A8
fn_800501E0 = .text:0x800501E0; // type:function size:0x40
fn_80050220 = .text:0x80050220; // type:function size:0x40
__dt__14UnkPlayerClassFv = .text:0x80050220; // type:function size:0x40
AcNpcKyuiBase__initStates = .text:0x80050260; // type:function size:0x1E0
fn_80050440 = .text:0x80050440; // type:function size:0x58
AcNpcKyuiBase__dtor = .text:0x800504A0; // type:function size:0x5C
@@ -2439,24 +2439,24 @@ fn_8005B4B0 = .text:0x8005B4B0; // type:function size:0xDC
fn_8005B590 = .text:0x8005B590; // type:function size:0xB0
fn_8005B640 = .text:0x8005B640; // type:function size:0x2C
fn_8005B670 = .text:0x8005B670; // type:function size:0x64
ActorLink__preExecute = .text:0x8005B6E0; // type:function size:0x4C
fn_8005B730 = .text:0x8005B730; // type:function size:0x18
isInAnyEvent = .text:0x8005B750; // type:function size:0x24
isAttackingLeft = .text:0x8005B780; // type:function size:0x20
isAttackingRight = .text:0x8005B7A0; // type:function size:0x20
fn_8005B7C0 = .text:0x8005B7C0; // type:function size:0x30
isAttackingUpwards = .text:0x8005B7F0; // type:function size:0x20
isStabbing = .text:0x8005B810; // type:function size:0x14
isSpinAttackingHorizontally = .text:0x8005B830; // type:function size:0x20
isSpinAttackingVertically = .text:0x8005B850; // type:function size:0x20
fn_8005B870 = .text:0x8005B870; // type:function size:0x28
fn_8005B8A0 = .text:0x8005B8A0; // type:function size:0xC0
setPosYRot__7dAcPy_cFRC7mVec3_c4mAngiii = .text:0x8005B960; // type:function size:0x44
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
fn_8005BAA0 = .text:0x8005BAA0; // type:function size:0x8
preExecute__17daPlayerActBase_cFv = .text:0x8005B6E0; // type:function size:0x4C
postExecute__17daPlayerActBase_cFQ27fBase_c12MAIN_STATE_e = .text:0x8005B730; // type:function size:0x18
isInEvent__17daPlayerActBase_cFv = .text:0x8005B750; // type:function size:0x24
isAttackingLeft__17daPlayerActBase_cCFv = .text:0x8005B780; // type:function size:0x20
isAttackingRight__17daPlayerActBase_cCFv = .text:0x8005B7A0; // type:function size:0x20
isAttackingDown__17daPlayerActBase_cCFv = .text:0x8005B7C0; // type:function size:0x30
isAttackingUp__17daPlayerActBase_cCFv = .text:0x8005B7F0; // type:function size:0x20
isAttackingStab__17daPlayerActBase_cCFv = .text:0x8005B810; // type:function size:0x14
isAttackingSpinHorizontal__17daPlayerActBase_cCFv = .text:0x8005B830; // type:function size:0x20
isAttackingSpinVertical__17daPlayerActBase_cCFv = .text:0x8005B850; // type:function size:0x20
setBonkRelatedAnimFlag__17daPlayerActBase_cFb = .text:0x8005B870; // type:function size:0x28
setPosRot__17daPlayerActBase_cFPC7mVec3_cPC7mAng3_cbii = .text:0x8005B8A0; // type:function size:0xC0
setPosYRot__17daPlayerActBase_cFRC7mVec3_c4mAngbii = .text:0x8005B960; // type:function size:0x44
setTransform__17daPlayerActBase_cFRC6mMtx_cbii = .text:0x8005B9B0; // type:function size:0x98
someTargetedActorCheck__17daPlayerActBase_cCFv = .text:0x8005BA50; // type:function size:0x30
getTargetedActor1__17daPlayerActBase_cCFv = .text:0x8005BA80; // type:function size:0x8
fn_8005BA90__17daPlayerActBase_cFv = .text:0x8005BA90; // type:function size:0x8
fn_8005BAA0__17daPlayerActBase_cFv = .text:0x8005BAA0; // type:function size:0x8
restoreLinksStamina = .text:0x8005BAB0; // type:function size:0x8
fn_8005BAC0 = .text:0x8005BAC0; // type:function size:0x10
fn_8005BAD0 = .text:0x8005BAD0; // type:function size:0x10
@@ -2464,7 +2464,7 @@ fn_8005BAE0 = .text:0x8005BAE0; // type:function size:0xC
IsLinkOutOfStamina = .text:0x8005BAF0; // type:function size:0x14
fn_8005BB10 = .text:0x8005BB10; // type:function size:0x8
getBoatActorIfRiding = .text:0x8005BB20; // type:function size:0x24
fn_8005BB50 = .text:0x8005BB50; // type:function size:0x8
getRidingActor__17daPlayerActBase_cFv = .text:0x8005BB50; // type:function size:0x8
AcNpcTke__setRefInLinkToCall = .text:0x8005BB60; // type:function size:0xC
setObtainedItemID = .text:0x8005BB70; // type:function size:0x3C
fn_8005BBB0 = .text:0x8005BBB0; // type:function size:0xC
@@ -2483,7 +2483,7 @@ fn_8005BD90 = .text:0x8005BD90; // type:function size:0xC
getLinkSoundRelated = .text:0x8005BDA0; // type:function size:0xC
fn_8005BDB0 = .text:0x8005BDB0; // type:function size:0xE8
unsetRegionBasedFlagsMaybe = .text:0x8005BEA0; // type:function size:0x100
ActorLink__getEarringColor = .text:0x8005BFA0; // type:function size:0xB0
getEarringsColor__17daPlayerActBase_cFv = .text:0x8005BFA0; // type:function size:0xB0
getLinkTunicSubtype = .text:0x8005C050; // type:function size:0xC
getCurrentSwordType = .text:0x8005C060; // type:function size:0xAC
updateCurrentSword = .text:0x8005C110; // type:function size:0x24
@@ -2501,132 +2501,132 @@ isItemRestrictedByBokoBase__7dAcPy_cF7ITEM_ID = .text:0x8005C430; // type:functi
isItemRestricted = .text:0x8005C4F0; // type:function size:0xE0
fn_8005C5D0 = .text:0x8005C5D0; // type:function size:0x34
getLinkPtr__Fv = .text:0x8005C610; // type:function size:0x8
fn_8005C620 = .text:0x8005C620; // type:function size:0x8
fn_8005C630 = .text:0x8005C630; // type:function size:0x8
fn_8005C640 = .text:0x8005C640; // type:function size:0x8
fn_8005C650 = .text:0x8005C650; // type:function size:0x8
fn_8005C660 = .text:0x8005C660; // type:function size:0x8
fn_8005C670 = .text:0x8005C670; // type:function size:0x8
fn_8005C680 = .text:0x8005C680; // type:function size:0x4
fn_8005C690 = .text:0x8005C690; // type:function size:0x8
fn_8005C6A0 = .text:0x8005C6A0; // type:function size:0x4
fn_8005C6B0 = .text:0x8005C6B0; // type:function size:0x8
fn_8005C6C0 = .text:0x8005C6C0; // type:function size:0x8
fn_8005C6D0 = .text:0x8005C6D0; // type:function size:0xC
fn_8005C6E0 = .text:0x8005C6E0; // type:function size:0x8
fn_8005C6F0 = .text:0x8005C6F0; // type:function size:0x8
fn_8005C700 = .text:0x8005C700; // type:function size:0x8
fn_8005C710 = .text:0x8005C710; // type:function size:0x8
fn_8005C720 = .text:0x8005C720; // type:function size:0x8
fn_8005C730 = .text:0x8005C730; // type:function size:0x8
fn_8005C740 = .text:0x8005C740; // type:function size:0x8
fn_8005C750 = .text:0x8005C750; // type:function size:0xC
fn_8005C760 = .text:0x8005C760; // type:function size:0x4
fn_8005C770 = .text:0x8005C770; // type:function size:0x8
fn_8005C780 = .text:0x8005C780; // type:function size:0x4
fn_8005C790 = .text:0x8005C790; // type:function size:0x8
fn_8005C7A0 = .text:0x8005C7A0; // type:function size:0x8
fn_8005C7B0 = .text:0x8005C7B0; // type:function size:0x8
fn_8005C7C0 = .text:0x8005C7C0; // type:function size:0xC
fn_8005C7D0 = .text:0x8005C7D0; // type:function size:0x8
fn_8005C7E0 = .text:0x8005C7E0; // type:function size:0x8
fn_8005C7F0 = .text:0x8005C7F0; // type:function size:0x8
fn_8005C800 = .text:0x8005C800; // type:function size:0x8
fn_8005C810 = .text:0x8005C810; // type:function size:0x8
fn_8005C820 = .text:0x8005C820; // type:function size:0x8
fn_8005C830 = .text:0x8005C830; // type:function size:0x4
fn_8005C840 = .text:0x8005C840; // type:function size:0x4
fn_8005C850 = .text:0x8005C850; // type:function size:0x8
fn_8005C860 = .text:0x8005C860; // type:function size:0x8
fn_8005C870 = .text:0x8005C870; // type:function size:0x8
fn_8005C880 = .text:0x8005C880; // type:function size:0x8
fn_8005C890 = .text:0x8005C890; // type:function size:0x8
fn_8005C8A0 = .text:0x8005C8A0; // type:function size:0x8
fn_8005C8B0 = .text:0x8005C8B0; // type:function size:0x8
fn_8005C8C0 = .text:0x8005C8C0; // type:function size:0x8
fn_8005C8D0 = .text:0x8005C8D0; // type:function size:0x8
fn_8005C8E0 = .text:0x8005C8E0; // type:function size:0x8
fn_8005C8F0 = .text:0x8005C8F0; // type:function size:0x8
fn_8005C900 = .text:0x8005C900; // type:function size:0x8
fn_8005C910 = .text:0x8005C910; // type:function size:0x8
fn_8005C920 = .text:0x8005C920; // type:function size:0x8
fn_8005C930 = .text:0x8005C930; // type:function size:0x8
fn_8005C940 = .text:0x8005C940; // type:function size:0x8
fn_8005C950 = .text:0x8005C950; // type:function size:0x8
fn_8005C960 = .text:0x8005C960; // type:function size:0x8
fn_8005C970 = .text:0x8005C970; // type:function size:0x8
fn_8005C980 = .text:0x8005C980; // type:function size:0x8
fn_8005C990 = .text:0x8005C990; // type:function size:0x8
fn_8005C9A0 = .text:0x8005C9A0; // type:function size:0x8
fn_8005C9B0 = .text:0x8005C9B0; // type:function size:0x4
fn_8005C9C0 = .text:0x8005C9C0; // type:function size:0x8
fn_8005C9D0 = .text:0x8005C9D0; // type:function size:0x8
fn_8005C9E0 = .text:0x8005C9E0; // type:function size:0x8
fn_8005C9F0 = .text:0x8005C9F0; // type:function size:0x4
fn_8005CA00 = .text:0x8005CA00; // type:function size:0x8
fn_8005CA10 = .text:0x8005CA10; // type:function size:0x8
fn_8005CA20 = .text:0x8005CA20; // type:function size:0x8
fn_8005CA30 = .text:0x8005CA30; // type:function size:0x8
fn_8005CA40 = .text:0x8005CA40; // type:function size:0x8
fn_8005CA50 = .text:0x8005CA50; // type:function size:0x8
fn_8005CA60 = .text:0x8005CA60; // type:function size:0xC
fn_8005CA70 = .text:0x8005CA70; // type:function size:0x8
fn_8005CA80 = .text:0x8005CA80; // type:function size:0x4
fn_8005CA90 = .text:0x8005CA90; // type:function size:0x8
fn_8005CAA0 = .text:0x8005CAA0; // type:function size:0x8
fn_8005CAB0 = .text:0x8005CAB0; // type:function size:0x8
fn_8005CAC0 = .text:0x8005CAC0; // type:function size:0x8
fn_8005CAD0 = .text:0x8005CAD0; // type:function size:0x8
fn_8005CAE0 = .text:0x8005CAE0; // type:function size:0x8
fn_8005CAF0 = .text:0x8005CAF0; // type:function size:0x8
fn_8005CB00 = .text:0x8005CB00; // type:function size:0x8
fn_8005CB10 = .text:0x8005CB10; // type:function size:0x8
fn_8005CB20 = .text:0x8005CB20; // type:function size:0x8
fn_8005CB30 = .text:0x8005CB30; // type:function size:0x8
fn_8005CB40 = .text:0x8005CB40; // type:function size:0x8
fn_8005CB50 = .text:0x8005CB50; // type:function size:0x4
fn_8005CB60 = .text:0x8005CB60; // type:function size:0x4
fn_8005CB70 = .text:0x8005CB70; // type:function size:0x8
fn_8005CB80 = .text:0x8005CB80; // type:function size:0x4
fn_8005CB90 = .text:0x8005CB90; // type:function size:0x8
fn_8005CBA0 = .text:0x8005CBA0; // type:function size:0x8
fn_8005CBB0 = .text:0x8005CBB0; // type:function size:0x8
fn_8005CBC0 = .text:0x8005CBC0; // type:function size:0x8
fn_8005CBD0 = .text:0x8005CBD0; // type:function size:0x8
fn_8005CBE0 = .text:0x8005CBE0; // type:function size:0x8
fn_8005CBF0 = .text:0x8005CBF0; // type:function size:0x8
fn_8005CC00 = .text:0x8005CC00; // type:function size:0x8
fn_8005CC10 = .text:0x8005CC10; // type:function size:0x8
fn_8005CC20 = .text:0x8005CC20; // type:function size:0x8
fn_8005CC30 = .text:0x8005CC30; // type:function size:0x8
fn_8005CC40 = .text:0x8005CC40; // type:function size:0xC
fn_8005CC50 = .text:0x8005CC50; // type:function size:0xC
fn_8005CC60 = .text:0x8005CC60; // type:function size:0x8
fn_8005CC70 = .text:0x8005CC70; // type:function size:0x8
fn_8005CC80 = .text:0x8005CC80; // type:function size:0x8
fn_8005CC90 = .text:0x8005CC90; // type:function size:0x8
fn_8005CCA0 = .text:0x8005CCA0; // type:function size:0x8
fn_8005CCB0 = .text:0x8005CCB0; // type:function size:0x8
fn_8005CCC0 = .text:0x8005CCC0; // type:function size:0x8
fn_8005CCD0 = .text:0x8005CCD0; // type:function size:0x8
fn_8005CCE0 = .text:0x8005CCE0; // type:function size:0x8
fn_8005CCF0 = .text:0x8005CCF0; // type:function size:0x4
fn_8005CD00 = .text:0x8005CD00; // type:function size:0x8
fn_8005CD10 = .text:0x8005CD10; // type:function size:0x8
fn_8005CD20 = .text:0x8005CD20; // type:function size:0x8
fn_8005CD30 = .text:0x8005CD30; // type:function size:0x8
fn_8005CD40 = .text:0x8005CD40; // type:function size:0x8
fn_8005CD50 = .text:0x8005CD50; // type:function size:0x8
fn_8005CD60 = .text:0x8005CD60; // type:function size:0x8
fn_8005CD70 = .text:0x8005CD70; // type:function size:0x8
fn_8005CD80 = .text:0x8005CD80; // type:function size:0x4
fn_8005CD90 = .text:0x8005CD90; // type:function size:0x58
fn_8005CDF0 = .text:0x8005CDF0; // type:function size:0x8
fn_8005CE00 = .text:0x8005CE00; // type:function size:0x4
fn_8005CE10 = .text:0x8005CE10; // type:function size:0x4
fn_8005CE20 = .text:0x8005CE20; // type:function size:0x8
fn_8005CE30 = .text:0x8005CE30; // type:function size:0x8
ActorLink__initPos = .text:0x8005CE40; // type:function size:0x4C
getShieldRegenProgressMaybe__17daPlayerActBase_cFv = .text:0x8005C620; // type:function size:0x8
isUsingBottle__17daPlayerActBase_cFv = .text:0x8005C630; // type:function size:0x8
isBottleOut__17daPlayerActBase_cFv = .text:0x8005C640; // type:function size:0x8
isHealingShield__17daPlayerActBase_cFv = .text:0x8005C650; // type:function size:0x8
isDrinkingPotion__17daPlayerActBase_cFv = .text:0x8005C660; // type:function size:0x8
isRecovering__17daPlayerActBase_cCFv = .text:0x8005C670; // type:function size:0x8
lookTowardItem__17daPlayerActBase_cFv = .text:0x8005C680; // type:function size:0x4
isRunningUpWall__17daPlayerActBase_cFv = .text:0x8005C690; // type:function size:0x8
doGameOver__17daPlayerActBase_cFv = .text:0x8005C6A0; // type:function size:0x4
getDieLargeDamageDir__17daPlayerActBase_cFv = .text:0x8005C6B0; // type:function size:0x8
vt_0x298__17daPlayerActBase_cFv = .text:0x8005C6C0; // type:function size:0x8
somethingSwitchDials__17daPlayerActBase_cFv = .text:0x8005C6D0; // type:function size:0xC
bugNetCollectTreasure__17daPlayerActBase_cFUl = .text:0x8005C6E0; // type:function size:0x8
isUsingBugnet1__17daPlayerActBase_cFv = .text:0x8005C6F0; // type:function size:0x8
getBugNetPos__17daPlayerActBase_cCFv = .text:0x8005C700; // type:function size:0x8
isUsingBugnet__17daPlayerActBase_cCFv = .text:0x8005C710; // type:function size:0x8
vt_0x280__17daPlayerActBase_cFv = .text:0x8005C720; // type:function size:0x8
getSwordPos__17daPlayerActBase_cCFv = .text:0x8005C730; // type:function size:0x8
vt_0x278__17daPlayerActBase_cCFv = .text:0x8005C740; // type:function size:0x8
vt_0x274__17daPlayerActBase_cFv = .text:0x8005C750; // type:function size:0xC
triggerExitRelated__17daPlayerActBase_cFv = .text:0x8005C760; // type:function size:0x4
doesGameOver__17daPlayerActBase_cFv = .text:0x8005C770; // type:function size:0x8
setActorRef11__17daPlayerActBase_cFv = .text:0x8005C780; // type:function size:0x4
getGroosenatorIfIn__17daPlayerActBase_cFv = .text:0x8005C790; // type:function size:0x8
vt_0x260__17daPlayerActBase_cCFv = .text:0x8005C7A0; // type:function size:0x8
vt_0x25C__17daPlayerActBase_cFv = .text:0x8005C7B0; // type:function size:0x8
vt_0x258__17daPlayerActBase_cCFv = .text:0x8005C7C0; // type:function size:0xC
isAttackingUnderground__17daPlayerActBase_cFv = .text:0x8005C7D0; // type:function size:0x8
vt_0x250__17daPlayerActBase_cFv = .text:0x8005C7E0; // type:function size:0x8
vt_0x24C__17daPlayerActBase_cFv = .text:0x8005C7F0; // type:function size:0x8
vt_0x248__17daPlayerActBase_cFv = .text:0x8005C800; // type:function size:0x8
vt_0x244__17daPlayerActBase_cFv = .text:0x8005C810; // type:function size:0x8
vt_0x240__17daPlayerActBase_cFv = .text:0x8005C820; // type:function size:0x8
setActorRef10__17daPlayerActBase_cFv = .text:0x8005C830; // type:function size:0x4
setVecIfInFreeFall__17daPlayerActBase_cFv = .text:0x8005C840; // type:function size:0x4
vt_0x234__17daPlayerActBase_cFv = .text:0x8005C850; // type:function size:0x8
vt_0x230__17daPlayerActBase_cFv = .text:0x8005C860; // type:function size:0x8
getTurnableSwitch__17daPlayerActBase_cFv = .text:0x8005C870; // type:function size:0x8
getRidingMinecartActor__17daPlayerActBase_cCFv = .text:0x8005C880; // type:function size:0x8
isRidingBall__17daPlayerActBase_cCFv = .text:0x8005C890; // type:function size:0x8
isPushingBlock__17daPlayerActBase_cFv = .text:0x8005C8A0; // type:function size:0x8
isinMpPosePower__17daPlayerActBase_cFv = .text:0x8005C8B0; // type:function size:0x8
vt_0x214__17daPlayerActBase_cFv = .text:0x8005C8C0; // type:function size:0x8
isSlding2__17daPlayerActBase_cFv = .text:0x8005C8D0; // type:function size:0x8
isSliding__17daPlayerActBase_cFv = .text:0x8005C8E0; // type:function size:0x8
isBeingPulledByLeftClawshot__17daPlayerActBase_cFv = .text:0x8005C8F0; // type:function size:0x8
isBeingPulledFromRightClawshot__17daPlayerActBase_cFv = .text:0x8005C900; // type:function size:0x8
isLandingFromSailcloth__17daPlayerActBase_cFv = .text:0x8005C910; // type:function size:0x8
didDiveSky_andNotOther__17daPlayerActBase_cFv = .text:0x8005C920; // type:function size:0x8
didDiveSky_and_other__17daPlayerActBase_cFv = .text:0x8005C930; // type:function size:0x8
vt_0x1F0__17daPlayerActBase_cFv = .text:0x8005C940; // type:function size:0x8
vt_0x1EC__17daPlayerActBase_cFv = .text:0x8005C950; // type:function size:0x8
vt_0x1E0__17daPlayerActBase_cFv = .text:0x8005C960; // type:function size:0x8
didShootBow__17daPlayerActBase_cFv = .text:0x8005C970; // type:function size:0x8
isWeaponChargedFully__17daPlayerActBase_cFv = .text:0x8005C980; // type:function size:0x8
isChargingWeapon__17daPlayerActBase_cFv = .text:0x8005C990; // type:function size:0x8
ifHasHealthAndSomethingElse__17daPlayerActBase_cFv = .text:0x8005C9A0; // type:function size:0x8
unlinkActorRef1__17daPlayerActBase_cFv = .text:0x8005C9B0; // type:function size:0x4
doesActorRef1Exist__17daPlayerActBase_cFv = .text:0x8005C9C0; // type:function size:0x8
getActorInActorRef1__17daPlayerActBase_cFv = .text:0x8005C9D0; // type:function size:0x8
vt_0x1BC__17daPlayerActBase_cFv = .text:0x8005C9E0; // type:function size:0x8
canHandleGameOver__17daPlayerActBase_cFv = .text:0x8005C9F0; // type:function size:0x4
isByte0x434eEqual7__17daPlayerActBase_cFv = .text:0x8005CA00; // type:function size:0x8
isItemFairyFromBugnet__17daPlayerActBase_cFv = .text:0x8005CA10; // type:function size:0x8
vt_0x1AC__17daPlayerActBase_cFv = .text:0x8005CA20; // type:function size:0x8
vt_0x1A8__17daPlayerActBase_cFv = .text:0x8005CA30; // type:function size:0x8
vt_0x1A4__17daPlayerActBase_cFv = .text:0x8005CA40; // type:function size:0x8
vt_0x1A0__17daPlayerActBase_cFv = .text:0x8005CA50; // type:function size:0x8
getVec3F_Z__17daPlayerActBase_cCFv = .text:0x8005CA60; // type:function size:0xC
isOffeset0x435eEqual0x20__17daPlayerActBase_cFv = .text:0x8005CA70; // type:function size:0x8
setWindMillPos__17daPlayerActBase_cFv = .text:0x8005CA80; // type:function size:0x4
getBellowsPosOrOtherVec3F__17daPlayerActBase_cCFv = .text:0x8005CA90; // type:function size:0x8
getPointedAngle__17daPlayerActBase_cCFv = .text:0x8005CAA0; // type:function size:0x8
isGustBellowsBeingBlown__17daPlayerActBase_cFv = .text:0x8005CAB0; // type:function size:0x8
isSwimming__17daPlayerActBase_cFv = .text:0x8005CAC0; // type:function size:0x8
getFloatIfStruggling__17daPlayerActBase_cFv = .text:0x8005CAD0; // type:function size:0x8
getCurrentAnimFrame__17daPlayerActBase_cCFv = .text:0x8005CAE0; // type:function size:0x8
vt_0x164__17daPlayerActBase_cFv = .text:0x8005CAF0; // type:function size:0x8
getYPos__17daPlayerActBase_cFv = .text:0x8005CB00; // type:function size:0x8
vt_0x15C__17daPlayerActBase_cFv = .text:0x8005CB10; // type:function size:0x8
vt_0x158__17daPlayerActBase_cFv = .text:0x8005CB20; // type:function size:0x8
vt_0x154__17daPlayerActBase_cFv = .text:0x8005CB30; // type:function size:0x8
hasLessThanQuarterHealth__17daPlayerActBase_cFb = .text:0x8005CB40; // type:function size:0x8
vt_0x14C__17daPlayerActBase_cFv = .text:0x8005CB50; // type:function size:0x4
applyDamageWithIFrames__17daPlayerActBase_cFv = .text:0x8005CB60; // type:function size:0x4
setActorLinkToSomething__17daPlayerActBase_cFv = .text:0x8005CB70; // type:function size:0x8
store2Floats0x4500__17daPlayerActBase_cFv = .text:0x8005CB80; // type:function size:0x4
isSmelly__17daPlayerActBase_cFv = .text:0x8005CB90; // type:function size:0x8
isCursed__17daPlayerActBase_cFv = .text:0x8005CBA0; // type:function size:0x8
isShocked__17daPlayerActBase_cFv = .text:0x8005CBB0; // type:function size:0x8
isBurning__17daPlayerActBase_cFv = .text:0x8005CBC0; // type:function size:0x8
vt_0x12C__17daPlayerActBase_cFv = .text:0x8005CBD0; // type:function size:0x8
vt_0x128__17daPlayerActBase_cFv = .text:0x8005CBE0; // type:function size:0x8
vt_0x124__17daPlayerActBase_cFv = .text:0x8005CBF0; // type:function size:0x8
isUsingShield__17daPlayerActBase_cFv = .text:0x8005CC00; // type:function size:0x8
isUsingMitts__17daPlayerActBase_cFv = .text:0x8005CC10; // type:function size:0x8
isUsingSword__17daPlayerActBase_cFv = .text:0x8005CC20; // type:function size:0x8
isCrawling__17daPlayerActBase_cFv = .text:0x8005CC30; // type:function size:0x8
vt_0x0FC__17daPlayerActBase_cFv = .text:0x8005CC40; // type:function size:0xC
vt_0x0F8__17daPlayerActBase_cFv = .text:0x8005CC50; // type:function size:0xC
isUsingBomb__17daPlayerActBase_cFv = .text:0x8005CC60; // type:function size:0x8
vt_0x0DC__17daPlayerActBase_cFP9dAcBase_cR7mVec3_c = .text:0x8005CC70; // type:function size:0x8
getItemFromClawshotsMaybe__17daPlayerActBase_cFv = .text:0x8005CC80; // type:function size:0x8
someFloatWithWhip__17daPlayerActBase_cFv = .text:0x8005CC90; // type:function size:0x8
tryGrabItemWithWhip__17daPlayerActBase_cFv = .text:0x8005CCA0; // type:function size:0x8
isWhipOnObject__17daPlayerActBase_cFv = .text:0x8005CCB0; // type:function size:0x8
somethingWithWHip__17daPlayerActBase_cFv = .text:0x8005CCC0; // type:function size:0x8
anotherThingWithWhip__17daPlayerActBase_cFv = .text:0x8005CCD0; // type:function size:0x8
isUsingWhip__17daPlayerActBase_cFv = .text:0x8005CCE0; // type:function size:0x8
finishPlayingHarp__17daPlayerActBase_cFv = .text:0x8005CCF0; // type:function size:0x4
isUsingHarp__17daPlayerActBase_cFv = .text:0x8005CD00; // type:function size:0x8
isPullingOutBomb__17daPlayerActBase_cFv = .text:0x8005CD10; // type:function size:0x8
isCarryingBomb__17daPlayerActBase_cFv = .text:0x8005CD20; // type:function size:0x8
vt_0x0AC__17daPlayerActBase_cFv = .text:0x8005CD30; // type:function size:0x8
canRollObject__17daPlayerActBase_cFv = .text:0x8005CD40; // type:function size:0x8
canThrowObject__17daPlayerActBase_cFv = .text:0x8005CD50; // type:function size:0x8
isThrowingOrRollingItem__17daPlayerActBase_cFv = .text:0x8005CD60; // type:function size:0x8
isLiftingObject__17daPlayerActBase_cFv = .text:0x8005CD70; // type:function size:0x8
relatedToUsingItem0x11__17daPlayerActBase_cFv = .text:0x8005CD80; // type:function size:0x4
__dt__10daPlBase_cFv = .text:0x8005CD90; // type:function size:0x58
vt_0x090__17daPlayerActBase_cFv = .text:0x8005CDF0; // type:function size:0x8
set0x43DE__17daPlayerActBase_cFv = .text:0x8005CE00; // type:function size:0x4
set0x439F__17daPlayerActBase_cFP9dAcBase_ci = .text:0x8005CE10; // type:function size:0x4
vt_0x084__17daPlayerActBase_cFP9dAcBase_ci = .text:0x8005CE20; // type:function size:0x8
IfCurrentActionToActor__17daPlayerActBase_cFP9dAcBase_ci = .text:0x8005CE30; // type:function size:0x8
__sinit_\d_player_act_cpp = .text:0x8005CE40; // type:function size:0x4C
fn_8005CE90 = .text:0x8005CE90; // type:function size:0x134
fn_8005CFD0 = .text:0x8005CFD0; // type:function size:0x10
fn_8005CFE0 = .text:0x8005CFE0; // type:function size:0x134
@@ -2726,8 +2726,8 @@ ActorLink__getHeadTranslation = .text:0x80061540; // type:function size:0x8
fn_80061550 = .text:0x80061550; // type:function size:0x8
ActorLink__getCenterTranslation = .text:0x80061560; // type:function size:0x8
fn_80061570 = .text:0x80061570; // type:function size:0x8
fn_80061580 = .text:0x80061580; // type:function size:0x254
fn_800617E0 = .text:0x800617E0; // type:function size:0x58
__dt__19daPlayerModelBase_cFv = .text:0x80061580; // type:function size:0x254
__dt__16daPlBaseAnmChr_cFv = .text:0x800617E0; // type:function size:0x58
fn_80061840 = .text:0x80061840; // type:function size:0x40
fn_80061880 = .text:0x80061880; // type:function size:0x40
fn_800618C0 = .text:0x800618C0; // type:function size:0x40
@@ -11891,7 +11891,7 @@ fn_801D8290 = .text:0x801D8290; // type:function size:0x46C
fn_801D8700 = .text:0x801D8700; // type:function size:0x134
fn_801D8840 = .text:0x801D8840; // type:function size:0x2B8
fn_801D8B00 = .text:0x801D8B00; // type:function size:0x230
fn_801D8D30 = .text:0x801D8D30; // type:function size:0x4
__ct__14UnkPlayerClassFv = .text:0x801D8D30; // type:function size:0x4
fn_801D8D40 = .text:0x801D8D40; // type:function size:0xB90
fn_801D98D0 = .text:0x801D98D0; // type:function size:0x37C
fn_801D9C50 = .text:0x801D9C50; // type:function size:0x4
@@ -13078,9 +13078,9 @@ playHarpMaybe = .text:0x80236B20; // type:function size:0x1CC
ActorLink__finishPlayingHarp = .text:0x80236CF0; // type:function size:0x20
ActorLink__doHarpPlayAnim = .text:0x80236D10; // type:function size:0xE0
fn_80236DF0 = .text:0x80236DF0; // type:function size:0x22C
ActorLink__ctorCont = .text:0x80237020; // type:function size:0xAC8
ActorLink__ctorContCont = .text:0x80237AF0; // type:function size:0x34C
fn_80237E40 = .text:0x80237E40; // type:function size:0x48
__ct__7dAcPy_cFv = .text:0x80237020; // type:function size:0xAC8
__ct__10daPlBase_cFv = .text:0x80237AF0; // type:function size:0x34C
__ct__16daPlBaseAnmChr_cFv = .text:0x80237E40; // type:function size:0x48
ActorLink__create16EmptyActorReferences = .text:0x80237E90; // type:function size:0x48
fn_80237EE0 = .text:0x80237EE0; // type:function size:0x80
fn_80237F60 = .text:0x80237F60; // type:function size:0x8
@@ -13113,7 +13113,7 @@ fn_802385A0 = .text:0x802385A0; // type:function size:0x9C
fn_80238640 = .text:0x80238640; // type:function size:0x38
fn_80238680 = .text:0x80238680; // type:function size:0x68
fn_802386F0 = .text:0x802386F0; // type:function size:0x8
ActorLink__destroyModels = .text:0x80238700; // type:function size:0xBB0
__dt__7dAcPy_cFv = .text:0x80238700; // type:function size:0xBB0
ActorLink__initModels = .text:0x802392B0; // type:function size:0x2EC
ActorLink__init1 = .text:0x802395A0; // type:function size:0xD8
ActorLink__init2 = .text:0x80239680; // type:function size:0x20C
@@ -30811,14 +30811,14 @@ jumptable_8050D9AC = .data:0x8050D9AC; // type:object size:0x28 scope:local
lbl_8050D9D4 = .data:0x8050D9D4; // type:object size:0x10
lbl_8050D9E4 = .data:0x8050D9E4; // type:object size:0xC
lbl_8050D9F0 = .data:0x8050D9F0; // type:object size:0x10
lbl_8050DA00 = .data:0x8050DA00; // type:object size:0x310
lbl_8050DD10 = .data:0x8050DD10; // type:object size:0x18
lbl_8050DD28 = .data:0x8050DD28; // type:object size:0x18
ActorLink__animation_vtable = .data:0x8050DD40; // type:object size:0x18
lbl_8050DD58 = .data:0x8050DD58; // type:object size:0x18
ActorLink__mainBodyModelVtable = .data:0x8050DD70; // type:object size:0x30
ActorLink__mainBodyModelCallbackVtable = .data:0x8050DDA0; // type:object size:0x18
lbl_8050DDB8 = .data:0x8050DDB8; // type:object size:0x20
__vt__10daPlBase_c = .data:0x8050DA00; // type:object size:0x310
__vt__19daPlBaseCallback2_c = .data:0x8050DD10; // type:object size:0x18
__vt__27daPlBaseCalcWorldCallback_c = .data:0x8050DD28; // type:object size:0x18
__vt__16daPlBaseAnmChr_c = .data:0x8050DD40; // type:object size:0x18
__vt__19daPlBaseCallback1_c = .data:0x8050DD58; // type:object size:0x18
__vt__13daPlBaseMdl_c = .data:0x8050DD70; // type:object size:0x30
__vt__21daPlBaseMdlCallback_c = .data:0x8050DDA0; // type:object size:0x18
__vt__24daPlBaseScnObjCallback_c = .data:0x8050DDB8; // type:object size:0x20
@4669 = .data:0x8050DDD8; // type:object size:0xE scope:local data:string
@4670 = .data:0x8050DDE8; // type:object size:0xB scope:local data:string
__vt__8dScene_c = .data:0x8050DDF8; // type:object size:0x4C
+3
View File
@@ -47,6 +47,9 @@ public:
static void spawnItem(u16 item, u32 room, const mVec3_c &pos, const mAng3_c &rot, u32 params, u32 arg);
static void spawnDrop(u16 item, u32 room, const mVec3_c &pos, const mAng3_c &rot);
static u32 checkFlag(u32 flag);
static bool hasItem(u32 flag) {
return checkFlag(flag);
}
static void setFlag(s32 id);
void setItemPosition(const mVec3_c &);
+683 -190
View File
@@ -5,18 +5,615 @@
#include "d/a/d_a_base.h"
#include "d/a/d_a_itembase.h"
#include "d/a/obj/d_a_obj_base.h"
#include "d/col/cc/d_cc_d.h"
#include "d/a/e/d_a_en_base.h"
#include "m/m3d/m_anmchr.h"
#include "m/m3d/m_anmchrblend.h"
#include "m/m3d/m_anmmatclr.h"
#include "m/m3d/m_anmtexpat.h"
#include "m/m3d/m_anmtexsrt.h"
#include "m/m3d/m_mdl.h"
#include "m/m3d/m_smdl.h"
#include "m/m_allocator.h"
#include "m/m_angle.h"
#include "m/m_mtx.h"
#include "m/m_quat.h"
#include "m/m_vec.h"
#include "nw4r/g3d/g3d_calcworld.h"
#include "nw4r/g3d/g3d_scnobj.h"
#include "nw4r/g3d/res/g3d_resanmchr.h"
#include "nw4r/g3d/res/g3d_resfile.h"
#include "nw4r/g3d/res/g3d_resmdl.h"
#include "toBeSorted/file_manager.h"
#include "toBeSorted/stage_render_stuff.h"
class dAcPy_c : public dAcObjBase_c {
// See Below for some info
// https://github.com/lepelog/skywardsword-tools/wiki/Player-Actor
// See Below for some info
// https://github.com/lepelog/skywardsword-tools/wiki/Player-Actor
/*
* The inheritance chain goes something like:
* dAcObjBase_c straightfoward
* v
* daPlBase_c only has a dtor, vtable (80533128) pooled into d_a_player at the end
* v
* daPlayerActBase_c has a few strong and many weak functions, vtable stripped
* v
* daPlayerModelBase_c has the actual implementation of many functions, vtable at 8050da00, size 0x310
* v
* dAcPy_c "ActorLink", vtable at 80532cb0
*/
// Vtable at 80533128, no differences to dAcObjBase_c?
class daPlBase_c : public dAcObjBase_c {
public:
virtual ~daPlBase_c() {}
};
class daPlBaseCallback1_c : m3d::callback_c {};
class daPlBaseCallback2_c : m3d::callback_c {};
class daPlBaseMdlCallback_c : m3d::mdl_c::mdlCallback_c {};
class daPlBaseAnmChr_c : m3d::anmChr_c {
public:
daPlBaseAnmChr_c() : field_0x35(0), field_0x36(0) {}
private:
/* 0x35 */ u8 field_0x35;
/* 0x36 */ u8 field_0x36;
};
class daPlBaseMdl_c : m3d::mdl_c {
public:
daPlBaseMdl_c() : field_0x5C(0) {}
private:
/* 0x24 */ daPlBaseMdlCallback_c mCallback;
/* 0x5C */ UNKWORD field_0x5C;
};
class daPlBaseCalcWorldCallback_c : public nw4r::g3d::ICalcWorldCallback {
public:
virtual void ExecCallbackA(
nw4r::g3d::ChrAnmResult *pResult, nw4r::g3d::ResMdl mdl,
nw4r::g3d::FuncObjCalcWorld *pFuncObj
) override; // at 0xC
virtual void ExecCallbackB(
nw4r::g3d::WorldMtxManip *pManip, nw4r::g3d::ResMdl mdl,
nw4r::g3d::FuncObjCalcWorld *pFuncObj
) override; // at 0x10
virtual void ExecCallbackC(
nw4r::math::MTX34 *pMtxArray, nw4r::g3d::ResMdl mdl,
nw4r::g3d::FuncObjCalcWorld *pFuncObj
) override; // at 0x14
};
class daPlBaseScnObjCallback_c : public nw4r::g3d::IScnObjCallback {};
class UnkPlayerClass {
public:
UnkPlayerClass() {}
~UnkPlayerClass() {}
private:
/* 0x00 */ u8 _0x00[0x10 - 0x00];
};
// Does this one have a vtable?
class daPlayerActBase_c : public daPlBase_c {
public:
daPlayerActBase_c() : field_0x334(120.0f), mCurrentAction(187) {}
virtual ~daPlayerActBase_c() {}
int preExecute() override;
void postExecute(MAIN_STATE_e state) override;
/* vt 0x080 */ virtual UNKWORD IfCurrentActionToActor(dAcBase_c *ac, UNKWORD) {
return 0;
}
/* vt 0x084 */ virtual UNKWORD vt_0x084(dAcBase_c *ac, UNKWORD) {
return 0;
}
/* vt 0x088 */ virtual void set0x439F(dAcBase_c *ac, UNKWORD) {}
/* vt 0x08C */ virtual void set0x43DE() {}
/* vt 0x090 */ virtual f32 vt_0x090() {
return 0.0f;
}
/* vt 0x094 */ virtual void relatedToUsingItem0x11() {
}
/* vt 0x098 */ virtual void setPosRot(const mVec3_c *pos, const mAng3_c *ang, bool force, UNKWORD, UNKWORD);
/* vt 0x09C */ virtual bool isLiftingObject() {
return false;
}
/* vt 0x0A0 */ virtual bool isThrowingOrRollingItem() {
return false;
}
/* vt 0x0A4 */ virtual bool canThrowObject() {
return false;
}
/* vt 0x0A8 */ virtual bool canRollObject() {
return false;
}
/* vt 0x0AC */ virtual UNKWORD vt_0x0AC() {
return 0;
}
/* vt 0x0B0 */ virtual bool isCarryingBomb() {
return false;
}
/* vt 0x0B4 */ virtual bool isPullingOutBomb() {
return false;
}
/* vt 0x0B8 */ virtual bool isUsingHarp() {
return false;
}
/* vt 0x0BC */ virtual void finishPlayingHarp() {}
/* vt 0x0C0 */ virtual bool isUsingWhip() {
return false;
}
/* vt 0x0C4 */ virtual bool anotherThingWithWhip() {
return false;
}
/* vt 0x0C8 */ virtual bool somethingWithWHip() {
return false;
}
/* vt 0x0CC */ virtual bool isWhipOnObject() {
return false;
}
/* vt 0x0D0 */ virtual bool tryGrabItemWithWhip() {
return false;
}
/* vt 0x0D4 */ virtual f32 someFloatWithWhip() {
return 0.0f;
}
/* vt 0x0D8 */ virtual UNKWORD getItemFromClawshotsMaybe() {
return 0;
}
/* vt 0x0DC */ virtual UNKWORD vt_0x0DC(dAcBase_c *, mVec3_c &) {
return 0;
}
/* vt 0x0E0 */ virtual bool isUsingBomb() {
return false;
}
/* vt 0x0E4 */ virtual const mVec3_c &getCenterTranslation() const {
// unused; overridden by daPlayerModelBase_c
return mVec3_c::Zero;
}
/* vt 0x0E8 */ virtual const mVec3_c &vt_0x0E8() const {
// unused; overridden by daPlayerModelBase_c
return mVec3_c::Zero;
}
/* vt 0x0EC */ virtual const mVec3_c &vt_0x0EC() const {
// unused; overridden by daPlayerModelBase_c
return mVec3_c::Zero;
}
/* vt 0x0F0 */ virtual const mVec3_c &vt_0x0F0() const {
// unused; overridden by daPlayerModelBase_c
return mVec3_c::Zero;
}
/* vt 0x0F4 */ virtual const mVec3_c &vt_0x0F4() const {
// unused; overridden by daPlayerModelBase_c
return mVec3_c::Zero;
}
/* vt 0x0F8 */ virtual mAng vt_0x0F8() {
return 0;
}
/* vt 0x0FC */ virtual mAng vt_0x0FC() {
return 0;
}
/* vt 0x100 */ virtual bool isCrawling() {
return false;
}
/* vt 0x104 */ virtual bool isUsingSword() {
return false;
}
/* vt 0x108 */ virtual bool isUsingMitts() {
return false;
}
/* vt 0x10C */ virtual bool isUsingShield() {
return false;
}
/* vt 0x110 */ virtual dAcEnBase_c *getTargetedActor1() const {
return nullptr;
}
/* vt 0x114 */ virtual void somethingWithCarriedActorFlags() {
// unused; overridden by daPlayerModelBase_c
}
/* vt 0x118 */ virtual dAcObjBase_c *getCurrentCarriedActor() {
// unused; overridden by daPlayerModelBase_c
return nullptr;
}
/* vt 0x11C */ virtual UNKWORD checkBeetleActorReferences() {
return 0;
}
/* vt 0x120 */ virtual UNKWORD getBeetleActorReferencesSize() {
return 0;
}
/* vt 0x124 */ virtual UNKWORD vt_0x124() {
return 0;
}
/* vt 0x128 */ virtual UNKWORD vt_0x128() {
return 0;
}
/* vt 0x12C */ virtual UNKWORD vt_0x12C() {
return 0;
}
/* vt 0x130 */ virtual bool isBurning() {
return 0;
}
/* vt 0x134 */ virtual bool isShocked() {
return 0;
}
/* vt 0x138 */ virtual bool isCursed() {
return 0;
}
/* vt 0x13C */ virtual bool isSmelly() {
return 0;
}
/* vt 0x140 */ virtual void store2Floats0x4500() {}
/* vt 0x144 */ virtual bool setActorLinkToSomething() {
return true;
}
/* vt 0x148 */ virtual void applyDamageWithIFrames() {}
/* vt 0x14C */ virtual void vt_0x14C() {}
/* vt 0x150 */ virtual bool hasLessThanQuarterHealth(bool) {
return false;
}
/* vt 0x154 */ virtual UNKWORD vt_0x154() {
return 0;
}
/* vt 0x158 */ virtual UNKWORD vt_0x158() {
return 0;
}
/* vt 0x15C */ virtual UNKWORD vt_0x15C() {
return 0;
}
/* vt 0x160 */ virtual f32 getYPos() {
return position.y;
}
/* vt 0x164 */ virtual f32 vt_0x164() {
return position.y;
}
/* vt 0x168 */ virtual f32 getCurrentAnimFrame() const {
return 0.0f;
}
/* vt 0x16C */ virtual f32 getFloatIfStruggling() {
return 0.0f;
}
/* vt 0x170 */ virtual bool isSwimming() {
return false;
}
/* vt 0x174 */ virtual bool isGustBellowsBeingBlown() {
return false;
}
/* vt 0x178 */ virtual const mAng3_c &getPointedAngle() const {
return rotation;
}
/* vt 0x17C */ virtual const mVec3_c &getBellowsPosOrOtherVec3F() const {
return position;
}
/* vt 0x180 */ virtual void setWindMillPos() {}
/* vt 0x184 */ virtual bool isOffeset0x435eEqual0x20() {
return 0;
}
/* vt 0x188 */ virtual const mVec3_c &getVec3F_Z() const {
return mVec3_c::Ez;
}
/* vt 0x18C */ virtual void getBodyMtx(mMtx_c *out_mtx, int boneIdx) {
// unused; overridden by daPlayerModelBase_c
}
/* vt 0x190 */ virtual void getSheathModelMatrix() {
// unused; overridden by daPlayerModelBase_c
}
/* vt 0x194 */ virtual void getSwordModelMatrix() {
// unused; overridden by daPlayerModelBase_c
}
/* vt 0x198 */ virtual void vt_0x198() {
// unused; overridden by daPlayerModelBase_c
}
/* vt 0x19C */ virtual void vt_0x19C() {
// unused; overridden by daPlayerModelBase_c
}
/* vt 0x1A0 */ virtual f32 vt_0x1A0() {
return 0.0f;
}
/* vt 0x1A4 */ virtual const mVec3_c &vt_0x1A4() {
return poscopy3;
}
/* vt 0x1A8 */ virtual f32 vt_0x1A8() {
return yoffset;
}
/* vt 0x1AC */ virtual f32 vt_0x1AC() {
return 0.0f;
}
/* vt 0x1B0 */ virtual bool isItemFairyFromBugnet() {
return false;
}
/* vt 0x1B4 */ virtual bool isByte0x434eEqual7() {
return false;
}
/* vt 0x1B8 */ virtual void canHandleGameOver() {}
/* vt 0x1BC */ virtual UNKWORD vt_0x1BC() {
return 0;
}
/* vt 0x1C0 */ virtual void *vt_0x1C0() const {
return nullptr;
}
/* vt 0x1C4 */ virtual UNKWORD getActorInActorRef1() {
return 0;
}
/* vt 0x1C8 */ virtual bool doesActorRef1Exist() {
return false;
}
/* vt 0x1CC */ virtual void unlinkActorRef1() {}
/* vt 0x1D0 */ virtual bool ifHasHealthAndSomethingElse() {
return false;
}
/* vt 0x1D4 */ virtual bool isChargingWeapon() {
return false;
}
/* vt 0x1D8 */ virtual bool isWeaponChargedFully() {
return false;
}
/* vt 0x1DC */ virtual bool didShootBow() {
return true;
}
/* vt 0x1E0 */ virtual UNKWORD vt_0x1E0() {
return 0;
}
/* vt 0x1E4 */ virtual dAcObjBase_c *checkRefArrayAtIndex() {
return nullptr;
}
/* vt 0x1E8 */ virtual s32 sizeOfActorRefs_16() {
return 0;
}
/* vt 0x1EC */ virtual bool vt_0x1EC() {
return true;
}
/* vt 0x1F0 */ virtual UNKWORD vt_0x1F0() {
return 0;
}
/* vt 0x1F4 */ virtual UNKWORD didDiveSky_and_other() {
return 0;
}
/* vt 0x1F8 */ virtual UNKWORD didDiveSky_andNotOther() {
return 0;
}
/* vt 0x1FC */ virtual UNKWORD isLandingFromSailcloth() {
return 0;
}
/* vt 0x200 */ virtual bool isBeingPulledFromRightClawshot() {
return false;
}
/* vt 0x204 */ virtual bool isBeingPulledByLeftClawshot() {
return false;
}
/* vt 0x208 */ virtual bool isDashing() {
return false;
}
/* vt 0x20C */ virtual bool isSliding() {
return false;
}
/* vt 0x210 */ virtual bool isSlding2() {
return false;
}
/* vt 0x214 */ virtual UNKWORD vt_0x214() {
return 0;
}
/* vt 0x218 */ virtual bool isinMpPosePower() {
return false;
}
/* vt 0x21C */ virtual bool isPushingBlock() {
return false;
}
/* vt 0x220 */ virtual dAcObjBase_c *getRidingActor() {
return nullptr;
}
/* vt 0x224 */ virtual bool isRidingBall() const {
return false;
}
/* vt 0x228 */ virtual dAcObjBase_c *getRidingMinecartActor() const {
return 0;
}
/* vt 0x22C */ virtual UNKWORD getTurnableSwitch() {
return 0;
}
/* vt 0x230 */ virtual UNKWORD vt_0x230() {
return 0;
}
/* vt 0x234 */ virtual UNKWORD vt_0x234() {
return 0;
}
/* vt 0x238 */ virtual void setVecIfInFreeFall() {}
/* vt 0x23C */ virtual void setActorRef10() {
}
/* vt 0x240 */ virtual f32 vt_0x240() {
return 0.0f;
}
/* vt 0x244 */ virtual UNKWORD vt_0x244() {
return 0;
}
/* vt 0x248 */ virtual UNKWORD vt_0x248() {
return 0;
}
/* vt 0x24C */ virtual UNKWORD vt_0x24C() {
return 0;
}
/* vt 0x250 */ virtual f32 vt_0x250() {
return 1.0f;
}
/* vt 0x254 */ virtual bool isAttackingUnderground() {
return false;
}
/* vt 0x258 */ virtual mAng vt_0x258() const {
return 0;
}
/* vt 0x25C */ virtual UNKWORD vt_0x25C() {
return 0;
}
/* vt 0x260 */ virtual f32 vt_0x260() const {
return 1.0f;
}
/* vt 0x264 */ virtual UNKWORD getGroosenatorIfIn() {
return 0;
}
/* vt 0x268 */ virtual void setActorRef11() {}
/* vt 0x26C */ virtual bool doesGameOver() {
return true;
}
/* vt 0x270 */ virtual void triggerExitRelated() {}
/* vt 0x274 */ virtual mAng vt_0x274() {
return rotation.y;
}
/* vt 0x278 */ virtual const mVec3_c &vt_0x278() const {
return position;
}
/* vt 0x27C */ virtual const mVec3_c &getSwordPos() const {
return position;
}
/* vt 0x280 */ virtual UNKWORD vt_0x280() {
return 0;
}
/* vt 0x284 */ virtual bool isUsingBugnet() const {
return false;
}
/* vt 0x288 */ virtual const mVec3_c &getBugNetPos() const {
return position;
}
/* vt 0x28C */ virtual bool isUsingBugnet1() {
return false;
}
/* vt 0x290 */ virtual UNKWORD bugNetCollectTreasure(u32 itemId) {
return 0;
}
/* vt 0x294 */ virtual mAng somethingSwitchDials() {
return 0;
}
/* vt 0x298 */ virtual UNKWORD vt_0x298() {
return 0;
}
/* vt 0x29C */ virtual UNKWORD getDieLargeDamageDir() {
return 0;
}
/* vt 0x2A0 */ virtual void doGameOver() {}
/* vt 0x2A4 */ virtual bool isRunningUpWall() {
return false;
}
/* vt 0x2A8 */ virtual void lookTowardItem() {}
/* vt 0x2AC */ virtual void vt_0x2AC() {}
/* vt 0x2B0 */ virtual void vt_0x2B0() {}
/* vt 0x2B4 */ virtual void triggerMoveEventMaybe() {}
/* vt 0x2B8 */ virtual void setActorRef9() {}
/* vt 0x2BC */ virtual void unlinkActorRef9() {}
/* vt 0x2C0 */ virtual bool vt_0x2C0() {
return true;
}
/* vt 0x2C4 */ virtual bool vt_0x2C4() {
return true;
}
/* vt 0x2C8 */ virtual bool isRecovering() const {
return false;
}
/* vt 0x2CC */ virtual bool isDrinkingPotion() {
return false;
}
/* vt 0x2D0 */ virtual bool isHealingShield() {
return false;
}
/* vt 0x2D4 */ virtual bool isBottleOut() {
return false;
}
/* vt 0x2D8 */ virtual bool isUsingBottle() {
return false;
}
/* vt 0x2DC */ virtual f32 getShieldRegenProgressMaybe() {
return 0.0f;
}
enum dAcPy_RidingActor {
RIDING_NONE = 0,
RIDING_TRUCK_MINECART = 1,
RIDING_LOFTWING = 2,
RIDING_BOAT = 3,
};
enum PlayerAttackDirection_e {
ATTACK_NONE = 0,
ATTACK_SWING_LEFT = 1,
ATTACK_SWING_RIGHT = 2,
ATTACK_SWING_DOWN = 3,
ATTACK_SWING_UP = 4,
ATTACK_STAB = 5,
ATTACK_SPIN_RIGHT = 6,
ATTACK_SPIN_LEFT = 7,
ATTACK_SPIN_DOWN = 8,
ATTACK_SPIN_UP = 9,
ATTACK_JUMP_SLASH = 10,
ATTACK_FINAL_BLOW = 11,
};
static bool isInEvent();
bool isAttackingLeft() const;
bool isAttackingRight() const;
bool isAttackingDown() const;
bool isAttackingUp() const;
bool isAttackingStab() const;
bool isAttackingSpinHorizontal() const;
bool isAttackingSpinVertical() const;
void setBonkRelatedAnimFlag(bool b);
void setPosYRot(const mVec3_c &pos, mAng rot, bool force, UNKWORD, UNKWORD);
void setTransform(const mMtx_c &mtx, bool force, UNKWORD, UNKWORD);
bool someTargetedActorCheck() const;
static mAng fn_8005BA90();
static mAng fn_8005BAA0();
static const mColor &getEarringsColor();
static mVec3_c sPos1;
static mVec3_c sPos2;
static mAng sRot1;
static mAng sRot2;
static const f32 sPushRelatedConstant;
protected:
/* 0x330 */ u8 unk_0x330[0x334 - 0x330];
/* 0x334 */ f32 field_0x334;
/* 0x338 */ u8 mAttackDirection;
/* 0x339 */ u8 mRidingActorType;
/* 0x33A */ u8 unk_0x33A[0x340 - 0x33A];
/* 0x340 */ u32 someFlags_0x340;
/* 0x344 */ u8 unk_0x344[0x348 - 0x344];
/* 0x348 */ u32 mSwordAndMoreStates;
/* 0x34C */ u8 unk_0x34C[0x350 - 0x34C];
/* 0x350 */ u32 someFlags_0x350;
/* 0x354 */ u32 someFlags_0x354;
/* 0x358 */ u32 someFlags_0x358;
/* 0x35C */ u32 mForceOrPreventActionFlags;
/* 0x360 */ u32 field_0x360;
/* 0x364 */ u32 mActionFlags;
/* 0x368 */ u32 mActionFlagsCont;
/* 0x36C */ int mCurrentAction; // TODO (Document Enum)
};
// Vtable at 8050da00, dtor reveals two superclasses
// until dAcObjBase_c
class daPlayerModelBase_c : public daPlayerActBase_c {
public:
daPlayerModelBase_c()
: mSwordRes(nullptr),
mAlinkRes(nullptr),
mPlCommonAnimeRes(nullptr),
mPlCommonSoundRes(nullptr),
mCurrentRes(nullptr),
mAlink2Res(nullptr),
mScnCallback1(this),
mScnCallback2(this),
mScnCallback3(this),
mScnCallback4(this),
mScnCallback5(this) {}
virtual ~daPlayerModelBase_c() {}
// These Flags are named under general guesses. Very likely may need some changes
// Correspond to mActionFlags
enum dAcPy_FLG0 {
@@ -57,174 +654,7 @@ public:
FLG0_HANGING_ITEM | FLG0_HANGING_LEDGE | FLG0_UNK_0x10 | FLG0_IN_AIR,
};
enum dAcPy_RidingActor {
RIDING_NONE = 0,
RIDING_TRUCK_MINECART = 1,
RIDING_LOFTWING = 2,
RIDING_BOAT = 3,
};
dAcPy_c();
virtual ~dAcPy_c();
void setTransform(const mMtx_c &mtx, UNKWORD, UNKWORD, UNKWORD);
void setPosYRot(const mVec3_c &pos, mAng rot, UNKWORD, UNKWORD, UNKWORD);
// argument is always false in existing code, true doesn't seem to make a difference
void bonk(bool unk = false);
bool fn_80202D90(bool);
/* 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 f32 vt_0x090();
/* vt 0x094 */ virtual void relatedToUsingItem0x11();
/* vt 0x098 */ virtual void setPosRot(const mVec3_c &pos, const mAng3_c &ang, UNKWORD, UNKWORD, UNKWORD);
/* vt 0x09C */ virtual void isLiftingObject();
/* vt 0x0A0 */ virtual void isThrowingOrRollingItem();
/* vt 0x0A4 */ virtual void canThrowObject();
/* vt 0x0A8 */ virtual void canRollObject();
/* vt 0x0AC */ virtual void vt_0x0AC();
/* vt 0x0B0 */ virtual void isCarryingBomb();
/* vt 0x0B4 */ virtual void isPullingOutBomb();
/* vt 0x0B8 */ virtual void isUsingHarp();
/* vt 0x0BC */ virtual void isFinishedPlayingHarp();
/* vt 0x0C0 */ virtual void isUsingWhip();
/* vt 0x0C4 */ virtual void anotherThingWithWhip();
/* vt 0x0C8 */ virtual void somethingWithWHip();
/* vt 0x0CC */ virtual void isWhipOnObject();
/* vt 0x0D0 */ virtual void tryGrabItemWithWhip();
/* vt 0x0D4 */ virtual void someFloatWithWhip();
/* vt 0x0D8 */ virtual void getItemFromClawshotsMaybe();
/* vt 0x0DC */ virtual void vt_0x0DC(dAcBase_c *, mVec3_c &);
/* vt 0x0E0 */ virtual void isUsingBomb();
/* vt 0x0E4 */ virtual mVec3_c &getCenterTranslation() const;
/* vt 0x0E8 */ virtual void vt_0x0E8();
/* vt 0x0EC */ virtual void vt_0x0EC();
/* vt 0x0F0 */ virtual void vt_0x0F0();
/* vt 0x0F4 */ virtual void vt_0x0F4();
/* vt 0x0F8 */ virtual void vt_0x0F8();
/* vt 0x0FC */ virtual void vt_0x0FC();
/* vt 0x100 */ virtual void isCrawling();
/* vt 0x104 */ virtual void isUsingSword();
/* vt 0x108 */ virtual void isUsingMitts();
/* vt 0x10C */ virtual void isUsingShield();
/* vt 0x110 */ virtual void getTargetedActor1();
/* vt 0x114 */ virtual void somethingWithCarriedActorFlags();
/* vt 0x118 */ virtual dAcObjBase_c *getCurrentCarriedActor();
/* vt 0x11C */ virtual void checkBeetleActorReferences();
/* vt 0x120 */ virtual void getBeetleActorReferencesSize();
/* vt 0x124 */ virtual void vt_0x124();
/* vt 0x128 */ virtual void vt_0x128();
/* vt 0x12C */ virtual void vt_0x12C();
/* vt 0x130 */ virtual void isBurning();
/* vt 0x134 */ virtual void isShocked();
/* vt 0x138 */ virtual void isCursed();
/* vt 0x13C */ virtual void isSmelly();
/* vt 0x140 */ virtual void store2Floats0x4500();
/* vt 0x144 */ virtual void setActorLinkToSomething();
/* vt 0x148 */ virtual void applyDamageWithIFrames();
/* vt 0x14C */ virtual void vt_0x14C();
/* vt 0x150 */ virtual bool hasLessThanQuarterHealth(bool);
/* vt 0x154 */ virtual void vt_0x154();
/* vt 0x158 */ virtual void vt_0x158();
/* vt 0x15C */ virtual void vt_0x15C();
/* vt 0x160 */ virtual void vt_0x160();
/* vt 0x164 */ virtual void vt_0x164();
/* vt 0x168 */ virtual f32 getCurrentAnimFrame() const;
/* vt 0x16C */ virtual void getFloatIfStruggling();
/* vt 0x170 */ virtual void isSwimming();
/* vt 0x174 */ virtual void isGustBellowsBeingBlown();
/* vt 0x178 */ virtual void getPointedAngle();
/* vt 0x17C */ virtual void getBellowsPosOrOtherVec3F();
/* vt 0x180 */ virtual void setWindMillPos();
/* vt 0x184 */ virtual void isOffeset0x435eEqual0x20();
/* vt 0x188 */ virtual void getVec3F_Z();
/* vt 0x18C */ virtual void getBodyMtx(mMtx_c *out_mtx, int boneIdx);
/* vt 0x190 */ virtual void getSheathModelMatrix();
/* vt 0x194 */ virtual void getSwordModelMatrix();
/* vt 0x198 */ virtual void vt_0x198();
/* vt 0x19C */ virtual void vt_0x19C();
/* vt 0x1A0 */ virtual void vt_0x1A0();
/* vt 0x1A4 */ virtual void vt_0x1A4();
/* vt 0x1A8 */ virtual void vt_0x1A8();
/* vt 0x1AC */ virtual void vt_0x1AC();
/* vt 0x1B0 */ virtual bool isItemFairyFromBugnet();
/* vt 0x1B4 */ virtual void isByte0x434eEqual7();
/* vt 0x1B8 */ virtual void canHandleGameOver();
/* vt 0x1BC */ virtual void vt_0x1BC();
/* vt 0x1C0 */ virtual void *vt_0x1C0() const;
/* vt 0x1C4 */ virtual void getActorInActorRef1();
/* vt 0x1C8 */ virtual void doesActorRef1Exist();
/* vt 0x1CC */ virtual void unlinkActorRef1();
/* vt 0x1D0 */ virtual void ifHasHealthAndSomethingElse();
/* vt 0x1D4 */ virtual void isChargingWeapon();
/* vt 0x1D8 */ virtual void isWeaponChargedFully();
/* vt 0x1DC */ virtual void didShootBow();
/* vt 0x1E0 */ virtual void vt_0x1E0();
/* vt 0x1E4 */ virtual void checkRefArrayAtIndex();
/* vt 0x1E8 */ virtual void sizeOfActorRefs_16();
/* vt 0x1EC */ virtual void vt_0x1EC();
/* vt 0x1F0 */ virtual void vt_0x1F0();
/* vt 0x1F4 */ virtual void didDiveSky_and_other();
/* vt 0x1F8 */ virtual void didDiveSky_andNotOther();
/* vt 0x1FC */ virtual void isLandingFromSailcloth();
/* vt 0x200 */ virtual void isBeingPulledFromRightClawshot();
/* vt 0x204 */ virtual void isBeingPulledByLeftClawshot();
/* vt 0x208 */ virtual void isDashing();
/* vt 0x20C */ virtual void isSliding();
/* vt 0x210 */ virtual void isSlding2();
/* vt 0x214 */ virtual void vt_0x214();
/* vt 0x218 */ virtual void isinMpPosePower();
/* vt 0x21C */ virtual void isPushingBlock();
/* vt 0x220 */ virtual void getRidingActor();
/* vt 0x224 */ virtual bool isRidingBall() const;
/* vt 0x228 */ virtual dAcObjBase_c *getRidingMinecartActor() const;
/* vt 0x22C */ virtual void getTurnableSwitch();
/* vt 0x230 */ virtual void vt_0x230();
/* vt 0x234 */ virtual void vt_0x234();
/* vt 0x238 */ virtual void setVecIfInFreeFall();
/* vt 0x23C */ virtual void setActorRef10();
/* vt 0x240 */ virtual void vt_0x240();
/* vt 0x244 */ virtual void vt_0x244();
/* vt 0x248 */ virtual void vt_0x248();
/* vt 0x24C */ virtual void vt_0x24C();
/* vt 0x250 */ virtual void vt_0x250();
/* vt 0x254 */ virtual void isAttackingUnderground();
/* vt 0x258 */ virtual mAng vt_0x258() const;
/* vt 0x25C */ virtual void vt_0x25C();
/* vt 0x260 */ virtual f32 vt_0x260() const;
/* vt 0x264 */ virtual void getGroosenatorIfIn();
/* vt 0x268 */ virtual void setActorRef11();
/* vt 0x26C */ virtual void doesGameOver();
/* vt 0x270 */ virtual void triggerExitRelated();
/* vt 0x274 */ virtual void vt_0x274();
/* vt 0x278 */ virtual void vt_0x278();
/* vt 0x27C */ virtual void getSwordPos();
/* vt 0x280 */ virtual void vt_0x280();
/* vt 0x284 */ virtual bool isUsingBugnet() const;
/* vt 0x288 */ virtual const mVec3_c &getBugNetPos() const;
/* vt 0x28C */ virtual bool isUsingBugnet1();
/* vt 0x290 */ virtual void bugNetCollectTreasure(u32 itemId);
/* vt 0x294 */ virtual void somethingSwitchDials();
/* vt 0x298 */ virtual void vt_0x298();
/* vt 0x29C */ virtual void getDieLargeDamageDir();
/* vt 0x2A0 */ virtual void doGameOver();
/* vt 0x2A4 */ virtual void isRunningUpWall();
/* vt 0x2A8 */ virtual void lookTowardItem();
/* vt 0x2AC */ virtual void vt_0x2AC();
/* vt 0x2B0 */ virtual void vt_0x2B0();
/* vt 0x2B4 */ virtual void triggerMoveEventMaybe();
/* vt 0x2B8 */ virtual void setActorRef9();
/* vt 0x2BC */ virtual void unlinkActorRef9();
/* vt 0x2C0 */ virtual void vt_0x2C0();
/* vt 0x2C4 */ virtual void vt_0x2C4();
/* vt 0x2C8 */ virtual bool isRecovering() const;
/* vt 0x2CC */ virtual void isDrinkingPotion();
/* vt 0x2D0 */ virtual void isHealingShield();
/* vt 0x2D4 */ virtual void isBottleOut();
/* vt 0x2D8 */ virtual void isUsingBottle();
/* vt 0x2DC */ virtual void getShieldRegenProgressMaybe();
// overriddes omitted
/* vt 0x2E0 */ virtual void vt_0x2E0();
/* vt 0x2E4 */ virtual void someDivingHrabbingStuff();
/* vt 0x2E8 */ virtual void vt_0x2E8();
@@ -237,31 +667,79 @@ public:
/* vt 0x304 */ virtual void vt_0x304();
/* vt 0x308 */ virtual void vt_0x308();
/* vt 0x30C */ virtual void vt_0x30C();
protected:
/* 0x370 */ mHeapAllocator_c mModelAllocator;
/* 0x38C */ mHeapAllocator_c mSwordAllocator;
/* 0x3A8 */ mHeapAllocator_c mShieldAllocator;
/* 0x3C4 */ u32 mModelUpdateFlags;
/* 0x3C8 */ nw4r::g3d::ResFile mSwordRes;
/* 0x3CC */ nw4r::g3d::ResFile mAlinkRes;
/* 0x3D0 */ nw4r::g3d::ResFile mPlCommonAnimeRes;
/* 0x3D4 */ nw4r::g3d::ResFile mPlCommonSoundRes;
/* 0x3D8 */ nw4r::g3d::ResFile mCurrentRes;
/* 0x3DC */ nw4r::g3d::ResFile mAlink2Res;
/* 0x3E0 */ daPlBaseMdl_c mMainMdl;
/* 0x440 */ daPlBaseCallback1_c mCallback1;
/* 0x448 */ m3d::mdl_c mHeadMdl;
/* 0x46C */ daPlBaseCallback2_c mCallback2;
/* 0x474 */ m3d::smdl_c mFaceMdl;
/* 0x490 */ m3d::anmChr_c mFaceAnmChr;
/* 0x4CC */ m3d::anmTexPat_c mFaceTexPat;
/* 0x4FC */ m3d::anmTexSrt_c mFaceTexSrt;
/* 0x52C */ m3d::anmChr_c mHeadAnmChr;
/* 0x564 */ m3d::smdl_c mHandsMdl;
/* 0x580 */ daPlBaseCalcWorldCallback_c mCalcWorldCallback;
/* 0x588 */ daPlBaseScnObjCallback_c mScnObjCallback;
/* 0x598 */ m3d::smdl_c mSwordMdl;
/* 0x5B4 */ m3d::anmMatClr_c mAnmMatClr;
/* 0x5E0 */ m3d::smdl_c mShieldMdl;
/* 0x5FC */ m3d::anmTexPat_c mUnkAnmTextPat1;
/* 0x628 */ m3d::anmTexPat_c mUnkAnmTextPat2;
/* 0x654 */ m3d::smdl_c mSheathMdl;
/* 0x670 */ m3d::smdl_c mUnkMdl1;
/* 0x68C */ m3d::anmChr_c mAnmChr;
/* 0x6C4 */ m3d::anmChrBlend_c mAnmChrBlend;
/* 0x6EC */ dScnCallback_c mScnCallback1;
/* 0x6F8 */ dScnCallback_c mScnCallback2;
/* 0x704 */ dScnCallback_c mScnCallback3;
/* 0x610 */ dScnCallback_c mScnCallback4;
/* 0x61C */ dScnCallback_c mScnCallback5;
/* 0x728 */ daPlBaseAnmChr_c mAnmChrs[6];
/* 0x878 */ dCcD_Cyl mCcCyls[3];
/* 0xC68 */ dCcD_Cps mCcCpss[3];
/* 0x10B8 */ dCcD_Cyl mCcCyl;
/* 0x12AC */ mVec3_c mTranslationHand[2];
/* 0x12C4 */ mVec3_c mTranslationWeapon[2];
/* 0x12DC */ mVec3_c mToeTranslation[2];
/* 0x1300 */ UnkPlayerClass mUnk_0x1300[4];
/* 0x1340 */ mQuat_c mQuat1;
/* 0x1350 */ mQuat_c mQuat2;
/* 0x1360 */ dAcRef_c<dAcObjBase_c> mRef; // not sure about the class
};
// The split between daPlBase_c and dAcPy_c is somewhere after
// member offset 0x1368 and before 0x137C
class dAcPy_c : public daPlayerModelBase_c {
public:
dAcPy_c();
virtual ~dAcPy_c();
// argument is always false in existing code, true doesn't seem to make a difference
void bonk(bool unk = false);
bool fn_80202D90(bool);
/* overrides omitted */
/* vt 0x310 */ virtual void vt_0x310();
/* vt 0x314 */ virtual void vt_0x314();
/* vt 0x318 */ virtual void vt_0x318();
/* 0x330 */ u8 unk_0x330[0x339 - 0x330];
/* 0x339 */ u8 mRidingActorType;
/* 0x33A */ u8 unk_0x33A[0x340 - 0x33A];
/* 0x340 */ u32 someFlags_0x340;
/* 0x344 */ u8 unk_0x344[0x348 - 0x344];
/* 0x348 */ u32 mSwordAndMoreStates;
/* 0x34C */ u8 unk_0x34C[0x350 - 0x34C];
/* 0x350 */ u32 someFlags_0x350;
u8 UNK_0x354[0x35C - 0x354];
/* 0x35C */ u32 mForceOrPreventActionFlags;
/* 0x360 */ UNKWORD field_0x360;
/* 0x364 */ u32 mActionFlags;
/* 0x368 */ u32 mActionFlagsCont;
/* 0x36C */ int mCurrentAction; // TODO (Document Enum)
/* 0x370 */ u8 _370[0x3C8 - 0x370];
/* 0x3C8 */ nw4r::g3d::ResFile mSwordRes;
/* 0x3CC */ u8 _0x3CC[0x5B4 - 0x3CC];
/* 0x5B4 */ m3d::anmMatClr_c mAnmMatClr;
/* 0x5E0 */ u8 _0x5E0[0x4564 - 0x5E0];
protected:
/* 0x136C */ u8 _0x136C[0x4564 - 0x136C];
/* 0x4564 */ f32 field_0x4564;
public:
f32 getField_0x4564() const {
return field_0x4564;
}
@@ -270,6 +748,10 @@ public:
return mAnmMatClr.getFrame(0);
}
nw4r::g3d::ResFile getSwordResFile() const {
return mSwordRes;
}
inline bool checkFlags0x340(u32 mask) const {
return (someFlags_0x340 & mask) != 0;
}
@@ -278,6 +760,14 @@ public:
return (someFlags_0x350 & mask) != 0;
}
inline void onFlags_0x360(u32 mask) {
field_0x360 |= mask;
}
inline void onForceOrPreventActionFlags(u32 mask) {
mForceOrPreventActionFlags |= mask;
}
bool CheckPlayerFly() const {
return mActionFlags & FLG0_FLY;
}
@@ -347,6 +837,9 @@ public:
static u32 getCurrentHealthCapacity();
bool canDowseProbably() const;
mAng fn_8023B520() const;
mAng fn_8023B590() const;
};
#endif
+3 -3
View File
@@ -28,9 +28,9 @@ public:
}
protected:
nw4r::g3d::AnmObj *mpAnmObj;
EGG::FrmHeap *mpFrameHeap;
mAllocator_c mAllocator;
/* 0x04 */ nw4r::g3d::AnmObj *mpAnmObj;
/* 0x08 */ EGG::FrmHeap *mpFrameHeap;
/* 0x0C */ mAllocator_c mAllocator;
};
} // namespace m3d
+4 -4
View File
@@ -47,10 +47,10 @@ public:
}
private:
f32 mEndFrame;
f32 mStartFrame;
f32 mCurrentFrame;
u8 mPlayState;
/* 0x28 */ f32 mEndFrame;
/* 0x2C */ f32 mStartFrame;
/* 0x30 */ f32 mCurrentFrame;
/* 0x34 */ u8 mPlayState;
};
} // namespace m3d
+6 -7
View File
@@ -133,7 +133,7 @@ int dAcBombf_c::actorExecute() {
}
int dAcBombf_c::draw() {
if (field_0x3D0 != 0 && (dAcPy_c::LINK->mActionFlagsCont & 0x400000) == 0) {
if (field_0x3D0 != 0 && !dAcPy_c::LINK->checkActionFlagsCont(0x400000)) {
return SUCCEEDED;
}
drawModelType1(&mModel);
@@ -170,7 +170,6 @@ void dAcBombf_c::initializeState_Wait() {}
extern "C" u16 lbl_8057A750;
void dAcBombf_c::executeState_Wait() {
// Stack problems
if (SceneflagManager::sInstance->checkBoolFlag(roomid, mDespawnSceneFlag)) {
deleteRequest();
dAcBomb_c *bomb = mBombRef.get();
@@ -184,12 +183,12 @@ void dAcBombf_c::executeState_Wait() {
f32 scaleFactor = mScale.x;
if (field_0x3D2 == 0 || field_0x3D2 == 2) {
mVec3_c m;
PSMTXMultVecSR(mWorldMtx, mVec3_c::Ey, m);
mVec3_c up;
PSMTXMultVecSR(mWorldMtx, mVec3_c::Ey, up);
mVec3_c upScaled = up * 30.0f;
mVec3_c checkPos = position + upScaled;
mVec3_c m3 = position + (m * 30.0f);
if (mTimeAreaStruct.check(roomid, m3, 0, 30.0f, 0.1f) && field_0x3D4 != 1) {
if (mTimeAreaStruct.check(roomid, checkPos, 0, 30.0f, 0.1f) && field_0x3D4 != 1) {
if (mTimeAreaStruct.field_0x04 == 1) {
playSound(SE_TIMESLIP_TIMESLIP);
} else {
+1 -1
View File
@@ -55,7 +55,7 @@ extern const u16 PARTICLE_RESOURCE_ID_MAPPING_8_;
void dAcTWoodArea_c::initializeState_Wait() {}
void dAcTWoodArea_c::executeState_Wait() {
if (dAcPy_c::LINK != nullptr && (dAcPy_c::LINK->someFlags_0x350 & 0x2000)) {
if (dAcPy_c::LINK != nullptr && dAcPy_c::LINK->checkFlags0x350(0x2000)) {
// This is a bit messed up
mVec3_c dist = position - dAcPy_c::LINK->position;
f32 attachRadius = getAttachRadius();
+2 -2
View File
@@ -50,7 +50,7 @@ bool dAcOSeatSword_c::createHeap() {
mRes = dAcPy_c::getItemResFile(goddess_sword, heap_allocator);
TRY_CREATE(mSwordMdl.create(mRes.GetResMdl(goddess_sword), &heap_allocator, 0x120, 1, nullptr));
} else if (mSubtype == 1) {
mRes = dAcPy_c::LINK->mSwordRes;
mRes = dAcPy_c::GetLink()->getSwordResFile();
const char *sword_name = getSwordName(EQUIPPED_SWORD);
TRY_CREATE(mSwordMdl.create(mRes.GetResMdl(sword_name), &heap_allocator, 0x120, 1, nullptr));
}
@@ -173,7 +173,7 @@ void dAcOSeatSword_c::registerInEvent() {
ang.y += someAng;
vec.rotY(rotation.y);
vec += position;
player->setPosRot(vec, ang, 0, 1, 0);
player->setPosRot(&vec, &ang, 0, 1, 0);
mField_0x7E8.set(0);
updateSwordMdl();
}
+1 -1
View File
@@ -21,7 +21,7 @@ int dTgHolyWater_c::actorExecute() {
mDowsingTarget.doUnregister();
}
if (isLinkNearby()) {
dAcPy_c::LINK->mForceOrPreventActionFlags |= 0x10000000;
dAcPy_c::LINK->onForceOrPreventActionFlags(0x10000000);
}
return SUCCEEDED;
}
+7
View File
@@ -1,3 +1,10 @@
#include "d/a/d_a_player.h"
dAcPy_c *dAcPy_c::LINK;
// TODO: Disable this pragma when the ctors are matching
#pragma dont_inline on
dAcPy_c::dAcPy_c() {}
#pragma dont_inline reset
dAcPy_c::~dAcPy_c() {}
+5 -5
View File
@@ -43,20 +43,20 @@ void dAcOsw_c::rideCallback(dBgW *unknown, dAcObjBase_c *actor, dAcObjBase_c *in
dAcOsw_c *sw = static_cast<dAcOsw_c *>(actor);
// halp
if (!(link == nullptr || ((link->mActionFlags & 0x40000) == 0 &&
(((link->someFlags_0x340 & 0x800000) == 0 ||
if (!(link == nullptr || (!link->checkActionFlags(dAcPy_c::FLG0_IN_WATER) &&
((!link->checkFlags0x340(0x800000) ||
((link->getCurrentCarriedActor() != nullptr &&
link->getCurrentCarriedActor()->mActorCarryInfo.testCarryFlag(0x04)))))))) {
return;
}
if (interactor->mActorCarryInfo.isCarried != 1) {
if (link == nullptr || (link->mActionFlags & 0xC70852) == 0) {
if (link == nullptr || (link->checkActionFlags(0xC70852)) == 0) {
if (!sw->someInteractCheck(link != nullptr)) {
bool needsOnFlag = sw->mOnSceneFlag < 0xFF &&
!SceneflagManager::sInstance->checkBoolFlag(sw->roomid, sw->mOnSceneFlag);
if (!needsOnFlag && sw->mObjRef.get() == nullptr && link != nullptr && sw->field_0x5F1 == 0 &&
sw->mStateMgr.isState(StateID_On)) {
link->field_0x360 |= 0x8000;
link->onFlags_0x360(0x8000);
}
}
}
@@ -136,7 +136,7 @@ int dAcOsw_c::actorPostCreate() {
int dAcOsw_c::doDelete() {
dAcPy_c *link = dAcPy_c::LINK;
if (mSwitchType != 1 && field_0x5F2 == 0) {
if ((link == nullptr || (link->someFlags_0x340 & 0x200) != 0) && (link == nullptr || link->roomid == roomid)) {
if ((link == nullptr || link->checkFlags0x340(0x200)) && (link == nullptr || link->roomid == roomid)) {
if (mOffSceneFlag < 0xFF && SceneflagManager::sInstance->checkBoolFlag(roomid, mOffSceneFlag)) {
SceneflagManager::sInstance->unsetFlag(roomid, mOffSceneFlag);
}
-1
View File
@@ -1 +0,0 @@
#include "d/d_player.h"
+129
View File
@@ -0,0 +1,129 @@
#include "d/a/d_a_item.h"
#include "d/a/d_a_itembase.h"
#include "d/d_player.h"
#include "common.h"
#include "d/a/d_a_player.h"
#include "d/a/obj/d_a_obj_base.h"
#include "m/m_angle.h"
#include "m/m_color.h"
#include "m/m_vec.h"
#include "toBeSorted/event_manager.h"
mVec3_c daPlayerActBase_c::sPos1(mVec3_c::Zero);
mVec3_c daPlayerActBase_c::sPos2(mVec3_c::Zero);
mAng daPlayerActBase_c::sRot1(0);
mAng daPlayerActBase_c::sRot2(0);
const f32 daPlayerActBase_c::sPushRelatedConstant = 75.0f;
int daPlayerActBase_c::preExecute() {
if (dAcObjBase_c::preExecute() == NOT_READY) {
return NOT_READY;
}
someFlags_0x350 = 0;
someFlags_0x354 = 0;
return SUCCEEDED;
}
void daPlayerActBase_c::postExecute(MAIN_STATE_e state) {
if (state != CANCELED) {
someFlags_0x358 = 0;
mForceOrPreventActionFlags = 0;
}
dAcObjBase_c::postExecute(state);
}
bool daPlayerActBase_c::isInEvent() {
return EventManager::isInEvent();
}
bool daPlayerActBase_c::isAttackingLeft() const {
return mAttackDirection == ATTACK_SPIN_LEFT || mAttackDirection == ATTACK_SWING_LEFT;
}
bool daPlayerActBase_c::isAttackingRight() const {
return mAttackDirection == ATTACK_SPIN_RIGHT || mAttackDirection == ATTACK_SWING_RIGHT;
}
bool daPlayerActBase_c::isAttackingDown() const {
return mAttackDirection == ATTACK_SWING_DOWN || mAttackDirection == ATTACK_SPIN_DOWN ||
mAttackDirection == ATTACK_JUMP_SLASH;
}
bool daPlayerActBase_c::isAttackingUp() const {
return mAttackDirection == ATTACK_SPIN_UP || mAttackDirection == ATTACK_SWING_UP;
}
bool daPlayerActBase_c::isAttackingStab() const {
return mAttackDirection == ATTACK_STAB;
}
bool daPlayerActBase_c::isAttackingSpinHorizontal() const {
return mAttackDirection == ATTACK_SPIN_LEFT || mAttackDirection == ATTACK_SPIN_RIGHT;
}
bool daPlayerActBase_c::isAttackingSpinVertical() const {
return mAttackDirection == ATTACK_SPIN_DOWN || mAttackDirection == ATTACK_SPIN_UP;
}
void daPlayerActBase_c::setBonkRelatedAnimFlag(bool b) {
if (b) {
field_0x360 |= 2;
} else {
field_0x360 |= 1;
}
}
void daPlayerActBase_c::setPosRot(const mVec3_c *pos, const mAng3_c *rot, bool force, UNKWORD, UNKWORD) {
if (isInEvent() || force) {
mStts.ClrCcMove();
if (pos != nullptr) {
position = *pos;
mOldPosition = position;
velocity.y = 0.0f;
}
if (rot != nullptr) {
rotation = *rot;
angle.y = rotation.y;
}
}
}
void daPlayerActBase_c::setPosYRot(const mVec3_c &pos, mAng rot, bool force, UNKWORD a4, UNKWORD a5) {
mAng3_c ang(0, rot, 0);
setPosRot(&pos, &ang, force, a4, a5);
}
void daPlayerActBase_c::setTransform(const mMtx_c &mtx, bool force, UNKWORD a4, UNKWORD a5) {
mVec3_c translate;
translate.x = mtx.m[0][3];
translate.y = mtx.m[1][3];
translate.z = mtx.m[2][3];
mAng3_c rot;
mtx.toRot(rot);
setPosRot(&translate, &rot, force, a4, a5);
}
extern "C" bool fn_80213090(dAcEnBase_c *);
bool daPlayerActBase_c::someTargetedActorCheck() const {
return fn_80213090(getTargetedActor1());
}
mAng daPlayerActBase_c::fn_8005BA90() {
return dAcPy_c::LINK2->fn_8023B520();
}
mAng daPlayerActBase_c::fn_8005BAA0() {
return dAcPy_c::LINK2->fn_8023B590();
}
const mColor &daPlayerActBase_c::getEarringsColor() {
static const mColor sNoFireshieldEarrings = mColor(45, 80, 127, 255);
static const mColor sFireshieldEarrings = mColor(222, 57, 20, 255);
if (dAcItem_c::hasItem(ITEM_FIRESHIELD_EARRINGS)) {
return sFireshieldEarrings;
} else {
return sNoFireshieldEarrings;
}
}
+5
View File
@@ -0,0 +1,5 @@
#include "d/a/d_a_player.h"
void dummy_triggerDtor(daPlayerModelBase_c *pl) {
delete pl;
}