mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-08-25 03:35:59 +00:00
music controlled by asm and jukebox volume slider
This commit is contained in:
parent
b26bb22376
commit
4c26ee2c40
14 changed files with 353 additions and 50 deletions
Binary file not shown.
|
@ -1021,6 +1021,11 @@ C208D698 00000005 #Recording/GetLCancelStatus/GetLCancelStatus.asm
|
|||
C206C324 00000002 #Recording/GetLCancelStatus/ResetLCancelStatus.asm
|
||||
38600000 987E25FF
|
||||
807E00B0 00000000
|
||||
C21A4CB4 00000004 #Common/AllocBuffer.asm
|
||||
38600080 3D808037
|
||||
618CF1E4 7D8903A6
|
||||
4E800421 906DAFC4
|
||||
38000000 00000000
|
||||
C20055F8 0000000F #Common/GetIsFollower.asm
|
||||
7C0802A6 90010004
|
||||
9421FF20 BE8100B0
|
||||
|
@ -2040,11 +2045,6 @@ BA8100B0 800100E4
|
|||
800100E4 382100E0
|
||||
7C0803A6 2C1E0000
|
||||
60000000 00000000
|
||||
C21A4CB4 00000004 #Online/Core/EXIFileLoad/AllocBuffer.asm
|
||||
38600080 3D808037
|
||||
618CF1E4 7D8903A6
|
||||
4E800421 906DAFC4
|
||||
38000000 00000000
|
||||
C20163FC 0000001B #Online/Core/EXIFileLoad/GetFileSize.asm
|
||||
7C7E1B78 7C0802A6
|
||||
90010004 9421FF20
|
||||
|
@ -2194,6 +2194,63 @@ C2019608 0000000F #Online/Core/Hacks/PreventPadAlarmDuringRollback.asm
|
|||
618C9618 7D8903A6
|
||||
4E800420 38600000
|
||||
60000000 00000000
|
||||
C238E910 0000001A #Online/Core/Music/StartSong.asm
|
||||
7C0802A6 90010004
|
||||
9421FF54 BE81007C
|
||||
7C7E1B78 3D808034
|
||||
618C7364 7D8903A6
|
||||
4E800421 7C7D1B78
|
||||
7FC3F378 38810008
|
||||
3D808033 618C7C60
|
||||
7D8903A6 4E800421
|
||||
2C030000 41820044
|
||||
3BE10048 3BFF001F
|
||||
57FF0034 386000D6
|
||||
987F0000 80610038
|
||||
907F0001 8061003C
|
||||
907F0005 7FE3FB78
|
||||
38800009 38A00001
|
||||
3D808000 618C55F0
|
||||
7D8903A6 4E800421
|
||||
38610008 3D808033
|
||||
618C7CD4 7D8903A6
|
||||
4E800421 7FA3EB78
|
||||
3D808034 618C738C
|
||||
7D8903A6 4E800421
|
||||
7FC3F378 BA81007C
|
||||
800100B0 382100AC
|
||||
7C0803A6 800DA998
|
||||
60000000 00000000
|
||||
C20236EC 0000000B #Online/Core/Music/Stop.asm
|
||||
7C0802A6 90010004
|
||||
9421FF9C BE810034
|
||||
3BE10008 3BFF001F
|
||||
57FF0034 386000D7
|
||||
987F0000 7FE3FB78
|
||||
38800001 38A00001
|
||||
3D808000 618C55F0
|
||||
7D8903A6 4E800421
|
||||
BA810034 80010068
|
||||
38210064 7C0803A6
|
||||
38000000 00000000
|
||||
C20249F0 00000011 #Online/Core/Music/VolumeChange.asm
|
||||
4800000C 4E800021
|
||||
00000000 900D81E8
|
||||
7C0802A6 90010004
|
||||
9421FF9C BE810034
|
||||
4BFFFFE5 7FC802A6
|
||||
808D81E8 807E0000
|
||||
7C032000 4182003C
|
||||
909E0000 3BE10008
|
||||
3BFF001F 57FF0034
|
||||
386000D8 987F0000
|
||||
989F0001 7FE3FB78
|
||||
38800002 38A00001
|
||||
3D808000 618C55F0
|
||||
7D8903A6 4E800421
|
||||
BA810034 80010068
|
||||
38210064 7C0803A6
|
||||
60000000 00000000
|
||||
C21D4578 00000003 #Online/Core/PreventFileAlarms/FreezeStadium.asm
|
||||
FFE00890 3D80801D
|
||||
618C4FD8 7D8903A6
|
||||
|
|
|
@ -1020,6 +1020,11 @@ C208D698 00000005 #Recording/GetLCancelStatus/GetLCancelStatus.asm
|
|||
C206C324 00000002 #Recording/GetLCancelStatus/ResetLCancelStatus.asm
|
||||
38600000 987E25FF
|
||||
807E00B0 00000000
|
||||
C21A4CB4 00000004 #Common/AllocBuffer.asm
|
||||
38600080 3D808037
|
||||
618CF1E4 7D8903A6
|
||||
4E800421 906DAFC4
|
||||
38000000 00000000
|
||||
C20055F8 0000000F #Common/GetIsFollower.asm
|
||||
7C0802A6 90010004
|
||||
9421FF20 BE8100B0
|
||||
|
@ -2039,11 +2044,6 @@ BA8100B0 800100E4
|
|||
800100E4 382100E0
|
||||
7C0803A6 2C1E0000
|
||||
60000000 00000000
|
||||
C21A4CB4 00000004 #Online/Core/EXIFileLoad/AllocBuffer.asm
|
||||
38600080 3D808037
|
||||
618CF1E4 7D8903A6
|
||||
4E800421 906DAFC4
|
||||
38000000 00000000
|
||||
C20163FC 0000001B #Online/Core/EXIFileLoad/GetFileSize.asm
|
||||
7C7E1B78 7C0802A6
|
||||
90010004 9421FF20
|
||||
|
@ -2193,6 +2193,63 @@ C2019608 0000000F #Online/Core/Hacks/PreventPadAlarmDuringRollback.asm
|
|||
618C9618 7D8903A6
|
||||
4E800420 38600000
|
||||
60000000 00000000
|
||||
C238E910 0000001A #Online/Core/Music/StartSong.asm
|
||||
7C0802A6 90010004
|
||||
9421FF54 BE81007C
|
||||
7C7E1B78 3D808034
|
||||
618C7364 7D8903A6
|
||||
4E800421 7C7D1B78
|
||||
7FC3F378 38810008
|
||||
3D808033 618C7C60
|
||||
7D8903A6 4E800421
|
||||
2C030000 41820044
|
||||
3BE10048 3BFF001F
|
||||
57FF0034 386000D6
|
||||
987F0000 80610038
|
||||
907F0001 8061003C
|
||||
907F0005 7FE3FB78
|
||||
38800009 38A00001
|
||||
3D808000 618C55F0
|
||||
7D8903A6 4E800421
|
||||
38610008 3D808033
|
||||
618C7CD4 7D8903A6
|
||||
4E800421 7FA3EB78
|
||||
3D808034 618C738C
|
||||
7D8903A6 4E800421
|
||||
7FC3F378 BA81007C
|
||||
800100B0 382100AC
|
||||
7C0803A6 800DA998
|
||||
60000000 00000000
|
||||
C20236EC 0000000B #Online/Core/Music/Stop.asm
|
||||
7C0802A6 90010004
|
||||
9421FF9C BE810034
|
||||
3BE10008 3BFF001F
|
||||
57FF0034 386000D7
|
||||
987F0000 7FE3FB78
|
||||
38800001 38A00001
|
||||
3D808000 618C55F0
|
||||
7D8903A6 4E800421
|
||||
BA810034 80010068
|
||||
38210064 7C0803A6
|
||||
38000000 00000000
|
||||
C20249F0 00000011 #Online/Core/Music/VolumeChange.asm
|
||||
4800000C 4E800021
|
||||
00000000 900D81E8
|
||||
7C0802A6 90010004
|
||||
9421FF9C BE810034
|
||||
4BFFFFE5 7FC802A6
|
||||
808D81E8 807E0000
|
||||
7C032000 4182003C
|
||||
909E0000 3BE10008
|
||||
3BFF001F 57FF0034
|
||||
386000D8 987F0000
|
||||
989F0001 7FE3FB78
|
||||
38800002 38A00001
|
||||
3D808000 618C55F0
|
||||
7D8903A6 4E800421
|
||||
BA810034 80010068
|
||||
38210064 7C0803A6
|
||||
60000000 00000000
|
||||
C21D4578 00000003 #Online/Core/PreventFileAlarms/FreezeStadium.asm
|
||||
FFE00890 3D80801D
|
||||
618C4FD8 7D8903A6
|
||||
|
|
|
@ -1021,6 +1021,11 @@ C208D698 00000005 #Recording/GetLCancelStatus/GetLCancelStatus.asm
|
|||
C206C324 00000002 #Recording/GetLCancelStatus/ResetLCancelStatus.asm
|
||||
38600000 987E25FF
|
||||
807E00B0 00000000
|
||||
C21A4CB4 00000004 #Common/AllocBuffer.asm
|
||||
38600080 3D808037
|
||||
618CF1E4 7D8903A6
|
||||
4E800421 906DAFC4
|
||||
38000000 00000000
|
||||
C20055F8 0000000F #Common/GetIsFollower.asm
|
||||
7C0802A6 90010004
|
||||
9421FF20 BE8100B0
|
||||
|
@ -2040,11 +2045,6 @@ BA8100B0 800100E4
|
|||
800100E4 382100E0
|
||||
7C0803A6 2C1E0000
|
||||
60000000 00000000
|
||||
C21A4CB4 00000004 #Online/Core/EXIFileLoad/AllocBuffer.asm
|
||||
38600080 3D808037
|
||||
618CF1E4 7D8903A6
|
||||
4E800421 906DAFC4
|
||||
38000000 00000000
|
||||
C20163FC 0000001B #Online/Core/EXIFileLoad/GetFileSize.asm
|
||||
7C7E1B78 7C0802A6
|
||||
90010004 9421FF20
|
||||
|
@ -2194,6 +2194,63 @@ C2019608 0000000F #Online/Core/Hacks/PreventPadAlarmDuringRollback.asm
|
|||
618C9618 7D8903A6
|
||||
4E800420 38600000
|
||||
60000000 00000000
|
||||
C238E910 0000001A #Online/Core/Music/StartSong.asm
|
||||
7C0802A6 90010004
|
||||
9421FF54 BE81007C
|
||||
7C7E1B78 3D808034
|
||||
618C7364 7D8903A6
|
||||
4E800421 7C7D1B78
|
||||
7FC3F378 38810008
|
||||
3D808033 618C7C60
|
||||
7D8903A6 4E800421
|
||||
2C030000 41820044
|
||||
3BE10048 3BFF001F
|
||||
57FF0034 386000D6
|
||||
987F0000 80610038
|
||||
907F0001 8061003C
|
||||
907F0005 7FE3FB78
|
||||
38800009 38A00001
|
||||
3D808000 618C55F0
|
||||
7D8903A6 4E800421
|
||||
38610008 3D808033
|
||||
618C7CD4 7D8903A6
|
||||
4E800421 7FA3EB78
|
||||
3D808034 618C738C
|
||||
7D8903A6 4E800421
|
||||
7FC3F378 BA81007C
|
||||
800100B0 382100AC
|
||||
7C0803A6 800DA998
|
||||
60000000 00000000
|
||||
C20236EC 0000000B #Online/Core/Music/Stop.asm
|
||||
7C0802A6 90010004
|
||||
9421FF9C BE810034
|
||||
3BE10008 3BFF001F
|
||||
57FF0034 386000D7
|
||||
987F0000 7FE3FB78
|
||||
38800001 38A00001
|
||||
3D808000 618C55F0
|
||||
7D8903A6 4E800421
|
||||
BA810034 80010068
|
||||
38210064 7C0803A6
|
||||
38000000 00000000
|
||||
C20249F0 00000011 #Online/Core/Music/VolumeChange.asm
|
||||
4800000C 4E800021
|
||||
00000000 900D81E8
|
||||
7C0802A6 90010004
|
||||
9421FF9C BE810034
|
||||
4BFFFFE5 7FC802A6
|
||||
808D81E8 807E0000
|
||||
7C032000 4182003C
|
||||
909E0000 3BE10008
|
||||
3BFF001F 57FF0034
|
||||
386000D8 987F0000
|
||||
989F0001 7FE3FB78
|
||||
38800002 38A00001
|
||||
3D808000 618C55F0
|
||||
7D8903A6 4E800421
|
||||
BA810034 80010068
|
||||
38210064 7C0803A6
|
||||
60000000 00000000
|
||||
C21D4578 00000003 #Online/Core/PreventFileAlarms/FreezeStadium.asm
|
||||
FFE00890 3D80801D
|
||||
618C4FD8 7D8903A6
|
||||
|
|
|
@ -1020,6 +1020,11 @@ C208D698 00000005 #Recording/GetLCancelStatus/GetLCancelStatus.asm
|
|||
C206C324 00000002 #Recording/GetLCancelStatus/ResetLCancelStatus.asm
|
||||
38600000 987E25FF
|
||||
807E00B0 00000000
|
||||
C21A4CB4 00000004 #Common/AllocBuffer.asm
|
||||
38600080 3D808037
|
||||
618CF1E4 7D8903A6
|
||||
4E800421 906DAFC4
|
||||
38000000 00000000
|
||||
C20055F8 0000000F #Common/GetIsFollower.asm
|
||||
7C0802A6 90010004
|
||||
9421FF20 BE8100B0
|
||||
|
@ -2039,11 +2044,6 @@ BA8100B0 800100E4
|
|||
800100E4 382100E0
|
||||
7C0803A6 2C1E0000
|
||||
60000000 00000000
|
||||
C21A4CB4 00000004 #Online/Core/EXIFileLoad/AllocBuffer.asm
|
||||
38600080 3D808037
|
||||
618CF1E4 7D8903A6
|
||||
4E800421 906DAFC4
|
||||
38000000 00000000
|
||||
C20163FC 0000001B #Online/Core/EXIFileLoad/GetFileSize.asm
|
||||
7C7E1B78 7C0802A6
|
||||
90010004 9421FF20
|
||||
|
@ -2193,6 +2193,63 @@ C2019608 0000000F #Online/Core/Hacks/PreventPadAlarmDuringRollback.asm
|
|||
618C9618 7D8903A6
|
||||
4E800420 38600000
|
||||
60000000 00000000
|
||||
C238E910 0000001A #Online/Core/Music/StartSong.asm
|
||||
7C0802A6 90010004
|
||||
9421FF54 BE81007C
|
||||
7C7E1B78 3D808034
|
||||
618C7364 7D8903A6
|
||||
4E800421 7C7D1B78
|
||||
7FC3F378 38810008
|
||||
3D808033 618C7C60
|
||||
7D8903A6 4E800421
|
||||
2C030000 41820044
|
||||
3BE10048 3BFF001F
|
||||
57FF0034 386000D6
|
||||
987F0000 80610038
|
||||
907F0001 8061003C
|
||||
907F0005 7FE3FB78
|
||||
38800009 38A00001
|
||||
3D808000 618C55F0
|
||||
7D8903A6 4E800421
|
||||
38610008 3D808033
|
||||
618C7CD4 7D8903A6
|
||||
4E800421 7FA3EB78
|
||||
3D808034 618C738C
|
||||
7D8903A6 4E800421
|
||||
7FC3F378 BA81007C
|
||||
800100B0 382100AC
|
||||
7C0803A6 800DA998
|
||||
60000000 00000000
|
||||
C20236EC 0000000B #Online/Core/Music/Stop.asm
|
||||
7C0802A6 90010004
|
||||
9421FF9C BE810034
|
||||
3BE10008 3BFF001F
|
||||
57FF0034 386000D7
|
||||
987F0000 7FE3FB78
|
||||
38800001 38A00001
|
||||
3D808000 618C55F0
|
||||
7D8903A6 4E800421
|
||||
BA810034 80010068
|
||||
38210064 7C0803A6
|
||||
38000000 00000000
|
||||
C20249F0 00000011 #Online/Core/Music/VolumeChange.asm
|
||||
4800000C 4E800021
|
||||
00000000 900D81E8
|
||||
7C0802A6 90010004
|
||||
9421FF9C BE810034
|
||||
4BFFFFE5 7FC802A6
|
||||
808D81E8 807E0000
|
||||
7C032000 4182003C
|
||||
909E0000 3BE10008
|
||||
3BFF001F 57FF0034
|
||||
386000D8 987F0000
|
||||
989F0001 7FE3FB78
|
||||
38800002 38A00001
|
||||
3D808000 618C55F0
|
||||
7D8903A6 4E800421
|
||||
BA810034 80010068
|
||||
38210064 7C0803A6
|
||||
60000000 00000000
|
||||
C21D4578 00000003 #Online/Core/PreventFileAlarms/FreezeStadium.asm
|
||||
FFE00890 3D80801D
|
||||
618C4FD8 7D8903A6
|
||||
|
|
2
Externals/SlippiRustExtensions
vendored
2
Externals/SlippiRustExtensions
vendored
|
@ -1 +1 @@
|
|||
Subproject commit 76b7c3a54020593dc5393cfdb35baf42c55bffab
|
||||
Subproject commit e100ac1fa833c5cb2ff2b770ed301fb5cb298be0
|
|
@ -21,12 +21,6 @@
|
|||
#include "Core/ConfigManager.h"
|
||||
#include "Core/System.h"
|
||||
|
||||
// SlippiChange: Added as a hook for the Jukebox to call.
|
||||
int AudioCommonGetCurrentVolume()
|
||||
{
|
||||
return Config::Get(Config::MAIN_AUDIO_MUTED) ? 0 : Config::Get(Config::MAIN_AUDIO_VOLUME);
|
||||
}
|
||||
|
||||
namespace AudioCommon
|
||||
{
|
||||
constexpr int AUDIO_VOLUME_MIN = 0;
|
||||
|
|
|
@ -18,17 +18,6 @@ namespace Core
|
|||
class System;
|
||||
}
|
||||
|
||||
|
||||
// SlippiChange: Added as a hook for the Jukebox to call.
|
||||
//
|
||||
// I've intentionally kept this outside of the C++ namespace as I am unsure of the risks
|
||||
// of having this inside there with regards to how Rust receives it.
|
||||
//
|
||||
// If someone can prove that it's safe, then feel free to move it back into the namespace
|
||||
// proper. For now, I've just prefixed the method name with the namespace name
|
||||
// for grep-ability.
|
||||
int AudioCommonGetCurrentVolume();
|
||||
|
||||
namespace AudioCommon
|
||||
{
|
||||
void InitSoundStream(Core::System& system);
|
||||
|
|
|
@ -41,6 +41,7 @@
|
|||
#include "VideoCommon/OnScreenDisplay.h"
|
||||
|
||||
// The Rust library that houses a "shadow" EXI Device that we can call into.
|
||||
#include "EXI_DeviceSlippi.h"
|
||||
#include "SlippiRustExtensions.h"
|
||||
|
||||
#define FRAME_INTERVAL 900
|
||||
|
@ -135,12 +136,6 @@ void OSDMessageHandler(const char* message, u32 color, u32 duration_ms)
|
|||
OSD::AddMessage(msg, duration_ms, color);
|
||||
}
|
||||
|
||||
// This function gets passed to Jukebox for handling music volume changes
|
||||
int GetJukeboxVolume()
|
||||
{
|
||||
return Config::Get(Config::SLIPPI_JUKEBOX_VOLUME);
|
||||
}
|
||||
|
||||
CEXISlippi::CEXISlippi(Core::System& system, const std::string current_file_name)
|
||||
: IEXIDevice(system)
|
||||
{
|
||||
|
@ -3240,6 +3235,21 @@ void CEXISlippi::DMAWrite(u32 _uAddr, u32 _uSize)
|
|||
case CMD_GET_PLAYER_SETTINGS:
|
||||
handleGetPlayerSettings();
|
||||
break;
|
||||
case CMD_PLAY_MUSIC:
|
||||
{
|
||||
auto args = SlippiExiTypes::Convert<SlippiExiTypes::PlayMusicQuery>(&memPtr[bufLoc]);
|
||||
slprs_jukebox_start_song(slprs_exi_device_ptr, args.offset, args.size);
|
||||
break;
|
||||
}
|
||||
case CMD_STOP_MUSIC:
|
||||
slprs_jukebox_stop_music(slprs_exi_device_ptr);
|
||||
break;
|
||||
case CMD_CHANGE_MUSIC_VOLUME:
|
||||
{
|
||||
auto args = SlippiExiTypes::Convert<SlippiExiTypes::ChangeMusicVolumeQuery>(&memPtr[bufLoc]);
|
||||
slprs_jukebox_set_melee_music_volume(slprs_exi_device_ptr, args.volume);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
writeToFileAsync(&memPtr[bufLoc], payloadLen + 1, "");
|
||||
SlippiSpectateServer::getInstance().write(&memPtr[bufLoc], payloadLen + 1);
|
||||
|
@ -3291,14 +3301,27 @@ void CEXISlippi::ConfigureJukebox()
|
|||
}
|
||||
#endif
|
||||
|
||||
auto& system = Core::System::GetInstance();
|
||||
int dolphin_system_volume =
|
||||
Config::Get(Config::MAIN_AUDIO_MUTED) ? 0 : Config::Get(Config::MAIN_AUDIO_VOLUME);
|
||||
|
||||
slprs_exi_device_configure_jukebox(
|
||||
slprs_exi_device_ptr, Config::Get(Config::SLIPPI_ENABLE_JUKEBOX), system.GetMemory().GetRAM(),
|
||||
AudioCommonGetCurrentVolume, GetJukeboxVolume);
|
||||
int dolphin_music_volume = Config::Get(Config::SLIPPI_JUKEBOX_VOLUME);
|
||||
|
||||
slprs_exi_device_configure_jukebox(slprs_exi_device_ptr,
|
||||
Config::Get(Config::SLIPPI_ENABLE_JUKEBOX),
|
||||
dolphin_system_volume, dolphin_music_volume);
|
||||
#endif
|
||||
}
|
||||
|
||||
void CEXISlippi::UpdateJukeboxDolphinSystemVolume(int volume)
|
||||
{
|
||||
slprs_jukebox_set_dolphin_system_volume(slprs_exi_device_ptr, volume);
|
||||
}
|
||||
|
||||
void CEXISlippi::UpdateJukeboxDolphinMusicVolume(int volume)
|
||||
{
|
||||
slprs_jukebox_set_dolphin_music_volume(slprs_exi_device_ptr, volume);
|
||||
}
|
||||
|
||||
bool CEXISlippi::IsPresent() const
|
||||
{
|
||||
return true;
|
||||
|
|
|
@ -38,6 +38,8 @@ public:
|
|||
void DMARead(u32 addr, u32 size) override;
|
||||
|
||||
void ConfigureJukebox();
|
||||
void UpdateJukeboxDolphinSystemVolume(int volume);
|
||||
void UpdateJukeboxDolphinMusicVolume(int volume);
|
||||
|
||||
bool IsPresent() const override;
|
||||
|
||||
|
@ -91,6 +93,9 @@ private:
|
|||
CMD_GCT_LENGTH = 0xD3,
|
||||
CMD_GCT_LOAD = 0xD4,
|
||||
CMD_GET_DELAY = 0xD5,
|
||||
CMD_PLAY_MUSIC = 0xD6,
|
||||
CMD_STOP_MUSIC = 0xD7,
|
||||
CMD_CHANGE_MUSIC_VOLUME = 0xD8,
|
||||
CMD_PREMADE_TEXT_LENGTH = 0xE1,
|
||||
CMD_PREMADE_TEXT_LOAD = 0xE2,
|
||||
};
|
||||
|
@ -149,6 +154,10 @@ private:
|
|||
{CMD_GCT_LENGTH, 0x0},
|
||||
{CMD_GCT_LOAD, 0x4},
|
||||
{CMD_GET_DELAY, 0x0},
|
||||
{CMD_PLAY_MUSIC, static_cast<u32>(sizeof(SlippiExiTypes::PlayMusicQuery) - 1)},
|
||||
{CMD_STOP_MUSIC, 0x0},
|
||||
{CMD_CHANGE_MUSIC_VOLUME,
|
||||
static_cast<u32>(sizeof(SlippiExiTypes::ChangeMusicVolumeQuery) - 1)},
|
||||
{CMD_PREMADE_TEXT_LENGTH, 0x2},
|
||||
{CMD_PREMADE_TEXT_LOAD, 0x2},
|
||||
};
|
||||
|
|
|
@ -89,6 +89,19 @@ struct GetPlayerSettingsResponse
|
|||
PlayerSettings settings[4];
|
||||
};
|
||||
|
||||
struct PlayMusicQuery
|
||||
{
|
||||
u8 command;
|
||||
u32 offset;
|
||||
u32 size;
|
||||
};
|
||||
|
||||
struct ChangeMusicVolumeQuery
|
||||
{
|
||||
u8 command;
|
||||
u8 volume;
|
||||
};
|
||||
|
||||
// Not sure if resetting is strictly needed, might be contained to the file
|
||||
#pragma pack()
|
||||
|
||||
|
@ -125,4 +138,13 @@ inline OverwriteSelectionsQuery Convert(u8* payload)
|
|||
q.stage_id = Common::FromBigEndian(q.stage_id);
|
||||
return q;
|
||||
}
|
||||
|
||||
template <>
|
||||
inline PlayMusicQuery Convert(u8* payload)
|
||||
{
|
||||
auto q = *reinterpret_cast<PlayMusicQuery*>(payload);
|
||||
q.offset = Common::FromBigEndian(q.offset);
|
||||
q.size = Common::FromBigEndian(q.size);
|
||||
return q;
|
||||
}
|
||||
}; // namespace SlippiExiTypes
|
||||
|
|
|
@ -28,6 +28,11 @@
|
|||
#include "DolphinQt/Config/SettingsWindow.h"
|
||||
#include "DolphinQt/Settings.h"
|
||||
|
||||
#ifndef IS_PLAYBACK
|
||||
#include "Core/HW/EXI/EXI.h"
|
||||
#include "Core/HW/EXI/EXI_DeviceSlippi.h"
|
||||
#endif
|
||||
|
||||
AudioPane::AudioPane()
|
||||
{
|
||||
CheckNeedForLatencyControl();
|
||||
|
@ -406,6 +411,19 @@ void AudioPane::OnVolumeChanged(int volume)
|
|||
{
|
||||
m_volume_slider->setValue(volume);
|
||||
m_volume_indicator->setText(tr("%1%").arg(volume));
|
||||
|
||||
#ifndef IS_PLAYBACK
|
||||
if (Core::GetState() == Core::State::Running)
|
||||
{
|
||||
auto& system = Core::System::GetInstance();
|
||||
auto& exi_manager = system.GetExpansionInterface();
|
||||
ExpansionInterface::CEXISlippi* slippi_exi = static_cast<ExpansionInterface::CEXISlippi*>(
|
||||
exi_manager.GetDevice(ExpansionInterface::Slot::B));
|
||||
|
||||
if (slippi_exi != nullptr)
|
||||
slippi_exi->UpdateJukeboxDolphinSystemVolume(volume);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void AudioPane::CheckNeedForLatencyControl()
|
||||
|
|
|
@ -102,6 +102,8 @@ void GameCubePane::CreateWidgets()
|
|||
m_slot_buttons[slot]->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||
}
|
||||
|
||||
m_slot_combos[ExpansionInterface::Slot::B]->setDisabled(true);
|
||||
|
||||
for (ExpansionInterface::Slot slot : ExpansionInterface::MEMCARD_SLOTS)
|
||||
{
|
||||
m_memcard_path_layouts[slot] = new QHBoxLayout();
|
||||
|
|
|
@ -9,12 +9,12 @@
|
|||
#include "Core/Config/MainSettings.h"
|
||||
#include "Core/ConfigManager.h"
|
||||
#include "Core/Core.h"
|
||||
#include "Core/HW/EXI/EXI.h"
|
||||
#include "Core/System.h"
|
||||
|
||||
#include "DolphinQt/QtUtils/NonDefaultQPushButton.h"
|
||||
|
||||
#ifndef IS_PLAYBACK
|
||||
#include "Core/HW/EXI/EXI.h"
|
||||
#include "Core/HW/EXI/EXI_DeviceSlippi.h"
|
||||
#include "SlippiPane.h"
|
||||
#endif
|
||||
|
@ -161,7 +161,7 @@ void SlippiPane::CreateLayout()
|
|||
m_music_volume_percent->setFixedWidth(40);
|
||||
|
||||
sfx_music_slider_layout->addWidget(music_volume_label, 1, 0);
|
||||
sfx_music_slider_layout->addWidget(m_music_volume_slider, 1, 1);
|
||||
sfx_music_slider_layout->addWidget(m_music_volume_slider, 1, 1, Qt::AlignVCenter);
|
||||
sfx_music_slider_layout->addWidget(m_music_volume_percent, 1, 2);
|
||||
|
||||
jukebox_settings_layout->addLayout(sfx_music_slider_layout);
|
||||
|
@ -190,6 +190,7 @@ void SlippiPane::CreateLayout()
|
|||
|
||||
void SlippiPane::LoadConfig()
|
||||
{
|
||||
#ifndef IS_PLAYBACK
|
||||
// Replay Settings
|
||||
auto save_replays = Config::Get(Config::SLIPPI_SAVE_REPLAYS);
|
||||
m_save_replays->setChecked(save_replays);
|
||||
|
@ -219,10 +220,14 @@ void SlippiPane::LoadConfig()
|
|||
m_music_volume_percent->setText(tr(" %1%").arg(jukebox_volume));
|
||||
|
||||
m_music_volume_slider->setDisabled(!enable_jukebox);
|
||||
#else
|
||||
// HOOKUP PLAYBACK STUFF
|
||||
#endif
|
||||
}
|
||||
|
||||
void SlippiPane::ConnectLayout()
|
||||
{
|
||||
#ifndef IS_PLAYBACK
|
||||
// Replay Settings
|
||||
connect(m_save_replays, &QCheckBox::toggled, this, &SlippiPane::SetSaveReplays);
|
||||
connect(m_monthly_replay_folders, &QCheckBox::toggled, this,
|
||||
|
@ -244,6 +249,9 @@ void SlippiPane::ConnectLayout()
|
|||
connect(m_enable_jukebox, &QCheckBox::toggled, this, &SlippiPane::ToggleJukebox);
|
||||
connect(m_music_volume_slider, qOverload<int>(&QSlider::valueChanged), this,
|
||||
&SlippiPane::OnMusicVolumeUpdate);
|
||||
#else
|
||||
// HOOKUP PLAYBACK STUFF
|
||||
#endif
|
||||
}
|
||||
|
||||
void SlippiPane::SetSaveReplays(bool checked)
|
||||
|
@ -293,6 +301,16 @@ void SlippiPane::OnMusicVolumeUpdate(int volume)
|
|||
{
|
||||
Config::SetBase(Config::SLIPPI_JUKEBOX_VOLUME, volume);
|
||||
m_music_volume_percent->setText(tr(" %1%").arg(volume));
|
||||
if (Core::GetState() == Core::State::Running)
|
||||
{
|
||||
auto& system = Core::System::GetInstance();
|
||||
auto& exi_manager = system.GetExpansionInterface();
|
||||
ExpansionInterface::CEXISlippi* slippi_exi = static_cast<ExpansionInterface::CEXISlippi*>(
|
||||
exi_manager.GetDevice(ExpansionInterface::Slot::B));
|
||||
|
||||
if (slippi_exi != nullptr)
|
||||
slippi_exi->UpdateJukeboxDolphinMusicVolume(volume);
|
||||
}
|
||||
}
|
||||
|
||||
void SlippiPane::OnSaveConfig()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue