Initial CRumbleVoice, various fixes

This commit is contained in:
Phillip Stephens 2022-10-06 05:51:36 -07:00
parent fa1c86c129
commit ed90d87a4b
11 changed files with 73 additions and 90 deletions

View File

@ -200,7 +200,7 @@ Rumble__16CRumbleGeneratorFRC9SAdsrDataf15ERumblePriority7EIOPort:
/* 80369FC0 00366F20 7F 64 DB 78 */ mr r4, r27
/* 80369FC4 00366F24 D0 06 00 D0 */ stfs f0, 0xd0(r6)
/* 80369FC8 00366F28 7F 86 E3 78 */ mr r6, r28
/* 80369FCC 00366F2C 4B FF F8 41 */ bl Activate__12CRumbleVoiceFRC9SAdsrDatasf15ERumblePriority
/* 80369FCC 00366F2C 4B FF F8 41 */ bl Activate__12CRumbleVoiceFRC9SAdsrDataUsf15ERumblePriority
/* 80369FD0 00366F30 48 00 00 08 */ b lbl_80369FD8
lbl_80369FD4:
/* 80369FD4 00366F34 38 60 FF FF */ li r3, -1
@ -395,4 +395,3 @@ lbl_803D8548:
.4byte 0x00000002
.4byte 0x00000002
.4byte 0x00000002

View File

@ -11,8 +11,8 @@ lbl_805A8A60:
.section .text, "ax"
.global CreateRumbleHandle__12CRumbleVoiceFs
CreateRumbleHandle__12CRumbleVoiceFs:
.global CreateRumbleHandle__12CRumbleVoiceFUs
CreateRumbleHandle__12CRumbleVoiceFUs:
/* 80369250 003661B0 88 A3 00 2E */ lbz r5, 0x2e(r3)
/* 80369254 003661B4 38 05 00 01 */ addi r0, r5, 1
/* 80369258 003661B8 98 03 00 2E */ stb r0, 0x2e(r3)
@ -437,8 +437,8 @@ lbl_803697F4:
/* 80369804 00366764 38 21 00 10 */ addi r1, r1, 0x10
/* 80369808 00366768 4E 80 00 20 */ blr
.global Activate__12CRumbleVoiceFRC9SAdsrDatasf15ERumblePriority
Activate__12CRumbleVoiceFRC9SAdsrDatasf15ERumblePriority:
.global Activate__12CRumbleVoiceFRC9SAdsrDataUsf15ERumblePriority
Activate__12CRumbleVoiceFRC9SAdsrDataUsf15ERumblePriority:
/* 8036980C 0036676C 94 21 FF A0 */ stwu r1, -0x60(r1)
/* 80369810 00366770 7C 08 02 A6 */ mflr r0
/* 80369814 00366774 90 01 00 64 */ stw r0, 0x64(r1)
@ -520,7 +520,7 @@ Activate__12CRumbleVoiceFRC9SAdsrDatasf15ERumblePriority:
/* 80369944 003668A4 41 82 00 14 */ beq lbl_80369958
/* 80369948 003668A8 7F 83 E3 78 */ mr r3, r28
/* 8036994C 003668AC 7F C4 F3 78 */ mr r4, r30
/* 80369950 003668B0 4B FF F9 01 */ bl CreateRumbleHandle__12CRumbleVoiceFs
/* 80369950 003668B0 4B FF F9 01 */ bl CreateRumbleHandle__12CRumbleVoiceFUs
/* 80369954 003668B4 48 00 00 08 */ b lbl_8036995C
lbl_80369958:
/* 80369958 003668B8 38 60 FF FF */ li r3, -1
@ -732,4 +732,3 @@ lbl_803D8540:
# ROM: 0x3D5540
.asciz "??(??)"
.balign 4

View File

@ -182,4 +182,3 @@ lbl_805AD350:
# ROM: 0x3F9BF0
.float 1.0
.4byte 0

View File

