WPadButton.o 100%

This commit is contained in:
Joshua Andrew 2023-08-13 13:48:51 -04:00
parent 98b675c4b7
commit a34a011f4e
15 changed files with 404 additions and 71 deletions

View File

@ -910,38 +910,38 @@ update__16WPadAccelerationFv,WPadAcceleration.o,System.a,false
updateRotate__16WPadAccelerationFv,WPadAcceleration.o,System.a,false
updateAccAverage__16WPadAccelerationFv,WPadAcceleration.o,System.a,false
updateIsStable__16WPadAccelerationFv,WPadAcceleration.o,System.a,false
__ct__10WPadButtonFPC4WPad,WPadButton.o,System.a,false
update__10WPadButtonFv,WPadButton.o,System.a,false
testButtonUp__10WPadButtonCFv,WPadButton.o,System.a,false
testButtonDown__10WPadButtonCFv,WPadButton.o,System.a,false
testButtonLeft__10WPadButtonCFv,WPadButton.o,System.a,false
testButtonRight__10WPadButtonCFv,WPadButton.o,System.a,false
testButtonA__10WPadButtonCFv,WPadButton.o,System.a,false
testButtonB__10WPadButtonCFv,WPadButton.o,System.a,false
testButtonMinus__10WPadButtonCFv,WPadButton.o,System.a,false
testButtonPlus__10WPadButtonCFv,WPadButton.o,System.a,false
testButton1__10WPadButtonCFv,WPadButton.o,System.a,false
testButton2__10WPadButtonCFv,WPadButton.o,System.a,false
testButtonC__10WPadButtonCFv,WPadButton.o,System.a,false
testButtonZ__10WPadButtonCFv,WPadButton.o,System.a,false
testTriggerUp__10WPadButtonCFv,WPadButton.o,System.a,false
testTriggerDown__10WPadButtonCFv,WPadButton.o,System.a,false
testTriggerLeft__10WPadButtonCFv,WPadButton.o,System.a,false
testTriggerRight__10WPadButtonCFv,WPadButton.o,System.a,false
testTriggerA__10WPadButtonCFv,WPadButton.o,System.a,false
testTriggerB__10WPadButtonCFv,WPadButton.o,System.a,false
testTriggerMinus__10WPadButtonCFv,WPadButton.o,System.a,false
testTriggerHome__10WPadButtonCFv,WPadButton.o,System.a,false
testTriggerPlus__10WPadButtonCFv,WPadButton.o,System.a,false
testTrigger1__10WPadButtonCFv,WPadButton.o,System.a,false
testTrigger2__10WPadButtonCFv,WPadButton.o,System.a,false
testTriggerC__10WPadButtonCFv,WPadButton.o,System.a,false
testTriggerZ__10WPadButtonCFv,WPadButton.o,System.a,false
testReleaseZ__10WPadButtonCFv,WPadButton.o,System.a,false
isChangeAnyState__10WPadButtonCFv,WPadButton.o,System.a,false
__ct__16WPadReadDataInfoFv,WPadHolder.o,System.a,false
getKPadStatus__16WPadReadDataInfoCFUl,WPadHolder.o,System.a,false
getValidStatusCount__16WPadReadDataInfoCFv,WPadHolder.o,System.a,false
__ct__10WPadButtonFPC4WPad,WPadButton.o,System.a,true
update__10WPadButtonFv,WPadButton.o,System.a,true
testButtonUp__10WPadButtonCFv,WPadButton.o,System.a,true
testButtonDown__10WPadButtonCFv,WPadButton.o,System.a,true
testButtonLeft__10WPadButtonCFv,WPadButton.o,System.a,true
testButtonRight__10WPadButtonCFv,WPadButton.o,System.a,true
testButtonA__10WPadButtonCFv,WPadButton.o,System.a,true
testButtonB__10WPadButtonCFv,WPadButton.o,System.a,true
testButtonMinus__10WPadButtonCFv,WPadButton.o,System.a,true
testButtonPlus__10WPadButtonCFv,WPadButton.o,System.a,true
testButton1__10WPadButtonCFv,WPadButton.o,System.a,true
testButton2__10WPadButtonCFv,WPadButton.o,System.a,true
testButtonC__10WPadButtonCFv,WPadButton.o,System.a,true
testButtonZ__10WPadButtonCFv,WPadButton.o,System.a,true
testTriggerUp__10WPadButtonCFv,WPadButton.o,System.a,true
testTriggerDown__10WPadButtonCFv,WPadButton.o,System.a,true
testTriggerLeft__10WPadButtonCFv,WPadButton.o,System.a,true
testTriggerRight__10WPadButtonCFv,WPadButton.o,System.a,true
testTriggerA__10WPadButtonCFv,WPadButton.o,System.a,true
testTriggerB__10WPadButtonCFv,WPadButton.o,System.a,true
testTriggerMinus__10WPadButtonCFv,WPadButton.o,System.a,true
testTriggerHome__10WPadButtonCFv,WPadButton.o,System.a,true
testTriggerPlus__10WPadButtonCFv,WPadButton.o,System.a,true
testTrigger1__10WPadButtonCFv,WPadButton.o,System.a,true
testTrigger2__10WPadButtonCFv,WPadButton.o,System.a,true
testTriggerC__10WPadButtonCFv,WPadButton.o,System.a,true
testTriggerZ__10WPadButtonCFv,WPadButton.o,System.a,true
testReleaseZ__10WPadButtonCFv,WPadButton.o,System.a,true
isChangeAnyState__10WPadButtonCFv,WPadButton.o,System.a,true
__ct__16WPadReadDataInfoFv,WPadHolder.o,System.a,true
getKPadStatus__16WPadReadDataInfoCFUl,WPadHolder.o,System.a,true
getValidStatusCount__16WPadReadDataInfoCFv,WPadHolder.o,System.a,true
__ct__10WPadHolderFv,WPadHolder.o,System.a,false
updateReadDataOnly__10WPadHolderFv,WPadHolder.o,System.a,false
updateProjectPadData__10WPadHolderFv,WPadHolder.o,System.a,false

