Continue work on CActor::UpdateAnimation; lots of headers n stuff

Former-commit-id: 85284f7640
This commit is contained in:
Luke Street 2022-08-14 14:38:41 -04:00
parent 97847d1d61
commit eb6819f1fd
43 changed files with 1190 additions and 148 deletions

View File

@ -3471,8 +3471,8 @@ __sinit_DolphinCAudioSys_cpp:
.section .sdata2, "a"
.balign 8
.global kMaxVolume__9CAudioSys
kMaxVolume__9CAudioSys:
.global kkMaxVolume__9CAudioSys
kkMaxVolume__9CAudioSys:
# ROM: 0x3FB200
.byte 0x7F

View File

@ -422,8 +422,8 @@ SetTranslation__6CActorFRC9CVector3f:
/* 80052F28 0004FE88 38 21 00 10 */ addi r1, r1, 0x10
/* 80052F2C 0004FE8C 4E 80 00 20 */ blr
.global ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManager
ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManager:
.global ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManagerb
ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManagerb:
/* 80052F30 0004FE90 94 21 FF 20 */ stwu r1, -0xe0(r1)
/* 80052F34 0004FE94 7C 08 02 A6 */ mflr r0
/* 80052F38 0004FE98 90 01 00 E4 */ stw r0, 0xe4(r1)
@ -3082,8 +3082,8 @@ lbl_80055400:
/* 80055400 00052360 54 80 06 3F */ clrlwi. r0, r4, 0x18
/* 80055404 00052364 41 82 00 1C */ beq lbl_80055420
/* 80055408 00052368 80 83 00 10 */ lwz r4, 0x10(r3)
/* 8005540C 0005236C 3C 60 80 57 */ lis r3, lbl_8056C9EC@ha
/* 80055410 00052370 38 63 C9 EC */ addi r3, r3, lbl_8056C9EC@l
/* 8005540C 0005236C 3C 60 80 57 */ lis r3, mSoundPOINodes__9CAnimData@ha
/* 80055410 00052370 38 63 C9 EC */ addi r3, r3, mSoundPOINodes__9CAnimData@l
/* 80055414 00052374 83 A4 02 18 */ lwz r29, 0x218(r4)
/* 80055418 00052378 3B 23 00 04 */ addi r25, r3, 4
/* 8005541C 0005237C 48 00 00 08 */ b lbl_80055424
@ -3126,7 +3126,7 @@ lbl_80055474:
/* 800554A0 00052400 80 B9 00 34 */ lwz r5, 0x34(r25)
/* 800554A4 00052404 C0 59 00 3C */ lfs f2, 0x3c(r25)
/* 800554A8 00052408 C0 79 00 40 */ lfs f3, 0x40(r25)
/* 800554AC 0005240C 4B FF DA 85 */ bl ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManager
/* 800554AC 0005240C 4B FF DA 85 */ bl ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManagerb
lbl_800554B0:
/* 800554B0 00052410 3B 39 00 44 */ addi r25, r25, 0x44
/* 800554B4 00052414 3B 18 00 01 */ addi r24, r24, 1
@ -3147,8 +3147,8 @@ lbl_800554E4:
/* 800554E4 00052444 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 800554E8 00052448 41 82 00 1C */ beq lbl_80055504
/* 800554EC 0005244C 80 84 00 10 */ lwz r4, 0x10(r4)
/* 800554F0 00052450 3C 60 80 57 */ lis r3, lbl_8056BDF4@ha
/* 800554F4 00052454 38 63 BD F4 */ addi r3, r3, lbl_8056BDF4@l
/* 800554F0 00052450 3C 60 80 57 */ lis r3, mInt32POINodes__9CAnimData@ha
/* 800554F4 00052454 38 63 BD F4 */ addi r3, r3, mInt32POINodes__9CAnimData@l
/* 800554F8 00052458 83 A4 02 10 */ lwz r29, 0x210(r4)
/* 800554FC 0005245C 3B 23 00 04 */ addi r25, r3, 4
/* 80055500 00052460 48 00 00 08 */ b lbl_80055508
@ -3191,7 +3191,7 @@ lbl_80055558:
/* 80055584 000524E4 39 21 00 24 */ addi r9, r1, 0x24
/* 80055588 000524E8 80 B9 00 34 */ lwz r5, 0x34(r25)
/* 8005558C 000524EC 38 C0 00 14 */ li r6, 0x14
/* 80055590 000524F0 4B FF D9 A1 */ bl ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManager
/* 80055590 000524F0 4B FF D9 A1 */ bl ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManagerb
/* 80055594 000524F4 48 00 00 30 */ b lbl_800555C4
lbl_80055598:
/* 80055598 000524F8 2C 05 00 06 */ cmpwi r5, 6
@ -3225,8 +3225,8 @@ lbl_800555F8:
/* 800555F8 00052558 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 800555FC 0005255C 41 82 00 1C */ beq lbl_80055618
/* 80055600 00052560 80 84 00 10 */ lwz r4, 0x10(r4)
/* 80055604 00052564 3C 60 80 57 */ lis r3, lbl_8056C2B8@ha
/* 80055608 00052568 38 63 C2 B8 */ addi r3, r3, lbl_8056C2B8@l
/* 80055604 00052564 3C 60 80 57 */ lis r3, mParticlePOINodes__9CAnimData@ha
/* 80055608 00052568 38 63 C2 B8 */ addi r3, r3, mParticlePOINodes__9CAnimData@l
/* 8005560C 0005256C 83 04 02 14 */ lwz r24, 0x214(r4)
/* 80055610 00052570 3B 23 00 04 */ addi r25, r3, 4
/* 80055614 00052574 48 00 00 08 */ b lbl_8005561C
@ -3522,7 +3522,7 @@ lbl_800559AC:
/* 80055A20 00052980 38 A0 FF FF */ li r5, -1
/* 80055A24 00052984 98 1F 00 B4 */ stb r0, 0xb4(r31)
/* 80055A28 00052988 35 1F 00 DC */ addic. r8, r31, 0xdc
/* 80055A2C 0005298C 88 82 CC 40 */ lbz r4, kMaxVolume__9CAudioSys@sda21(r2)
/* 80055A2C 0005298C 88 82 CC 40 */ lbz r4, kkMaxVolume__9CAudioSys@sda21(r2)
/* 80055A30 00052990 38 60 00 02 */ li r3, 2
/* 80055A34 00052994 88 E1 00 1D */ lbz r7, 0x1d(r1)
/* 80055A38 00052998 38 00 00 00 */ li r0, 0

View File

