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<T>: 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 <pheenoh@gmail.com>
This commit is contained in:
Erin Moon 2020-12-29 19:22:18 -06:00 committed by GitHub
parent 2dddd746a6
commit 992cf48c7f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
26 changed files with 1644 additions and 1555 deletions

View File

@ -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

View File

@ -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)

File diff suppressed because it is too large Load Diff

View File

@ -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)

View File

@ -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

View File

@ -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:

View File

@ -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

View File

@ -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

View File

@ -72,7 +72,7 @@ private:
};
template <typename T>
class JSUList : protected JSUPtrList {
class JSUList : public JSUPtrList {
public:
JSUList() : JSUPtrList() {}

View File

@ -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<JUTGamePad> 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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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);
}
}

38
include/pad/pad.h Normal file
View File

@ -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

View File

@ -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

View File

@ -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<JUTGamePad>* threadList = &lbl_804343E4;
JSUListIterator<JUTGamePad> 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);
}
}
}

View File

@ -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 \