Pad stuff

This commit is contained in:
elijah-thomas774
2025-06-15 14:40:59 -04:00
parent 2707f74d70
commit e4b1c30f47
40 changed files with 2258 additions and 874 deletions
+17 -16
View File
@@ -1,6 +1,7 @@
#include "egg/audio/eggAudioRmtSpeakerMgr.h"
#include "nw4r/snd/snd_SoundSystem.h"
#include "rvl/OS.h" // IWYU pragma: export
namespace EGG {
@@ -21,7 +22,7 @@ void AudioRmtSpeakerMgr::setupCallback(s32 arg1, s32 arg2) {
}
sAudioRmtSpeakerWpadVolume = WPADGetSpeakerVolume();
} else {
fn_804B6D80(arg1, sTasks[mTaskFinishCount].mpCallback);
setup(arg1, sTasks[mTaskFinishCount].mpCallback);
}
sTasks[mTaskFinishCount].field_0x01 = true;
}
@@ -32,12 +33,12 @@ void AudioRmtSpeakerMgr::shutdownCallback(s32 arg1, s32 arg2) {
(sTasks[mTaskFinishCount].mpCallback)(arg1, arg2);
}
} else {
fn_804B6DE0(arg1, sTasks[mTaskFinishCount].mpCallback);
shutdown(arg1, sTasks[mTaskFinishCount].mpCallback);
}
sTasks[mTaskFinishCount].field_0x01 = true;
}
void AudioRmtSpeakerMgr::fn_804B6AF0(s32 i, WPADCallback *pCallback, bool enable) {
void AudioRmtSpeakerMgr::add_task(s32 i, WPADCallback *pCallback, bool enable) {
BOOL intr = OSDisableInterrupts();
u32 index = mTaskRequestCount;
@@ -52,14 +53,14 @@ void AudioRmtSpeakerMgr::fn_804B6AF0(s32 i, WPADCallback *pCallback, bool enable
OSRestoreInterrupts(intr);
}
void AudioRmtSpeakerMgr::fn_804B6B80(s32 i, WPADCallback *pCallback) {
void AudioRmtSpeakerMgr::doSetup(s32 i, WPADCallback *pCallback) {
if (!nw4r::snd::SoundSystem::GetRemoteSpeaker(i).Setup(pCallback)) {
fn_804B6AF0(i, pCallback, true);
add_task(i, pCallback, true);
sTasks[mTaskRequestCount].field_0x01 = true;
}
}
void AudioRmtSpeakerMgr::fn_804B6C00(s32 i, WPADCallback *pCallback) {
void AudioRmtSpeakerMgr::doShutdown(s32 i, WPADCallback *pCallback) {
nw4r::snd::SoundSystem::GetRemoteSpeaker(i).Shutdown(pCallback);
}
@@ -67,9 +68,9 @@ void AudioRmtSpeakerMgr::calc() {
if (!sTask) {
if (mTaskRequestCount != mTaskFinishCount) {
if (sTasks[mTaskFinishCount].field_0x00) {
fn_804B6B80(sTasks[mTaskFinishCount].mChannel, setupCallback);
doSetup(sTasks[mTaskFinishCount].mChannel, setupCallback);
} else {
fn_804B6C00(sTasks[mTaskFinishCount].mChannel, shutdownCallback);
doShutdown(sTasks[mTaskFinishCount].mChannel, shutdownCallback);
}
sTask = true;
}
@@ -86,7 +87,7 @@ void AudioRmtSpeakerMgr::setupCallbackDirect(s32 arg1, s32 arg2) {
if (arg2 == 0) {
sAudioRmtSpeakerWpadVolume = WPADGetSpeakerVolume();
} else {
fn_804B6B80(arg1, setupCallbackDirect);
doSetup(arg1, setupCallbackDirect);
}
}
@@ -97,17 +98,17 @@ void AudioRmtSpeakerMgr::shutdownCallbackDirect(s32 arg1, s32 arg2) {
if (arg2 == 0) {
return;
}
fn_804B6C00(arg1, shutdownCallbackDirect);
doShutdown(arg1, shutdownCallbackDirect);
}
void AudioRmtSpeakerMgr::fn_804B6D80(s32 i, WPADCallback *pCallback) {
void AudioRmtSpeakerMgr::setup(s32 i, WPADCallback *pCallback) {
WPADDeviceType ty;
if (!sAudioRmtSpeakerConnectCanncelSw && WPADProbe(i, &ty) != WPAD_ERR_NO_CONTROLLER) {
fn_804B6AF0(i, pCallback, true);
add_task(i, pCallback, true);
}
}
void AudioRmtSpeakerMgr::fn_804B6DE0(s32 i, WPADCallback *pCallback) {
void AudioRmtSpeakerMgr::shutdown(s32 i, WPADCallback *pCallback) {
WPADDeviceType ty;
if (!sAudioRmtSpeakerConnectCanncelSw) {
if (WPADProbe(i, &ty) == WPAD_ERR_NO_CONTROLLER) {
@@ -115,7 +116,7 @@ void AudioRmtSpeakerMgr::fn_804B6DE0(s32 i, WPADCallback *pCallback) {
return;
}
}
fn_804B6AF0(i, pCallback, false);
add_task(i, pCallback, false);
}
}
@@ -124,7 +125,7 @@ void AudioRmtSpeakerMgr::connectAllByForce() {
sAudioRmtSpeakerConnectCanncelSw = false;
for (int i = 0; i < 4; i++) {
if (WPADProbe(i, &ty) != WPAD_ERR_NO_CONTROLLER) {
fn_804B6B80(i, setupCallbackDirect);
doSetup(i, setupCallbackDirect);
}
}
}
@@ -134,7 +135,7 @@ void AudioRmtSpeakerMgr::disconnectAllByForce() {
for (int i = 0; i < 4; i++) {
WPADProbe(i, &ty); // ignoring result here
if (nw4r::snd::SoundSystem::GetRemoteSpeaker(i).IsAvailable()) {
fn_804B6C00(i, shutdownCallbackDirect);
doShutdown(i, shutdownCallbackDirect);
}
}
sAudioRmtSpeakerConnectCanncelSw = true;