1 Symbol Name Object File Library Archive Matching
910 updateRotate__16WPadAccelerationFv WPadAcceleration.o System.a false
911 updateAccAverage__16WPadAccelerationFv WPadAcceleration.o System.a false
912 updateIsStable__16WPadAccelerationFv WPadAcceleration.o System.a false
913 __ct__10WPadButtonFPC4WPad WPadButton.o System.a false true
914 update__10WPadButtonFv WPadButton.o System.a false true
915 testButtonUp__10WPadButtonCFv WPadButton.o System.a false true
916 testButtonDown__10WPadButtonCFv WPadButton.o System.a false true
917 testButtonLeft__10WPadButtonCFv WPadButton.o System.a false true
918 testButtonRight__10WPadButtonCFv WPadButton.o System.a false true
919 testButtonA__10WPadButtonCFv WPadButton.o System.a false true
920 testButtonB__10WPadButtonCFv WPadButton.o System.a false true
921 testButtonMinus__10WPadButtonCFv WPadButton.o System.a false true
922 testButtonPlus__10WPadButtonCFv WPadButton.o System.a false true
923 testButton1__10WPadButtonCFv WPadButton.o System.a false true
924 testButton2__10WPadButtonCFv WPadButton.o System.a false true
925 testButtonC__10WPadButtonCFv WPadButton.o System.a false true
926 testButtonZ__10WPadButtonCFv WPadButton.o System.a false true
927 testTriggerUp__10WPadButtonCFv WPadButton.o System.a false true
928 testTriggerDown__10WPadButtonCFv WPadButton.o System.a false true
929 testTriggerLeft__10WPadButtonCFv WPadButton.o System.a false true
930 testTriggerRight__10WPadButtonCFv WPadButton.o System.a false true
931 testTriggerA__10WPadButtonCFv WPadButton.o System.a false true
932 testTriggerB__10WPadButtonCFv WPadButton.o System.a false true
933 testTriggerMinus__10WPadButtonCFv WPadButton.o System.a false true
934 testTriggerHome__10WPadButtonCFv WPadButton.o System.a false true
935 testTriggerPlus__10WPadButtonCFv WPadButton.o System.a false true
936 testTrigger1__10WPadButtonCFv WPadButton.o System.a false true
937 testTrigger2__10WPadButtonCFv WPadButton.o System.a false true
938 testTriggerC__10WPadButtonCFv WPadButton.o System.a false true
939 testTriggerZ__10WPadButtonCFv WPadButton.o System.a false true
940 testReleaseZ__10WPadButtonCFv WPadButton.o System.a false true
941 isChangeAnyState__10WPadButtonCFv WPadButton.o System.a false true
942 __ct__16WPadReadDataInfoFv WPadHolder.o System.a false true
943 getKPadStatus__16WPadReadDataInfoCFUl WPadHolder.o System.a false true
944 getValidStatusCount__16WPadReadDataInfoCFv WPadHolder.o System.a false true
945 __ct__10WPadHolderFv WPadHolder.o System.a false
946 updateReadDataOnly__10WPadHolderFv WPadHolder.o System.a false
947 updateProjectPadData__10WPadHolderFv WPadHolder.o System.a false

