Header merge & CScriptPickup progress

Former-commit-id: 45c5450376
This commit is contained in:
Luke Street 2022-10-05 19:06:15 -04:00
parent b95f4a88b2
commit a578b055a2
55 changed files with 542 additions and 313 deletions

View File

@ -4604,8 +4604,8 @@ __ct__Q211CSfxManager11CSfxChannelFv:
.section .sdata2, "a"
.balign 8
.global lbl_805AE318
lbl_805AE318:
.global kMaxPriority__11CSfxManager
kMaxPriority__11CSfxManager:
# ROM: 0x3FABB8
.2byte 0x000000FF
@ -4614,8 +4614,8 @@ kMedPriority__11CSfxManager:
# ROM: 0x3FABBA
.2byte 0x0000007F
.global lbl_805AE31C
lbl_805AE31C:
.global kInternalInvalidSfxId__11CSfxManager
kInternalInvalidSfxId__11CSfxManager:
# ROM: 0x3FABBC
.4byte 0xFFFF0000

View File

@ -208,7 +208,7 @@ UpdateRainSounds__13CEnvFxManagerFR13CStateManager:
/* 8020FFE0 0020CF40 28 00 00 00 */ cmplwi r0, 0
/* 8020FFE4 0020CF44 40 82 00 6C */ bne lbl_80210050
/* 8020FFE8 0020CF48 3C 60 80 5A */ lis r3, sZeroVector__9CVector3f@ha
/* 8020FFEC 0020CF4C A9 22 C5 F8 */ lha r9, lbl_805AE318@sda21(r2)
/* 8020FFEC 0020CF4C A9 22 C5 F8 */ lha r9, kMaxPriority__11CSfxManager@sda21(r2)
/* 8020FFF0 0020CF50 38 A3 66 A0 */ addi r5, r3, sZeroVector__9CVector3f@l
/* 8020FFF4 0020CF54 81 42 C6 00 */ lwz r10, kAllAreas__11CSfxManager@sda21(r2)
/* 8020FFF8 0020CF58 38 61 00 24 */ addi r3, r1, 0x24
@ -220,7 +220,7 @@ UpdateRainSounds__13CEnvFxManagerFR13CStateManager:
/* 80210010 0020CF70 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80210014 0020CF74 3C 60 80 5A */ lis r3, sZeroVector__9CVector3f@ha
/* 80210018 0020CF78 38 A3 66 A0 */ addi r5, r3, sZeroVector__9CVector3f@l
/* 8021001C 0020CF7C A9 22 C5 F8 */ lha r9, lbl_805AE318@sda21(r2)
/* 8021001C 0020CF7C A9 22 C5 F8 */ lha r9, kMaxPriority__11CSfxManager@sda21(r2)
/* 80210020 0020CF80 90 1F 0B 6C */ stw r0, 0xb6c(r31)
/* 80210024 0020CF84 7C A6 2B 78 */ mr r6, r5
/* 80210028 0020CF88 81 42 C6 00 */ lwz r10, kAllAreas__11CSfxManager@sda21(r2)

View File

@ -915,7 +915,7 @@ sub_802099c0:
/* 802099D8 00206938 28 00 00 00 */ cmplwi r0, 0
/* 802099DC 0020693C 40 82 00 3C */ bne lbl_80209A18
/* 802099E0 00206940 A0 9F 00 24 */ lhz r4, 0x24(r31)
/* 802099E4 00206944 A0 02 C5 FC */ lhz r0, lbl_805AE31C@sda21(r2)
/* 802099E4 00206944 A0 02 C5 FC */ lhz r0, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 802099E8 00206948 7C 04 00 40 */ cmplw r4, r0
/* 802099EC 0020694C 41 82 00 2C */ beq lbl_80209A18
/* 802099F0 00206950 88 BF 00 2C */ lbz r5, 0x2c(r31)

View File

@ -422,7 +422,7 @@ lbl_8023F79C:
/* 8023F858 0023C7B8 90 01 00 0C */ stw r0, 0xc(r1)
/* 8023F85C 0023C7BC 38 A0 00 00 */ li r5, 0
/* 8023F860 0023C7C0 39 60 FF FF */ li r11, -1
/* 8023F864 0023C7C4 A0 02 C5 FC */ lhz r0, lbl_805AE31C@sda21(r2)
/* 8023F864 0023C7C4 A0 02 C5 FC */ lhz r0, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 8023F868 0023C7C8 90 61 00 10 */ stw r3, 0x10(r1)
/* 8023F86C 0023C7CC 7F E3 FB 78 */ mr r3, r31
/* 8023F870 0023C7D0 38 9B 03 00 */ addi r4, r27, 0x300

View File

@ -483,7 +483,7 @@ lbl_80244ED4:
/* 80244F5C 00241EBC 39 60 00 00 */ li r11, 0
/* 80244F60 00241EC0 99 61 00 28 */ stb r11, 0x28(r1)
/* 80244F64 00241EC4 38 01 00 10 */ addi r0, r1, 0x10
/* 80244F68 00241EC8 A1 42 C5 FC */ lhz r10, lbl_805AE31C@sda21(r2)
/* 80244F68 00241EC8 A1 42 C5 FC */ lhz r10, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 80244F6C 00241ECC 7F 83 E3 78 */ mr r3, r28
/* 80244F70 00241ED0 D0 01 00 10 */ stfs f0, 0x10(r1)
/* 80244F74 00241ED4 7F A5 EB 78 */ mr r5, r29

View File

@ -6083,7 +6083,7 @@ lbl_802226BC:
/* 802226FC 0021F65C 39 60 00 00 */ li r11, 0
/* 80222700 0021F660 99 61 00 3C */ stb r11, 0x3c(r1)
/* 80222704 0021F664 38 01 00 24 */ addi r0, r1, 0x24
/* 80222708 0021F668 A1 42 C5 FC */ lhz r10, lbl_805AE31C@sda21(r2)
/* 80222708 0021F668 A1 42 C5 FC */ lhz r10, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 8022270C 0021F66C 7F 63 DB 78 */ mr r3, r27
/* 80222710 0021F670 D0 01 00 24 */ stfs f0, 0x24(r1)
/* 80222714 0021F674 7F 85 E3 78 */ mr r5, r28

View File

@ -8171,7 +8171,7 @@ lbl_801B43A8:
/* 801B43D0 001B1330 90 01 00 94 */ stw r0, 0x94(r1)
/* 801B43D4 001B1334 39 81 00 50 */ addi r12, r1, 0x50
/* 801B43D8 001B1338 39 61 00 40 */ addi r11, r1, 0x40
/* 801B43DC 001B133C A0 02 C5 FC */ lhz r0, lbl_805AE31C@sda21(r2)
/* 801B43DC 001B133C A0 02 C5 FC */ lhz r0, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 801B43E0 001B1340 BE C1 00 68 */ stmw r22, 0x68(r1)
/* 801B43E4 001B1344 3A C0 00 00 */ li r22, 0
/* 801B43E8 001B1348 7C 9F 23 78 */ mr r31, r4

View File

@ -5521,7 +5521,7 @@ lbl_801F88DC:
/* 801F8914 001F5874 39 01 00 48 */ addi r8, r1, 0x48
/* 801F8918 001F5878 B0 01 00 38 */ sth r0, 0x38(r1)
/* 801F891C 001F587C 39 60 00 00 */ li r11, 0
/* 801F8920 001F5880 A0 02 C5 FC */ lhz r0, lbl_805AE31C@sda21(r2)
/* 801F8920 001F5880 A0 02 C5 FC */ lhz r0, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 801F8924 001F5884 7F C3 F3 78 */ mr r3, r30
/* 801F8928 001F5888 90 A1 00 08 */ stw r5, 8(r1)
/* 801F892C 001F588C 7F E5 FB 78 */ mr r5, r31
@ -5695,7 +5695,7 @@ FireProjectile__13CFlyingPirateFR13CStateManagerRC9CVector3f:
/* 801F8B90 001F5AF0 39 60 00 00 */ li r11, 0
/* 801F8B94 001F5AF4 99 61 01 04 */ stb r11, 0x104(r1)
/* 801F8B98 001F5AF8 38 01 00 EC */ addi r0, r1, 0xec
/* 801F8B9C 001F5AFC A1 42 C5 FC */ lhz r10, lbl_805AE31C@sda21(r2)
/* 801F8B9C 001F5AFC A1 42 C5 FC */ lhz r10, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 801F8BA0 001F5B00 7F A3 EB 78 */ mr r3, r29
/* 801F8BA4 001F5B04 D0 01 00 EC */ stfs f0, 0xec(r1)
/* 801F8BA8 001F5B08 7F C5 F3 78 */ mr r5, r30
@ -5899,7 +5899,7 @@ lbl_801F8D88:
/* 801F8EB0 001F5E10 39 60 00 00 */ li r11, 0
/* 801F8EB4 001F5E14 99 61 00 94 */ stb r11, 0x94(r1)
/* 801F8EB8 001F5E18 38 01 00 7C */ addi r0, r1, 0x7c
/* 801F8EBC 001F5E1C A1 42 C5 FC */ lhz r10, lbl_805AE31C@sda21(r2)
/* 801F8EBC 001F5E1C A1 42 C5 FC */ lhz r10, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 801F8EC0 001F5E20 7F A3 EB 78 */ mr r3, r29
/* 801F8EC4 001F5E24 D0 01 00 7C */ stfs f0, 0x7c(r1)
/* 801F8EC8 001F5E28 7F C5 F3 78 */ mr r5, r30

View File

@ -7361,7 +7361,7 @@ lbl_801A4734:
/* 801A4774 001A16D4 39 60 00 00 */ li r11, 0
/* 801A4778 001A16D8 99 61 00 40 */ stb r11, 0x40(r1)
/* 801A477C 001A16DC 38 01 00 28 */ addi r0, r1, 0x28
/* 801A4780 001A16E0 A1 42 C5 FC */ lhz r10, lbl_805AE31C@sda21(r2)
/* 801A4780 001A16E0 A1 42 C5 FC */ lhz r10, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 801A4784 001A16E4 7F 83 E3 78 */ mr r3, r28
/* 801A4788 001A16E8 D0 01 00 28 */ stfs f0, 0x28(r1)
/* 801A478C 001A16EC 7F A5 EB 78 */ mr r5, r29

View File

@ -734,7 +734,7 @@ sub_80234b20:
/* 80234BD4 00231B34 90 01 00 0C */ stw r0, 0xc(r1)
/* 80234BD8 00231B38 38 A0 00 00 */ li r5, 0
/* 80234BDC 00231B3C 39 60 FF FF */ li r11, -1
/* 80234BE0 00231B40 A0 02 C5 FC */ lhz r0, lbl_805AE31C@sda21(r2)
/* 80234BE0 00231B40 A0 02 C5 FC */ lhz r0, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 80234BE4 00231B44 90 61 00 10 */ stw r3, 0x10(r1)
/* 80234BE8 00231B48 7F A3 EB 78 */ mr r3, r29
/* 80234BEC 00231B4C 38 9E 06 CC */ addi r4, r30, 0x6cc

View File

@ -10621,7 +10621,7 @@ lbl_80279CF4:
/* 80279EE4 00276E44 38 81 01 BC */ addi r4, r1, 0x1bc
/* 80279EE8 00276E48 90 61 00 10 */ stw r3, 0x10(r1)
/* 80279EEC 00276E4C 39 81 01 C8 */ addi r12, r1, 0x1c8
/* 80279EF0 00276E50 A1 62 C5 FC */ lhz r11, lbl_805AE31C@sda21(r2)
/* 80279EF0 00276E50 A1 62 C5 FC */ lhz r11, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 80279EF4 00276E54 7F 43 D3 78 */ mr r3, r26
/* 80279EF8 00276E58 90 01 00 14 */ stw r0, 0x14(r1)
/* 80279EFC 00276E5C 38 00 00 00 */ li r0, 0
@ -10807,7 +10807,7 @@ lbl_80279FE0:
/* 8027A1BC 0027711C 38 C1 01 40 */ addi r6, r1, 0x140
/* 8027A1C0 00277120 90 01 00 10 */ stw r0, 0x10(r1)
/* 8027A1C4 00277124 39 61 01 4C */ addi r11, r1, 0x14c
/* 8027A1C8 00277128 A0 02 C5 FC */ lhz r0, lbl_805AE31C@sda21(r2)
/* 8027A1C8 00277128 A0 02 C5 FC */ lhz r0, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 8027A1CC 0027712C 38 E1 04 34 */ addi r7, r1, 0x434
/* 8027A1D0 00277130 90 61 00 14 */ stw r3, 0x14(r1)
/* 8027A1D4 00277134 7F 43 D3 78 */ mr r3, r26

View File

@ -2611,7 +2611,7 @@ lbl_80078F20:
/* 80079014 00075F74 39 60 00 00 */ li r11, 0
/* 80079018 00075F78 99 61 00 80 */ stb r11, 0x80(r1)
/* 8007901C 00075F7C 38 01 00 68 */ addi r0, r1, 0x68
/* 80079020 00075F80 A1 42 C5 FC */ lhz r10, lbl_805AE31C@sda21(r2)
/* 80079020 00075F80 A1 42 C5 FC */ lhz r10, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 80079024 00075F84 7F 83 E3 78 */ mr r3, r28
/* 80079028 00075F88 D0 01 00 68 */ stfs f0, 0x68(r1)
/* 8007902C 00075F8C 7F A5 EB 78 */ mr r5, r29
@ -2643,7 +2643,7 @@ lbl_80079088:
/* 8007908C 00075FEC 39 60 00 00 */ li r11, 0
/* 80079090 00075FF0 99 61 00 64 */ stb r11, 0x64(r1)
/* 80079094 00075FF4 38 01 00 4C */ addi r0, r1, 0x4c
/* 80079098 00075FF8 A1 42 C5 FC */ lhz r10, lbl_805AE31C@sda21(r2)
/* 80079098 00075FF8 A1 42 C5 FC */ lhz r10, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 8007909C 00075FFC 7F 83 E3 78 */ mr r3, r28
/* 800790A0 00076000 D0 01 00 4C */ stfs f0, 0x4c(r1)
/* 800790A4 00076004 7F A5 EB 78 */ mr r5, r29
@ -4505,7 +4505,7 @@ MassiveFrozenDeath__10CPatternedFR13CStateManager:
/* 8007AB34 00077A94 94 21 FE E0 */ stwu r1, -0x120(r1)
/* 8007AB38 00077A98 7C 08 02 A6 */ mflr r0
/* 8007AB3C 00077A9C 90 01 01 24 */ stw r0, 0x124(r1)
/* 8007AB40 00077AA0 A0 02 C5 FC */ lhz r0, lbl_805AE31C@sda21(r2)
/* 8007AB40 00077AA0 A0 02 C5 FC */ lhz r0, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 8007AB44 00077AA4 93 E1 01 1C */ stw r31, 0x11c(r1)
/* 8007AB48 00077AA8 7C 9F 23 78 */ mr r31, r4
/* 8007AB4C 00077AAC 93 C1 01 18 */ stw r30, 0x118(r1)

View File

@ -184,7 +184,7 @@ lbl_80105AB4:
/* 80105ACC 00102A2C 48 1E 2E E5 */ bl TranslateSFXID__11CSfxManagerFUs
/* 80105AD0 00102A30 48 00 00 08 */ b lbl_80105AD8
lbl_80105AD4:
/* 80105AD4 00102A34 A0 62 C5 FC */ lhz r3, lbl_805AE31C@sda21(r2)
/* 80105AD4 00102A34 A0 62 C5 FC */ lhz r3, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
lbl_80105AD8:
/* 80105AD8 00102A38 54 60 04 3E */ clrlwi r0, r3, 0x10
/* 80105ADC 00102A3C 7F A3 EB 78 */ mr r3, r29

View File

@ -1437,7 +1437,7 @@ lbl_80147AB0:
/* 80147BD8 00144B38 39 81 00 6C */ addi r12, r1, 0x6c
/* 80147BDC 00144B3C 90 01 00 0C */ stw r0, 0xc(r1)
/* 80147BE0 00144B40 39 61 00 78 */ addi r11, r1, 0x78
/* 80147BE4 00144B44 A0 02 C5 FC */ lhz r0, lbl_805AE31C@sda21(r2)
/* 80147BE4 00144B44 A0 02 C5 FC */ lhz r0, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 80147BE8 00144B48 7F E3 FB 78 */ mr r3, r31
/* 80147BEC 00144B4C 90 81 00 10 */ stw r4, 0x10(r1)
/* 80147BF0 00144B50 7E E5 BB 78 */ mr r5, r23

View File

@ -5804,7 +5804,7 @@ lbl_80256F04:
/* 80256FB0 00253F10 38 E0 00 01 */ li r7, 1
/* 80256FB4 00253F14 C0 06 00 08 */ lfs f0, 8(r6)
/* 80256FB8 00253F18 D0 A1 00 B0 */ stfs f5, 0xb0(r1)
/* 80256FBC 00253F1C A8 C2 C5 F8 */ lha r6, lbl_805AE318@sda21(r2)
/* 80256FBC 00253F1C A8 C2 C5 F8 */ lha r6, kMaxPriority__11CSfxManager@sda21(r2)
/* 80256FC0 00253F20 D0 A1 00 B4 */ stfs f5, 0xb4(r1)
/* 80256FC4 00253F24 81 02 C6 00 */ lwz r8, kAllAreas__11CSfxManager@sda21(r2)
/* 80256FC8 00253F28 D0 A1 00 B8 */ stfs f5, 0xb8(r1)
@ -7220,7 +7220,7 @@ lbl_80258428:
/* 80258454 002553B4 3C 60 80 5A */ lis r3, sZeroVector__9CVector3f@ha
/* 80258458 002553B8 D0 A1 03 30 */ stfs f5, 0x330(r1)
/* 8025845C 002553BC 39 03 66 A0 */ addi r8, r3, sZeroVector__9CVector3f@l
/* 80258460 002553C0 A8 C2 C5 F8 */ lha r6, lbl_805AE318@sda21(r2)
/* 80258460 002553C0 A8 C2 C5 F8 */ lha r6, kMaxPriority__11CSfxManager@sda21(r2)
/* 80258464 002553C4 D0 A1 03 34 */ stfs f5, 0x334(r1)
/* 80258468 002553C8 38 61 00 A4 */ addi r3, r1, 0xa4
/* 8025846C 002553CC C0 48 00 00 */ lfs f2, 0(r8)
@ -7405,7 +7405,7 @@ lbl_80258578:
/* 80258714 00255674 39 61 01 0C */ addi r11, r1, 0x10c
/* 80258718 00255678 90 01 00 08 */ stw r0, 8(r1)
/* 8025871C 0025567C 7F 63 DB 78 */ mr r3, r27
/* 80258720 00255680 A0 02 C5 FC */ lhz r0, lbl_805AE31C@sda21(r2)
/* 80258720 00255680 A0 02 C5 FC */ lhz r0, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 80258724 00255684 38 BC 0C 14 */ addi r5, r28, 0xc14
/* 80258728 00255688 90 C1 00 0C */ stw r6, 0xc(r1)
/* 8025872C 0025568C 38 E1 03 00 */ addi r7, r1, 0x300
@ -7589,7 +7589,7 @@ lbl_80258828:
/* 802589D0 00255930 39 61 00 CC */ addi r11, r1, 0xcc
/* 802589D4 00255934 90 01 00 08 */ stw r0, 8(r1)
/* 802589D8 00255938 7F 63 DB 78 */ mr r3, r27
/* 802589DC 0025593C A0 02 C5 FC */ lhz r0, lbl_805AE31C@sda21(r2)
/* 802589DC 0025593C A0 02 C5 FC */ lhz r0, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 802589E0 00255940 38 BC 0C 3C */ addi r5, r28, 0xc3c
/* 802589E4 00255944 90 C1 00 0C */ stw r6, 0xc(r1)
/* 802589E8 00255948 38 E1 02 D0 */ addi r7, r1, 0x2d0

View File

@ -409,7 +409,7 @@ lbl_802662C0:
/* 802662F0 00263250 38 61 00 2C */ addi r3, r1, 0x2c
/* 802662F4 00263254 48 0D 77 ED */ bl "internal_dereference__Q24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>Fv"
/* 802662F8 00263258 38 00 00 00 */ li r0, 0
/* 802662FC 0026325C A1 42 C5 FC */ lhz r10, lbl_805AE31C@sda21(r2)
/* 802662FC 0026325C A1 42 C5 FC */ lhz r10, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 80266300 00263260 98 01 00 28 */ stb r0, 0x28(r1)
/* 80266304 00263264 7F A3 EB 78 */ mr r3, r29
/* 80266308 00263268 7F C5 F3 78 */ mr r5, r30

View File

@ -2738,7 +2738,7 @@ lbl_8023DAD4:
/* 8023DAD8 0023AA38 90 7F 01 CC */ stw r3, 0x1cc(r31)
/* 8023DADC 0023AA3C 7F 00 C3 78 */ mr r0, r24
/* 8023DAE0 0023AA40 40 82 00 08 */ bne lbl_8023DAE8
/* 8023DAE4 0023AA44 A0 02 C5 FC */ lhz r0, lbl_805AE31C@sda21(r2)
/* 8023DAE4 0023AA44 A0 02 C5 FC */ lhz r0, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
lbl_8023DAE8:
/* 8023DAE8 0023AA48 54 03 04 3E */ clrlwi r3, r0, 0x10
/* 8023DAEC 0023AA4C 48 0A AE C5 */ bl TranslateSFXID__11CSfxManagerFUs
@ -2746,7 +2746,7 @@ lbl_8023DAE8:
/* 8023DAF4 0023AA54 B0 7F 01 D0 */ sth r3, 0x1d0(r31)
/* 8023DAF8 0023AA58 7F 20 CB 78 */ mr r0, r25
/* 8023DAFC 0023AA5C 40 82 00 08 */ bne lbl_8023DB04
/* 8023DB00 0023AA60 A0 02 C5 FC */ lhz r0, lbl_805AE31C@sda21(r2)
/* 8023DB00 0023AA60 A0 02 C5 FC */ lhz r0, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
lbl_8023DB04:
/* 8023DB04 0023AA64 54 03 04 3E */ clrlwi r3, r0, 0x10
/* 8023DB08 0023AA68 48 0A AE A9 */ bl TranslateSFXID__11CSfxManagerFUs
@ -2754,7 +2754,7 @@ lbl_8023DB04:
/* 8023DB10 0023AA70 B0 7F 01 D2 */ sth r3, 0x1d2(r31)
/* 8023DB14 0023AA74 7F 40 D3 78 */ mr r0, r26
/* 8023DB18 0023AA78 40 82 00 08 */ bne lbl_8023DB20
/* 8023DB1C 0023AA7C A0 02 C5 FC */ lhz r0, lbl_805AE31C@sda21(r2)
/* 8023DB1C 0023AA7C A0 02 C5 FC */ lhz r0, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
lbl_8023DB20:
/* 8023DB20 0023AA80 54 03 04 3E */ clrlwi r3, r0, 0x10
/* 8023DB24 0023AA84 48 0A AE 8D */ bl TranslateSFXID__11CSfxManagerFUs

View File

@ -2813,7 +2813,7 @@ FireProjectile__12CSpacePirateFfR13CStateManager:
/* 8012212C 0011F08C 39 60 00 00 */ li r11, 0
/* 80122130 0011F090 99 61 01 34 */ stb r11, 0x134(r1)
/* 80122134 0011F094 38 01 01 1C */ addi r0, r1, 0x11c
/* 80122138 0011F098 A1 42 C5 FC */ lhz r10, lbl_805AE31C@sda21(r2)
/* 80122138 0011F098 A1 42 C5 FC */ lhz r10, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 8012213C 0011F09C 7F A3 EB 78 */ mr r3, r29
/* 80122140 0011F0A0 D0 01 01 1C */ stfs f0, 0x11c(r1)
/* 80122144 0011F0A4 7F C5 F3 78 */ mr r5, r30
@ -3052,7 +3052,7 @@ lbl_801223B0:
/* 801224D8 0011F438 39 60 00 00 */ li r11, 0
/* 801224DC 0011F43C 99 61 00 94 */ stb r11, 0x94(r1)
/* 801224E0 0011F440 38 01 00 7C */ addi r0, r1, 0x7c
/* 801224E4 0011F444 A1 42 C5 FC */ lhz r10, lbl_805AE31C@sda21(r2)
/* 801224E4 0011F444 A1 42 C5 FC */ lhz r10, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 801224E8 0011F448 7F A3 EB 78 */ mr r3, r29
/* 801224EC 0011F44C D0 01 00 7C */ stfs f0, 0x7c(r1)
/* 801224F0 0011F450 7F C5 F3 78 */ mr r5, r30

View File

@ -7552,7 +7552,7 @@ lbl_801EDEC8:
/* 801EE0A0 001EB000 80 01 00 1C */ lwz r0, 0x1c(r1)
/* 801EE0A4 001EB004 90 0F 05 58 */ stw r0, 0x558(r15)
/* 801EE0A8 001EB008 40 82 00 08 */ bne lbl_801EE0B0
/* 801EE0AC 001EB00C A0 82 C5 FC */ lhz r4, lbl_805AE31C@sda21(r2)
/* 801EE0AC 001EB00C A0 82 C5 FC */ lhz r4, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
lbl_801EE0B0:
/* 801EE0B0 001EB010 54 83 04 3E */ clrlwi r3, r4, 0x10
/* 801EE0B4 001EB014 48 0F A8 FD */ bl TranslateSFXID__11CSfxManagerFUs
@ -7560,7 +7560,7 @@ lbl_801EE0B0:
/* 801EE0BC 001EB01C B0 6F 05 5C */ sth r3, 0x55c(r15)
/* 801EE0C0 001EB020 7F C0 F3 78 */ mr r0, r30
/* 801EE0C4 001EB024 40 82 00 08 */ bne lbl_801EE0CC
/* 801EE0C8 001EB028 A0 02 C5 FC */ lhz r0, lbl_805AE31C@sda21(r2)
/* 801EE0C8 001EB028 A0 02 C5 FC */ lhz r0, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
lbl_801EE0CC:
/* 801EE0CC 001EB02C 54 03 04 3E */ clrlwi r3, r0, 0x10
/* 801EE0D0 001EB030 48 0F A8 E1 */ bl TranslateSFXID__11CSfxManagerFUs