@ -2802,7 +2802,7 @@ __dt__11CGrappleArmFv:
/* 8011F988 0011C8E8 41 82 02 68 */ beq lbl_8011FBF0
/* 8011F98C 0011C8EC 38 7E 03 A4 */ addi r3, r30, 0x3a4
/* 8011F990 0011C8F0 38 80 FF FF */ li r4, -1
/* 8011F994 0011C8F4 4B F2 35 E5 */ bl "__dt__Q24rstl34single_ptr<20CRainSplashGenerator>"
/* 8011F994 0011C8F4 4B F2 35 E5 */ bl "__dt__Q24rstl34single_ptr<20CRainSplashGenerator>Fv"
/* 8011F998 0011C8F8 34 1E 03 A0 */ addic. r0, r30, 0x3a0
/* 8011F99C 0011C8FC 41 82 00 24 */ beq lbl_8011F9C0
/* 8011F9A0 0011C900 80 7E 03 A0 */ lwz r3, 0x3a0(r30)

View File

@ -13594,7 +13594,7 @@ lbl_800F8FD4:
lbl_800F8FDC:
/* 800F8FDC 000F5F3C 38 7E 1C 1C */ addi r3, r30, 0x1c1c
/* 800F8FE0 000F5F40 38 80 FF FF */ li r4, -1
/* 800F8FE4 000F5F44 4B F4 9F 95 */ bl "__dt__Q24rstl34single_ptr<20CRainSplashGenerator>"
/* 800F8FE4 000F5F44 4B F4 9F 95 */ bl "__dt__Q24rstl34single_ptr<20CRainSplashGenerator>Fv"
/* 800F8FE8 000F5F48 34 1E 1C 18 */ addic. r0, r30, 0x1c18
/* 800F8FEC 000F5F4C 41 82 00 10 */ beq lbl_800F8FFC
/* 800F8FF0 000F5F50 80 7E 1C 18 */ lwz r3, 0x1c18(r30)

View File