View File

@ -1,6 +1,6 @@
{
"schemaVersion": 1,
"label": "Game",
"message": "11.12%",
"message": "11.137%",
"color": "blue"
}

View File

@ -1,6 +1,6 @@
{
"schemaVersion": 1,
"label": "System",
"message": "12.523%",
"message": "12.971%",
"color": "696969"
}

View File

@ -22,5 +22,5 @@
| [Scene](https://github.com/shibbo/Petari/blob/master/docs/lib/Scene.md) | 12.230081906180192% |
| [Screen](https://github.com/shibbo/Petari/blob/master/docs/lib/Screen.md) | 3.9020947950289457% |
| [Speaker](https://github.com/shibbo/Petari/blob/master/docs/lib/Speaker.md) | 49.743881616391576% |
| [System](https://github.com/shibbo/Petari/blob/master/docs/lib/System.md) | 12.523141381662281% |
| [System](https://github.com/shibbo/Petari/blob/master/docs/lib/System.md) | 12.971353405437005% |
| [Util](https://github.com/shibbo/Petari/blob/master/docs/lib/Util.md) | 9.661178747499052% |

View File

@ -58,8 +58,8 @@
| [StationedFileInfo.o](https://github.com/shibbo/Petari/blob/master/docs/lib/System/StationedFileInfo.md) | 100.0% | 1 / 1 | 100.0% | :white_check_mark:
| [WPad.o](https://github.com/shibbo/Petari/blob/master/docs/lib/System/WPad.md) | 0.0% | 0 / 21 | 0.0% | :x:
| [WPadAcceleration.o](https://github.com/shibbo/Petari/blob/master/docs/lib/System/WPadAcceleration.md) | 0.0% | 0 / 9 | 0.0% | :x:
| [WPadButton.o](https://github.com/shibbo/Petari/blob/master/docs/lib/System/WPadButton.md) | 0.0% | 0 / 29 | 0.0% | :x:
| [WPadHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/System/WPadHolder.md) | 0.0% | 0 / 19 | 0.0% | :x:
| [WPadButton.o](https://github.com/shibbo/Petari/blob/master/docs/lib/System/WPadButton.md) | 100.0% | 29 / 29 | 100.0% | :white_check_mark:
| [WPadHolder.o](https://github.com/shibbo/Petari/blob/master/docs/lib/System/WPadHolder.md) | 8.450704225352112% | 3 / 19 | 15.789473684210526% | :eight_pointed_black_star:
| [WPadHVSwing.o](https://github.com/shibbo/Petari/blob/master/docs/lib/System/WPadHVSwing.md) | 0.0% | 0 / 4 | 0.0% | :x:
| [WPadInfoChecker.o](https://github.com/shibbo/Petari/blob/master/docs/lib/System/WPadInfoChecker.md) | 0.0% | 0 / 6 | 0.0% | :x:
| [WPadLeaveWatcher.o](https://github.com/shibbo/Petari/blob/master/docs/lib/System/WPadLeaveWatcher.md) | 0.0% | 0 / 5 | 0.0% | :x:

View File

@ -5,36 +5,36 @@
| :white_check_mark: | Function is completed.
# 0 / 29 Completed -- (0.0%)
# 29 / 29 Completed -- (100.0%)
# WPadButton.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__10WPadButtonFPC4WPad` | :x: |
| `update__10WPadButtonFv` | :x: |
| `testButtonUp__10WPadButtonCFv` | :x: |
| `testButtonDown__10WPadButtonCFv` | :x: |
| `testButtonLeft__10WPadButtonCFv` | :x: |
| `testButtonRight__10WPadButtonCFv` | :x: |
| `testButtonA__10WPadButtonCFv` | :x: |
| `testButtonB__10WPadButtonCFv` | :x: |
| `testButtonMinus__10WPadButtonCFv` | :x: |
| `testButtonPlus__10WPadButtonCFv` | :x: |
| `testButton1__10WPadButtonCFv` | :x: |
| `testButton2__10WPadButtonCFv` | :x: |
| `testButtonC__10WPadButtonCFv` | :x: |
| `testButtonZ__10WPadButtonCFv` | :x: |
| `testTriggerUp__10WPadButtonCFv` | :x: |
| `testTriggerDown__10WPadButtonCFv` | :x: |
| `testTriggerLeft__10WPadButtonCFv` | :x: |
| `testTriggerRight__10WPadButtonCFv` | :x: |
| `testTriggerA__10WPadButtonCFv` | :x: |
| `testTriggerB__10WPadButtonCFv` | :x: |
| `testTriggerMinus__10WPadButtonCFv` | :x: |
| `testTriggerHome__10WPadButtonCFv` | :x: |
| `testTriggerPlus__10WPadButtonCFv` | :x: |
| `testTrigger1__10WPadButtonCFv` | :x: |
| `testTrigger2__10WPadButtonCFv` | :x: |
| `testTriggerC__10WPadButtonCFv` | :x: |
| `testTriggerZ__10WPadButtonCFv` | :x: |
| `testReleaseZ__10WPadButtonCFv` | :x: |
| `isChangeAnyState__10WPadButtonCFv` | :x: |
| `__ct__10WPadButtonFPC4WPad` | :white_check_mark: |
| `update__10WPadButtonFv` | :white_check_mark: |
| `testButtonUp__10WPadButtonCFv` | :white_check_mark: |
| `testButtonDown__10WPadButtonCFv` | :white_check_mark: |
| `testButtonLeft__10WPadButtonCFv` | :white_check_mark: |
| `testButtonRight__10WPadButtonCFv` | :white_check_mark: |
| `testButtonA__10WPadButtonCFv` | :white_check_mark: |
| `testButtonB__10WPadButtonCFv` | :white_check_mark: |
| `testButtonMinus__10WPadButtonCFv` | :white_check_mark: |
| `testButtonPlus__10WPadButtonCFv` | :white_check_mark: |
| `testButton1__10WPadButtonCFv` | :white_check_mark: |
| `testButton2__10WPadButtonCFv` | :white_check_mark: |
| `testButtonC__10WPadButtonCFv` | :white_check_mark: |
| `testButtonZ__10WPadButtonCFv` | :white_check_mark: |
| `testTriggerUp__10WPadButtonCFv` | :white_check_mark: |
| `testTriggerDown__10WPadButtonCFv` | :white_check_mark: |
| `testTriggerLeft__10WPadButtonCFv` | :white_check_mark: |
| `testTriggerRight__10WPadButtonCFv` | :white_check_mark: |
| `testTriggerA__10WPadButtonCFv` | :white_check_mark: |
| `testTriggerB__10WPadButtonCFv` | :white_check_mark: |
| `testTriggerMinus__10WPadButtonCFv` | :white_check_mark: |
| `testTriggerHome__10WPadButtonCFv` | :white_check_mark: |
| `testTriggerPlus__10WPadButtonCFv` | :white_check_mark: |
| `testTrigger1__10WPadButtonCFv` | :white_check_mark: |
| `testTrigger2__10WPadButtonCFv` | :white_check_mark: |
| `testTriggerC__10WPadButtonCFv` | :white_check_mark: |
| `testTriggerZ__10WPadButtonCFv` | :white_check_mark: |
| `testReleaseZ__10WPadButtonCFv` | :white_check_mark: |
| `isChangeAnyState__10WPadButtonCFv` | :white_check_mark: |

View File

@ -5,13 +5,13 @@
| :white_check_mark: | Function is completed.
# 0 / 19 Completed -- (0.0%)
# 3 / 19 Completed -- (15.789473684210526%)
# WPadHolder.o
| Symbol | Decompiled? |
| ------------- | ------------- |
| `__ct__16WPadReadDataInfoFv` | :x: |
| `getKPadStatus__16WPadReadDataInfoCFUl` | :x: |
| `getValidStatusCount__16WPadReadDataInfoCFv` | :x: |
| `__ct__16WPadReadDataInfoFv` | :white_check_mark: |
| `getKPadStatus__16WPadReadDataInfoCFUl` | :white_check_mark: |
| `getValidStatusCount__16WPadReadDataInfoCFv` | :white_check_mark: |
| `__ct__10WPadHolderFv` | :x: |
| `updateReadDataOnly__10WPadHolderFv` | :x: |
| `updateProjectPadData__10WPadHolderFv` | :x: |

View File

@ -0,0 +1,36 @@
#pragma once
#include <revolution.h>
class WPadButton;
class WPadPointer;
class WPadAcceleration;
class WPadHVSwing;
class WPadRumble;
class WPadStick;
class WPadLeaveWatcher;
class WPadInfoChecker;
class WPad {
public:
WPad(s32);
KPADStatus* getKPadStatus(u32) const;
s32 mChannel; // _0
u32 _4;
WPadButton* mButtons; // _8
WPadPointer* mPointer; // _C
WPadAcceleration* _10;
WPadHVSwing* _14;
WPadRumble* _18;
WPadRumble* _1C;
WPadStick* mStick; // _20
WPadAcceleration* _24;
WPadHVSwing* _28;
WPadLeaveWatcher* mLeaveWatcher; // _2C
WPadInfoChecker* mChecker; // _30
u8 _34;
u8 _35;
u8 _36;
};

View File

@ -0,0 +1,45 @@
#pragma once
#include "Game/System/WPad.h"
class WPadButton {
public:
WPadButton(const WPad *);
void update();
bool testButtonUp() const;
bool testButtonDown() const;
bool testButtonLeft() const;
bool testButtonRight() const;
bool testButtonA() const;
bool testButtonB() const;
bool testButtonMinus() const;
bool testButtonPlus() const;
bool testButton1() const;
bool testButton2() const;
bool testButtonC() const;
bool testButtonZ() const;
bool testTriggerUp() const;
bool testTriggerDown() const;
bool testTriggerLeft() const;
bool testTriggerRight() const;
bool testTriggerA() const;
bool testTriggerB() const;
bool testTriggerMinus() const;
bool testTriggerHome() const;
bool testTriggerPlus() const;
bool testTrigger1() const;
bool testTrigger2() const;
bool testTriggerC() const;
bool testTriggerZ() const;
bool testReleaseZ() const;
bool isChangeAnyState() const;
const WPad* mPad; // _0
u32 mHold; // _4
u32 _8;
u32 mRelease; // _C
u32 _10;
f32 mDelaySec; // _14
f32 mPulseSec; // _18
};

View File

@ -0,0 +1,14 @@
#pragma once
#include <revolution.h>
class WPadReadDataInfo {
public:
WPadReadDataInfo();
KPADStatus* getKPadStatus(u32) const;
u32 getValidStatusCount() const;
KPADStatus* mStatusArray; // _0
u32 mValidStatusCount; // _4
};

View File

@ -7,6 +7,7 @@
#include <revolution/fs.h>
#include <revolution/gd.h>
#include <revolution/gx.h>
#include <revolution/kpad.h>
#include <revolution/mtx.h>
#include <revolution/nand.h>
#include <revolution/os.h>

View File

@ -0,0 +1,65 @@
#ifndef KPAD_H
#define KPAD_H
#include <revolution.h>
#include <revolution/mtx.h>
#ifdef __cplusplus
extern "C" {
#endif
struct Vec2 {
f32 x;
f32 y;
};
typedef union KPADEXStatus {
struct {
Vec2 stick;
Vec acc;
f32 acc_value;
f32 acc_speed;
} fs;
struct {
u32 hold;
u32 trig;
u32 release;
Vec2 lstick;
Vec2 rstick;
f32 ltrigger;
f32 rtrigger;
} cl;
} KPADEXStatus;
typedef struct KPADStatus {
u32 hold;
u32 trig;
u32 release;
Vec acc;
f32 acc_value;
f32 acc_speed;
Vec2 pos;
Vec2 vec;
f32 speed;
Vec2 horizon;
Vec2 hori_vec;
f32 hori_speed;
f32 dist;
f32 dist_vec;
f32 dist_speed;
Vec2 acc_vertical;
u8 dev_type;
s8 wpad_err;
s8 dpd_valid_fg;
u8 data_format;
KPADEXStatus ex_status;
} KPADStatus;
void KPADSetBtnRepeat(s32, f32, f32);
#ifdef __cplusplus
}
#endif
#endif // KPAD_H

BIN
prog.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -0,0 +1,151 @@
#include "Game/System/WPadButton.h"
WPadButton::WPadButton(const WPad* pPad) {
mPad = pPad;
mHold = 0;
_8 = 0;
mRelease = 0;
_10 = 0;
mDelaySec = 0.41666666;
mPulseSec = 0.16666667;
KPADSetBtnRepeat(mPad->mChannel, mDelaySec, mPulseSec);
}
void WPadButton::update() {
KPADStatus* status = mPad->getKPadStatus(0);
if (status != nullptr) {
u32 v3;
if (mHold != 0) {
_8 = status->trig & ~mHold & 0xFFFF;
}
else {
_8 = status->trig;
}
if (!status->wpad_err || status->wpad_err == -2) {
mHold = status->hold;
mRelease = status->release;
}
_10 = _8;
if ((status->hold & 0x80000000) != 0) {
_10 = _8 | mHold;
}
}
}
bool WPadButton::testButtonUp() const {
return (mHold >> 3) & 0x1;
}
bool WPadButton::testButtonDown() const {
return (mHold >> 2) & 0x1;
}
bool WPadButton::testButtonLeft() const {
return mHold & 0x1;
}
bool WPadButton::testButtonRight() const {
return (mHold >> 1) & 0x1;
}
bool WPadButton::testButtonA() const {
return (mHold >> 11) & 0x1;
}
bool WPadButton::testButtonB() const {
return (mHold >> 10) & 0x1;
}
bool WPadButton::testButtonMinus() const {
return (mHold >> 12) & 0x1;
}
bool WPadButton::testButtonPlus() const {
return (mHold >> 4) & 0x1;
}
bool WPadButton::testButton1() const {
return (mHold >> 9) & 0x1;
}
bool WPadButton::testButton2() const {
return (mHold >> 8) & 0x1;
}
bool WPadButton::testButtonC() const {
return (mHold >> 14) & 0x1;
}
bool WPadButton::testButtonZ() const {
return (mHold >> 13) & 0x1;
}
bool WPadButton::testTriggerUp() const {
return (mHold >> 3) & 0x1;
}
bool WPadButton::testTriggerDown() const {
return (mHold >> 2) & 0x1;
}
bool WPadButton::testTriggerLeft() const {
return _8 & 0x1;
}
bool WPadButton::testTriggerRight() const {
return (_8 >> 1) & 0x1;
}
bool WPadButton::testTriggerA() const {
return (_8 >> 11) & 0x1;
}
bool WPadButton::testTriggerB() const {
return (_8 >> 10) & 0x1;
}
bool WPadButton::testTriggerMinus() const {
return (_8 >> 12) & 0x1;
}
bool WPadButton::testTriggerHome() const {
return (_8 >> 15) & 0x1;
}
bool WPadButton::testTriggerPlus() const {
return (_8 >> 4) & 0x1;
}
bool WPadButton::testTrigger1() const {
return (_8 >> 9) & 0x1;
}
bool WPadButton::testTrigger2() const {
return (_8 >> 8) & 0x1;
}
bool WPadButton::testTriggerC() const {
return (_8 >> 14) & 0x1;
}
bool WPadButton::testTriggerZ() const {
return (_8 >> 13) & 0x1;
}
bool WPadButton::testReleaseZ() const {
return (mRelease >> 13) & 0x1;
}
bool WPadButton::isChangeAnyState() const {
bool result = false;
if (_8 || mRelease) {
result = true;
}
return result;
}

View File

@ -0,0 +1,21 @@
#include "Game/System/WPadHolder.h"
#include "Game/Util.h"
WPadReadDataInfo::WPadReadDataInfo() {
mStatusArray = nullptr;
mValidStatusCount = 0;
mStatusArray = new KPADStatus[0x78];
MR::zeroMemory(mStatusArray, sizeof(KPADStatus) * 0x78);
}
KPADStatus* WPadReadDataInfo::getKPadStatus(u32 idx) const {
if (idx >= mValidStatusCount) {
return nullptr;
}
return &mStatusArray[idx];
}
u32 WPadReadDataInfo::getValidStatusCount() const {
return mValidStatusCount;
}