View File

@ -1385,7 +1385,7 @@ lbl_800653E0:
/* 80065418 00062378 40 82 00 64 */ bne lbl_8006547C
/* 8006541C 0006237C 81 7A 08 4C */ lwz r11, 0x84c(r26)
/* 80065420 00062380 38 61 00 08 */ addi r3, r1, 8
/* 80065424 00062384 A9 22 C5 F8 */ lha r9, lbl_805AE318@sda21(r2)
/* 80065424 00062384 A9 22 C5 F8 */ lha r9, kMaxPriority__11CSfxManager@sda21(r2)
/* 80065428 00062388 38 A1 00 3C */ addi r5, r1, 0x3c
/* 8006542C 0006238C C0 4B 00 58 */ lfs f2, 0x58(r11)
/* 80065430 00062390 38 C1 00 30 */ addi r6, r1, 0x30

View File

@ -1095,7 +1095,7 @@ lbl_8003B02C:
/* 8003B050 00037FB0 40 80 00 08 */ bge lbl_8003B058
/* 8003B054 00037FB4 48 00 01 50 */ b lbl_8003B1A4
lbl_8003B058:
/* 8003B058 00037FB8 A9 02 C5 F8 */ lha r8, lbl_805AE318@sda21(r2)
/* 8003B058 00037FB8 A9 02 C5 F8 */ lha r8, kMaxPriority__11CSfxManager@sda21(r2)
/* 8003B05C 00037FBC 38 61 00 0C */ addi r3, r1, 0xc
/* 8003B060 00037FC0 81 42 C6 00 */ lwz r10, kAllAreas__11CSfxManager@sda21(r2)
/* 8003B064 00037FC4 38 80 06 EF */ li r4, 0x6ef
@ -5667,7 +5667,7 @@ lbl_8003F100:
/* 8003F168 0003C0C8 48 00 01 D9 */ bl Reset__10CPlayerGunFR13CStateManager
/* 8003F16C 0003C0CC 57 C0 06 3F */ clrlwi. r0, r30, 0x18
/* 8003F170 0003C0D0 41 82 00 28 */ beq lbl_8003F198
/* 8003F174 0003C0D4 A9 02 C5 F8 */ lha r8, lbl_805AE318@sda21(r2)
/* 8003F174 0003C0D4 A9 02 C5 F8 */ lha r8, kMaxPriority__11CSfxManager@sda21(r2)
/* 8003F178 0003C0D8 38 61 00 08 */ addi r3, r1, 8
/* 8003F17C 0003C0DC 81 42 C6 00 */ lwz r10, kAllAreas__11CSfxManager@sda21(r2)
/* 8003F180 0003C0E0 38 80 06 EE */ li r4, 0x6ee
@ -8432,7 +8432,7 @@ PlayAnim__10CPlayerGunFQ212NWeaponTypes12EGunAnimTypeb:
/* 800418FC 0003E85C 4E 80 04 21 */ bctrl
lbl_80041900:
/* 80041900 0003E860 2C 1E 00 07 */ cmpwi r30, 7
/* 80041904 0003E864 A0 62 C5 FC */ lhz r3, lbl_805AE31C@sda21(r2)
/* 80041904 0003E864 A0 62 C5 FC */ lhz r3, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 80041908 0003E868 41 82 00 80 */ beq lbl_80041988
/* 8004190C 0003E86C 40 80 00 14 */ bge lbl_80041920
/* 80041910 0003E870 2C 1E 00 05 */ cmpwi r30, 5
@ -8471,7 +8471,7 @@ lbl_8004196C:
/* 80041980 0003E8E0 54 00 08 3C */ slwi r0, r0, 1
/* 80041984 0003E8E4 7C 63 02 2E */ lhzx r3, r3, r0
lbl_80041988:
/* 80041988 0003E8E8 A0 02 C5 FC */ lhz r0, lbl_805AE31C@sda21(r2)
/* 80041988 0003E8E8 A0 02 C5 FC */ lhz r0, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 8004198C 0003E8EC 54 64 04 3E */ clrlwi r4, r3, 0x10
/* 80041990 0003E8F0 7C 04 00 40 */ cmplw r4, r0
/* 80041994 0003E8F4 41 82 00 1C */ beq lbl_800419B0
@ -10966,7 +10966,7 @@ __sinit_CPlayerGun_cpp:
/* 80043D6C 00040CCC B0 65 00 1A */ sth r3, 0x1a(r5)
/* 80043D70 00040CD0 90 05 00 1C */ stw r0, 0x1c(r5)
/* 80043D74 00040CD4 48 30 62 39 */ bl White__6CColorFv
/* 80043D78 00040CD8 A1 42 C5 FC */ lhz r10, lbl_805AE31C@sda21(r2)
/* 80043D78 00040CD8 A1 42 C5 FC */ lhz r10, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 80043D7C 00040CDC 39 00 00 07 */ li r8, 7
/* 80043D80 00040CE0 81 23 00 00 */ lwz r9, 0(r3)
/* 80043D84 00040CE4 38 CD A1 C4 */ addi r6, r13, lbl_805A8D84@sda21

View File

@ -3304,7 +3304,7 @@ lbl_800C7EA0:
/* 800C8000 000C4F60 39 81 01 64 */ addi r12, r1, 0x164
/* 800C8004 000C4F64 90 01 00 08 */ stw r0, 8(r1)
/* 800C8008 000C4F68 39 61 00 94 */ addi r11, r1, 0x94
/* 800C800C 000C4F6C A3 22 C5 FC */ lhz r25, lbl_805AE31C@sda21(r2)
/* 800C800C 000C4F6C A3 22 C5 FC */ lhz r25, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 800C8010 000C4F70 FC 40 E0 90 */ fmr f2, f28
/* 800C8014 000C4F74 D0 21 00 0C */ stfs f1, 0xc(r1)
/* 800C8018 000C4F78 FC 60 D8 90 */ fmr f3, f27
@ -3920,7 +3920,7 @@ lbl_800C8844:
/* 800C8928 000C5888 3B 20 00 01 */ li r25, 1
/* 800C892C 000C588C 4B F8 47 B1 */ bl AllocateUniqueId__13CStateManagerFv
/* 800C8930 000C5890 A0 01 00 30 */ lhz r0, 0x30(r1)
/* 800C8934 000C5894 A3 62 C5 FC */ lhz r27, lbl_805AE31C@sda21(r2)
/* 800C8934 000C5894 A3 62 C5 FC */ lhz r27, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 800C8938 000C5898 B0 01 00 34 */ sth r0, 0x34(r1)
/* 800C893C 000C589C 48 28 16 79 */ bl Black__6CColorFv
/* 800C8940 000C58A0 3C 80 80 5A */ lis r4, sZeroVector__9CVector3f@ha
@ -4516,7 +4516,7 @@ lbl_800C910C:
/* 800C920C 000C616C 3B C1 01 5C */ addi r30, r1, 0x15c
/* 800C9210 000C6170 90 01 00 08 */ stw r0, 8(r1)
/* 800C9214 000C6174 39 81 00 8C */ addi r12, r1, 0x8c
/* 800C9218 000C6178 A3 42 C5 FC */ lhz r26, lbl_805AE31C@sda21(r2)
/* 800C9218 000C6178 A3 42 C5 FC */ lhz r26, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 800C921C 000C617C 39 60 FF FF */ li r11, -1
/* 800C9220 000C6180 D0 21 00 0C */ stfs f1, 0xc(r1)
/* 800C9224 000C6184 FC 40 E0 90 */ fmr f2, f28
@ -5535,7 +5535,7 @@ lbl_800CA054:
/* 800CA120 000C7080 3B 40 00 01 */ li r26, 1
/* 800CA124 000C7084 4B F8 2F B9 */ bl AllocateUniqueId__13CStateManagerFv
/* 800CA128 000C7088 A0 01 00 30 */ lhz r0, 0x30(r1)
/* 800CA12C 000C708C A3 62 C5 FC */ lhz r27, lbl_805AE31C@sda21(r2)
/* 800CA12C 000C708C A3 62 C5 FC */ lhz r27, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 800CA130 000C7090 B0 01 00 34 */ sth r0, 0x34(r1)
/* 800CA134 000C7094 48 27 FE 81 */ bl Black__6CColorFv
/* 800CA138 000C7098 90 61 00 08 */ stw r3, 8(r1)
@ -5885,7 +5885,7 @@ lbl_800CA580:
/* 800CA638 000C7598 3B C0 00 01 */ li r30, 1
/* 800CA63C 000C759C 4B F8 2A A1 */ bl AllocateUniqueId__13CStateManagerFv
/* 800CA640 000C75A0 A0 01 00 30 */ lhz r0, 0x30(r1)
/* 800CA644 000C75A4 A3 42 C5 FC */ lhz r26, lbl_805AE31C@sda21(r2)
/* 800CA644 000C75A4 A3 42 C5 FC */ lhz r26, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 800CA648 000C75A8 B0 01 00 34 */ sth r0, 0x34(r1)
/* 800CA64C 000C75AC 48 27 F9 69 */ bl Black__6CColorFv
/* 800CA650 000C75B0 3C 80 80 5A */ lis r4, sZeroVector__9CVector3f@ha
@ -8599,7 +8599,7 @@ lbl_800CCDBC:
/* 800CCE2C 000C9D8C 54 7A 04 3E */ clrlwi r26, r3, 0x10
/* 800CCE30 000C9D90 48 00 00 08 */ b lbl_800CCE38
lbl_800CCE34:
/* 800CCE34 000C9D94 A3 42 C5 FC */ lhz r26, lbl_805AE31C@sda21(r2)
/* 800CCE34 000C9D94 A3 42 C5 FC */ lhz r26, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
lbl_800CCE38:
/* 800CCE38 000C9D98 2C 11 00 0D */ cmpwi r17, 0xd
/* 800CCE3C 000C9D9C 41 80 00 14 */ blt lbl_800CCE50
@ -12320,7 +12320,7 @@ lbl_800D0368:
/* 800D0450 000CD3B0 39 81 00 B0 */ addi r12, r1, 0xb0
/* 800D0454 000CD3B4 90 01 00 08 */ stw r0, 8(r1)
/* 800D0458 000CD3B8 39 60 FF FF */ li r11, -1
/* 800D045C 000CD3BC A3 02 C5 FC */ lhz r24, lbl_805AE31C@sda21(r2)
/* 800D045C 000CD3BC A3 02 C5 FC */ lhz r24, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 800D0460 000CD3C0 FC 20 B0 90 */ fmr f1, f22
/* 800D0464 000CD3C4 D2 E1 00 0C */ stfs f23, 0xc(r1)
/* 800D0468 000CD3C8 FC 40 A8 90 */ fmr f2, f21
@ -15279,7 +15279,7 @@ lbl_800D2E70:
/* 800D2FA8 000CFF08 A0 01 00 30 */ lhz r0, 0x30(r1)
/* 800D2FAC 000CFF0C 3C 60 80 5A */ lis r3, sZeroVector__9CVector3f@ha
/* 800D2FB0 000CFF10 38 83 66 A0 */ addi r4, r3, sZeroVector__9CVector3f@l
/* 800D2FB4 000CFF14 A3 82 C5 FC */ lhz r28, lbl_805AE31C@sda21(r2)
/* 800D2FB4 000CFF14 A3 82 C5 FC */ lhz r28, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 800D2FB8 000CFF18 B0 01 00 34 */ sth r0, 0x34(r1)
/* 800D2FBC 000CFF1C 38 61 00 98 */ addi r3, r1, 0x98
/* 800D2FC0 000CFF20 38 A1 00 60 */ addi r5, r1, 0x60
@ -20115,7 +20115,7 @@ lbl_800D767C:
/* 800D76EC 000D464C 39 41 00 B0 */ addi r10, r1, 0xb0
/* 800D76F0 000D4650 93 E1 00 14 */ stw r31, 0x14(r1)
/* 800D76F4 000D4654 90 01 00 18 */ stw r0, 0x18(r1)
/* 800D76F8 000D4658 4B FE B9 FD */ bl "__ct__13CScriptPickupF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC12CTransform4fRC10CModelDataRC16CActorParametersRC6CAABoxiiiiffffb"
/* 800D76F8 000D4658 4B FE B9 FD */ bl "__ct__13CScriptPickupF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC12CTransform4fRC10CModelDataRC16CActorParametersRC6CAABoxQ212CPlayerState9EItemTypeiiUiffffb"
/* 800D76FC 000D465C 7C 72 1B 78 */ mr r18, r3
lbl_800D7700:
/* 800D7700 000D4660 38 61 02 44 */ addi r3, r1, 0x244