@ -2578,7 +2578,6 @@ AcceptScriptMsg__10CPlayerGunF20EScriptObjectMessage9TUniqueIdR13CStateManager:
/* 8003C544 000394A4 7C 04 00 2E */ lwzx r0, r4, r0
/* 8003C548 000394A8 7C 09 03 A6 */ mtctr r0
/* 8003C54C 000394AC 4E 80 04 20 */ bctr
.global lbl_8003C550
lbl_8003C550:
/* 8003C550 000394B0 7F E4 FB 78 */ mr r4, r31
/* 8003C554 000394B4 4B FF F2 85 */ bl CreateGunLight__10CPlayerGunFR13CStateManager
@ -2633,12 +2632,10 @@ lbl_8003C550:
/* 8003C618 00039578 80 7D 06 F0 */ lwz r3, 0x6f0(r29)
/* 8003C61C 0003957C 4B FF 07 61 */ bl SetAnimation__9CAnimDataFRC18CAnimPlaybackParmsb
/* 8003C620 00039580 48 00 03 AC */ b lbl_8003C9CC
.global lbl_8003C624
lbl_8003C624:
/* 8003C624 00039584 7F E4 FB 78 */ mr r4, r31
/* 8003C628 00039588 4B FF F1 5D */ bl DeleteGunLight__10CPlayerGunFR13CStateManager
/* 8003C62C 0003958C 48 00 03 A0 */ b lbl_8003C9CC
.global lbl_8003C630
lbl_8003C630:
/* 8003C630 00039590 7F 23 CB 78 */ mr r3, r25
/* 8003C634 00039594 38 80 00 17 */ li r4, 0x17
@ -2698,7 +2695,6 @@ lbl_8003C6FC:
/* 8003C704 00039664 50 60 26 F6 */ rlwimi r0, r3, 4, 0x1b, 0x1b
/* 8003C708 00039668 98 1D 08 34 */ stb r0, 0x834(r29)
/* 8003C70C 0003966C 48 00 02 C0 */ b lbl_8003C9CC
.global lbl_8003C710
lbl_8003C710:
/* 8003C710 00039670 88 1D 08 34 */ lbz r0, 0x834(r29)
/* 8003C714 00039674 38 60 00 00 */ li r3, 0
@ -2708,7 +2704,6 @@ lbl_8003C710:
/* 8003C724 00039684 50 60 3E 30 */ rlwimi r0, r3, 7, 0x18, 0x18
/* 8003C728 00039688 98 1D 08 35 */ stb r0, 0x835(r29)
/* 8003C72C 0003968C 48 00 02 A0 */ b lbl_8003C9CC
.global lbl_8003C730
lbl_8003C730:
/* 8003C730 00039690 88 1D 08 35 */ lbz r0, 0x835(r29)
/* 8003C734 00039694 38 60 00 01 */ li r3, 1
@ -2726,7 +2721,6 @@ lbl_8003C730:
/* 8003C764 000396C4 50 60 3E 30 */ rlwimi r0, r3, 7, 0x18, 0x18
/* 8003C768 000396C8 98 1D 08 35 */ stb r0, 0x835(r29)
/* 8003C76C 000396CC 48 00 02 60 */ b lbl_8003C9CC
.global lbl_8003C770
lbl_8003C770:
/* 8003C770 000396D0 88 1D 08 35 */ lbz r0, 0x835(r29)
/* 8003C774 000396D4 38 60 00 01 */ li r3, 1
@ -2772,7 +2766,6 @@ lbl_8003C770:
/* 8003C814 00039774 B0 01 00 24 */ sth r0, 0x24(r1)
/* 8003C818 00039778 48 00 76 B9 */ bl SendScriptMsg__13CStateManagerFP7CEntity9TUniqueId20EScriptObjectMessage
/* 8003C81C 0003977C 48 00 01 B0 */ b lbl_8003C9CC
.global lbl_8003C820
lbl_8003C820:
/* 8003C820 00039780 88 1D 08 35 */ lbz r0, 0x835(r29)
/* 8003C824 00039784 38 60 00 00 */ li r3, 0
@ -2782,7 +2775,6 @@ lbl_8003C820:
/* 8003C834 00039794 50 60 3E 30 */ rlwimi r0, r3, 7, 0x18, 0x18
/* 8003C838 00039798 98 1D 08 35 */ stb r0, 0x835(r29)
/* 8003C83C 0003979C 48 00 01 90 */ b lbl_8003C9CC
.global lbl_8003C840
lbl_8003C840:
/* 8003C840 000397A0 A0 1E 00 00 */ lhz r0, 0(r30)
/* 8003C844 000397A4 7F E3 FB 78 */ mr r3, r31
@ -2864,7 +2856,6 @@ lbl_8003C948:
/* 8003C968 000398C8 53 40 0F BC */ rlwimi r0, r26, 1, 0x1e, 0x1e
/* 8003C96C 000398CC 98 1D 08 34 */ stb r0, 0x834(r29)
/* 8003C970 000398D0 48 00 00 5C */ b lbl_8003C9CC
.global lbl_8003C974
lbl_8003C974:
/* 8003C974 000398D4 88 1B 07 60 */ lbz r0, 0x760(r27)
/* 8003C978 000398D8 28 00 00 00 */ cmplwi r0, 0
@ -2888,7 +2879,6 @@ lbl_8003C974:
/* 8003C9C0 00039920 88 1D 08 34 */ lbz r0, 0x834(r29)
/* 8003C9C4 00039924 50 60 0F BC */ rlwimi r0, r3, 1, 0x1e, 0x1e
/* 8003C9C8 00039928 98 1D 08 34 */ stb r0, 0x834(r29)
.global lbl_8003C9CC
lbl_8003C9CC:
/* 8003C9CC 0003992C A0 1E 00 00 */ lhz r0, 0(r30)
/* 8003C9D0 00039930 7F 84 E3 78 */ mr r4, r28
@ -5885,7 +5875,6 @@ UpdateChargeState__10CPlayerGunFfR13CStateManager:
/* 8003F47C 0003C3DC 7C 05 00 2E */ lwzx r0, r5, r0
/* 8003F480 0003C3E0 7C 09 03 A6 */ mtctr r0
/* 8003F484 0003C3E4 4E 80 04 20 */ bctr
.global lbl_8003F488
lbl_8003F488:
/* 8003F488 0003C3E8 C0 02 84 6C */ lfs f0, lbl_805AA18C@sda21(r2)
/* 8003F48C 0003C3EC 38 A0 00 00 */ li r5, 0
@ -5901,7 +5890,6 @@ lbl_8003F488:
/* 8003F4B4 0003C414 98 7E 08 34 */ stb r3, 0x834(r30)
/* 8003F4B8 0003C418 90 1E 03 2C */ stw r0, 0x32c(r30)
/* 8003F4BC 0003C41C 48 00 02 70 */ b lbl_8003F72C
.global lbl_8003F4C0
lbl_8003F4C0:
/* 8003F4C0 0003C420 88 9E 08 32 */ lbz r4, 0x832(r30)
/* 8003F4C4 0003C424 54 80 E7 FE */ rlwinm r0, r4, 0x1c, 0x1f, 0x1f
@ -5985,7 +5973,6 @@ lbl_8003F58C:
/* 8003F5EC 0003C54C 38 A0 00 01 */ li r5, 1
/* 8003F5F0 0003C550 48 00 22 D5 */ bl PlayAnim__10CPlayerGunFQ212NWeaponTypes12EGunAnimTypeb
/* 8003F5F4 0003C554 48 00 01 38 */ b lbl_8003F72C
.global lbl_8003F5F8
lbl_8003F5F8:
/* 8003F5F8 0003C558 C0 3E 03 40 */ lfs f1, 0x340(r30)
/* 8003F5FC 0003C55C C0 02 84 7C */ lfs f0, lbl_805AA19C@sda21(r2)
@ -5995,7 +5982,6 @@ lbl_8003F5F8:
/* 8003F60C 0003C56C 38 00 00 04 */ li r0, 4
/* 8003F610 0003C570 90 1E 03 2C */ stw r0, 0x32c(r30)
/* 8003F614 0003C574 48 00 01 18 */ b lbl_8003F72C
.global lbl_8003F618
lbl_8003F618:
/* 8003F618 0003C578 C0 3E 03 44 */ lfs f1, 0x344(r30)
/* 8003F61C 0003C57C C0 02 84 7C */ lfs f0, lbl_805AA19C@sda21(r2)
@ -6009,14 +5995,12 @@ lbl_8003F618:
/* 8003F63C 0003C59C 50 60 36 72 */ rlwimi r0, r3, 6, 0x19, 0x19
/* 8003F640 0003C5A0 98 1E 08 32 */ stb r0, 0x832(r30)
/* 8003F644 0003C5A4 48 00 00 E8 */ b lbl_8003F72C
.global lbl_8003F648
lbl_8003F648:
/* 8003F648 0003C5A8 38 00 00 07 */ li r0, 7
/* 8003F64C 0003C5AC C0 02 84 6C */ lfs f0, lbl_805AA18C@sda21(r2)
/* 8003F650 0003C5B0 90 1E 03 2C */ stw r0, 0x32c(r30)
/* 8003F654 0003C5B4 D0 1E 03 48 */ stfs f0, 0x348(r30)
/* 8003F658 0003C5B8 48 00 00 D4 */ b lbl_8003F72C
.global lbl_8003F65C
lbl_8003F65C:
/* 8003F65C 0003C5BC 80 7E 07 40 */ lwz r3, 0x740(r30)
/* 8003F660 0003C5C0 7F E5 FB 78 */ mr r5, r31
@ -6040,7 +6024,6 @@ lbl_8003F65C:
/* 8003F6A8 0003C608 98 7E 08 33 */ stb r3, 0x833(r30)
/* 8003F6AC 0003C60C 90 1E 03 2C */ stw r0, 0x32c(r30)
/* 8003F6B0 0003C610 48 00 00 7C */ b lbl_8003F72C
.global lbl_8003F6B4
lbl_8003F6B4:
/* 8003F6B4 0003C614 80 1E 02 F8 */ lwz r0, 0x2f8(r30)
/* 8003F6B8 0003C618 54 00 06 F6 */ rlwinm r0, r0, 0, 0x1b, 0x1b
@ -6067,7 +6050,6 @@ lbl_8003F700:
/* 8003F708 0003C668 50 60 3E 30 */ rlwimi r0, r3, 7, 0x18, 0x18
/* 8003F70C 0003C66C 98 1E 08 32 */ stb r0, 0x832(r30)
/* 8003F710 0003C670 48 00 00 1C */ b lbl_8003F72C
.global lbl_8003F714
lbl_8003F714:
/* 8003F714 0003C674 38 A0 00 00 */ li r5, 0
/* 8003F718 0003C678 4B FF FA C5 */ bl ResetCharge__10CPlayerGunFR13CStateManagerb
@ -6075,7 +6057,6 @@ lbl_8003F714:
/* 8003F720 0003C680 7F E4 FB 78 */ mr r4, r31
/* 8003F724 0003C684 38 A0 00 00 */ li r5, 0
/* 8003F728 0003C688 4B FF FC 19 */ bl Reset__10CPlayerGunFR13CStateManager
.global lbl_8003F72C
lbl_8003F72C:
/* 8003F72C 0003C68C 80 1E 02 E0 */ lwz r0, 0x2e0(r30)
/* 8003F730 0003C690 28 00 00 00 */ cmplwi r0, 0
@ -7559,7 +7540,6 @@ lbl_80040C2C:
/* 80040C48 0003DBA8 7C 03 00 2E */ lwzx r0, r3, r0
/* 80040C4C 0003DBAC 7C 09 03 A6 */ mtctr r0
/* 80040C50 0003DBB0 4E 80 04 20 */ bctr
.global lbl_80040C54
lbl_80040C54:
/* 80040C54 0003DBB4 80 7C 02 F8 */ lwz r3, 0x2f8(r28)
/* 80040C58 0003DBB8 38 00 00 01 */ li r0, 1
@ -7571,7 +7551,6 @@ lbl_80040C54:
/* 80040C70 0003DBD0 90 1C 03 18 */ stw r0, 0x318(r28)
/* 80040C74 0003DBD4 90 1C 03 1C */ stw r0, 0x31c(r28)
/* 80040C78 0003DBD8 48 00 01 98 */ b lbl_80040E10
.global lbl_80040C7C
lbl_80040C7C:
/* 80040C7C 0003DBDC 80 1C 02 F8 */ lwz r0, 0x2f8(r28)
/* 80040C80 0003DBE0 54 00 07 38 */ rlwinm r0, r0, 0, 0x1c, 0x1c
@ -7593,7 +7572,6 @@ lbl_80040CA8:
/* 80040CBC 0003DC1C C0 03 00 00 */ lfs f0, 0(r3)
/* 80040CC0 0003DC20 D0 1C 03 90 */ stfs f0, 0x390(r28)
/* 80040CC4 0003DC24 48 00 01 4C */ b lbl_80040E10
.global lbl_80040CC8
lbl_80040CC8:
/* 80040CC8 0003DC28 7F 83 E3 78 */ mr r3, r28
/* 80040CCC 0003DC2C 38 80 00 08 */ li r4, 8
@ -7603,20 +7581,17 @@ lbl_80040CC8:
/* 80040CDC 0003DC3C 3B 00 00 00 */ li r24, 0
/* 80040CE0 0003DC40 90 1C 03 38 */ stw r0, 0x338(r28)
/* 80040CE4 0003DC44 48 00 01 2C */ b lbl_80040E10
.global lbl_80040CE8
lbl_80040CE8:
/* 80040CE8 0003DC48 80 1C 02 F8 */ lwz r0, 0x2f8(r28)
/* 80040CEC 0003DC4C 60 00 00 04 */ ori r0, r0, 4
/* 80040CF0 0003DC50 90 1C 02 F8 */ stw r0, 0x2f8(r28)
/* 80040CF4 0003DC54 48 00 01 1C */ b lbl_80040E10
.global lbl_80040CF8
lbl_80040CF8:
/* 80040CF8 0003DC58 7F 83 E3 78 */ mr r3, r28
/* 80040CFC 0003DC5C 7F E4 FB 78 */ mr r4, r31
/* 80040D00 0003DC60 7F A5 EB 78 */ mr r5, r29
/* 80040D04 0003DC64 4B FF E2 95 */ bl ChangeWeapon__10CPlayerGunFRC12CPlayerStateR13CStateManager
/* 80040D08 0003DC68 48 00 01 08 */ b lbl_80040E10
.global lbl_80040D0C
lbl_80040D0C:
/* 80040D0C 0003DC6C 80 7C 07 2C */ lwz r3, 0x72c(r28)
/* 80040D10 0003DC70 48 17 BF 85 */ bl GetWeaponInfo__10CGunWeaponCFv
@ -7641,7 +7616,6 @@ lbl_80040D54:
/* 80040D58 0003DCB8 90 1C 03 18 */ stw r0, 0x318(r28)
/* 80040D5C 0003DCBC 90 1C 03 1C */ stw r0, 0x31c(r28)
/* 80040D60 0003DCC0 48 00 00 B0 */ b lbl_80040E10
.global lbl_80040D64
lbl_80040D64:
/* 80040D64 0003DCC4 80 7C 07 5C */ lwz r3, 0x75c(r28)
/* 80040D68 0003DCC8 81 83 00 00 */ lwz r12, 0(r3)
@ -7665,7 +7639,6 @@ lbl_80040D64:
/* 80040DB0 0003DD10 38 00 00 01 */ li r0, 1
/* 80040DB4 0003DD14 90 1C 03 3C */ stw r0, 0x33c(r28)
/* 80040DB8 0003DD18 48 00 00 58 */ b lbl_80040E10
.global lbl_80040DBC
lbl_80040DBC:
/* 80040DBC 0003DD1C 80 7C 07 38 */ lwz r3, 0x738(r28)
/* 80040DC0 0003DD20 81 83 00 00 */ lwz r12, 0(r3)
@ -7688,7 +7661,6 @@ lbl_80040DBC:
/* 80040E04 0003DD64 4E 80 04 21 */ bctrl
/* 80040E08 0003DD68 38 00 00 02 */ li r0, 2
/* 80040E0C 0003DD6C 90 1C 03 3C */ stw r0, 0x33c(r28)
.global lbl_80040E10
lbl_80040E10:
/* 80040E10 0003DD70 57 00 06 3F */ clrlwi. r0, r24, 0x18
/* 80040E14 0003DD74 41 82 00 0C */ beq lbl_80040E20
@ -9787,10 +9759,10 @@ lbl_80042C3C:
lbl_80042C64:
/* 80042C64 0003FBC4 38 7E 07 48 */ addi r3, r30, 0x748
/* 80042C68 0003FBC8 38 80 FF FF */ li r4, -1
/* 80042C6C 0003FBCC 48 00 03 0D */ bl "__dt__Q24rstl34single_ptr<20CRainSplashGenerator>"
/* 80042C6C 0003FBCC 48 00 03 0D */ bl "__dt__Q24rstl34single_ptr<20CRainSplashGenerator>Fv"
/* 80042C70 0003FBD0 38 7E 07 44 */ addi r3, r30, 0x744
/* 80042C74 0003FBD4 38 80 FF FF */ li r4, -1
/* 80042C78 0003FBD8 48 00 01 8D */ bl "__dt__Q24rstl24single_ptr<10CAuxWeapon>"
/* 80042C78 0003FBD8 48 00 01 8D */ bl "__dt__Q24rstl24single_ptr<10CAuxWeapon>Fv"
/* 80042C7C 0003FBDC 34 1E 07 40 */ addic. r0, r30, 0x740
/* 80042C80 0003FBE0 41 82 00 10 */ beq lbl_80042C90
/* 80042C84 0003FBE4 80 7E 07 40 */ lwz r3, 0x740(r30)
@ -9906,8 +9878,8 @@ lbl_80042DE0:
/* 80042DFC 0003FD5C 38 21 00 30 */ addi r1, r1, 0x30
/* 80042E00 0003FD60 4E 80 00 20 */ blr
.global "__dt__Q24rstl24single_ptr<10CAuxWeapon>"
"__dt__Q24rstl24single_ptr<10CAuxWeapon>":
.global "__dt__Q24rstl24single_ptr<10CAuxWeapon>Fv"
"__dt__Q24rstl24single_ptr<10CAuxWeapon>Fv":
/* 80042E04 0003FD64 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80042E08 0003FD68 7C 08 02 A6 */ mflr r0
/* 80042E0C 0003FD6C 90 01 00 14 */ stw r0, 0x14(r1)
@ -10015,8 +9987,8 @@ lbl_80042F54:
/* 80042F70 0003FED0 38 21 00 20 */ addi r1, r1, 0x20
/* 80042F74 0003FED4 4E 80 00 20 */ blr
.global "__dt__Q24rstl34single_ptr<20CRainSplashGenerator>"
"__dt__Q24rstl34single_ptr<20CRainSplashGenerator>":
.global "__dt__Q24rstl34single_ptr<20CRainSplashGenerator>Fv"
"__dt__Q24rstl34single_ptr<20CRainSplashGenerator>Fv":
/* 80042F78 0003FED8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80042F7C 0003FEDC 7C 08 02 A6 */ mflr r0
/* 80042F80 0003FEE0 90 01 00 14 */ stw r0, 0x14(r1)