@ -88,11 +88,11 @@ lbl_805A6DB0:
.balign 8
.lcomm lbl_8045B140, 0x40, 4
.comm lbl_8056A600, 0x17F4, 4
.comm lbl_8056BDF4, 0x4C4, 4
.comm lbl_8056C2B8, 0x734, 4
.comm lbl_8056C9EC, 0x554, 4
.comm lbl_8056CF40, 0x4C4, 4
.comm mBoolPOINodes__9CAnimData, 0x17F4, 4
.comm mInt32POINodes__9CAnimData, 0x4C4, 4
.comm mParticlePOINodes__9CAnimData, 0x734, 4
.comm mSoundPOINodes__9CAnimData, 0x554, 4
.comm sInt32TransientCache, 0x4C4, 4
.section .sbss
.balign 8
@ -238,17 +238,17 @@ AdvanceAdditiveAnims__9CAnimDataFf:
/* 800295A8 00026508 39 05 66 60 */ addi r8, r5, lbl_805A6660@l
/* 800295AC 0002650C 7C 9D 23 78 */ mr r29, r4
/* 800295B0 00026510 C0 88 00 00 */ lfs f4, 0(r8)
/* 800295B4 00026514 3C E0 80 57 */ lis r7, lbl_8056BDF4@ha
/* 800295B4 00026514 3C E0 80 57 */ lis r7, mInt32POINodes__9CAnimData@ha
/* 800295B8 00026518 C0 68 00 04 */ lfs f3, 4(r8)
/* 800295BC 0002651C 3C C0 80 57 */ lis r6, lbl_8056A600@ha
/* 800295BC 0002651C 3C C0 80 57 */ lis r6, mBoolPOINodes__9CAnimData@ha
/* 800295C0 00026520 C0 48 00 08 */ lfs f2, 8(r8)
/* 800295C4 00026524 3C A0 80 57 */ lis r5, lbl_8056C2B8@ha
/* 800295C4 00026524 3C A0 80 57 */ lis r5, mParticlePOINodes__9CAnimData@ha
/* 800295C8 00026528 C0 08 00 0C */ lfs f0, 0xc(r8)
/* 800295CC 0002652C 3C 80 80 57 */ lis r4, lbl_8056C9EC@ha
/* 800295D0 00026530 38 E7 BD F4 */ addi r7, r7, lbl_8056BDF4@l
/* 800295D4 00026534 38 C6 A6 00 */ addi r6, r6, lbl_8056A600@l
/* 800295D8 00026538 38 A5 C2 B8 */ addi r5, r5, lbl_8056C2B8@l
/* 800295DC 0002653C 38 84 C9 EC */ addi r4, r4, lbl_8056C9EC@l
/* 800295CC 0002652C 3C 80 80 57 */ lis r4, mSoundPOINodes__9CAnimData@ha
/* 800295D0 00026530 38 E7 BD F4 */ addi r7, r7, mInt32POINodes__9CAnimData@l
/* 800295D4 00026534 38 C6 A6 00 */ addi r6, r6, mBoolPOINodes__9CAnimData@l
/* 800295D8 00026538 38 A5 C2 B8 */ addi r5, r5, mParticlePOINodes__9CAnimData@l
/* 800295DC 0002653C 38 84 C9 EC */ addi r4, r4, mSoundPOINodes__9CAnimData@l
/* 800295E0 00026540 D0 81 00 80 */ stfs f4, 0x80(r1)
/* 800295E4 00026544 FF 80 08 90 */ fmr f28, f1
/* 800295E8 00026548 FF C0 F8 90 */ fmr f30, f31
@ -2456,9 +2456,9 @@ SetRandomPlaybackRate__9CAnimDataFR9CRandom16:
/* 8002B488 000283E8 93 C1 00 18 */ stw r30, 0x18(r1)
/* 8002B48C 000283EC 93 A1 00 14 */ stw r29, 0x14(r1)
/* 8002B490 000283F0 7C 7F 1B 78 */ mr r31, r3
/* 8002B494 000283F4 3C 60 80 57 */ lis r3, lbl_8056BDF4@ha
/* 8002B494 000283F4 3C 60 80 57 */ lis r3, mInt32POINodes__9CAnimData@ha
/* 8002B498 000283F8 80 1F 02 10 */ lwz r0, 0x210(r31)
/* 8002B49C 000283FC 38 63 BD F4 */ addi r3, r3, lbl_8056BDF4@l
/* 8002B49C 000283FC 38 63 BD F4 */ addi r3, r3, mInt32POINodes__9CAnimData@l
/* 8002B4A0 00028400 7C 9D 23 78 */ mr r29, r4
/* 8002B4A4 00028404 38 63 00 04 */ addi r3, r3, 4
/* 8002B4A8 00028408 7C 09 03 A6 */ mtctr r0
@ -2578,9 +2578,9 @@ lbl_8002B554:
/* 8002B654 000285B4 41 82 02 30 */ beq lbl_8002B884
/* 8002B658 000285B8 48 00 31 C9 */ bl ResetPOILists__9CAnimDataFv
/* 8002B65C 000285BC C0 0D 81 EC */ lfs f0, lbl_805A6DAC@sda21(r13)
/* 8002B660 000285C0 3C 60 80 57 */ lis r3, lbl_8056BDF4@ha
/* 8002B660 000285C0 3C 60 80 57 */ lis r3, mInt32POINodes__9CAnimData@ha
/* 8002B664 000285C4 80 0D 81 E8 */ lwz r0, lbl_805A6DA8@sda21(r13)
/* 8002B668 000285C8 38 63 BD F4 */ addi r3, r3, lbl_8056BDF4@l
/* 8002B668 000285C8 38 63 BD F4 */ addi r3, r3, mInt32POINodes__9CAnimData@l
/* 8002B66C 000285CC D0 01 00 58 */ stfs f0, 0x58(r1)
/* 8002B670 000285D0 3A 83 00 04 */ addi r20, r3, 4
/* 8002B674 000285D4 80 7F 00 00 */ lwz r3, 0(r31)
@ -2747,9 +2747,9 @@ lbl_8002B884:
/* 8002B8EC 0002884C 7F A3 EB 78 */ mr r3, r29
/* 8002B8F0 00028850 48 00 2F 31 */ bl ResetPOILists__9CAnimDataFv
/* 8002B8F4 00028854 C0 0D 81 EC */ lfs f0, lbl_805A6DAC@sda21(r13)
/* 8002B8F8 00028858 3C 60 80 57 */ lis r3, lbl_8056BDF4@ha
/* 8002B8F8 00028858 3C 60 80 57 */ lis r3, mInt32POINodes__9CAnimData@ha
/* 8002B8FC 0002885C 80 0D 81 E8 */ lwz r0, lbl_805A6DA8@sda21(r13)
/* 8002B900 00028860 38 63 BD F4 */ addi r3, r3, lbl_8056BDF4@l
/* 8002B900 00028860 38 63 BD F4 */ addi r3, r3, mInt32POINodes__9CAnimData@l
/* 8002B904 00028864 D0 01 00 38 */ stfs f0, 0x38(r1)
/* 8002B908 00028868 3B 03 00 04 */ addi r24, r3, 4
/* 8002B90C 0002886C 80 7F 00 00 */ lwz r3, 0(r31)
@ -3013,9 +3013,9 @@ lbl_8002BC9C:
/* 8002BCEC 00028C4C 7F A3 EB 78 */ mr r3, r29
/* 8002BCF0 00028C50 48 00 2B 31 */ bl ResetPOILists__9CAnimDataFv
/* 8002BCF4 00028C54 C0 0D 81 EC */ lfs f0, lbl_805A6DAC@sda21(r13)
/* 8002BCF8 00028C58 3C 60 80 57 */ lis r3, lbl_8056BDF4@ha
/* 8002BCF8 00028C58 3C 60 80 57 */ lis r3, mInt32POINodes__9CAnimData@ha
/* 8002BCFC 00028C5C 80 0D 81 E8 */ lwz r0, lbl_805A6DA8@sda21(r13)
/* 8002BD00 00028C60 38 63 BD F4 */ addi r3, r3, lbl_8056BDF4@l
/* 8002BD00 00028C60 38 63 BD F4 */ addi r3, r3, mInt32POINodes__9CAnimData@l
/* 8002BD04 00028C64 D0 01 00 10 */ stfs f0, 0x10(r1)
/* 8002BD08 00028C68 3B 03 00 04 */ addi r24, r3, 4
/* 8002BD0C 00028C6C 80 7F 00 00 */ lwz r3, 0(r31)
@ -4558,14 +4558,14 @@ lbl_8002D310:
/* 8002D330 0002A290 88 1A 02 20 */ lbz r0, 0x220(r26)
/* 8002D334 0002A294 54 00 D7 FF */ rlwinm. r0, r0, 0x1a, 0x1f, 0x1f
/* 8002D338 0002A298 41 82 01 2C */ beq lbl_8002D464
/* 8002D33C 0002A29C 3C C0 80 57 */ lis r6, lbl_8056BDF4@ha
/* 8002D340 0002A2A0 3C A0 80 57 */ lis r5, lbl_8056A600@ha
/* 8002D344 0002A2A4 3C 80 80 57 */ lis r4, lbl_8056C2B8@ha
/* 8002D348 0002A2A8 3C 60 80 57 */ lis r3, lbl_8056C9EC@ha
/* 8002D34C 0002A2AC 38 C6 BD F4 */ addi r6, r6, lbl_8056BDF4@l
/* 8002D350 0002A2B0 38 A5 A6 00 */ addi r5, r5, lbl_8056A600@l
/* 8002D354 0002A2B4 38 84 C2 B8 */ addi r4, r4, lbl_8056C2B8@l
/* 8002D358 0002A2B8 38 63 C9 EC */ addi r3, r3, lbl_8056C9EC@l
/* 8002D33C 0002A29C 3C C0 80 57 */ lis r6, mInt32POINodes__9CAnimData@ha
/* 8002D340 0002A2A0 3C A0 80 57 */ lis r5, mBoolPOINodes__9CAnimData@ha
/* 8002D344 0002A2A4 3C 80 80 57 */ lis r4, mParticlePOINodes__9CAnimData@ha
/* 8002D348 0002A2A8 3C 60 80 57 */ lis r3, mSoundPOINodes__9CAnimData@ha
/* 8002D34C 0002A2AC 38 C6 BD F4 */ addi r6, r6, mInt32POINodes__9CAnimData@l
/* 8002D350 0002A2B0 38 A5 A6 00 */ addi r5, r5, mBoolPOINodes__9CAnimData@l
/* 8002D354 0002A2B4 38 84 C2 B8 */ addi r4, r4, mParticlePOINodes__9CAnimData@l
/* 8002D358 0002A2B8 38 63 C9 EC */ addi r3, r3, mSoundPOINodes__9CAnimData@l
/* 8002D35C 0002A2BC C3 82 83 D0 */ lfs f28, lbl_805AA0F0@sda21(r2)
/* 8002D360 0002A2C0 3B E6 00 04 */ addi r31, r6, 4
/* 8002D364 0002A2C4 C3 62 83 D4 */ lfs f27, lbl_805AA0F4@sda21(r2)
@ -4642,14 +4642,14 @@ lbl_8002D464:
/* 8002D474 0002A3D4 81 8C 00 14 */ lwz r12, 0x14(r12)
/* 8002D478 0002A3D8 7D 89 03 A6 */ mtctr r12
/* 8002D47C 0002A3DC 4E 80 04 21 */ bctrl
/* 8002D480 0002A3E0 3C C0 80 57 */ lis r6, lbl_8056BDF4@ha
/* 8002D484 0002A3E4 3C A0 80 57 */ lis r5, lbl_8056A600@ha
/* 8002D488 0002A3E8 3C 80 80 57 */ lis r4, lbl_8056C2B8@ha
/* 8002D48C 0002A3EC 3C 60 80 57 */ lis r3, lbl_8056C9EC@ha
/* 8002D490 0002A3F0 38 E6 BD F4 */ addi r7, r6, lbl_8056BDF4@l
/* 8002D494 0002A3F4 38 C5 A6 00 */ addi r6, r5, lbl_8056A600@l
/* 8002D498 0002A3F8 38 A4 C2 B8 */ addi r5, r4, lbl_8056C2B8@l
/* 8002D49C 0002A3FC 38 83 C9 EC */ addi r4, r3, lbl_8056C9EC@l
/* 8002D480 0002A3E0 3C C0 80 57 */ lis r6, mInt32POINodes__9CAnimData@ha
/* 8002D484 0002A3E4 3C A0 80 57 */ lis r5, mBoolPOINodes__9CAnimData@ha
/* 8002D488 0002A3E8 3C 80 80 57 */ lis r4, mParticlePOINodes__9CAnimData@ha
/* 8002D48C 0002A3EC 3C 60 80 57 */ lis r3, mSoundPOINodes__9CAnimData@ha
/* 8002D490 0002A3F0 38 E6 BD F4 */ addi r7, r6, mInt32POINodes__9CAnimData@l
/* 8002D494 0002A3F4 38 C5 A6 00 */ addi r6, r5, mBoolPOINodes__9CAnimData@l
/* 8002D498 0002A3F8 38 A4 C2 B8 */ addi r5, r4, mParticlePOINodes__9CAnimData@l
/* 8002D49C 0002A3FC 38 83 C9 EC */ addi r4, r3, mSoundPOINodes__9CAnimData@l
/* 8002D4A0 0002A400 3C 60 80 5A */ lis r3, sZeroVector__9CVector3f@ha
/* 8002D4A4 0002A404 C3 41 00 20 */ lfs f26, 0x20(r1)
/* 8002D4A8 0002A408 C3 62 83 D0 */ lfs f27, lbl_805AA0F0@sda21(r2)
@ -4867,9 +4867,9 @@ Advance__9CAnimDataFfRC9CVector3fR13CStateManagerb:
/* 8002D7C8 0002A728 38 79 01 20 */ addi r3, r25, 0x120
/* 8002D7CC 0002A72C 48 08 A4 6D */ bl SuspendAllActiveEffects__17CParticleDatabaseFR13CStateManager
lbl_8002D7D0:
/* 8002D7D0 0002A730 3C 60 80 57 */ lis r3, lbl_8056C2B8@ha
/* 8002D7D0 0002A730 3C 60 80 57 */ lis r3, mParticlePOINodes__9CAnimData@ha
/* 8002D7D4 0002A734 83 D9 02 14 */ lwz r30, 0x214(r25)
/* 8002D7D8 0002A738 38 63 C2 B8 */ addi r3, r3, lbl_8056C2B8@l
/* 8002D7D8 0002A738 38 63 C2 B8 */ addi r3, r3, mParticlePOINodes__9CAnimData@l
/* 8002D7DC 0002A73C 3B A0 00 00 */ li r29, 0
/* 8002D7E0 0002A740 3B E3 00 04 */ addi r31, r3, 4
/* 8002D7E4 0002A744 48 00 00 58 */ b lbl_8002D83C
@ -5147,8 +5147,8 @@ lbl_8002DBC4:
/* 8002DBD4 0002AB34 41 82 00 E4 */ beq lbl_8002DCB8
lbl_8002DBD8:
/* 8002DBD8 0002AB38 80 1A 02 10 */ lwz r0, 0x210(r26)
/* 8002DBDC 0002AB3C 3C 60 80 57 */ lis r3, lbl_8056BDF4@ha
/* 8002DBE0 0002AB40 38 63 BD F4 */ addi r3, r3, lbl_8056BDF4@l
/* 8002DBDC 0002AB3C 3C 60 80 57 */ lis r3, mInt32POINodes__9CAnimData@ha
/* 8002DBE0 0002AB40 38 63 BD F4 */ addi r3, r3, mInt32POINodes__9CAnimData@l
/* 8002DBE4 0002AB44 2C 00 00 00 */ cmpwi r0, 0
/* 8002DBE8 0002AB48 38 A3 00 04 */ addi r5, r3, 4
/* 8002DBEC 0002AB4C 40 81 00 CC */ ble lbl_8002DCB8
@ -5533,10 +5533,10 @@ lbl_8002E138:
FreeCache__9CAnimDataFv:
/* 8002E168 0002B0C8 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8002E16C 0002B0CC 7C 08 02 A6 */ mflr r0
/* 8002E170 0002B0D0 3C 60 80 57 */ lis r3, lbl_8056CF40@ha
/* 8002E170 0002B0D0 3C 60 80 57 */ lis r3, sInt32TransientCache@ha
/* 8002E174 0002B0D4 90 01 00 24 */ stw r0, 0x24(r1)
/* 8002E178 0002B0D8 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 8002E17C 0002B0DC 3B E3 CF 40 */ addi r31, r3, lbl_8056CF40@l
/* 8002E17C 0002B0DC 3B E3 CF 40 */ addi r31, r3, sInt32TransientCache@l
/* 8002E180 0002B0E0 93 C1 00 18 */ stw r30, 0x18(r1)
/* 8002E184 0002B0E4 3B C0 00 00 */ li r30, 0
/* 8002E188 0002B0E8 93 A1 00 14 */ stw r29, 0x14(r1)
@ -5556,9 +5556,9 @@ lbl_8002E1B4:
/* 8002E1B8 0002B118 7C 1E 00 00 */ cmpw r30, r0
/* 8002E1BC 0002B11C 41 80 FF D8 */ blt lbl_8002E194
/* 8002E1C0 0002B120 38 00 00 00 */ li r0, 0
/* 8002E1C4 0002B124 3C 60 80 57 */ lis r3, lbl_8056CF40@ha
/* 8002E1C4 0002B124 3C 60 80 57 */ lis r3, sInt32TransientCache@ha
/* 8002E1C8 0002B128 90 0D A1 0C */ stw r0, lbl_805A8CCC@sda21(r13)
/* 8002E1CC 0002B12C 90 03 CF 40 */ stw r0, lbl_8056CF40@l(r3)
/* 8002E1CC 0002B12C 90 03 CF 40 */ stw r0, sInt32TransientCache@l(r3)
/* 8002E1D0 0002B130 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 8002E1D4 0002B134 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 8002E1D8 0002B138 80 01 00 24 */ lwz r0, 0x24(r1)
@ -5571,11 +5571,11 @@ lbl_8002E1B4:
InitializeCache__9CAnimDataFv:
/* 8002E1EC 0002B14C 94 21 FF 60 */ stwu r1, -0xa0(r1)
/* 8002E1F0 0002B150 7C 08 02 A6 */ mflr r0
/* 8002E1F4 0002B154 3C 60 80 57 */ lis r3, lbl_8056CF40@ha
/* 8002E1F4 0002B154 3C 60 80 57 */ lis r3, sInt32TransientCache@ha
/* 8002E1F8 0002B158 90 01 00 A4 */ stw r0, 0xa4(r1)
/* 8002E1FC 0002B15C 93 E1 00 9C */ stw r31, 0x9c(r1)
/* 8002E200 0002B160 93 C1 00 98 */ stw r30, 0x98(r1)
/* 8002E204 0002B164 3B C3 CF 40 */ addi r30, r3, lbl_8056CF40@l
/* 8002E204 0002B164 3B C3 CF 40 */ addi r30, r3, sInt32TransientCache@l
/* 8002E208 0002B168 3B FE 00 04 */ addi r31, r30, 4
/* 8002E20C 0002B16C 93 A1 00 94 */ stw r29, 0x94(r1)
/* 8002E210 0002B170 3B A0 00 00 */ li r29, 0
@ -5595,9 +5595,9 @@ lbl_8002E240:
/* 8002E240 0002B1A0 80 1E 00 00 */ lwz r0, 0(r30)
/* 8002E244 0002B1A4 7C 1D 00 00 */ cmpw r29, r0
/* 8002E248 0002B1A8 41 80 FF D8 */ blt lbl_8002E220
/* 8002E24C 0002B1AC 3C 80 80 57 */ lis r4, lbl_8056CF40@ha
/* 8002E24C 0002B1AC 3C 80 80 57 */ lis r4, sInt32TransientCache@ha
/* 8002E250 0002B1B0 3C 60 80 3D */ lis r3, lbl_803CCD20@ha
/* 8002E254 0002B1B4 38 A4 CF 40 */ addi r5, r4, lbl_8056CF40@l
/* 8002E254 0002B1B4 38 A4 CF 40 */ addi r5, r4, sInt32TransientCache@l
/* 8002E258 0002B1B8 38 00 00 00 */ li r0, 0
/* 8002E25C 0002B1BC 38 83 CD 20 */ addi r4, r3, lbl_803CCD20@l
/* 8002E260 0002B1C0 90 05 00 00 */ stw r0, 0(r5)
@ -5626,9 +5626,9 @@ lbl_8002E240:
/* 8002E2BC 0002B21C 39 20 FF FF */ li r9, -1
/* 8002E2C0 0002B220 39 40 00 00 */ li r10, 0
/* 8002E2C4 0002B224 4B FF D0 C9 */ bl "__ct__13CInt32POINodeFQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>UsRC13CCharAnimTimeibfiiiRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>"
/* 8002E2C8 0002B228 3C 60 80 57 */ lis r3, lbl_8056CF40@ha
/* 8002E2C8 0002B228 3C 60 80 57 */ lis r3, sInt32TransientCache@ha
/* 8002E2CC 0002B22C 38 A1 00 38 */ addi r5, r1, 0x38
/* 8002E2D0 0002B230 38 63 CF 40 */ addi r3, r3, lbl_8056CF40@l
/* 8002E2D0 0002B230 38 63 CF 40 */ addi r3, r3, sInt32TransientCache@l
/* 8002E2D4 0002B234 38 80 00 10 */ li r4, 0x10
/* 8002E2D8 0002B238 48 00 00 69 */ bl "uninitialized_fill_n<P13CInt32POINode,13CInt32POINode>__4rstlFP13CInt32POINodeiRC13CInt32POINode"
/* 8002E2DC 0002B23C 3C 80 80 3E */ lis r4, lbl_803D9B98@ha
@ -6289,9 +6289,9 @@ __dt__9CAnimDataFv:
/* 8002EBE0 0002BB40 34 03 FF FF */ addic. r0, r3, -1
/* 8002EBE4 0002BB44 90 0D A1 08 */ stw r0, lbl_805A8CC8@sda21(r13)
/* 8002EBE8 0002BB48 40 82 01 34 */ bne lbl_8002ED1C
/* 8002EBEC 0002BB4C 3C 60 80 57 */ lis r3, lbl_8056A600@ha
/* 8002EBEC 0002BB4C 3C 60 80 57 */ lis r3, mBoolPOINodes__9CAnimData@ha
/* 8002EBF0 0002BB50 3B 80 00 00 */ li r28, 0
/* 8002EBF4 0002BB54 3B A3 A6 00 */ addi r29, r3, lbl_8056A600@l
/* 8002EBF4 0002BB54 3B A3 A6 00 */ addi r29, r3, mBoolPOINodes__9CAnimData@l
/* 8002EBF8 0002BB58 3B 7D 00 04 */ addi r27, r29, 4
/* 8002EBFC 0002BB5C 48 00 00 24 */ b lbl_8002EC20
lbl_8002EC00:
@ -6307,12 +6307,12 @@ lbl_8002EC20:
/* 8002EC20 0002BB80 80 1D 00 00 */ lwz r0, 0(r29)
/* 8002EC24 0002BB84 7C 1C 00 00 */ cmpw r28, r0
/* 8002EC28 0002BB88 41 80 FF D8 */ blt lbl_8002EC00
/* 8002EC2C 0002BB8C 3C 60 80 57 */ lis r3, lbl_8056A600@ha
/* 8002EC2C 0002BB8C 3C 60 80 57 */ lis r3, mBoolPOINodes__9CAnimData@ha
/* 8002EC30 0002BB90 3B 80 00 00 */ li r28, 0
/* 8002EC34 0002BB94 38 83 A6 00 */ addi r4, r3, lbl_8056A600@l
/* 8002EC38 0002BB98 3C 60 80 57 */ lis r3, lbl_8056BDF4@ha
/* 8002EC34 0002BB94 38 83 A6 00 */ addi r4, r3, mBoolPOINodes__9CAnimData@l
/* 8002EC38 0002BB98 3C 60 80 57 */ lis r3, mInt32POINodes__9CAnimData@ha
/* 8002EC3C 0002BB9C 93 84 00 00 */ stw r28, 0(r4)
/* 8002EC40 0002BBA0 3B A3 BD F4 */ addi r29, r3, lbl_8056BDF4@l
/* 8002EC40 0002BBA0 3B A3 BD F4 */ addi r29, r3, mInt32POINodes__9CAnimData@l
/* 8002EC44 0002BBA4 3B 7D 00 04 */ addi r27, r29, 4
/* 8002EC48 0002BBA8 48 00 00 24 */ b lbl_8002EC6C
lbl_8002EC4C:
@ -6328,12 +6328,12 @@ lbl_8002EC6C:
/* 8002EC6C 0002BBCC 80 1D 00 00 */ lwz r0, 0(r29)
/* 8002EC70 0002BBD0 7C 1C 00 00 */ cmpw r28, r0
/* 8002EC74 0002BBD4 41 80 FF D8 */ blt lbl_8002EC4C
/* 8002EC78 0002BBD8 3C 60 80 57 */ lis r3, lbl_8056BDF4@ha
/* 8002EC78 0002BBD8 3C 60 80 57 */ lis r3, mInt32POINodes__9CAnimData@ha
/* 8002EC7C 0002BBDC 3B 80 00 00 */ li r28, 0
/* 8002EC80 0002BBE0 38 83 BD F4 */ addi r4, r3, lbl_8056BDF4@l
/* 8002EC84 0002BBE4 3C 60 80 57 */ lis r3, lbl_8056C2B8@ha
/* 8002EC80 0002BBE0 38 83 BD F4 */ addi r4, r3, mInt32POINodes__9CAnimData@l
/* 8002EC84 0002BBE4 3C 60 80 57 */ lis r3, mParticlePOINodes__9CAnimData@ha
/* 8002EC88 0002BBE8 93 84 00 00 */ stw r28, 0(r4)
/* 8002EC8C 0002BBEC 3B A3 C2 B8 */ addi r29, r3, lbl_8056C2B8@l
/* 8002EC8C 0002BBEC 3B A3 C2 B8 */ addi r29, r3, mParticlePOINodes__9CAnimData@l
/* 8002EC90 0002BBF0 3B 7D 00 04 */ addi r27, r29, 4
/* 8002EC94 0002BBF4 48 00 00 24 */ b lbl_8002ECB8
lbl_8002EC98:
@ -6349,12 +6349,12 @@ lbl_8002ECB8:
/* 8002ECB8 0002BC18 80 1D 00 00 */ lwz r0, 0(r29)
/* 8002ECBC 0002BC1C 7C 1C 00 00 */ cmpw r28, r0
/* 8002ECC0 0002BC20 41 80 FF D8 */ blt lbl_8002EC98
/* 8002ECC4 0002BC24 3C 60 80 57 */ lis r3, lbl_8056C2B8@ha
/* 8002ECC4 0002BC24 3C 60 80 57 */ lis r3, mParticlePOINodes__9CAnimData@ha
/* 8002ECC8 0002BC28 3B 80 00 00 */ li r28, 0
/* 8002ECCC 0002BC2C 38 83 C2 B8 */ addi r4, r3, lbl_8056C2B8@l
/* 8002ECD0 0002BC30 3C 60 80 57 */ lis r3, lbl_8056C9EC@ha
/* 8002ECCC 0002BC2C 38 83 C2 B8 */ addi r4, r3, mParticlePOINodes__9CAnimData@l
/* 8002ECD0 0002BC30 3C 60 80 57 */ lis r3, mSoundPOINodes__9CAnimData@ha
/* 8002ECD4 0002BC34 93 84 00 00 */ stw r28, 0(r4)
/* 8002ECD8 0002BC38 3B A3 C9 EC */ addi r29, r3, lbl_8056C9EC@l
/* 8002ECD8 0002BC38 3B A3 C9 EC */ addi r29, r3, mSoundPOINodes__9CAnimData@l
/* 8002ECDC 0002BC3C 3B 7D 00 04 */ addi r27, r29, 4
/* 8002ECE0 0002BC40 48 00 00 24 */ b lbl_8002ED04
lbl_8002ECE4:
@ -6370,9 +6370,9 @@ lbl_8002ED04:
/* 8002ED04 0002BC64 80 1D 00 00 */ lwz r0, 0(r29)
/* 8002ED08 0002BC68 7C 1C 00 00 */ cmpw r28, r0
/* 8002ED0C 0002BC6C 41 80 FF D8 */ blt lbl_8002ECE4
/* 8002ED10 0002BC70 3C 60 80 57 */ lis r3, lbl_8056C9EC@ha
/* 8002ED10 0002BC70 3C 60 80 57 */ lis r3, mSoundPOINodes__9CAnimData@ha
/* 8002ED14 0002BC74 38 00 00 00 */ li r0, 0
/* 8002ED18 0002BC78 90 03 C9 EC */ stw r0, lbl_8056C9EC@l(r3)
/* 8002ED18 0002BC78 90 03 C9 EC */ stw r0, mSoundPOINodes__9CAnimData@l(r3)
lbl_8002ED1C:
/* 8002ED1C 0002BC7C 34 1E 04 34 */ addic. r0, r30, 0x434
/* 8002ED20 0002BC80 41 82 00 50 */ beq lbl_8002ED70
@ -7465,8 +7465,8 @@ lbl_8002F9A8:
/* 8002FC0C 0002CB6C 39 20 FF FF */ li r9, -1
/* 8002FC10 0002CB70 39 40 00 00 */ li r10, 0
/* 8002FC14 0002CB74 48 00 08 71 */ bl "__ct__12CBoolPOINodeFQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>UsRC13CCharAnimTimeibfiib"
/* 8002FC18 0002CB78 3C 60 80 57 */ lis r3, lbl_8056A600@ha
/* 8002FC1C 0002CB7C 38 63 A6 00 */ addi r3, r3, lbl_8056A600@l
/* 8002FC18 0002CB78 3C 60 80 57 */ lis r3, mBoolPOINodes__9CAnimData@ha
/* 8002FC1C 0002CB7C 38 63 A6 00 */ addi r3, r3, mBoolPOINodes__9CAnimData@l
/* 8002FC20 0002CB80 80 83 00 00 */ lwz r4, 0(r3)
/* 8002FC24 0002CB84 2C 04 00 08 */ cmpwi r4, 8
/* 8002FC28 0002CB88 40 80 00 B8 */ bge lbl_8002FCE0
@ -7515,9 +7515,9 @@ lbl_8002FCC4:
lbl_8002FCCC:
/* 8002FCCC 0002CC2C 7C 1C D0 00 */ cmpw r28, r26
/* 8002FCD0 0002CC30 41 80 FF 78 */ blt lbl_8002FC48
/* 8002FCD4 0002CC34 3C 60 80 57 */ lis r3, lbl_8056A600@ha
/* 8002FCD4 0002CC34 3C 60 80 57 */ lis r3, mBoolPOINodes__9CAnimData@ha
/* 8002FCD8 0002CC38 38 00 00 08 */ li r0, 8
/* 8002FCDC 0002CC3C 90 03 A6 00 */ stw r0, lbl_8056A600@l(r3)
/* 8002FCDC 0002CC3C 90 03 A6 00 */ stw r0, mBoolPOINodes__9CAnimData@l(r3)
lbl_8002FCE0:
/* 8002FCE0 0002CC40 3C 60 80 3E */ lis r3, lbl_803D9B68@ha
/* 8002FCE4 0002CC44 3C 80 80 3E */ lis r4, lbl_803D9B8C@ha
@ -7558,9 +7558,9 @@ lbl_8002FD04:
/* 8002FD6C 0002CCCC 39 20 FF FF */ li r9, -1
/* 8002FD70 0002CCD0 39 40 00 00 */ li r10, 0
/* 8002FD74 0002CCD4 4B FF B6 19 */ bl "__ct__13CInt32POINodeFQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>UsRC13CCharAnimTimeibfiiiRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>"
/* 8002FD78 0002CCD8 3C 60 80 57 */ lis r3, lbl_8056BDF4@ha
/* 8002FD78 0002CCD8 3C 60 80 57 */ lis r3, mInt32POINodes__9CAnimData@ha
/* 8002FD7C 0002CCDC 38 A1 02 50 */ addi r5, r1, 0x250
/* 8002FD80 0002CCE0 38 63 BD F4 */ addi r3, r3, lbl_8056BDF4@l
/* 8002FD80 0002CCE0 38 63 BD F4 */ addi r3, r3, mInt32POINodes__9CAnimData@l
/* 8002FD84 0002CCE4 38 80 00 10 */ li r4, 0x10
/* 8002FD88 0002CCE8 4B FF E5 B9 */ bl "uninitialized_fill_n<P13CInt32POINode,13CInt32POINode>__4rstlFP13CInt32POINodeiRC13CInt32POINode"
/* 8002FD8C 0002CCEC 3C 80 80 3E */ lis r4, lbl_803D9B98@ha
@ -7618,9 +7618,9 @@ lbl_8002FDBC:
/* 8002FE54 0002CDB4 39 20 FF FF */ li r9, -1
/* 8002FE58 0002CDB8 39 40 00 00 */ li r10, 0
/* 8002FE5C 0002CDBC 48 00 05 AD */ bl sub_80030408
/* 8002FE60 0002CDC0 3C 60 80 57 */ lis r3, lbl_8056C2B8@ha
/* 8002FE60 0002CDC0 3C 60 80 57 */ lis r3, mParticlePOINodes__9CAnimData@ha
/* 8002FE64 0002CDC4 38 A1 01 F4 */ addi r5, r1, 0x1f4
/* 8002FE68 0002CDC8 38 63 C2 B8 */ addi r3, r3, lbl_8056C2B8@l
/* 8002FE68 0002CDC8 38 63 C2 B8 */ addi r3, r3, mParticlePOINodes__9CAnimData@l
/* 8002FE6C 0002CDCC 38 80 00 14 */ li r4, 0x14
/* 8002FE70 0002CDD0 48 00 04 4D */ bl sub_800302bc
/* 8002FE74 0002CDD4 3C 60 80 3E */ lis r3, lbl_803D9B74@ha
@ -7672,9 +7672,9 @@ lbl_8002FEBC:
/* 8002FF20 0002CE80 39 20 FF FF */ li r9, -1
/* 8002FF24 0002CE84 39 40 00 00 */ li r10, 0
/* 8002FF28 0002CE88 48 00 03 29 */ bl "__ct__13CSoundPOINodeFQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>UsRC13CCharAnimTimeibfiiiff"
/* 8002FF2C 0002CE8C 3C 60 80 57 */ lis r3, lbl_8056C9EC@ha
/* 8002FF2C 0002CE8C 3C 60 80 57 */ lis r3, mSoundPOINodes__9CAnimData@ha
/* 8002FF30 0002CE90 38 A1 01 B0 */ addi r5, r1, 0x1b0
/* 8002FF34 0002CE94 38 63 C9 EC */ addi r3, r3, lbl_8056C9EC@l
/* 8002FF34 0002CE94 38 63 C9 EC */ addi r3, r3, mSoundPOINodes__9CAnimData@l
/* 8002FF38 0002CE98 38 80 00 14 */ li r4, 0x14
/* 8002FF3C 0002CE9C 48 00 02 21 */ bl sub_8003015c
/* 8002FF40 0002CEA0 3C 60 80 3E */ lis r3, lbl_803D9B80@ha
@ -9634,38 +9634,38 @@ __sinit_CAnimData_cpp:
/* 80031980 0002E8E0 3C A0 80 46 */ lis r5, lbl_8045B140@ha
/* 80031984 0002E8E4 90 01 00 14 */ stw r0, 0x14(r1)
/* 80031988 0002E8E8 38 00 00 00 */ li r0, 0
/* 8003198C 0002E8EC 3C 60 80 57 */ lis r3, lbl_8056A600@ha
/* 8003198C 0002E8EC 3C 60 80 57 */ lis r3, mBoolPOINodes__9CAnimData@ha
/* 80031990 0002E8F0 38 84 1C 00 */ addi r4, r4, "__dt__Q24rstl33reserved_vector<12CBoolPOINode,8>Fv"@l
/* 80031994 0002E8F4 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80031998 0002E8F8 3B E5 B1 40 */ addi r31, r5, lbl_8045B140@l
/* 8003199C 0002E8FC 38 BF 00 00 */ addi r5, r31, 0
/* 800319A0 0002E900 94 03 A6 00 */ stwu r0, lbl_8056A600@l(r3)
/* 800319A0 0002E900 94 03 A6 00 */ stwu r0, mBoolPOINodes__9CAnimData@l(r3)
/* 800319A4 0002E904 48 35 7C E9 */ bl __register_global_object
/* 800319A8 0002E908 38 00 00 00 */ li r0, 0
/* 800319AC 0002E90C 3C 60 80 57 */ lis r3, lbl_8056BDF4@ha
/* 800319AC 0002E90C 3C 60 80 57 */ lis r3, mInt32POINodes__9CAnimData@ha
/* 800319B0 0002E910 3C 80 80 03 */ lis r4, "__dt__Q24rstl35reserved_vector<13CInt32POINode,16>Fv"@ha
/* 800319B4 0002E914 94 03 BD F4 */ stwu r0, lbl_8056BDF4@l(r3)
/* 800319B4 0002E914 94 03 BD F4 */ stwu r0, mInt32POINodes__9CAnimData@l(r3)
/* 800319B8 0002E918 38 84 1B 64 */ addi r4, r4, "__dt__Q24rstl35reserved_vector<13CInt32POINode,16>Fv"@l
/* 800319BC 0002E91C 38 BF 00 0C */ addi r5, r31, 0xc
/* 800319C0 0002E920 48 35 7C CD */ bl __register_global_object
/* 800319C4 0002E924 38 00 00 00 */ li r0, 0
/* 800319C8 0002E928 3C 60 80 57 */ lis r3, lbl_8056C2B8@ha
/* 800319C8 0002E928 3C 60 80 57 */ lis r3, mParticlePOINodes__9CAnimData@ha
/* 800319CC 0002E92C 3C 80 80 03 */ lis r4, "__dt__Q24rstl38reserved_vector<16CParticlePOINode,20>Fv"@ha
/* 800319D0 0002E930 94 03 C2 B8 */ stwu r0, lbl_8056C2B8@l(r3)
/* 800319D0 0002E930 94 03 C2 B8 */ stwu r0, mParticlePOINodes__9CAnimData@l(r3)
/* 800319D4 0002E934 38 84 1A C8 */ addi r4, r4, "__dt__Q24rstl38reserved_vector<16CParticlePOINode,20>Fv"@l
/* 800319D8 0002E938 38 BF 00 18 */ addi r5, r31, 0x18
/* 800319DC 0002E93C 48 35 7C B1 */ bl __register_global_object
/* 800319E0 0002E940 38 00 00 00 */ li r0, 0
/* 800319E4 0002E944 3C 60 80 57 */ lis r3, lbl_8056C9EC@ha
/* 800319E4 0002E944 3C 60 80 57 */ lis r3, mSoundPOINodes__9CAnimData@ha
/* 800319E8 0002E948 3C 80 80 03 */ lis r4, "__dt__Q24rstl35reserved_vector<13CSoundPOINode,20>Fv"@ha
/* 800319EC 0002E94C 94 03 C9 EC */ stwu r0, lbl_8056C9EC@l(r3)
/* 800319EC 0002E94C 94 03 C9 EC */ stwu r0, mSoundPOINodes__9CAnimData@l(r3)
/* 800319F0 0002E950 38 84 1A 2C */ addi r4, r4, "__dt__Q24rstl35reserved_vector<13CSoundPOINode,20>Fv"@l
/* 800319F4 0002E954 38 BF 00 24 */ addi r5, r31, 0x24
/* 800319F8 0002E958 48 35 7C 95 */ bl __register_global_object
/* 800319FC 0002E95C 38 00 00 00 */ li r0, 0
/* 80031A00 0002E960 3C 60 80 57 */ lis r3, lbl_8056CF40@ha
/* 80031A00 0002E960 3C 60 80 57 */ lis r3, sInt32TransientCache@ha
/* 80031A04 0002E964 3C 80 80 03 */ lis r4, "__dt__Q24rstl35reserved_vector<13CInt32POINode,16>Fv"@ha
/* 80031A08 0002E968 94 03 CF 40 */ stwu r0, lbl_8056CF40@l(r3)
/* 80031A08 0002E968 94 03 CF 40 */ stwu r0, sInt32TransientCache@l(r3)
/* 80031A0C 0002E96C 38 84 1B 64 */ addi r4, r4, "__dt__Q24rstl35reserved_vector<13CInt32POINode,16>Fv"@l
/* 80031A10 0002E970 38 BF 00 30 */ addi r5, r31, 0x30
/* 80031A14 0002E974 48 35 7C 79 */ bl __register_global_object