View File

@ -4713,7 +4713,7 @@ lbl_801D2090:
/* 801D23BC 001CF31C 90 8F 01 F8 */ stw r4, 0x1f8(r15)
/* 801D23C0 001CF320 90 8F 02 1C */ stw r4, 0x21c(r15)
/* 801D23C4 001CF324 40 82 00 08 */ bne lbl_801D23CC
/* 801D23C8 001CF328 A0 02 C5 FC */ lhz r0, lbl_805AE31C@sda21(r2)
/* 801D23C8 001CF328 A0 02 C5 FC */ lhz r0, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
lbl_801D23CC:
/* 801D23CC 001CF32C 54 03 04 3E */ clrlwi r3, r0, 0x10
/* 801D23D0 001CF330 48 11 65 E1 */ bl TranslateSFXID__11CSfxManagerFUs

View File

@ -6979,7 +6979,7 @@ lbl_8021BA7C:
/* 8021BAF8 00218A58 48 0C CE B9 */ bl TranslateSFXID__11CSfxManagerFUs
/* 8021BAFC 00218A5C 48 00 00 08 */ b lbl_8021BB04
lbl_8021BB00:
/* 8021BB00 00218A60 A0 62 C5 FC */ lhz r3, lbl_805AE31C@sda21(r2)
/* 8021BB00 00218A60 A0 62 C5 FC */ lhz r3, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
lbl_8021BB04:
/* 8021BB04 00218A64 B0 7D 00 86 */ sth r3, 0x86(r29)
/* 8021BB08 00218A68 7F C3 F3 78 */ mr r3, r30

View File

@ -8,7 +8,7 @@ lbl_803DF4F8:
# ROM: 0x3DC4F8
.4byte 0
.4byte 0
.4byte __dt__13CScriptPickup
.4byte __dt__13CScriptPickupFv
.4byte Accept__13CScriptPickupFR8IVisitor
.4byte PreThink__7CEntityFfR13CStateManager
.4byte Think__13CScriptPickupFfR13CStateManager
@ -851,8 +851,8 @@ lbl_800C3028:
/* 800C3054 000BFFB4 38 21 00 F0 */ addi r1, r1, 0xf0
/* 800C3058 000BFFB8 4E 80 00 20 */ blr
.global __dt__13CScriptPickup
__dt__13CScriptPickup:
.global __dt__13CScriptPickupFv
__dt__13CScriptPickupFv:
/* 800C305C 000BFFBC 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 800C3060 000BFFC0 7C 08 02 A6 */ mflr r0
/* 800C3064 000BFFC4 90 01 00 14 */ stw r0, 0x14(r1)
@ -895,8 +895,8 @@ lbl_800C30D8:
/* 800C30EC 000C004C 38 21 00 10 */ addi r1, r1, 0x10
/* 800C30F0 000C0050 4E 80 00 20 */ blr
.global "__ct__13CScriptPickupF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC12CTransform4fRC10CModelDataRC16CActorParametersRC6CAABoxiiiiffffb"
"__ct__13CScriptPickupF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC12CTransform4fRC10CModelDataRC16CActorParametersRC6CAABoxiiiiffffb":
.global "__ct__13CScriptPickupF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC12CTransform4fRC10CModelDataRC16CActorParametersRC6CAABoxQ212CPlayerState9EItemTypeiiUiffffb"
"__ct__13CScriptPickupF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC12CTransform4fRC10CModelDataRC16CActorParametersRC6CAABoxQ212CPlayerState9EItemTypeiiUiffffb":
/* 800C30F4 000C0054 94 21 FE E0 */ stwu r1, -0x120(r1)
/* 800C30F8 000C0058 7C 08 02 A6 */ mflr r0
/* 800C30FC 000C005C 90 01 01 24 */ stw r0, 0x124(r1)

View File

@ -1625,7 +1625,7 @@ lbl_80150638:
/* 80150660 0014D5C0 54 00 E7 FF */ rlwinm. r0, r0, 0x1c, 0x1f, 0x1f
/* 80150664 0014D5C4 40 82 00 60 */ bne lbl_801506C4
/* 80150668 0014D5C8 A0 98 01 74 */ lhz r4, 0x174(r24)
/* 8015066C 0014D5CC A0 02 C5 FC */ lhz r0, lbl_805AE31C@sda21(r2)
/* 8015066C 0014D5CC A0 02 C5 FC */ lhz r0, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 80150670 0014D5D0 7C 04 00 40 */ cmplw r4, r0
/* 80150674 0014D5D4 41 82 00 40 */ beq lbl_801506B4
/* 80150678 0014D5D8 C0 58 00 60 */ lfs f2, 0x60(r24)
@ -1673,7 +1673,7 @@ lbl_801506F0:
/* 80150710 0014D670 54 00 DF FF */ rlwinm. r0, r0, 0x1b, 0x1f, 0x1f
/* 80150714 0014D674 40 82 00 60 */ bne lbl_80150774
/* 80150718 0014D678 A0 98 01 72 */ lhz r4, 0x172(r24)
/* 8015071C 0014D67C A0 02 C5 FC */ lhz r0, lbl_805AE31C@sda21(r2)
/* 8015071C 0014D67C A0 02 C5 FC */ lhz r0, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 80150720 0014D680 7C 04 00 40 */ cmplw r4, r0
/* 80150724 0014D684 41 82 00 40 */ beq lbl_80150764
/* 80150728 0014D688 C0 58 00 60 */ lfs f2, 0x60(r24)
@ -1727,7 +1727,7 @@ lbl_801507CC:
/* 801507D4 0014D734 98 01 00 28 */ stb r0, 0x28(r1)
/* 801507D8 0014D738 41 82 00 FC */ beq lbl_801508D4
/* 801507DC 0014D73C A0 78 01 70 */ lhz r3, 0x170(r24)
/* 801507E0 0014D740 A0 02 C5 FC */ lhz r0, lbl_805AE31C@sda21(r2)
/* 801507E0 0014D740 A0 02 C5 FC */ lhz r0, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 801507E4 0014D744 7C 03 00 40 */ cmplw r3, r0
/* 801507E8 0014D748 41 82 00 F8 */ beq lbl_801508E0
/* 801507EC 0014D74C C0 02 9D 9C */ lfs f0, lbl_805ABABC@sda21(r2)

View File

@ -459,7 +459,7 @@ lbl_801D6BA8:
/* 801D6F00 001D3E60 93 FD 00 38 */ stw r31, 0x38(r29)
/* 801D6F04 001D3E64 C0 02 AC 48 */ lfs f0, lbl_805AC968@sda21(r2)
/* 801D6F08 001D3E68 90 FD 00 3C */ stw r7, 0x3c(r29)
/* 801D6F0C 001D3E6C A0 02 C5 FC */ lhz r0, lbl_805AE31C@sda21(r2)
/* 801D6F0C 001D3E6C A0 02 C5 FC */ lhz r0, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 801D6F10 001D3E70 88 DD 00 40 */ lbz r6, 0x40(r29)
/* 801D6F14 001D3E74 50 E6 3E 30 */ rlwimi r6, r7, 7, 0x18, 0x18
/* 801D6F18 001D3E78 98 DD 00 40 */ stb r6, 0x40(r29)
@ -523,4 +523,3 @@ lbl_805AC968:
# ROM: 0x3F9208
.4byte 0
.4byte 0

View File

@ -636,7 +636,7 @@ lbl_801B919C:
/* 801B91A8 001B6108 48 0D 18 7D */ bl GetShotDamageInfo__10CGunWeaponCFRC10SShotParamR13CStateManager
/* 801B91AC 001B610C 92 41 00 08 */ stw r18, 8(r1)
/* 801B91B0 001B6110 63 84 08 00 */ ori r4, r28, 0x800
/* 801B91B4 001B6114 A1 62 C5 FC */ lhz r11, lbl_805AE31C@sda21(r2)
/* 801B91B4 001B6114 A1 62 C5 FC */ lhz r11, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 801B91B8 001B6118 38 00 00 00 */ li r0, 0
/* 801B91BC 001B611C 92 61 00 0C */ stw r19, 0xc(r1)
/* 801B91C0 001B6120 7E A3 AB 78 */ mr r3, r21
@ -1491,4 +1491,3 @@ lbl_803D1699:
.byte 0x42, 0x75
.asciz "sterMuzzle"
.balign 4

View File

@ -545,7 +545,7 @@ lbl_80199484:
/* 801994F8 00196458 3A E1 00 50 */ addi r23, r1, 0x50
/* 801994FC 0019645C D0 01 00 58 */ stfs f0, 0x58(r1)
/* 80199500 00196460 3B 01 00 40 */ addi r24, r1, 0x40
/* 80199504 00196464 A3 22 C5 FC */ lhz r25, lbl_805AE31C@sda21(r2)
/* 80199504 00196464 A3 22 C5 FC */ lhz r25, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 80199508 00196468 FF C0 08 90 */ fmr f30, f1
/* 8019950C 0019646C A0 A5 00 00 */ lhz r5, 0(r5)
/* 80199510 00196470 FF E0 10 90 */ fmr f31, f2

View File

@ -1614,7 +1614,7 @@ lbl_80198AE8:
/* 80198B4C 00195AAC A0 0D A3 8C */ lhz r0, kInvalidUniqueId@sda21(r13)
/* 80198B50 00195AB0 9A A1 00 70 */ stb r21, 0x70(r1)
/* 80198B54 00195AB4 B0 01 00 30 */ sth r0, 0x30(r1)
/* 80198B58 00195AB8 A0 02 C5 FC */ lhz r0, lbl_805AE31C@sda21(r2)
/* 80198B58 00195AB8 A0 02 C5 FC */ lhz r0, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 80198B5C 00195ABC D0 01 00 74 */ stfs f0, 0x74(r1)
/* 80198B60 00195AC0 D0 01 00 78 */ stfs f0, 0x78(r1)
/* 80198B64 00195AC4 D0 01 00 7C */ stfs f0, 0x7c(r1)

View File

@ -2162,7 +2162,7 @@ lbl_801BB9CC:
/* 801BBA44 001B89A4 B0 61 00 34 */ sth r3, 0x34(r1)
/* 801BBA48 001B89A8 39 61 00 58 */ addi r11, r1, 0x58
/* 801BBA4C 001B89AC 39 01 00 48 */ addi r8, r1, 0x48
/* 801BBA50 001B89B0 A0 C2 C5 FC */ lhz r6, lbl_805AE31C@sda21(r2)
/* 801BBA50 001B89B0 A0 C2 C5 FC */ lhz r6, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 801BBA54 001B89B4 90 01 00 08 */ stw r0, 8(r1)
/* 801BBA58 001B89B8 38 00 00 00 */ li r0, 0
/* 801BBA5C 001B89BC 7F C3 F3 78 */ mr r3, r30
@ -4402,4 +4402,3 @@ lbl_803D19D7:
.4byte 0x3F3F2900
.asciz "Whole Body"
.balign 4

View File

@ -3776,7 +3776,7 @@ GetTouchBounds__16CNewFlameThrowerCFv:
/* 8026447C 002613DC A0 0D A3 8C */ lhz r0, kInvalidUniqueId@sda21(r13)
/* 80264480 002613E0 9B 01 00 DC */ stb r24, 0xdc(r1)
/* 80264484 002613E4 B0 01 00 30 */ sth r0, 0x30(r1)
/* 80264488 002613E8 A0 02 C5 FC */ lhz r0, lbl_805AE31C@sda21(r2)
/* 80264488 002613E8 A0 02 C5 FC */ lhz r0, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 8026448C 002613EC D0 01 00 E0 */ stfs f0, 0xe0(r1)
/* 80264490 002613F0 D0 01 00 E4 */ stfs f0, 0xe4(r1)
/* 80264494 002613F4 D0 01 00 E8 */ stfs f0, 0xe8(r1)

View File

@ -150,7 +150,7 @@ lbl_8014D98C:
/* 8014DA28 0014A988 4B EF AD 5D */ bl InformListeners__13CStateManagerFRC9CVector3f16EListenNoiseType
/* 8014DA2C 0014A98C 48 00 00 7C */ b lbl_8014DAA8
lbl_8014DA30:
/* 8014DA30 0014A990 A9 02 C5 F8 */ lha r8, lbl_805AE318@sda21(r2)
/* 8014DA30 0014A990 A9 02 C5 F8 */ lha r8, kMaxPriority__11CSfxManager@sda21(r2)
/* 8014DA34 0014A994 38 61 00 1C */ addi r3, r1, 0x1c
/* 8014DA38 0014A998 81 42 C6 00 */ lwz r10, kAllAreas__11CSfxManager@sda21(r2)
/* 8014DA3C 0014A99C 38 80 07 3F */ li r4, 0x73f

View File

