From 992cf48c7f5ae78b498197af8795ed9159e37f8b Mon Sep 17 00:00:00 2001 From: Erin Moon Date: Tue, 29 Dec 2020 19:22:18 -0600 Subject: [PATCH] Split and decompile parts of JUTGamePad (#33) * JUTGamePad.o: elaborate classes, split * JUTGamePad::CButton: decompile functions: - clear() - clear(JUTGamePad*) - setRepeat() * elaborate PAD* types in new header * decompile getNumBit() * elaborate JUTGamePad fields * move retyped externs from variables.h to JUTGamePad.h * elaborate JUTGamePadLongPress * JUTGamePad: decompile functions - initList() - init() - clear() - assign() - checkResetCallback() - checkResetSwitch() - clearForReset() - recalibrate() JUTGamePad: decompile * JUTGamePad::CStick::clear(): decompile * JUTGamePad::CRumble: decompile functions - startMotor() - stopMotor() - triggerPatternedRumble() - startPatternedRumble() - stopPatternedRumbleAtThePeriod() - setEnabled() * JUTGamePadLongPress::checkCallback(): decompile * nonmatching: JUTGamePad::CRumble::update() and JUTGamePad::getGamePad * JSUList: allow access to JSUPtrList functions * functions.h: clear out some func decls that are no longer used * add notes in JUTGamePad.cpp * clang-format + add back extern funcs * fix some more extern labels Co-authored-by: Pheenoh --- asm/JFramework/JFWSystem.s | 2 +- asm/JUtility/JUTException.s | 36 +- asm/JUtility/JUTGamePad.s | 1509 +---------------- asm/d/d_vibration.s | 22 +- asm/d/menu/d_menu_option.s | 4 +- asm/f/pc/f_pc_manager.s | 2 +- asm/m/Do/controller/m_Do_controller_pad.s | 16 +- asm/m/Do/m_Do_machine.s | 6 +- include/JSystem/JSupport/JSUList/JSUList.h | 2 +- .../JSystem/JUtility/JUTGamePad/JUTGamePad.h | 151 ++ .../JUtility/JUTGamePad/asm/func_802E06DC.s | 54 + .../JUtility/JUTGamePad/asm/func_802E07B0.s | 46 + .../JUtility/JUTGamePad/asm/func_802E08E4.s | 196 +++ .../JUtility/JUTGamePad/asm/func_802E0CD8.s | 190 +++ .../JUtility/JUTGamePad/asm/func_802E108C.s | 108 ++ .../JUtility/JUTGamePad/asm/func_802E1238.s | 200 +++ .../JUtility/JUTGamePad/asm/func_802E1500.s | 51 + .../JUtility/JUTGamePad/asm/func_802E15B4.s | 9 + .../JUtility/JUTGamePad/asm/func_802E15D8.s | 24 + .../JUtility/JUTGamePad/asm/func_802E1720.s | 105 ++ .../JUtility/JUTGamePad/asm/func_802E199C.s | 18 + include/functions.h | 20 +- include/pad/pad.h | 38 + include/variables.h | 28 +- libs/JSystem/JUtility/JUTGamePad.cpp | 361 +++- obj_files.mk | 1 + 26 files changed, 1644 insertions(+), 1555 deletions(-) create mode 100644 include/JSystem/JUtility/JUTGamePad/JUTGamePad.h create mode 100644 include/JSystem/JUtility/JUTGamePad/asm/func_802E06DC.s create mode 100644 include/JSystem/JUtility/JUTGamePad/asm/func_802E07B0.s create mode 100644 include/JSystem/JUtility/JUTGamePad/asm/func_802E08E4.s create mode 100644 include/JSystem/JUtility/JUTGamePad/asm/func_802E0CD8.s create mode 100644 include/JSystem/JUtility/JUTGamePad/asm/func_802E108C.s create mode 100644 include/JSystem/JUtility/JUTGamePad/asm/func_802E1238.s create mode 100644 include/JSystem/JUtility/JUTGamePad/asm/func_802E1500.s create mode 100644 include/JSystem/JUtility/JUTGamePad/asm/func_802E15B4.s create mode 100644 include/JSystem/JUtility/JUTGamePad/asm/func_802E15D8.s create mode 100644 include/JSystem/JUtility/JUTGamePad/asm/func_802E1720.s create mode 100644 include/JSystem/JUtility/JUTGamePad/asm/func_802E199C.s create mode 100644 include/pad/pad.h diff --git a/asm/JFramework/JFWSystem.s b/asm/JFramework/JFWSystem.s index ace4d617dc9..8f10bc6ced4 100644 --- a/asm/JFramework/JFWSystem.s +++ b/asm/JFramework/JFWSystem.s @@ -68,7 +68,7 @@ lbl_80271D8C: /* 80271DAC 0026ECEC 7F E4 FB 78 */ mr r4, r31 /* 80271DB0 0026ECF0 48 06 CD A9 */ bl JUTGraphFifo lbl_80271DB4: -/* 80271DB4 0026ECF4 48 06 EA E5 */ bl JUTGamePad_NS_init +/* 80271DB4 0026ECF4 48 06 EA E5 */ bl init__10JUTGamePadFv /* 80271DB8 0026ECF8 48 07 24 89 */ bl JUTDirectPrint_NS_start /* 80271DBC 0026ECFC 7C 7E 1B 78 */ mr r30, r3 /* 80271DC0 0026ED00 48 07 2B 9D */ bl JUTAssertion_NS_create diff --git a/asm/JUtility/JUTException.s b/asm/JUtility/JUTException.s index fd1bcc4e933..7ca8a274925 100644 --- a/asm/JUtility/JUTException.s +++ b/asm/JUtility/JUTException.s @@ -1353,17 +1353,17 @@ lbl_802E2F88: /* 802E2FDC 002DFF1C 40 82 03 A4 */ bne lbl_802E3380 /* 802E2FE0 002DFF20 38 61 02 C8 */ addi r3, r1, 0x2c8 /* 802E2FE4 002DFF24 38 80 00 00 */ li r4, 0 -/* 802E2FE8 002DFF28 4B FF D6 F5 */ bl JUTGamePad +/* 802E2FE8 002DFF28 4B FF D6 F5 */ bl __ct__10JUTGamePadFUl /* 802E2FEC 002DFF2C 38 61 02 18 */ addi r3, r1, 0x218 /* 802E2FF0 002DFF30 38 80 00 01 */ li r4, 1 -/* 802E2FF4 002DFF34 4B FF D6 E9 */ bl JUTGamePad +/* 802E2FF4 002DFF34 4B FF D6 E9 */ bl __ct__10JUTGamePadFUl /* 802E2FF8 002DFF38 38 61 01 68 */ addi r3, r1, 0x168 /* 802E2FFC 002DFF3C 38 80 00 02 */ li r4, 2 -/* 802E3000 002DFF40 4B FF D6 DD */ bl JUTGamePad +/* 802E3000 002DFF40 4B FF D6 DD */ bl __ct__10JUTGamePadFUl /* 802E3004 002DFF44 38 61 00 B8 */ addi r3, r1, 0xb8 /* 802E3008 002DFF48 38 80 00 03 */ li r4, 3 -/* 802E300C 002DFF4C 4B FF D6 D1 */ bl JUTGamePad -/* 802E3010 002DFF50 4B FF D8 D5 */ bl JUTGamePad_NS_read +/* 802E300C 002DFF4C 4B FF D6 D1 */ bl __ct__10JUTGamePadFUl +/* 802E3010 002DFF50 4B FF D8 D5 */ bl read__10JUTGamePadFv /* 802E3014 002DFF54 38 60 00 00 */ li r3, 0 /* 802E3018 002DFF58 A8 01 03 44 */ lha r0, 0x344(r1) /* 802E301C 002DFF5C 2C 00 FF FF */ cmpwi r0, -1 @@ -1560,19 +1560,19 @@ lbl_802E32B8: /* 802E32B8 002E01F8 38 61 02 C8 */ addi r3, r1, 0x2c8 /* 802E32BC 002E01FC 7F C6 F3 78 */ mr r6, r30 /* 802E32C0 002E0200 7F 65 DB 78 */ mr r5, r27 -/* 802E32C4 002E0204 4B FF D9 A9 */ bl JUTGamePad_NS_checkResetCallback +/* 802E32C4 002E0204 4B FF D9 A9 */ bl checkResetCallback__10JUTGamePadFx /* 802E32C8 002E0208 38 61 02 18 */ addi r3, r1, 0x218 /* 802E32CC 002E020C 7F 46 D3 78 */ mr r6, r26 /* 802E32D0 002E0210 7F 85 E3 78 */ mr r5, r28 -/* 802E32D4 002E0214 4B FF D9 99 */ bl JUTGamePad_NS_checkResetCallback +/* 802E32D4 002E0214 4B FF D9 99 */ bl checkResetCallback__10JUTGamePadFx /* 802E32D8 002E0218 38 61 01 68 */ addi r3, r1, 0x168 /* 802E32DC 002E021C 7E E6 BB 78 */ mr r6, r23 /* 802E32E0 002E0220 7F A5 EB 78 */ mr r5, r29 -/* 802E32E4 002E0224 4B FF D9 89 */ bl JUTGamePad_NS_checkResetCallback +/* 802E32E4 002E0224 4B FF D9 89 */ bl checkResetCallback__10JUTGamePadFx /* 802E32E8 002E0228 38 61 00 B8 */ addi r3, r1, 0xb8 /* 802E32EC 002E022C 7E C6 B3 78 */ mr r6, r22 /* 802E32F0 002E0230 7F E5 FB 78 */ mr r5, r31 -/* 802E32F4 002E0234 4B FF D9 79 */ bl JUTGamePad_NS_checkResetCallback +/* 802E32F4 002E0234 4B FF D9 79 */ bl checkResetCallback__10JUTGamePadFx /* 802E32F8 002E0238 28 19 00 00 */ cmplwi r25, 0 /* 802E32FC 002E023C 41 82 00 24 */ beq lbl_802E3320 /* 802E3300 002E0240 80 A1 00 D4 */ lwz r5, 0xd4(r1) @@ -1598,23 +1598,23 @@ lbl_802E3348: /* 802E3348 002E0288 3A E0 00 01 */ li r23, 1 /* 802E334C 002E028C 38 61 00 B8 */ addi r3, r1, 0xb8 /* 802E3350 002E0290 38 80 FF FF */ li r4, -1 -/* 802E3354 002E0294 4B FF D4 5D */ bl JUTGamePad_NS_dtor +/* 802E3354 002E0294 4B FF D4 5D */ bl __dt__10JUTGamePadFv /* 802E3358 002E0298 38 61 01 68 */ addi r3, r1, 0x168 /* 802E335C 002E029C 38 80 FF FF */ li r4, -1 -/* 802E3360 002E02A0 4B FF D4 51 */ bl JUTGamePad_NS_dtor +/* 802E3360 002E02A0 4B FF D4 51 */ bl __dt__10JUTGamePadFv /* 802E3364 002E02A4 38 61 02 18 */ addi r3, r1, 0x218 /* 802E3368 002E02A8 38 80 FF FF */ li r4, -1 -/* 802E336C 002E02AC 4B FF D4 45 */ bl JUTGamePad_NS_dtor +/* 802E336C 002E02AC 4B FF D4 45 */ bl __dt__10JUTGamePadFv /* 802E3370 002E02B0 38 61 02 C8 */ addi r3, r1, 0x2c8 /* 802E3374 002E02B4 38 80 FF FF */ li r4, -1 -/* 802E3378 002E02B8 4B FF D4 39 */ bl JUTGamePad_NS_dtor +/* 802E3378 002E02B8 4B FF D4 39 */ bl __dt__10JUTGamePadFv /* 802E337C 002E02BC 48 00 01 28 */ b lbl_802E34A4 lbl_802E3380: /* 802E3380 002E02C0 80 9D 00 88 */ lwz r4, 0x88(r29) /* 802E3384 002E02C4 2C 04 00 00 */ cmpwi r4, 0 /* 802E3388 002E02C8 41 80 00 E4 */ blt lbl_802E346C /* 802E338C 002E02CC 38 61 00 08 */ addi r3, r1, 8 -/* 802E3390 002E02D0 4B FF D3 4D */ bl JUTGamePad +/* 802E3390 002E02D0 4B FF D3 4D */ bl __ct__10JUTGamePadFUl /* 802E3394 002E02D4 3C 60 80 3D */ lis r3, lbl_803CC640@ha /* 802E3398 002E02D8 3B 43 C6 40 */ addi r26, r3, lbl_803CC640@l /* 802E339C 002E02DC 38 60 00 00 */ li r3, 0 @@ -1660,8 +1660,8 @@ lbl_802E3428: /* 802E3428 002E0368 7C C5 33 78 */ mr r5, r6 lbl_802E342C: /* 802E342C 002E036C 38 61 00 08 */ addi r3, r1, 8 -/* 802E3430 002E0370 4B FF D8 3D */ bl JUTGamePad_NS_checkResetCallback -/* 802E3434 002E0374 4B FF D4 B1 */ bl JUTGamePad_NS_read +/* 802E3430 002E0370 4B FF D8 3D */ bl checkResetCallback__10JUTGamePadFx +/* 802E3434 002E0374 4B FF D4 B1 */ bl read__10JUTGamePadFv /* 802E3438 002E0378 28 19 00 00 */ cmplwi r25, 0 /* 802E343C 002E037C 41 82 00 0C */ beq lbl_802E3448 /* 802E3440 002E0380 80 01 00 24 */ lwz r0, 0x24(r1) @@ -1675,12 +1675,12 @@ lbl_802E3458: /* 802E3458 002E0398 3A E0 00 01 */ li r23, 1 /* 802E345C 002E039C 38 61 00 08 */ addi r3, r1, 8 /* 802E3460 002E03A0 38 80 FF FF */ li r4, -1 -/* 802E3464 002E03A4 4B FF D3 4D */ bl JUTGamePad_NS_dtor +/* 802E3464 002E03A4 4B FF D3 4D */ bl __dt__10JUTGamePadFv /* 802E3468 002E03A8 48 00 00 3C */ b lbl_802E34A4 lbl_802E346C: /* 802E346C 002E03AC 28 03 00 00 */ cmplwi r3, 0 /* 802E3470 002E03B0 41 82 00 34 */ beq lbl_802E34A4 -/* 802E3474 002E03B4 4B FF D4 71 */ bl JUTGamePad_NS_read +/* 802E3474 002E03B4 4B FF D4 71 */ bl read__10JUTGamePadFv /* 802E3478 002E03B8 28 19 00 00 */ cmplwi r25, 0 /* 802E347C 002E03BC 41 82 00 10 */ beq lbl_802E348C /* 802E3480 002E03C0 80 7D 00 84 */ lwz r3, 0x84(r29) diff --git a/asm/JUtility/JUTGamePad.s b/asm/JUtility/JUTGamePad.s index c0385a4859b..f68ce289ec0 100644 --- a/asm/JUtility/JUTGamePad.s +++ b/asm/JUtility/JUTGamePad.s @@ -2,1510 +2,7 @@ .section .text, "ax" # 802e06dc - -.global JUTGamePad -JUTGamePad: -/* 802E06DC 002DD61C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802E06E0 002DD620 7C 08 02 A6 */ mflr r0 -/* 802E06E4 002DD624 90 01 00 14 */ stw r0, 0x14(r1) -/* 802E06E8 002DD628 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802E06EC 002DD62C 93 C1 00 08 */ stw r30, 8(r1) -/* 802E06F0 002DD630 7C 7E 1B 78 */ mr r30, r3 -/* 802E06F4 002DD634 7C 9F 23 78 */ mr r31, r4 -/* 802E06F8 002DD638 4B FF 0D 85 */ bl __ct__11JKRDisposerFv -/* 802E06FC 002DD63C 3C 60 80 3D */ lis r3, lbl_803CC610@ha -/* 802E0700 002DD640 38 03 C6 10 */ addi r0, r3, lbl_803CC610@l -/* 802E0704 002DD644 90 1E 00 00 */ stw r0, 0(r30) -/* 802E0708 002DD648 38 7E 00 18 */ addi r3, r30, 0x18 -/* 802E070C 002DD64C 48 00 09 45 */ bl JUTGamePad_NS_CButton_NS_clear -/* 802E0710 002DD650 38 7E 00 48 */ addi r3, r30, 0x48 -/* 802E0714 002DD654 48 00 0B 09 */ bl JUTGamePad_NS_CStick_NS_clear -/* 802E0718 002DD658 38 7E 00 58 */ addi r3, r30, 0x58 -/* 802E071C 002DD65C 48 00 0B 01 */ bl JUTGamePad_NS_CStick_NS_clear -/* 802E0720 002DD660 38 7E 00 68 */ addi r3, r30, 0x68 -/* 802E0724 002DD664 7F C4 F3 78 */ mr r4, r30 -/* 802E0728 002DD668 48 00 0E B1 */ bl JUTGamePad_NS_CRumble_NS_clear_X1_ -/* 802E072C 002DD66C 38 7E 00 80 */ addi r3, r30, 0x80 -/* 802E0730 002DD670 7F C4 F3 78 */ mr r4, r30 -/* 802E0734 002DD674 4B FF B6 C9 */ bl __ct__10JSUPtrLinkFPv -/* 802E0738 002DD678 38 00 00 00 */ li r0, 0 -/* 802E073C 002DD67C 98 1E 00 98 */ stb r0, 0x98(r30) -/* 802E0740 002DD680 B3 FE 00 7C */ sth r31, 0x7c(r30) -/* 802E0744 002DD684 7F C3 F3 78 */ mr r3, r30 -/* 802E0748 002DD688 A8 1E 00 7C */ lha r0, 0x7c(r30) -/* 802E074C 002DD68C 2C 00 00 00 */ cmpwi r0, 0 -/* 802E0750 002DD690 41 80 00 14 */ blt lbl_802E0764 -/* 802E0754 002DD694 38 AD 8F 54 */ addi r5, r13, lbl_804514D4-_SDA_BASE_ -/* 802E0758 002DD698 7C 85 F8 AE */ lbzx r4, r5, r31 -/* 802E075C 002DD69C 38 04 00 01 */ addi r0, r4, 1 -/* 802E0760 002DD6A0 7C 05 F9 AE */ stbx r0, r5, r31 -lbl_802E0764: -/* 802E0764 002DD6A4 48 00 00 F9 */ bl JUTGamePad_NS_initList -/* 802E0768 002DD6A8 3C 60 80 43 */ lis r3, lbl_804343E4@ha -/* 802E076C 002DD6AC 38 63 43 E4 */ addi r3, r3, lbl_804343E4@l -/* 802E0770 002DD6B0 38 9E 00 80 */ addi r4, r30, 0x80 -/* 802E0774 002DD6B4 4B FF B7 D9 */ bl append__10JSUPtrListFP10JSUPtrLink -/* 802E0778 002DD6B8 7F C3 F3 78 */ mr r3, r30 -/* 802E077C 002DD6BC 48 00 05 5D */ bl JUTGamePad_NS_update -/* 802E0780 002DD6C0 38 00 00 00 */ li r0, 0 -/* 802E0784 002DD6C4 90 1E 00 90 */ stw r0, 0x90(r30) -/* 802E0788 002DD6C8 90 1E 00 94 */ stw r0, 0x94(r30) -/* 802E078C 002DD6CC 7F C3 F3 78 */ mr r3, r30 -/* 802E0790 002DD6D0 48 00 01 41 */ bl JUTGamePad_NS_clear -/* 802E0794 002DD6D4 7F C3 F3 78 */ mr r3, r30 -/* 802E0798 002DD6D8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802E079C 002DD6DC 83 C1 00 08 */ lwz r30, 8(r1) -/* 802E07A0 002DD6E0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802E07A4 002DD6E4 7C 08 03 A6 */ mtlr r0 -/* 802E07A8 002DD6E8 38 21 00 10 */ addi r1, r1, 0x10 -/* 802E07AC 002DD6EC 4E 80 00 20 */ blr - -.global JUTGamePad_NS_dtor -JUTGamePad_NS_dtor: -/* 802E07B0 002DD6F0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802E07B4 002DD6F4 7C 08 02 A6 */ mflr r0 -/* 802E07B8 002DD6F8 90 01 00 14 */ stw r0, 0x14(r1) -/* 802E07BC 002DD6FC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802E07C0 002DD700 93 C1 00 08 */ stw r30, 8(r1) -/* 802E07C4 002DD704 7C 7E 1B 79 */ or. r30, r3, r3 -/* 802E07C8 002DD708 7C 9F 23 78 */ mr r31, r4 -/* 802E07CC 002DD70C 41 82 00 74 */ beq lbl_802E0840 -/* 802E07D0 002DD710 3C 60 80 3D */ lis r3, lbl_803CC610@ha -/* 802E07D4 002DD714 38 03 C6 10 */ addi r0, r3, lbl_803CC610@l -/* 802E07D8 002DD718 90 1E 00 00 */ stw r0, 0(r30) -/* 802E07DC 002DD71C A8 BE 00 7C */ lha r5, 0x7c(r30) -/* 802E07E0 002DD720 7C A0 07 35 */ extsh. r0, r5 -/* 802E07E4 002DD724 41 80 00 1C */ blt lbl_802E0800 -/* 802E07E8 002DD728 38 8D 8F 54 */ addi r4, r13, lbl_804514D4-_SDA_BASE_ -/* 802E07EC 002DD72C 7C 64 28 AE */ lbzx r3, r4, r5 -/* 802E07F0 002DD730 38 03 FF FF */ addi r0, r3, -1 -/* 802E07F4 002DD734 7C 04 29 AE */ stbx r0, r4, r5 -/* 802E07F8 002DD738 38 00 FF FF */ li r0, -1 -/* 802E07FC 002DD73C B0 1E 00 7C */ sth r0, 0x7c(r30) -lbl_802E0800: -/* 802E0800 002DD740 3C 60 80 43 */ lis r3, lbl_804343E4@ha -/* 802E0804 002DD744 38 63 43 E4 */ addi r3, r3, lbl_804343E4@l -/* 802E0808 002DD748 38 9E 00 80 */ addi r4, r30, 0x80 -/* 802E080C 002DD74C 4B FF B9 51 */ bl remove__10JSUPtrListFP10JSUPtrLink -/* 802E0810 002DD750 34 1E 00 80 */ addic. r0, r30, 0x80 -/* 802E0814 002DD754 41 82 00 10 */ beq lbl_802E0824 -/* 802E0818 002DD758 38 7E 00 80 */ addi r3, r30, 0x80 -/* 802E081C 002DD75C 38 80 00 00 */ li r4, 0 -/* 802E0820 002DD760 4B FF B5 F5 */ bl __dt__10JSUPtrLinkFv -lbl_802E0824: -/* 802E0824 002DD764 7F C3 F3 78 */ mr r3, r30 -/* 802E0828 002DD768 38 80 00 00 */ li r4, 0 -/* 802E082C 002DD76C 4B FF 0C B9 */ bl __dt__11JKRDisposerFv -/* 802E0830 002DD770 7F E0 07 35 */ extsh. r0, r31 -/* 802E0834 002DD774 40 81 00 0C */ ble lbl_802E0840 -/* 802E0838 002DD778 7F C3 F3 78 */ mr r3, r30 -/* 802E083C 002DD77C 4B FE E5 01 */ bl __dl__FPv -lbl_802E0840: -/* 802E0840 002DD780 7F C3 F3 78 */ mr r3, r30 -/* 802E0844 002DD784 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802E0848 002DD788 83 C1 00 08 */ lwz r30, 8(r1) -/* 802E084C 002DD78C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802E0850 002DD790 7C 08 03 A6 */ mtlr r0 -/* 802E0854 002DD794 38 21 00 10 */ addi r1, r1, 0x10 -/* 802E0858 002DD798 4E 80 00 20 */ blr - -.global JUTGamePad_NS_initList -JUTGamePad_NS_initList: -/* 802E085C 002DD79C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802E0860 002DD7A0 7C 08 02 A6 */ mflr r0 -/* 802E0864 002DD7A4 90 01 00 14 */ stw r0, 0x14(r1) -/* 802E0868 002DD7A8 88 0D 8F 50 */ lbz r0, lbl_804514D0-_SDA_BASE_(r13) -/* 802E086C 002DD7AC 28 00 00 00 */ cmplwi r0, 0 -/* 802E0870 002DD7B0 40 82 00 18 */ bne lbl_802E0888 -/* 802E0874 002DD7B4 3C 60 80 43 */ lis r3, lbl_804343E4@ha -/* 802E0878 002DD7B8 38 63 43 E4 */ addi r3, r3, lbl_804343E4@l -/* 802E087C 002DD7BC 4B FF B6 99 */ bl initiate__10JSUPtrListFv -/* 802E0880 002DD7C0 38 00 00 01 */ li r0, 1 -/* 802E0884 002DD7C4 98 0D 8F 50 */ stb r0, lbl_804514D0-_SDA_BASE_(r13) -lbl_802E0888: -/* 802E0888 002DD7C8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802E088C 002DD7CC 7C 08 03 A6 */ mtlr r0 -/* 802E0890 002DD7D0 38 21 00 10 */ addi r1, r1, 0x10 -/* 802E0894 002DD7D4 4E 80 00 20 */ blr - -.global JUTGamePad_NS_init -JUTGamePad_NS_init: -/* 802E0898 002DD7D8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802E089C 002DD7DC 7C 08 02 A6 */ mflr r0 -/* 802E08A0 002DD7E0 90 01 00 14 */ stw r0, 0x14(r1) -/* 802E08A4 002DD7E4 38 60 00 05 */ li r3, 5 -/* 802E08A8 002DD7E8 48 06 E9 B1 */ bl PADSetSpec -/* 802E08AC 002DD7EC 38 00 00 03 */ li r0, 3 -/* 802E08B0 002DD7F0 90 0D 8F 5C */ stw r0, lbl_804514DC-_SDA_BASE_(r13) -/* 802E08B4 002DD7F4 38 60 00 03 */ li r3, 3 -/* 802E08B8 002DD7F8 48 06 F1 59 */ bl PADSetAnalogMode -/* 802E08BC 002DD7FC 48 06 E4 95 */ bl PADInit -/* 802E08C0 002DD800 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802E08C4 002DD804 7C 08 03 A6 */ mtlr r0 -/* 802E08C8 002DD808 38 21 00 10 */ addi r1, r1, 0x10 -/* 802E08CC 002DD80C 4E 80 00 20 */ blr - -.global JUTGamePad_NS_clear -JUTGamePad_NS_clear: -/* 802E08D0 002DD810 38 00 00 00 */ li r0, 0 -/* 802E08D4 002DD814 98 03 00 98 */ stb r0, 0x98(r3) -/* 802E08D8 002DD818 38 00 00 01 */ li r0, 1 -/* 802E08DC 002DD81C 98 03 00 A8 */ stb r0, 0xa8(r3) -/* 802E08E0 002DD820 4E 80 00 20 */ blr - -.global JUTGamePad_NS_read -JUTGamePad_NS_read: -/* 802E08E4 002DD824 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 802E08E8 002DD828 7C 08 02 A6 */ mflr r0 -/* 802E08EC 002DD82C 90 01 00 44 */ stw r0, 0x44(r1) -/* 802E08F0 002DD830 39 61 00 40 */ addi r11, r1, 0x40 -/* 802E08F4 002DD834 48 08 18 CD */ bl func_803621C0 -/* 802E08F8 002DD838 3C 60 80 43 */ lis r3, lbl_804343D8@ha -/* 802E08FC 002DD83C 3B E3 43 D8 */ addi r31, r3, lbl_804343D8@l -/* 802E0900 002DD840 38 7F 00 18 */ addi r3, r31, 0x18 -/* 802E0904 002DD844 48 06 E5 9D */ bl PADRead -/* 802E0908 002DD848 90 6D 8F 60 */ stw r3, lbl_804514E0-_SDA_BASE_(r13) -/* 802E090C 002DD84C 80 0D 83 5C */ lwz r0, lbl_804508DC-_SDA_BASE_(r13) -/* 802E0910 002DD850 2C 00 00 02 */ cmpwi r0, 2 -/* 802E0914 002DD854 41 82 00 20 */ beq lbl_802E0934 -/* 802E0918 002DD858 40 80 00 24 */ bge lbl_802E093C -/* 802E091C 002DD85C 2C 00 00 01 */ cmpwi r0, 1 -/* 802E0920 002DD860 40 80 00 08 */ bge lbl_802E0928 -/* 802E0924 002DD864 48 00 00 18 */ b lbl_802E093C -lbl_802E0928: -/* 802E0928 002DD868 38 7F 00 18 */ addi r3, r31, 0x18 -/* 802E092C 002DD86C 48 06 D7 69 */ bl PADClamp -/* 802E0930 002DD870 48 00 00 0C */ b lbl_802E093C -lbl_802E0934: -/* 802E0934 002DD874 38 7F 00 18 */ addi r3, r31, 0x18 -/* 802E0938 002DD878 48 06 D8 71 */ bl PADClampCircle -lbl_802E093C: -/* 802E093C 002DD87C 3B C0 00 00 */ li r30, 0 -/* 802E0940 002DD880 3B A0 00 00 */ li r29, 0 -/* 802E0944 002DD884 3B 80 00 00 */ li r28, 0 -/* 802E0948 002DD888 3B 60 00 00 */ li r27, 0 -/* 802E094C 002DD88C 3B 40 00 00 */ li r26, 0 -/* 802E0950 002DD890 3F 20 80 00 */ lis r25, 0x8000 -lbl_802E0954: -/* 802E0954 002DD894 7F 37 EC 30 */ srw r23, r25, r29 -/* 802E0958 002DD898 3B 1F 00 18 */ addi r24, r31, 0x18 -/* 802E095C 002DD89C 7F 18 D2 14 */ add r24, r24, r26 -/* 802E0960 002DD8A0 88 78 00 0A */ lbz r3, 0xa(r24) -/* 802E0964 002DD8A4 7C 60 07 75 */ extsb. r0, r3 -/* 802E0968 002DD8A8 40 82 00 6C */ bne lbl_802E09D4 -/* 802E096C 002DD8AC 38 7F 01 08 */ addi r3, r31, 0x108 -/* 802E0970 002DD8B0 7C 63 DA 14 */ add r3, r3, r27 -/* 802E0974 002DD8B4 88 98 00 02 */ lbz r4, 2(r24) -/* 802E0978 002DD8B8 88 B8 00 03 */ lbz r5, 3(r24) -/* 802E097C 002DD8BC 80 CD 83 58 */ lwz r6, lbl_804508D8-_SDA_BASE_(r13) -/* 802E0980 002DD8C0 38 E0 00 00 */ li r7, 0 -/* 802E0984 002DD8C4 3A FF 00 48 */ addi r23, r31, 0x48 -/* 802E0988 002DD8C8 7E F7 E2 14 */ add r23, r23, r28 -/* 802E098C 002DD8CC 81 17 00 00 */ lwz r8, 0(r23) -/* 802E0990 002DD8D0 48 00 08 A9 */ bl JUTGamePad_NS_CStick_NS_update -/* 802E0994 002DD8D4 54 76 C0 0E */ slwi r22, r3, 0x18 -/* 802E0998 002DD8D8 38 7F 01 48 */ addi r3, r31, 0x148 -/* 802E099C 002DD8DC 7C 63 DA 14 */ add r3, r3, r27 -/* 802E09A0 002DD8E0 88 98 00 04 */ lbz r4, 4(r24) -/* 802E09A4 002DD8E4 88 B8 00 05 */ lbz r5, 5(r24) -/* 802E09A8 002DD8E8 80 CD 83 58 */ lwz r6, lbl_804508D8-_SDA_BASE_(r13) -/* 802E09AC 002DD8EC 38 E0 00 01 */ li r7, 1 -/* 802E09B0 002DD8F0 81 17 00 00 */ lwz r8, 0(r23) -/* 802E09B4 002DD8F4 48 00 08 85 */ bl JUTGamePad_NS_CStick_NS_update -/* 802E09B8 002DD8F8 54 60 80 1E */ slwi r0, r3, 0x10 -/* 802E09BC 002DD8FC 7E D6 03 78 */ or r22, r22, r0 -/* 802E09C0 002DD900 7E E3 BB 78 */ mr r3, r23 -/* 802E09C4 002DD904 7F 04 C3 78 */ mr r4, r24 -/* 802E09C8 002DD908 7E C5 B3 78 */ mr r5, r22 -/* 802E09CC 002DD90C 48 00 06 C1 */ bl JUTGamePad_NS_CButton_NS_update -/* 802E09D0 002DD910 48 00 00 90 */ b lbl_802E0A60 -lbl_802E09D4: -/* 802E09D4 002DD914 7C 60 07 74 */ extsb r0, r3 -/* 802E09D8 002DD918 2C 00 FF FF */ cmpwi r0, -1 -/* 802E09DC 002DD91C 40 82 00 6C */ bne lbl_802E0A48 -/* 802E09E0 002DD920 38 7F 01 08 */ addi r3, r31, 0x108 -/* 802E09E4 002DD924 7C 63 DA 14 */ add r3, r3, r27 -/* 802E09E8 002DD928 38 80 00 00 */ li r4, 0 -/* 802E09EC 002DD92C 38 A0 00 00 */ li r5, 0 -/* 802E09F0 002DD930 80 CD 83 58 */ lwz r6, lbl_804508D8-_SDA_BASE_(r13) -/* 802E09F4 002DD934 38 E0 00 00 */ li r7, 0 -/* 802E09F8 002DD938 39 00 00 00 */ li r8, 0 -/* 802E09FC 002DD93C 48 00 08 3D */ bl JUTGamePad_NS_CStick_NS_update -/* 802E0A00 002DD940 38 7F 01 48 */ addi r3, r31, 0x148 -/* 802E0A04 002DD944 7C 63 DA 14 */ add r3, r3, r27 -/* 802E0A08 002DD948 38 80 00 00 */ li r4, 0 -/* 802E0A0C 002DD94C 38 A0 00 00 */ li r5, 0 -/* 802E0A10 002DD950 80 CD 83 58 */ lwz r6, lbl_804508D8-_SDA_BASE_(r13) -/* 802E0A14 002DD954 38 E0 00 01 */ li r7, 1 -/* 802E0A18 002DD958 39 00 00 00 */ li r8, 0 -/* 802E0A1C 002DD95C 48 00 08 1D */ bl JUTGamePad_NS_CStick_NS_update -/* 802E0A20 002DD960 38 7F 00 48 */ addi r3, r31, 0x48 -/* 802E0A24 002DD964 7C 63 E2 14 */ add r3, r3, r28 -/* 802E0A28 002DD968 38 80 00 00 */ li r4, 0 -/* 802E0A2C 002DD96C 38 A0 00 00 */ li r5, 0 -/* 802E0A30 002DD970 48 00 06 5D */ bl JUTGamePad_NS_CButton_NS_update -/* 802E0A34 002DD974 80 0D 8F 58 */ lwz r0, lbl_804514D8-_SDA_BASE_(r13) -/* 802E0A38 002DD978 7C 00 B8 39 */ and. r0, r0, r23 -/* 802E0A3C 002DD97C 40 82 00 24 */ bne lbl_802E0A60 -/* 802E0A40 002DD980 7F DE BB 78 */ or r30, r30, r23 -/* 802E0A44 002DD984 48 00 00 1C */ b lbl_802E0A60 -lbl_802E0A48: -/* 802E0A48 002DD988 38 00 00 00 */ li r0, 0 -/* 802E0A4C 002DD98C 38 7F 00 48 */ addi r3, r31, 0x48 -/* 802E0A50 002DD990 7C 63 E2 14 */ add r3, r3, r28 -/* 802E0A54 002DD994 90 03 00 04 */ stw r0, 4(r3) -/* 802E0A58 002DD998 90 03 00 08 */ stw r0, 8(r3) -/* 802E0A5C 002DD99C 90 03 00 18 */ stw r0, 0x18(r3) -lbl_802E0A60: -/* 802E0A60 002DD9A0 3B BD 00 01 */ addi r29, r29, 1 -/* 802E0A64 002DD9A4 2C 1D 00 04 */ cmpwi r29, 4 -/* 802E0A68 002DD9A8 3B 9C 00 30 */ addi r28, r28, 0x30 -/* 802E0A6C 002DD9AC 3B 7B 00 10 */ addi r27, r27, 0x10 -/* 802E0A70 002DD9B0 3B 5A 00 0C */ addi r26, r26, 0xc -/* 802E0A74 002DD9B4 41 80 FE E0 */ blt lbl_802E0954 -/* 802E0A78 002DD9B8 83 3F 00 0C */ lwz r25, 0xc(r31) -/* 802E0A7C 002DD9BC 48 00 01 08 */ b lbl_802E0B84 -lbl_802E0A80: -/* 802E0A80 002DD9C0 80 99 00 00 */ lwz r4, 0(r25) -/* 802E0A84 002DD9C4 80 64 00 94 */ lwz r3, 0x94(r4) -/* 802E0A88 002DD9C8 28 03 00 00 */ cmplwi r3, 0 -/* 802E0A8C 002DD9CC 41 82 00 88 */ beq lbl_802E0B14 -/* 802E0A90 002DD9D0 88 03 00 04 */ lbz r0, 4(r3) -/* 802E0A94 002DD9D4 28 00 00 00 */ cmplwi r0, 0 -/* 802E0A98 002DD9D8 41 82 00 7C */ beq lbl_802E0B14 -/* 802E0A9C 002DD9DC 38 81 00 08 */ addi r4, r1, 8 -/* 802E0AA0 002DD9E0 81 83 00 00 */ lwz r12, 0(r3) -/* 802E0AA4 002DD9E4 81 8C 00 0C */ lwz r12, 0xc(r12) -/* 802E0AA8 002DD9E8 7D 89 03 A6 */ mtctr r12 -/* 802E0AAC 002DD9EC 4E 80 04 21 */ bctrl -/* 802E0AB0 002DD9F0 81 19 00 00 */ lwz r8, 0(r25) -/* 802E0AB4 002DD9F4 38 68 00 48 */ addi r3, r8, 0x48 -/* 802E0AB8 002DD9F8 88 81 00 0A */ lbz r4, 0xa(r1) -/* 802E0ABC 002DD9FC 88 A1 00 0B */ lbz r5, 0xb(r1) -/* 802E0AC0 002DDA00 80 CD 83 58 */ lwz r6, lbl_804508D8-_SDA_BASE_(r13) -/* 802E0AC4 002DDA04 38 E0 00 00 */ li r7, 0 -/* 802E0AC8 002DDA08 81 08 00 18 */ lwz r8, 0x18(r8) -/* 802E0ACC 002DDA0C 48 00 07 6D */ bl JUTGamePad_NS_CStick_NS_update -/* 802E0AD0 002DDA10 54 76 C0 0E */ slwi r22, r3, 0x18 -/* 802E0AD4 002DDA14 81 19 00 00 */ lwz r8, 0(r25) -/* 802E0AD8 002DDA18 38 68 00 58 */ addi r3, r8, 0x58 -/* 802E0ADC 002DDA1C 88 81 00 0C */ lbz r4, 0xc(r1) -/* 802E0AE0 002DDA20 88 A1 00 0D */ lbz r5, 0xd(r1) -/* 802E0AE4 002DDA24 80 CD 83 58 */ lwz r6, lbl_804508D8-_SDA_BASE_(r13) -/* 802E0AE8 002DDA28 38 E0 00 01 */ li r7, 1 -/* 802E0AEC 002DDA2C 81 08 00 18 */ lwz r8, 0x18(r8) -/* 802E0AF0 002DDA30 48 00 07 49 */ bl JUTGamePad_NS_CStick_NS_update -/* 802E0AF4 002DDA34 54 60 80 1E */ slwi r0, r3, 0x10 -/* 802E0AF8 002DDA38 7E D6 03 78 */ or r22, r22, r0 -/* 802E0AFC 002DDA3C 80 79 00 00 */ lwz r3, 0(r25) -/* 802E0B00 002DDA40 38 63 00 18 */ addi r3, r3, 0x18 -/* 802E0B04 002DDA44 38 81 00 08 */ addi r4, r1, 8 -/* 802E0B08 002DDA48 7E C5 B3 78 */ mr r5, r22 -/* 802E0B0C 002DDA4C 48 00 05 81 */ bl JUTGamePad_NS_CButton_NS_update -/* 802E0B10 002DDA50 48 00 00 20 */ b lbl_802E0B30 -lbl_802E0B14: -/* 802E0B14 002DDA54 A8 04 00 7C */ lha r0, 0x7c(r4) -/* 802E0B18 002DDA58 2C 00 FF FF */ cmpwi r0, -1 -/* 802E0B1C 002DDA5C 40 82 00 0C */ bne lbl_802E0B28 -/* 802E0B20 002DDA60 7C 83 23 78 */ mr r3, r4 -/* 802E0B24 002DDA64 48 00 00 99 */ bl JUTGamePad_NS_assign -lbl_802E0B28: -/* 802E0B28 002DDA68 80 79 00 00 */ lwz r3, 0(r25) -/* 802E0B2C 002DDA6C 48 00 01 AD */ bl JUTGamePad_NS_update -lbl_802E0B30: -/* 802E0B30 002DDA70 80 99 00 00 */ lwz r4, 0(r25) -/* 802E0B34 002DDA74 80 64 00 90 */ lwz r3, 0x90(r4) -/* 802E0B38 002DDA78 28 03 00 00 */ cmplwi r3, 0 -/* 802E0B3C 002DDA7C 41 82 00 44 */ beq lbl_802E0B80 -/* 802E0B40 002DDA80 88 03 00 04 */ lbz r0, 4(r3) -/* 802E0B44 002DDA84 28 00 00 00 */ cmplwi r0, 0 -/* 802E0B48 002DDA88 41 82 00 38 */ beq lbl_802E0B80 -/* 802E0B4C 002DDA8C A8 04 00 7C */ lha r0, 0x7c(r4) -/* 802E0B50 002DDA90 2C 00 00 00 */ cmpwi r0, 0 -/* 802E0B54 002DDA94 41 80 00 2C */ blt lbl_802E0B80 -/* 802E0B58 002DDA98 1C 00 00 0C */ mulli r0, r0, 0xc -/* 802E0B5C 002DDA9C 38 9F 00 18 */ addi r4, r31, 0x18 -/* 802E0B60 002DDAA0 7C 84 02 14 */ add r4, r4, r0 -/* 802E0B64 002DDAA4 88 04 00 0A */ lbz r0, 0xa(r4) -/* 802E0B68 002DDAA8 7C 00 07 75 */ extsb. r0, r0 -/* 802E0B6C 002DDAAC 40 82 00 14 */ bne lbl_802E0B80 -/* 802E0B70 002DDAB0 81 83 00 00 */ lwz r12, 0(r3) -/* 802E0B74 002DDAB4 81 8C 00 10 */ lwz r12, 0x10(r12) -/* 802E0B78 002DDAB8 7D 89 03 A6 */ mtctr r12 -/* 802E0B7C 002DDABC 4E 80 04 21 */ bctrl -lbl_802E0B80: -/* 802E0B80 002DDAC0 83 39 00 0C */ lwz r25, 0xc(r25) -lbl_802E0B84: -/* 802E0B84 002DDAC4 28 19 00 00 */ cmplwi r25, 0 -/* 802E0B88 002DDAC8 40 82 FE F8 */ bne lbl_802E0A80 -/* 802E0B8C 002DDACC 28 1E 00 00 */ cmplwi r30, 0 -/* 802E0B90 002DDAD0 41 82 00 0C */ beq lbl_802E0B9C -/* 802E0B94 002DDAD4 7F C3 F3 78 */ mr r3, r30 -/* 802E0B98 002DDAD8 48 06 DF 95 */ bl PADReset -lbl_802E0B9C: -/* 802E0B9C 002DDADC 48 00 04 09 */ bl JUTGamePad_NS_checkResetSwitch -/* 802E0BA0 002DDAE0 80 6D 8F 60 */ lwz r3, lbl_804514E0-_SDA_BASE_(r13) -/* 802E0BA4 002DDAE4 39 61 00 40 */ addi r11, r1, 0x40 -/* 802E0BA8 002DDAE8 48 08 16 65 */ bl func_8036220C -/* 802E0BAC 002DDAEC 80 01 00 44 */ lwz r0, 0x44(r1) -/* 802E0BB0 002DDAF0 7C 08 03 A6 */ mtlr r0 -/* 802E0BB4 002DDAF4 38 21 00 40 */ addi r1, r1, 0x40 -/* 802E0BB8 002DDAF8 4E 80 00 20 */ blr - -.global JUTGamePad_NS_assign -JUTGamePad_NS_assign: -/* 802E0BBC 002DDAFC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802E0BC0 002DDB00 7C 08 02 A6 */ mflr r0 -/* 802E0BC4 002DDB04 90 01 00 14 */ stw r0, 0x14(r1) -/* 802E0BC8 002DDB08 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802E0BCC 002DDB0C 7C 7F 1B 78 */ mr r31, r3 -/* 802E0BD0 002DDB10 39 00 00 00 */ li r8, 0 -/* 802E0BD4 002DDB14 38 80 00 00 */ li r4, 0 -/* 802E0BD8 002DDB18 3C 60 80 43 */ lis r3, lbl_804343F0@ha -/* 802E0BDC 002DDB1C 38 C3 43 F0 */ addi r6, r3, lbl_804343F0@l -/* 802E0BE0 002DDB20 38 ED 8F 54 */ addi r7, r13, lbl_804514D4-_SDA_BASE_ -/* 802E0BE4 002DDB24 7C E3 3B 78 */ mr r3, r7 -/* 802E0BE8 002DDB28 38 00 00 04 */ li r0, 4 -/* 802E0BEC 002DDB2C 7C 09 03 A6 */ mtctr r0 -lbl_802E0BF0: -/* 802E0BF0 002DDB30 7C A6 22 14 */ add r5, r6, r4 -/* 802E0BF4 002DDB34 88 05 00 0A */ lbz r0, 0xa(r5) -/* 802E0BF8 002DDB38 7C 00 07 75 */ extsb. r0, r0 -/* 802E0BFC 002DDB3C 40 82 00 4C */ bne lbl_802E0C48 -/* 802E0C00 002DDB40 88 03 00 00 */ lbz r0, 0(r3) -/* 802E0C04 002DDB44 28 00 00 00 */ cmplwi r0, 0 -/* 802E0C08 002DDB48 40 82 00 40 */ bne lbl_802E0C48 -/* 802E0C0C 002DDB4C B1 1F 00 7C */ sth r8, 0x7c(r31) -/* 802E0C10 002DDB50 38 00 00 01 */ li r0, 1 -/* 802E0C14 002DDB54 7C 07 41 AE */ stbx r0, r7, r8 -/* 802E0C18 002DDB58 1C 88 00 30 */ mulli r4, r8, 0x30 -/* 802E0C1C 002DDB5C 3C 60 80 43 */ lis r3, lbl_80434420@ha -/* 802E0C20 002DDB60 38 03 44 20 */ addi r0, r3, lbl_80434420@l -/* 802E0C24 002DDB64 7C 60 22 14 */ add r3, r0, r4 -/* 802E0C28 002DDB68 80 9F 00 3C */ lwz r4, 0x3c(r31) -/* 802E0C2C 002DDB6C 80 BF 00 40 */ lwz r5, 0x40(r31) -/* 802E0C30 002DDB70 80 DF 00 44 */ lwz r6, 0x44(r31) -/* 802E0C34 002DDB74 48 00 0E 49 */ bl JUTGamePad_NS_CButton_NS_setRepeat -/* 802E0C38 002DDB78 38 7F 00 68 */ addi r3, r31, 0x68 -/* 802E0C3C 002DDB7C 7F E4 FB 78 */ mr r4, r31 -/* 802E0C40 002DDB80 48 00 09 99 */ bl JUTGamePad_NS_CRumble_NS_clear_X1_ -/* 802E0C44 002DDB84 48 00 00 14 */ b lbl_802E0C58 -lbl_802E0C48: -/* 802E0C48 002DDB88 39 08 00 01 */ addi r8, r8, 1 -/* 802E0C4C 002DDB8C 38 63 00 01 */ addi r3, r3, 1 -/* 802E0C50 002DDB90 38 84 00 0C */ addi r4, r4, 0xc -/* 802E0C54 002DDB94 42 00 FF 9C */ bdnz lbl_802E0BF0 -lbl_802E0C58: -/* 802E0C58 002DDB98 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802E0C5C 002DDB9C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802E0C60 002DDBA0 7C 08 03 A6 */ mtlr r0 -/* 802E0C64 002DDBA4 38 21 00 10 */ addi r1, r1, 0x10 -/* 802E0C68 002DDBA8 4E 80 00 20 */ blr - -.global JUTGamePad_NS_checkResetCallback -JUTGamePad_NS_checkResetCallback: -/* 802E0C6C 002DDBAC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802E0C70 002DDBB0 7C 08 02 A6 */ mflr r0 -/* 802E0C74 002DDBB4 90 01 00 14 */ stw r0, 0x14(r1) -/* 802E0C78 002DDBB8 80 0D 8F 78 */ lwz r0, lbl_804514F8-_SDA_BASE_(r13) -/* 802E0C7C 002DDBBC 80 ED 8F 7C */ lwz r7, lbl_804514FC-_SDA_BASE_(r13) -/* 802E0C80 002DDBC0 6C A5 80 00 */ xoris r5, r5, 0x8000 -/* 802E0C84 002DDBC4 6C 04 80 00 */ xoris r4, r0, 0x8000 -/* 802E0C88 002DDBC8 7C 07 30 10 */ subfc r0, r7, r6 -/* 802E0C8C 002DDBCC 7C 84 29 10 */ subfe r4, r4, r5 -/* 802E0C90 002DDBD0 7C 85 29 10 */ subfe r4, r5, r5 -/* 802E0C94 002DDBD4 7C 84 00 D1 */ neg. r4, r4 -/* 802E0C98 002DDBD8 40 82 00 30 */ bne lbl_802E0CC8 -/* 802E0C9C 002DDBDC 38 00 00 01 */ li r0, 1 -/* 802E0CA0 002DDBE0 98 0D 8F 81 */ stb r0, lbl_80451501-_SDA_BASE_(r13) -/* 802E0CA4 002DDBE4 A8 03 00 7C */ lha r0, 0x7c(r3) -/* 802E0CA8 002DDBE8 90 0D 8F 84 */ stw r0, lbl_80451504-_SDA_BASE_(r13) -/* 802E0CAC 002DDBEC 81 8D 8F 6C */ lwz r12, lbl_804514EC-_SDA_BASE_(r13) -/* 802E0CB0 002DDBF0 28 0C 00 00 */ cmplwi r12, 0 -/* 802E0CB4 002DDBF4 41 82 00 14 */ beq lbl_802E0CC8 -/* 802E0CB8 002DDBF8 A8 63 00 7C */ lha r3, 0x7c(r3) -/* 802E0CBC 002DDBFC 80 8D 8F 70 */ lwz r4, lbl_804514F0-_SDA_BASE_(r13) -/* 802E0CC0 002DDC00 7D 89 03 A6 */ mtctr r12 -/* 802E0CC4 002DDC04 4E 80 04 21 */ bctrl -lbl_802E0CC8: -/* 802E0CC8 002DDC08 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802E0CCC 002DDC0C 7C 08 03 A6 */ mtlr r0 -/* 802E0CD0 002DDC10 38 21 00 10 */ addi r1, r1, 0x10 -/* 802E0CD4 002DDC14 4E 80 00 20 */ blr - -.global JUTGamePad_NS_update -JUTGamePad_NS_update: -/* 802E0CD8 002DDC18 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802E0CDC 002DDC1C 7C 08 02 A6 */ mflr r0 -/* 802E0CE0 002DDC20 90 01 00 24 */ stw r0, 0x24(r1) -/* 802E0CE4 002DDC24 39 61 00 20 */ addi r11, r1, 0x20 -/* 802E0CE8 002DDC28 48 08 14 F1 */ bl _savegpr_28 -/* 802E0CEC 002DDC2C 7C 7E 1B 78 */ mr r30, r3 -/* 802E0CF0 002DDC30 3C 60 80 43 */ lis r3, lbl_804343D8@ha -/* 802E0CF4 002DDC34 38 63 43 D8 */ addi r3, r3, lbl_804343D8@l -/* 802E0CF8 002DDC38 A8 9E 00 7C */ lha r4, 0x7c(r30) -/* 802E0CFC 002DDC3C 2C 04 FF FF */ cmpwi r4, -1 -/* 802E0D00 002DDC40 41 82 02 8C */ beq lbl_802E0F8C -/* 802E0D04 002DDC44 7C 80 07 35 */ extsh. r0, r4 -/* 802E0D08 002DDC48 41 80 01 28 */ blt lbl_802E0E30 -/* 802E0D0C 002DDC4C 2C 04 00 04 */ cmpwi r4, 4 -/* 802E0D10 002DDC50 40 80 01 20 */ bge lbl_802E0E30 -/* 802E0D14 002DDC54 1C 04 00 30 */ mulli r0, r4, 0x30 -/* 802E0D18 002DDC58 38 83 00 48 */ addi r4, r3, 0x48 -/* 802E0D1C 002DDC5C 7C 84 02 14 */ add r4, r4, r0 -/* 802E0D20 002DDC60 80 04 00 00 */ lwz r0, 0(r4) -/* 802E0D24 002DDC64 90 1E 00 18 */ stw r0, 0x18(r30) -/* 802E0D28 002DDC68 80 04 00 04 */ lwz r0, 4(r4) -/* 802E0D2C 002DDC6C 90 1E 00 1C */ stw r0, 0x1c(r30) -/* 802E0D30 002DDC70 80 04 00 08 */ lwz r0, 8(r4) -/* 802E0D34 002DDC74 90 1E 00 20 */ stw r0, 0x20(r30) -/* 802E0D38 002DDC78 88 04 00 0C */ lbz r0, 0xc(r4) -/* 802E0D3C 002DDC7C 98 1E 00 24 */ stb r0, 0x24(r30) -/* 802E0D40 002DDC80 88 04 00 0D */ lbz r0, 0xd(r4) -/* 802E0D44 002DDC84 98 1E 00 25 */ stb r0, 0x25(r30) -/* 802E0D48 002DDC88 88 04 00 0E */ lbz r0, 0xe(r4) -/* 802E0D4C 002DDC8C 98 1E 00 26 */ stb r0, 0x26(r30) -/* 802E0D50 002DDC90 88 04 00 0F */ lbz r0, 0xf(r4) -/* 802E0D54 002DDC94 98 1E 00 27 */ stb r0, 0x27(r30) -/* 802E0D58 002DDC98 C0 04 00 10 */ lfs f0, 0x10(r4) -/* 802E0D5C 002DDC9C D0 1E 00 28 */ stfs f0, 0x28(r30) -/* 802E0D60 002DDCA0 C0 04 00 14 */ lfs f0, 0x14(r4) -/* 802E0D64 002DDCA4 D0 1E 00 2C */ stfs f0, 0x2c(r30) -/* 802E0D68 002DDCA8 80 04 00 18 */ lwz r0, 0x18(r4) -/* 802E0D6C 002DDCAC 90 1E 00 30 */ stw r0, 0x30(r30) -/* 802E0D70 002DDCB0 80 04 00 1C */ lwz r0, 0x1c(r4) -/* 802E0D74 002DDCB4 90 1E 00 34 */ stw r0, 0x34(r30) -/* 802E0D78 002DDCB8 80 04 00 20 */ lwz r0, 0x20(r4) -/* 802E0D7C 002DDCBC 90 1E 00 38 */ stw r0, 0x38(r30) -/* 802E0D80 002DDCC0 80 04 00 24 */ lwz r0, 0x24(r4) -/* 802E0D84 002DDCC4 90 1E 00 3C */ stw r0, 0x3c(r30) -/* 802E0D88 002DDCC8 80 04 00 28 */ lwz r0, 0x28(r4) -/* 802E0D8C 002DDCCC 90 1E 00 40 */ stw r0, 0x40(r30) -/* 802E0D90 002DDCD0 80 04 00 2C */ lwz r0, 0x2c(r4) -/* 802E0D94 002DDCD4 90 1E 00 44 */ stw r0, 0x44(r30) -/* 802E0D98 002DDCD8 A8 1E 00 7C */ lha r0, 0x7c(r30) -/* 802E0D9C 002DDCDC 54 00 20 36 */ slwi r0, r0, 4 -/* 802E0DA0 002DDCE0 38 83 01 08 */ addi r4, r3, 0x108 -/* 802E0DA4 002DDCE4 7C 84 02 14 */ add r4, r4, r0 -/* 802E0DA8 002DDCE8 C0 04 00 00 */ lfs f0, 0(r4) -/* 802E0DAC 002DDCEC D0 1E 00 48 */ stfs f0, 0x48(r30) -/* 802E0DB0 002DDCF0 C0 04 00 04 */ lfs f0, 4(r4) -/* 802E0DB4 002DDCF4 D0 1E 00 4C */ stfs f0, 0x4c(r30) -/* 802E0DB8 002DDCF8 C0 04 00 08 */ lfs f0, 8(r4) -/* 802E0DBC 002DDCFC D0 1E 00 50 */ stfs f0, 0x50(r30) -/* 802E0DC0 002DDD00 A8 04 00 0C */ lha r0, 0xc(r4) -/* 802E0DC4 002DDD04 B0 1E 00 54 */ sth r0, 0x54(r30) -/* 802E0DC8 002DDD08 88 04 00 0E */ lbz r0, 0xe(r4) -/* 802E0DCC 002DDD0C 98 1E 00 56 */ stb r0, 0x56(r30) -/* 802E0DD0 002DDD10 88 04 00 0F */ lbz r0, 0xf(r4) -/* 802E0DD4 002DDD14 98 1E 00 57 */ stb r0, 0x57(r30) -/* 802E0DD8 002DDD18 A8 1E 00 7C */ lha r0, 0x7c(r30) -/* 802E0DDC 002DDD1C 54 00 20 36 */ slwi r0, r0, 4 -/* 802E0DE0 002DDD20 38 83 01 48 */ addi r4, r3, 0x148 -/* 802E0DE4 002DDD24 7C 84 02 14 */ add r4, r4, r0 -/* 802E0DE8 002DDD28 C0 04 00 00 */ lfs f0, 0(r4) -/* 802E0DEC 002DDD2C D0 1E 00 58 */ stfs f0, 0x58(r30) -/* 802E0DF0 002DDD30 C0 04 00 04 */ lfs f0, 4(r4) -/* 802E0DF4 002DDD34 D0 1E 00 5C */ stfs f0, 0x5c(r30) -/* 802E0DF8 002DDD38 C0 04 00 08 */ lfs f0, 8(r4) -/* 802E0DFC 002DDD3C D0 1E 00 60 */ stfs f0, 0x60(r30) -/* 802E0E00 002DDD40 A8 04 00 0C */ lha r0, 0xc(r4) -/* 802E0E04 002DDD44 B0 1E 00 64 */ sth r0, 0x64(r30) -/* 802E0E08 002DDD48 88 04 00 0E */ lbz r0, 0xe(r4) -/* 802E0E0C 002DDD4C 98 1E 00 66 */ stb r0, 0x66(r30) -/* 802E0E10 002DDD50 88 04 00 0F */ lbz r0, 0xf(r4) -/* 802E0E14 002DDD54 98 1E 00 67 */ stb r0, 0x67(r30) -/* 802E0E18 002DDD58 38 63 00 18 */ addi r3, r3, 0x18 -/* 802E0E1C 002DDD5C A8 1E 00 7C */ lha r0, 0x7c(r30) -/* 802E0E20 002DDD60 1C 00 00 0C */ mulli r0, r0, 0xc -/* 802E0E24 002DDD64 7C 63 02 14 */ add r3, r3, r0 -/* 802E0E28 002DDD68 88 03 00 0A */ lbz r0, 0xa(r3) -/* 802E0E2C 002DDD6C 98 1E 00 7E */ stb r0, 0x7e(r30) -lbl_802E0E30: -/* 802E0E30 002DDD70 88 1E 00 A8 */ lbz r0, 0xa8(r30) -/* 802E0E34 002DDD74 28 00 00 00 */ cmplwi r0, 0 -/* 802E0E38 002DDD78 41 82 00 1C */ beq lbl_802E0E54 -/* 802E0E3C 002DDD7C 80 8D 83 68 */ lwz r4, lbl_804508E8-_SDA_BASE_(r13) -/* 802E0E40 002DDD80 80 7E 00 18 */ lwz r3, 0x18(r30) -/* 802E0E44 002DDD84 80 0D 83 6C */ lwz r0, lbl_804508EC-_SDA_BASE_(r13) -/* 802E0E48 002DDD88 7C 60 00 38 */ and r0, r3, r0 -/* 802E0E4C 002DDD8C 7C 04 00 40 */ cmplw r4, r0 -/* 802E0E50 002DDD90 41 82 00 10 */ beq lbl_802E0E60 -lbl_802E0E54: -/* 802E0E54 002DDD94 38 00 00 00 */ li r0, 0 -/* 802E0E58 002DDD98 98 1E 00 98 */ stb r0, 0x98(r30) -/* 802E0E5C 002DDD9C 48 00 00 50 */ b lbl_802E0EAC -lbl_802E0E60: -/* 802E0E60 002DDDA0 88 0D 8F 81 */ lbz r0, lbl_80451501-_SDA_BASE_(r13) -/* 802E0E64 002DDDA4 28 00 00 00 */ cmplwi r0, 0 -/* 802E0E68 002DDDA8 40 82 00 44 */ bne lbl_802E0EAC -/* 802E0E6C 002DDDAC 88 1E 00 98 */ lbz r0, 0x98(r30) -/* 802E0E70 002DDDB0 28 00 00 01 */ cmplwi r0, 1 -/* 802E0E74 002DDDB4 40 82 00 24 */ bne lbl_802E0E98 -/* 802E0E78 002DDDB8 48 06 18 85 */ bl OSGetTime -/* 802E0E7C 002DDDBC 80 1E 00 A0 */ lwz r0, 0xa0(r30) -/* 802E0E80 002DDDC0 80 BE 00 A4 */ lwz r5, 0xa4(r30) -/* 802E0E84 002DDDC4 7C C5 20 10 */ subfc r6, r5, r4 -/* 802E0E88 002DDDC8 7C A0 19 10 */ subfe r5, r0, r3 -/* 802E0E8C 002DDDCC 7F C3 F3 78 */ mr r3, r30 -/* 802E0E90 002DDDD0 4B FF FD DD */ bl JUTGamePad_NS_checkResetCallback -/* 802E0E94 002DDDD4 48 00 00 18 */ b lbl_802E0EAC -lbl_802E0E98: -/* 802E0E98 002DDDD8 38 00 00 01 */ li r0, 1 -/* 802E0E9C 002DDDDC 98 1E 00 98 */ stb r0, 0x98(r30) -/* 802E0EA0 002DDDE0 48 06 18 5D */ bl OSGetTime -/* 802E0EA4 002DDDE4 90 9E 00 A4 */ stw r4, 0xa4(r30) -/* 802E0EA8 002DDDE8 90 7E 00 A0 */ stw r3, 0xa0(r30) -lbl_802E0EAC: -/* 802E0EAC 002DDDEC 3C 60 80 43 */ lis r3, lbl_8043456C@ha -/* 802E0EB0 002DDDF0 83 E3 45 6C */ lwz r31, lbl_8043456C@l(r3) -/* 802E0EB4 002DDDF4 48 00 00 B4 */ b lbl_802E0F68 -lbl_802E0EB8: -/* 802E0EB8 002DDDF8 83 9F 00 00 */ lwz r28, 0(r31) -/* 802E0EBC 002DDDFC 88 1C 00 10 */ lbz r0, 0x10(r28) -/* 802E0EC0 002DDE00 28 00 00 00 */ cmplwi r0, 0 -/* 802E0EC4 002DDE04 41 82 00 A0 */ beq lbl_802E0F64 -/* 802E0EC8 002DDE08 AB BE 00 7C */ lha r29, 0x7c(r30) -/* 802E0ECC 002DDE0C 7F A0 07 35 */ extsh. r0, r29 -/* 802E0ED0 002DDE10 41 80 00 94 */ blt lbl_802E0F64 -/* 802E0ED4 002DDE14 2C 1D 00 04 */ cmpwi r29, 4 -/* 802E0ED8 002DDE18 40 80 00 8C */ bge lbl_802E0F64 -/* 802E0EDC 002DDE1C 80 7C 00 14 */ lwz r3, 0x14(r28) -/* 802E0EE0 002DDE20 80 9C 00 18 */ lwz r4, 0x18(r28) -/* 802E0EE4 002DDE24 80 1E 00 18 */ lwz r0, 0x18(r30) -/* 802E0EE8 002DDE28 7C 00 20 38 */ and r0, r0, r4 -/* 802E0EEC 002DDE2C 7C 00 18 40 */ cmplw r0, r3 -/* 802E0EF0 002DDE30 40 82 00 68 */ bne lbl_802E0F58 -/* 802E0EF4 002DDE34 38 7D 00 20 */ addi r3, r29, 0x20 -/* 802E0EF8 002DDE38 7C 1C 18 AE */ lbzx r0, r28, r3 -/* 802E0EFC 002DDE3C 28 00 00 01 */ cmplwi r0, 1 -/* 802E0F00 002DDE40 40 82 00 2C */ bne lbl_802E0F2C -/* 802E0F04 002DDE44 48 06 17 F9 */ bl OSGetTime -/* 802E0F08 002DDE48 57 A5 18 38 */ slwi r5, r29, 3 -/* 802E0F0C 002DDE4C 38 05 00 28 */ addi r0, r5, 0x28 -/* 802E0F10 002DDE50 7C BC 02 14 */ add r5, r28, r0 -/* 802E0F14 002DDE54 80 A5 00 04 */ lwz r5, 4(r5) -/* 802E0F18 002DDE58 7C A5 20 10 */ subfc r5, r5, r4 -/* 802E0F1C 002DDE5C 80 7F 00 00 */ lwz r3, 0(r31) -/* 802E0F20 002DDE60 A8 9E 00 7C */ lha r4, 0x7c(r30) -/* 802E0F24 002DDE64 48 00 0B D9 */ bl JUTGamePadLongPress_NS_checkCallback -/* 802E0F28 002DDE68 48 00 00 3C */ b lbl_802E0F64 -lbl_802E0F2C: -/* 802E0F2C 002DDE6C 38 00 00 01 */ li r0, 1 -/* 802E0F30 002DDE70 7C 1C 19 AE */ stbx r0, r28, r3 -/* 802E0F34 002DDE74 83 BF 00 00 */ lwz r29, 0(r31) -/* 802E0F38 002DDE78 48 06 17 C5 */ bl OSGetTime -/* 802E0F3C 002DDE7C A8 1E 00 7C */ lha r0, 0x7c(r30) -/* 802E0F40 002DDE80 54 05 18 38 */ slwi r5, r0, 3 -/* 802E0F44 002DDE84 38 05 00 28 */ addi r0, r5, 0x28 -/* 802E0F48 002DDE88 7C BD 02 14 */ add r5, r29, r0 -/* 802E0F4C 002DDE8C 90 85 00 04 */ stw r4, 4(r5) -/* 802E0F50 002DDE90 90 65 00 00 */ stw r3, 0(r5) -/* 802E0F54 002DDE94 48 00 00 10 */ b lbl_802E0F64 -lbl_802E0F58: -/* 802E0F58 002DDE98 38 60 00 00 */ li r3, 0 -/* 802E0F5C 002DDE9C 38 1D 00 20 */ addi r0, r29, 0x20 -/* 802E0F60 002DDEA0 7C 7C 01 AE */ stbx r3, r28, r0 -lbl_802E0F64: -/* 802E0F64 002DDEA4 83 FF 00 0C */ lwz r31, 0xc(r31) -lbl_802E0F68: -/* 802E0F68 002DDEA8 28 1F 00 00 */ cmplwi r31, 0 -/* 802E0F6C 002DDEAC 40 82 FF 4C */ bne lbl_802E0EB8 -/* 802E0F70 002DDEB0 A8 9E 00 7C */ lha r4, 0x7c(r30) -/* 802E0F74 002DDEB4 7C 80 07 35 */ extsh. r0, r4 -/* 802E0F78 002DDEB8 41 80 00 14 */ blt lbl_802E0F8C -/* 802E0F7C 002DDEBC 2C 04 00 04 */ cmpwi r4, 4 -/* 802E0F80 002DDEC0 40 80 00 0C */ bge lbl_802E0F8C -/* 802E0F84 002DDEC4 38 7E 00 68 */ addi r3, r30, 0x68 -/* 802E0F88 002DDEC8 48 00 07 99 */ bl JUTGamePad_NS_CRumble_NS_update -lbl_802E0F8C: -/* 802E0F8C 002DDECC 39 61 00 20 */ addi r11, r1, 0x20 -/* 802E0F90 002DDED0 48 08 12 95 */ bl _restgpr_28 -/* 802E0F94 002DDED4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802E0F98 002DDED8 7C 08 03 A6 */ mtlr r0 -/* 802E0F9C 002DDEDC 38 21 00 20 */ addi r1, r1, 0x20 -/* 802E0FA0 002DDEE0 4E 80 00 20 */ blr - -.global JUTGamePad_NS_checkResetSwitch -JUTGamePad_NS_checkResetSwitch: -/* 802E0FA4 002DDEE4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802E0FA8 002DDEE8 7C 08 02 A6 */ mflr r0 -/* 802E0FAC 002DDEEC 90 01 00 14 */ stw r0, 0x14(r1) -/* 802E0FB0 002DDEF0 88 0D 8F 81 */ lbz r0, lbl_80451501-_SDA_BASE_(r13) -/* 802E0FB4 002DDEF4 28 00 00 00 */ cmplwi r0, 0 -/* 802E0FB8 002DDEF8 40 82 00 5C */ bne lbl_802E1014 -/* 802E0FBC 002DDEFC 48 05 EE B5 */ bl OSGetResetSwitchState -/* 802E0FC0 002DDF00 2C 03 00 00 */ cmpwi r3, 0 -/* 802E0FC4 002DDF04 41 82 00 10 */ beq lbl_802E0FD4 -/* 802E0FC8 002DDF08 38 00 00 01 */ li r0, 1 -/* 802E0FCC 002DDF0C 98 0D 8F 80 */ stb r0, lbl_80451500-_SDA_BASE_(r13) -/* 802E0FD0 002DDF10 48 00 00 44 */ b lbl_802E1014 -lbl_802E0FD4: -/* 802E0FD4 002DDF14 88 0D 8F 80 */ lbz r0, lbl_80451500-_SDA_BASE_(r13) -/* 802E0FD8 002DDF18 28 00 00 01 */ cmplwi r0, 1 -/* 802E0FDC 002DDF1C 40 82 00 30 */ bne lbl_802E100C -/* 802E0FE0 002DDF20 38 00 00 01 */ li r0, 1 -/* 802E0FE4 002DDF24 98 0D 8F 81 */ stb r0, lbl_80451501-_SDA_BASE_(r13) -/* 802E0FE8 002DDF28 38 00 FF FF */ li r0, -1 -/* 802E0FEC 002DDF2C 90 0D 8F 84 */ stw r0, lbl_80451504-_SDA_BASE_(r13) -/* 802E0FF0 002DDF30 81 8D 8F 6C */ lwz r12, lbl_804514EC-_SDA_BASE_(r13) -/* 802E0FF4 002DDF34 28 0C 00 00 */ cmplwi r12, 0 -/* 802E0FF8 002DDF38 41 82 00 14 */ beq lbl_802E100C -/* 802E0FFC 002DDF3C 38 60 FF FF */ li r3, -1 -/* 802E1000 002DDF40 80 8D 8F 70 */ lwz r4, lbl_804514F0-_SDA_BASE_(r13) -/* 802E1004 002DDF44 7D 89 03 A6 */ mtctr r12 -/* 802E1008 002DDF48 4E 80 04 21 */ bctrl -lbl_802E100C: -/* 802E100C 002DDF4C 38 00 00 00 */ li r0, 0 -/* 802E1010 002DDF50 98 0D 8F 80 */ stb r0, lbl_80451500-_SDA_BASE_(r13) -lbl_802E1014: -/* 802E1014 002DDF54 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802E1018 002DDF58 7C 08 03 A6 */ mtlr r0 -/* 802E101C 002DDF5C 38 21 00 10 */ addi r1, r1, 0x10 -/* 802E1020 002DDF60 4E 80 00 20 */ blr - -.global JUTGamePad_NS_clearForReset -JUTGamePad_NS_clearForReset: -/* 802E1024 002DDF64 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802E1028 002DDF68 7C 08 02 A6 */ mflr r0 -/* 802E102C 002DDF6C 90 01 00 14 */ stw r0, 0x14(r1) -/* 802E1030 002DDF70 38 60 00 00 */ li r3, 0 -/* 802E1034 002DDF74 48 00 09 A5 */ bl JUTGamePad_NS_CRumble_NS_setEnabled -/* 802E1038 002DDF78 3C 60 F0 00 */ lis r3, 0xf000 -/* 802E103C 002DDF7C 48 00 0A 5D */ bl JUTGamePad_NS_recalibrate -/* 802E1040 002DDF80 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802E1044 002DDF84 7C 08 03 A6 */ mtlr r0 -/* 802E1048 002DDF88 38 21 00 10 */ addi r1, r1, 0x10 -/* 802E104C 002DDF8C 4E 80 00 20 */ blr - -.global JUTGamePad_NS_CButton_NS_clear -JUTGamePad_NS_CButton_NS_clear: -/* 802E1050 002DDF90 38 00 00 00 */ li r0, 0 -/* 802E1054 002DDF94 90 03 00 00 */ stw r0, 0(r3) -/* 802E1058 002DDF98 90 03 00 04 */ stw r0, 4(r3) -/* 802E105C 002DDF9C 90 03 00 08 */ stw r0, 8(r3) -/* 802E1060 002DDFA0 90 03 00 18 */ stw r0, 0x18(r3) -/* 802E1064 002DDFA4 98 03 00 0C */ stb r0, 0xc(r3) -/* 802E1068 002DDFA8 98 03 00 0D */ stb r0, 0xd(r3) -/* 802E106C 002DDFAC 98 03 00 0E */ stb r0, 0xe(r3) -/* 802E1070 002DDFB0 98 03 00 0F */ stb r0, 0xf(r3) -/* 802E1074 002DDFB4 90 03 00 1C */ stw r0, 0x1c(r3) -/* 802E1078 002DDFB8 90 03 00 20 */ stw r0, 0x20(r3) -/* 802E107C 002DDFBC 90 03 00 24 */ stw r0, 0x24(r3) -/* 802E1080 002DDFC0 90 03 00 28 */ stw r0, 0x28(r3) -/* 802E1084 002DDFC4 90 03 00 2C */ stw r0, 0x2c(r3) -/* 802E1088 002DDFC8 4E 80 00 20 */ blr - -.global JUTGamePad_NS_CButton_NS_update -JUTGamePad_NS_CButton_NS_update: -/* 802E108C 002DDFCC 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802E1090 002DDFD0 28 04 00 00 */ cmplwi r4, 0 -/* 802E1094 002DDFD4 41 82 00 0C */ beq lbl_802E10A0 -/* 802E1098 002DDFD8 A0 04 00 00 */ lhz r0, 0(r4) -/* 802E109C 002DDFDC 48 00 00 08 */ b lbl_802E10A4 -lbl_802E10A0: -/* 802E10A0 002DDFE0 38 00 00 00 */ li r0, 0 -lbl_802E10A4: -/* 802E10A4 002DDFE4 7C A7 03 78 */ or r7, r5, r0 -/* 802E10A8 002DDFE8 38 A0 00 00 */ li r5, 0 -/* 802E10AC 002DDFEC 90 A3 00 18 */ stw r5, 0x18(r3) -/* 802E10B0 002DDFF0 80 03 00 28 */ lwz r0, 0x28(r3) -/* 802E10B4 002DDFF4 28 00 00 00 */ cmplwi r0, 0 -/* 802E10B8 002DDFF8 41 82 00 8C */ beq lbl_802E1144 -/* 802E10BC 002DDFFC 80 03 00 24 */ lwz r0, 0x24(r3) -/* 802E10C0 002DE000 28 00 00 00 */ cmplwi r0, 0 -/* 802E10C4 002DE004 41 82 00 80 */ beq lbl_802E1144 -/* 802E10C8 002DE008 7C E8 00 39 */ and. r8, r7, r0 -/* 802E10CC 002DE00C 90 A3 00 18 */ stw r5, 0x18(r3) -/* 802E10D0 002DE010 40 82 00 10 */ bne lbl_802E10E0 -/* 802E10D4 002DE014 90 A3 00 20 */ stw r5, 0x20(r3) -/* 802E10D8 002DE018 90 A3 00 1C */ stw r5, 0x1c(r3) -/* 802E10DC 002DE01C 48 00 00 68 */ b lbl_802E1144 -lbl_802E10E0: -/* 802E10E0 002DE020 80 C3 00 20 */ lwz r6, 0x20(r3) -/* 802E10E4 002DE024 7C 06 40 40 */ cmplw r6, r8 -/* 802E10E8 002DE028 40 82 00 44 */ bne lbl_802E112C -/* 802E10EC 002DE02C 80 A3 00 1C */ lwz r5, 0x1c(r3) -/* 802E10F0 002DE030 38 05 00 01 */ addi r0, r5, 1 -/* 802E10F4 002DE034 90 03 00 1C */ stw r0, 0x1c(r3) -/* 802E10F8 002DE038 80 A3 00 1C */ lwz r5, 0x1c(r3) -/* 802E10FC 002DE03C 80 03 00 28 */ lwz r0, 0x28(r3) -/* 802E1100 002DE040 7C 05 00 40 */ cmplw r5, r0 -/* 802E1104 002DE044 41 82 00 20 */ beq lbl_802E1124 -/* 802E1108 002DE048 40 81 00 3C */ ble lbl_802E1144 -/* 802E110C 002DE04C 7C C0 28 50 */ subf r6, r0, r5 -/* 802E1110 002DE050 80 A3 00 2C */ lwz r5, 0x2c(r3) -/* 802E1114 002DE054 7C 06 2B 96 */ divwu r0, r6, r5 -/* 802E1118 002DE058 7C 00 29 D6 */ mullw r0, r0, r5 -/* 802E111C 002DE05C 7C 00 30 51 */ subf. r0, r0, r6 -/* 802E1120 002DE060 40 82 00 24 */ bne lbl_802E1144 -lbl_802E1124: -/* 802E1124 002DE064 91 03 00 18 */ stw r8, 0x18(r3) -/* 802E1128 002DE068 48 00 00 1C */ b lbl_802E1144 -lbl_802E112C: -/* 802E112C 002DE06C 38 00 FF FF */ li r0, -1 -/* 802E1130 002DE070 7C C0 02 78 */ xor r0, r6, r0 -/* 802E1134 002DE074 7D 00 00 38 */ and r0, r8, r0 -/* 802E1138 002DE078 90 03 00 18 */ stw r0, 0x18(r3) -/* 802E113C 002DE07C 91 03 00 20 */ stw r8, 0x20(r3) -/* 802E1140 002DE080 90 A3 00 1C */ stw r5, 0x1c(r3) -lbl_802E1144: -/* 802E1144 002DE084 80 03 00 00 */ lwz r0, 0(r3) -/* 802E1148 002DE088 7C E0 02 78 */ xor r0, r7, r0 -/* 802E114C 002DE08C 7C E0 00 38 */ and r0, r7, r0 -/* 802E1150 002DE090 90 03 00 04 */ stw r0, 4(r3) -/* 802E1154 002DE094 80 A3 00 00 */ lwz r5, 0(r3) -/* 802E1158 002DE098 7C E0 2A 78 */ xor r0, r7, r5 -/* 802E115C 002DE09C 7C A0 00 38 */ and r0, r5, r0 -/* 802E1160 002DE0A0 90 03 00 08 */ stw r0, 8(r3) -/* 802E1164 002DE0A4 90 E3 00 00 */ stw r7, 0(r3) -/* 802E1168 002DE0A8 80 C3 00 18 */ lwz r6, 0x18(r3) -/* 802E116C 002DE0AC 80 A3 00 24 */ lwz r5, 0x24(r3) -/* 802E1170 002DE0B0 38 00 FF FF */ li r0, -1 -/* 802E1174 002DE0B4 7C A5 02 78 */ xor r5, r5, r0 -/* 802E1178 002DE0B8 80 03 00 04 */ lwz r0, 4(r3) -/* 802E117C 002DE0BC 7C A0 00 38 */ and r0, r5, r0 -/* 802E1180 002DE0C0 7C C0 03 78 */ or r0, r6, r0 -/* 802E1184 002DE0C4 90 03 00 18 */ stw r0, 0x18(r3) -/* 802E1188 002DE0C8 28 04 00 00 */ cmplwi r4, 0 -/* 802E118C 002DE0CC 41 82 00 28 */ beq lbl_802E11B4 -/* 802E1190 002DE0D0 88 04 00 08 */ lbz r0, 8(r4) -/* 802E1194 002DE0D4 98 03 00 0C */ stb r0, 0xc(r3) -/* 802E1198 002DE0D8 88 04 00 09 */ lbz r0, 9(r4) -/* 802E119C 002DE0DC 98 03 00 0D */ stb r0, 0xd(r3) -/* 802E11A0 002DE0E0 88 04 00 06 */ lbz r0, 6(r4) -/* 802E11A4 002DE0E4 98 03 00 0E */ stb r0, 0xe(r3) -/* 802E11A8 002DE0E8 88 04 00 07 */ lbz r0, 7(r4) -/* 802E11AC 002DE0EC 98 03 00 0F */ stb r0, 0xf(r3) -/* 802E11B0 002DE0F0 48 00 00 18 */ b lbl_802E11C8 -lbl_802E11B4: -/* 802E11B4 002DE0F4 38 00 00 00 */ li r0, 0 -/* 802E11B8 002DE0F8 98 03 00 0C */ stb r0, 0xc(r3) -/* 802E11BC 002DE0FC 98 03 00 0D */ stb r0, 0xd(r3) -/* 802E11C0 002DE100 98 03 00 0E */ stb r0, 0xe(r3) -/* 802E11C4 002DE104 98 03 00 0F */ stb r0, 0xf(r3) -lbl_802E11C8: -/* 802E11C8 002DE108 88 03 00 0E */ lbz r0, 0xe(r3) -/* 802E11CC 002DE10C C8 42 C6 20 */ lfd f2, lbl_80456020-_SDA2_BASE_(r2) -/* 802E11D0 002DE110 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 802E11D4 002DE114 90 01 00 0C */ stw r0, 0xc(r1) -/* 802E11D8 002DE118 3C 80 43 30 */ lis r4, 0x4330 -/* 802E11DC 002DE11C 90 81 00 08 */ stw r4, 8(r1) -/* 802E11E0 002DE120 C8 01 00 08 */ lfd f0, 8(r1) -/* 802E11E4 002DE124 EC 00 10 28 */ fsubs f0, f0, f2 -/* 802E11E8 002DE128 C0 22 C6 18 */ lfs f1, lbl_80456018-_SDA2_BASE_(r2) -/* 802E11EC 002DE12C EC 00 08 24 */ fdivs f0, f0, f1 -/* 802E11F0 002DE130 D0 03 00 10 */ stfs f0, 0x10(r3) -/* 802E11F4 002DE134 88 03 00 0F */ lbz r0, 0xf(r3) -/* 802E11F8 002DE138 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 802E11FC 002DE13C 90 01 00 14 */ stw r0, 0x14(r1) -/* 802E1200 002DE140 90 81 00 10 */ stw r4, 0x10(r1) -/* 802E1204 002DE144 C8 01 00 10 */ lfd f0, 0x10(r1) -/* 802E1208 002DE148 EC 00 10 28 */ fsubs f0, f0, f2 -/* 802E120C 002DE14C EC 00 08 24 */ fdivs f0, f0, f1 -/* 802E1210 002DE150 D0 03 00 14 */ stfs f0, 0x14(r3) -/* 802E1214 002DE154 38 21 00 20 */ addi r1, r1, 0x20 -/* 802E1218 002DE158 4E 80 00 20 */ blr - -.global JUTGamePad_NS_CStick_NS_clear -JUTGamePad_NS_CStick_NS_clear: -/* 802E121C 002DE15C C0 02 C6 28 */ lfs f0, lbl_80456028-_SDA2_BASE_(r2) -/* 802E1220 002DE160 D0 03 00 00 */ stfs f0, 0(r3) -/* 802E1224 002DE164 D0 03 00 04 */ stfs f0, 4(r3) -/* 802E1228 002DE168 D0 03 00 08 */ stfs f0, 8(r3) -/* 802E122C 002DE16C 38 00 00 00 */ li r0, 0 -/* 802E1230 002DE170 B0 03 00 0C */ sth r0, 0xc(r3) -/* 802E1234 002DE174 4E 80 00 20 */ blr - -.global JUTGamePad_NS_CStick_NS_update -JUTGamePad_NS_CStick_NS_update: -/* 802E1238 002DE178 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 802E123C 002DE17C 7C 08 02 A6 */ mflr r0 -/* 802E1240 002DE180 90 01 00 44 */ stw r0, 0x44(r1) -/* 802E1244 002DE184 39 61 00 40 */ addi r11, r1, 0x40 -/* 802E1248 002DE188 48 08 0F 95 */ bl _savegpr_29 -/* 802E124C 002DE18C 7C 7D 1B 78 */ mr r29, r3 -/* 802E1250 002DE190 7C FE 3B 78 */ mr r30, r7 -/* 802E1254 002DE194 7D 1F 43 78 */ mr r31, r8 -/* 802E1258 002DE198 80 0D 83 5C */ lwz r0, lbl_804508DC-_SDA_BASE_(r13) -/* 802E125C 002DE19C 2C 00 00 02 */ cmpwi r0, 2 -/* 802E1260 002DE1A0 41 82 00 2C */ beq lbl_802E128C -/* 802E1264 002DE1A4 40 80 00 40 */ bge lbl_802E12A4 -/* 802E1268 002DE1A8 2C 00 00 01 */ cmpwi r0, 1 -/* 802E126C 002DE1AC 40 80 00 08 */ bge lbl_802E1274 -/* 802E1270 002DE1B0 48 00 00 34 */ b lbl_802E12A4 -lbl_802E1274: -/* 802E1274 002DE1B4 2C 1E 00 00 */ cmpwi r30, 0 -/* 802E1278 002DE1B8 38 00 00 2A */ li r0, 0x2a -/* 802E127C 002DE1BC 40 82 00 08 */ bne lbl_802E1284 -/* 802E1280 002DE1C0 38 00 00 36 */ li r0, 0x36 -lbl_802E1284: -/* 802E1284 002DE1C4 7C 03 03 78 */ mr r3, r0 -/* 802E1288 002DE1C8 48 00 00 30 */ b lbl_802E12B8 -lbl_802E128C: -/* 802E128C 002DE1CC 2C 1E 00 00 */ cmpwi r30, 0 -/* 802E1290 002DE1D0 38 00 00 1D */ li r0, 0x1d -/* 802E1294 002DE1D4 40 82 00 08 */ bne lbl_802E129C -/* 802E1298 002DE1D8 38 00 00 26 */ li r0, 0x26 -lbl_802E129C: -/* 802E129C 002DE1DC 7C 03 03 78 */ mr r3, r0 -/* 802E12A0 002DE1E0 48 00 00 18 */ b lbl_802E12B8 -lbl_802E12A4: -/* 802E12A4 002DE1E4 2C 1E 00 00 */ cmpwi r30, 0 -/* 802E12A8 002DE1E8 38 00 00 39 */ li r0, 0x39 -/* 802E12AC 002DE1EC 40 82 00 08 */ bne lbl_802E12B4 -/* 802E12B0 002DE1F0 38 00 00 45 */ li r0, 0x45 -lbl_802E12B4: -/* 802E12B4 002DE1F4 7C 03 03 78 */ mr r3, r0 -lbl_802E12B8: -/* 802E12B8 002DE1F8 98 9D 00 0E */ stb r4, 0xe(r29) -/* 802E12BC 002DE1FC 98 BD 00 0F */ stb r5, 0xf(r29) -/* 802E12C0 002DE200 7C 80 07 74 */ extsb r0, r4 -/* 802E12C4 002DE204 C8 42 C6 20 */ lfd f2, lbl_80456020-_SDA2_BASE_(r2) -/* 802E12C8 002DE208 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 802E12CC 002DE20C 90 01 00 14 */ stw r0, 0x14(r1) -/* 802E12D0 002DE210 3C 80 43 30 */ lis r4, 0x4330 -/* 802E12D4 002DE214 90 81 00 10 */ stw r4, 0x10(r1) -/* 802E12D8 002DE218 C8 01 00 10 */ lfd f0, 0x10(r1) -/* 802E12DC 002DE21C EC 20 10 28 */ fsubs f1, f0, f2 -/* 802E12E0 002DE220 6C 63 80 00 */ xoris r3, r3, 0x8000 -/* 802E12E4 002DE224 90 61 00 1C */ stw r3, 0x1c(r1) -/* 802E12E8 002DE228 90 81 00 18 */ stw r4, 0x18(r1) -/* 802E12EC 002DE22C C8 01 00 18 */ lfd f0, 0x18(r1) -/* 802E12F0 002DE230 EC 00 10 28 */ fsubs f0, f0, f2 -/* 802E12F4 002DE234 EC 01 00 24 */ fdivs f0, f1, f0 -/* 802E12F8 002DE238 D0 1D 00 00 */ stfs f0, 0(r29) -/* 802E12FC 002DE23C 7C A0 07 74 */ extsb r0, r5 -/* 802E1300 002DE240 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 802E1304 002DE244 90 01 00 24 */ stw r0, 0x24(r1) -/* 802E1308 002DE248 90 81 00 20 */ stw r4, 0x20(r1) -/* 802E130C 002DE24C C8 01 00 20 */ lfd f0, 0x20(r1) -/* 802E1310 002DE250 EC 20 10 28 */ fsubs f1, f0, f2 -/* 802E1314 002DE254 90 61 00 2C */ stw r3, 0x2c(r1) -/* 802E1318 002DE258 90 81 00 28 */ stw r4, 0x28(r1) -/* 802E131C 002DE25C C8 01 00 28 */ lfd f0, 0x28(r1) -/* 802E1320 002DE260 EC 00 10 28 */ fsubs f0, f0, f2 -/* 802E1324 002DE264 EC 01 00 24 */ fdivs f0, f1, f0 -/* 802E1328 002DE268 D0 1D 00 04 */ stfs f0, 4(r29) -/* 802E132C 002DE26C C0 1D 00 00 */ lfs f0, 0(r29) -/* 802E1330 002DE270 EC 20 00 32 */ fmuls f1, f0, f0 -/* 802E1334 002DE274 C0 1D 00 04 */ lfs f0, 4(r29) -/* 802E1338 002DE278 EC 00 00 32 */ fmuls f0, f0, f0 -/* 802E133C 002DE27C EC 81 00 2A */ fadds f4, f1, f0 -/* 802E1340 002DE280 C0 02 C6 28 */ lfs f0, lbl_80456028-_SDA2_BASE_(r2) -/* 802E1344 002DE284 FC 04 00 40 */ fcmpo cr0, f4, f0 -/* 802E1348 002DE288 40 81 00 58 */ ble lbl_802E13A0 -/* 802E134C 002DE28C FC 00 20 34 */ frsqrte f0, f4 -/* 802E1350 002DE290 C8 62 C6 30 */ lfd f3, lbl_80456030-_SDA2_BASE_(r2) -/* 802E1354 002DE294 FC 23 00 32 */ fmul f1, f3, f0 -/* 802E1358 002DE298 C8 42 C6 38 */ lfd f2, lbl_80456038-_SDA2_BASE_(r2) -/* 802E135C 002DE29C FC 00 00 32 */ fmul f0, f0, f0 -/* 802E1360 002DE2A0 FC 04 00 32 */ fmul f0, f4, f0 -/* 802E1364 002DE2A4 FC 02 00 28 */ fsub f0, f2, f0 -/* 802E1368 002DE2A8 FC 01 00 32 */ fmul f0, f1, f0 -/* 802E136C 002DE2AC FC 23 00 32 */ fmul f1, f3, f0 -/* 802E1370 002DE2B0 FC 00 00 32 */ fmul f0, f0, f0 -/* 802E1374 002DE2B4 FC 04 00 32 */ fmul f0, f4, f0 -/* 802E1378 002DE2B8 FC 02 00 28 */ fsub f0, f2, f0 -/* 802E137C 002DE2BC FC 01 00 32 */ fmul f0, f1, f0 -/* 802E1380 002DE2C0 FC 23 00 32 */ fmul f1, f3, f0 -/* 802E1384 002DE2C4 FC 00 00 32 */ fmul f0, f0, f0 -/* 802E1388 002DE2C8 FC 04 00 32 */ fmul f0, f4, f0 -/* 802E138C 002DE2CC FC 02 00 28 */ fsub f0, f2, f0 -/* 802E1390 002DE2D0 FC 01 00 32 */ fmul f0, f1, f0 -/* 802E1394 002DE2D4 FC 84 00 32 */ fmul f4, f4, f0 -/* 802E1398 002DE2D8 FC 80 20 18 */ frsp f4, f4 -/* 802E139C 002DE2DC 48 00 00 88 */ b lbl_802E1424 -lbl_802E13A0: -/* 802E13A0 002DE2E0 C8 02 C6 40 */ lfd f0, lbl_80456040-_SDA2_BASE_(r2) -/* 802E13A4 002DE2E4 FC 04 00 40 */ fcmpo cr0, f4, f0 -/* 802E13A8 002DE2E8 40 80 00 10 */ bge lbl_802E13B8 -/* 802E13AC 002DE2EC 3C 60 80 45 */ lis r3, lbl_80450AE0@ha -/* 802E13B0 002DE2F0 C0 83 0A E0 */ lfs f4, lbl_80450AE0@l(r3) -/* 802E13B4 002DE2F4 48 00 00 70 */ b lbl_802E1424 -lbl_802E13B8: -/* 802E13B8 002DE2F8 D0 81 00 08 */ stfs f4, 8(r1) -/* 802E13BC 002DE2FC 80 81 00 08 */ lwz r4, 8(r1) -/* 802E13C0 002DE300 54 83 00 50 */ rlwinm r3, r4, 0, 1, 8 -/* 802E13C4 002DE304 3C 00 7F 80 */ lis r0, 0x7f80 -/* 802E13C8 002DE308 7C 03 00 00 */ cmpw r3, r0 -/* 802E13CC 002DE30C 41 82 00 14 */ beq lbl_802E13E0 -/* 802E13D0 002DE310 40 80 00 40 */ bge lbl_802E1410 -/* 802E13D4 002DE314 2C 03 00 00 */ cmpwi r3, 0 -/* 802E13D8 002DE318 41 82 00 20 */ beq lbl_802E13F8 -/* 802E13DC 002DE31C 48 00 00 34 */ b lbl_802E1410 -lbl_802E13E0: -/* 802E13E0 002DE320 54 80 02 7F */ clrlwi. r0, r4, 9 -/* 802E13E4 002DE324 41 82 00 0C */ beq lbl_802E13F0 -/* 802E13E8 002DE328 38 00 00 01 */ li r0, 1 -/* 802E13EC 002DE32C 48 00 00 28 */ b lbl_802E1414 -lbl_802E13F0: -/* 802E13F0 002DE330 38 00 00 02 */ li r0, 2 -/* 802E13F4 002DE334 48 00 00 20 */ b lbl_802E1414 -lbl_802E13F8: -/* 802E13F8 002DE338 54 80 02 7F */ clrlwi. r0, r4, 9 -/* 802E13FC 002DE33C 41 82 00 0C */ beq lbl_802E1408 -/* 802E1400 002DE340 38 00 00 05 */ li r0, 5 -/* 802E1404 002DE344 48 00 00 10 */ b lbl_802E1414 -lbl_802E1408: -/* 802E1408 002DE348 38 00 00 03 */ li r0, 3 -/* 802E140C 002DE34C 48 00 00 08 */ b lbl_802E1414 -lbl_802E1410: -/* 802E1410 002DE350 38 00 00 04 */ li r0, 4 -lbl_802E1414: -/* 802E1414 002DE354 2C 00 00 01 */ cmpwi r0, 1 -/* 802E1418 002DE358 40 82 00 0C */ bne lbl_802E1424 -/* 802E141C 002DE35C 3C 60 80 45 */ lis r3, lbl_80450AE0@ha -/* 802E1420 002DE360 C0 83 0A E0 */ lfs f4, lbl_80450AE0@l(r3) -lbl_802E1424: -/* 802E1424 002DE364 D0 9D 00 08 */ stfs f4, 8(r29) -/* 802E1428 002DE368 C0 3D 00 08 */ lfs f1, 8(r29) -/* 802E142C 002DE36C C0 02 C6 48 */ lfs f0, lbl_80456048-_SDA2_BASE_(r2) -/* 802E1430 002DE370 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 802E1434 002DE374 40 81 00 30 */ ble lbl_802E1464 -/* 802E1438 002DE378 2C 06 00 01 */ cmpwi r6, 1 -/* 802E143C 002DE37C 40 82 00 20 */ bne lbl_802E145C -/* 802E1440 002DE380 C0 1D 00 00 */ lfs f0, 0(r29) -/* 802E1444 002DE384 EC 00 08 24 */ fdivs f0, f0, f1 -/* 802E1448 002DE388 D0 1D 00 00 */ stfs f0, 0(r29) -/* 802E144C 002DE38C C0 3D 00 04 */ lfs f1, 4(r29) -/* 802E1450 002DE390 C0 1D 00 08 */ lfs f0, 8(r29) -/* 802E1454 002DE394 EC 01 00 24 */ fdivs f0, f1, f0 -/* 802E1458 002DE398 D0 1D 00 04 */ stfs f0, 4(r29) -lbl_802E145C: -/* 802E145C 002DE39C C0 02 C6 48 */ lfs f0, lbl_80456048-_SDA2_BASE_(r2) -/* 802E1460 002DE3A0 D0 1D 00 08 */ stfs f0, 8(r29) -lbl_802E1464: -/* 802E1464 002DE3A4 C0 1D 00 08 */ lfs f0, 8(r29) -/* 802E1468 002DE3A8 C0 22 C6 28 */ lfs f1, lbl_80456028-_SDA2_BASE_(r2) -/* 802E146C 002DE3AC FC 00 08 40 */ fcmpo cr0, f0, f1 -/* 802E1470 002DE3B0 40 81 00 5C */ ble lbl_802E14CC -/* 802E1474 002DE3B4 C0 1D 00 04 */ lfs f0, 4(r29) -/* 802E1478 002DE3B8 FC 01 00 00 */ fcmpu cr0, f1, f0 -/* 802E147C 002DE3BC 40 82 00 28 */ bne lbl_802E14A4 -/* 802E1480 002DE3C0 C0 1D 00 00 */ lfs f0, 0(r29) -/* 802E1484 002DE3C4 FC 00 08 40 */ fcmpo cr0, f0, f1 -/* 802E1488 002DE3C8 40 81 00 10 */ ble lbl_802E1498 -/* 802E148C 002DE3CC 38 00 40 00 */ li r0, 0x4000 -/* 802E1490 002DE3D0 B0 1D 00 0C */ sth r0, 0xc(r29) -/* 802E1494 002DE3D4 48 00 00 38 */ b lbl_802E14CC -lbl_802E1498: -/* 802E1498 002DE3D8 38 00 C0 00 */ li r0, -16384 -/* 802E149C 002DE3DC B0 1D 00 0C */ sth r0, 0xc(r29) -/* 802E14A0 002DE3E0 48 00 00 2C */ b lbl_802E14CC -lbl_802E14A4: -/* 802E14A4 002DE3E4 C0 3D 00 00 */ lfs f1, 0(r29) -/* 802E14A8 002DE3E8 FC 40 00 50 */ fneg f2, f0 -/* 802E14AC 002DE3EC 48 08 B2 75 */ bl func_8036C720 -/* 802E14B0 002DE3F0 FC 20 08 18 */ frsp f1, f1 -/* 802E14B4 002DE3F4 C0 02 C6 4C */ lfs f0, lbl_8045604C-_SDA2_BASE_(r2) -/* 802E14B8 002DE3F8 EC 00 00 72 */ fmuls f0, f0, f1 -/* 802E14BC 002DE3FC FC 00 00 1E */ fctiwz f0, f0 -/* 802E14C0 002DE400 D8 01 00 28 */ stfd f0, 0x28(r1) -/* 802E14C4 002DE404 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 802E14C8 002DE408 B0 1D 00 0C */ sth r0, 0xc(r29) -lbl_802E14CC: -/* 802E14CC 002DE40C 7F A3 EB 78 */ mr r3, r29 -/* 802E14D0 002DE410 2C 1E 00 00 */ cmpwi r30, 0 -/* 802E14D4 002DE414 38 00 00 10 */ li r0, 0x10 -/* 802E14D8 002DE418 40 82 00 08 */ bne lbl_802E14E0 -/* 802E14DC 002DE41C 38 00 00 18 */ li r0, 0x18 -lbl_802E14E0: -/* 802E14E0 002DE420 7F E4 04 30 */ srw r4, r31, r0 -/* 802E14E4 002DE424 48 00 00 1D */ bl JUTGamePad_NS_CStick_NS_getButton -/* 802E14E8 002DE428 39 61 00 40 */ addi r11, r1, 0x40 -/* 802E14EC 002DE42C 48 08 0D 3D */ bl _restgpr_29 -/* 802E14F0 002DE430 80 01 00 44 */ lwz r0, 0x44(r1) -/* 802E14F4 002DE434 7C 08 03 A6 */ mtlr r0 -/* 802E14F8 002DE438 38 21 00 40 */ addi r1, r1, 0x40 -/* 802E14FC 002DE43C 4E 80 00 20 */ blr - -.global JUTGamePad_NS_CStick_NS_getButton -JUTGamePad_NS_CStick_NS_getButton: -/* 802E1500 002DE440 54 80 07 3E */ clrlwi r0, r4, 0x1c -/* 802E1504 002DE444 C0 2D 83 64 */ lfs f1, lbl_804508E4-_SDA_BASE_(r13) -/* 802E1508 002DE448 FC 80 08 50 */ fneg f4, f1 -/* 802E150C 002DE44C C0 43 00 00 */ lfs f2, 0(r3) -/* 802E1510 002DE450 FC 04 10 40 */ fcmpo cr0, f4, f2 -/* 802E1514 002DE454 40 80 00 14 */ bge lbl_802E1528 -/* 802E1518 002DE458 FC 02 08 40 */ fcmpo cr0, f2, f1 -/* 802E151C 002DE45C 40 80 00 0C */ bge lbl_802E1528 -/* 802E1520 002DE460 54 00 00 3A */ rlwinm r0, r0, 0, 0, 0x1d -/* 802E1524 002DE464 48 00 00 38 */ b lbl_802E155C -lbl_802E1528: -/* 802E1528 002DE468 C0 6D 83 60 */ lfs f3, lbl_804508E0-_SDA_BASE_(r13) -/* 802E152C 002DE46C FC 00 18 50 */ fneg f0, f3 -/* 802E1530 002DE470 FC 02 00 40 */ fcmpo cr0, f2, f0 -/* 802E1534 002DE474 4C 40 13 82 */ cror 2, 0, 2 -/* 802E1538 002DE478 40 82 00 10 */ bne lbl_802E1548 -/* 802E153C 002DE47C 54 00 07 FA */ rlwinm r0, r0, 0, 0x1f, 0x1d -/* 802E1540 002DE480 60 00 00 01 */ ori r0, r0, 1 -/* 802E1544 002DE484 48 00 00 18 */ b lbl_802E155C -lbl_802E1548: -/* 802E1548 002DE488 FC 02 18 40 */ fcmpo cr0, f2, f3 -/* 802E154C 002DE48C 4C 41 13 82 */ cror 2, 1, 2 -/* 802E1550 002DE490 40 82 00 0C */ bne lbl_802E155C -/* 802E1554 002DE494 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e -/* 802E1558 002DE498 60 00 00 02 */ ori r0, r0, 2 -lbl_802E155C: -/* 802E155C 002DE49C C0 43 00 04 */ lfs f2, 4(r3) -/* 802E1560 002DE4A0 FC 04 10 40 */ fcmpo cr0, f4, f2 -/* 802E1564 002DE4A4 40 80 00 14 */ bge lbl_802E1578 -/* 802E1568 002DE4A8 FC 02 08 40 */ fcmpo cr0, f2, f1 -/* 802E156C 002DE4AC 40 80 00 0C */ bge lbl_802E1578 -/* 802E1570 002DE4B0 54 00 07 B6 */ rlwinm r0, r0, 0, 0x1e, 0x1b -/* 802E1574 002DE4B4 48 00 00 38 */ b lbl_802E15AC -lbl_802E1578: -/* 802E1578 002DE4B8 C0 2D 83 60 */ lfs f1, lbl_804508E0-_SDA_BASE_(r13) -/* 802E157C 002DE4BC FC 00 08 50 */ fneg f0, f1 -/* 802E1580 002DE4C0 FC 02 00 40 */ fcmpo cr0, f2, f0 -/* 802E1584 002DE4C4 4C 40 13 82 */ cror 2, 0, 2 -/* 802E1588 002DE4C8 40 82 00 10 */ bne lbl_802E1598 -/* 802E158C 002DE4CC 54 00 07 76 */ rlwinm r0, r0, 0, 0x1d, 0x1b -/* 802E1590 002DE4D0 60 00 00 04 */ ori r0, r0, 4 -/* 802E1594 002DE4D4 48 00 00 18 */ b lbl_802E15AC -lbl_802E1598: -/* 802E1598 002DE4D8 FC 02 08 40 */ fcmpo cr0, f2, f1 -/* 802E159C 002DE4DC 4C 41 13 82 */ cror 2, 1, 2 -/* 802E15A0 002DE4E0 40 82 00 0C */ bne lbl_802E15AC -/* 802E15A4 002DE4E4 54 00 07 B8 */ rlwinm r0, r0, 0, 0x1e, 0x1c -/* 802E15A8 002DE4E8 60 00 00 08 */ ori r0, r0, 8 -lbl_802E15AC: -/* 802E15AC 002DE4EC 7C 03 03 78 */ mr r3, r0 -/* 802E15B0 002DE4F0 4E 80 00 20 */ blr - -.global JUTGamePad_NS_CRumble_NS_clear -JUTGamePad_NS_CRumble_NS_clear: -/* 802E15B4 002DE4F4 38 00 00 00 */ li r0, 0 -/* 802E15B8 002DE4F8 90 03 00 00 */ stw r0, 0(r3) -/* 802E15BC 002DE4FC 90 03 00 04 */ stw r0, 4(r3) -/* 802E15C0 002DE500 90 03 00 08 */ stw r0, 8(r3) -/* 802E15C4 002DE504 90 03 00 0C */ stw r0, 0xc(r3) -/* 802E15C8 002DE508 90 03 00 10 */ stw r0, 0x10(r3) -/* 802E15CC 002DE50C 3C 00 F0 00 */ lis r0, 0xf000 -/* 802E15D0 002DE510 90 0D 8F 68 */ stw r0, lbl_804514E8-_SDA_BASE_(r13) -/* 802E15D4 002DE514 4E 80 00 20 */ blr - -.global JUTGamePad_NS_CRumble_NS_clear_X1_ -JUTGamePad_NS_CRumble_NS_clear_X1_: -/* 802E15D8 002DE518 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802E15DC 002DE51C 7C 08 02 A6 */ mflr r0 -/* 802E15E0 002DE520 90 01 00 14 */ stw r0, 0x14(r1) -/* 802E15E4 002DE524 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802E15E8 002DE528 7C 7F 1B 78 */ mr r31, r3 -/* 802E15EC 002DE52C A8 04 00 7C */ lha r0, 0x7c(r4) -/* 802E15F0 002DE530 7C 05 07 35 */ extsh. r5, r0 -/* 802E15F4 002DE534 41 80 00 24 */ blt lbl_802E1618 -/* 802E15F8 002DE538 2C 05 00 04 */ cmpwi r5, 4 -/* 802E15FC 002DE53C 40 80 00 1C */ bge lbl_802E1618 -/* 802E1600 002DE540 38 00 00 00 */ li r0, 0 -/* 802E1604 002DE544 38 6D 8F 64 */ addi r3, r13, lbl_804514E4-_SDA_BASE_ -/* 802E1608 002DE548 7C 03 29 AE */ stbx r0, r3, r5 -/* 802E160C 002DE54C A8 64 00 7C */ lha r3, 0x7c(r4) -/* 802E1610 002DE550 38 80 00 01 */ li r4, 1 -/* 802E1614 002DE554 48 00 00 79 */ bl JUTGamePad_NS_CRumble_NS_stopMotor -lbl_802E1618: -/* 802E1618 002DE558 7F E3 FB 78 */ mr r3, r31 -/* 802E161C 002DE55C 4B FF FF 99 */ bl JUTGamePad_NS_CRumble_NS_clear -/* 802E1620 002DE560 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802E1624 002DE564 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802E1628 002DE568 7C 08 03 A6 */ mtlr r0 -/* 802E162C 002DE56C 38 21 00 10 */ addi r1, r1, 0x10 -/* 802E1630 002DE570 4E 80 00 20 */ blr - -.global JUTGamePad_NS_CRumble_NS_startMotor -JUTGamePad_NS_CRumble_NS_startMotor: -/* 802E1634 002DE574 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802E1638 002DE578 7C 08 02 A6 */ mflr r0 -/* 802E163C 002DE57C 90 01 00 14 */ stw r0, 0x14(r1) -/* 802E1640 002DE580 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802E1644 002DE584 7C 7F 1B 78 */ mr r31, r3 -/* 802E1648 002DE588 80 AD 8F 68 */ lwz r5, lbl_804514E8-_SDA_BASE_(r13) -/* 802E164C 002DE58C 54 60 10 3A */ slwi r0, r3, 2 -/* 802E1650 002DE590 3C 80 80 3D */ lis r4, lbl_803CC5F0@ha -/* 802E1654 002DE594 38 84 C5 F0 */ addi r4, r4, lbl_803CC5F0@l -/* 802E1658 002DE598 7C 04 00 2E */ lwzx r0, r4, r0 -/* 802E165C 002DE59C 7C A0 00 39 */ and. r0, r5, r0 -/* 802E1660 002DE5A0 41 82 00 18 */ beq lbl_802E1678 -/* 802E1664 002DE5A4 38 80 00 01 */ li r4, 1 -/* 802E1668 002DE5A8 48 06 DB 39 */ bl PADControlMotor -/* 802E166C 002DE5AC 38 00 00 01 */ li r0, 1 -/* 802E1670 002DE5B0 38 6D 8F 64 */ addi r3, r13, lbl_804514E4-_SDA_BASE_ -/* 802E1674 002DE5B4 7C 03 F9 AE */ stbx r0, r3, r31 -lbl_802E1678: -/* 802E1678 002DE5B8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802E167C 002DE5BC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802E1680 002DE5C0 7C 08 03 A6 */ mtlr r0 -/* 802E1684 002DE5C4 38 21 00 10 */ addi r1, r1, 0x10 -/* 802E1688 002DE5C8 4E 80 00 20 */ blr - -.global JUTGamePad_NS_CRumble_NS_stopMotor -JUTGamePad_NS_CRumble_NS_stopMotor: -/* 802E168C 002DE5CC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802E1690 002DE5D0 7C 08 02 A6 */ mflr r0 -/* 802E1694 002DE5D4 90 01 00 14 */ stw r0, 0x14(r1) -/* 802E1698 002DE5D8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 802E169C 002DE5DC 7C 7F 1B 78 */ mr r31, r3 -/* 802E16A0 002DE5E0 80 CD 8F 68 */ lwz r6, lbl_804514E8-_SDA_BASE_(r13) -/* 802E16A4 002DE5E4 54 60 10 3A */ slwi r0, r3, 2 -/* 802E16A8 002DE5E8 3C A0 80 3D */ lis r5, lbl_803CC5F0@ha -/* 802E16AC 002DE5EC 38 A5 C5 F0 */ addi r5, r5, lbl_803CC5F0@l -/* 802E16B0 002DE5F0 7C 05 00 2E */ lwzx r0, r5, r0 -/* 802E16B4 002DE5F4 7C C0 00 39 */ and. r0, r6, r0 -/* 802E16B8 002DE5F8 41 82 00 2C */ beq lbl_802E16E4 -/* 802E16BC 002DE5FC 54 80 06 3E */ clrlwi r0, r4, 0x18 -/* 802E16C0 002DE600 20 00 00 00 */ subfic r0, r0, 0 -/* 802E16C4 002DE604 7C 80 01 10 */ subfe r4, r0, r0 -/* 802E16C8 002DE608 38 00 00 02 */ li r0, 2 -/* 802E16CC 002DE60C 7C 00 20 38 */ and r0, r0, r4 -/* 802E16D0 002DE610 54 04 06 3E */ clrlwi r4, r0, 0x18 -/* 802E16D4 002DE614 48 06 DA CD */ bl PADControlMotor -/* 802E16D8 002DE618 38 00 00 00 */ li r0, 0 -/* 802E16DC 002DE61C 38 6D 8F 64 */ addi r3, r13, lbl_804514E4-_SDA_BASE_ -/* 802E16E0 002DE620 7C 03 F9 AE */ stbx r0, r3, r31 -lbl_802E16E4: -/* 802E16E4 002DE624 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 802E16E8 002DE628 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802E16EC 002DE62C 7C 08 03 A6 */ mtlr r0 -/* 802E16F0 002DE630 38 21 00 10 */ addi r1, r1, 0x10 -/* 802E16F4 002DE634 4E 80 00 20 */ blr - -.global getNumBit -getNumBit: -/* 802E16F8 002DE638 38 A0 00 80 */ li r5, 0x80 -/* 802E16FC 002DE63C 54 80 07 7E */ clrlwi r0, r4, 0x1d -/* 802E1700 002DE640 7C A5 06 30 */ sraw r5, r5, r0 -/* 802E1704 002DE644 7C 80 1E 70 */ srawi r0, r4, 3 -/* 802E1708 002DE648 7C 03 00 AE */ lbzx r0, r3, r0 -/* 802E170C 002DE64C 7C A0 00 38 */ and r0, r5, r0 -/* 802E1710 002DE650 54 03 06 3E */ clrlwi r3, r0, 0x18 -/* 802E1714 002DE654 30 03 FF FF */ addic r0, r3, -1 -/* 802E1718 002DE658 7C 60 19 10 */ subfe r3, r0, r3 -/* 802E171C 002DE65C 4E 80 00 20 */ blr - -.global JUTGamePad_NS_CRumble_NS_update -JUTGamePad_NS_CRumble_NS_update: -/* 802E1720 002DE660 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802E1724 002DE664 7C 08 02 A6 */ mflr r0 -/* 802E1728 002DE668 90 01 00 24 */ stw r0, 0x24(r1) -/* 802E172C 002DE66C 39 61 00 20 */ addi r11, r1, 0x20 -/* 802E1730 002DE670 48 08 0A AD */ bl _savegpr_29 -/* 802E1734 002DE674 7C 7E 1B 78 */ mr r30, r3 -/* 802E1738 002DE678 7C 9D 23 78 */ mr r29, r4 -/* 802E173C 002DE67C 80 8D 8F 68 */ lwz r4, lbl_804514E8-_SDA_BASE_(r13) -/* 802E1740 002DE680 7F BF 07 34 */ extsh r31, r29 -/* 802E1744 002DE684 57 E0 10 3A */ slwi r0, r31, 2 -/* 802E1748 002DE688 3C 60 80 3D */ lis r3, lbl_803CC5F0@ha -/* 802E174C 002DE68C 38 63 C5 F0 */ addi r3, r3, lbl_803CC5F0@l -/* 802E1750 002DE690 7C 03 00 2E */ lwzx r0, r3, r0 -/* 802E1754 002DE694 7C 83 00 38 */ and r3, r4, r0 -/* 802E1758 002DE698 30 03 FF FF */ addic r0, r3, -1 -/* 802E175C 002DE69C 7C 00 19 10 */ subfe r0, r0, r3 -/* 802E1760 002DE6A0 54 00 06 3F */ clrlwi. r0, r0, 0x18 -/* 802E1764 002DE6A4 40 82 00 1C */ bne lbl_802E1780 -/* 802E1768 002DE6A8 38 00 00 00 */ li r0, 0 -/* 802E176C 002DE6AC 90 1E 00 00 */ stw r0, 0(r30) -/* 802E1770 002DE6B0 90 1E 00 04 */ stw r0, 4(r30) -/* 802E1774 002DE6B4 90 1E 00 08 */ stw r0, 8(r30) -/* 802E1778 002DE6B8 90 1E 00 0C */ stw r0, 0xc(r30) -/* 802E177C 002DE6BC 90 1E 00 10 */ stw r0, 0x10(r30) -lbl_802E1780: -/* 802E1780 002DE6C0 80 1E 00 04 */ lwz r0, 4(r30) -/* 802E1784 002DE6C4 28 00 00 00 */ cmplwi r0, 0 -/* 802E1788 002DE6C8 41 82 01 04 */ beq lbl_802E188C -/* 802E178C 002DE6CC 80 BE 00 00 */ lwz r5, 0(r30) -/* 802E1790 002DE6D0 7C 05 00 40 */ cmplw r5, r0 -/* 802E1794 002DE6D4 41 80 00 1C */ blt lbl_802E17B0 -/* 802E1798 002DE6D8 7F E3 FB 78 */ mr r3, r31 -/* 802E179C 002DE6DC 38 80 00 01 */ li r4, 1 -/* 802E17A0 002DE6E0 4B FF FE ED */ bl JUTGamePad_NS_CRumble_NS_stopMotor -/* 802E17A4 002DE6E4 38 00 00 00 */ li r0, 0 -/* 802E17A8 002DE6E8 90 1E 00 04 */ stw r0, 4(r30) -/* 802E17AC 002DE6EC 48 00 00 D4 */ b lbl_802E1880 -lbl_802E17B0: -/* 802E17B0 002DE6F0 80 9E 00 0C */ lwz r4, 0xc(r30) -/* 802E17B4 002DE6F4 28 04 00 00 */ cmplwi r4, 0 -/* 802E17B8 002DE6F8 40 82 00 24 */ bne lbl_802E17DC -/* 802E17BC 002DE6FC 7F A0 07 34 */ extsh r0, r29 -/* 802E17C0 002DE700 38 6D 8F 64 */ addi r3, r13, lbl_804514E4-_SDA_BASE_ -/* 802E17C4 002DE704 7C 03 00 AE */ lbzx r0, r3, r0 -/* 802E17C8 002DE708 28 00 00 00 */ cmplwi r0, 0 -/* 802E17CC 002DE70C 40 82 00 C0 */ bne lbl_802E188C -/* 802E17D0 002DE710 7F E3 FB 78 */ mr r3, r31 -/* 802E17D4 002DE714 4B FF FE 61 */ bl JUTGamePad_NS_CRumble_NS_startMotor -/* 802E17D8 002DE718 48 00 00 B4 */ b lbl_802E188C -lbl_802E17DC: -/* 802E17DC 002DE71C 80 7E 00 08 */ lwz r3, 8(r30) -/* 802E17E0 002DE720 7C 05 23 96 */ divwu r0, r5, r4 -/* 802E17E4 002DE724 7C 00 21 D6 */ mullw r0, r0, r4 -/* 802E17E8 002DE728 7C 80 28 50 */ subf r4, r0, r5 -/* 802E17EC 002DE72C 4B FF FF 0D */ bl getNumBit -/* 802E17F0 002DE730 7F A0 07 34 */ extsh r0, r29 -/* 802E17F4 002DE734 38 8D 8F 64 */ addi r4, r13, lbl_804514E4-_SDA_BASE_ -/* 802E17F8 002DE738 7C 84 00 AE */ lbzx r4, r4, r0 -/* 802E17FC 002DE73C 30 04 FF FF */ addic r0, r4, -1 -/* 802E1800 002DE740 7C 00 21 10 */ subfe r0, r0, r4 -/* 802E1804 002DE744 54 1D 06 3E */ clrlwi r29, r0, 0x18 -/* 802E1808 002DE748 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 802E180C 002DE74C 41 82 00 18 */ beq lbl_802E1824 -/* 802E1810 002DE750 28 1D 00 00 */ cmplwi r29, 0 -/* 802E1814 002DE754 40 82 00 10 */ bne lbl_802E1824 -/* 802E1818 002DE758 7F E3 FB 78 */ mr r3, r31 -/* 802E181C 002DE75C 4B FF FE 19 */ bl JUTGamePad_NS_CRumble_NS_startMotor -/* 802E1820 002DE760 48 00 00 60 */ b lbl_802E1880 -lbl_802E1824: -/* 802E1824 002DE764 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 802E1828 002DE768 40 82 00 58 */ bne lbl_802E1880 -/* 802E182C 002DE76C 38 80 00 00 */ li r4, 0 -/* 802E1830 002DE770 80 7E 00 10 */ lwz r3, 0x10(r30) -/* 802E1834 002DE774 28 03 00 00 */ cmplwi r3, 0 -/* 802E1838 002DE778 41 82 00 20 */ beq lbl_802E1858 -/* 802E183C 002DE77C 80 BE 00 00 */ lwz r5, 0(r30) -/* 802E1840 002DE780 80 9E 00 0C */ lwz r4, 0xc(r30) -/* 802E1844 002DE784 7C 05 23 96 */ divwu r0, r5, r4 -/* 802E1848 002DE788 7C 00 21 D6 */ mullw r0, r0, r4 -/* 802E184C 002DE78C 7C 80 28 50 */ subf r4, r0, r5 -/* 802E1850 002DE790 4B FF FE A9 */ bl getNumBit -/* 802E1854 002DE794 7C 64 1B 78 */ mr r4, r3 -lbl_802E1858: -/* 802E1858 002DE798 28 1D 00 00 */ cmplwi r29, 0 -/* 802E185C 002DE79C 41 82 00 10 */ beq lbl_802E186C -/* 802E1860 002DE7A0 7F E3 FB 78 */ mr r3, r31 -/* 802E1864 002DE7A4 4B FF FE 29 */ bl JUTGamePad_NS_CRumble_NS_stopMotor -/* 802E1868 002DE7A8 48 00 00 18 */ b lbl_802E1880 -lbl_802E186C: -/* 802E186C 002DE7AC 54 80 06 3F */ clrlwi. r0, r4, 0x18 -/* 802E1870 002DE7B0 41 82 00 10 */ beq lbl_802E1880 -/* 802E1874 002DE7B4 7F E3 FB 78 */ mr r3, r31 -/* 802E1878 002DE7B8 38 80 00 01 */ li r4, 1 -/* 802E187C 002DE7BC 4B FF FE 11 */ bl JUTGamePad_NS_CRumble_NS_stopMotor -lbl_802E1880: -/* 802E1880 002DE7C0 80 7E 00 00 */ lwz r3, 0(r30) -/* 802E1884 002DE7C4 38 03 00 01 */ addi r0, r3, 1 -/* 802E1888 002DE7C8 90 1E 00 00 */ stw r0, 0(r30) -lbl_802E188C: -/* 802E188C 002DE7CC 39 61 00 20 */ addi r11, r1, 0x20 -/* 802E1890 002DE7D0 48 08 09 99 */ bl _restgpr_29 -/* 802E1894 002DE7D4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802E1898 002DE7D8 7C 08 03 A6 */ mtlr r0 -/* 802E189C 002DE7DC 38 21 00 20 */ addi r1, r1, 0x20 -/* 802E18A0 002DE7E0 4E 80 00 20 */ blr - -.global JUTGamePad_NS_CRumble_NS_triggerPatternedRumble -JUTGamePad_NS_CRumble_NS_triggerPatternedRumble: -/* 802E18A4 002DE7E4 80 03 00 08 */ lwz r0, 8(r3) -/* 802E18A8 002DE7E8 28 00 00 00 */ cmplwi r0, 0 -/* 802E18AC 002DE7EC 4D 82 00 20 */ beqlr -/* 802E18B0 002DE7F0 80 03 00 0C */ lwz r0, 0xc(r3) -/* 802E18B4 002DE7F4 28 00 00 00 */ cmplwi r0, 0 -/* 802E18B8 002DE7F8 4D 82 00 20 */ beqlr -/* 802E18BC 002DE7FC 90 83 00 04 */ stw r4, 4(r3) -/* 802E18C0 002DE800 38 00 00 00 */ li r0, 0 -/* 802E18C4 002DE804 90 03 00 00 */ stw r0, 0(r3) -/* 802E18C8 002DE808 4E 80 00 20 */ blr - -.global JUTGamePad_NS_CRumble_NS_startPatternedRumble -JUTGamePad_NS_CRumble_NS_startPatternedRumble: -/* 802E18CC 002DE80C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802E18D0 002DE810 7C 08 02 A6 */ mflr r0 -/* 802E18D4 002DE814 90 01 00 14 */ stw r0, 0x14(r1) -/* 802E18D8 002DE818 88 04 00 00 */ lbz r0, 0(r4) -/* 802E18DC 002DE81C 54 07 40 2E */ slwi r7, r0, 8 -/* 802E18E0 002DE820 88 04 00 01 */ lbz r0, 1(r4) -/* 802E18E4 002DE824 7C 07 02 14 */ add r0, r7, r0 -/* 802E18E8 002DE828 90 03 00 0C */ stw r0, 0xc(r3) -/* 802E18EC 002DE82C 38 04 00 02 */ addi r0, r4, 2 -/* 802E18F0 002DE830 90 03 00 08 */ stw r0, 8(r3) -/* 802E18F4 002DE834 2C 05 00 01 */ cmpwi r5, 1 -/* 802E18F8 002DE838 41 82 00 2C */ beq lbl_802E1924 -/* 802E18FC 002DE83C 40 80 00 10 */ bge lbl_802E190C -/* 802E1900 002DE840 2C 05 00 00 */ cmpwi r5, 0 -/* 802E1904 002DE844 40 80 00 14 */ bge lbl_802E1918 -/* 802E1908 002DE848 48 00 00 30 */ b lbl_802E1938 -lbl_802E190C: -/* 802E190C 002DE84C 2C 05 00 03 */ cmpwi r5, 3 -/* 802E1910 002DE850 40 80 00 28 */ bge lbl_802E1938 -/* 802E1914 002DE854 48 00 00 1C */ b lbl_802E1930 -lbl_802E1918: -/* 802E1918 002DE858 80 83 00 0C */ lwz r4, 0xc(r3) -/* 802E191C 002DE85C 4B FF FF 89 */ bl JUTGamePad_NS_CRumble_NS_triggerPatternedRumble -/* 802E1920 002DE860 48 00 00 18 */ b lbl_802E1938 -lbl_802E1924: -/* 802E1924 002DE864 38 80 FF FF */ li r4, -1 -/* 802E1928 002DE868 4B FF FF 7D */ bl JUTGamePad_NS_CRumble_NS_triggerPatternedRumble -/* 802E192C 002DE86C 48 00 00 0C */ b lbl_802E1938 -lbl_802E1930: -/* 802E1930 002DE870 7C C4 33 78 */ mr r4, r6 -/* 802E1934 002DE874 4B FF FF 71 */ bl JUTGamePad_NS_CRumble_NS_triggerPatternedRumble -lbl_802E1938: -/* 802E1938 002DE878 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802E193C 002DE87C 7C 08 03 A6 */ mtlr r0 -/* 802E1940 002DE880 38 21 00 10 */ addi r1, r1, 0x10 -/* 802E1944 002DE884 4E 80 00 20 */ blr - -.global JUTGamePad_NS_CRumble_NS_stopPatternedRumble -JUTGamePad_NS_CRumble_NS_stopPatternedRumble: -/* 802E1948 002DE888 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802E194C 002DE88C 7C 08 02 A6 */ mflr r0 -/* 802E1950 002DE890 90 01 00 14 */ stw r0, 0x14(r1) -/* 802E1954 002DE894 38 00 00 00 */ li r0, 0 -/* 802E1958 002DE898 90 03 00 04 */ stw r0, 4(r3) -/* 802E195C 002DE89C 7C 83 07 34 */ extsh r3, r4 -/* 802E1960 002DE8A0 38 80 00 01 */ li r4, 1 -/* 802E1964 002DE8A4 4B FF FD 29 */ bl JUTGamePad_NS_CRumble_NS_stopMotor -/* 802E1968 002DE8A8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802E196C 002DE8AC 7C 08 03 A6 */ mtlr r0 -/* 802E1970 002DE8B0 38 21 00 10 */ addi r1, r1, 0x10 -/* 802E1974 002DE8B4 4E 80 00 20 */ blr - -.global JUTGamePad_NS_CRumble_NS_stopPatternedRumbleAtThePeriod -JUTGamePad_NS_CRumble_NS_stopPatternedRumbleAtThePeriod: -/* 802E1978 002DE8B8 80 A3 00 0C */ lwz r5, 0xc(r3) -/* 802E197C 002DE8BC 80 83 00 00 */ lwz r4, 0(r3) -/* 802E1980 002DE8C0 38 05 FF FF */ addi r0, r5, -1 -/* 802E1984 002DE8C4 7C 84 02 14 */ add r4, r4, r0 -/* 802E1988 002DE8C8 7C 04 2B 96 */ divwu r0, r4, r5 -/* 802E198C 002DE8CC 7C 00 29 D6 */ mullw r0, r0, r5 -/* 802E1990 002DE8D0 7C 00 20 50 */ subf r0, r0, r4 -/* 802E1994 002DE8D4 90 03 00 04 */ stw r0, 4(r3) -/* 802E1998 002DE8D8 4E 80 00 20 */ blr - -.global JUTGamePad_NS_getGamePad -JUTGamePad_NS_getGamePad: -/* 802E199C 002DE8DC 3C 80 80 43 */ lis r4, lbl_804343E4@ha -/* 802E19A0 002DE8E0 38 84 43 E4 */ addi r4, r4, lbl_804343E4@l -/* 802E19A4 002DE8E4 80 84 00 00 */ lwz r4, 0(r4) -/* 802E19A8 002DE8E8 48 00 00 20 */ b lbl_802E19C8 -lbl_802E19AC: -/* 802E19AC 002DE8EC 80 A4 00 00 */ lwz r5, 0(r4) -/* 802E19B0 002DE8F0 A8 05 00 7C */ lha r0, 0x7c(r5) -/* 802E19B4 002DE8F4 7C 03 00 00 */ cmpw r3, r0 -/* 802E19B8 002DE8F8 40 82 00 0C */ bne lbl_802E19C4 -/* 802E19BC 002DE8FC 7C A3 2B 78 */ mr r3, r5 -/* 802E19C0 002DE900 4E 80 00 20 */ blr -lbl_802E19C4: -/* 802E19C4 002DE904 80 84 00 0C */ lwz r4, 0xc(r4) -lbl_802E19C8: -/* 802E19C8 002DE908 28 04 00 00 */ cmplwi r4, 0 -/* 802E19CC 002DE90C 40 82 FF E0 */ bne lbl_802E19AC -/* 802E19D0 002DE910 38 60 00 00 */ li r3, 0 -/* 802E19D4 002DE914 4E 80 00 20 */ blr - -.global JUTGamePad_NS_CRumble_NS_setEnabled -JUTGamePad_NS_CRumble_NS_setEnabled: -/* 802E19D8 002DE918 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 802E19DC 002DE91C 7C 08 02 A6 */ mflr r0 -/* 802E19E0 002DE920 90 01 00 24 */ stw r0, 0x24(r1) -/* 802E19E4 002DE924 39 61 00 20 */ addi r11, r1, 0x20 -/* 802E19E8 002DE928 48 08 07 ED */ bl _savegpr_27 -/* 802E19EC 002DE92C 7C 7B 1B 78 */ mr r27, r3 -/* 802E19F0 002DE930 3B 80 00 00 */ li r28, 0 -/* 802E19F4 002DE934 3B C0 00 00 */ li r30, 0 -/* 802E19F8 002DE938 3C 60 80 3D */ lis r3, lbl_803CC600@ha -/* 802E19FC 002DE93C 3B A3 C6 00 */ addi r29, r3, lbl_803CC600@l -/* 802E1A00 002DE940 3B ED 8F 64 */ addi r31, r13, lbl_804514E4-_SDA_BASE_ -lbl_802E1A04: -/* 802E1A04 002DE944 80 6D 8F 68 */ lwz r3, lbl_804514E8-_SDA_BASE_(r13) -/* 802E1A08 002DE948 7C 1D F0 2E */ lwzx r0, r29, r30 -/* 802E1A0C 002DE94C 7C 60 00 39 */ and. r0, r3, r0 -/* 802E1A10 002DE950 40 82 00 38 */ bne lbl_802E1A48 -/* 802E1A14 002DE954 88 1F 00 00 */ lbz r0, 0(r31) -/* 802E1A18 002DE958 28 00 00 00 */ cmplwi r0, 0 -/* 802E1A1C 002DE95C 41 82 00 10 */ beq lbl_802E1A2C -/* 802E1A20 002DE960 7F 83 E3 78 */ mr r3, r28 -/* 802E1A24 002DE964 38 80 00 00 */ li r4, 0 -/* 802E1A28 002DE968 4B FF FC 65 */ bl JUTGamePad_NS_CRumble_NS_stopMotor -lbl_802E1A2C: -/* 802E1A2C 002DE96C 7F 83 E3 78 */ mr r3, r28 -/* 802E1A30 002DE970 4B FF FF 6D */ bl JUTGamePad_NS_getGamePad -/* 802E1A34 002DE974 7C 64 1B 79 */ or. r4, r3, r3 -/* 802E1A38 002DE978 41 82 00 10 */ beq lbl_802E1A48 -/* 802E1A3C 002DE97C 38 64 00 68 */ addi r3, r4, 0x68 -/* 802E1A40 002DE980 A8 84 00 7C */ lha r4, 0x7c(r4) -/* 802E1A44 002DE984 4B FF FF 05 */ bl JUTGamePad_NS_CRumble_NS_stopPatternedRumble -lbl_802E1A48: -/* 802E1A48 002DE988 3B 9C 00 01 */ addi r28, r28, 1 -/* 802E1A4C 002DE98C 2C 1C 00 04 */ cmpwi r28, 4 -/* 802E1A50 002DE990 3B FF 00 01 */ addi r31, r31, 1 -/* 802E1A54 002DE994 3B DE 00 04 */ addi r30, r30, 4 -/* 802E1A58 002DE998 41 80 FF AC */ blt lbl_802E1A04 -/* 802E1A5C 002DE99C 57 60 00 06 */ rlwinm r0, r27, 0, 0, 3 -/* 802E1A60 002DE9A0 90 0D 8F 68 */ stw r0, lbl_804514E8-_SDA_BASE_(r13) -/* 802E1A64 002DE9A4 39 61 00 20 */ addi r11, r1, 0x20 -/* 802E1A68 002DE9A8 48 08 07 B9 */ bl _restgpr_27 -/* 802E1A6C 002DE9AC 80 01 00 24 */ lwz r0, 0x24(r1) -/* 802E1A70 002DE9B0 7C 08 03 A6 */ mtlr r0 -/* 802E1A74 002DE9B4 38 21 00 20 */ addi r1, r1, 0x20 -/* 802E1A78 002DE9B8 4E 80 00 20 */ blr - -.global JUTGamePad_NS_CButton_NS_setRepeat -JUTGamePad_NS_CButton_NS_setRepeat: -/* 802E1A7C 002DE9BC 38 00 00 00 */ li r0, 0 -/* 802E1A80 002DE9C0 90 03 00 20 */ stw r0, 0x20(r3) -/* 802E1A84 002DE9C4 90 03 00 1C */ stw r0, 0x1c(r3) -/* 802E1A88 002DE9C8 90 83 00 24 */ stw r4, 0x24(r3) -/* 802E1A8C 002DE9CC 90 A3 00 28 */ stw r5, 0x28(r3) -/* 802E1A90 002DE9D0 90 C3 00 2C */ stw r6, 0x2c(r3) -/* 802E1A94 002DE9D4 4E 80 00 20 */ blr - -.global JUTGamePad_NS_recalibrate -JUTGamePad_NS_recalibrate: -/* 802E1A98 002DE9D8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802E1A9C 002DE9DC 7C 08 02 A6 */ mflr r0 -/* 802E1AA0 002DE9E0 90 01 00 14 */ stw r0, 0x14(r1) -/* 802E1AA4 002DE9E4 38 80 00 00 */ li r4, 0 -/* 802E1AA8 002DE9E8 80 ED 8F 58 */ lwz r7, lbl_804514D8-_SDA_BASE_(r13) -/* 802E1AAC 002DE9EC 3C A0 80 3D */ lis r5, lbl_803CC600@ha -/* 802E1AB0 002DE9F0 38 C5 C6 00 */ addi r6, r5, lbl_803CC600@l -/* 802E1AB4 002DE9F4 38 A0 FF FF */ li r5, -1 -/* 802E1AB8 002DE9F8 38 00 00 04 */ li r0, 4 -/* 802E1ABC 002DE9FC 7C 09 03 A6 */ mtctr r0 -lbl_802E1AC0: -/* 802E1AC0 002DEA00 7D 06 20 2E */ lwzx r8, r6, r4 -/* 802E1AC4 002DEA04 7C E0 40 39 */ and. r0, r7, r8 -/* 802E1AC8 002DEA08 41 82 00 0C */ beq lbl_802E1AD4 -/* 802E1ACC 002DEA0C 7D 00 2A 78 */ xor r0, r8, r5 -/* 802E1AD0 002DEA10 7C 63 00 38 */ and r3, r3, r0 -lbl_802E1AD4: -/* 802E1AD4 002DEA14 38 84 00 04 */ addi r4, r4, 4 -/* 802E1AD8 002DEA18 42 00 FF E8 */ bdnz lbl_802E1AC0 -/* 802E1ADC 002DEA1C 48 06 D1 61 */ bl PADRecalibrate -/* 802E1AE0 002DEA20 30 03 FF FF */ addic r0, r3, -1 -/* 802E1AE4 002DEA24 7C 00 19 10 */ subfe r0, r0, r3 -/* 802E1AE8 002DEA28 54 03 06 3E */ clrlwi r3, r0, 0x18 -/* 802E1AEC 002DEA2C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802E1AF0 002DEA30 7C 08 03 A6 */ mtlr r0 -/* 802E1AF4 002DEA34 38 21 00 10 */ addi r1, r1, 0x10 -/* 802E1AF8 002DEA38 4E 80 00 20 */ blr - -.global JUTGamePadLongPress_NS_checkCallback -JUTGamePadLongPress_NS_checkCallback: -/* 802E1AFC 002DEA3C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 802E1B00 002DEA40 7C 08 02 A6 */ mflr r0 -/* 802E1B04 002DEA44 90 01 00 14 */ stw r0, 0x14(r1) -/* 802E1B08 002DEA48 7C 66 1B 78 */ mr r6, r3 -/* 802E1B0C 002DEA4C 2C 04 00 00 */ cmpwi r4, 0 -/* 802E1B10 002DEA50 41 80 00 40 */ blt lbl_802E1B50 -/* 802E1B14 002DEA54 80 06 00 1C */ lwz r0, 0x1c(r6) -/* 802E1B18 002DEA58 7C 05 00 40 */ cmplw r5, r0 -/* 802E1B1C 002DEA5C 41 80 00 34 */ blt lbl_802E1B50 -/* 802E1B20 002DEA60 38 00 00 01 */ li r0, 1 -/* 802E1B24 002DEA64 98 06 00 11 */ stb r0, 0x11(r6) -/* 802E1B28 002DEA68 7C 66 22 14 */ add r3, r6, r4 -/* 802E1B2C 002DEA6C 98 03 00 48 */ stb r0, 0x48(r3) -/* 802E1B30 002DEA70 81 86 00 4C */ lwz r12, 0x4c(r6) -/* 802E1B34 002DEA74 28 0C 00 00 */ cmplwi r12, 0 -/* 802E1B38 002DEA78 41 82 00 18 */ beq lbl_802E1B50 -/* 802E1B3C 002DEA7C 7C 83 23 78 */ mr r3, r4 -/* 802E1B40 002DEA80 7C C4 33 78 */ mr r4, r6 -/* 802E1B44 002DEA84 80 A6 00 50 */ lwz r5, 0x50(r6) -/* 802E1B48 002DEA88 7D 89 03 A6 */ mtctr r12 -/* 802E1B4C 002DEA8C 4E 80 04 21 */ bctrl -lbl_802E1B50: -/* 802E1B50 002DEA90 80 01 00 14 */ lwz r0, 0x14(r1) -/* 802E1B54 002DEA94 7C 08 03 A6 */ mtlr r0 -/* 802E1B58 002DEA98 38 21 00 10 */ addi r1, r1, 0x10 -/* 802E1B5C 002DEA9C 4E 80 00 20 */ blr +/* __sinit_JUTGamePad_cpp */ /* 802E1B60 002DEAA0 94 21 FF F0 */ stwu r1, -0x10(r1) /* 802E1B64 002DEAA4 7C 08 02 A6 */ mflr r0 /* 802E1B68 002DEAA8 90 01 00 14 */ stw r0, 0x14(r1) @@ -1608,7 +105,7 @@ JUTGamePad_NS_CStick: /* 802E1CB0 002DEBF0 90 01 00 14 */ stw r0, 0x14(r1) /* 802E1CB4 002DEBF4 93 E1 00 0C */ stw r31, 0xc(r1) /* 802E1CB8 002DEBF8 7C 7F 1B 78 */ mr r31, r3 -/* 802E1CBC 002DEBFC 4B FF F5 61 */ bl JUTGamePad_NS_CStick_NS_clear +/* 802E1CBC 002DEBFC 4B FF F5 61 */ bl clear__Q210JUTGamePad6CStickFv /* 802E1CC0 002DEC00 7F E3 FB 78 */ mr r3, r31 /* 802E1CC4 002DEC04 83 E1 00 0C */ lwz r31, 0xc(r1) /* 802E1CC8 002DEC08 80 01 00 14 */ lwz r0, 0x14(r1) @@ -1622,7 +119,7 @@ JUTGamePad_NS_CButton: /* 802E1CE0 002DEC20 90 01 00 14 */ stw r0, 0x14(r1) /* 802E1CE4 002DEC24 93 E1 00 0C */ stw r31, 0xc(r1) /* 802E1CE8 002DEC28 7C 7F 1B 78 */ mr r31, r3 -/* 802E1CEC 002DEC2C 4B FF F3 65 */ bl JUTGamePad_NS_CButton_NS_clear +/* 802E1CEC 002DEC2C 4B FF F3 65 */ bl clear__Q210JUTGamePad7CButtonFv /* 802E1CF0 002DEC30 7F E3 FB 78 */ mr r3, r31 /* 802E1CF4 002DEC34 83 E1 00 0C */ lwz r31, 0xc(r1) /* 802E1CF8 002DEC38 80 01 00 14 */ lwz r0, 0x14(r1) diff --git a/asm/d/d_vibration.s b/asm/d/d_vibration.s index 4d2365affde..0f7f92ab193 100644 --- a/asm/d/d_vibration.s +++ b/asm/d/d_vibration.s @@ -451,7 +451,7 @@ lbl_8006F750: /* 8006F78C 0006C6CC 38 63 00 68 */ addi r3, r3, 0x68 /* 8006F790 0006C6D0 38 A0 00 00 */ li r5, 0 /* 8006F794 0006C6D4 38 C0 00 3C */ li r6, 0x3c -/* 8006F798 0006C6D8 48 27 21 35 */ bl JUTGamePad_NS_CRumble_NS_startPatternedRumble +/* 8006F798 0006C6D8 48 27 21 35 */ bl startPatternedRumble__Q210JUTGamePad7CRumbleFPvlUl /* 8006F79C 0006C6DC 48 00 01 3C */ b lbl_8006F8D8 lbl_8006F7A0: /* 8006F7A0 0006C6E0 83 BF 00 78 */ lwz r29, 0x78(r31) @@ -477,7 +477,7 @@ lbl_8006F7A0: /* 8006F7F0 0006C730 38 63 00 68 */ addi r3, r3, 0x68 /* 8006F7F4 0006C734 38 A0 00 01 */ li r5, 1 /* 8006F7F8 0006C738 38 C0 00 3C */ li r6, 0x3c -/* 8006F7FC 0006C73C 48 27 20 D1 */ bl JUTGamePad_NS_CRumble_NS_startPatternedRumble +/* 8006F7FC 0006C73C 48 27 20 D1 */ bl startPatternedRumble__Q210JUTGamePad7CRumbleFPvlUl /* 8006F800 0006C740 48 00 00 D8 */ b lbl_8006F8D8 lbl_8006F804: /* 8006F804 0006C744 80 1F 00 58 */ lwz r0, 0x58(r31) @@ -518,20 +518,20 @@ lbl_8006F84C: /* 8006F88C 0006C7CC 38 63 00 68 */ addi r3, r3, 0x68 /* 8006F890 0006C7D0 38 A0 00 00 */ li r5, 0 /* 8006F894 0006C7D4 38 C0 00 3C */ li r6, 0x3c -/* 8006F898 0006C7D8 48 27 20 35 */ bl JUTGamePad_NS_CRumble_NS_startPatternedRumble +/* 8006F898 0006C7D8 48 27 20 35 */ bl startPatternedRumble__Q210JUTGamePad7CRumbleFPvlUl /* 8006F89C 0006C7DC 48 00 00 3C */ b lbl_8006F8D8 lbl_8006F8A0: /* 8006F8A0 0006C7E0 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha /* 8006F8A4 0006C7E4 38 63 D2 D8 */ addi r3, r3, lbl_803DD2D8@l /* 8006F8A8 0006C7E8 80 63 00 00 */ lwz r3, 0(r3) /* 8006F8AC 0006C7EC 38 63 00 68 */ addi r3, r3, 0x68 -/* 8006F8B0 0006C7F0 48 27 20 C9 */ bl JUTGamePad_NS_CRumble_NS_stopPatternedRumbleAtThePeriod +/* 8006F8B0 0006C7F0 48 27 20 C9 */ bl stopPatternedRumbleAtThePeriod__Q210JUTGamePad7CRumbleFv /* 8006F8B4 0006C7F4 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha /* 8006F8B8 0006C7F8 38 63 D2 D8 */ addi r3, r3, lbl_803DD2D8@l /* 8006F8BC 0006C7FC 80 63 00 00 */ lwz r3, 0(r3) /* 8006F8C0 0006C800 A8 63 00 7C */ lha r3, 0x7c(r3) /* 8006F8C4 0006C804 38 80 00 00 */ li r4, 0 -/* 8006F8C8 0006C808 48 27 1D C5 */ bl JUTGamePad_NS_CRumble_NS_stopMotor +/* 8006F8C8 0006C808 48 27 1D C5 */ bl stopMotor__Q210JUTGamePad7CRumbleFib /* 8006F8CC 0006C80C 38 00 FF 9D */ li r0, -99 /* 8006F8D0 0006C810 90 1F 00 84 */ stw r0, 0x84(r31) /* 8006F8D4 0006C814 90 1F 00 68 */ stw r0, 0x68(r31) @@ -592,13 +592,13 @@ lbl_8006F990: /* 8006F99C 0006C8DC 38 63 D2 D8 */ addi r3, r3, lbl_803DD2D8@l /* 8006F9A0 0006C8E0 80 63 00 00 */ lwz r3, 0(r3) /* 8006F9A4 0006C8E4 38 63 00 68 */ addi r3, r3, 0x68 -/* 8006F9A8 0006C8E8 48 27 1F D1 */ bl JUTGamePad_NS_CRumble_NS_stopPatternedRumbleAtThePeriod +/* 8006F9A8 0006C8E8 48 27 1F D1 */ bl stopPatternedRumbleAtThePeriod__Q210JUTGamePad7CRumbleFv /* 8006F9AC 0006C8EC 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha /* 8006F9B0 0006C8F0 38 63 D2 D8 */ addi r3, r3, lbl_803DD2D8@l /* 8006F9B4 0006C8F4 80 63 00 00 */ lwz r3, 0(r3) /* 8006F9B8 0006C8F8 A8 63 00 7C */ lha r3, 0x7c(r3) /* 8006F9BC 0006C8FC 38 80 00 00 */ li r4, 0 -/* 8006F9C0 0006C900 48 27 1C CD */ bl JUTGamePad_NS_CRumble_NS_stopMotor +/* 8006F9C0 0006C900 48 27 1C CD */ bl stopMotor__Q210JUTGamePad7CRumbleFib /* 8006F9C4 0006C904 80 7F 00 80 */ lwz r3, 0x80(r31) /* 8006F9C8 0006C908 38 03 00 01 */ addi r0, r3, 1 /* 8006F9CC 0006C90C 90 1F 00 80 */ stw r0, 0x80(r31) @@ -905,13 +905,13 @@ dVibration_c_NS_Kill: /* 8006FE18 0006CD58 80 83 D2 D8 */ lwz r4, lbl_803DD2D8@l(r3) /* 8006FE1C 0006CD5C 38 64 00 68 */ addi r3, r4, 0x68 /* 8006FE20 0006CD60 A8 84 00 7C */ lha r4, 0x7c(r4) -/* 8006FE24 0006CD64 48 27 1B 25 */ bl JUTGamePad_NS_CRumble_NS_stopPatternedRumble +/* 8006FE24 0006CD64 48 27 1B 25 */ bl stopPatternedRumble__Q210JUTGamePad7CRumbleFs /* 8006FE28 0006CD68 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha /* 8006FE2C 0006CD6C 38 63 D2 D8 */ addi r3, r3, lbl_803DD2D8@l /* 8006FE30 0006CD70 80 63 00 00 */ lwz r3, 0(r3) /* 8006FE34 0006CD74 A8 63 00 7C */ lha r3, 0x7c(r3) /* 8006FE38 0006CD78 38 80 00 01 */ li r4, 1 -/* 8006FE3C 0006CD7C 48 27 18 51 */ bl JUTGamePad_NS_CRumble_NS_stopMotor +/* 8006FE3C 0006CD7C 48 27 18 51 */ bl stopMotor__Q210JUTGamePad7CRumbleFib /* 8006FE40 0006CD80 7F E3 FB 78 */ mr r3, r31 /* 8006FE44 0006CD84 48 00 00 41 */ bl dVibration_c_NS_setDefault /* 8006FE48 0006CD88 83 E1 00 0C */ lwz r31, 0xc(r1) @@ -1004,13 +1004,13 @@ lbl_8006FF70: /* 8006FF74 0006CEB4 80 83 D2 D8 */ lwz r4, lbl_803DD2D8@l(r3) /* 8006FF78 0006CEB8 38 64 00 68 */ addi r3, r4, 0x68 /* 8006FF7C 0006CEBC A8 84 00 7C */ lha r4, 0x7c(r4) -/* 8006FF80 0006CEC0 48 27 19 C9 */ bl JUTGamePad_NS_CRumble_NS_stopPatternedRumble +/* 8006FF80 0006CEC0 48 27 19 C9 */ bl stopPatternedRumble__Q210JUTGamePad7CRumbleFs /* 8006FF84 0006CEC4 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha /* 8006FF88 0006CEC8 38 63 D2 D8 */ addi r3, r3, lbl_803DD2D8@l /* 8006FF8C 0006CECC 80 63 00 00 */ lwz r3, 0(r3) /* 8006FF90 0006CED0 A8 63 00 7C */ lha r3, 0x7c(r3) /* 8006FF94 0006CED4 38 80 00 01 */ li r4, 1 -/* 8006FF98 0006CED8 48 27 16 F5 */ bl JUTGamePad_NS_CRumble_NS_stopMotor +/* 8006FF98 0006CED8 48 27 16 F5 */ bl stopMotor__Q210JUTGamePad7CRumbleFib lbl_8006FF9C: /* 8006FF9C 0006CEDC 38 00 FF FF */ li r0, -1 /* 8006FFA0 0006CEE0 90 1F 00 54 */ stw r0, 0x54(r31) diff --git a/asm/d/menu/d_menu_option.s b/asm/d/menu/d_menu_option.s index e6d839c0e41..837e663cf43 100644 --- a/asm/d/menu/d_menu_option.s +++ b/asm/d/menu/d_menu_option.s @@ -2492,7 +2492,7 @@ lbl_801E42F8: /* 801E4334 001E1274 38 9F 03 E0 */ addi r4, r31, 0x3e0 /* 801E4338 001E1278 38 A0 00 00 */ li r5, 0 /* 801E433C 001E127C 38 C0 00 3C */ li r6, 0x3c -/* 801E4340 001E1280 48 0F D5 8D */ bl JUTGamePad_NS_CRumble_NS_startPatternedRumble +/* 801E4340 001E1280 48 0F D5 8D */ bl startPatternedRumble__Q210JUTGamePad7CRumbleFPvlUl /* 801E4344 001E1284 38 00 FF FB */ li r0, -5 /* 801E4348 001E1288 B0 1F 03 DA */ sth r0, 0x3da(r31) /* 801E434C 001E128C 48 00 00 1C */ b lbl_801E4368 @@ -2541,7 +2541,7 @@ lbl_801E43B0: /* 801E43EC 001E132C 38 9F 03 E0 */ addi r4, r31, 0x3e0 /* 801E43F0 001E1330 38 A0 00 00 */ li r5, 0 /* 801E43F4 001E1334 38 C0 00 3C */ li r6, 0x3c -/* 801E43F8 001E1338 48 0F D4 D5 */ bl JUTGamePad_NS_CRumble_NS_startPatternedRumble +/* 801E43F8 001E1338 48 0F D4 D5 */ bl startPatternedRumble__Q210JUTGamePad7CRumbleFPvlUl /* 801E43FC 001E133C 38 00 00 05 */ li r0, 5 /* 801E4400 001E1340 B0 1F 03 DA */ sth r0, 0x3da(r31) /* 801E4404 001E1344 48 00 00 1C */ b lbl_801E4420 diff --git a/asm/f/pc/f_pc_manager.s b/asm/f/pc/f_pc_manager.s index ac17e087ed1..ac9f2a0d31b 100644 --- a/asm/f/pc/f_pc_manager.s +++ b/asm/f/pc/f_pc_manager.s @@ -154,7 +154,7 @@ lbl_80022268: /* 80022288 0001F1C8 80 83 D2 D8 */ lwz r4, lbl_803DD2D8@l(r3) /* 8002228C 0001F1CC 38 64 00 68 */ addi r3, r4, 0x68 /* 80022290 0001F1D0 A8 84 00 7C */ lha r4, 0x7c(r4) -/* 80022294 0001F1D4 48 2B F6 B5 */ bl JUTGamePad_NS_CRumble_NS_stopPatternedRumble +/* 80022294 0001F1D4 48 2B F6 B5 */ bl stopPatternedRumble__Q210JUTGamePad7CRumbleFs /* 80022298 0001F1D8 38 00 00 01 */ li r0, 1 /* 8002229C 0001F1DC 98 0D 87 B8 */ stb r0, lbl_80450D38-_SDA_BASE_(r13) lbl_800222A0: diff --git a/asm/m/Do/controller/m_Do_controller_pad.s b/asm/m/Do/controller/m_Do_controller_pad.s index fa07caf895d..1f4c523ae25 100644 --- a/asm/m/Do/controller/m_Do_controller_pad.s +++ b/asm/m/Do/controller/m_Do_controller_pad.s @@ -13,7 +13,7 @@ mDoCPd_c_NS_create: /* 80007968 000048A8 7C 60 1B 79 */ or. r0, r3, r3 /* 8000796C 000048AC 41 82 00 10 */ beq lbl_8000797C /* 80007970 000048B0 38 80 00 00 */ li r4, 0 -/* 80007974 000048B4 48 2D 8D 69 */ bl JUTGamePad +/* 80007974 000048B4 48 2D 8D 69 */ bl __ct__10JUTGamePadFUl /* 80007978 000048B8 7C 60 1B 78 */ mr r0, r3 lbl_8000797C: /* 8000797C 000048BC 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha @@ -26,7 +26,7 @@ lbl_8000797C: /* 80007998 000048D8 7C 60 1B 79 */ or. r0, r3, r3 /* 8000799C 000048DC 41 82 00 10 */ beq lbl_800079AC /* 800079A0 000048E0 38 80 00 01 */ li r4, 1 -/* 800079A4 000048E4 48 2D 8D 39 */ bl JUTGamePad +/* 800079A4 000048E4 48 2D 8D 39 */ bl __ct__10JUTGamePadFUl /* 800079A8 000048E8 7C 60 1B 78 */ mr r0, r3 lbl_800079AC: /* 800079AC 000048EC 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha @@ -37,7 +37,7 @@ lbl_800079AC: /* 800079C0 00004900 7C 60 1B 79 */ or. r0, r3, r3 /* 800079C4 00004904 41 82 00 10 */ beq lbl_800079D4 /* 800079C8 00004908 38 80 00 02 */ li r4, 2 -/* 800079CC 0000490C 48 2D 8D 11 */ bl JUTGamePad +/* 800079CC 0000490C 48 2D 8D 11 */ bl __ct__10JUTGamePadFUl /* 800079D0 00004910 7C 60 1B 78 */ mr r0, r3 lbl_800079D4: /* 800079D4 00004914 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha @@ -48,7 +48,7 @@ lbl_800079D4: /* 800079E8 00004928 7C 60 1B 79 */ or. r0, r3, r3 /* 800079EC 0000492C 41 82 00 10 */ beq lbl_800079FC /* 800079F0 00004930 38 80 00 03 */ li r4, 3 -/* 800079F4 00004934 48 2D 8C E9 */ bl JUTGamePad +/* 800079F4 00004934 48 2D 8C E9 */ bl __ct__10JUTGamePadFUl /* 800079F8 00004938 7C 60 1B 78 */ mr r0, r3 lbl_800079FC: /* 800079FC 0000493C 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha @@ -103,7 +103,7 @@ mDoCPd_c_NS_read: /* 80007A9C 000049DC 90 01 00 24 */ stw r0, 0x24(r1) /* 80007AA0 000049E0 39 61 00 20 */ addi r11, r1, 0x20 /* 80007AA4 000049E4 48 35 A7 39 */ bl _savegpr_29 -/* 80007AA8 000049E8 48 2D 8E 3D */ bl JUTGamePad_NS_read +/* 80007AA8 000049E8 48 2D 8E 3D */ bl read__10JUTGamePadFv /* 80007AAC 000049EC 80 6D 86 F8 */ lwz r3, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13) /* 80007AB0 000049F0 80 03 00 00 */ lwz r0, 0(r3) /* 80007AB4 000049F4 2C 00 00 00 */ cmpwi r0, 0 @@ -112,7 +112,7 @@ mDoCPd_c_NS_read: /* 80007AC0 00004A00 2C 00 00 00 */ cmpwi r0, 0 /* 80007AC4 00004A04 41 82 00 40 */ beq lbl_80007B04 /* 80007AC8 00004A08 80 63 00 0C */ lwz r3, 0xc(r3) -/* 80007ACC 00004A0C 48 2D 9E D1 */ bl JUTGamePad_NS_getGamePad +/* 80007ACC 00004A0C 48 2D 9E D1 */ bl getGamePad__10JUTGamePadFl /* 80007AD0 00004A10 38 80 00 00 */ li r4, 0 /* 80007AD4 00004A14 A8 03 00 7C */ lha r0, 0x7c(r3) /* 80007AD8 00004A18 2C 00 FF FF */ cmpwi r0, -1 @@ -308,9 +308,9 @@ mDoCPd_c_NS_recalibrate: /* 80007D74 00004CB4 94 21 FF F0 */ stwu r1, -0x10(r1) /* 80007D78 00004CB8 7C 08 02 A6 */ mflr r0 /* 80007D7C 00004CBC 90 01 00 14 */ stw r0, 0x14(r1) -/* 80007D80 00004CC0 48 2D 92 A5 */ bl JUTGamePad_NS_clearForReset +/* 80007D80 00004CC0 48 2D 92 A5 */ bl clearForReset__10JUTGamePadFv /* 80007D84 00004CC4 3C 60 F0 00 */ lis r3, 0xf000 -/* 80007D88 00004CC8 48 2D 9C 51 */ bl JUTGamePad_NS_CRumble_NS_setEnabled +/* 80007D88 00004CC8 48 2D 9C 51 */ bl setEnabled__Q210JUTGamePad7CRumbleF7PADMask /* 80007D8C 00004CCC 80 01 00 14 */ lwz r0, 0x14(r1) /* 80007D90 00004CD0 7C 08 03 A6 */ mtlr r0 /* 80007D94 00004CD4 38 21 00 10 */ addi r1, r1, 0x10 diff --git a/asm/m/Do/m_Do_machine.s b/asm/m/Do/m_Do_machine.s index e048106051e..936d9648bd3 100644 --- a/asm/m/Do/m_Do_machine.s +++ b/asm/m/Do/m_Do_machine.s @@ -472,7 +472,7 @@ lbl_8000B828: /* 8000B838 00008778 40 82 00 CC */ bne lbl_8000B904 /* 8000B83C 0000877C 38 61 00 10 */ addi r3, r1, 0x10 /* 8000B840 00008780 38 80 00 00 */ li r4, 0 -/* 8000B844 00008784 48 2D 4E 99 */ bl JUTGamePad +/* 8000B844 00008784 48 2D 4E 99 */ bl __ct__10JUTGamePadFUl /* 8000B848 00008788 38 01 00 10 */ addi r0, r1, 0x10 /* 8000B84C 0000878C 90 1F 00 84 */ stw r0, 0x84(r31) /* 8000B850 00008790 38 00 FF FF */ li r0, -1 @@ -522,7 +522,7 @@ lbl_8000B8F0: lbl_8000B8F4: /* 8000B8F4 00008834 38 61 00 10 */ addi r3, r1, 0x10 /* 8000B8F8 00008838 38 80 FF FF */ li r4, -1 -/* 8000B8FC 0000883C 48 2D 4E B5 */ bl JUTGamePad_NS_dtor +/* 8000B8FC 0000883C 48 2D 4E B5 */ bl __dt__10JUTGamePadFv /* 8000B900 00008840 48 00 00 20 */ b lbl_8000B920 lbl_8000B904: /* 8000B904 00008844 3C 60 80 37 */ lis r3, lbl_80373DE8@ha @@ -581,7 +581,7 @@ fault_callback_scroll: lbl_8000B9CC: /* 8000B9CC 0000890C 38 61 00 10 */ addi r3, r1, 0x10 /* 8000B9D0 00008910 38 80 00 00 */ li r4, 0 -/* 8000B9D4 00008914 48 2D 4D 09 */ bl JUTGamePad +/* 8000B9D4 00008914 48 2D 4D 09 */ bl __ct__10JUTGamePadFUl /* 8000B9D8 00008918 38 01 00 10 */ addi r0, r1, 0x10 /* 8000B9DC 0000891C 90 1C 00 84 */ stw r0, 0x84(r28) /* 8000B9E0 00008920 38 00 FF FF */ li r0, -1 diff --git a/include/JSystem/JSupport/JSUList/JSUList.h b/include/JSystem/JSupport/JSUList/JSUList.h index 630e5d6f038..0eb5aa3b7c9 100644 --- a/include/JSystem/JSupport/JSUList/JSUList.h +++ b/include/JSystem/JSupport/JSUList/JSUList.h @@ -72,7 +72,7 @@ private: }; template -class JSUList : protected JSUPtrList { +class JSUList : public JSUPtrList { public: JSUList() : JSUPtrList() {} diff --git a/include/JSystem/JUtility/JUTGamePad/JUTGamePad.h b/include/JSystem/JUtility/JUTGamePad/JUTGamePad.h new file mode 100644 index 00000000000..6c29615b11d --- /dev/null +++ b/include/JSystem/JUtility/JUTGamePad/JUTGamePad.h @@ -0,0 +1,151 @@ +#ifndef __JSYSTEM_JUTILITY_JUTGAMEPAD__ +#define __JSYSTEM_JUTILITY_JUTGAMEPAD__ + +#include "JSystem/JKernel/JKRDisposer/JKRDisposer.h" +#include "JSystem/JSupport/JSUList/JSUList.h" +#include "dolphin/types.h" +#include "os/OS.h" +#include "pad/pad.h" + +typedef u32 EPadPort; +typedef u32 EStickMode; +typedef u32 EWhichStick; + +class JUTGamePad : public JKRDisposer { +public: + JUTGamePad(EPadPort port); + virtual ~JUTGamePad(); + + void initList(); + static s32 init(); + void clear(); + void read(); + void assign(); + void checkResetCallback(OSTime unk); // todo: weird arg + void update(); + static void checkResetSwitch(); + static void clearForReset(); + static JUTGamePad* getGamePad(s32 pad_index); + static bool recalibrate(PADMask pad_mask); + + struct CButton { + CButton(); + void clear(); + u32 update(PADStatus const*, u32 unk); + void setRepeat(u32 unk0, u32 unk1, u32 unk2); + + u32 button_flags; + + u32 field_0x4; + u32 field_0x8; + + u8 analog_a; + u8 analog_b; + u8 trigger_left; + u8 trigger_right; + f32 analog_left; + f32 analog_right; + + u32 field_0x18; + u32 field_0x1c; + u32 field_0x20; + u32 field_0x24; + u32 field_0x28; + u32 field_0x2c; + }; + + struct CStick { + CStick(); + void clear(); + void clear(JUTGamePad* pad); + u32 update(s8 unk0, s8 unk1, EStickMode mode, EWhichStick stick, u32 unk2); + u32 getButton(u32 unk); + + float stick_x; + float stick_y; + float length_from_neutral; + u16 angle; + s8 field_0xe; + s8 field_0xf; + }; + + struct CRumble { + typedef s32 ERumble; // should probably be an enum + + void clear(); + void clear(JUTGamePad* pad); + static void startMotor(int channel); + static void stopMotor(int channel, bool stop); + void update(s16 unk0); + void triggerPatternedRumble(u32 unk0); + void startPatternedRumble(void* unk0, ERumble rumble, u32 unk1); + void stopPatternedRumble(s16 pad_port); + void stopPatternedRumbleAtThePeriod(); + static void setEnabled(PADMask pad_mask); + + u32 field_0x0; + u32 field_0x4; + u8* field_0x8; + u32 field_0xc; + u8* field_0x10; + }; + +private: + CButton buttons; + CStick control_stick; + CStick c_stick; + CRumble rumble; + s16 pad_port; + s8 error_value; + u8 pad0; + JSUPtrLink ptr_link; + u8 unk0[8]; + u8 field_0x98; + u8 unk1[3]; + u8 reset_flag; + u8 pad1[3]; + OSTime reset_time; + u8 field_0xa8; + + friend class CRumble; +}; + +struct JUTGamePadLongPress { + void checkCallback(s32 unk0, u32 unk2); + + u8 unk0[17]; + bool field_0x11; // bool? + u8 unk1[10]; + u32 field_0x1c; + u8 unk2[28]; + u8 field_0x3c; + u8 unk3[11]; + bool field_0x48[4]; // bool[4]? + void (*callback)(s32, JUTGamePadLongPress*, s32); + s32 field_0x50; +}; + +extern "C" { +// s32 JUTGamePad_NS_init(void); +bool getNumBit(u8* unk0, u32 unk1); +} + +extern float lbl_80456028; // JUTGamePad::CStick::clear() init to 0.0 +extern bool lbl_804514E4[4]; // JUTGamePad::CRumble::mStatus (static?) +extern PADMask lbl_804514E8; // JUTGamePad::CRumble::mEnabled (static?) +extern PADMask lbl_803CC5F0[4]; // JUTGamePad::CRumble::sChannelMask +extern s32 lbl_804514DC; // JUTGamePad::sAnalogMode +extern bool lbl_804514D0; // JUTGamePad::mIsPadListInitialized +extern JSUList lbl_804343E4; // JUTGamePad::mPadList +// extern JSUPtrList lbl_804343E4; // JUTGamePad::mPadList +extern u8 lbl_804514D4[4]; // JUTGamePad::mPadAssign +extern PADStatus lbl_804343F0[4]; // JUTGamePad::mPadStatus +extern JUTGamePad::CButton lbl_80434420[4]; // JUTGamePad::mPadButton +extern bool lbl_80451501; +extern bool lbl_80451500; +extern s32 lbl_80451504; // JUTGamePad::C3ButtonReset::sResetOccurredPort +extern OSTime lbl_804514F8; // JUTGamePad::C3ButtonReset::sThreshold +extern u32 lbl_804514D8; // JUTGamePad::sSuppressPadReset +extern PADMask lbl_803CC600[4]; // JUtility::channel_mask + +#endif \ No newline at end of file diff --git a/include/JSystem/JUtility/JUTGamePad/asm/func_802E06DC.s b/include/JSystem/JUtility/JUTGamePad/asm/func_802E06DC.s new file mode 100644 index 00000000000..071acb94dc8 --- /dev/null +++ b/include/JSystem/JUtility/JUTGamePad/asm/func_802E06DC.s @@ -0,0 +1,54 @@ +/* 802E06DC 002DD61C 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 802E06E0 002DD620 7C 08 02 A6 */ mflr r0 +/* 802E06E4 002DD624 90 01 00 14 */ stw r0, 0x14(r1) +/* 802E06E8 002DD628 93 E1 00 0C */ stw r31, 0xc(r1) +/* 802E06EC 002DD62C 93 C1 00 08 */ stw r30, 8(r1) +/* 802E06F0 002DD630 7C 7E 1B 78 */ mr r30, r3 +/* 802E06F4 002DD634 7C 9F 23 78 */ mr r31, r4 +/* 802E06F8 002DD638 4B FF 0D 85 */ bl __ct__11JKRDisposerFv +/* 802E06FC 002DD63C 3C 60 80 3D */ lis r3, lbl_803CC610@ha +/* 802E0700 002DD640 38 03 C6 10 */ addi r0, r3, lbl_803CC610@l +/* 802E0704 002DD644 90 1E 00 00 */ stw r0, 0(r30) +/* 802E0708 002DD648 38 7E 00 18 */ addi r3, r30, 0x18 +/* 802E070C 002DD64C 48 00 09 45 */ bl clear__Q210JUTGamePad7CButtonFv +/* 802E0710 002DD650 38 7E 00 48 */ addi r3, r30, 0x48 +/* 802E0714 002DD654 48 00 0B 09 */ bl clear__Q210JUTGamePad6CStickFv +/* 802E0718 002DD658 38 7E 00 58 */ addi r3, r30, 0x58 +/* 802E071C 002DD65C 48 00 0B 01 */ bl clear__Q210JUTGamePad6CStickFv +/* 802E0720 002DD660 38 7E 00 68 */ addi r3, r30, 0x68 +/* 802E0724 002DD664 7F C4 F3 78 */ mr r4, r30 +/* 802E0728 002DD668 48 00 0E B1 */ bl clear__Q210JUTGamePad7CRumbleFP10JUTGamePad +/* 802E072C 002DD66C 38 7E 00 80 */ addi r3, r30, 0x80 +/* 802E0730 002DD670 7F C4 F3 78 */ mr r4, r30 +/* 802E0734 002DD674 4B FF B6 C9 */ bl __ct__10JSUPtrLinkFPv +/* 802E0738 002DD678 38 00 00 00 */ li r0, 0 +/* 802E073C 002DD67C 98 1E 00 98 */ stb r0, 0x98(r30) +/* 802E0740 002DD680 B3 FE 00 7C */ sth r31, 0x7c(r30) +/* 802E0744 002DD684 7F C3 F3 78 */ mr r3, r30 +/* 802E0748 002DD688 A8 1E 00 7C */ lha r0, 0x7c(r30) +/* 802E074C 002DD68C 2C 00 00 00 */ cmpwi r0, 0 +/* 802E0750 002DD690 41 80 00 14 */ blt lbl_802E0764 +/* 802E0754 002DD694 38 AD 8F 54 */ addi r5, r13, 0x804514D4-0x80458580 /*lbl_804514D4-_SDA_BASE_*/ +/* 802E0758 002DD698 7C 85 F8 AE */ lbzx r4, r5, r31 +/* 802E075C 002DD69C 38 04 00 01 */ addi r0, r4, 1 +/* 802E0760 002DD6A0 7C 05 F9 AE */ stbx r0, r5, r31 +lbl_802E0764: +/* 802E0764 002DD6A4 48 00 00 F9 */ bl initList__10JUTGamePadFv +/* 802E0768 002DD6A8 3C 60 80 43 */ lis r3, lbl_804343E4@ha +/* 802E076C 002DD6AC 38 63 43 E4 */ addi r3, r3, lbl_804343E4@l +/* 802E0770 002DD6B0 38 9E 00 80 */ addi r4, r30, 0x80 +/* 802E0774 002DD6B4 4B FF B7 D9 */ bl append__10JSUPtrListFP10JSUPtrLink +/* 802E0778 002DD6B8 7F C3 F3 78 */ mr r3, r30 +/* 802E077C 002DD6BC 48 00 05 5D */ bl update__10JUTGamePadFv +/* 802E0780 002DD6C0 38 00 00 00 */ li r0, 0 +/* 802E0784 002DD6C4 90 1E 00 90 */ stw r0, 0x90(r30) +/* 802E0788 002DD6C8 90 1E 00 94 */ stw r0, 0x94(r30) +/* 802E078C 002DD6CC 7F C3 F3 78 */ mr r3, r30 +/* 802E0790 002DD6D0 48 00 01 41 */ bl clear__10JUTGamePadFv +/* 802E0794 002DD6D4 7F C3 F3 78 */ mr r3, r30 +/* 802E0798 002DD6D8 83 E1 00 0C */ lwz r31, 0xc(r1) +/* 802E079C 002DD6DC 83 C1 00 08 */ lwz r30, 8(r1) +/* 802E07A0 002DD6E0 80 01 00 14 */ lwz r0, 0x14(r1) +/* 802E07A4 002DD6E4 7C 08 03 A6 */ mtlr r0 +/* 802E07A8 002DD6E8 38 21 00 10 */ addi r1, r1, 0x10 +/* 802E07AC 002DD6EC 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/JSystem/JUtility/JUTGamePad/asm/func_802E07B0.s b/include/JSystem/JUtility/JUTGamePad/asm/func_802E07B0.s new file mode 100644 index 00000000000..3b302e539ae --- /dev/null +++ b/include/JSystem/JUtility/JUTGamePad/asm/func_802E07B0.s @@ -0,0 +1,46 @@ +/* 802E07B0 002DD6F0 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 802E07B4 002DD6F4 7C 08 02 A6 */ mflr r0 +/* 802E07B8 002DD6F8 90 01 00 14 */ stw r0, 0x14(r1) +/* 802E07BC 002DD6FC 93 E1 00 0C */ stw r31, 0xc(r1) +/* 802E07C0 002DD700 93 C1 00 08 */ stw r30, 8(r1) +/* 802E07C4 002DD704 7C 7E 1B 79 */ or. r30, r3, r3 +/* 802E07C8 002DD708 7C 9F 23 78 */ mr r31, r4 +/* 802E07CC 002DD70C 41 82 00 74 */ beq lbl_802E0840 +/* 802E07D0 002DD710 3C 60 80 3D */ lis r3, lbl_803CC610@ha +/* 802E07D4 002DD714 38 03 C6 10 */ addi r0, r3, lbl_803CC610@l +/* 802E07D8 002DD718 90 1E 00 00 */ stw r0, 0(r30) +/* 802E07DC 002DD71C A8 BE 00 7C */ lha r5, 0x7c(r30) +/* 802E07E0 002DD720 7C A0 07 35 */ extsh. r0, r5 +/* 802E07E4 002DD724 41 80 00 1C */ blt lbl_802E0800 +/* 802E07E8 002DD728 38 8D 8F 54 */ addi r4, r13, 0x804514D4-0x80458580/*lbl_804514D4-_SDA_BASE_*/ +/* 802E07EC 002DD72C 7C 64 28 AE */ lbzx r3, r4, r5 +/* 802E07F0 002DD730 38 03 FF FF */ addi r0, r3, -1 +/* 802E07F4 002DD734 7C 04 29 AE */ stbx r0, r4, r5 +/* 802E07F8 002DD738 38 00 FF FF */ li r0, -1 +/* 802E07FC 002DD73C B0 1E 00 7C */ sth r0, 0x7c(r30) +lbl_802E0800: +/* 802E0800 002DD740 3C 60 80 43 */ lis r3, lbl_804343E4@ha +/* 802E0804 002DD744 38 63 43 E4 */ addi r3, r3, lbl_804343E4@l +/* 802E0808 002DD748 38 9E 00 80 */ addi r4, r30, 0x80 +/* 802E080C 002DD74C 4B FF B9 51 */ bl remove__10JSUPtrListFP10JSUPtrLink +/* 802E0810 002DD750 34 1E 00 80 */ addic. r0, r30, 0x80 +/* 802E0814 002DD754 41 82 00 10 */ beq lbl_802E0824 +/* 802E0818 002DD758 38 7E 00 80 */ addi r3, r30, 0x80 +/* 802E081C 002DD75C 38 80 00 00 */ li r4, 0 +/* 802E0820 002DD760 4B FF B5 F5 */ bl __dt__10JSUPtrLinkFv +lbl_802E0824: +/* 802E0824 002DD764 7F C3 F3 78 */ mr r3, r30 +/* 802E0828 002DD768 38 80 00 00 */ li r4, 0 +/* 802E082C 002DD76C 4B FF 0C B9 */ bl __dt__11JKRDisposerFv +/* 802E0830 002DD770 7F E0 07 35 */ extsh. r0, r31 +/* 802E0834 002DD774 40 81 00 0C */ ble lbl_802E0840 +/* 802E0838 002DD778 7F C3 F3 78 */ mr r3, r30 +/* 802E083C 002DD77C 4B FE E5 01 */ bl __dl__FPv +lbl_802E0840: +/* 802E0840 002DD780 7F C3 F3 78 */ mr r3, r30 +/* 802E0844 002DD784 83 E1 00 0C */ lwz r31, 0xc(r1) +/* 802E0848 002DD788 83 C1 00 08 */ lwz r30, 8(r1) +/* 802E084C 002DD78C 80 01 00 14 */ lwz r0, 0x14(r1) +/* 802E0850 002DD790 7C 08 03 A6 */ mtlr r0 +/* 802E0854 002DD794 38 21 00 10 */ addi r1, r1, 0x10 +/* 802E0858 002DD798 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/JSystem/JUtility/JUTGamePad/asm/func_802E08E4.s b/include/JSystem/JUtility/JUTGamePad/asm/func_802E08E4.s new file mode 100644 index 00000000000..f527c02d56e --- /dev/null +++ b/include/JSystem/JUtility/JUTGamePad/asm/func_802E08E4.s @@ -0,0 +1,196 @@ +/* 802E08E4 002DD824 94 21 FF C0 */ stwu r1, -0x40(r1) +/* 802E08E8 002DD828 7C 08 02 A6 */ mflr r0 +/* 802E08EC 002DD82C 90 01 00 44 */ stw r0, 0x44(r1) +/* 802E08F0 002DD830 39 61 00 40 */ addi r11, r1, 0x40 +/* 802E08F4 002DD834 48 08 18 CD */ bl func_803621C0 +/* 802E08F8 002DD838 3C 60 80 43 */ lis r3, lbl_804343D8@ha +/* 802E08FC 002DD83C 3B E3 43 D8 */ addi r31, r3, lbl_804343D8@l +/* 802E0900 002DD840 38 7F 00 18 */ addi r3, r31, 0x18 +/* 802E0904 002DD844 48 06 E5 9D */ bl PADRead +/* 802E0908 002DD848 90 6D 8F 60 */ stw r3, lbl_804514E0-_SDA_BASE_(r13) +/* 802E090C 002DD84C 80 0D 83 5C */ lwz r0, lbl_804508DC-_SDA_BASE_(r13) +/* 802E0910 002DD850 2C 00 00 02 */ cmpwi r0, 2 +/* 802E0914 002DD854 41 82 00 20 */ beq lbl_802E0934 +/* 802E0918 002DD858 40 80 00 24 */ bge lbl_802E093C +/* 802E091C 002DD85C 2C 00 00 01 */ cmpwi r0, 1 +/* 802E0920 002DD860 40 80 00 08 */ bge lbl_802E0928 +/* 802E0924 002DD864 48 00 00 18 */ b lbl_802E093C +lbl_802E0928: +/* 802E0928 002DD868 38 7F 00 18 */ addi r3, r31, 0x18 +/* 802E092C 002DD86C 48 06 D7 69 */ bl PADClamp +/* 802E0930 002DD870 48 00 00 0C */ b lbl_802E093C +lbl_802E0934: +/* 802E0934 002DD874 38 7F 00 18 */ addi r3, r31, 0x18 +/* 802E0938 002DD878 48 06 D8 71 */ bl PADClampCircle +lbl_802E093C: +/* 802E093C 002DD87C 3B C0 00 00 */ li r30, 0 +/* 802E0940 002DD880 3B A0 00 00 */ li r29, 0 +/* 802E0944 002DD884 3B 80 00 00 */ li r28, 0 +/* 802E0948 002DD888 3B 60 00 00 */ li r27, 0 +/* 802E094C 002DD88C 3B 40 00 00 */ li r26, 0 +/* 802E0950 002DD890 3F 20 80 00 */ lis r25, 0x8000 +lbl_802E0954: +/* 802E0954 002DD894 7F 37 EC 30 */ srw r23, r25, r29 +/* 802E0958 002DD898 3B 1F 00 18 */ addi r24, r31, 0x18 +/* 802E095C 002DD89C 7F 18 D2 14 */ add r24, r24, r26 +/* 802E0960 002DD8A0 88 78 00 0A */ lbz r3, 0xa(r24) +/* 802E0964 002DD8A4 7C 60 07 75 */ extsb. r0, r3 +/* 802E0968 002DD8A8 40 82 00 6C */ bne lbl_802E09D4 +/* 802E096C 002DD8AC 38 7F 01 08 */ addi r3, r31, 0x108 +/* 802E0970 002DD8B0 7C 63 DA 14 */ add r3, r3, r27 +/* 802E0974 002DD8B4 88 98 00 02 */ lbz r4, 2(r24) +/* 802E0978 002DD8B8 88 B8 00 03 */ lbz r5, 3(r24) +/* 802E097C 002DD8BC 80 CD 83 58 */ lwz r6, lbl_804508D8-_SDA_BASE_(r13) +/* 802E0980 002DD8C0 38 E0 00 00 */ li r7, 0 +/* 802E0984 002DD8C4 3A FF 00 48 */ addi r23, r31, 0x48 +/* 802E0988 002DD8C8 7E F7 E2 14 */ add r23, r23, r28 +/* 802E098C 002DD8CC 81 17 00 00 */ lwz r8, 0(r23) +/* 802E0990 002DD8D0 48 00 08 A9 */ bl update__Q210JUTGamePad6CStickFScScUlUlUl +/* 802E0994 002DD8D4 54 76 C0 0E */ slwi r22, r3, 0x18 +/* 802E0998 002DD8D8 38 7F 01 48 */ addi r3, r31, 0x148 +/* 802E099C 002DD8DC 7C 63 DA 14 */ add r3, r3, r27 +/* 802E09A0 002DD8E0 88 98 00 04 */ lbz r4, 4(r24) +/* 802E09A4 002DD8E4 88 B8 00 05 */ lbz r5, 5(r24) +/* 802E09A8 002DD8E8 80 CD 83 58 */ lwz r6, lbl_804508D8-_SDA_BASE_(r13) +/* 802E09AC 002DD8EC 38 E0 00 01 */ li r7, 1 +/* 802E09B0 002DD8F0 81 17 00 00 */ lwz r8, 0(r23) +/* 802E09B4 002DD8F4 48 00 08 85 */ bl update__Q210JUTGamePad6CStickFScScUlUlUl +/* 802E09B8 002DD8F8 54 60 80 1E */ slwi r0, r3, 0x10 +/* 802E09BC 002DD8FC 7E D6 03 78 */ or r22, r22, r0 +/* 802E09C0 002DD900 7E E3 BB 78 */ mr r3, r23 +/* 802E09C4 002DD904 7F 04 C3 78 */ mr r4, r24 +/* 802E09C8 002DD908 7E C5 B3 78 */ mr r5, r22 +/* 802E09CC 002DD90C 48 00 06 C1 */ bl update__Q210JUTGamePad7CButtonFPC9PADStatusUl +/* 802E09D0 002DD910 48 00 00 90 */ b lbl_802E0A60 +lbl_802E09D4: +/* 802E09D4 002DD914 7C 60 07 74 */ extsb r0, r3 +/* 802E09D8 002DD918 2C 00 FF FF */ cmpwi r0, -1 +/* 802E09DC 002DD91C 40 82 00 6C */ bne lbl_802E0A48 +/* 802E09E0 002DD920 38 7F 01 08 */ addi r3, r31, 0x108 +/* 802E09E4 002DD924 7C 63 DA 14 */ add r3, r3, r27 +/* 802E09E8 002DD928 38 80 00 00 */ li r4, 0 +/* 802E09EC 002DD92C 38 A0 00 00 */ li r5, 0 +/* 802E09F0 002DD930 80 CD 83 58 */ lwz r6, lbl_804508D8-_SDA_BASE_(r13) +/* 802E09F4 002DD934 38 E0 00 00 */ li r7, 0 +/* 802E09F8 002DD938 39 00 00 00 */ li r8, 0 +/* 802E09FC 002DD93C 48 00 08 3D */ bl update__Q210JUTGamePad6CStickFScScUlUlUl +/* 802E0A00 002DD940 38 7F 01 48 */ addi r3, r31, 0x148 +/* 802E0A04 002DD944 7C 63 DA 14 */ add r3, r3, r27 +/* 802E0A08 002DD948 38 80 00 00 */ li r4, 0 +/* 802E0A0C 002DD94C 38 A0 00 00 */ li r5, 0 +/* 802E0A10 002DD950 80 CD 83 58 */ lwz r6, lbl_804508D8-_SDA_BASE_(r13) +/* 802E0A14 002DD954 38 E0 00 01 */ li r7, 1 +/* 802E0A18 002DD958 39 00 00 00 */ li r8, 0 +/* 802E0A1C 002DD95C 48 00 08 1D */ bl update__Q210JUTGamePad6CStickFScScUlUlUl +/* 802E0A20 002DD960 38 7F 00 48 */ addi r3, r31, 0x48 +/* 802E0A24 002DD964 7C 63 E2 14 */ add r3, r3, r28 +/* 802E0A28 002DD968 38 80 00 00 */ li r4, 0 +/* 802E0A2C 002DD96C 38 A0 00 00 */ li r5, 0 +/* 802E0A30 002DD970 48 00 06 5D */ bl update__Q210JUTGamePad7CButtonFPC9PADStatusUl +/* 802E0A34 002DD974 80 0D 8F 58 */ lwz r0, lbl_804514D8-_SDA_BASE_(r13) +/* 802E0A38 002DD978 7C 00 B8 39 */ and. r0, r0, r23 +/* 802E0A3C 002DD97C 40 82 00 24 */ bne lbl_802E0A60 +/* 802E0A40 002DD980 7F DE BB 78 */ or r30, r30, r23 +/* 802E0A44 002DD984 48 00 00 1C */ b lbl_802E0A60 +lbl_802E0A48: +/* 802E0A48 002DD988 38 00 00 00 */ li r0, 0 +/* 802E0A4C 002DD98C 38 7F 00 48 */ addi r3, r31, 0x48 +/* 802E0A50 002DD990 7C 63 E2 14 */ add r3, r3, r28 +/* 802E0A54 002DD994 90 03 00 04 */ stw r0, 4(r3) +/* 802E0A58 002DD998 90 03 00 08 */ stw r0, 8(r3) +/* 802E0A5C 002DD99C 90 03 00 18 */ stw r0, 0x18(r3) +lbl_802E0A60: +/* 802E0A60 002DD9A0 3B BD 00 01 */ addi r29, r29, 1 +/* 802E0A64 002DD9A4 2C 1D 00 04 */ cmpwi r29, 4 +/* 802E0A68 002DD9A8 3B 9C 00 30 */ addi r28, r28, 0x30 +/* 802E0A6C 002DD9AC 3B 7B 00 10 */ addi r27, r27, 0x10 +/* 802E0A70 002DD9B0 3B 5A 00 0C */ addi r26, r26, 0xc +/* 802E0A74 002DD9B4 41 80 FE E0 */ blt lbl_802E0954 +/* 802E0A78 002DD9B8 83 3F 00 0C */ lwz r25, 0xc(r31) +/* 802E0A7C 002DD9BC 48 00 01 08 */ b lbl_802E0B84 +lbl_802E0A80: +/* 802E0A80 002DD9C0 80 99 00 00 */ lwz r4, 0(r25) +/* 802E0A84 002DD9C4 80 64 00 94 */ lwz r3, 0x94(r4) +/* 802E0A88 002DD9C8 28 03 00 00 */ cmplwi r3, 0 +/* 802E0A8C 002DD9CC 41 82 00 88 */ beq lbl_802E0B14 +/* 802E0A90 002DD9D0 88 03 00 04 */ lbz r0, 4(r3) +/* 802E0A94 002DD9D4 28 00 00 00 */ cmplwi r0, 0 +/* 802E0A98 002DD9D8 41 82 00 7C */ beq lbl_802E0B14 +/* 802E0A9C 002DD9DC 38 81 00 08 */ addi r4, r1, 8 +/* 802E0AA0 002DD9E0 81 83 00 00 */ lwz r12, 0(r3) +/* 802E0AA4 002DD9E4 81 8C 00 0C */ lwz r12, 0xc(r12) +/* 802E0AA8 002DD9E8 7D 89 03 A6 */ mtctr r12 +/* 802E0AAC 002DD9EC 4E 80 04 21 */ bctrl +/* 802E0AB0 002DD9F0 81 19 00 00 */ lwz r8, 0(r25) +/* 802E0AB4 002DD9F4 38 68 00 48 */ addi r3, r8, 0x48 +/* 802E0AB8 002DD9F8 88 81 00 0A */ lbz r4, 0xa(r1) +/* 802E0ABC 002DD9FC 88 A1 00 0B */ lbz r5, 0xb(r1) +/* 802E0AC0 002DDA00 80 CD 83 58 */ lwz r6, lbl_804508D8-_SDA_BASE_(r13) +/* 802E0AC4 002DDA04 38 E0 00 00 */ li r7, 0 +/* 802E0AC8 002DDA08 81 08 00 18 */ lwz r8, 0x18(r8) +/* 802E0ACC 002DDA0C 48 00 07 6D */ bl update__Q210JUTGamePad6CStickFScScUlUlUl +/* 802E0AD0 002DDA10 54 76 C0 0E */ slwi r22, r3, 0x18 +/* 802E0AD4 002DDA14 81 19 00 00 */ lwz r8, 0(r25) +/* 802E0AD8 002DDA18 38 68 00 58 */ addi r3, r8, 0x58 +/* 802E0ADC 002DDA1C 88 81 00 0C */ lbz r4, 0xc(r1) +/* 802E0AE0 002DDA20 88 A1 00 0D */ lbz r5, 0xd(r1) +/* 802E0AE4 002DDA24 80 CD 83 58 */ lwz r6, lbl_804508D8-_SDA_BASE_(r13) +/* 802E0AE8 002DDA28 38 E0 00 01 */ li r7, 1 +/* 802E0AEC 002DDA2C 81 08 00 18 */ lwz r8, 0x18(r8) +/* 802E0AF0 002DDA30 48 00 07 49 */ bl update__Q210JUTGamePad6CStickFScScUlUlUl +/* 802E0AF4 002DDA34 54 60 80 1E */ slwi r0, r3, 0x10 +/* 802E0AF8 002DDA38 7E D6 03 78 */ or r22, r22, r0 +/* 802E0AFC 002DDA3C 80 79 00 00 */ lwz r3, 0(r25) +/* 802E0B00 002DDA40 38 63 00 18 */ addi r3, r3, 0x18 +/* 802E0B04 002DDA44 38 81 00 08 */ addi r4, r1, 8 +/* 802E0B08 002DDA48 7E C5 B3 78 */ mr r5, r22 +/* 802E0B0C 002DDA4C 48 00 05 81 */ bl update__Q210JUTGamePad7CButtonFPC9PADStatusUl +/* 802E0B10 002DDA50 48 00 00 20 */ b lbl_802E0B30 +lbl_802E0B14: +/* 802E0B14 002DDA54 A8 04 00 7C */ lha r0, 0x7c(r4) +/* 802E0B18 002DDA58 2C 00 FF FF */ cmpwi r0, -1 +/* 802E0B1C 002DDA5C 40 82 00 0C */ bne lbl_802E0B28 +/* 802E0B20 002DDA60 7C 83 23 78 */ mr r3, r4 +/* 802E0B24 002DDA64 48 00 00 99 */ bl assign__10JUTGamePadFv +lbl_802E0B28: +/* 802E0B28 002DDA68 80 79 00 00 */ lwz r3, 0(r25) +/* 802E0B2C 002DDA6C 48 00 01 AD */ bl update__10JUTGamePadFv +lbl_802E0B30: +/* 802E0B30 002DDA70 80 99 00 00 */ lwz r4, 0(r25) +/* 802E0B34 002DDA74 80 64 00 90 */ lwz r3, 0x90(r4) +/* 802E0B38 002DDA78 28 03 00 00 */ cmplwi r3, 0 +/* 802E0B3C 002DDA7C 41 82 00 44 */ beq lbl_802E0B80 +/* 802E0B40 002DDA80 88 03 00 04 */ lbz r0, 4(r3) +/* 802E0B44 002DDA84 28 00 00 00 */ cmplwi r0, 0 +/* 802E0B48 002DDA88 41 82 00 38 */ beq lbl_802E0B80 +/* 802E0B4C 002DDA8C A8 04 00 7C */ lha r0, 0x7c(r4) +/* 802E0B50 002DDA90 2C 00 00 00 */ cmpwi r0, 0 +/* 802E0B54 002DDA94 41 80 00 2C */ blt lbl_802E0B80 +/* 802E0B58 002DDA98 1C 00 00 0C */ mulli r0, r0, 0xc +/* 802E0B5C 002DDA9C 38 9F 00 18 */ addi r4, r31, 0x18 +/* 802E0B60 002DDAA0 7C 84 02 14 */ add r4, r4, r0 +/* 802E0B64 002DDAA4 88 04 00 0A */ lbz r0, 0xa(r4) +/* 802E0B68 002DDAA8 7C 00 07 75 */ extsb. r0, r0 +/* 802E0B6C 002DDAAC 40 82 00 14 */ bne lbl_802E0B80 +/* 802E0B70 002DDAB0 81 83 00 00 */ lwz r12, 0(r3) +/* 802E0B74 002DDAB4 81 8C 00 10 */ lwz r12, 0x10(r12) +/* 802E0B78 002DDAB8 7D 89 03 A6 */ mtctr r12 +/* 802E0B7C 002DDABC 4E 80 04 21 */ bctrl +lbl_802E0B80: +/* 802E0B80 002DDAC0 83 39 00 0C */ lwz r25, 0xc(r25) +lbl_802E0B84: +/* 802E0B84 002DDAC4 28 19 00 00 */ cmplwi r25, 0 +/* 802E0B88 002DDAC8 40 82 FE F8 */ bne lbl_802E0A80 +/* 802E0B8C 002DDACC 28 1E 00 00 */ cmplwi r30, 0 +/* 802E0B90 002DDAD0 41 82 00 0C */ beq lbl_802E0B9C +/* 802E0B94 002DDAD4 7F C3 F3 78 */ mr r3, r30 +/* 802E0B98 002DDAD8 48 06 DF 95 */ bl PADReset +lbl_802E0B9C: +/* 802E0B9C 002DDADC 48 00 04 09 */ bl checkResetSwitch__10JUTGamePadFv +/* 802E0BA0 002DDAE0 80 6D 8F 60 */ lwz r3, lbl_804514E0-_SDA_BASE_(r13) +/* 802E0BA4 002DDAE4 39 61 00 40 */ addi r11, r1, 0x40 +/* 802E0BA8 002DDAE8 48 08 16 65 */ bl func_8036220C +/* 802E0BAC 002DDAEC 80 01 00 44 */ lwz r0, 0x44(r1) +/* 802E0BB0 002DDAF0 7C 08 03 A6 */ mtlr r0 +/* 802E0BB4 002DDAF4 38 21 00 40 */ addi r1, r1, 0x40 +/* 802E0BB8 002DDAF8 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/JSystem/JUtility/JUTGamePad/asm/func_802E0CD8.s b/include/JSystem/JUtility/JUTGamePad/asm/func_802E0CD8.s new file mode 100644 index 00000000000..e06c5390d86 --- /dev/null +++ b/include/JSystem/JUtility/JUTGamePad/asm/func_802E0CD8.s @@ -0,0 +1,190 @@ +/* 802E0CD8 002DDC18 94 21 FF E0 */ stwu r1, -0x20(r1) +/* 802E0CDC 002DDC1C 7C 08 02 A6 */ mflr r0 +/* 802E0CE0 002DDC20 90 01 00 24 */ stw r0, 0x24(r1) +/* 802E0CE4 002DDC24 39 61 00 20 */ addi r11, r1, 0x20 +/* 802E0CE8 002DDC28 48 08 14 F1 */ bl _savegpr_28 +/* 802E0CEC 002DDC2C 7C 7E 1B 78 */ mr r30, r3 +/* 802E0CF0 002DDC30 3C 60 80 43 */ lis r3, lbl_804343D8@ha +/* 802E0CF4 002DDC34 38 63 43 D8 */ addi r3, r3, lbl_804343D8@l +/* 802E0CF8 002DDC38 A8 9E 00 7C */ lha r4, 0x7c(r30) +/* 802E0CFC 002DDC3C 2C 04 FF FF */ cmpwi r4, -1 +/* 802E0D00 002DDC40 41 82 02 8C */ beq lbl_802E0F8C +/* 802E0D04 002DDC44 7C 80 07 35 */ extsh. r0, r4 +/* 802E0D08 002DDC48 41 80 01 28 */ blt lbl_802E0E30 +/* 802E0D0C 002DDC4C 2C 04 00 04 */ cmpwi r4, 4 +/* 802E0D10 002DDC50 40 80 01 20 */ bge lbl_802E0E30 +/* 802E0D14 002DDC54 1C 04 00 30 */ mulli r0, r4, 0x30 +/* 802E0D18 002DDC58 38 83 00 48 */ addi r4, r3, 0x48 +/* 802E0D1C 002DDC5C 7C 84 02 14 */ add r4, r4, r0 +/* 802E0D20 002DDC60 80 04 00 00 */ lwz r0, 0(r4) +/* 802E0D24 002DDC64 90 1E 00 18 */ stw r0, 0x18(r30) +/* 802E0D28 002DDC68 80 04 00 04 */ lwz r0, 4(r4) +/* 802E0D2C 002DDC6C 90 1E 00 1C */ stw r0, 0x1c(r30) +/* 802E0D30 002DDC70 80 04 00 08 */ lwz r0, 8(r4) +/* 802E0D34 002DDC74 90 1E 00 20 */ stw r0, 0x20(r30) +/* 802E0D38 002DDC78 88 04 00 0C */ lbz r0, 0xc(r4) +/* 802E0D3C 002DDC7C 98 1E 00 24 */ stb r0, 0x24(r30) +/* 802E0D40 002DDC80 88 04 00 0D */ lbz r0, 0xd(r4) +/* 802E0D44 002DDC84 98 1E 00 25 */ stb r0, 0x25(r30) +/* 802E0D48 002DDC88 88 04 00 0E */ lbz r0, 0xe(r4) +/* 802E0D4C 002DDC8C 98 1E 00 26 */ stb r0, 0x26(r30) +/* 802E0D50 002DDC90 88 04 00 0F */ lbz r0, 0xf(r4) +/* 802E0D54 002DDC94 98 1E 00 27 */ stb r0, 0x27(r30) +/* 802E0D58 002DDC98 C0 04 00 10 */ lfs f0, 0x10(r4) +/* 802E0D5C 002DDC9C D0 1E 00 28 */ stfs f0, 0x28(r30) +/* 802E0D60 002DDCA0 C0 04 00 14 */ lfs f0, 0x14(r4) +/* 802E0D64 002DDCA4 D0 1E 00 2C */ stfs f0, 0x2c(r30) +/* 802E0D68 002DDCA8 80 04 00 18 */ lwz r0, 0x18(r4) +/* 802E0D6C 002DDCAC 90 1E 00 30 */ stw r0, 0x30(r30) +/* 802E0D70 002DDCB0 80 04 00 1C */ lwz r0, 0x1c(r4) +/* 802E0D74 002DDCB4 90 1E 00 34 */ stw r0, 0x34(r30) +/* 802E0D78 002DDCB8 80 04 00 20 */ lwz r0, 0x20(r4) +/* 802E0D7C 002DDCBC 90 1E 00 38 */ stw r0, 0x38(r30) +/* 802E0D80 002DDCC0 80 04 00 24 */ lwz r0, 0x24(r4) +/* 802E0D84 002DDCC4 90 1E 00 3C */ stw r0, 0x3c(r30) +/* 802E0D88 002DDCC8 80 04 00 28 */ lwz r0, 0x28(r4) +/* 802E0D8C 002DDCCC 90 1E 00 40 */ stw r0, 0x40(r30) +/* 802E0D90 002DDCD0 80 04 00 2C */ lwz r0, 0x2c(r4) +/* 802E0D94 002DDCD4 90 1E 00 44 */ stw r0, 0x44(r30) +/* 802E0D98 002DDCD8 A8 1E 00 7C */ lha r0, 0x7c(r30) +/* 802E0D9C 002DDCDC 54 00 20 36 */ slwi r0, r0, 4 +/* 802E0DA0 002DDCE0 38 83 01 08 */ addi r4, r3, 0x108 +/* 802E0DA4 002DDCE4 7C 84 02 14 */ add r4, r4, r0 +/* 802E0DA8 002DDCE8 C0 04 00 00 */ lfs f0, 0(r4) +/* 802E0DAC 002DDCEC D0 1E 00 48 */ stfs f0, 0x48(r30) +/* 802E0DB0 002DDCF0 C0 04 00 04 */ lfs f0, 4(r4) +/* 802E0DB4 002DDCF4 D0 1E 00 4C */ stfs f0, 0x4c(r30) +/* 802E0DB8 002DDCF8 C0 04 00 08 */ lfs f0, 8(r4) +/* 802E0DBC 002DDCFC D0 1E 00 50 */ stfs f0, 0x50(r30) +/* 802E0DC0 002DDD00 A8 04 00 0C */ lha r0, 0xc(r4) +/* 802E0DC4 002DDD04 B0 1E 00 54 */ sth r0, 0x54(r30) +/* 802E0DC8 002DDD08 88 04 00 0E */ lbz r0, 0xe(r4) +/* 802E0DCC 002DDD0C 98 1E 00 56 */ stb r0, 0x56(r30) +/* 802E0DD0 002DDD10 88 04 00 0F */ lbz r0, 0xf(r4) +/* 802E0DD4 002DDD14 98 1E 00 57 */ stb r0, 0x57(r30) +/* 802E0DD8 002DDD18 A8 1E 00 7C */ lha r0, 0x7c(r30) +/* 802E0DDC 002DDD1C 54 00 20 36 */ slwi r0, r0, 4 +/* 802E0DE0 002DDD20 38 83 01 48 */ addi r4, r3, 0x148 +/* 802E0DE4 002DDD24 7C 84 02 14 */ add r4, r4, r0 +/* 802E0DE8 002DDD28 C0 04 00 00 */ lfs f0, 0(r4) +/* 802E0DEC 002DDD2C D0 1E 00 58 */ stfs f0, 0x58(r30) +/* 802E0DF0 002DDD30 C0 04 00 04 */ lfs f0, 4(r4) +/* 802E0DF4 002DDD34 D0 1E 00 5C */ stfs f0, 0x5c(r30) +/* 802E0DF8 002DDD38 C0 04 00 08 */ lfs f0, 8(r4) +/* 802E0DFC 002DDD3C D0 1E 00 60 */ stfs f0, 0x60(r30) +/* 802E0E00 002DDD40 A8 04 00 0C */ lha r0, 0xc(r4) +/* 802E0E04 002DDD44 B0 1E 00 64 */ sth r0, 0x64(r30) +/* 802E0E08 002DDD48 88 04 00 0E */ lbz r0, 0xe(r4) +/* 802E0E0C 002DDD4C 98 1E 00 66 */ stb r0, 0x66(r30) +/* 802E0E10 002DDD50 88 04 00 0F */ lbz r0, 0xf(r4) +/* 802E0E14 002DDD54 98 1E 00 67 */ stb r0, 0x67(r30) +/* 802E0E18 002DDD58 38 63 00 18 */ addi r3, r3, 0x18 +/* 802E0E1C 002DDD5C A8 1E 00 7C */ lha r0, 0x7c(r30) +/* 802E0E20 002DDD60 1C 00 00 0C */ mulli r0, r0, 0xc +/* 802E0E24 002DDD64 7C 63 02 14 */ add r3, r3, r0 +/* 802E0E28 002DDD68 88 03 00 0A */ lbz r0, 0xa(r3) +/* 802E0E2C 002DDD6C 98 1E 00 7E */ stb r0, 0x7e(r30) +lbl_802E0E30: +/* 802E0E30 002DDD70 88 1E 00 A8 */ lbz r0, 0xa8(r30) +/* 802E0E34 002DDD74 28 00 00 00 */ cmplwi r0, 0 +/* 802E0E38 002DDD78 41 82 00 1C */ beq lbl_802E0E54 +/* 802E0E3C 002DDD7C 80 8D 83 68 */ lwz r4, lbl_804508E8-_SDA_BASE_(r13) +/* 802E0E40 002DDD80 80 7E 00 18 */ lwz r3, 0x18(r30) +/* 802E0E44 002DDD84 80 0D 83 6C */ lwz r0, lbl_804508EC-_SDA_BASE_(r13) +/* 802E0E48 002DDD88 7C 60 00 38 */ and r0, r3, r0 +/* 802E0E4C 002DDD8C 7C 04 00 40 */ cmplw r4, r0 +/* 802E0E50 002DDD90 41 82 00 10 */ beq lbl_802E0E60 +lbl_802E0E54: +/* 802E0E54 002DDD94 38 00 00 00 */ li r0, 0 +/* 802E0E58 002DDD98 98 1E 00 98 */ stb r0, 0x98(r30) +/* 802E0E5C 002DDD9C 48 00 00 50 */ b lbl_802E0EAC +lbl_802E0E60: +/* 802E0E60 002DDDA0 88 0D 8F 81 */ lbz r0, lbl_80451501-_SDA_BASE_(r13) +/* 802E0E64 002DDDA4 28 00 00 00 */ cmplwi r0, 0 +/* 802E0E68 002DDDA8 40 82 00 44 */ bne lbl_802E0EAC +/* 802E0E6C 002DDDAC 88 1E 00 98 */ lbz r0, 0x98(r30) +/* 802E0E70 002DDDB0 28 00 00 01 */ cmplwi r0, 1 +/* 802E0E74 002DDDB4 40 82 00 24 */ bne lbl_802E0E98 +/* 802E0E78 002DDDB8 48 06 18 85 */ bl OSGetTime +/* 802E0E7C 002DDDBC 80 1E 00 A0 */ lwz r0, 0xa0(r30) +/* 802E0E80 002DDDC0 80 BE 00 A4 */ lwz r5, 0xa4(r30) +/* 802E0E84 002DDDC4 7C C5 20 10 */ subfc r6, r5, r4 +/* 802E0E88 002DDDC8 7C A0 19 10 */ subfe r5, r0, r3 +/* 802E0E8C 002DDDCC 7F C3 F3 78 */ mr r3, r30 +/* 802E0E90 002DDDD0 4B FF FD DD */ bl checkResetCallback__10JUTGamePadFx +/* 802E0E94 002DDDD4 48 00 00 18 */ b lbl_802E0EAC +lbl_802E0E98: +/* 802E0E98 002DDDD8 38 00 00 01 */ li r0, 1 +/* 802E0E9C 002DDDDC 98 1E 00 98 */ stb r0, 0x98(r30) +/* 802E0EA0 002DDDE0 48 06 18 5D */ bl OSGetTime +/* 802E0EA4 002DDDE4 90 9E 00 A4 */ stw r4, 0xa4(r30) +/* 802E0EA8 002DDDE8 90 7E 00 A0 */ stw r3, 0xa0(r30) +lbl_802E0EAC: +/* 802E0EAC 002DDDEC 3C 60 80 43 */ lis r3, lbl_8043456C@ha +/* 802E0EB0 002DDDF0 83 E3 45 6C */ lwz r31, lbl_8043456C@l(r3) +/* 802E0EB4 002DDDF4 48 00 00 B4 */ b lbl_802E0F68 +lbl_802E0EB8: +/* 802E0EB8 002DDDF8 83 9F 00 00 */ lwz r28, 0(r31) +/* 802E0EBC 002DDDFC 88 1C 00 10 */ lbz r0, 0x10(r28) +/* 802E0EC0 002DDE00 28 00 00 00 */ cmplwi r0, 0 +/* 802E0EC4 002DDE04 41 82 00 A0 */ beq lbl_802E0F64 +/* 802E0EC8 002DDE08 AB BE 00 7C */ lha r29, 0x7c(r30) +/* 802E0ECC 002DDE0C 7F A0 07 35 */ extsh. r0, r29 +/* 802E0ED0 002DDE10 41 80 00 94 */ blt lbl_802E0F64 +/* 802E0ED4 002DDE14 2C 1D 00 04 */ cmpwi r29, 4 +/* 802E0ED8 002DDE18 40 80 00 8C */ bge lbl_802E0F64 +/* 802E0EDC 002DDE1C 80 7C 00 14 */ lwz r3, 0x14(r28) +/* 802E0EE0 002DDE20 80 9C 00 18 */ lwz r4, 0x18(r28) +/* 802E0EE4 002DDE24 80 1E 00 18 */ lwz r0, 0x18(r30) +/* 802E0EE8 002DDE28 7C 00 20 38 */ and r0, r0, r4 +/* 802E0EEC 002DDE2C 7C 00 18 40 */ cmplw r0, r3 +/* 802E0EF0 002DDE30 40 82 00 68 */ bne lbl_802E0F58 +/* 802E0EF4 002DDE34 38 7D 00 20 */ addi r3, r29, 0x20 +/* 802E0EF8 002DDE38 7C 1C 18 AE */ lbzx r0, r28, r3 +/* 802E0EFC 002DDE3C 28 00 00 01 */ cmplwi r0, 1 +/* 802E0F00 002DDE40 40 82 00 2C */ bne lbl_802E0F2C +/* 802E0F04 002DDE44 48 06 17 F9 */ bl OSGetTime +/* 802E0F08 002DDE48 57 A5 18 38 */ slwi r5, r29, 3 +/* 802E0F0C 002DDE4C 38 05 00 28 */ addi r0, r5, 0x28 +/* 802E0F10 002DDE50 7C BC 02 14 */ add r5, r28, r0 +/* 802E0F14 002DDE54 80 A5 00 04 */ lwz r5, 4(r5) +/* 802E0F18 002DDE58 7C A5 20 10 */ subfc r5, r5, r4 +/* 802E0F1C 002DDE5C 80 7F 00 00 */ lwz r3, 0(r31) +/* 802E0F20 002DDE60 A8 9E 00 7C */ lha r4, 0x7c(r30) +/* 802E0F24 002DDE64 48 00 0B D9 */ bl checkCallback__19JUTGamePadLongPressFlUl +/* 802E0F28 002DDE68 48 00 00 3C */ b lbl_802E0F64 +lbl_802E0F2C: +/* 802E0F2C 002DDE6C 38 00 00 01 */ li r0, 1 +/* 802E0F30 002DDE70 7C 1C 19 AE */ stbx r0, r28, r3 +/* 802E0F34 002DDE74 83 BF 00 00 */ lwz r29, 0(r31) +/* 802E0F38 002DDE78 48 06 17 C5 */ bl OSGetTime +/* 802E0F3C 002DDE7C A8 1E 00 7C */ lha r0, 0x7c(r30) +/* 802E0F40 002DDE80 54 05 18 38 */ slwi r5, r0, 3 +/* 802E0F44 002DDE84 38 05 00 28 */ addi r0, r5, 0x28 +/* 802E0F48 002DDE88 7C BD 02 14 */ add r5, r29, r0 +/* 802E0F4C 002DDE8C 90 85 00 04 */ stw r4, 4(r5) +/* 802E0F50 002DDE90 90 65 00 00 */ stw r3, 0(r5) +/* 802E0F54 002DDE94 48 00 00 10 */ b lbl_802E0F64 +lbl_802E0F58: +/* 802E0F58 002DDE98 38 60 00 00 */ li r3, 0 +/* 802E0F5C 002DDE9C 38 1D 00 20 */ addi r0, r29, 0x20 +/* 802E0F60 002DDEA0 7C 7C 01 AE */ stbx r3, r28, r0 +lbl_802E0F64: +/* 802E0F64 002DDEA4 83 FF 00 0C */ lwz r31, 0xc(r31) +lbl_802E0F68: +/* 802E0F68 002DDEA8 28 1F 00 00 */ cmplwi r31, 0 +/* 802E0F6C 002DDEAC 40 82 FF 4C */ bne lbl_802E0EB8 +/* 802E0F70 002DDEB0 A8 9E 00 7C */ lha r4, 0x7c(r30) +/* 802E0F74 002DDEB4 7C 80 07 35 */ extsh. r0, r4 +/* 802E0F78 002DDEB8 41 80 00 14 */ blt lbl_802E0F8C +/* 802E0F7C 002DDEBC 2C 04 00 04 */ cmpwi r4, 4 +/* 802E0F80 002DDEC0 40 80 00 0C */ bge lbl_802E0F8C +/* 802E0F84 002DDEC4 38 7E 00 68 */ addi r3, r30, 0x68 +/* 802E0F88 002DDEC8 48 00 07 99 */ bl update__Q210JUTGamePad7CRumbleFs +lbl_802E0F8C: +/* 802E0F8C 002DDECC 39 61 00 20 */ addi r11, r1, 0x20 +/* 802E0F90 002DDED0 48 08 12 95 */ bl _restgpr_28 +/* 802E0F94 002DDED4 80 01 00 24 */ lwz r0, 0x24(r1) +/* 802E0F98 002DDED8 7C 08 03 A6 */ mtlr r0 +/* 802E0F9C 002DDEDC 38 21 00 20 */ addi r1, r1, 0x20 +/* 802E0FA0 002DDEE0 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/JSystem/JUtility/JUTGamePad/asm/func_802E108C.s b/include/JSystem/JUtility/JUTGamePad/asm/func_802E108C.s new file mode 100644 index 00000000000..4f690b83176 --- /dev/null +++ b/include/JSystem/JUtility/JUTGamePad/asm/func_802E108C.s @@ -0,0 +1,108 @@ +/* 802E108C 002DDFCC 94 21 FF E0 */ stwu r1, -0x20(r1) +/* 802E1090 002DDFD0 28 04 00 00 */ cmplwi r4, 0 +/* 802E1094 002DDFD4 41 82 00 0C */ beq lbl_802E10A0 +/* 802E1098 002DDFD8 A0 04 00 00 */ lhz r0, 0(r4) +/* 802E109C 002DDFDC 48 00 00 08 */ b lbl_802E10A4 +lbl_802E10A0: +/* 802E10A0 002DDFE0 38 00 00 00 */ li r0, 0 +lbl_802E10A4: +/* 802E10A4 002DDFE4 7C A7 03 78 */ or r7, r5, r0 +/* 802E10A8 002DDFE8 38 A0 00 00 */ li r5, 0 +/* 802E10AC 002DDFEC 90 A3 00 18 */ stw r5, 0x18(r3) +/* 802E10B0 002DDFF0 80 03 00 28 */ lwz r0, 0x28(r3) +/* 802E10B4 002DDFF4 28 00 00 00 */ cmplwi r0, 0 +/* 802E10B8 002DDFF8 41 82 00 8C */ beq lbl_802E1144 +/* 802E10BC 002DDFFC 80 03 00 24 */ lwz r0, 0x24(r3) +/* 802E10C0 002DE000 28 00 00 00 */ cmplwi r0, 0 +/* 802E10C4 002DE004 41 82 00 80 */ beq lbl_802E1144 +/* 802E10C8 002DE008 7C E8 00 39 */ and. r8, r7, r0 +/* 802E10CC 002DE00C 90 A3 00 18 */ stw r5, 0x18(r3) +/* 802E10D0 002DE010 40 82 00 10 */ bne lbl_802E10E0 +/* 802E10D4 002DE014 90 A3 00 20 */ stw r5, 0x20(r3) +/* 802E10D8 002DE018 90 A3 00 1C */ stw r5, 0x1c(r3) +/* 802E10DC 002DE01C 48 00 00 68 */ b lbl_802E1144 +lbl_802E10E0: +/* 802E10E0 002DE020 80 C3 00 20 */ lwz r6, 0x20(r3) +/* 802E10E4 002DE024 7C 06 40 40 */ cmplw r6, r8 +/* 802E10E8 002DE028 40 82 00 44 */ bne lbl_802E112C +/* 802E10EC 002DE02C 80 A3 00 1C */ lwz r5, 0x1c(r3) +/* 802E10F0 002DE030 38 05 00 01 */ addi r0, r5, 1 +/* 802E10F4 002DE034 90 03 00 1C */ stw r0, 0x1c(r3) +/* 802E10F8 002DE038 80 A3 00 1C */ lwz r5, 0x1c(r3) +/* 802E10FC 002DE03C 80 03 00 28 */ lwz r0, 0x28(r3) +/* 802E1100 002DE040 7C 05 00 40 */ cmplw r5, r0 +/* 802E1104 002DE044 41 82 00 20 */ beq lbl_802E1124 +/* 802E1108 002DE048 40 81 00 3C */ ble lbl_802E1144 +/* 802E110C 002DE04C 7C C0 28 50 */ subf r6, r0, r5 +/* 802E1110 002DE050 80 A3 00 2C */ lwz r5, 0x2c(r3) +/* 802E1114 002DE054 7C 06 2B 96 */ divwu r0, r6, r5 +/* 802E1118 002DE058 7C 00 29 D6 */ mullw r0, r0, r5 +/* 802E111C 002DE05C 7C 00 30 51 */ subf. r0, r0, r6 +/* 802E1120 002DE060 40 82 00 24 */ bne lbl_802E1144 +lbl_802E1124: +/* 802E1124 002DE064 91 03 00 18 */ stw r8, 0x18(r3) +/* 802E1128 002DE068 48 00 00 1C */ b lbl_802E1144 +lbl_802E112C: +/* 802E112C 002DE06C 38 00 FF FF */ li r0, -1 +/* 802E1130 002DE070 7C C0 02 78 */ xor r0, r6, r0 +/* 802E1134 002DE074 7D 00 00 38 */ and r0, r8, r0 +/* 802E1138 002DE078 90 03 00 18 */ stw r0, 0x18(r3) +/* 802E113C 002DE07C 91 03 00 20 */ stw r8, 0x20(r3) +/* 802E1140 002DE080 90 A3 00 1C */ stw r5, 0x1c(r3) +lbl_802E1144: +/* 802E1144 002DE084 80 03 00 00 */ lwz r0, 0(r3) +/* 802E1148 002DE088 7C E0 02 78 */ xor r0, r7, r0 +/* 802E114C 002DE08C 7C E0 00 38 */ and r0, r7, r0 +/* 802E1150 002DE090 90 03 00 04 */ stw r0, 4(r3) +/* 802E1154 002DE094 80 A3 00 00 */ lwz r5, 0(r3) +/* 802E1158 002DE098 7C E0 2A 78 */ xor r0, r7, r5 +/* 802E115C 002DE09C 7C A0 00 38 */ and r0, r5, r0 +/* 802E1160 002DE0A0 90 03 00 08 */ stw r0, 8(r3) +/* 802E1164 002DE0A4 90 E3 00 00 */ stw r7, 0(r3) +/* 802E1168 002DE0A8 80 C3 00 18 */ lwz r6, 0x18(r3) +/* 802E116C 002DE0AC 80 A3 00 24 */ lwz r5, 0x24(r3) +/* 802E1170 002DE0B0 38 00 FF FF */ li r0, -1 +/* 802E1174 002DE0B4 7C A5 02 78 */ xor r5, r5, r0 +/* 802E1178 002DE0B8 80 03 00 04 */ lwz r0, 4(r3) +/* 802E117C 002DE0BC 7C A0 00 38 */ and r0, r5, r0 +/* 802E1180 002DE0C0 7C C0 03 78 */ or r0, r6, r0 +/* 802E1184 002DE0C4 90 03 00 18 */ stw r0, 0x18(r3) +/* 802E1188 002DE0C8 28 04 00 00 */ cmplwi r4, 0 +/* 802E118C 002DE0CC 41 82 00 28 */ beq lbl_802E11B4 +/* 802E1190 002DE0D0 88 04 00 08 */ lbz r0, 8(r4) +/* 802E1194 002DE0D4 98 03 00 0C */ stb r0, 0xc(r3) +/* 802E1198 002DE0D8 88 04 00 09 */ lbz r0, 9(r4) +/* 802E119C 002DE0DC 98 03 00 0D */ stb r0, 0xd(r3) +/* 802E11A0 002DE0E0 88 04 00 06 */ lbz r0, 6(r4) +/* 802E11A4 002DE0E4 98 03 00 0E */ stb r0, 0xe(r3) +/* 802E11A8 002DE0E8 88 04 00 07 */ lbz r0, 7(r4) +/* 802E11AC 002DE0EC 98 03 00 0F */ stb r0, 0xf(r3) +/* 802E11B0 002DE0F0 48 00 00 18 */ b lbl_802E11C8 +lbl_802E11B4: +/* 802E11B4 002DE0F4 38 00 00 00 */ li r0, 0 +/* 802E11B8 002DE0F8 98 03 00 0C */ stb r0, 0xc(r3) +/* 802E11BC 002DE0FC 98 03 00 0D */ stb r0, 0xd(r3) +/* 802E11C0 002DE100 98 03 00 0E */ stb r0, 0xe(r3) +/* 802E11C4 002DE104 98 03 00 0F */ stb r0, 0xf(r3) +lbl_802E11C8: +/* 802E11C8 002DE108 88 03 00 0E */ lbz r0, 0xe(r3) +/* 802E11CC 002DE10C C8 42 C6 20 */ lfd f2, lbl_80456020-_SDA2_BASE_(r2) +/* 802E11D0 002DE110 6C 00 80 00 */ xoris r0, r0, 0x8000 +/* 802E11D4 002DE114 90 01 00 0C */ stw r0, 0xc(r1) +/* 802E11D8 002DE118 3C 80 43 30 */ lis r4, 0x4330 +/* 802E11DC 002DE11C 90 81 00 08 */ stw r4, 8(r1) +/* 802E11E0 002DE120 C8 01 00 08 */ lfd f0, 8(r1) +/* 802E11E4 002DE124 EC 00 10 28 */ fsubs f0, f0, f2 +/* 802E11E8 002DE128 C0 22 C6 18 */ lfs f1, lbl_80456018-_SDA2_BASE_(r2) +/* 802E11EC 002DE12C EC 00 08 24 */ fdivs f0, f0, f1 +/* 802E11F0 002DE130 D0 03 00 10 */ stfs f0, 0x10(r3) +/* 802E11F4 002DE134 88 03 00 0F */ lbz r0, 0xf(r3) +/* 802E11F8 002DE138 6C 00 80 00 */ xoris r0, r0, 0x8000 +/* 802E11FC 002DE13C 90 01 00 14 */ stw r0, 0x14(r1) +/* 802E1200 002DE140 90 81 00 10 */ stw r4, 0x10(r1) +/* 802E1204 002DE144 C8 01 00 10 */ lfd f0, 0x10(r1) +/* 802E1208 002DE148 EC 00 10 28 */ fsubs f0, f0, f2 +/* 802E120C 002DE14C EC 00 08 24 */ fdivs f0, f0, f1 +/* 802E1210 002DE150 D0 03 00 14 */ stfs f0, 0x14(r3) +/* 802E1214 002DE154 38 21 00 20 */ addi r1, r1, 0x20 +/* 802E1218 002DE158 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/JSystem/JUtility/JUTGamePad/asm/func_802E1238.s b/include/JSystem/JUtility/JUTGamePad/asm/func_802E1238.s new file mode 100644 index 00000000000..40e46c95932 --- /dev/null +++ b/include/JSystem/JUtility/JUTGamePad/asm/func_802E1238.s @@ -0,0 +1,200 @@ +/* 802E1238 002DE178 94 21 FF C0 */ stwu r1, -0x40(r1) +/* 802E123C 002DE17C 7C 08 02 A6 */ mflr r0 +/* 802E1240 002DE180 90 01 00 44 */ stw r0, 0x44(r1) +/* 802E1244 002DE184 39 61 00 40 */ addi r11, r1, 0x40 +/* 802E1248 002DE188 48 08 0F 95 */ bl _savegpr_29 +/* 802E124C 002DE18C 7C 7D 1B 78 */ mr r29, r3 +/* 802E1250 002DE190 7C FE 3B 78 */ mr r30, r7 +/* 802E1254 002DE194 7D 1F 43 78 */ mr r31, r8 +/* 802E1258 002DE198 80 0D 83 5C */ lwz r0, lbl_804508DC-_SDA_BASE_(r13) +/* 802E125C 002DE19C 2C 00 00 02 */ cmpwi r0, 2 +/* 802E1260 002DE1A0 41 82 00 2C */ beq lbl_802E128C +/* 802E1264 002DE1A4 40 80 00 40 */ bge lbl_802E12A4 +/* 802E1268 002DE1A8 2C 00 00 01 */ cmpwi r0, 1 +/* 802E126C 002DE1AC 40 80 00 08 */ bge lbl_802E1274 +/* 802E1270 002DE1B0 48 00 00 34 */ b lbl_802E12A4 +lbl_802E1274: +/* 802E1274 002DE1B4 2C 1E 00 00 */ cmpwi r30, 0 +/* 802E1278 002DE1B8 38 00 00 2A */ li r0, 0x2a +/* 802E127C 002DE1BC 40 82 00 08 */ bne lbl_802E1284 +/* 802E1280 002DE1C0 38 00 00 36 */ li r0, 0x36 +lbl_802E1284: +/* 802E1284 002DE1C4 7C 03 03 78 */ mr r3, r0 +/* 802E1288 002DE1C8 48 00 00 30 */ b lbl_802E12B8 +lbl_802E128C: +/* 802E128C 002DE1CC 2C 1E 00 00 */ cmpwi r30, 0 +/* 802E1290 002DE1D0 38 00 00 1D */ li r0, 0x1d +/* 802E1294 002DE1D4 40 82 00 08 */ bne lbl_802E129C +/* 802E1298 002DE1D8 38 00 00 26 */ li r0, 0x26 +lbl_802E129C: +/* 802E129C 002DE1DC 7C 03 03 78 */ mr r3, r0 +/* 802E12A0 002DE1E0 48 00 00 18 */ b lbl_802E12B8 +lbl_802E12A4: +/* 802E12A4 002DE1E4 2C 1E 00 00 */ cmpwi r30, 0 +/* 802E12A8 002DE1E8 38 00 00 39 */ li r0, 0x39 +/* 802E12AC 002DE1EC 40 82 00 08 */ bne lbl_802E12B4 +/* 802E12B0 002DE1F0 38 00 00 45 */ li r0, 0x45 +lbl_802E12B4: +/* 802E12B4 002DE1F4 7C 03 03 78 */ mr r3, r0 +lbl_802E12B8: +/* 802E12B8 002DE1F8 98 9D 00 0E */ stb r4, 0xe(r29) +/* 802E12BC 002DE1FC 98 BD 00 0F */ stb r5, 0xf(r29) +/* 802E12C0 002DE200 7C 80 07 74 */ extsb r0, r4 +/* 802E12C4 002DE204 C8 42 C6 20 */ lfd f2, lbl_80456020-_SDA2_BASE_(r2) +/* 802E12C8 002DE208 6C 00 80 00 */ xoris r0, r0, 0x8000 +/* 802E12CC 002DE20C 90 01 00 14 */ stw r0, 0x14(r1) +/* 802E12D0 002DE210 3C 80 43 30 */ lis r4, 0x4330 +/* 802E12D4 002DE214 90 81 00 10 */ stw r4, 0x10(r1) +/* 802E12D8 002DE218 C8 01 00 10 */ lfd f0, 0x10(r1) +/* 802E12DC 002DE21C EC 20 10 28 */ fsubs f1, f0, f2 +/* 802E12E0 002DE220 6C 63 80 00 */ xoris r3, r3, 0x8000 +/* 802E12E4 002DE224 90 61 00 1C */ stw r3, 0x1c(r1) +/* 802E12E8 002DE228 90 81 00 18 */ stw r4, 0x18(r1) +/* 802E12EC 002DE22C C8 01 00 18 */ lfd f0, 0x18(r1) +/* 802E12F0 002DE230 EC 00 10 28 */ fsubs f0, f0, f2 +/* 802E12F4 002DE234 EC 01 00 24 */ fdivs f0, f1, f0 +/* 802E12F8 002DE238 D0 1D 00 00 */ stfs f0, 0(r29) +/* 802E12FC 002DE23C 7C A0 07 74 */ extsb r0, r5 +/* 802E1300 002DE240 6C 00 80 00 */ xoris r0, r0, 0x8000 +/* 802E1304 002DE244 90 01 00 24 */ stw r0, 0x24(r1) +/* 802E1308 002DE248 90 81 00 20 */ stw r4, 0x20(r1) +/* 802E130C 002DE24C C8 01 00 20 */ lfd f0, 0x20(r1) +/* 802E1310 002DE250 EC 20 10 28 */ fsubs f1, f0, f2 +/* 802E1314 002DE254 90 61 00 2C */ stw r3, 0x2c(r1) +/* 802E1318 002DE258 90 81 00 28 */ stw r4, 0x28(r1) +/* 802E131C 002DE25C C8 01 00 28 */ lfd f0, 0x28(r1) +/* 802E1320 002DE260 EC 00 10 28 */ fsubs f0, f0, f2 +/* 802E1324 002DE264 EC 01 00 24 */ fdivs f0, f1, f0 +/* 802E1328 002DE268 D0 1D 00 04 */ stfs f0, 4(r29) +/* 802E132C 002DE26C C0 1D 00 00 */ lfs f0, 0(r29) +/* 802E1330 002DE270 EC 20 00 32 */ fmuls f1, f0, f0 +/* 802E1334 002DE274 C0 1D 00 04 */ lfs f0, 4(r29) +/* 802E1338 002DE278 EC 00 00 32 */ fmuls f0, f0, f0 +/* 802E133C 002DE27C EC 81 00 2A */ fadds f4, f1, f0 +/* 802E1340 002DE280 C0 02 C6 28 */ lfs f0, lbl_80456028-_SDA2_BASE_(r2) +/* 802E1344 002DE284 FC 04 00 40 */ fcmpo cr0, f4, f0 +/* 802E1348 002DE288 40 81 00 58 */ ble lbl_802E13A0 +/* 802E134C 002DE28C FC 00 20 34 */ frsqrte f0, f4 +/* 802E1350 002DE290 C8 62 C6 30 */ lfd f3, lbl_80456030-_SDA2_BASE_(r2) +/* 802E1354 002DE294 FC 23 00 32 */ fmul f1, f3, f0 +/* 802E1358 002DE298 C8 42 C6 38 */ lfd f2, lbl_80456038-_SDA2_BASE_(r2) +/* 802E135C 002DE29C FC 00 00 32 */ fmul f0, f0, f0 +/* 802E1360 002DE2A0 FC 04 00 32 */ fmul f0, f4, f0 +/* 802E1364 002DE2A4 FC 02 00 28 */ fsub f0, f2, f0 +/* 802E1368 002DE2A8 FC 01 00 32 */ fmul f0, f1, f0 +/* 802E136C 002DE2AC FC 23 00 32 */ fmul f1, f3, f0 +/* 802E1370 002DE2B0 FC 00 00 32 */ fmul f0, f0, f0 +/* 802E1374 002DE2B4 FC 04 00 32 */ fmul f0, f4, f0 +/* 802E1378 002DE2B8 FC 02 00 28 */ fsub f0, f2, f0 +/* 802E137C 002DE2BC FC 01 00 32 */ fmul f0, f1, f0 +/* 802E1380 002DE2C0 FC 23 00 32 */ fmul f1, f3, f0 +/* 802E1384 002DE2C4 FC 00 00 32 */ fmul f0, f0, f0 +/* 802E1388 002DE2C8 FC 04 00 32 */ fmul f0, f4, f0 +/* 802E138C 002DE2CC FC 02 00 28 */ fsub f0, f2, f0 +/* 802E1390 002DE2D0 FC 01 00 32 */ fmul f0, f1, f0 +/* 802E1394 002DE2D4 FC 84 00 32 */ fmul f4, f4, f0 +/* 802E1398 002DE2D8 FC 80 20 18 */ frsp f4, f4 +/* 802E139C 002DE2DC 48 00 00 88 */ b lbl_802E1424 +lbl_802E13A0: +/* 802E13A0 002DE2E0 C8 02 C6 40 */ lfd f0, lbl_80456040-_SDA2_BASE_(r2) +/* 802E13A4 002DE2E4 FC 04 00 40 */ fcmpo cr0, f4, f0 +/* 802E13A8 002DE2E8 40 80 00 10 */ bge lbl_802E13B8 +/* 802E13AC 002DE2EC 3C 60 80 45 */ lis r3, lbl_80450AE0@ha +/* 802E13B0 002DE2F0 C0 83 0A E0 */ lfs f4, lbl_80450AE0@l(r3) +/* 802E13B4 002DE2F4 48 00 00 70 */ b lbl_802E1424 +lbl_802E13B8: +/* 802E13B8 002DE2F8 D0 81 00 08 */ stfs f4, 8(r1) +/* 802E13BC 002DE2FC 80 81 00 08 */ lwz r4, 8(r1) +/* 802E13C0 002DE300 54 83 00 50 */ rlwinm r3, r4, 0, 1, 8 +/* 802E13C4 002DE304 3C 00 7F 80 */ lis r0, 0x7f80 +/* 802E13C8 002DE308 7C 03 00 00 */ cmpw r3, r0 +/* 802E13CC 002DE30C 41 82 00 14 */ beq lbl_802E13E0 +/* 802E13D0 002DE310 40 80 00 40 */ bge lbl_802E1410 +/* 802E13D4 002DE314 2C 03 00 00 */ cmpwi r3, 0 +/* 802E13D8 002DE318 41 82 00 20 */ beq lbl_802E13F8 +/* 802E13DC 002DE31C 48 00 00 34 */ b lbl_802E1410 +lbl_802E13E0: +/* 802E13E0 002DE320 54 80 02 7F */ clrlwi. r0, r4, 9 +/* 802E13E4 002DE324 41 82 00 0C */ beq lbl_802E13F0 +/* 802E13E8 002DE328 38 00 00 01 */ li r0, 1 +/* 802E13EC 002DE32C 48 00 00 28 */ b lbl_802E1414 +lbl_802E13F0: +/* 802E13F0 002DE330 38 00 00 02 */ li r0, 2 +/* 802E13F4 002DE334 48 00 00 20 */ b lbl_802E1414 +lbl_802E13F8: +/* 802E13F8 002DE338 54 80 02 7F */ clrlwi. r0, r4, 9 +/* 802E13FC 002DE33C 41 82 00 0C */ beq lbl_802E1408 +/* 802E1400 002DE340 38 00 00 05 */ li r0, 5 +/* 802E1404 002DE344 48 00 00 10 */ b lbl_802E1414 +lbl_802E1408: +/* 802E1408 002DE348 38 00 00 03 */ li r0, 3 +/* 802E140C 002DE34C 48 00 00 08 */ b lbl_802E1414 +lbl_802E1410: +/* 802E1410 002DE350 38 00 00 04 */ li r0, 4 +lbl_802E1414: +/* 802E1414 002DE354 2C 00 00 01 */ cmpwi r0, 1 +/* 802E1418 002DE358 40 82 00 0C */ bne lbl_802E1424 +/* 802E141C 002DE35C 3C 60 80 45 */ lis r3, lbl_80450AE0@ha +/* 802E1420 002DE360 C0 83 0A E0 */ lfs f4, lbl_80450AE0@l(r3) +lbl_802E1424: +/* 802E1424 002DE364 D0 9D 00 08 */ stfs f4, 8(r29) +/* 802E1428 002DE368 C0 3D 00 08 */ lfs f1, 8(r29) +/* 802E142C 002DE36C C0 02 C6 48 */ lfs f0, lbl_80456048-_SDA2_BASE_(r2) +/* 802E1430 002DE370 FC 01 00 40 */ fcmpo cr0, f1, f0 +/* 802E1434 002DE374 40 81 00 30 */ ble lbl_802E1464 +/* 802E1438 002DE378 2C 06 00 01 */ cmpwi r6, 1 +/* 802E143C 002DE37C 40 82 00 20 */ bne lbl_802E145C +/* 802E1440 002DE380 C0 1D 00 00 */ lfs f0, 0(r29) +/* 802E1444 002DE384 EC 00 08 24 */ fdivs f0, f0, f1 +/* 802E1448 002DE388 D0 1D 00 00 */ stfs f0, 0(r29) +/* 802E144C 002DE38C C0 3D 00 04 */ lfs f1, 4(r29) +/* 802E1450 002DE390 C0 1D 00 08 */ lfs f0, 8(r29) +/* 802E1454 002DE394 EC 01 00 24 */ fdivs f0, f1, f0 +/* 802E1458 002DE398 D0 1D 00 04 */ stfs f0, 4(r29) +lbl_802E145C: +/* 802E145C 002DE39C C0 02 C6 48 */ lfs f0, lbl_80456048-_SDA2_BASE_(r2) +/* 802E1460 002DE3A0 D0 1D 00 08 */ stfs f0, 8(r29) +lbl_802E1464: +/* 802E1464 002DE3A4 C0 1D 00 08 */ lfs f0, 8(r29) +/* 802E1468 002DE3A8 C0 22 C6 28 */ lfs f1, lbl_80456028-_SDA2_BASE_(r2) +/* 802E146C 002DE3AC FC 00 08 40 */ fcmpo cr0, f0, f1 +/* 802E1470 002DE3B0 40 81 00 5C */ ble lbl_802E14CC +/* 802E1474 002DE3B4 C0 1D 00 04 */ lfs f0, 4(r29) +/* 802E1478 002DE3B8 FC 01 00 00 */ fcmpu cr0, f1, f0 +/* 802E147C 002DE3BC 40 82 00 28 */ bne lbl_802E14A4 +/* 802E1480 002DE3C0 C0 1D 00 00 */ lfs f0, 0(r29) +/* 802E1484 002DE3C4 FC 00 08 40 */ fcmpo cr0, f0, f1 +/* 802E1488 002DE3C8 40 81 00 10 */ ble lbl_802E1498 +/* 802E148C 002DE3CC 38 00 40 00 */ li r0, 0x4000 +/* 802E1490 002DE3D0 B0 1D 00 0C */ sth r0, 0xc(r29) +/* 802E1494 002DE3D4 48 00 00 38 */ b lbl_802E14CC +lbl_802E1498: +/* 802E1498 002DE3D8 38 00 C0 00 */ li r0, -16384 +/* 802E149C 002DE3DC B0 1D 00 0C */ sth r0, 0xc(r29) +/* 802E14A0 002DE3E0 48 00 00 2C */ b lbl_802E14CC +lbl_802E14A4: +/* 802E14A4 002DE3E4 C0 3D 00 00 */ lfs f1, 0(r29) +/* 802E14A8 002DE3E8 FC 40 00 50 */ fneg f2, f0 +/* 802E14AC 002DE3EC 48 08 B2 75 */ bl func_8036C720 +/* 802E14B0 002DE3F0 FC 20 08 18 */ frsp f1, f1 +/* 802E14B4 002DE3F4 C0 02 C6 4C */ lfs f0, lbl_8045604C-_SDA2_BASE_(r2) +/* 802E14B8 002DE3F8 EC 00 00 72 */ fmuls f0, f0, f1 +/* 802E14BC 002DE3FC FC 00 00 1E */ fctiwz f0, f0 +/* 802E14C0 002DE400 D8 01 00 28 */ stfd f0, 0x28(r1) +/* 802E14C4 002DE404 80 01 00 2C */ lwz r0, 0x2c(r1) +/* 802E14C8 002DE408 B0 1D 00 0C */ sth r0, 0xc(r29) +lbl_802E14CC: +/* 802E14CC 002DE40C 7F A3 EB 78 */ mr r3, r29 +/* 802E14D0 002DE410 2C 1E 00 00 */ cmpwi r30, 0 +/* 802E14D4 002DE414 38 00 00 10 */ li r0, 0x10 +/* 802E14D8 002DE418 40 82 00 08 */ bne lbl_802E14E0 +/* 802E14DC 002DE41C 38 00 00 18 */ li r0, 0x18 +lbl_802E14E0: +/* 802E14E0 002DE420 7F E4 04 30 */ srw r4, r31, r0 +/* 802E14E4 002DE424 48 00 00 1D */ bl getButton__Q210JUTGamePad6CStickFUl +/* 802E14E8 002DE428 39 61 00 40 */ addi r11, r1, 0x40 +/* 802E14EC 002DE42C 48 08 0D 3D */ bl _restgpr_29 +/* 802E14F0 002DE430 80 01 00 44 */ lwz r0, 0x44(r1) +/* 802E14F4 002DE434 7C 08 03 A6 */ mtlr r0 +/* 802E14F8 002DE438 38 21 00 40 */ addi r1, r1, 0x40 +/* 802E14FC 002DE43C 4E 80 00 20 */ blr diff --git a/include/JSystem/JUtility/JUTGamePad/asm/func_802E1500.s b/include/JSystem/JUtility/JUTGamePad/asm/func_802E1500.s new file mode 100644 index 00000000000..9f31ce695e0 --- /dev/null +++ b/include/JSystem/JUtility/JUTGamePad/asm/func_802E1500.s @@ -0,0 +1,51 @@ +/* 802E1500 002DE440 54 80 07 3E */ clrlwi r0, r4, 0x1c +/* 802E1504 002DE444 C0 2D 83 64 */ lfs f1, lbl_804508E4-_SDA_BASE_(r13) +/* 802E1508 002DE448 FC 80 08 50 */ fneg f4, f1 +/* 802E150C 002DE44C C0 43 00 00 */ lfs f2, 0(r3) +/* 802E1510 002DE450 FC 04 10 40 */ fcmpo cr0, f4, f2 +/* 802E1514 002DE454 40 80 00 14 */ bge lbl_802E1528 +/* 802E1518 002DE458 FC 02 08 40 */ fcmpo cr0, f2, f1 +/* 802E151C 002DE45C 40 80 00 0C */ bge lbl_802E1528 +/* 802E1520 002DE460 54 00 00 3A */ rlwinm r0, r0, 0, 0, 0x1d +/* 802E1524 002DE464 48 00 00 38 */ b lbl_802E155C +lbl_802E1528: +/* 802E1528 002DE468 C0 6D 83 60 */ lfs f3, lbl_804508E0-_SDA_BASE_(r13) +/* 802E152C 002DE46C FC 00 18 50 */ fneg f0, f3 +/* 802E1530 002DE470 FC 02 00 40 */ fcmpo cr0, f2, f0 +/* 802E1534 002DE474 4C 40 13 82 */ cror 2, 0, 2 +/* 802E1538 002DE478 40 82 00 10 */ bne lbl_802E1548 +/* 802E153C 002DE47C 54 00 07 FA */ rlwinm r0, r0, 0, 0x1f, 0x1d +/* 802E1540 002DE480 60 00 00 01 */ ori r0, r0, 1 +/* 802E1544 002DE484 48 00 00 18 */ b lbl_802E155C +lbl_802E1548: +/* 802E1548 002DE488 FC 02 18 40 */ fcmpo cr0, f2, f3 +/* 802E154C 002DE48C 4C 41 13 82 */ cror 2, 1, 2 +/* 802E1550 002DE490 40 82 00 0C */ bne lbl_802E155C +/* 802E1554 002DE494 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e +/* 802E1558 002DE498 60 00 00 02 */ ori r0, r0, 2 +lbl_802E155C: +/* 802E155C 002DE49C C0 43 00 04 */ lfs f2, 4(r3) +/* 802E1560 002DE4A0 FC 04 10 40 */ fcmpo cr0, f4, f2 +/* 802E1564 002DE4A4 40 80 00 14 */ bge lbl_802E1578 +/* 802E1568 002DE4A8 FC 02 08 40 */ fcmpo cr0, f2, f1 +/* 802E156C 002DE4AC 40 80 00 0C */ bge lbl_802E1578 +/* 802E1570 002DE4B0 54 00 07 B6 */ rlwinm r0, r0, 0, 0x1e, 0x1b +/* 802E1574 002DE4B4 48 00 00 38 */ b lbl_802E15AC +lbl_802E1578: +/* 802E1578 002DE4B8 C0 2D 83 60 */ lfs f1, lbl_804508E0-_SDA_BASE_(r13) +/* 802E157C 002DE4BC FC 00 08 50 */ fneg f0, f1 +/* 802E1580 002DE4C0 FC 02 00 40 */ fcmpo cr0, f2, f0 +/* 802E1584 002DE4C4 4C 40 13 82 */ cror 2, 0, 2 +/* 802E1588 002DE4C8 40 82 00 10 */ bne lbl_802E1598 +/* 802E158C 002DE4CC 54 00 07 76 */ rlwinm r0, r0, 0, 0x1d, 0x1b +/* 802E1590 002DE4D0 60 00 00 04 */ ori r0, r0, 4 +/* 802E1594 002DE4D4 48 00 00 18 */ b lbl_802E15AC +lbl_802E1598: +/* 802E1598 002DE4D8 FC 02 08 40 */ fcmpo cr0, f2, f1 +/* 802E159C 002DE4DC 4C 41 13 82 */ cror 2, 1, 2 +/* 802E15A0 002DE4E0 40 82 00 0C */ bne lbl_802E15AC +/* 802E15A4 002DE4E4 54 00 07 B8 */ rlwinm r0, r0, 0, 0x1e, 0x1c +/* 802E15A8 002DE4E8 60 00 00 08 */ ori r0, r0, 8 +lbl_802E15AC: +/* 802E15AC 002DE4EC 7C 03 03 78 */ mr r3, r0 +/* 802E15B0 002DE4F0 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/JSystem/JUtility/JUTGamePad/asm/func_802E15B4.s b/include/JSystem/JUtility/JUTGamePad/asm/func_802E15B4.s new file mode 100644 index 00000000000..bd3b36d7016 --- /dev/null +++ b/include/JSystem/JUtility/JUTGamePad/asm/func_802E15B4.s @@ -0,0 +1,9 @@ +/* 802E15B4 002DE4F4 38 00 00 00 */ li r0, 0 +/* 802E15B8 002DE4F8 90 03 00 00 */ stw r0, 0(r3) +/* 802E15BC 002DE4FC 90 03 00 04 */ stw r0, 4(r3) +/* 802E15C0 002DE500 90 03 00 08 */ stw r0, 8(r3) +/* 802E15C4 002DE504 90 03 00 0C */ stw r0, 0xc(r3) +/* 802E15C8 002DE508 90 03 00 10 */ stw r0, 0x10(r3) +/* 802E15CC 002DE50C 3C 00 F0 00 */ lis r0, 0xf000 +/* 802E15D0 002DE510 90 0D 8F 68 */ stw r0, lbl_804514E8-_SDA_BASE_(r13) +/* 802E15D4 002DE514 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/JSystem/JUtility/JUTGamePad/asm/func_802E15D8.s b/include/JSystem/JUtility/JUTGamePad/asm/func_802E15D8.s new file mode 100644 index 00000000000..2ac8217cdba --- /dev/null +++ b/include/JSystem/JUtility/JUTGamePad/asm/func_802E15D8.s @@ -0,0 +1,24 @@ +/* 802E15D8 002DE518 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 802E15DC 002DE51C 7C 08 02 A6 */ mflr r0 +/* 802E15E0 002DE520 90 01 00 14 */ stw r0, 0x14(r1) +/* 802E15E4 002DE524 93 E1 00 0C */ stw r31, 0xc(r1) +/* 802E15E8 002DE528 7C 7F 1B 78 */ mr r31, r3 +/* 802E15EC 002DE52C A8 04 00 7C */ lha r0, 0x7c(r4) +/* 802E15F0 002DE530 7C 05 07 35 */ extsh. r5, r0 +/* 802E15F4 002DE534 41 80 00 24 */ blt lbl_802E1618 +/* 802E15F8 002DE538 2C 05 00 04 */ cmpwi r5, 4 +/* 802E15FC 002DE53C 40 80 00 1C */ bge lbl_802E1618 +/* 802E1600 002DE540 38 00 00 00 */ li r0, 0 +/* 802E1604 002DE544 38 6D 8F 64 */ addi r3, r13, 0x804514E4-0x80458580/*lbl_804514E4-_SDA_BASE_*/ +/* 802E1608 002DE548 7C 03 29 AE */ stbx r0, r3, r5 +/* 802E160C 002DE54C A8 64 00 7C */ lha r3, 0x7c(r4) +/* 802E1610 002DE550 38 80 00 01 */ li r4, 1 +/* 802E1614 002DE554 48 00 00 79 */ bl stopMotor__Q210JUTGamePad7CRumbleFib +lbl_802E1618: +/* 802E1618 002DE558 7F E3 FB 78 */ mr r3, r31 +/* 802E161C 002DE55C 4B FF FF 99 */ bl clear__Q210JUTGamePad7CRumbleFv +/* 802E1620 002DE560 83 E1 00 0C */ lwz r31, 0xc(r1) +/* 802E1624 002DE564 80 01 00 14 */ lwz r0, 0x14(r1) +/* 802E1628 002DE568 7C 08 03 A6 */ mtlr r0 +/* 802E162C 002DE56C 38 21 00 10 */ addi r1, r1, 0x10 +/* 802E1630 002DE570 4E 80 00 20 */ blr diff --git a/include/JSystem/JUtility/JUTGamePad/asm/func_802E1720.s b/include/JSystem/JUtility/JUTGamePad/asm/func_802E1720.s new file mode 100644 index 00000000000..fa0051950eb --- /dev/null +++ b/include/JSystem/JUtility/JUTGamePad/asm/func_802E1720.s @@ -0,0 +1,105 @@ +/* 802E1720 002DE660 94 21 FF E0 */ stwu r1, -0x20(r1) +/* 802E1724 002DE664 7C 08 02 A6 */ mflr r0 +/* 802E1728 002DE668 90 01 00 24 */ stw r0, 0x24(r1) +/* 802E172C 002DE66C 39 61 00 20 */ addi r11, r1, 0x20 +/* 802E1730 002DE670 48 08 0A AD */ bl _savegpr_29 +/* 802E1734 002DE674 7C 7E 1B 78 */ mr r30, r3 +/* 802E1738 002DE678 7C 9D 23 78 */ mr r29, r4 +/* 802E173C 002DE67C 80 8D 8F 68 */ lwz r4, lbl_804514E8-_SDA_BASE_(r13) +/* 802E1740 002DE680 7F BF 07 34 */ extsh r31, r29 +/* 802E1744 002DE684 57 E0 10 3A */ slwi r0, r31, 2 +/* 802E1748 002DE688 3C 60 80 3D */ lis r3, lbl_803CC5F0@ha +/* 802E174C 002DE68C 38 63 C5 F0 */ addi r3, r3, lbl_803CC5F0@l +/* 802E1750 002DE690 7C 03 00 2E */ lwzx r0, r3, r0 +/* 802E1754 002DE694 7C 83 00 38 */ and r3, r4, r0 +/* 802E1758 002DE698 30 03 FF FF */ addic r0, r3, -1 +/* 802E175C 002DE69C 7C 00 19 10 */ subfe r0, r0, r3 +/* 802E1760 002DE6A0 54 00 06 3F */ clrlwi. r0, r0, 0x18 +/* 802E1764 002DE6A4 40 82 00 1C */ bne lbl_802E1780 +/* 802E1768 002DE6A8 38 00 00 00 */ li r0, 0 +/* 802E176C 002DE6AC 90 1E 00 00 */ stw r0, 0(r30) +/* 802E1770 002DE6B0 90 1E 00 04 */ stw r0, 4(r30) +/* 802E1774 002DE6B4 90 1E 00 08 */ stw r0, 8(r30) +/* 802E1778 002DE6B8 90 1E 00 0C */ stw r0, 0xc(r30) +/* 802E177C 002DE6BC 90 1E 00 10 */ stw r0, 0x10(r30) +lbl_802E1780: +/* 802E1780 002DE6C0 80 1E 00 04 */ lwz r0, 4(r30) +/* 802E1784 002DE6C4 28 00 00 00 */ cmplwi r0, 0 +/* 802E1788 002DE6C8 41 82 01 04 */ beq lbl_802E188C +/* 802E178C 002DE6CC 80 BE 00 00 */ lwz r5, 0(r30) +/* 802E1790 002DE6D0 7C 05 00 40 */ cmplw r5, r0 +/* 802E1794 002DE6D4 41 80 00 1C */ blt lbl_802E17B0 +/* 802E1798 002DE6D8 7F E3 FB 78 */ mr r3, r31 +/* 802E179C 002DE6DC 38 80 00 01 */ li r4, 1 +/* 802E17A0 002DE6E0 4B FF FE ED */ bl stopMotor__Q210JUTGamePad7CRumbleFib +/* 802E17A4 002DE6E4 38 00 00 00 */ li r0, 0 +/* 802E17A8 002DE6E8 90 1E 00 04 */ stw r0, 4(r30) +/* 802E17AC 002DE6EC 48 00 00 D4 */ b lbl_802E1880 +lbl_802E17B0: +/* 802E17B0 002DE6F0 80 9E 00 0C */ lwz r4, 0xc(r30) +/* 802E17B4 002DE6F4 28 04 00 00 */ cmplwi r4, 0 +/* 802E17B8 002DE6F8 40 82 00 24 */ bne lbl_802E17DC +/* 802E17BC 002DE6FC 7F A0 07 34 */ extsh r0, r29 +/* 802E17C0 002DE700 38 6D 8F 64 */ addi r3, r13, 0x804514E4-0x80458580/*lbl_804514E4-_SDA_BASE_*/ +/* 802E17C4 002DE704 7C 03 00 AE */ lbzx r0, r3, r0 +/* 802E17C8 002DE708 28 00 00 00 */ cmplwi r0, 0 +/* 802E17CC 002DE70C 40 82 00 C0 */ bne lbl_802E188C +/* 802E17D0 002DE710 7F E3 FB 78 */ mr r3, r31 +/* 802E17D4 002DE714 4B FF FE 61 */ bl startMotor__Q210JUTGamePad7CRumbleFi +/* 802E17D8 002DE718 48 00 00 B4 */ b lbl_802E188C +lbl_802E17DC: +/* 802E17DC 002DE71C 80 7E 00 08 */ lwz r3, 8(r30) +/* 802E17E0 002DE720 7C 05 23 96 */ divwu r0, r5, r4 +/* 802E17E4 002DE724 7C 00 21 D6 */ mullw r0, r0, r4 +/* 802E17E8 002DE728 7C 80 28 50 */ subf r4, r0, r5 +/* 802E17EC 002DE72C 4B FF FF 0D */ bl getNumBit +/* 802E17F0 002DE730 7F A0 07 34 */ extsh r0, r29 +/* 802E17F4 002DE734 38 8D 8F 64 */ addi r4, r13, 0x804514E4-0x80458580/*lbl_804514E4-_SDA_BASE_*/ +/* 802E17F8 002DE738 7C 84 00 AE */ lbzx r4, r4, r0 +/* 802E17FC 002DE73C 30 04 FF FF */ addic r0, r4, -1 +/* 802E1800 002DE740 7C 00 21 10 */ subfe r0, r0, r4 +/* 802E1804 002DE744 54 1D 06 3E */ clrlwi r29, r0, 0x18 +/* 802E1808 002DE748 54 60 06 3F */ clrlwi. r0, r3, 0x18 +/* 802E180C 002DE74C 41 82 00 18 */ beq lbl_802E1824 +/* 802E1810 002DE750 28 1D 00 00 */ cmplwi r29, 0 +/* 802E1814 002DE754 40 82 00 10 */ bne lbl_802E1824 +/* 802E1818 002DE758 7F E3 FB 78 */ mr r3, r31 +/* 802E181C 002DE75C 4B FF FE 19 */ bl startMotor__Q210JUTGamePad7CRumbleFi +/* 802E1820 002DE760 48 00 00 60 */ b lbl_802E1880 +lbl_802E1824: +/* 802E1824 002DE764 54 60 06 3F */ clrlwi. r0, r3, 0x18 +/* 802E1828 002DE768 40 82 00 58 */ bne lbl_802E1880 +/* 802E182C 002DE76C 38 80 00 00 */ li r4, 0 +/* 802E1830 002DE770 80 7E 00 10 */ lwz r3, 0x10(r30) +/* 802E1834 002DE774 28 03 00 00 */ cmplwi r3, 0 +/* 802E1838 002DE778 41 82 00 20 */ beq lbl_802E1858 +/* 802E183C 002DE77C 80 BE 00 00 */ lwz r5, 0(r30) +/* 802E1840 002DE780 80 9E 00 0C */ lwz r4, 0xc(r30) +/* 802E1844 002DE784 7C 05 23 96 */ divwu r0, r5, r4 +/* 802E1848 002DE788 7C 00 21 D6 */ mullw r0, r0, r4 +/* 802E184C 002DE78C 7C 80 28 50 */ subf r4, r0, r5 +/* 802E1850 002DE790 4B FF FE A9 */ bl getNumBit +/* 802E1854 002DE794 7C 64 1B 78 */ mr r4, r3 +lbl_802E1858: +/* 802E1858 002DE798 28 1D 00 00 */ cmplwi r29, 0 +/* 802E185C 002DE79C 41 82 00 10 */ beq lbl_802E186C +/* 802E1860 002DE7A0 7F E3 FB 78 */ mr r3, r31 +/* 802E1864 002DE7A4 4B FF FE 29 */ bl stopMotor__Q210JUTGamePad7CRumbleFib +/* 802E1868 002DE7A8 48 00 00 18 */ b lbl_802E1880 +lbl_802E186C: +/* 802E186C 002DE7AC 54 80 06 3F */ clrlwi. r0, r4, 0x18 +/* 802E1870 002DE7B0 41 82 00 10 */ beq lbl_802E1880 +/* 802E1874 002DE7B4 7F E3 FB 78 */ mr r3, r31 +/* 802E1878 002DE7B8 38 80 00 01 */ li r4, 1 +/* 802E187C 002DE7BC 4B FF FE 11 */ bl stopMotor__Q210JUTGamePad7CRumbleFib +lbl_802E1880: +/* 802E1880 002DE7C0 80 7E 00 00 */ lwz r3, 0(r30) +/* 802E1884 002DE7C4 38 03 00 01 */ addi r0, r3, 1 +/* 802E1888 002DE7C8 90 1E 00 00 */ stw r0, 0(r30) +lbl_802E188C: +/* 802E188C 002DE7CC 39 61 00 20 */ addi r11, r1, 0x20 +/* 802E1890 002DE7D0 48 08 09 99 */ bl _restgpr_29 +/* 802E1894 002DE7D4 80 01 00 24 */ lwz r0, 0x24(r1) +/* 802E1898 002DE7D8 7C 08 03 A6 */ mtlr r0 +/* 802E189C 002DE7DC 38 21 00 20 */ addi r1, r1, 0x20 +/* 802E18A0 002DE7E0 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/JSystem/JUtility/JUTGamePad/asm/func_802E199C.s b/include/JSystem/JUtility/JUTGamePad/asm/func_802E199C.s new file mode 100644 index 00000000000..fe190ec6cf9 --- /dev/null +++ b/include/JSystem/JUtility/JUTGamePad/asm/func_802E199C.s @@ -0,0 +1,18 @@ +/* 802E199C 002DE8DC 3C 80 80 43 */ lis r4, lbl_804343E4@ha +/* 802E19A0 002DE8E0 38 84 43 E4 */ addi r4, r4, lbl_804343E4@l +/* 802E19A4 002DE8E4 80 84 00 00 */ lwz r4, 0(r4) +/* 802E19A8 002DE8E8 48 00 00 20 */ b lbl_802E19C8 +lbl_802E19AC: +/* 802E19AC 002DE8EC 80 A4 00 00 */ lwz r5, 0(r4) +/* 802E19B0 002DE8F0 A8 05 00 7C */ lha r0, 0x7c(r5) +/* 802E19B4 002DE8F4 7C 03 00 00 */ cmpw r3, r0 +/* 802E19B8 002DE8F8 40 82 00 0C */ bne lbl_802E19C4 +/* 802E19BC 002DE8FC 7C A3 2B 78 */ mr r3, r5 +/* 802E19C0 002DE900 4E 80 00 20 */ blr +lbl_802E19C4: +/* 802E19C4 002DE904 80 84 00 0C */ lwz r4, 0xc(r4) +lbl_802E19C8: +/* 802E19C8 002DE908 28 04 00 00 */ cmplwi r4, 0 +/* 802E19CC 002DE90C 40 82 FF E0 */ bne lbl_802E19AC +/* 802E19D0 002DE910 38 60 00 00 */ li r3, 0 +/* 802E19D4 002DE914 4E 80 00 20 */ blr diff --git a/include/functions.h b/include/functions.h index 69ff78e2d8f..28adc9ba63e 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1,6 +1,24 @@ #include "os/OS.h" extern "C" { +u32 OSGetResetSwitchState(void); +void getButton__Q210JUTGamePad6CStickFUl(void); +void checkResetSwitch__10JUTGamePadFv(void); +void func_8036C720(void); +void startMotor__Q210JUTGamePad7CRumbleFi(void); +void clear__10JUTGamePadFv(void); +void update__10JUTGamePadFv(void); +void initList__10JUTGamePadFv(void); +void clear__Q210JUTGamePad7CRumbleFP10JUTGamePad(void); +void stopMotor__Q210JUTGamePad7CRumbleFib(void); +void clear__Q210JUTGamePad6CStickFv(void); +void clear__Q210JUTGamePad7CButtonFv(void); +void assign__10JUTGamePadFv(void); +void update__Q210JUTGamePad7CButtonFPC9PADStatusUl(void); +void update__Q210JUTGamePad6CStickFScScUlUlUl(void); +void update__Q210JUTGamePad7CRumbleFs(void); +void checkCallback__19JUTGamePadLongPressFlUl(void); +void checkResetCallback__10JUTGamePadFx(void); void searchMapEventData__14dEvt_control_cFUc(void); void PSMTXMultVec(void); void mDoMtx_YrotS(void); @@ -3747,4 +3765,4 @@ void cXyz_NS_ctor(void); void J3DGXColorS10(void); u32 dEv_noFinishSkipProc(void); -} \ No newline at end of file +} diff --git a/include/pad/pad.h b/include/pad/pad.h new file mode 100644 index 00000000000..1ef4fe6aa8e --- /dev/null +++ b/include/pad/pad.h @@ -0,0 +1,38 @@ +#ifndef __PAD_H__ +#define __PAD_H__ + +typedef enum PADMask { + PAD_CHAN3_BIT = (1 << 28), + PAD_CHAN2_BIT = (1 << 29), + PAD_CHAN1_BIT = (1 << 30), + PAD_CHAN0_BIT = (1 << 31), + + __PAD_MASK_FORCE_ENUM_U32 = 0xffffffff, +} PADMask; + +typedef struct PADStatus { + u16 button; + s8 stick_x; + s8 stick_y; + s8 substick_x; + s8 substick_y; + u8 trigger_left; + u8 trigger_right; + u8 analog_a; + u8 analog_b; + s8 error; +} PADStatus; + +extern "C" { +u32 PADInit(void); +void PADSetAnalogMode(u32 mode); +void PADSetSpec(int spec); +s32 PADReset(PADMask mask); +void PADClampCircle(PADStatus* status); +void PADClamp(PADStatus* status); +u32 PADRead(PADStatus* status); +void PADControlMotor(s32 channel, u32 command); +s32 PADRecalibrate(PADMask mask); +} + +#endif \ No newline at end of file diff --git a/include/variables.h b/include/variables.h index d1cffd49ab5..ec9b960eba4 100644 --- a/include/variables.h +++ b/include/variables.h @@ -375,6 +375,30 @@ extern u8 lbl_804342E8; // JKernel::decompMutex (static?) extern u8 lbl_804508B8; // JKRAram::sSZSBufferSize extern u8 lbl_803CC128; // JKRAram::sMessageBuffer +//// JUTGamePad: +// func_802E06DC +extern u8 lbl_803CC610; +// func_802E08E4 +extern u8 lbl_804343D8; +extern u8 lbl_804508DC; +extern u8 lbl_804508D8; +// func_802E0CD8 +extern u8 lbl_804508E8; +extern u8 lbl_804508EC; +extern u8 lbl_8043456C; +// func_802E108C +extern u8 lbl_80456020; +extern u8 lbl_80456018; +// func_802E1238 +extern u8 lbl_80456030; +extern u8 lbl_80456038; +extern u8 lbl_80456040; +extern u8 lbl_80456048; +extern u8 lbl_8045604C; +// func_802E1500 +extern u8 lbl_804508E4; +extern u8 lbl_804508E0; + extern double lbl_803DD2F0; extern f32 lbl_80451180; @@ -402,8 +426,8 @@ extern char lbl_80374198[16]; // func_8001574C extern bool lbl_80451501; -extern void* lbl_804514EC; // JUTGamePad::C3ButtonReset::sCallback -extern u32 lbl_804514F0; // JUTGamePad::C3ButtonReset::sCallbackArg +extern void (*lbl_804514EC)(int, void*); // JUTGamePad::C3ButtonReset::sCallback +extern void* lbl_804514F0; // JUTGamePad::C3ButtonReset::sCallbackArg extern u32 lbl_803ECF00; // additional symbols needed for d_alink.cpp diff --git a/libs/JSystem/JUtility/JUTGamePad.cpp b/libs/JSystem/JUtility/JUTGamePad.cpp index 4bf93c8658d..34dd7d191c9 100644 --- a/libs/JSystem/JUtility/JUTGamePad.cpp +++ b/libs/JSystem/JUtility/JUTGamePad.cpp @@ -1 +1,360 @@ -// ok +#include "JSystem/JUtility/JUTGamePad/JUTGamePad.h" +#include "global.h" + +#ifdef NONMATCHING +// TODO(erin): probably ~easy to do, i just didn't do it yet :) +JUTGamePad::JUTGamePad(EPadPort port) : ptr_link(this) { + this->buttons.clear(); + this->control_stick.clear(); + this->c_stick.clear(); + this->rumble.clear(); +} +#else +asm JUTGamePad::JUTGamePad(EPadPort port) { + nofralloc +#include "JSystem/JUtility/JUTGamePad/asm/func_802E06DC.s" +} +#endif + +asm JUTGamePad::~JUTGamePad() { + nofralloc +#include "JSystem/JUtility/JUTGamePad/asm/func_802E07B0.s" +} + +void JUTGamePad::initList() { + if (/* mIsPadListInitialized */ lbl_804514D0 == false) { + /*mPadList*/ lbl_804343E4.initiate(); + lbl_804514D0 = true; + } +} + +s32 JUTGamePad::init() { + PADSetSpec(5); + /*sAnalogMode*/ lbl_804514DC = 3; + PADSetAnalogMode(3); + + return PADInit(); +} + +void JUTGamePad::clear() { + this->field_0x98 = 0; + this->field_0xa8 = 1; +} + +asm void JUTGamePad::read() { + nofralloc +#include "JSystem/JUtility/JUTGamePad/asm/func_802E08E4.s" +} + +void JUTGamePad::assign() { + s32 iVar3 = 0; + + for (s32 i = 4; i > 0; i--) { + if ((/* mPadStatus */ lbl_804343F0[iVar3].error == 0) && + (/* *puVar2 */ lbl_804514D4[iVar3] == 0)) { + this->pad_port = iVar3; + /* JUTGamePad::mPadAssign[iVar3] */ /* *puVar2 */ lbl_804514D4[iVar3] = 1; + /* JUTGamePad::mPadButton */ lbl_80434420[iVar3].setRepeat( + this->buttons.field_0x24, this->buttons.field_0x28, this->buttons.field_0x2c); + this->rumble.clear(this); + + return; + } + + iVar3++; + } +} + +void JUTGamePad::checkResetCallback(OSTime unk) { + if (unk < /* sThreshold */ lbl_804514F8) + return; + + lbl_80451501 = true; + lbl_80451504 = this->pad_port; + if (/* sCallback* */ lbl_804514EC != NULL) { + lbl_804514EC(this->pad_port, /* sCallbackArg */ lbl_804514F0); + } +} + +asm void JUTGamePad::update() { + nofralloc +#include "JSystem/JUtility/JUTGamePad/asm/func_802E0CD8.s" +} + +void JUTGamePad::checkResetSwitch() { + if (lbl_80451501 == false) { + if ((s32)OSGetResetSwitchState() != 0) { + lbl_80451500 = true; + return; + } + + if (lbl_80451500 == true) { + lbl_80451501 = true; + /* sResetOccurredPort */ lbl_80451504 = -1; + if (/* sCallback* */ lbl_804514EC != NULL) { + lbl_804514EC(-1, /* sCallbackArg */ lbl_804514F0); + } + } + + lbl_80451500 = false; + } +} + +void JUTGamePad::clearForReset() { + CRumble::setEnabled((PADMask)0); + JUTGamePad::recalibrate( + (PADMask)(PAD_CHAN0_BIT | PAD_CHAN1_BIT | PAD_CHAN2_BIT | PAD_CHAN3_BIT)); +} + +void JUTGamePad::CButton::clear() { + this->button_flags = 0; + this->field_0x4 = 0; + this->field_0x8 = 0; + this->field_0x18 = 0; + this->analog_a = 0; + this->analog_b = 0; + this->trigger_left = 0; + this->trigger_right = 0; + this->field_0x1c = 0; + this->field_0x20 = 0; + this->field_0x24 = 0; + this->field_0x28 = 0; + this->field_0x2c = 0; +} + +asm u32 JUTGamePad::CButton::update(PADStatus const*, u32 unk) { + nofralloc +#include "JSystem/JUtility/JUTGamePad/asm/func_802E108C.s" +} + +void JUTGamePad::CStick::clear() { + float zero = lbl_80456028; // 0.0f + this->stick_x = zero; + this->stick_y = zero; + this->length_from_neutral = zero; + this->angle = 0; +} + +asm u32 JUTGamePad::CStick::update(s8 unk0, s8 unk1, EStickMode mode, EWhichStick stick, u32 unk2) { + nofralloc +#include "JSystem/JUtility/JUTGamePad/asm/func_802E1238.s" +} + +asm u32 JUTGamePad::CStick::getButton(u32 unk) { + nofralloc +#include "JSystem/JUtility/JUTGamePad/asm/func_802E1500.s" +} + +void JUTGamePad::CRumble::clear() { + this->field_0x0 = 0; + this->field_0x4 = 0; + this->field_0x8 = 0; + this->field_0xc = 0; + this->field_0x10 = 0; + lbl_804514E8 = (PADMask)0xf0000000; // mEnabled +} + +void JUTGamePad::CRumble::clear(JUTGamePad* pad) { + // TODO: potentially fake match + s16 tmp0 = (s16)pad->pad_port; + if ((tmp0 >= 0) && (tmp0 < 4)) { + lbl_804514E4[tmp0] = false; // mStatus + this->stopMotor(pad->pad_port, true); + } + + this->clear(); +} + +void JUTGamePad::CRumble::startMotor(int channel) { + if ((/*mEnabled*/ lbl_804514E8 & /*sChannelMask*/ lbl_803CC5F0[channel]) != 0) { + PADControlMotor(channel, 1); + lbl_804514E4[channel] = true; // mStatus + } +} + +void JUTGamePad::CRumble::stopMotor(int channel, bool stop) { + if ((/*mEnabled*/ lbl_804514E8 & /*sChannelMask*/ lbl_803CC5F0[channel]) != 0) { + PADControlMotor(channel, (u8)(stop ? 2 : 0)); + lbl_804514E4[channel] = false; // mStatus + } +} + +extern "C" { +bool getNumBit(u8* buf, u32 n_bits) { + return (u8)((0x80 >> (n_bits & 0b111)) & (u32) * (buf + ((s32)n_bits >> 3))) != 0; +} +} + +#ifdef NONMATCHING +void JUTGamePad::CRumble::update(s16 chn) { + // i can't get this to generate an `addic;subfe;clrlwi.`; it's just generating + // an `and.` :/ + if ((/*mEnabled*/ lbl_804514E8 & /*sChannelMask*/ lbl_803CC5F0[chn]) == 0) { + this->field_0x0 = 0; + this->field_0x4 = 0; + this->field_0x8 = 0; + this->field_0xc = 0; + this->field_0x10 = 0; + } + + if (this->field_0x4 == 0) + return; + + if (this->field_0x0 >= this->field_0x4) { + stopMotor(chn, true); + this->field_0x4 = 0; + } else { + if (this->field_0xc == 0) { + if (!/* mStatus */ lbl_804514E4[chn]) { + startMotor(chn); + } + return; + } + + u32 uVar3 = getNumBit(this->field_0x8, this->field_0x0 % this->field_0xc); + bool bVar1 = /* mStatus */ lbl_804514E4[chn]; + if (((uVar3 & 0xff) != 0) && !bVar1) { + startMotor(chn); + } + // } else { + // if (uVar3 & 0xff == 0) { + // uVar3 = 0; + // if (this->field_0x10 != 0) { + // uVar3 = getNumBit(this->field_0x10, this->field_0x0 - + // (this->field_0x0/this->field_0xc) * this->field_0xc); + // } + // if (bVar1 == false) { + // if ((uVar3 & 0xff) != 0) { + // stopMotor(chn, true); + // } + // } else { + // stopMotor(chn, uVar3); + // } + // } + // } + } + this->field_0x0 = this->field_0x0 + 1; +} +#else +asm void JUTGamePad::CRumble::update(s16 unk0) { + nofralloc +#include "JSystem/JUtility/JUTGamePad/asm/func_802E1720.s" +} +#endif + +void JUTGamePad::CRumble::triggerPatternedRumble(u32 unk0) { + if (this->field_0x8 == 0) + return; + + if (this->field_0xc == 0) + return; + + this->field_0x4 = unk0; + this->field_0x0 = 0; +} + +void JUTGamePad::CRumble::startPatternedRumble(void* unk0, JUTGamePad::CRumble::ERumble rumble, + u32 unk1) { + this->field_0xc = (u32)(*((u8*)unk0) << 8) + (u32) * ((u8*)unk0 + 1); + this->field_0x8 = (u8*)unk0 + 2; + + switch (rumble) { + case 0: + this->triggerPatternedRumble(this->field_0xc); + break; + case 1: + this->triggerPatternedRumble(-1); + break; + case 2: + this->triggerPatternedRumble(unk1); + break; + } +} + +void JUTGamePad::CRumble::stopPatternedRumble(s16 pad_port) { + this->field_0x4 = 0; + this->stopMotor(pad_port, true); +} + +void JUTGamePad::CRumble::stopPatternedRumbleAtThePeriod() { + this->field_0x4 = (field_0x0 + field_0xc - 1) % (field_0xc); +} + +#ifdef NONMATCHING +/* TODO(erin): the issue here is that doing iterator++ removes a temp var fsr. + * if you comment out iterator++, you can get it to almost match, excepting the + * instruction that does link = link->mNext which will be missing. this is a + * matching issue in general; see JKRHeap::dispose or JKRThread::searchThread, + * both of which are currently nonmatching due to the same issue. + */ +JUTGamePad* JUTGamePad::getGamePad(s32 pad_index) { + JSUList* threadList = &lbl_804343E4; + JSUListIterator iterator; + for (iterator = threadList; iterator != threadList->getEnd(); iterator++) { + JUTGamePad* pad = iterator.getObject(); + if (pad_index == pad->pad_port) { + return pad; + } + } + + return NULL; +} +#else +asm JUTGamePad* JUTGamePad::getGamePad(s32 pad_index) { + nofralloc +#include "JSystem/JUtility/JUTGamePad/asm/func_802E199C.s" +} +#endif + +void JUTGamePad::CRumble::setEnabled(PADMask pad_mask) { + JUTGamePad* pGamePad; + + for (s32 channel = 0; channel < 4; channel++) { + if ((/* mEnabled */ lbl_804514E8 & /* channel_mask */ (u32)lbl_803CC600[channel]) == 0) { + if (/* mStatus */ lbl_804514E4[channel] != false) { + stopMotor(channel, false); + } + + pGamePad = getGamePad(channel); + if (pGamePad != NULL) { + pGamePad->rumble.stopPatternedRumble(pGamePad->pad_port); + } + } + } + + lbl_804514E8 = + (PADMask)(pad_mask & (PAD_CHAN3_BIT | PAD_CHAN2_BIT | PAD_CHAN1_BIT | PAD_CHAN0_BIT)); +} + +void JUTGamePad::CButton::setRepeat(u32 unk0, u32 unk1, u32 unk2) { + this->field_0x20 = 0; + this->field_0x1c = 0; + this->field_0x24 = unk0; + this->field_0x28 = unk1; + this->field_0x2c = unk2; +} + +bool JUTGamePad::recalibrate(PADMask pad_mask) { + int iVar2 = 0; + for (int iVar3 = 4; iVar3 != 0; iVar3--) { + if ((/* sSuppressPadReset */ lbl_804514D8 & /* channel_mask */ (u32)lbl_803CC600[iVar2]) != + 0) { + pad_mask = (PADMask)((u32)pad_mask & (lbl_803CC600[iVar2] ^ 0xffffffff)); + } + iVar2++; + } + + s32 sVar1 = PADRecalibrate(pad_mask); + + return sVar1; +} + +void JUTGamePadLongPress::checkCallback(s32 unk0, u32 unk1) { + if ((0 <= unk0) && (unk1 >= this->field_0x1c)) { + this->field_0x11 = true; + this->field_0x48[unk0] = true; + if (this->callback != NULL) { + this->callback(unk0, this, this->field_0x50); + } + } +} \ No newline at end of file diff --git a/obj_files.mk b/obj_files.mk index 7600fb61531..6f392953e32 100644 --- a/obj_files.mk +++ b/obj_files.mk @@ -479,6 +479,7 @@ TEXT_O_FILES := \ $(BUILD_DIR)/libs/JSystem/JUtility/JUTFont.o \ $(BUILD_DIR)/libs/JSystem/JUtility/JUTResFont.o \ $(BUILD_DIR)/asm/JUtility/JUTDbPrint.o \ + $(BUILD_DIR)/libs/JSystem/JUtility/JUTGamePad.o \ $(BUILD_DIR)/asm/JUtility/JUTGamePad.o \ $(BUILD_DIR)/asm/JUtility/JUTException.o \ $(BUILD_DIR)/asm/JUtility/JUTDirectPrint.o \