View File

@ -868,7 +868,7 @@ lbl_80044370:
/* 80044394 000412F4 48 26 E0 5D */ bl GetAudibleFallOff__22CCollisionResponseDataCFv
/* 80044398 000412F8 C0 82 85 68 */ lfs f4, lbl_805AA288@sda21(r2)
/* 8004439C 000412FC 38 C0 00 00 */ li r6, 0
/* 800443A0 00041300 88 A2 CC 40 */ lbz r5, kMaxVolume__9CAudioSys@sda21(r2)
/* 800443A0 00041300 88 A2 CC 40 */ lbz r5, kkMaxVolume__9CAudioSys@sda21(r2)
/* 800443A4 00041304 38 E0 00 01 */ li r7, 1
/* 800443A8 00041308 88 02 CC 41 */ lbz r0, lbl_805AE961@sda21(r2)
/* 800443AC 0004130C 38 80 00 14 */ li r4, 0x14

View File

@ -3096,7 +3096,7 @@ UpdateSfxListener__14CCameraManagerFR13CStateManager:
/* 8000BA80 000089E0 C0 21 00 78 */ lfs f1, 0x78(r1)
/* 8000BA84 000089E4 C0 01 00 88 */ lfs f0, 0x88(r1)
/* 8000BA88 000089E8 D1 01 00 08 */ stfs f8, 8(r1)
/* 8000BA8C 000089EC 88 E2 CC 40 */ lbz r7, kMaxVolume__9CAudioSys@sda21(r2)
/* 8000BA8C 000089EC 88 E2 CC 40 */ lbz r7, kkMaxVolume__9CAudioSys@sda21(r2)
/* 8000BA90 000089F0 D0 E1 00 0C */ stfs f7, 0xc(r1)
/* 8000BA94 000089F4 D0 C1 00 10 */ stfs f6, 0x10(r1)
/* 8000BA98 000089F8 D0 A1 00 14 */ stfs f5, 0x14(r1)
@ -3613,7 +3613,7 @@ __ct__14CCameraManagerF9TUniqueId:
/* 8000C190 000090F0 38 E1 00 08 */ addi r7, r1, 8
/* 8000C194 000090F4 91 7F 00 80 */ stw r11, 0x80(r31)
/* 8000C198 000090F8 38 60 00 01 */ li r3, 1
/* 8000C19C 000090FC 89 22 CC 40 */ lbz r9, kMaxVolume__9CAudioSys@sda21(r2)
/* 8000C19C 000090FC 89 22 CC 40 */ lbz r9, kkMaxVolume__9CAudioSys@sda21(r2)
/* 8000C1A0 00009100 39 00 00 01 */ li r8, 1
/* 8000C1A4 00009104 91 7F 00 84 */ stw r11, 0x84(r31)
/* 8000C1A8 00009108 91 7F 00 88 */ stw r11, 0x88(r31)

View File

@ -692,7 +692,7 @@ lbl_8021D938:
/* 8021D948 0021A8A8 4B E2 F3 AD */ bl AddObject__13CStateManagerFP7CEntityQ213CStateManager18EScriptPersistence
/* 8021D94C 0021A8AC 57 C0 06 3F */ clrlwi. r0, r30, 0x18
/* 8021D950 0021A8B0 41 82 00 2C */ beq lbl_8021D97C
/* 8021D954 0021A8B4 88 A2 CC 40 */ lbz r5, kMaxVolume__9CAudioSys@sda21(r2)
/* 8021D954 0021A8B4 88 A2 CC 40 */ lbz r5, kkMaxVolume__9CAudioSys@sda21(r2)
/* 8021D958 0021A8B8 7F A4 EB 78 */ mr r4, r29
/* 8021D95C 0021A8BC A9 02 C5 FA */ lha r8, lbl_805AE31A@sda21(r2)
/* 8021D960 0021A8C0 38 61 00 2C */ addi r3, r1, 0x2c

View File

@ -336,7 +336,7 @@ lbl_8022F8D0:
/* 8022F8E0 0022C840 4B E1 D4 15 */ bl AddObject__13CStateManagerFP7CEntityQ213CStateManager18EScriptPersistence
/* 8022F8E4 0022C844 A0 9E 03 14 */ lhz r4, 0x314(r30)
/* 8022F8E8 0022C848 38 61 00 28 */ addi r3, r1, 0x28
/* 8022F8EC 0022C84C 88 A2 CC 40 */ lbz r5, kMaxVolume__9CAudioSys@sda21(r2)
/* 8022F8EC 0022C84C 88 A2 CC 40 */ lbz r5, kkMaxVolume__9CAudioSys@sda21(r2)
/* 8022F8F0 0022C850 38 C0 00 40 */ li r6, 0x40
/* 8022F8F4 0022C854 A9 02 C5 FA */ lha r8, lbl_805AE31A@sda21(r2)
/* 8022F8F8 0022C858 38 E0 00 00 */ li r7, 0

View File

@ -4215,7 +4215,7 @@ lbl_8028E914:
/* 8028E990 0028B8F0 D0 A1 00 24 */ stfs f5, 0x24(r1)
/* 8028E994 0028B8F4 93 E1 00 08 */ stw r31, 8(r1)
/* 8028E998 0028B8F8 90 01 00 0C */ stw r0, 0xc(r1)
/* 8028E99C 0028B8FC 4B DC 45 95 */ bl ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManager
/* 8028E99C 0028B8FC 4B DC 45 95 */ bl ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManagerb
/* 8028E9A0 0028B900 48 00 01 44 */ b lbl_8028EAE4
lbl_8028E9A4:
/* 8028E9A4 0028B904 80 1E 0B 68 */ lwz r0, 0xb68(r30)
@ -4300,7 +4300,7 @@ lbl_8028EA70:
/* 8028EAD4 0028BA34 D0 81 00 18 */ stfs f4, 0x18(r1)
/* 8028EAD8 0028BA38 93 E1 00 08 */ stw r31, 8(r1)
/* 8028EADC 0028BA3C 90 01 00 0C */ stw r0, 0xc(r1)
/* 8028EAE0 0028BA40 4B DC 44 51 */ bl ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManager
/* 8028EAE0 0028BA40 4B DC 44 51 */ bl ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManagerb
lbl_8028EAE4:
/* 8028EAE4 0028BA44 80 01 00 34 */ lwz r0, 0x34(r1)
/* 8028EAE8 0028BA48 83 E1 00 2C */ lwz r31, 0x2c(r1)

View File

@ -1193,7 +1193,7 @@ lbl_801DAFD4:
/* 801DB038 001D7F98 90 01 00 0C */ stw r0, 0xc(r1)
/* 801DB03C 001D7F9C 80 9C 07 60 */ lwz r4, 0x760(r28)
/* 801DB040 001D7FA0 81 5D 08 CC */ lwz r10, 0x8cc(r29)
/* 801DB044 001D7FA4 4B E7 7E ED */ bl ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManager
/* 801DB044 001D7FA4 4B E7 7E ED */ bl ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManagerb
lbl_801DB048:
/* 801DB048 001D7FA8 E3 E1 00 78 */ psq_l f31, 120(r1), 0, qr0
/* 801DB04C 001D7FAC CB E1 00 70 */ lfd f31, 0x70(r1)
@ -3615,7 +3615,7 @@ lbl_801DD1E4:
/* 801DD214 001DA174 81 5B 08 CC */ lwz r10, 0x8cc(r27)
/* 801DD218 001DA178 38 C0 00 14 */ li r6, 0x14
/* 801DD21C 001DA17C 38 E0 00 7F */ li r7, 0x7f
/* 801DD220 001DA180 4B E7 5D 11 */ bl ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManager
/* 801DD220 001DA180 4B E7 5D 11 */ bl ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManagerb
/* 801DD224 001DA184 7F 43 D3 78 */ mr r3, r26
/* 801DD228 001DA188 4B FF F0 A1 */ bl sub_801dc2c8
/* 801DD22C 001DA18C 54 60 06 3F */ clrlwi. r0, r3, 0x18
@ -9093,7 +9093,7 @@ lbl_801E207C:
/* 801E20B8 001DF018 38 A0 00 00 */ li r5, 0
/* 801E20BC 001DF01C 38 C0 00 14 */ li r6, 0x14
/* 801E20C0 001DF020 38 E0 00 7F */ li r7, 0x7f
/* 801E20C4 001DF024 4B E7 0E 6D */ bl ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManager
/* 801E20C4 001DF024 4B E7 0E 6D */ bl ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManagerb
/* 801E20C8 001DF028 48 00 01 08 */ b lbl_801E21D0
lbl_801E20CC:
/* 801E20CC 001DF02C 93 C1 00 08 */ stw r30, 8(r1)
@ -9111,7 +9111,7 @@ lbl_801E20CC:
/* 801E20FC 001DF05C 81 5E 08 CC */ lwz r10, 0x8cc(r30)
/* 801E2100 001DF060 38 C0 00 14 */ li r6, 0x14
/* 801E2104 001DF064 38 E0 00 7F */ li r7, 0x7f
/* 801E2108 001DF068 4B E7 0E 29 */ bl ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManager
/* 801E2108 001DF068 4B E7 0E 29 */ bl ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManagerb
/* 801E210C 001DF06C 48 00 00 C4 */ b lbl_801E21D0
.global lbl_801E2110
lbl_801E2110:

View File