@ -414,7 +414,7 @@ Think__21CTargetableProjectileFfR13CStateManager:
/* 8013BDC8 00138D28 39 81 00 80 */ addi r12, r1, 0x80
/* 8013BDCC 00138D2C 90 01 00 0C */ stw r0, 0xc(r1)
/* 8013BDD0 00138D30 39 61 00 8C */ addi r11, r1, 0x8c
/* 8013BDD4 00138D34 A0 02 C5 FC */ lhz r0, lbl_805AE31C@sda21(r2)
/* 8013BDD4 00138D34 A0 02 C5 FC */ lhz r0, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 8013BDD8 00138D38 7F E3 FB 78 */ mr r3, r31
/* 8013BDDC 00138D3C 90 81 00 10 */ stw r4, 0x10(r1)
/* 8013BDE0 00138D40 7F 26 CB 78 */ mr r6, r25

View File

@ -449,7 +449,7 @@ lbl_800E04E4:
/* 800E05CC 000DD52C 3A 21 00 54 */ addi r17, r1, 0x54
/* 800E05D0 000DD530 90 01 00 0C */ stw r0, 0xc(r1)
/* 800E05D4 000DD534 39 81 00 60 */ addi r12, r1, 0x60
/* 800E05D8 000DD538 A1 62 C5 FC */ lhz r11, lbl_805AE31C@sda21(r2)
/* 800E05D8 000DD538 A1 62 C5 FC */ lhz r11, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 800E05DC 000DD53C 38 00 00 00 */ li r0, 0
/* 800E05E0 000DD540 90 61 00 10 */ stw r3, 0x10(r1)
/* 800E05E4 000DD544 7F A3 EB 78 */ mr r3, r29
@ -1095,4 +1095,3 @@ lbl_803CE568:
.asciz "ve2nd_2"
.asciz "Wave2nd_3"
.balign 4

View File

@ -2368,7 +2368,7 @@ sub_801bf6ec:
/* 801BF89C 001BC7FC 88 1F 03 D0 */ lbz r0, 0x3d0(r31)
/* 801BF8A0 001BC800 38 60 00 01 */ li r3, 1
/* 801BF8A4 001BC804 50 60 2E B4 */ rlwimi r0, r3, 5, 0x1a, 0x1a
/* 801BF8A8 001BC808 A9 22 C5 F8 */ lha r9, lbl_805AE318@sda21(r2)
/* 801BF8A8 001BC808 A9 22 C5 F8 */ lha r9, kMaxPriority__11CSfxManager@sda21(r2)
/* 801BF8AC 001BC80C 3C 60 80 5A */ lis r3, sZeroVector__9CVector3f@ha
/* 801BF8B0 001BC810 98 1F 03 D0 */ stb r0, 0x3d0(r31)
/* 801BF8B4 001BC814 38 C3 66 A0 */ addi r6, r3, sZeroVector__9CVector3f@l
@ -2914,7 +2914,7 @@ SetNewTarget__11CWaveBusterF9TUniqueId:
/* 801C009C 001BCFFC 98 03 03 D0 */ stb r0, 0x3d0(r3)
/* 801C00A0 001BD000 3C 80 80 5A */ lis r4, sZeroVector__9CVector3f@ha
/* 801C00A4 001BD004 38 C4 66 A0 */ addi r6, r4, sZeroVector__9CVector3f@l
/* 801C00A8 001BD008 A9 22 C5 F8 */ lha r9, lbl_805AE318@sda21(r2)
/* 801C00A8 001BD008 A9 22 C5 F8 */ lha r9, kMaxPriority__11CSfxManager@sda21(r2)
/* 801C00AC 001BD00C D0 03 03 A0 */ stfs f0, 0x3a0(r3)
/* 801C00B0 001BD010 38 A1 00 10 */ addi r5, r1, 0x10
/* 801C00B4 001BD014 81 42 C6 00 */ lwz r10, kAllAreas__11CSfxManager@sda21(r2)
@ -3014,7 +3014,7 @@ sub_801c0144:
/* 801C01F4 001BD154 D0 01 00 AC */ stfs f0, 0xac(r1)
/* 801C01F8 001BD158 3A C1 00 A8 */ addi r22, r1, 0xa8
/* 801C01FC 001BD15C 39 81 00 98 */ addi r12, r1, 0x98
/* 801C0200 001BD160 A1 62 C5 FC */ lhz r11, lbl_805AE31C@sda21(r2)
/* 801C0200 001BD160 A1 62 C5 FC */ lhz r11, kInternalInvalidSfxId__11CSfxManager@sda21(r2)
/* 801C0204 001BD164 D0 01 00 B0 */ stfs f0, 0xb0(r1)
/* 801C0208 001BD168 7F E3 FB 78 */ mr r3, r31
/* 801C020C 001BD16C 7E E5 BB 78 */ mr r5, r23

View File

@ -95,7 +95,7 @@ play_sfx__12NWeaponTypesFUsbbs:
/* 8028AB04 00287A64 7C E6 3B 78 */ mr r6, r7
/* 8028AB08 00287A68 90 01 00 24 */ stw r0, 0x24(r1)
/* 8028AB0C 00287A6C 38 E0 00 01 */ li r7, 1
/* 8028AB10 00287A70 A9 02 C5 F8 */ lha r8, lbl_805AE318@sda21(r2)
/* 8028AB10 00287A70 A9 02 C5 F8 */ lha r8, kMaxPriority__11CSfxManager@sda21(r2)
/* 8028AB14 00287A74 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 8028AB18 00287A78 7C BF 2B 78 */ mr r31, r5
/* 8028AB1C 00287A7C 81 42 C6 00 */ lwz r10, kAllAreas__11CSfxManager@sda21(r2)

View File

@ -12,9 +12,10 @@ public:
static void UpdateEmitter(CSfxHandle handle, const CVector3f& pos, const CVector3f& dir,
uchar maxVol);
static const s16 kMaxPriority; // 0xFF
static const s16 kMedPriority; // 0x7F
static const int kAllAreas; // 0xFFFF
static const s16 kMaxPriority; // 0xFF
static const s16 kMedPriority; // 0x7F
static const u16 kInternalInvalidSfxId; // 0xFFFF
static const int kAllAreas; // 0xFFFFFFFF
static CSfxHandle AddEmitter(u16 id, const CVector3f& pos, const CVector3f& dir,
bool useAcoustics, bool looped, s16 prio = kMedPriority,
int areaId = kAllAreas);

View File

@ -27,7 +27,7 @@ public:
: x0_blendMode(trans)
, x1_matSetIdx(0)
, x2_flags(kF_DepthCompare | kF_DepthUpdate)
, x4_color(rgba, rgba, rgba, rgba) {}
, x4_color(1.f, 1.f, 1.f, rgba) {}
CModelFlags(ETrans trans, CColor color)
: x0_blendMode(trans)
, x1_matSetIdx(0)
@ -55,23 +55,33 @@ public:
, x2_flags(flags.x2_flags)
, x4_color(color) {}
CModelFlags UseShaderSet(int matSet) { return CModelFlags(*this, false, matSet); }
CModelFlags DontLoadTextures() { return CModelFlags(*this, GetOtherFlags() | kF_NoTextureLock); }
CModelFlags DepthCompareUpdate(bool compare, bool update) {
uint flags = GetOtherFlags();
// CModelFlags(const CModelFlags& other) : x0_blendMode(other.x0_blendMode),
// x1_matSetIdx(other.x1_matSetIdx), x2_flags(other.x2_flags), x4_color(other.x4_color) {}
CModelFlags& operator=(const CModelFlags& other) {
x0_blendMode = other.x0_blendMode;
x1_matSetIdx = other.x1_matSetIdx;
x2_flags = other.x2_flags;
x4_color = other.x4_color;
return *this;
}
CModelFlags UseShaderSet(int matSet) const { return CModelFlags(*this, false, matSet); }
CModelFlags DontLoadTextures() const {
return CModelFlags(*this, GetOtherFlags() | kF_NoTextureLock);
}
CModelFlags DepthCompareUpdate(bool compare, bool update) const {
uint newFlags = 0;
if (compare) {
flags |= kF_DepthCompare;
} else {
flags &= ~kF_DepthCompare;
newFlags |= kF_DepthCompare;
}
if (update) {
flags |= kF_DepthUpdate;
} else {
flags &= ~kF_DepthUpdate;
newFlags |= kF_DepthUpdate;
}
return CModelFlags(*this, flags);
return CModelFlags(*this, (x2_flags & ~(kF_DepthCompare | kF_DepthUpdate)) | newFlags);
}
CModelFlags DepthBackwards() const {
return CModelFlags(*this, GetOtherFlags() | kF_DepthGreater);
}
CModelFlags DepthBackwards() { return CModelFlags(*this, GetOtherFlags() | kF_DepthGreater); }
ETrans GetTrans() const { return static_cast< ETrans >(x0_blendMode); }
int GetShaderSet() const { return x1_matSetIdx; }
@ -79,7 +89,7 @@ public:
CColor GetColor() const { return x4_color; }
static CModelFlags Normal() { return CModelFlags(kT_Opaque, 1.f); }
static CModelFlags AlphaBlended(f32 f);
static CModelFlags AlphaBlended(f32 alpha) { return CModelFlags(kT_Blend, alpha); }
static CModelFlags AlphaBlended(const CColor& color);
static CModelFlags Additive(f32 f);
static CModelFlags Additive(const CColor& color);
@ -87,7 +97,7 @@ public:
static CModelFlags ColorModulate(const CColor& color);
private:
s8 x0_blendMode;
u8 x0_blendMode;
u8 x1_matSetIdx;
u16 x2_flags;
CColor x4_color;

View File

@ -0,0 +1,51 @@
#ifndef _CABSANGLE_HPP
#define _CABSANGLE_HPP
#include "types.h"
#include "Kyoto/Math/CMath.hpp"
class CAbsAngle {
public:
f32 AsDegrees() const { return x0_angle * (180.f / M_PIF); }
f32 AsRadians() const { return x0_angle; }
// ArcCosine__9CAbsAngleFf weak
// -> calls ArcCosineR__5CMathFf
CAbsAngle& operator+=(const CAbsAngle& v) {
x0_angle += v.x0_angle;
return *this;
}
CAbsAngle& operator-=(const CAbsAngle& v) {
x0_angle -= v.x0_angle;
return *this;
}
CAbsAngle& operator*=(f32 v) {
x0_angle *= v;
return *this;
}
CAbsAngle& operator/=(f32 v) {
x0_angle /= v;
return *this;
}
// __apl__9CAbsAngleFRC9CRelAngle
// __ami__9CAbsAngleFRC9CRelAngle
static CAbsAngle FromDegrees(f32 deg) {
return CAbsAngle(CMath::ClampRadians(deg * (M_PIF / 180.f)));
}
static CAbsAngle FromRadians(f32 rad) { return CAbsAngle(CMath::ClampRadians(rad)); }
private:
CAbsAngle(f32 rad) : x0_angle(rad) {}
float x0_angle;
};
CHECK_SIZEOF(CAbsAngle, 0x4)
// __mi__FRC9CAbsAngleRC9CAbsAngle
static inline f32 cosine(const CAbsAngle& angle) { return cos(angle.AsRadians()); }
#endif

View File

@ -43,7 +43,13 @@ public:
// SlowSineR__5CMathFf global
// FastCosR__5CMathFf global
// GetBezierPoint__5CMathFRC9CVector3fRC9CVector3fRC9CVector3fRC9CVector3ff global
// ClampRadians__5CMathFf weak
static f32 ClampRadians(f32 rad) {
f32 value = rad - static_cast<int>(rad * (M_PIF * 2.f)) * (M_PIF * 2.f);
if (value < 0.f) {
value += (M_PIF * 2.f);
}
return value;
}
// ModF__5CMathFff weak
static f32 Deg2Rad(f32 deg) { return Deg2Rev(deg) * (M_PIF * 2.f); }
static f32 Deg2Rev(f32 deg) { return deg * (1.f / 360.f); }

View File

@ -43,9 +43,9 @@ public:
f32 Get21() const { return m2.GetY(); }
f32 Get22() const { return m2.GetZ(); }
f32 Get23() const { return posZ; }
// GetColumn__12CTransform4fCF5EDimX
// GetColumn__12CTransform4fCF5EDimY
// GetColumn__12CTransform4fCF5EDimZ
CVector3f GetColumn(EDimX) const { return CVector3f(m0.GetX(), m1.GetX(), m2.GetX()); }
CVector3f GetColumn(EDimY) const { return CVector3f(m0.GetY(), m1.GetY(), m2.GetY()); }
CVector3f GetColumn(EDimZ) const { return CVector3f(m0.GetZ(), m1.GetZ(), m2.GetZ()); }
// GetColumn__12CTransform4fCFi
// GetCStyleMatrix__12CTransform4fCFv
CTransform4f GetInverse() const;

View File

@ -323,11 +323,13 @@ public:
void SetMuted(bool b) { xe5_26_muted = b; }
void SetRenderParticleDatabaseInside(bool b) { xe6_29_renderParticleDBInside = b; }
void RemoveMaterial(EMaterialTypes, EMaterialTypes, EMaterialTypes, EMaterialTypes, CStateManager&);
void RemoveMaterial(EMaterialTypes, EMaterialTypes, EMaterialTypes, EMaterialTypes,
CStateManager&);
void RemoveMaterial(EMaterialTypes, EMaterialTypes, EMaterialTypes, CStateManager&);
void RemoveMaterial(EMaterialTypes, EMaterialTypes, CStateManager&);
void RemoveMaterial(EMaterialTypes, CStateManager&);
void AddMaterial(EMaterialTypes, EMaterialTypes, EMaterialTypes, EMaterialTypes, EMaterialTypes, CStateManager&);
void AddMaterial(EMaterialTypes, EMaterialTypes, EMaterialTypes, EMaterialTypes, EMaterialTypes,
CStateManager&);
void AddMaterial(EMaterialTypes, EMaterialTypes, EMaterialTypes, EMaterialTypes, CStateManager&);
void AddMaterial(EMaterialTypes, EMaterialTypes, EMaterialTypes, CStateManager&);
void AddMaterial(EMaterialTypes, EMaterialTypes, CStateManager&);

View File

@ -22,7 +22,16 @@ private:
public:
CAnimPlaybackParms(int animA, int animB, float blendWeight, bool animating)
: x0_animA(animA), x4_animB(animB), x8_blendWeight(blendWeight), xc_animating(animating) {}
: x0_animA(animA)
, x4_animB(animB)
, x8_blendWeight(blendWeight)
, xc_animating(animating)
, x10_(0)
, x14_targetPos(nullptr)
, x18_useLocator(false)
, x1c_deltaOrient(nullptr)
, x20_objectXf(nullptr)
, x24_objectScale(nullptr) {}
};
CHECK_SIZEOF(CAnimPlaybackParms, 0x28)

View File

@ -59,9 +59,10 @@ public:
const CTransform4f& xf, const CModelData& mData, const CMaterialList& matList,
const CAABox& aabb, const SMoverData& moverData, const CActorParameters& actParams,
f32 stepUp, f32 stepDown);
~CPhysicsActor() override;
// CActor
~CPhysicsActor() override;
void Render(const CStateManager&) const override;
CVector3f GetOrbitPosition(const CStateManager& mgr) const override;
CVector3f GetAimPosition(const CStateManager& mgr, f32 val) const override;

View File

@ -1,9 +1,27 @@
#ifndef _CFIDGET_HPP
#define _CFIDGET_HPP
#pragma once
enum EFidgetType { kFT_Invalid = -1, kFT_Minor, kFT_Major };
#include "types.h"
// TODO CGunMotion?
namespace SamusGun {
enum EAnimationState {
kAS_Wander,
kAS_Fidget,
kAS_Struck,
kAS_FreeLook,
kAS_ComboFire,
kAS_Idle,
kAS_BasePosition,
};
enum EFidgetType {
kFT_Invalid = -1,
kFT_Minor,
kFT_Major,
};
} // namespace SamusGun
class CStateManager;
class CFidget {
public:
enum EState {
@ -14,12 +32,12 @@ public:
kS_StillMinorFidget,
kS_StillMajorFidget,
kS_StillHolsterBeam,
kS_Loading
kS_Loading,
};
private:
EState x0_state;
EFidgetType x4_type;
SamusGun::EFidgetType x4_type;
int x8_delayTriggerBits;
// 0: panel, 1: panel reset, 2: adjust nozzle, 3: panel buttons
int xc_animSet;
@ -32,16 +50,17 @@ private:
float x28_majorDelayTimer;
float x2c_holsterTimeSinceFire;
float x30_timeUntilHolster;
bool x34_24_loading;
bool x34_24_loading : 1;
public:
EState GetState() const { return x0_state; }
EFidgetType GetType() const { return x4_type; }
SamusGun::EFidgetType GetType() const { return x4_type; }
int GetAnimSet() const { return xc_animSet; }
EState Update(int fireButtonStates, bool bobbing, bool inStrikeCooldown, float dt, CStateManager& mgr);
EState Update(int fireButtonStates, bool bobbing, bool inStrikeCooldown, float dt,
CStateManager& mgr);
void ResetMinor();
void ResetAll();
void DoneLoading() { x34_24_loading = false; }
};
#endif // _CFIDGET_HPP
CHECK_SIZEOF(CFidget, 0x38)

View File

@ -1,15 +1,21 @@
#ifndef _CPLAYERCAMERABOB_HPP_
#define _CPLAYERCAMERABOB_HPP_
#pragma once
#include "types.h"
#include "Kyoto/Math/CTransform4f.hpp"
#include "Kyoto/Math/CVector2f.hpp"
#include "Kyoto/Math/CVector3f.hpp"
#include "Kyoto/Math/CTransform4f.hpp"
#include "rstl/reserved_vector.hpp"
class CStateManager;
class CPlayerCameraBob {
public:
enum ECameraBobType { kCBT_Zero, kCBT_One };
enum ECameraBobType {
kCBT_Zero,
kCBT_One,
};
enum ECameraBobState {
kCBS_Walk,
kCBS_Orbit,
@ -19,63 +25,9 @@ public:
kCBS_TurningNoBob,
kCBS_FreeLookNoBob,
kCBS_GrappleNoBob,
kCBS_Unspecified
kCBS_Unspecified,
};
static CVector2f GetCameraBobExtent() { return CVector2f(kCameraBobExtentX, kCameraBobExtentY); }
static float GetCameraBobPeriod() { return kCameraBobPeriod; }
static float GetOrbitBobScale() { return kOrbitBobScale; }
static float GetMaxOrbitBobScale() { return kMaxOrbitBobScale; }
static float GetSlowSpeedPeriodScale() { return kSlowSpeedPeriodScale; }
private:
static float kCameraBobExtentX;
static float kCameraBobExtentY;
static float kCameraBobPeriod;
static float kOrbitBobScale;
static float kMaxOrbitBobScale;
static float kSlowSpeedPeriodScale;
static float kTargetMagnitudeTrackingRate;
static float kLandingBobSpringConstant;
static float kLandingBobSpringConstant2;
static float kViewWanderRadius;
static float kViewWanderSpeedMin;
static float kViewWanderSpeedMax;
static float kViewWanderRollVariation;
static float kGunBobMagnitude;
static float kHelmetBobMagnitude;
static const float kLandingBobDamping;
static const float kLandingBobDamping2;
static const float kCameraDamping;
ECameraBobType x0_type;
CVector2f x4_vec;
float xc_bobPeriod;
float x10_targetBobMagnitude;
float x14_bobMagnitude;
float x18_bobTimeScale;
float x1c_bobTime;
ECameraBobState x20_oldState;
ECameraBobState x24_curState;
bool x28_applyLandingTrans;
bool x29_hardLand;
CTransform4f x2c_cameraBobTransform;
CVector3f x5c_playerVelocity;
float x68_playerPeakFallVel;
float x6c_landingVelocity;
float x70_landingTranslation;
float x74_camVelocity;
float x78_camTranslation;
CVector3f x7c_wanderPoints[4];
float xb0_wanderPitches[4];
float xc4_wanderTime;
float xc8_viewWanderSpeed;
u32 xcc_wanderIndex;
CTransform4f xd0_viewWanderXf;
float x100_wanderMagnitude;
float x104_targetWanderMagnitude;
public:
CPlayerCameraBob(ECameraBobType type, const CVector2f& vec, float bobPeriod);
CTransform4f GetViewWanderTransform() const;
@ -97,7 +49,58 @@ public:
float CalculateLandingTranslation() const;
CTransform4f CalculateCameraBobTransformation() const;
static void ReadTweaks(CInputStream& in);
static CVector2f GetCameraBobExtent() { return CVector2f(kCameraBobExtentX, kCameraBobExtentY); }
static float GetCameraBobPeriod() { return kCameraBobPeriod; }
static float GetOrbitBobScale() { return kOrbitBobScale; }
static float GetMaxOrbitBobScale() { return kMaxOrbitBobScale; }
static float GetSlowSpeedPeriodScale() { return kSlowSpeedPeriodScale; }
private:
ECameraBobType x0_type;
CVector2f x4_vec;
float xc_bobPeriod;
float x10_targetBobMagnitude;
float x14_bobMagnitude;
float x18_bobTimeScale;
float x1c_bobTime;
ECameraBobState x20_oldState;
ECameraBobState x24_curState;
bool x28_applyLandingTrans;
bool x29_hardLand;
CTransform4f x2c_cameraBobTransform;
CVector3f x5c_playerVelocity;
float x68_playerPeakFallVel;
float x6c_landingVelocity;
float x70_landingTranslation;
float x74_camVelocity;
float x78_camTranslation;
rstl::reserved_vector< CVector3f, 4 > x7c_wanderPoints;
rstl::reserved_vector< float, 4 > xb0_wanderPitches;
float xc4_wanderTime;
float xc8_viewWanderSpeed;
uint xcc_wanderIndex;
CTransform4f xd0_viewWanderXf;
float x100_wanderMagnitude;
float x104_targetWanderMagnitude;
static float kCameraBobExtentX;
static float kCameraBobExtentY;
static float kCameraBobPeriod;
static float kOrbitBobScale;
static float kMaxOrbitBobScale;
static float kSlowSpeedPeriodScale;
static float kTargetMagnitudeTrackingRate;
static float kLandingBobSpringConstant;
static float kLandingBobSpringConstant2;
static float kViewWanderRadius;
static float kViewWanderSpeedMin;
static float kViewWanderSpeedMax;
static float kViewWanderRollVariation;
static float kGunBobMagnitude;
static float kHelmetBobMagnitude;
static const float kLandingBobDamping;
static const float kLandingBobDamping2;
static const float kCameraDamping;
};
#endif // _CPLAYERCAMERABOB_HPP_
CHECK_SIZEOF(CPlayerCameraBob, 0x108)

View File

@ -1,21 +1,25 @@
#ifndef _CPLAYERGUN_HPP
#define _CPLAYERGUN_HPP
#include "types.h"
#include "MetroidPrime/CActorLights.hpp"
#include "MetroidPrime/CModelData.hpp"
#include "MetroidPrime/Player/CFidget.hpp"
#include "MetroidPrime/Player/CPlayerCameraBob.hpp"
#include "MetroidPrime/Player/CPlayerState.hpp"
#include "MetroidPrime/Weapons/CGunWeapon.hpp"
#include "Kyoto/Audio/CSfxHandle.hpp"
#include "Kyoto/Math/CAABox.hpp"
#include "Kyoto/Math/CTransform4f.hpp"
#include "rstl/pair.hpp"
#include "rstl/reserved_vector.hpp"
#include "rstl/single_ptr.hpp"
#include "rstl/vector.hpp"
#include "math.h"
enum EChargeState {
kCS_Normal,
kCS_Charged,
};
class CGunWeapon;
class CGunMotion;
@ -29,27 +33,37 @@ class CPlasmaBeam;
class CPhazonBeam;
class CElementGen;
class CWorldShadow;
class CGenDescription;
class CPlayerGun {
static float skTractorBeamFactor;
public:
enum EMissileMode { kMM_Inactive, kMM_Active };
enum EBWeapon { kBW_Bomb, kBW_PowerBomb };
enum EPhazonBeamState { kPBS_Inactive, kPBS_Entering, kPBS_Exiting, kPBS_Active };
enum EMissileMode {
kMM_Inactive,
kMM_Active,
};
enum EBWeapon {
kBW_Bomb,
kBW_PowerBomb,
};
enum EPhazonBeamState {
kKBS_Inactive,
kKBS_Entering,
kKBS_Exiting,
kKBS_Active,
};
enum EChargePhase {
kGP_NotCharging,
kGP_ChargeRequested,
kGP_AnimAndSfx,
kGP_FxGrowing,
kGP_FxGrown,
kGP_ComboXfer,
kGP_ComboXferDone,
kGP_ComboFire,
kGP_ComboFireDone,
kGP_ChargeCooldown,
kGP_ChargeDone
kCP_NotCharging,
kCP_ChargeRequested,
kCP_AnimAndSfx,
kCP_FxGrowing,
kCP_FxGrown,
kCP_ComboXfer,
kCP_ComboXferDone,
kCP_ComboFire,
kCP_ComboFireDone,
kCP_ChargeCooldown,
kCP_ChargeDone,
};
enum ENextState {
kNS_StatusQuo,
@ -61,21 +75,51 @@ public:
kNS_SetupBeam,
kNS_Seven,
kNS_EnterPhazonBeam,
kNS_ExitPhazonBeam
kNS_ExitPhazonBeam,
};
enum EIdleState {
kIS_NotIdle,
kIS_Wander,
kIS_Idle,
kIS_Three,
kIS_Four,
};
enum EIdleState { kIS_NotIdle, kIS_Wander, kIS_Idle, kIS_Three, kIS_Four };
bool IsCharging() const;
float GetChargeBeamFactor() const;
bool IsCharging() const { return x834_24_charging; }
float GetChargeBeamFactor() const { return x834_24_charging ? x340_chargeBeamFactor : 0.f; }
static float GetTractorBeamFactor() { return skTractorBeamFactor; }
private:
class CGunMorph {
public:
enum EGunState { kGS_InWipeDone, kGS_OutWipeDone, kGS_InWipe, kGS_OutWipe };
enum EMorphEvent { kME_None, kME_InWipeDone, kME_OutWipeDone };
enum EDir { kD_In, kD_Out, kD_Done };
enum EGunState {
kGS_InWipeDone,
kGS_OutWipeDone,
kGS_InWipe,
kGS_OutWipe,
};
enum EMorphEvent {
kME_None,
kME_InWipeDone,
kME_OutWipeDone,
};
enum EDir {
kD_In,
kD_Out,
kD_Done,
};
CGunMorph(float gunTransformTime, float holoHoldTime)
: x4_gunTransformTime(gunTransformTime), x10_holoHoldTime(fabs(holoHoldTime)) {}
EMorphEvent Update(float inY, float outY, float dt);
void StartWipe(EDir dir);
float GetYLerp() const { return x0_yLerp; }
float GetTransitionFactor() const { return x18_transitionFactor; }
EGunState GetGunState() const { return x20_gunState; }
void SetWeaponChanged() { x24_25_weaponChanged = true; }
private:
float x0_yLerp;
@ -89,26 +133,29 @@ private:
EGunState x20_gunState;
bool x24_24_morphing : 1;
bool x24_25_weaponChanged : 1;
public:
CGunMorph(float gunTransformTime, float holoHoldTime)
: x4_gunTransformTime(gunTransformTime), x10_holoHoldTime(fabs(holoHoldTime)) {}
float GetYLerp() const { return x0_yLerp; }
float GetTransitionFactor() const { return x18_transitionFactor; }
EGunState GetGunState() const { return x20_gunState; }
void SetWeaponChanged() { x24_25_weaponChanged = true; }
EMorphEvent Update(float inY, float outY, float dt);
void StartWipe(EDir dir);
};
class CMotionState {
public:
enum EMotionState { kMS_Zero, kMS_One, kMS_LockOn, kMS_CancelLockOn };
enum EFireState { kFS_NotFiring, kFS_StartFire, kFS_Firing };
enum EMotionState {
kMS_Zero,
kMS_One,
kMS_LockOn,
kMS_CancelLockOn,
};
enum EFireState {
kFS_NotFiring,
kFS_StartFire,
kFS_Firing,
};
static void SetExtendDistance(float d) { kGunExtendDistance = d; }
void SetState(EMotionState state) { x20_state = state; }
void Update(bool firing, float dt, CTransform4f& xf, CStateManager& mgr);
private:
static float gGunExtendDistance;
bool x0_24_extendParabola;
bool x0_24_extendParabola : 1;
float x4_extendParabolaDelayTimer;
float x8_fireTime;
float xc_curExtendDist;
@ -119,10 +166,7 @@ private:
EMotionState x20_state;
EFireState x24_fireState;
public:
static void SetExtendDistance(float d) { gGunExtendDistance = d; }
void SetState(EMotionState state) { x20_state = state; }
void Update(bool firing, float dt, CTransform4f& xf, CStateManager& mgr);
static float kGunExtendDistance;
};
CActorLights x0_lights;
@ -130,26 +174,26 @@ private:
CSfxHandle x2e4_invalidSfx;
CSfxHandle x2e8_phazonBeamSfx;
// 0x1: FireOrBomb, 0x2: MissileOrPowerBomb
u32 x2ec_lastFireButtonStates;
u32 x2f0_pressedFireButtonStates;
u32 x2f4_fireButtonStates;
uint x2ec_lastFireButtonStates;
uint x2f0_pressedFireButtonStates;
uint x2f4_fireButtonStates;
// 0x1: beam mode, 0x2: missile mode, 0x4: missile ready, 0x8: morphing, 0x10: combo fire
u32 x2f8_stateFlags;
u32 x2fc_fidgetAnimBits;
u32 x300_remainingMissiles;
u32 x304_;
u32 x308_bombCount;
u32 x30c_rapidFireShots;
uint x2f8_stateFlags;
uint x2fc_fidgetAnimBits;
uint x300_remainingMissiles;
uint x304_;
uint x308_bombCount;
uint x30c_rapidFireShots;
CPlayerState::EBeamId x310_currentBeam;
CPlayerState::EBeamId x314_nextBeam;
u32 x318_comboAmmoIdx;
uint x318_comboAmmoIdx;
EMissileMode x31c_missileMode;
CPlayerState::EBeamId x320_currentAuxBeam;
EIdleState x324_idleState;
float x328_animSfxPitch;
EChargePhase x32c_chargePhase;
EChargeState x330_chargeState;
u32 x334_;
uint x334_;
ENextState x338_nextState;
EPhazonBeamState x33c_phazonBeamState;
float x340_chargeBeamFactor;
@ -191,7 +235,7 @@ private:
TUniqueId x53c_lightId;
rstl::vector< CToken > x540_handAnimTokens;
CPlayerCameraBob x550_camBob;
u32 x658_;
uint x658_;
float x65c_;
float x660_;
float x664_;
@ -216,12 +260,12 @@ private:
rstl::single_ptr< CPlasmaBeam > x758_plasmaBeam;
rstl::single_ptr< CPhazonBeam > x75c_phazonBeam;
rstl::reserved_vector< CGunWeapon*, 4 > x760_selectableBeams;
rstl::single_ptr< CElementGen > x774_holoTransitionGen;
rstl::single_ptr< CElementGen > x77c_comboXferGen;
rstl::auto_ptr< CElementGen > x774_holoTransitionGen;
rstl::auto_ptr< CElementGen > x77c_comboXferGen;
rstl::reserved_vector< rstl::reserved_vector< TLockedToken< CGenDescription >, 2 >, 2 >
x784_bombEffects;
rstl::reserved_vector< TLockedToken< CGenDescription >, 5 > x7c0_auxMuzzleEffects;
rstl::reserved_vector< rstl::single_ptr< CElementGen >, 5 > x800_auxMuzzleGenerators;
rstl::reserved_vector< rstl::auto_ptr< CElementGen >, 5 > x800_auxMuzzleGenerators;
rstl::single_ptr< CWorldShadow > x82c_shadow;
s16 x830_chargeRumbleHandle;
@ -258,8 +302,7 @@ private:
bool x835_27_intoPhazonBeam : 1;
bool x835_28_bombReady : 1;
bool x835_29_powerBombReady : 1;
bool x835_30_inPhazonPool : 1;
bool x835_31_actorAttached : 1;
};
CHECK_SIZEOF(CPlayerGun, 0x838)
#endif // _CPLAYERGUN_HPP

View File

@ -18,25 +18,26 @@ class CScriptPickup : public CPhysicsActor {
float x270_curTime;
float x274_tractorTime;
float x278_delayTimer;
TLockedToken<CGenDescription> x27c_pickupParticleDesc;
rstl::optional_object< TCachedToken< CGenDescription > > x27c_pickupParticleDesc;
bool x28c_24_generated : 1;
bool x28c_25_inTractor : 1;
bool x28c_26_enableTractorTest : 1;
public:
CScriptPickup(TUniqueId uid, const rstl::string& name, const CEntityInfo& info, const CTransform4f& xf,
const CModelData& mData, const CActorParameters& aParams, const CAABox& aabb,
CPlayerState::EItemType itemType, int amount, int capacity, CAssetId pickupEffect, float possibility,
float lifeTime, float fadeInTime, float startDelay, bool active);
CScriptPickup(TUniqueId uid, const rstl::string& name, const CEntityInfo& info,
const CTransform4f& xf, const CModelData& mData, const CActorParameters& aParams,
const CAABox& aabb, CPlayerState::EItemType itemType, int amount, int capacity,
CAssetId pickupEffect, float possibility, float lifeTime, float fadeInTime,
float startDelay, bool active);
~CScriptPickup();
void Think(float, CStateManager&) override;
void Touch(CActor&, CStateManager&) override;
rstl::optional_object<CAABox> GetTouchBounds() const override;
rstl::optional_object< CAABox > GetTouchBounds() const override;
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr) override;
void Render(const CStateManager&) const override;
void Accept(IVisitor& visitor) override;
float GetPossibility() const;
CPlayerState::EItemType GetItem() const;
void SetSpawned();

View File

@ -1,6 +1,98 @@
#ifndef _CGUNWEAPON_HPP_
#define _CGUNWEAPON_HPP_
#pragma once
enum EChargeState { kGS_Normal, kGS_Charged };
#include "types.h"
#endif // _CGUNWEAPON_HPP_
#include "MetroidPrime/Player/CPlayerState.hpp"
#include "MetroidPrime/Weapons/WeaponTypes.hpp"
#include "Kyoto/Math/CVector3f.hpp"
#include "Kyoto/TToken.hpp"
#include "Collision/CMaterialList.hpp"
#include "rstl/optional_object.hpp"
#include "rstl/reserved_vector.hpp"
#include "rstl/single_ptr.hpp"
class CModelData;
class CGenDescription;
class CGunController;
class CAnimCharacterSet;
class CWeaponDescription;
class CElementGen;
class CRainSplashGenerator;
class CVelocityInfo {
public:
const CVector3f& GetVelocity(int i) const { return x0_vel[i]; }
bool GetTargetHoming(int i) const { return x1c_targetHoming[i]; }
void Clear() {
x0_vel.clear();
x1c_targetHoming.clear();
x24_trat.clear();
}
private:
rstl::reserved_vector< CVector3f, 2 > x0_vel;
rstl::reserved_vector< bool, 2 > x1c_targetHoming;
rstl::reserved_vector< float, 2 > x24_trat;
};
class CGunWeapon {
public:
// TODO ctor
virtual ~CGunWeapon();
// TODO other virtual methods
enum ESecondaryFxType {
kSFT_None,
kSFT_Charge,
kSFT_ToCombo,
kSFT_CancelCharge,
};
enum EFrozenFxType {
kFFT_None,
kFFT_Frozen,
kFFT_Thawed,
};
private:
CVector3f x4_scale;
rstl::optional_object< CModelData > x10_solidModelData;
rstl::optional_object< CModelData > x60_holoModelData;
rstl::optional_object< CModelData > xb0_suitArmModelData;
rstl::single_ptr< CGunController > x100_gunController;
TToken< CAnimCharacterSet > x104_gunCharacter;
rstl::vector< CToken > x10c_anims;
rstl::vector< CToken > x12c_deps;
TToken< CAnimCharacterSet > x13c_armCharacter;
rstl::reserved_vector< TCachedToken< CWeaponDescription >, 2 > x144_weapons;
TCachedToken< CGenDescription > x160_xferEffect;
rstl::reserved_vector< TCachedToken< CGenDescription >, 2 > x16c_muzzleEffects;
rstl::reserved_vector< TCachedToken< CGenDescription >, 2 > x188_frozenEffects;
rstl::reserved_vector< rstl::single_ptr< CElementGen >, 2 > x1a4_muzzleGenerators;
rstl::single_ptr< CElementGen > x1b8_frozenGenerator;
CRainSplashGenerator* x1bc_rainSplashGenerator;
EWeaponType x1c0_weaponType;
TUniqueId x1c4_playerId;
EMaterialTypes x1c8_playerMaterial;
ESecondaryFxType x1cc_enabledSecondaryEffect;
CVelocityInfo x1d0_velInfo;
CPlayerState::EBeamId x200_beamId;
EFrozenFxType x204_frozenEffect;
uint x208_muzzleEffectIdx;
uint x20c_shaderIdx;
// 0x1: load request, 0x2: muzzle fx, 0x4: projectile data, 0x8: anims, 0x10: everything else
uint x210_loadFlags;
CAssetId x214_ancsId;
bool x218_24 : 1;
bool x218_25_enableCharge : 1;
bool x218_26_loaded : 1;
// Initialize in selected beam's pose, rather than power beam's pose
bool x218_27_subtypeBasePose : 1;
bool x218_28_suitArmLocked : 1;
bool x218_29_drawHologram : 1;
static const int skShootAnim[32];
};
CHECK_SIZEOF(CGunWeapon, 0x218)

View File