View File

@ -32,6 +32,10 @@ enum ERumblePriority {
};
struct SAdsrData {
SAdsrData();
SAdsrData(float attackGain, float autoReleaseDur, float attackDur, float decayDur,
float sustainGain, float releaseDur, bool hasSustain, bool autoRelease);
f32 x0_attackGain;
f32 x4_autoReleaseDur;
f32 x8_attackDur;
@ -52,6 +56,11 @@ struct SAdsrDelta {
kP_Release,
};
SAdsrDelta(EPhase phase, ERumblePriority priority);
SAdsrDelta(EPhase phase);
static SAdsrDelta Stopped();
static SAdsrDelta Start(ERumblePriority priority, bool prePulse);
f32 x0_curIntensity;
f32 x4_attackTime;
f32 x8_decayTime;
@ -67,9 +76,21 @@ class CRumbleVoice {
private:
rstl::vector< SAdsrData > x0_datas;
rstl::vector< SAdsrDelta > x10_deltas;
rstl::reserved_vector< s16, 4 > x20_handleIds;
s16 x2c_usedChannels;
rstl::reserved_vector< u16, 4 > x20_handleIds;
u16 x2c_usedChannels;
u8 x2e_lastId;
CRumbleVoice();
s16 Activate(const SAdsrData& data, u16 idx, float gain, ERumblePriority prio);
void Deactivate(s16 id, bool b1);
void HardReset();
bool UpdateChannel(SAdsrDelta& delta, const SAdsrData& data, float dt);
bool Update(float dt);
uint GetFreeChannel() const;
float GetIntensity() const;
bool OwnsSustained(s16 id) const;
s16 CreateRumbleHandle(u16 idx);
};
#endif

View File

@ -1,39 +0,0 @@
#ifndef __RUMBLEADSR_HPP__
#define __RUMBLEADSR_HPP__
enum ERumblePriority { kPriority_Zero, kPriority_One, kPriority_Two, kPriority_Three };
struct SAdsrDelta {
enum EPhase { kP_Stop, kP_PrePulse, kP_Attack, kP_Decay, kP_Sustain, kP_Release };
static SAdsrDelta Start(ERumblePriority priority, bool);
static SAdsrDelta Stopped();
SAdsrDelta(EPhase phase);
SAdsrDelta(EPhase phase, ERumblePriority priority);
float x0_curIntensity;
float x4_attackTime;
float x8_decayTime;
float xc_releaseTime;
float x10_autoReleaseTime;
float x14_attackIntensity;
float x18_sustainIntensity;
ERumblePriority x1c_priority;
EPhase x20_phase;
};
struct SAdsrData {
SAdsrData();
SAdsrData(float, float, float, float, float, float, bool, bool);
float x0_attackGain;
float x4_autoReleaseDur;
float x8_attackDur;
float xc_decayDur;
float x10_sustainGain;
float x14_releaseDur;
bool x18_24_hasSustain : 1;
bool x18_25_autoRelease : 1;
};
#endif // __RUBMLEADSR_HPP__

View File

@ -1,17 +1,49 @@
#ifndef _CRAINSPLASHGENERATOR_HPP
#define _CRAINSPLASHGENERATOR_HPP
#include "rstl/reserved_vector.hpp"
#include "rstl/vector.hpp"
#include "types.h"
class CVector3f;
class CRainSplashGenerator {
struct SSplashLine {
float x0_t;
float x4_xEnd;
float x8_yEnd;
float xc_speed;
float x10_zParabolaHeight;
u8 x14_;
u8 x15_length;
bool x16_active : 1;
SSplashLine();
void Update(float dt, CStateManager& mgr);
void Draw(float alpha, float dt, const CVector3f& pos);
void SetActive() { x16_active = true; }
};
struct SRainSplash {
rstl::reserved_vector< SSplashLine, 4 > x0_lines;
CVector3f x64_pos;
float x70_;
SRainSplash();
void Update(float dt, CStateManager& mgr);
bool IsActive() const;
void Draw(float alpha, float dt, const CVector3f& pos);
void SetPoint(const CVector3f& pos);
};
public:
CRainSplashGenerator(const CVector3f& scale, int maxSplashes, int genRate, float minZ,
float alpha);
~CRainSplashGenerator() {}
private:
u8 x0_pad[0x4c];
rstl::vector< SRainSplash > x0_rainSplashes;
CRandom16 x10_random;
CVector3f x14_scale;
u8 x0_pad[0x2c];
};
CHECK_SIZEOF(CRainSplashGenerator, 0x4c)

View File

@ -41,7 +41,7 @@ inline void uninitialized_copy_n(S src, int n, D dest) {
template < typename D, typename S >
inline void uninitialized_fill_n(D dest, int n, const S& value) {
D cur = dest;
for (; n > 0; --n, ++cur) {
for (size_t i = 0; i < n ; ++i, ++cur) {
construct(&*cur, value);
}
}

View File

@ -1,4 +1,4 @@
#include "Kyoto/Input/RumbleAdsr.hpp"
#include "Kyoto/Input/CRumbleVoice.hpp"
SAdsrDelta SAdsrDelta::Start(ERumblePriority priority, bool prePulse) {
return SAdsrDelta(prePulse ? kP_PrePulse : kP_Attack, priority);
@ -11,7 +11,7 @@ SAdsrDelta::SAdsrDelta(EPhase phase)
, x8_decayTime(0.f)
, xc_releaseTime(0.f)
, x10_autoReleaseTime(0.f)
, x1c_priority(kPriority_Zero)
, x1c_priority(kRP_None)
, x20_phase(phase) {}
SAdsrDelta::SAdsrDelta(EPhase phase, ERumblePriority priority)