@ -660,7 +660,7 @@ lbl_80203C9C:
/* 80203CE4 00200C44 93 C1 00 08 */ stw r30, 8(r1)
/* 80203CE8 00200C48 90 01 00 0C */ stw r0, 0xc(r1)
/* 80203CEC 00200C4C 80 9D 05 D8 */ lwz r4, 0x5d8(r29)
/* 80203CF0 00200C50 4B E4 F2 41 */ bl ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManager
/* 80203CF0 00200C50 4B E4 F2 41 */ bl ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManagerb
/* 80203CF4 00200C54 88 1D 05 DD */ lbz r0, 0x5dd(r29)
/* 80203CF8 00200C58 28 00 00 00 */ cmplwi r0, 0
/* 80203CFC 00200C5C 41 82 00 2C */ beq lbl_80203D28
@ -1970,7 +1970,7 @@ lbl_80204EF0:
/* 80204FB8 00201F18 D0 81 00 2C */ stfs f4, 0x2c(r1)
/* 80204FBC 00201F1C 93 E1 00 08 */ stw r31, 8(r1)
/* 80204FC0 00201F20 90 01 00 0C */ stw r0, 0xc(r1)
/* 80204FC4 00201F24 4B E4 DF 6D */ bl ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManager
/* 80204FC4 00201F24 4B E4 DF 6D */ bl ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManagerb
lbl_80204FC8:
/* 80204FC8 00201F28 80 1E 05 74 */ lwz r0, 0x574(r30)
/* 80204FCC 00201F2C 2C 00 00 01 */ cmpwi r0, 1
@ -2589,7 +2589,7 @@ lbl_80205874:
/* 802058BC 0020281C 93 C1 00 08 */ stw r30, 8(r1)
/* 802058C0 00202820 90 01 00 0C */ stw r0, 0xc(r1)
/* 802058C4 00202824 80 9F 05 D4 */ lwz r4, 0x5d4(r31)
/* 802058C8 00202828 4B E4 D6 69 */ bl ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManager
/* 802058C8 00202828 4B E4 D6 69 */ bl ProcessSoundEvent__6CActorFififfUcUcRC9CVector3fRC9CVector3fiR13CStateManagerb
/* 802058CC 0020282C 48 00 02 40 */ b lbl_80205B0C
lbl_802058D0:
/* 802058D0 00202830 A0 12 00 00 */ lhz r0, 0(r18)

View File

@ -167,9 +167,9 @@ UpdateEffects__17CWallCrawlerSwarmFR13CStateManagerR9CAnimData:
/* 801E7578 001E44D8 F3 A1 00 88 */ psq_st f29, 136(r1), 0, qr0
/* 801E757C 001E44DC BE E1 00 5C */ stmw r23, 0x5c(r1)
/* 801E7580 001E44E0 7C B9 2B 78 */ mr r25, r5
/* 801E7584 001E44E4 3C A0 80 57 */ lis r5, lbl_8056C9EC@ha
/* 801E7584 001E44E4 3C A0 80 57 */ lis r5, mSoundPOINodes__9CAnimData@ha
/* 801E7588 001E44E8 83 79 02 18 */ lwz r27, 0x218(r25)
/* 801E758C 001E44EC 38 A5 C9 EC */ addi r5, r5, lbl_8056C9EC@l
/* 801E758C 001E44EC 38 A5 C9 EC */ addi r5, r5, mSoundPOINodes__9CAnimData@l
/* 801E7590 001E44F0 90 C1 00 08 */ stw r6, 8(r1)
/* 801E7594 001E44F4 7C 77 1B 78 */ mr r23, r3
/* 801E7598 001E44F8 2C 1B 00 00 */ cmpwi r27, 0

View File

@ -1267,9 +1267,9 @@ DoUserAnimEvents__11CGrappleArmFR13CStateManager:
/* 8011E3A0 0011B300 83 A5 00 04 */ lwz r29, 4(r5)
/* 8011E3A4 0011B304 4B EE D7 75 */ bl GetCurrentCamera__14CCameraManagerCFR13CStateManager
/* 8011E3A8 0011B308 C0 BE 02 4C */ lfs f5, 0x24c(r30)
/* 8011E3AC 0011B30C 3C 80 80 57 */ lis r4, lbl_8056C9EC@ha
/* 8011E3AC 0011B30C 3C 80 80 57 */ lis r4, mSoundPOINodes__9CAnimData@ha
/* 8011E3B0 0011B310 C0 9E 02 3C */ lfs f4, 0x23c(r30)
/* 8011E3B4 0011B314 38 84 C9 EC */ addi r4, r4, lbl_8056C9EC@l
/* 8011E3B4 0011B314 38 84 C9 EC */ addi r4, r4, mSoundPOINodes__9CAnimData@l
/* 8011E3B8 0011B318 C0 7E 02 2C */ lfs f3, 0x22c(r30)
/* 8011E3BC 0011B31C 3B 84 00 04 */ addi r28, r4, 4
/* 8011E3C0 0011B320 D0 61 00 24 */ stfs f3, 0x24(r1)
@ -1303,7 +1303,7 @@ lbl_8011E408:
/* 8011E42C 0011B38C 40 82 00 44 */ bne lbl_8011E470
lbl_8011E430:
/* 8011E430 0011B390 38 01 00 24 */ addi r0, r1, 0x24
/* 8011E434 0011B394 89 22 CC 40 */ lbz r9, kMaxVolume__9CAudioSys@sda21(r2)
/* 8011E434 0011B394 89 22 CC 40 */ lbz r9, kkMaxVolume__9CAudioSys@sda21(r2)
/* 8011E438 0011B398 90 01 00 08 */ stw r0, 8(r1)
/* 8011E43C 0011B39C 38 7E 03 4C */ addi r3, r30, 0x34c
/* 8011E440 0011B3A0 38 9E 03 AC */ addi r4, r30, 0x3ac
@ -1326,8 +1326,8 @@ lbl_8011E478:
/* 8011E47C 0011B3DC 41 80 FF 8C */ blt lbl_8011E408
lbl_8011E480:
/* 8011E480 0011B3E0 80 9E 00 10 */ lwz r4, 0x10(r30)
/* 8011E484 0011B3E4 3C 60 80 57 */ lis r3, lbl_8056BDF4@ha
/* 8011E488 0011B3E8 38 63 BD F4 */ addi r3, r3, lbl_8056BDF4@l
/* 8011E484 0011B3E4 3C 60 80 57 */ lis r3, mInt32POINodes__9CAnimData@ha
/* 8011E488 0011B3E8 38 63 BD F4 */ addi r3, r3, mInt32POINodes__9CAnimData@l
/* 8011E48C 0011B3EC 83 44 02 10 */ lwz r26, 0x210(r4)
/* 8011E490 0011B3F0 3B 83 00 04 */ addi r28, r3, 4
/* 8011E494 0011B3F4 2C 1A 00 00 */ cmpwi r26, 0
@ -1368,7 +1368,7 @@ lbl_8011E4FC:
/* 8011E510 0011B470 38 9E 03 AC */ addi r4, r30, 0x3ac
/* 8011E514 0011B474 93 A1 00 0C */ stw r29, 0xc(r1)
/* 8011E518 0011B478 39 41 00 18 */ addi r10, r1, 0x18
/* 8011E51C 0011B47C 89 22 CC 40 */ lbz r9, kMaxVolume__9CAudioSys@sda21(r2)
/* 8011E51C 0011B47C 89 22 CC 40 */ lbz r9, kkMaxVolume__9CAudioSys@sda21(r2)
/* 8011E520 0011B480 38 A0 00 00 */ li r5, 0
/* 8011E524 0011B484 93 E1 00 10 */ stw r31, 0x10(r1)
/* 8011E528 0011B488 39 00 00 14 */ li r8, 0x14

View File

@ -2286,9 +2286,9 @@ DoUserAnimEvents__10CPlayerGunFfR13CStateManager:
/* 8003C134 00039094 80 64 08 70 */ lwz r3, 0x870(r4)
/* 8003C138 00039098 4B FC F9 E1 */ bl GetCurrentCamera__14CCameraManagerCFR13CStateManager
/* 8003C13C 0003909C C0 BE 04 14 */ lfs f5, 0x414(r30)
/* 8003C140 000390A0 3C 80 80 57 */ lis r4, lbl_8056C9EC@ha
/* 8003C140 000390A0 3C 80 80 57 */ lis r4, mSoundPOINodes__9CAnimData@ha
/* 8003C144 000390A4 C0 9E 04 04 */ lfs f4, 0x404(r30)
/* 8003C148 000390A8 38 84 C9 EC */ addi r4, r4, lbl_8056C9EC@l
/* 8003C148 000390A8 38 84 C9 EC */ addi r4, r4, mSoundPOINodes__9CAnimData@l
/* 8003C14C 000390AC C0 7E 03 F4 */ lfs f3, 0x3f4(r30)
/* 8003C150 000390B0 3B 64 00 04 */ addi r27, r4, 4
/* 8003C154 000390B4 D0 61 00 24 */ stfs f3, 0x24(r1)
@ -2320,7 +2320,7 @@ lbl_8003C198:
/* 8003C1B8 00039118 40 82 00 44 */ bne lbl_8003C1FC
lbl_8003C1BC:
/* 8003C1BC 0003911C 38 01 00 24 */ addi r0, r1, 0x24
/* 8003C1C0 00039120 89 22 CC 40 */ lbz r9, kMaxVolume__9CAudioSys@sda21(r2)
/* 8003C1C0 00039120 89 22 CC 40 */ lbz r9, kkMaxVolume__9CAudioSys@sda21(r2)
/* 8003C1C4 00039124 90 01 00 08 */ stw r0, 8(r1)
/* 8003C1C8 00039128 38 7E 06 70 */ addi r3, r30, 0x670
/* 8003C1CC 0003912C 38 9E 03 28 */ addi r4, r30, 0x328
@ -2343,8 +2343,8 @@ lbl_8003C204:
/* 8003C208 00039168 41 80 FF 90 */ blt lbl_8003C198
lbl_8003C20C:
/* 8003C20C 0003916C 83 3C 02 10 */ lwz r25, 0x210(r28)
/* 8003C210 00039170 3C 60 80 57 */ lis r3, lbl_8056BDF4@ha
/* 8003C214 00039174 38 63 BD F4 */ addi r3, r3, lbl_8056BDF4@l
/* 8003C210 00039170 3C 60 80 57 */ lis r3, mInt32POINodes__9CAnimData@ha
/* 8003C214 00039174 38 63 BD F4 */ addi r3, r3, mInt32POINodes__9CAnimData@l
/* 8003C218 00039178 2C 19 00 00 */ cmpwi r25, 0
/* 8003C21C 0003917C 3B 63 00 04 */ addi r27, r3, 4
/* 8003C220 00039180 40 81 00 B4 */ ble lbl_8003C2D4
@ -2384,7 +2384,7 @@ lbl_8003C284:
/* 8003C298 000391F8 38 9E 03 28 */ addi r4, r30, 0x328
/* 8003C29C 000391FC 93 A1 00 0C */ stw r29, 0xc(r1)
/* 8003C2A0 00039200 39 41 00 18 */ addi r10, r1, 0x18
/* 8003C2A4 00039204 89 22 CC 40 */ lbz r9, kMaxVolume__9CAudioSys@sda21(r2)
/* 8003C2A4 00039204 89 22 CC 40 */ lbz r9, kkMaxVolume__9CAudioSys@sda21(r2)
/* 8003C2A8 00039208 38 A0 00 00 */ li r5, 0
/* 8003C2AC 0003920C 93 E1 00 10 */ stw r31, 0x10(r1)
/* 8003C2B0 00039210 39 00 00 14 */ li r8, 0x14

View File

@ -187,7 +187,7 @@ PlayImpactSound__17CEnergyProjectileFRC9CVector3f29EWeaponCollisionResponseTypes
/* 80213CC4 00210C24 48 09 B4 9D */ bl GetAudibleFallOff__17CProjectileWeaponCFv
/* 80213CC8 00210C28 C0 82 B3 10 */ lfs f4, lbl_805AD030@sda21(r2)
/* 80213CCC 00210C2C 38 C0 00 00 */ li r6, 0
/* 80213CD0 00210C30 88 A2 CC 40 */ lbz r5, kMaxVolume__9CAudioSys@sda21(r2)
/* 80213CD0 00210C30 88 A2 CC 40 */ lbz r5, kkMaxVolume__9CAudioSys@sda21(r2)
/* 80213CD4 00210C34 38 E0 00 01 */ li r7, 1
/* 80213CD8 00210C38 88 02 CC 41 */ lbz r0, lbl_805AE961@sda21(r2)
/* 80213CDC 00210C3C 38 80 00 14 */ li r4, 0x14

View File

@ -5,7 +5,7 @@
class CAudioSys {
public:
static const u8 kMaxVolume;
static const u8 kkMaxVolume;
};
#endif

View File

@ -4,6 +4,9 @@
#include "types.h"
class CQuaternion {
public:
CQuaternion(f32 w, f32 x, f32 y, f32 z) : w(w), x(x), y(y), z(z) {}
private:
f32 w;
f32 x;

View File

@ -14,6 +14,8 @@ public:
explicit CVector3f(f32 x, f32 y, f32 z) : mX(x), mY(y), mZ(z) {}
CVector3f(const CVector2f& v, f32 z) : mX(v.GetX()), mY(v.GetY()), mZ(z) {}
CVector3f(const CVector3f& other) : mX(other.mX), mY(other.mY), mZ(other.mZ) {}
CVector3f(CInputStream& in);
void PutTo(COutputStream& out) const;

View File

@ -31,6 +31,9 @@ public:
TCachedToken() {}
TCachedToken(const CToken& token) : TToken(token), x8_item(nullptr) {}
// TODO
operator const TToken< T >&() const;
private:
T* x8_item;
};
@ -40,6 +43,9 @@ class TLockedToken : public TCachedToken< T > {
public:
TLockedToken() {}
TLockedToken(const CToken& token) : TCachedToken(token) { Lock(); }
// TODO
operator const TToken< T >&() const;
};
#endif

View File