@ -91,7 +91,7 @@ CPhysicsState CPhysicsActor::GetPhysicsState() const {
void CPhysicsActor::SetPhysicsState(const CPhysicsState& state) {
SetTranslation(state.GetTranslation());
CQuaternion quat = state.GetOrientationWR();
const CQuaternion& quat = state.GetOrientationWR();
SetTransform(quat.BuildTransform4f(GetTranslation()));
xfc_constantForce = state.GetConstantForceWR();
x108_angularMomentum = state.GetAngularMomentumWR();
@ -187,8 +187,6 @@ void CPhysicsActor::UseCollisionImpulses() {
}
void CPhysicsActor::MoveToWR(const CVector3f& trans, float d) {
float f = (1.f / d);
CVector3f diff = trans - GetTranslation();
xfc_constantForce = f * GetMass() * diff;
xfc_constantForce = (trans - GetTransform().GetTranslation()) * GetMass() * (1.f / d);
ComputeDerivedQuantities();
}

View File

@ -256,13 +256,13 @@ CScriptMazeNode::CScriptMazeNode(TUniqueId uid, const rstl::string& name, const
void CScriptMazeNode::Accept(IVisitor& visitor) { visitor.Visit(*this); }
// static inline TUniqueId GenerateObject(CStateManager& mgr, const TEditorId& eid) {
// bool wasGeneratingObject = mgr.IsGeneratingObject();
// mgr.SetIsGeneratingObject(true);
// TUniqueId objUid = mgr.GenerateObject(eid).second;
// mgr.SetIsGeneratingObject(wasGeneratingObject);
// return objUid;
// }
static inline TUniqueId GenerateObject(CStateManager& mgr, const TEditorId& eid) {
bool wasGeneratingObject = mgr.IsGeneratingObject();
mgr.SetIsGeneratingObject(true);
TUniqueId objUid = mgr.GenerateObject(eid).second;
mgr.SetIsGeneratingObject(wasGeneratingObject);
return objUid;
}
// struct GenerateObjectGuard {
// GenerateObjectGuard(CStateManager& mgr) : mgr(mgr), wasGenerating(mgr.IsGeneratingObject()) {}
@ -274,16 +274,16 @@ void CScriptMazeNode::Accept(IVisitor& visitor) { visitor.Visit(*this); }
// TODO non-matching
// https://decomp.me/scratch/IvHBz
void CScriptMazeNode::GenerateObjects(CStateManager& mgr) {
rstl::vector< SConnection >::iterator conn = ConnectionList().begin();
for (; conn != ConnectionList().end(); ++conn) {
rstl::vector< SConnection >::const_iterator conn = GetConnectionList().begin();
for (; conn != GetConnectionList().end(); ++conn) {
if (conn->x0_state != kSS_MaxReached || conn->x4_msg != kSM_Activate) {
continue;
}
const CEntity* ent = mgr.ObjectById(mgr.GetIdForScript(conn->x8_objId));
const CScriptEffect* scriptEffect = TCastToConstPtr< CScriptEffect >(ent);
const CScriptActor* scriptActor = TCastToConstPtr< CScriptActor >(ent);
const CScriptTrigger* scriptTrigger = TCastToConstPtr< CScriptTrigger >(ent);
CEntity* ent = mgr.ObjectById(mgr.GetIdForScript(conn->x8_objId));
CScriptEffect* scriptEffect = TCastToPtr< CScriptEffect >(ent);
CScriptActor* scriptActor = TCastToPtr< CScriptActor >(ent);
CScriptTrigger* scriptTrigger = TCastToPtr< CScriptTrigger >(ent);
if (!scriptEffect && !scriptActor && !scriptTrigger) {
continue;
}
@ -291,12 +291,12 @@ void CScriptMazeNode::GenerateObjects(CStateManager& mgr) {
continue;
}
// TUniqueId objUid = GenerateObject(mgr, conn->x8_objId);
TUniqueId objUid = GenerateObject(mgr, conn->x8_objId);
// TUniqueId objUid = kInvalidUniqueId;
bool wasGeneratingObject = mgr.IsGeneratingObject();
mgr.SetIsGeneratingObject(true);
TUniqueId objUid = mgr.GenerateObject(conn->x8_objId).second;
mgr.SetIsGeneratingObject(wasGeneratingObject);
// bool wasGeneratingObject = mgr.IsGeneratingObject();
// mgr.SetIsGeneratingObject(true);
// TUniqueId objUid = mgr.GenerateObject(conn->x8_objId).second;
// mgr.SetIsGeneratingObject(wasGeneratingObject);
if (CActor* actor = static_cast< CActor* >(mgr.ObjectById(objUid))) {
mgr.SendScriptMsg(actor, GetUniqueId(), kSM_Activate);

View File

@ -17,8 +17,8 @@
#include "MetroidPrime/HUD/CSamusHud.hpp"
#include "Kyoto/CResFactory.hpp"
#include "Kyoto/Math/CAbsAngle.hpp"
#include "Kyoto/Math/CMath.hpp"
#include "Kyoto/Math/CRelAngle.hpp"
#include "Kyoto/Text/CStringTable.hpp"
#include "rstl/math.hpp"
@ -39,18 +39,22 @@ CScriptPickup::CScriptPickup(TUniqueId uid, const rstl::string& name, const CEnt
, x264_possibility(possibility)
, x268_fadeInTime(fadeInTime)
, x26c_lifeTime(lifeTime)
, x278_delayTimer(startDelay) {
, x270_curTime(0.f)
, x278_delayTimer(startDelay)
, x28c_24_generated(false)
, x28c_25_inTractor(false)
, x28c_26_enableTractorTest(false) {
if (pickupEffect != kInvalidAssetId) {
x27c_pickupParticleDesc = gpSimplePool->GetObj(SObjectTag('PART', pickupEffect));
x27c_pickupParticleDesc->Lock();
}
if (!x64_modelData.null() && x64_modelData->GetAnimationData()) {
x64_modelData->AnimationData()->SetAnimation(CAnimPlaybackParms(0, -1, 1.f, true), false);
if (HasAnimation()) {
AnimationData()->SetAnimation(CAnimPlaybackParms(0, -1, 1.f, true), false);
}
if (x278_delayTimer != 0.f) {
xb4_drawFlags = CModelFlags(CModelFlags::kT_Blend, 0, CModelFlags::kF_DepthCompare,
CColor(1.f, 1.f, 1.f, 0.f));
if (x268_fadeInTime) {
SetModelFlags(CModelFlags::AlphaBlended(0.f).DepthCompareUpdate(true, false));
}
}
@ -69,19 +73,19 @@ void CScriptPickup::Think(float dt, CStateManager& mgr) {
x270_curTime += dt;
if (x28c_25_inTractor && (x26c_lifeTime - x270_curTime) < 2.f) {
x270_curTime = rstl::max_val(x270_curTime - 2.f * dt, x26c_lifeTime - 2.f - FLT_EPSILON);
x270_curTime = rstl::max_val(x26c_lifeTime - 2.f - FLT_EPSILON, x270_curTime - 2.f * dt);
}
CModelFlags drawFlags(CModelFlags::kT_Opaque, CColor(1.f, 1.f, 1.f, 1.f));
CModelFlags drawFlags = CModelFlags::Normal();
if (x268_fadeInTime != 0.f) {
if (x268_fadeInTime) {
if (x270_curTime < x268_fadeInTime) {
drawFlags = CModelFlags(CModelFlags::kT_Blend, 0, CModelFlags::kF_DepthCompare,
CColor(1.f, 1.f, 1.f, x270_curTime / x268_fadeInTime));
drawFlags =
CModelFlags::AlphaBlended(x270_curTime / x268_fadeInTime).DepthCompareUpdate(true, false);
} else {
x268_fadeInTime = 0.f;
}
} else if (x26c_lifeTime != 0.f) {
} else if (x26c_lifeTime) {
float alpha = 1.f;
if (x26c_lifeTime < 2.f) {
alpha = 1.f - (x26c_lifeTime / x270_curTime);
@ -89,13 +93,12 @@ void CScriptPickup::Think(float dt, CStateManager& mgr) {
alpha = (x26c_lifeTime - x270_curTime) * 0.5f;
}
drawFlags = CModelFlags(CModelFlags::kT_Blend, 0, CModelFlags::kF_DepthCompare,
CColor(1.f, 1.f, 1.f, alpha));
drawFlags = CModelFlags::AlphaBlended(alpha).DepthCompareUpdate(true, false);
}
xb4_drawFlags = drawFlags;
SetModelFlags(drawFlags);
if (!x64_modelData.null() && x64_modelData->HasAnimation()) {
if (HasAnimation()) {
SAdvancementDeltas deltas = UpdateAnimation(dt, mgr, true);
MoveToOR(deltas.GetOffsetDelta(), dt);
RotateToOR(deltas.GetOrientationDelta(), dt);
@ -103,30 +106,24 @@ void CScriptPickup::Think(float dt, CStateManager& mgr) {
if (x28c_25_inTractor) {
CVector3f posDelta =
mgr.GetPlayer()->GetTranslation() + (CVector3f::Up() * 2.0) - GetTranslation();
(mgr.GetPlayer()->GetTranslation() + CVector3f::Up()) * 2.0 - GetTranslation();
x274_tractorTime += dt;
posDelta = posDelta.AsNormalized() * (20.f * (0.5f * rstl::min_val(2.f, x274_tractorTime)));
if (x28c_26_enableTractorTest && (mgr.GetPlayer()->GetPlayerGun()->IsCharging()
? mgr.GetPlayer()->GetPlayerGun()->GetChargeBeamFactor()
: 0.f) < CPlayerGun::GetTractorBeamFactor()) {
if (x28c_26_enableTractorTest && mgr.GetPlayer()->GetPlayerGun()->GetChargeBeamFactor() <
CPlayerGun::GetTractorBeamFactor()) {
x28c_26_enableTractorTest = false;
x28c_25_inTractor = false;
posDelta = CVector3f::Zero();
}
SetVelocityWR(posDelta);
} else if (x28c_24_generated) {
const float chargeFactor = mgr.GetPlayer()->GetPlayerGun()->IsCharging()
? mgr.GetPlayer()->GetPlayerGun()->GetChargeBeamFactor()
: 0.f;
if (chargeFactor > CPlayerGun::GetTractorBeamFactor()) {
const CVector3f posDelta =
GetTranslation() - mgr.GetCameraManager()->GetFirstPersonCamera()->GetTranslation();
const float relFov = CRelAngle::FromDegrees(gpTweakGame->GetFirstPersonFOV()).AsRadians();
if (CVector3f::Dot(
mgr.GetCameraManager()->GetFirstPersonCamera()->GetTransform().GetForward(),
posDelta.AsNormalized()) > cos(relFov) &&
if (mgr.GetPlayer()->GetPlayerGun()->GetChargeBeamFactor() >
CPlayerGun::GetTractorBeamFactor()) {
const CFirstPersonCamera* camera = mgr.GetCameraManager()->GetFirstPersonCamera();
CVector3f posDelta = GetTranslation() - camera->GetTranslation();
CAbsAngle fov = CAbsAngle::FromDegrees(gpTweakGame->GetFirstPersonFOV());
if (CVector3f::Dot(camera->GetTransform().GetColumn(kDY), posDelta.AsNormalized()) >
cosine(fov) &&
posDelta.MagSquared() < (30.f * 30.f)) {
x28c_25_inTractor = true;
x28c_26_enableTractorTest = true;
@ -135,7 +132,7 @@ void CScriptPickup::Think(float dt, CStateManager& mgr) {
}
}
if (x26c_lifeTime != 0.f && x270_curTime > x26c_lifeTime) {
if (x26c_lifeTime && x270_curTime > x26c_lifeTime) {
mgr.FreeScriptObject(GetUniqueId());
}
}
@ -201,8 +198,8 @@ void CScriptPickup::Render(const CStateManager& mgr) const override { CPhysicsAc
void CScriptPickup::Accept(IVisitor& visitor) { visitor.Visit(*this); }
float CScriptPickup::GetPossibility() const { return x264_possibility; }
CPlayerState::EItemType CScriptPickup::GetItem() const { return x258_itemType; }
float CScriptPickup::GetPossibility() const { return x264_possibility; }
void CScriptPickup::SetSpawned() { x28c_24_generated = true; }

View File

@ -826,7 +826,7 @@ void CScriptSpecialFunction::ThinkSpinnerController(float dt, CStateManager& mgr
f28 = x138_ - f28; // always 0?
if (close_enough(x138_, 1.f)) {
if (!x1e4_27_sfx3Played) {
if (x174_sfx3 != InvalidSfxId) {
if (x174_sfx3 != CSfxManager::kInternalInvalidSfxId) {
CSfxManager::AddEmitter(x174_sfx3, GetTranslation(), CVector3f::Zero(), true,
false);
}
@ -842,7 +842,7 @@ void CScriptSpecialFunction::ThinkSpinnerController(float dt, CStateManager& mgr
if (close_enough(x138_, 0.f)) {
if (!x1e4_26_sfx2Played) {
if (x172_sfx2 != InvalidSfxId) {
if (x172_sfx2 != CSfxManager::kInternalInvalidSfxId) {
CSfxManager::AddEmitter(x172_sfx2, GetTranslation(), CVector3f::Zero(), true,
false);
}
@ -859,10 +859,10 @@ void CScriptSpecialFunction::ThinkSpinnerController(float dt, CStateManager& mgr
rstl::optional_object< float > unused = x184_.GetAverage();
if (noSfxPlayed) {
if (x170_sfx1 != InvalidSfxId) {
if (x170_sfx1 != CSfxManager::kInternalInvalidSfxId) {
bool b = f28 >= 0.f;
if (noSfxPlayed) {
x184_.AddValue(b ? u8(100) : u8(0x7F));
x184_.AddValue(b ? uchar(100) : uchar(0x7F));
} else {
x184_.AddValue(0.f);
}