diff options
Diffstat (limited to 'src/frontend/qt_sdl/main.cpp')
-rw-r--r-- | src/frontend/qt_sdl/main.cpp | 71 |
1 files changed, 64 insertions, 7 deletions
diff --git a/src/frontend/qt_sdl/main.cpp b/src/frontend/qt_sdl/main.cpp index 803d1f1..7015c6d 100644 --- a/src/frontend/qt_sdl/main.cpp +++ b/src/frontend/qt_sdl/main.cpp @@ -88,6 +88,7 @@ #include "Platform.h" #include "LocalMP.h" #include "Config.h" +#include "DSi_I2C.h" #include "Savestate.h" @@ -581,6 +582,7 @@ void EmuThread::run() double lastMeasureTime = lastTime; u32 winUpdateCount = 0, winUpdateFreq = 1; + u8 dsiVolumeLevel = 0x1F; char melontitle[100]; @@ -620,6 +622,42 @@ void EmuThread::run() } } + if (NDS::ConsoleType == 1) + { + double currentTime = SDL_GetPerformanceCounter() * perfCountsSec; + + // Handle power button + if (Input::HotkeyDown(HK_PowerButton)) + { + DSi_BPTWL::SetPowerButtonHeld(currentTime); + } + else if (Input::HotkeyReleased(HK_PowerButton)) + { + DSi_BPTWL::SetPowerButtonReleased(currentTime); + } + + // Handle volume buttons + if (Input::HotkeyDown(HK_VolumeUp)) + { + DSi_BPTWL::SetVolumeSwitchHeld(DSi_BPTWL::volumeKey_Up); + } + else if (Input::HotkeyReleased(HK_VolumeUp)) + { + DSi_BPTWL::SetVolumeSwitchReleased(DSi_BPTWL::volumeKey_Up); + } + + if (Input::HotkeyDown(HK_VolumeDown)) + { + DSi_BPTWL::SetVolumeSwitchHeld(DSi_BPTWL::volumeKey_Down); + } + else if (Input::HotkeyReleased(HK_VolumeDown)) + { + DSi_BPTWL::SetVolumeSwitchReleased(DSi_BPTWL::volumeKey_Down); + } + + DSi_BPTWL::ProcessVolumeSwitchInput(currentTime); + } + if (EmuRunning == 1 || EmuRunning == 3) { EmuStatus = 1; @@ -739,6 +777,18 @@ void EmuThread::run() oglContext->SetSwapInterval(0); } + if (Config::DSiVolumeSync && NDS::ConsoleType == 1) + { + u8 volumeLevel = DSi_BPTWL::GetVolumeLevel(); + if (volumeLevel != dsiVolumeLevel) + { + dsiVolumeLevel = volumeLevel; + emit syncVolumeLevel(); + } + + Config::AudioVolume = volumeLevel * (256.0 / 31.0); + } + if (Config::AudioSync && !fastforward && audioDevice) { SDL_LockMutex(audioSyncLock); @@ -2583,7 +2633,7 @@ void MainWindow::onBootFirmware() } if (!ROMManager::LoadBIOS()) -{ + { // TODO: better error reporting? QMessageBox::critical(this, "melonDS", "This firmware is not bootable."); emuThread->emuUnpause(); @@ -3027,7 +3077,9 @@ void MainWindow::onCameraSettingsFinished(int res) void MainWindow::onOpenAudioSettings() { - AudioSettingsDialog* dlg = AudioSettingsDialog::openDlg(this); + AudioSettingsDialog* dlg = AudioSettingsDialog::openDlg(this, emuThread->emuIsActive()); + connect(emuThread, &EmuThread::syncVolumeLevel, dlg, &AudioSettingsDialog::onSyncVolumeLevel); + connect(emuThread, &EmuThread::windowEmuStart, dlg, &AudioSettingsDialog::onConsoleReset); connect(dlg, &AudioSettingsDialog::updateAudioSettings, this, &MainWindow::onUpdateAudioSettings); connect(dlg, &AudioSettingsDialog::finished, this, &MainWindow::onAudioSettingsFinished); } @@ -3270,7 +3322,8 @@ void MainWindow::onTitleUpdate(QString title) setWindowTitle(title); } -void ToggleFullscreen(MainWindow* mainWindow) { +void ToggleFullscreen(MainWindow* mainWindow) +{ if (!mainWindow->isFullScreen()) { mainWindow->showFullScreen(); @@ -3289,11 +3342,15 @@ void MainWindow::onFullscreenToggled() ToggleFullscreen(this); } -void MainWindow::onScreenEmphasisToggled() { +void MainWindow::onScreenEmphasisToggled() +{ int currentSizing = Config::ScreenSizing; - if (currentSizing == screenSizing_EmphTop) { + if (currentSizing == screenSizing_EmphTop) + { Config::ScreenSizing = screenSizing_EmphBot; - } else if (currentSizing == screenSizing_EmphBot) { + } + else if (currentSizing == screenSizing_EmphBot) + { Config::ScreenSizing = screenSizing_EmphTop; } @@ -3436,7 +3493,7 @@ int main(int argc, char** argv) } SDL_JoystickEventState(SDL_ENABLE); - + SDL_InitSubSystem(SDL_INIT_VIDEO); SDL_EnableScreenSaver(); SDL_DisableScreenSaver(); |