@ -7,31 +7,192 @@
#include "Collision/CMaterialList.hpp"
#include "MetroidPrime/CEntity.hpp"
#include "MetroidPrime/CModelData.hpp"
#include "MetroidPrime/CModelFlags.hpp"
#include "MetroidPrime/CSfxHandle.hpp"
#include "Kyoto/Graphics/CColor.hpp"
#include "Kyoto/Math/CAABox.hpp"
#include "Kyoto/Math/CTransform4f.hpp"
#include "Kyoto/Math/CQuaternion.hpp"
#include "Kyoto/TToken.hpp"
#include "rstl/optional_object.hpp"
#include "rstl/pair.hpp"
#include "rstl/reserved_vector.hpp"
#include "rstl/single_ptr.hpp"
class CActorLights;
class CActorParameters;
class CModelData;
class CScannableObjectInfo;
class CSimpleShadow;
// TODO move
struct SAdvancementDeltas {
CVector3f x0_posDelta;
CQuaternion xc_rotDelta;
class CDamageInfo;
class CDamageVulnerability;
class CFrustum;
class CHealthInfo;
class CScriptWater;
class CWeaponMode;
class CInt32POINode;
enum EWeaponCollisionResponseTypes {
kWCR_None,
kWCR_Default,
kWCR_Unknown2,
kWCR_Metal,
kWCR_Grass,
kWCR_Ice,
kWCR_Goo,
kWCR_Wood,
kWCR_Water,
kWCR_Mud,
kWCR_Lava,
kWCR_Sand,
kWCR_Projectile,
kWCR_OtherProjectile,
kWCR_Unknown14,
kWCR_Unknown15,
kWCR_EnemyNormal,
kWCR_EnemySpecial,
kWCR_EnemyShielded,
kWCR_Unknown19,
kWCR_Unknown20,
kWCR_Unknown21,
kWCR_Unknown22,
kWCR_Unknown23,
kWCR_Unknown24,
kWCR_Unknown25,
kWCR_Unknown26,
kWCR_Unknown27,
kWCR_Unknown28,
kWCR_Unknown29,
kWCR_Unknown30,
kWCR_Unknown31,
kWCR_Unknown32,
kWCR_Unknown33,
kWCR_Unknown34,
kWCR_Unknown35,
kWCR_Unknown36,
kWCR_Unknown37,
kWCR_ChozoGhost,
kWCR_Unknown39,
kWCR_Unknown40,
kWCR_Unknown41,
kWCR_AtomicBeta,
kWCR_AtomicAlpha,
kWCR_Unknown44,
kWCR_Unknown45,
kWCR_Unknown46,
kWCR_Unknown47,
kWCR_Unknown48,
kWCR_Unknown49,
kWCR_Unknown50,
kWCR_Unknown51,
kWCR_Unknown52,
kWCR_Unknown53,
kWCR_Unknown54,
kWCR_Unknown55,
kWCR_Unknown56,
kWCR_Unknown57,
kWCR_Unknown58,
kWCR_Unknown59,
kWCR_Unknown60,
kWCR_Unknown61,
kWCR_Unknown62,
kWCR_Unknown63,
kWCR_Unknown64,
kWCR_Unknown65,
kWCR_Unknown66,
kWCR_Unknown67,
kWCR_Unknown68,
kWCR_Unknown69,
kWCR_Unknown70,
kWCR_Unknown71,
kWCR_Unknown72,
kWCR_Unknown73,
kWCR_Unknown74,
kWCR_Unknown75,
kWCR_Unknown76,
kWCR_Unknown77,
kWCR_Unknown78,
kWCR_Unknown79,
kWCR_Unknown80,
kWCR_Unknown81,
kWCR_Unknown82,
kWCR_Unknown83,
kWCR_Unknown84,
kWCR_Unknown85,
kWCR_Unknown86,
kWCR_Unknown87,
kWCR_Unknown88,
kWCR_Unknown89,
kWCR_Unknown90,
kWCR_Unknown91,
kWCR_AtomicBetaReflect,
kWCR_AtomicAlphaReflect,
};
CHECK_SIZEOF(SAdvancementDeltas, 0x1c)
enum EProjectileAttrib {
kPA_None = 0,
kPA_PartialCharge = (1 << 0),
kPA_PlasmaProjectile = (1 << 1),
kPA_Charged = (1 << 2),
kPA_Ice = (1 << 3),
kPA_Wave = (1 << 4),
kPA_Plasma = (1 << 5),
kPA_Phazon = (1 << 6),
kPA_ComboShot = (1 << 7),
kPA_Bombs = (1 << 8),
kPA_PowerBombs = (1 << 9),
kPA_BigProjectile = (1 << 10),
kPA_ArmCannon = (1 << 11),
kPA_BigStrike = (1 << 12),
kPA_DamageFalloff = (1 << 13),
kPA_StaticInterference = (1 << 14),
kPA_PlayerUnFreeze = (1 << 15),
kPA_ParticleOPTS = (1 << 16),
kPA_KeepInCinematic = (1 << 17),
};
enum EUserEventType {
kUE_Projectile = 0,
kUE_EggLay = 1,
kUE_LoopedSoundStop = 2,
kUE_AlignTargetPos = 3,
kUE_AlignTargetRot = 4,
kUE_ChangeMaterial = 5,
kUE_Delete = 6,
kUE_GenerateEnd = 7,
kUE_DamageOn = 8,
kUE_DamageOff = 9,
kUE_AlignTargetPosStart = 10,
kUE_DeGenerate = 11,
kUE_Landing = 12,
kUE_TakeOff = 13,
kUE_FadeIn = 14,
kUE_FadeOut = 15,
kUE_ScreenShake = 16,
kUE_BeginAction = 17,
kUE_EndAction = 18,
kUE_BecomeRagDoll = 19,
kUE_IkLock = 20,
kUE_IkRelease = 21,
kUE_BreakLockOn = 22,
kUE_BecomeShootThrough = 23,
kUE_RemoveCollision = 24,
kUE_ObjectPickUp = 25,
kUE_ObjectDrop = 26,
kUE_EventStart = 27,
kUE_EventStop = 28,
kUE_Activate = 29,
kUE_Deactivate = 30,
kUE_SoundPlay = 31,
kUE_SoundStop = 32,
kUE_EffectOn = 33,
kUE_EffectOff = 34,
};
// class CBoolPOINode;
// class CInt32POINode;
// class CParticlePOINode;
// class CSoundPOINode;
class CActor : public CEntity {
public:
@ -40,17 +201,67 @@ public:
kTF_Cold = 1,
kTF_Hot = 2,
};
enum EFluidState {
kFS_EnteredFluid,
kFS_InFluid,
kFS_LeftFluid,
};
enum EScanState {
kSS_Start,
kSS_Processing,
kSS_Done,
};
CActor(TUniqueId uid, bool active, const rstl::string& name, const CEntityInfo& info, const CTransform4f& xf, const CModelData& mData,
const CMaterialList& list, const CActorParameters& params, TUniqueId nextDrawNode);
~CActor();
virtual void PreRender(CStateManager&, const CFrustum&);
virtual void AddToRenderer(const CFrustum&, CStateManager&);
virtual void Render(CStateManager&);
virtual bool CanRenderUnsorted(const CStateManager&) const;
virtual void CalculateRenderBounds();
virtual CHealthInfo* HealthInfo(CStateManager&);
virtual const CDamageVulnerability* GetDamageVulnerability() const;
virtual const CDamageVulnerability* GetDamageVulnerability(const CVector3f&, const CVector3f&, const CDamageInfo&) const;
virtual rstl::optional_object< CAABox > GetTouchBounds() const;
virtual void Touch(CActor&, CStateManager&);
virtual CVector3f GetOrbitPosition(const CStateManager&) const;
virtual CVector3f GetAimPosition(const CStateManager&, float) const;
virtual CVector3f GetHomingPosition(const CStateManager&, float) const;
virtual CVector3f GetScanObjectIndicatorPosition(const CStateManager&) const;
virtual EWeaponCollisionResponseTypes GetCollisionResponseType(const CVector3f&, const CVector3f&, const CWeaponMode&,
EProjectileAttrib) const;
virtual void FluidFXThink(EFluidState, CScriptWater&, CStateManager&);
virtual void OnScanStateChanged(EScanState, CStateManager&);
virtual CAABox GetSortingBounds(const CStateManager&) const;
virtual void DoUserAnimEvent(CStateManager&, const CInt32POINode&, EUserEventType, float dt);
SAdvancementDeltas UpdateAnimation(float dt, CStateManager& mgr, bool advTree);
void ProcessSoundEvent(s32 sfxId, f32 weight, s32 flags, f32 fallOff, f32 maxDist, u8 minVol, u8 maxVol, const CVector3f& toListener,
const CVector3f& position, s32 aid, CStateManager& mgr, bool translateId);
void UpdateSfxEmitters();
void RemoveEmitter();
const CTransform4f& GetTransform() const { return x34_transform; }
CVector3f GetTranslation() const { return x34_transform.GetTranslation(); }
bool GetMuted() const { return xe5_26_muted; }
bool HasAnimation() const { return x64_modelData && x64_modelData->GetAnimationData(); }
// const CBoolPOINode* GetBoolPOIList(s32& count) {
// return HasAnimation() ? x64_modelData->GetAnimationData()->GetBoolPOIList(count) : nullptr;
// }
// const CInt32POINode* GetInt32POIList(s32& count) {
// return HasAnimation() ? x64_modelData->GetAnimationData()->GetInt32POIList(count) : nullptr;
// }
// const CParticlePOINode* GetParticlePOIList(s32& count) {
// return HasAnimation() ? x64_modelData->GetAnimationData()->GetParticlePOIList(count) : nullptr;
// }
// const CSoundPOINode* GetSoundPOIList(s32& count) {
// return HasAnimation() ? x64_modelData->GetAnimationData()->GetSoundPOIList(count) : nullptr;
// }
protected:
CTransform4f x34_transform;

View File

@ -0,0 +1,38 @@
#ifndef _CADDITIVEANIMPLAYBACK_HPP
#define _CADDITIVEANIMPLAYBACK_HPP
#include "types.h"
#include "rstl/rc_ptr.hpp"
class CAnimTreeNode;
class CAdditiveAnimationInfo {
private:
f32 x0_fadeInDur;
f32 x4_fadeOutDur;
};
class CAdditiveAnimPlayback {
public:
enum EPlaybackPhase {
kPP_None,
kPP_FadingIn,
kPP_FadingOut,
kPP_FadedIn,
kPP_FadedOut,
};
private:
CAdditiveAnimationInfo x0_info;
rstl::ncrc_ptr< CAnimTreeNode > x8_anim;
f32 xc_targetWeight;
f32 x10_curWeight;
bool x14_active;
f32 x18_weightTimer;
EPlaybackPhase x1c_phase;
bool x20_needsFadeOut;
};
CHECK_SIZEOF(CAdditiveAnimPlayback, 0x24)
#endif

View File

@ -3,8 +3,198 @@
#include "types.h"
#include "MetroidPrime/CAdditiveAnimPlayback.hpp"
#include "MetroidPrime/CAnimPlaybackParms.hpp"
#include "MetroidPrime/CCharacterInfo.hpp"
#include "MetroidPrime/CHierarchyPoseBuilder.hpp"
#include "MetroidPrime/CPOINode.hpp"
#include "MetroidPrime/CParticleDatabase.hpp"
#include "MetroidPrime/CPoseAsTransforms.hpp"
#include "Kyoto/TToken.hpp"
#include "rstl/reserved_vector.hpp"
class CAnimationManager;
class CAnimSysContext;
class CAnimTreeNode;
class CCharacterFactory;
class CCharLayoutInfo;
class CSkinnedModel;
class CSkinnedModelWithAvgNormals;
class CTransitionManager;
class CAnimData {
// TODO
public:
enum EAnimDir {
kAD_Forward,
kAD_Backward,
};
void SetParticleEffectState(const rstl::string& name, bool active, CStateManager& mgr) {
x120_particleDB.SetParticleEffectState(name, active, mgr);
}
s32 GetCharacterIndex() const { return x204_charIdx; }
const CBoolPOINode* GetBoolPOIList(s32& count) {
count = x20c_passedBoolCount;
return mBoolPOINodes.data();
}
const CInt32POINode* GetInt32POIList(s32& count) {
count = x210_passedIntCount;
return mInt32POINodes.data();
}
const CParticlePOINode* GetParticlePOIList(s32& count) {
count = x214_passedParticleCount;
return mParticlePOINodes.data();
}
const CSoundPOINode* GetSoundPOIList(s32& count) {
count = x218_passedSoundCount;
return mSoundPOINodes.data();
}
// SetIsAnimating__9CAnimDataFb
// SetAnimDir__9CAnimDataFQ29CAnimData8EAnimDir
// GetBoundingBox__9CAnimDataCFv
// GetBoundingBox__9CAnimDataCFRC12CTransform4f
// GetLocatorSegId__9CAnimDataCFRCQ24rstl66basic_string
// ResetPOILists__9CAnimDataFv
// GetAverageVelocity__9CAnimDataCFi
// AdvanceParticles__9CAnimDataFRC12CTransform4ffRC9CVector3fR13CStateManager
// PoseSkinnedModel__9CAnimDataCFRC13CSkinnedModelRC17CPoseAsTransformsRCQ24rstl37optional_object<18CVertexMorphEffect>PCf
// DrawSkinnedModel__9CAnimDataCFRC13CSkinnedModelRC11CModelFlags
// InitializeCache__9CAnimDataFv
// FreeCache__9CAnimDataFv
// SetInfraModel__9CAnimDataFRC21TLockedToken<6CModel>RC26TLockedToken<10CSkinRules>
// SetXRayModel__9CAnimDataFRC21TLockedToken<6CModel>RC26TLockedToken<10CSkinRules>
// AdvanceAnim__9CAnimDataFR13CCharAnimTimeR9CVector3fR11CQuaternion
// AdvanceIgnoreParticles__9CAnimDataFfR9CRandom16b
// Advance__9CAnimDataFfRC9CVector3fR13CStateManagerb
// DoAdvance__9CAnimDataFfRbR9CRandom16b
// SetAnimation__9CAnimDataFRC18CAnimPlaybackParmsb
// GetAnimationPrimitives__9CAnimDataCFRC18CAnimPlaybackParmsRQ24rstl72set<10CPrimitive,Q24rstl18less<10CPrimitive>,Q24rstl17rmemory_allocator>
// PrimitiveSetToTokenVector__9CAnimDataFRCQ24rstl72set<10CPrimitive,Q24rstl18less<10CPrimitive>,Q24rstl17rmemory_allocator>RQ24rstl42vector<6CToken,Q24rstl17rmemory_allocator>b
// BuildPose__9CAnimDataFv
// PreRender__9CAnimDataFv
// SetupRender__9CAnimDataCFRC13CSkinnedModelRCQ24rstl37optional_object<18CVertexMorphEffect>PCf
// Render__9CAnimDataCFRC13CSkinnedModelRC11CModelFlagsRCQ24rstl37optional_object<18CVertexMorphEffect>PCf
// RenderAuxiliary__9CAnimDataCFRC14CFrustumPlanes
// RecalcPoseBuilder__9CAnimDataCFPC13CCharAnimTime
// GetAnimationDuration__9CAnimDataCFi
// GetAnimTimeRemaining__9CAnimDataCFRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>
// IsAnimTimeRemaining__9CAnimDataCFfRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>
// GetLocatorTransform__9CAnimDataCFRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>PC13CCharAnimTime
// GetLocatorTransform__9CAnimDataCF6CSegIdPC13CCharAnimTime
// CalcPlaybackAlignmentParms__9CAnimDataFRC18CAnimPlaybackParmsRCQ24rstl25ncrc_ptr<13CAnimTreeNode>
// SetRandomPlaybackRate__9CAnimDataFR9CRandom16
// SetPlaybackRate__9CAnimDataFf
// MultiplyPlaybackRate__9CAnimDataFf
// GetTimeOfUserEvent__9CAnimDataCF14EUserEventTypeRC13CCharAnimTime
// GetAdvancementDeltas__9CAnimDataCFRC13CCharAnimTimeRC13CCharAnimTime
// Touch__9CAnimDataCFRC13CSkinnedModeli
// InitializeEffects__9CAnimDataFR13CStateManagerRC9CVector3f
// SetPhase__9CAnimDataFf -> SetPhase__11IAnimReaderFf
// AddAdditiveAnimation__9CAnimDataFUifbb
// DelAdditiveAnimation__9CAnimDataFUi
// IsAdditiveAnimationActive__9CAnimDataCFUi
// GetAdditiveAnimationTree__9CAnimDataCFUi
// GetAnimationTree__9CAnimDataCFv
// AnimationTree__9CAnimDataFv
// IsAdditiveAnimation__9CAnimDataCFUi
// UpdateAdditiveAnims__9CAnimDataFf
// AdvanceAdditiveAnims__9CAnimDataFf
// AddAdditiveSegData__9CAnimDataCFRC10CSegIdListR16CSegStatementSet
// GetEventResourceIdForAnimResourceId__9CAnimDataCFi
// GetAnimationManager__9CAnimDataFv
// SetPoseValid__9CAnimDataFb
// GetCharacterInfo__9CAnimDataCFv
// GetCharLayoutInfo__9CAnimDataCFv
// GetParticleDB__9CAnimDataFv
// GetDeltaRotation__9CAnimDataCFv
// GetDeltaOffset__9CAnimDataCFv
// IsDeltaOffsetInUse__9CAnimDataCFv
// GetAdvancementDeltas__19CAdvancementResultsCFv
// SetDeltaRotation__9CAnimDataFRC11CQuaternionb
// SetDeltaOffset__9CAnimDataFRC9CVector3fb
// SetDeltaOffsetInUse__9CAnimDataFv
// IsDeltaRotationInUse__9CAnimDataCFv
// IsDeltaOffsetPrimed__9CAnimDataCFv
// GetAnimDir__9CAnimDataCFv
// GetIsLoop__9CAnimDataCFv
// IsAnimating__9CAnimDataCFv
// SetPoseBuilderValid__9CAnimDataFb
// GetAnimationManager__9CAnimDataCFv
// GetPoseValid__9CAnimDataCFv
// GetPoseBuilderValid__9CAnimDataCFv
// GetParticleDB__9CAnimDataCFv
// GetAnimSysContext__9CAnimDataCFv
// CacheInt32PoiList__9CAnimDataFRC13CCharAnimTimeiRCQ24rstl25ncrc_ptr<13CAnimTreeNode>
// GetIceModel__9CAnimDataCFv
// GetPASDatabase__9CAnimDataCFv
// EnableLooping__9CAnimDataFb
// GetCurrentAnimation__9CAnimDataCFv
// GetSkinnedModel__9CAnimDataCFv
// GetXRayModel__9CAnimDataCFv
// GetInfraModel__9CAnimDataCFv
// GetPose__9CAnimDataCFv
// PoseBuilder__9CAnimDataCFv
// GetPlaybackRate__9CAnimDataCFv
// Pose__9CAnimDataFv
// GetPoseBuilder__9CAnimDataCFv
// CacheSoundPoiList__9CAnimDataFRCQ24rstl25ncrc_ptr<13CAnimTreeNode>RC13CCharAnimTimei
// CacheParticlePoiList__9CAnimDataFRCQ24rstl25ncrc_ptr<13CAnimTreeNode>RC13CCharAnimTimei
// CacheBoolPoiList__9CAnimDataFRCQ24rstl25ncrc_ptr<13CAnimTreeNode>RC13CCharAnimTimei
// CacheInt32PoiList__9CAnimDataFRCQ24rstl25ncrc_ptr<13CAnimTreeNode>RC13CCharAnimTimei
private:
TLockedToken< CCharacterFactory > x0_charFactory;
CCharacterInfo xc_charInfo;
TLockedToken< CCharLayoutInfo > xcc_layoutData;
TLockedToken< CSkinnedModel > xd8_modelData;
rstl::optional_object< TLockedToken< CSkinnedModelWithAvgNormals > > xe4_iceModelData;
rstl::rc_ptr< CSkinnedModel > xf4_xrayModel;
rstl::rc_ptr< CSkinnedModel > xf8_infraModel;
rstl::rc_ptr< CAnimSysContext > xfc_animCtx;
rstl::rc_ptr< CAnimationManager > x100_animMgr;
EAnimDir x104_animDir;
CAABox x108_aabb;
CParticleDatabase x120_particleDB;
CAssetId x1d8_selfId;
CVector3f x1dc_alignPos;
CQuaternion x1e8_alignRot;
rstl::rc_ptr< CAnimTreeNode > x1f8_animRoot;
rstl::rc_ptr< CTransitionManager > x1fc_transMgr;
f32 x200_speedScale;
s32 x204_charIdx;
s32 x208_defaultAnim;
u32 x20c_passedBoolCount;
u32 x210_passedIntCount;
u32 x214_passedParticleCount;
u32 x218_passedSoundCount;
s32 x21c_particleLightIdx;
bool x220_24_animating : 1;
bool x220_25_loop : 1;
bool x220_26_aligningPos : 1;
bool x220_27_ : 1;
bool x220_28_ : 1;
bool x220_29_animationJustStarted : 1;
bool x220_30_poseBuilt : 1;
bool x220_31_poseCached : 1;
CPoseAsTransforms x224_pose;
CHierarchyPoseBuilder x2fc_poseBuilder;
CAnimPlaybackParms x40c_playbackParms;
rstl::reserved_vector< rstl::pair< s32, CAdditiveAnimPlayback >, 8 > x434_additiveAnims;
static rstl::reserved_vector< CBoolPOINode, 8 > mBoolPOINodes;
static rstl::reserved_vector< CInt32POINode, 16 > mInt32POINodes;
static rstl::reserved_vector< CParticlePOINode, 20 > mParticlePOINodes;
static rstl::reserved_vector< CSoundPOINode, 20 > mSoundPOINodes;
// in cpp -> rstl::reserved_vector< CInt32POINode, 16 > sInt32TransientCache;
};
CHECK_SIZEOF(CAnimData, 0x434 + 0x144)
#endif

View File

@ -0,0 +1,25 @@
#ifndef _CANIMPLAYBACKPARMS_HPP
#define _CANIMPLAYBACKPARMS_HPP
#include "types.h"
class CQuaternion;
class CTransform4f;
class CVector3f;
class CAnimPlaybackParms {
private:
s32 x0_animA;
s32 x4_animB;
f32 x8_blendWeight;
bool xc_animating;
s32 x10_;
CVector3f* x14_targetPos;
bool x18_useLocator;
CQuaternion* x1c_deltaOrient;
CTransform4f* x20_objectXf;
CVector3f* x24_objectScale;
};
CHECK_SIZEOF(CAnimPlaybackParms, 0x28)
#endif

View File

@ -0,0 +1,22 @@
#ifndef _CCHARANIMTIME_HPP
#define _CCHARANIMTIME_HPP
#include "types.h"
class CCharAnimTime {
public:
enum EType {
kT_NonZero,
kT_ZeroIncreasing,
kT_ZeroSteady,
kT_ZeroDecreasing,
kT_Infinity,
};
private:
f32 x0_time;
EType x4_type;
};
CHECK_SIZEOF(CCharAnimTime, 0x8)
#endif

View File

@ -0,0 +1,44 @@
#ifndef _CCHARACTERINFO_HPP
#define _CCHARACTERINFO_HPP
#include "types.h"
#include "MetroidPrime/CEffectComponent.hpp"
#include "MetroidPrime/CPASDatabase.hpp"
#include "Kyoto/IObjectStore.hpp"
#include "Kyoto/Math/CAABox.hpp"
#include "rstl/pair.hpp"
#include "rstl/string.hpp"
#include "rstl/vector.hpp"
class CCharacterInfo {
public:
class CParticleResData {
private:
rstl::vector< CAssetId > x0_part;
rstl::vector< CAssetId > x10_swhc;
rstl::vector< CAssetId > x20_elsc;
rstl::vector< CAssetId > x30_elsc;
};
private:
u16 x0_tableCount;
rstl::string x4_name;
CAssetId x14_cmdl;
CAssetId x18_cksr;
CAssetId x1c_cinf;
rstl::vector< rstl::pair< s32, rstl::pair< rstl::string, rstl::string > > > x20_animInfo;
CPASDatabase x30_pasDatabase;
CParticleResData x44_partRes;
u32 x84_unk;
rstl::vector< rstl::pair< rstl::string, CAABox > > x88_aabbs;
rstl::vector< rstl::pair< rstl::string, rstl::vector< CEffectComponent > > > x98_effects;
u32 xa8_cmdlOverlay;
u32 xac_cksrOverlay;
rstl::vector< s32 > xb0_animIdxs;
};
CHECK_SIZEOF(CCharacterInfo, 0xc0)
#endif

View File

@ -0,0 +1,18 @@
#ifndef _CEFFECTCOMPONENT_HPP
#define _CEFFECTCOMPONENT_HPP
#include "types.h"
#include "MetroidPrime/CParticleData.hpp"
class CEffectComponent {
private:
rstl::string x0_name;
SObjectTag x10_tag;
rstl::string x18_boneName;
f32 x28_scale;
CParticleData::EParentedMode x2c_parentedMode;
u32 x30_flags;
};
#endif

View File

@ -0,0 +1,62 @@
#ifndef _CHIERARCHYPOSEBUILDER_HPP
#define _CHIERARCHYPOSEBUILDER_HPP
#include "types.h"
#include "MetroidPrime/TGameTypes.hpp"
#include "Kyoto/Math/CQuaternion.hpp"
#include "Kyoto/Math/CVector3f.hpp"
#include "Kyoto/TToken.hpp"
#include "rstl/construction_deferred.hpp"
#include "rstl/optional_object.hpp"
class CCharLayoutInfo;
template < typename T >
class TSegIdMap {
private:
CSegId x0_boneCount;
CSegId x1_capacity;
u32 x4_maxCapacity;
CSegId x8_indirectionMap[200];
T* xd0_nodes;
CSegId xd4_curPrevBone;
};
typedef TSegIdMap< void > unk_TSegIdMap;
CHECK_SIZEOF(unk_TSegIdMap, 0xd8)
class CLayoutDescription {
public:
class CScaledLayoutDescription {
private:
TCachedToken< CCharLayoutInfo > x0_layoutToken;
f32 xc_scale;
rstl::optional_object< CVector3f > x10_scaleVec;
};
private:
TCachedToken< CCharLayoutInfo > x0_layoutToken;
rstl::optional_object< CScaledLayoutDescription > xc_scaled;
};
CHECK_SIZEOF(CLayoutDescription, 0x30)
class CHierarchyPoseBuilder {
public:
class CTreeNode {
private:
CSegId x0_child;
CSegId x1_sibling;
CQuaternion x4_rotation;
CVector3f x14_offset;
};
private:
CLayoutDescription x0_layoutDesc;
rstl::construction_deferred< CSegId > x30_rootId;
TSegIdMap< CTreeNode > x38_treeMap;
};
CHECK_SIZEOF(CHierarchyPoseBuilder, 0x110)
#endif

View File

@ -17,6 +17,14 @@
class CAnimData;
class CModel;
// TODO move
#include "Kyoto/Math/CQuaternion.hpp"
struct SAdvancementDeltas {
CVector3f x0_posDelta;
CQuaternion xc_rotDelta;
};
CHECK_SIZEOF(SAdvancementDeltas, 0x1c)
class CModelData {
public:
bool IsStaticModel() const { return xc_animData.get() == nullptr && !x1c_normalModel; }
@ -30,7 +38,7 @@ public:
SAdvancementDeltas AdvanceAnimation(float dt, CStateManager& mgr, TAreaId aid, bool advTree);
void AdvanceParticles(const CTransform4f& xf, float dt, CStateManager& mgr);
rstl::auto_ptr< CAnimData >& GetAnimData() { return xc_animData; }
CAnimData* GetAnimationData() const { return xc_animData.get(); }
void SetXRayModel(const rstl::pair< CAssetId, CAssetId >& assets);
void SetInfraModel(const rstl::pair< CAssetId, CAssetId >& assets);

View File

@ -0,0 +1,93 @@
#ifndef _CPASANIMSTATE_HPP
#define _CPASANIMSTATE_HPP
#include "types.h"
#include "rstl/vector.hpp"
namespace pas {
enum EAnimationState {
kAS_Invalid = -1,
kAS_Fall = 0,
kAS_Getup = 1,
kAS_LieOnGround = 2,
kAS_Step = 3,
kAS_Death = 4,
kAS_Locomotion = 5,
kAS_KnockBack = 6,
kAS_MeleeAttack = 7,
kAS_Turn = 8,
kAS_LoopAttack = 9,
kAS_LoopReaction = 10,
kAS_GroundHit = 11,
kAS_Generate = 12,
kAS_Jump = 13,
kAS_Hurled = 14,
kAS_Slide = 15,
kAS_Taunt = 16,
kAS_Scripted = 17,
kAS_ProjectileAttack = 18,
kAS_Cover = 19,
kAS_WallHang = 20,
kAS_AdditiveIdle = 21,
kAS_AdditiveAim = 22,
kAS_AdditiveFlinch = 23,
kAS_AdditiveReaction = 24,
};
} // namespace pas
class CPASAnimParm {
public:
enum EParmType {
kPT_None = -1,
kPT_Int32 = 0,
kPT_UInt32 = 1,
kPT_Float = 2,
kPT_Bool = 3,
kPT_Enum = 4,
};
union UParmValue {
s32 m_int;
u32 m_uint;
f32 m_float;
bool m_bool;
};
private:
UParmValue x0_value;
EParmType x4_type;
};
class CPASParmInfo {
public:
enum EWeightFunction {
kWF_ExactMatch,
kWF_PercentError,
kWF_AngularPercent,
kWF_NoWeight,
};
private:
CPASAnimParm::EParmType x0_type;
EWeightFunction x4_weightFunction;
float x8_weight;
CPASAnimParm::UParmValue xc_min;
CPASAnimParm::UParmValue x10_max;
};
class CPASAnimInfo {
private:
u32 x0_id;
rstl::reserved_vector< CPASAnimParm::UParmValue, 8 > x4_parms;
};
class CPASAnimState {
private:
pas::EAnimationState x0_id;
rstl::vector< CPASParmInfo > x4_parms;
rstl::vector< CPASAnimInfo > x14_anims;
rstl::vector< s32 > x24_selectionCache;
};
CHECK_SIZEOF(CPASAnimState, 0x34)
#endif

View File

@ -0,0 +1,17 @@
#ifndef _CPASDATABASE_HPP
#define _CPASDATABASE_HPP
#include "types.h"
#include "MetroidPrime/CPASAnimState.hpp"
#include "rstl/vector.hpp"
class CPASDatabase {
private:
rstl::vector< CPASAnimState > x0_states;
s32 x10_defaultState;
};
CHECK_SIZEOF(CPASDatabase, 0x14)
#endif

View File

@ -0,0 +1,86 @@
#ifndef _CPOINODE_HPP
#define _CPOINODE_HPP
#include "types.h"
#include "MetroidPrime/CCharAnimTime.hpp"
#include "MetroidPrime/CParticleData.hpp"
#include "rstl/string.hpp"
#define POITYPE_LOOP 0
#define POITYPE_EMPTYBOOL 1
#define POITYPE_EMPTYINT32 2
#define POITYPE_SOUNDINT32 4
#define POITYPE_PARTICLE 5
#define POITYPE_USEREVENT 6
#define POITYPE_RANDRATE 7
#define POITYPE_SOUND 8
class CPOINode {
public:
virtual ~CPOINode();
const rstl::string& GetString() const { return x8_name; }
s32 GetPoiType() const { return x18_type; }
const CCharAnimTime& GetTime() const { return x1c_time; }
f32 GetWeight() const { return x2c_weight; }
s32 GetCharacterIndex() const { return x30_charIdx; }
s32 GetFlags() const { return x34_flags; }
protected:
u16 x4_;
rstl::string x8_name;
s16 x18_type;
CCharAnimTime x1c_time;
s32 x24_index;
bool x28_unique;
f32 x2c_weight;
s32 x30_charIdx;
s32 x34_flags;
};
CHECK_SIZEOF(CPOINode, 0x38)
class CBoolPOINode : public CPOINode {
public:
// __ct__12CBoolPOINodeFQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>UsRC13CCharAnimTimeibfiib
// __ct__12CBoolPOINodeFR12CInputStream
// CopyNodeMinusStartTime__12CBoolPOINodeFRC12CBoolPOINodeRC13CCharAnimTime
bool GetValue() const { return x38_val; }
private:
bool x38_val;
};
class CInt32POINode : public CPOINode {
public:
// __ct__13CInt32POINodeFQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>UsRC13CCharAnimTimeibfiiiRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>
// CopyNodeMinusStartTime__13CInt32POINodeFRC13CInt32POINodeRC13CCharAnimTime
s32 GetValue() const { return x38_val; }
const rstl::string& GetLocatorName() const { return x3c_lctrName; }
private:
s32 x38_val;
rstl::string x3c_lctrName;
};
class CParticlePOINode : public CPOINode {
private:
CParticleData x38_data;
};
class CSoundPOINode : public CPOINode {
public:
u32 GetSoundId() const { return x38_sfxId; }
f32 GetFallOff() const { return x3c_falloff; }
f32 GetMaxDistance() const { return x40_maxDist; }
private:
u32 x38_sfxId;
f32 x3c_falloff;
f32 x40_maxDist;
};
#endif

View File

@ -0,0 +1,35 @@
#ifndef _CPARTICLEDATA_HPP
#define _CPARTICLEDATA_HPP
#include "types.h"
#include "Kyoto/IObjectStore.hpp"
#include "Kyoto/Math/CVector3f.hpp"
#include "rstl/string.hpp"
class CParticleData {
public:
enum EParentedMode {
kPM_Initial,
kPM_ContinuousEmitter,
kPM_ContinuousSystem,
};
private:
u32 x0_duration;
SObjectTag x4_particle;
rstl::string xc_boneName;
f32 x1c_scale;
EParentedMode x20_parentMode;
};
class CAuxiliaryParticleData {
private:
u32 x0_duration;
SObjectTag x4_particle;
CVector3f xc_translation;
f32 x18_scale;
};
#endif

View File

@ -0,0 +1,41 @@
#ifndef _CPARTICLEDATABASE_HPP
#define _CPARTICLEDATABASE_HPP
#include "types.h"
#include "Kyoto/IObjectStore.hpp"
#include "Kyoto/TToken.hpp"
#include "rstl/auto_ptr.hpp"
#include "rstl/map.hpp"
#include "rstl/rc_ptr.hpp"
#include "rstl/string.hpp"
class CElectricDescription;
class CGenDescription;
class CParticleGenInfo;
class CStateManager;
class CSwooshDescription;
class CParticleDatabase {
public:
typedef rstl::map< rstl::string, rstl::auto_ptr< CParticleGenInfo > > DrawMap;
void SetParticleEffectState(const rstl::string& name, bool active, CStateManager& mgr);
private:
rstl::map< CAssetId, rstl::rc_ptr< TLockedToken< CGenDescription > > > x0_particleDescs;
rstl::map< CAssetId, rstl::rc_ptr< TLockedToken< CSwooshDescription > > > x14_swooshDescs;
rstl::map< CAssetId, rstl::rc_ptr< TLockedToken< CElectricDescription > > > x28_electricDescs;
DrawMap x3c_rendererDrawLoop;
DrawMap x50_firstDrawLoop;
DrawMap x64_lastDrawLoop;
DrawMap x78_rendererDraw;
DrawMap x8c_firstDraw;
DrawMap xa0_lastDraw;
bool xb4_24_updatesEnabled : 1;
bool xb4_25_anySystemsDrawnWithModel : 1;
};
CHECK_SIZEOF(CParticleDatabase, 0xb5)
#endif

View File

@ -0,0 +1,24 @@
#ifndef _CPOSEASTRANSFORMS_HPP
#define _CPOSEASTRANSFORMS_HPP
#include "types.h"
#include "MetroidPrime/TGameTypes.hpp"
#include "Kyoto/Math/CTransform4f.hpp"
#include "rstl/reserved_vector.hpp"
#include "rstl/single_ptr.hpp"
class CPoseAsTransforms {
private:
CSegId x0_nextId;
CSegId x1_count;
// TODO TSegIdMapVariableSize<CPoseAsTransforms::CElementType>
rstl::reserved_vector< rstl::pair< CSegId, CSegId >, 100 > x4_links;
rstl::single_ptr< CTransform4f > xd0_transformArr;
CSegId xd4_lastInserted;
};
CHECK_SIZEOF(CPoseAsTransforms, 0xd8)
#endif

View File

@ -22,7 +22,7 @@ class CStateManager;
class CCameraManager {
public:
CGameCamera* GetCurrentCamera(CStateManager& mgr);
CGameCamera* GetCurrentCamera(CStateManager& mgr) const;
private:
TUniqueId x0_curCameraId;

View File

@ -56,4 +56,9 @@ CHECK_SIZEOF(TUniqueId, 0x2)
typedef u16 TSfxId;
static TSfxId InvalidSfxId = 0xFFFFu;
class CSegId {
private:
u8 x0_id;
};
#endif

View File

@ -28,7 +28,7 @@ public:
// other.x0_has = false;
// }
T* get() { return x4_item; }
const T* get() const { return x4_item; }
/* const*/ T* get() const { return x4_item; }
T* operator->() { return get(); }
const T* operator->() const { return get(); }
T* release() const {

View File

@ -0,0 +1,37 @@
#ifndef _RSTL_CONSTRUCTION_DEFERRED_HPP
#define _RSTL_CONSTRUCTION_DEFERRED_HPP
#include "types.h"
#include "rstl/construct.hpp"
namespace rstl {
template < typename T >
class construction_deferred {
public:
construction_deferred() : m_valid(false) {}
template < typename A >
void build(const A& arg) {
rstl::construct(get_ptr(), arg);
makeValid();
}
void clear(); // TODO
bool valid() const { return m_valid; }
T* get_ptr() { return reinterpret_cast< T* >(x0_data); }
T& data() {
// TODO ensureIsValid
return *get_ptr();
}
T& operator*() { return data(); }
private:
u8 x0_data[sizeof(T)];
bool m_valid __attribute__((aligned(4)));
void makeValid() { m_valid = true; }
};
} // namespace rstl
#endif

View File

@ -3,15 +3,13 @@
#include "types.h"
#include "rstl/red_black_tree.hpp"
#include "rstl/rmemory_allocator.hpp"
namespace rstl {
template < typename T >
struct less {};
template < typename K, typename V, typename Cmp = less< K >, typename Alloc = rmemory_allocator >
class map {
u8 pad[0x10];
u8 pad[0x14];
};
} // namespace rstl

View File

@ -20,6 +20,11 @@ public:
T* get() { return x0_refData->x0_ptr; }
T* operator->() { return get(); }
};
template < typename T >
class ncrc_ptr : public rc_ptr< T > {
// TODO
};
} // namespace rstl
#endif

View File

@ -0,0 +1,16 @@
#ifndef _RSTL_RED_BLACK_TREE_HPP
#define _RSTL_RED_BLACK_TREE_HPP
#include "types.h"
namespace rstl {
template < typename P >
struct select1st {};
template < typename T >
struct less {};
template < typename T, typename P, int U, typename S = select1st< P >, typename Cmp = less< T > >
class red_black_tree {};
}; // namespace rstl
#endif

View File

@ -15,6 +15,7 @@ public:
T* get() { return x0_ptr; }
const T* get() const { return x0_ptr; }
T* operator->() { return x0_ptr; }
const T* operator->() const { return x0_ptr; }
void operator=(T* ptr) {
delete x0_ptr;
x0_ptr = ptr;

View File

@ -107,7 +107,7 @@ void vector< T, Alloc >::reserve(size_t size) {
x8_capacity = size;
}
typedef vector<void> unk_vector;
typedef vector< void > unk_vector;
CHECK_SIZEOF(unk_vector, 0x10)
} // namespace rstl

View File

@ -1,7 +1,11 @@
#include "MetroidPrime/CActor.hpp"
#include "MetroidPrime/CActorLights.hpp"
#include "MetroidPrime/CActorParameters.hpp"
#include "MetroidPrime/CAnimData.hpp"
#include "MetroidPrime/CModelData.hpp"
#include "MetroidPrime/Cameras/CCameraManager.hpp"
#include "MetroidPrime/Cameras/CGameCamera.hpp"
#include "Kyoto/Audio/CAudioSys.hpp"
@ -35,7 +39,7 @@ CActor::CActor(TUniqueId uid, bool active, const rstl::string& name, const CEnti
, xc8_drawnToken(-1)
, xcc_addedToken(-1)
, xd0_damageMag(params.GetThermalMag())
, xd4_maxVol(CAudioSys::kMaxVolume)
, xd4_maxVol(CAudioSys::kkMaxVolume)
, xd8_nonLoopingSfxHandles(CSfxHandle(0))
, xe4_24_nextNonLoopingSfxHandle(0)
, xe4_27_notInSortedLists(true)
@ -88,7 +92,58 @@ SAdvancementDeltas CActor::UpdateAnimation(float dt, CStateManager& mgr, bool ad
SAdvancementDeltas result = x64_modelData->AdvanceAnimation(dt, mgr, GetAreaId(), advTree);
x64_modelData->AdvanceParticles(GetTransform(), dt, mgr);
UpdateSfxEmitters();
if (x64_modelData && x64_modelData->GetAnimData().get() != nullptr) {
if (HasAnimation()) {
u16 maxVol = xd4_maxVol;
s32 aid = x4_areaId.Value();
const CGameCamera* camera = mgr.GetCameraManager().GetCurrentCamera(mgr);
const CVector3f origin = GetTranslation();
const CVector3f toCamera = camera->GetTranslation() - origin;
s32 soundNodeCount = 0;
const CSoundPOINode* soundNode = HasAnimation() ? x64_modelData->GetAnimationData()->GetSoundPOIList(soundNodeCount) : nullptr;
if (soundNodeCount > 0 && soundNode != nullptr) {
for (s32 i = 0; i < soundNodeCount; ++soundNode, ++i) {
s32 charIdx = soundNode->GetCharacterIndex();
if (soundNode->GetPoiType() != POITYPE_SOUND)
continue;
if (GetMuted())
continue;
if (charIdx != -1 && x64_modelData->GetAnimationData()->GetCharacterIndex() != charIdx)
continue;
// if (soundNode->GetPoiType() == POITYPE_SOUND && !GetMuted() && (charIdx == -1 ||
// x64_modelData->GetAnimationData()->GetCharacterIndex() == charIdx))
ProcessSoundEvent(soundNode->GetSoundId(), soundNode->GetWeight(), soundNode->GetFlags(), soundNode->GetFallOff(),
soundNode->GetMaxDistance(), 20, maxVol, toCamera, origin, aid, mgr, true);
}
}
s32 intNodeCount = 0;
const CInt32POINode* intNode = HasAnimation() ? x64_modelData->GetAnimationData()->GetInt32POIList(intNodeCount) : nullptr;
if (intNodeCount > 0 && intNode != nullptr) {
for (s32 i = 0; i < intNodeCount; ++intNode, ++i) {
s32 charIdx = intNode->GetCharacterIndex();
if (soundNode->GetPoiType() == POITYPE_SOUNDINT32 && !GetMuted() &&
(charIdx == -1 || x64_modelData->GetAnimationData()->GetCharacterIndex() == charIdx)) {
ProcessSoundEvent(intNode->GetValue(), intNode->GetWeight(), intNode->GetFlags(), 0.1f, 150.f, 20, maxVol, toCamera, origin, aid,
mgr, true);
} else if (soundNode->GetPoiType() == POITYPE_USEREVENT) {
DoUserAnimEvent(mgr, *intNode, static_cast< EUserEventType >(intNode->GetValue()), dt);
}
}
}
s32 particleNodeCount = 0;
const CParticlePOINode* particleNode =
HasAnimation() ? x64_modelData->GetAnimationData()->GetParticlePOIList(particleNodeCount) : nullptr;
if (particleNodeCount > 0 && particleNode != nullptr) {
for (s32 i = 0; i < particleNodeCount; ++particleNode, ++i) {
s32 charIdx = soundNode->GetCharacterIndex();
if (charIdx != -1 && x64_modelData->GetAnimationData()->GetCharacterIndex() != charIdx)
continue;
x64_modelData->GetAnimationData()->SetParticleEffectState(particleNode->GetString(), true, mgr);
}
}
}
return result;
}