Files
tp/include/JSystem/JUtility/JUTGamePad/asm/func_802E108C.s
T
Erin Moon 992cf48c7f 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>
2020-12-29 20:22:18 -05:00

108 lines
5.3 KiB
ArmAsm

/* 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