1#include "Game/System/GameSystem.hpp"
2#include "Game/System/GameSystemObjHolder.hpp"
3#include "Game/System/WPadHolder.hpp"
4#include "Game/System/WPad.hpp"
5#include "Game/System/WPadPointer.hpp"
6#include <revolution/wpad.h>
7#include "Game/Util/MemoryUtil.hpp"
15WPadReadDataInfo::WPadReadDataInfo() {
16 mStatusArray =
nullptr;
17 mValidStatusCount = 0;
18 mStatusArray =
new KPADStatus[0x78];
19 MR::zeroMemory(mStatusArray,
sizeof(KPADStatus) * 0x78);
22KPADStatus* WPadReadDataInfo::getKPadStatus(u32 idx)
const {
23 if (idx >= mValidStatusCount) {
27 return &mStatusArray[idx];
30u32 WPadReadDataInfo::getValidStatusCount()
const {
31 return mValidStatusCount;
34WPadHolder::WPadHolder() {
35 mDataInfoArray =
nullptr;
37 WPADRegisterAllocator(MR::allocFromWPadHeap, MR::freeFromWPadHeap);
41 for (u32 i = 0; i < 2; i++) {
44 pad->setReadInfo(&mDataInfoArray[i]);
48 initSensorBarPosition();
51void WPadHolder::updateReadDataOnly() {
53 for (s32 i = 0; i < 4; i++) {
54 info = &mDataInfoArray[i];
55 info->mValidStatusCount = KPADRead(i, info->mStatusArray, 0x78);
59void WPadHolder::updateProjectPadData() {
60 for (s32 i = 0; i < 2u; i++) {
65void WPadHolder::updateInGame() {
66 for (s32 i = 2; i < 4; i++) {
67 KPADStatus* status = (&mDataInfoArray[i])->getKPadStatus(0);
69 if (status !=
nullptr && !status->wpad_err) {
75void WPadHolder::update() {
77 updateProjectPadData();
79 switch (mHolderMode) {
89void WPadHolder::initSensorBarPosition() {
90 u8 barPos = WPADGetSensorBarPosition();
102 for (
int i = 0; i < 2; i++) {
103 mPads[i]->mPointer->setSensorBarLevel(lvl);
107void WPadHolder::resetPad() {
110 for (s32 i = 0; i < 2u; i++) {
111 mPads[i]->resetPad();
115WPad* WPadHolder::getWPad(s32 idx) {
124 WPad* getWPad(s32 idx) {
125 return ::getWPadHolder()->getWPad(idx);
129 ::getWPadHolder()->resetPad();
132 void setWPadHolderModeHomeButton() {
134 holder->mHolderMode = 0;
137 void setWPadHolderModeGame() {
139 holder->mHolderMode = 1;
144 void setAutoSleepTimeWiiRemote(
bool a1) {
145 WPADSetAutoSleepTime(a1 !=
false ? 15 : 5);