mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-08-25 11:46:27 +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
|
C206C324 00000002 #Recording/GetLCancelStatus/ResetLCancelStatus.asm
|
||||||
38600000 987E25FF
|
38600000 987E25FF
|
||||||
807E00B0 00000000
|
807E00B0 00000000
|
||||||
|
C21A4CB4 00000004 #Common/AllocBuffer.asm
|
||||||
|
38600080 3D808037
|
||||||
|
618CF1E4 7D8903A6
|
||||||
|
4E800421 906DAFC4
|
||||||
|
38000000 00000000
|
||||||
C20055F8 0000000F #Common/GetIsFollower.asm
|
C20055F8 0000000F #Common/GetIsFollower.asm
|
||||||
7C0802A6 90010004
|
7C0802A6 90010004
|
||||||
9421FF20 BE8100B0
|
9421FF20 BE8100B0
|
||||||
|
@ -2040,11 +2045,6 @@ BA8100B0 800100E4
|
||||||
800100E4 382100E0
|
800100E4 382100E0
|
||||||
7C0803A6 2C1E0000
|
7C0803A6 2C1E0000
|
||||||
60000000 00000000
|
60000000 00000000
|
||||||
C21A4CB4 00000004 #Online/Core/EXIFileLoad/AllocBuffer.asm
|
|
||||||
38600080 3D808037
|
|
||||||
618CF1E4 7D8903A6
|
|
||||||
4E800421 906DAFC4
|
|
||||||
38000000 00000000
|
|
||||||
C20163FC 0000001B #Online/Core/EXIFileLoad/GetFileSize.asm
|
C20163FC 0000001B #Online/Core/EXIFileLoad/GetFileSize.asm
|
||||||
7C7E1B78 7C0802A6
|
7C7E1B78 7C0802A6
|
||||||
90010004 9421FF20
|
90010004 9421FF20
|
||||||
|
@ -2194,6 +2194,63 @@ C2019608 0000000F #Online/Core/Hacks/PreventPadAlarmDuringRollback.asm
|
||||||
618C9618 7D8903A6
|
618C9618 7D8903A6
|
||||||
4E800420 38600000
|
4E800420 38600000
|
||||||
60000000 00000000
|
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
|
C21D4578 00000003 #Online/Core/PreventFileAlarms/FreezeStadium.asm
|
||||||
FFE00890 3D80801D
|
FFE00890 3D80801D
|
||||||
618C4FD8 7D8903A6
|
618C4FD8 7D8903A6
|
||||||
|
|
|
@ -1020,6 +1020,11 @@ C208D698 00000005 #Recording/GetLCancelStatus/GetLCancelStatus.asm
|
||||||
C206C324 00000002 #Recording/GetLCancelStatus/ResetLCancelStatus.asm
|
C206C324 00000002 #Recording/GetLCancelStatus/ResetLCancelStatus.asm
|
||||||
38600000 987E25FF
|
38600000 987E25FF
|
||||||
807E00B0 00000000
|
807E00B0 00000000
|
||||||
|
C21A4CB4 00000004 #Common/AllocBuffer.asm
|
||||||
|
38600080 3D808037
|
||||||
|
618CF1E4 7D8903A6
|
||||||
|
4E800421 906DAFC4
|
||||||
|
38000000 00000000
|
||||||
C20055F8 0000000F #Common/GetIsFollower.asm
|
C20055F8 0000000F #Common/GetIsFollower.asm
|
||||||
7C0802A6 90010004
|
7C0802A6 90010004
|
||||||
9421FF20 BE8100B0
|
9421FF20 BE8100B0
|
||||||
|
@ -2039,11 +2044,6 @@ BA8100B0 800100E4
|
||||||
800100E4 382100E0
|
800100E4 382100E0
|
||||||
7C0803A6 2C1E0000
|
7C0803A6 2C1E0000
|
||||||
60000000 00000000
|
60000000 00000000
|
||||||
C21A4CB4 00000004 #Online/Core/EXIFileLoad/AllocBuffer.asm
|
|
||||||
38600080 3D808037
|
|
||||||
618CF1E4 7D8903A6
|
|
||||||
4E800421 906DAFC4
|
|
||||||
38000000 00000000
|
|
||||||
C20163FC 0000001B #Online/Core/EXIFileLoad/GetFileSize.asm
|
C20163FC 0000001B #Online/Core/EXIFileLoad/GetFileSize.asm
|
||||||
7C7E1B78 7C0802A6
|
7C7E1B78 7C0802A6
|
||||||
90010004 9421FF20
|
90010004 9421FF20
|
||||||
|
@ -2193,6 +2193,63 @@ C2019608 0000000F #Online/Core/Hacks/PreventPadAlarmDuringRollback.asm
|
||||||
618C9618 7D8903A6
|
618C9618 7D8903A6
|
||||||
4E800420 38600000
|
4E800420 38600000
|
||||||
60000000 00000000
|
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
|
C21D4578 00000003 #Online/Core/PreventFileAlarms/FreezeStadium.asm
|
||||||
FFE00890 3D80801D
|
FFE00890 3D80801D
|
||||||
618C4FD8 7D8903A6
|
618C4FD8 7D8903A6
|
||||||
|
|
|
@ -1021,6 +1021,11 @@ C208D698 00000005 #Recording/GetLCancelStatus/GetLCancelStatus.asm
|
||||||
C206C324 00000002 #Recording/GetLCancelStatus/ResetLCancelStatus.asm
|
C206C324 00000002 #Recording/GetLCancelStatus/ResetLCancelStatus.asm
|
||||||
38600000 987E25FF
|
38600000 987E25FF
|
||||||
807E00B0 00000000
|
807E00B0 00000000
|
||||||
|
C21A4CB4 00000004 #Common/AllocBuffer.asm
|
||||||
|
38600080 3D808037
|
||||||
|
618CF1E4 7D8903A6
|
||||||
|
4E800421 906DAFC4
|
||||||
|
38000000 00000000
|
||||||
C20055F8 0000000F #Common/GetIsFollower.asm
|
C20055F8 0000000F #Common/GetIsFollower.asm
|
||||||
7C0802A6 90010004
|
7C0802A6 90010004
|
||||||
9421FF20 BE8100B0
|
9421FF20 BE8100B0
|
||||||
|
@ -2040,11 +2045,6 @@ BA8100B0 800100E4
|
||||||
800100E4 382100E0
|
800100E4 382100E0
|
||||||
7C0803A6 2C1E0000
|
7C0803A6 2C1E0000
|
||||||
60000000 00000000
|
60000000 00000000
|
||||||
C21A4CB4 00000004 #Online/Core/EXIFileLoad/AllocBuffer.asm
|
|
||||||
38600080 3D808037
|
|
||||||
618CF1E4 7D8903A6
|
|
||||||
4E800421 906DAFC4
|
|
||||||
38000000 00000000
|
|
||||||
C20163FC 0000001B #Online/Core/EXIFileLoad/GetFileSize.asm
|
C20163FC 0000001B #Online/Core/EXIFileLoad/GetFileSize.asm
|
||||||
7C7E1B78 7C0802A6
|
7C7E1B78 7C0802A6
|
||||||
90010004 9421FF20
|
90010004 9421FF20
|
||||||
|
@ -2194,6 +2194,63 @@ C2019608 0000000F #Online/Core/Hacks/PreventPadAlarmDuringRollback.asm
|
||||||
618C9618 7D8903A6
|
618C9618 7D8903A6
|
||||||
4E800420 38600000
|
4E800420 38600000
|
||||||
60000000 00000000
|
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
|
C21D4578 00000003 #Online/Core/PreventFileAlarms/FreezeStadium.asm
|
||||||
FFE00890 3D80801D
|
FFE00890 3D80801D
|
||||||
618C4FD8 7D8903A6
|
618C4FD8 7D8903A6
|
||||||
|
|
|
@ -1020,6 +1020,11 @@ C208D698 00000005 #Recording/GetLCancelStatus/GetLCancelStatus.asm
|
||||||
C206C324 00000002 #Recording/GetLCancelStatus/ResetLCancelStatus.asm
|
C206C324 00000002 #Recording/GetLCancelStatus/ResetLCancelStatus.asm
|
||||||
38600000 987E25FF
|
38600000 987E25FF
|
||||||
807E00B0 00000000
|
807E00B0 00000000
|
||||||
|
C21A4CB4 00000004 #Common/AllocBuffer.asm
|
||||||
|
38600080 3D808037
|
||||||
|
618CF1E4 7D8903A6
|
||||||
|
4E800421 906DAFC4
|
||||||
|
38000000 00000000
|
||||||
C20055F8 0000000F #Common/GetIsFollower.asm
|
C20055F8 0000000F #Common/GetIsFollower.asm
|
||||||
7C0802A6 90010004
|
7C0802A6 90010004
|
||||||
9421FF20 BE8100B0
|
9421FF20 BE8100B0
|
||||||
|
@ -2039,11 +2044,6 @@ BA8100B0 800100E4
|
||||||
800100E4 382100E0
|
800100E4 382100E0
|
||||||
7C0803A6 2C1E0000
|
7C0803A6 2C1E0000
|
||||||
60000000 00000000
|
60000000 00000000
|
||||||
C21A4CB4 00000004 #Online/Core/EXIFileLoad/AllocBuffer.asm
|
|
||||||
38600080 3D808037
|
|
||||||
618CF1E4 7D8903A6
|
|
||||||
4E800421 906DAFC4
|
|
||||||
38000000 00000000
|
|
||||||
C20163FC 0000001B #Online/Core/EXIFileLoad/GetFileSize.asm
|
C20163FC 0000001B #Online/Core/EXIFileLoad/GetFileSize.asm
|
||||||
7C7E1B78 7C0802A6
|
7C7E1B78 7C0802A6
|
||||||
90010004 9421FF20
|
90010004 9421FF20
|
||||||
|
@ -2193,6 +2193,63 @@ C2019608 0000000F #Online/Core/Hacks/PreventPadAlarmDuringRollback.asm
|
||||||
618C9618 7D8903A6
|
618C9618 7D8903A6
|
||||||
4E800420 38600000
|
4E800420 38600000
|
||||||
60000000 00000000
|
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
|
C21D4578 00000003 #Online/Core/PreventFileAlarms/FreezeStadium.asm
|
||||||
FFE00890 3D80801D
|
FFE00890 3D80801D
|
||||||
618C4FD8 7D8903A6
|
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/ConfigManager.h"
|
||||||
#include "Core/System.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
|
namespace AudioCommon
|
||||||
{
|
{
|
||||||
constexpr int AUDIO_VOLUME_MIN = 0;
|
constexpr int AUDIO_VOLUME_MIN = 0;
|
||||||
|
|
|
@ -18,17 +18,6 @@ namespace Core
|
||||||
class System;
|
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
|
namespace AudioCommon
|
||||||
{
|
{
|
||||||
void InitSoundStream(Core::System& system);
|
void InitSoundStream(Core::System& system);
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
#include "VideoCommon/OnScreenDisplay.h"
|
#include "VideoCommon/OnScreenDisplay.h"
|
||||||
|
|
||||||
// The Rust library that houses a "shadow" EXI Device that we can call into.
|
// The Rust library that houses a "shadow" EXI Device that we can call into.
|
||||||
|
#include "EXI_DeviceSlippi.h"
|
||||||
#include "SlippiRustExtensions.h"
|
#include "SlippiRustExtensions.h"
|
||||||
|
|
||||||
#define FRAME_INTERVAL 900
|
#define FRAME_INTERVAL 900
|
||||||
|
@ -135,12 +136,6 @@ void OSDMessageHandler(const char* message, u32 color, u32 duration_ms)
|
||||||
OSD::AddMessage(msg, duration_ms, color);
|
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)
|
CEXISlippi::CEXISlippi(Core::System& system, const std::string current_file_name)
|
||||||
: IEXIDevice(system)
|
: IEXIDevice(system)
|
||||||
{
|
{
|
||||||
|
@ -3240,6 +3235,21 @@ void CEXISlippi::DMAWrite(u32 _uAddr, u32 _uSize)
|
||||||
case CMD_GET_PLAYER_SETTINGS:
|
case CMD_GET_PLAYER_SETTINGS:
|
||||||
handleGetPlayerSettings();
|
handleGetPlayerSettings();
|
||||||
break;
|
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:
|
default:
|
||||||
writeToFileAsync(&memPtr[bufLoc], payloadLen + 1, "");
|
writeToFileAsync(&memPtr[bufLoc], payloadLen + 1, "");
|
||||||
SlippiSpectateServer::getInstance().write(&memPtr[bufLoc], payloadLen + 1);
|
SlippiSpectateServer::getInstance().write(&memPtr[bufLoc], payloadLen + 1);
|
||||||
|
@ -3291,14 +3301,27 @@ void CEXISlippi::ConfigureJukebox()
|
||||||
}
|
}
|
||||||
#endif
|
#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(
|
int dolphin_music_volume = Config::Get(Config::SLIPPI_JUKEBOX_VOLUME);
|
||||||
slprs_exi_device_ptr, Config::Get(Config::SLIPPI_ENABLE_JUKEBOX), system.GetMemory().GetRAM(),
|
|
||||||
AudioCommonGetCurrentVolume, GetJukeboxVolume);
|
slprs_exi_device_configure_jukebox(slprs_exi_device_ptr,
|
||||||
|
Config::Get(Config::SLIPPI_ENABLE_JUKEBOX),
|
||||||
|
dolphin_system_volume, dolphin_music_volume);
|
||||||
#endif
|
#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
|
bool CEXISlippi::IsPresent() const
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -38,6 +38,8 @@ public:
|
||||||
void DMARead(u32 addr, u32 size) override;
|
void DMARead(u32 addr, u32 size) override;
|
||||||
|
|
||||||
void ConfigureJukebox();
|
void ConfigureJukebox();
|
||||||
|
void UpdateJukeboxDolphinSystemVolume(int volume);
|
||||||
|
void UpdateJukeboxDolphinMusicVolume(int volume);
|
||||||
|
|
||||||
bool IsPresent() const override;
|
bool IsPresent() const override;
|
||||||
|
|
||||||
|
@ -91,6 +93,9 @@ private:
|
||||||
CMD_GCT_LENGTH = 0xD3,
|
CMD_GCT_LENGTH = 0xD3,
|
||||||
CMD_GCT_LOAD = 0xD4,
|
CMD_GCT_LOAD = 0xD4,
|
||||||
CMD_GET_DELAY = 0xD5,
|
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_LENGTH = 0xE1,
|
||||||
CMD_PREMADE_TEXT_LOAD = 0xE2,
|
CMD_PREMADE_TEXT_LOAD = 0xE2,
|
||||||
};
|
};
|
||||||
|
@ -149,6 +154,10 @@ private:
|
||||||
{CMD_GCT_LENGTH, 0x0},
|
{CMD_GCT_LENGTH, 0x0},
|
||||||
{CMD_GCT_LOAD, 0x4},
|
{CMD_GCT_LOAD, 0x4},
|
||||||
{CMD_GET_DELAY, 0x0},
|
{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_LENGTH, 0x2},
|
||||||
{CMD_PREMADE_TEXT_LOAD, 0x2},
|
{CMD_PREMADE_TEXT_LOAD, 0x2},
|
||||||
};
|
};
|
||||||
|
|
|
@ -89,6 +89,19 @@ struct GetPlayerSettingsResponse
|
||||||
PlayerSettings settings[4];
|
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
|
// Not sure if resetting is strictly needed, might be contained to the file
|
||||||
#pragma pack()
|
#pragma pack()
|
||||||
|
|
||||||
|
@ -125,4 +138,13 @@ inline OverwriteSelectionsQuery Convert(u8* payload)
|
||||||
q.stage_id = Common::FromBigEndian(q.stage_id);
|
q.stage_id = Common::FromBigEndian(q.stage_id);
|
||||||
return q;
|
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
|
}; // namespace SlippiExiTypes
|
||||||
|
|
|
@ -28,6 +28,11 @@
|
||||||
#include "DolphinQt/Config/SettingsWindow.h"
|
#include "DolphinQt/Config/SettingsWindow.h"
|
||||||
#include "DolphinQt/Settings.h"
|
#include "DolphinQt/Settings.h"
|
||||||
|
|
||||||
|
#ifndef IS_PLAYBACK
|
||||||
|
#include "Core/HW/EXI/EXI.h"
|
||||||
|
#include "Core/HW/EXI/EXI_DeviceSlippi.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
AudioPane::AudioPane()
|
AudioPane::AudioPane()
|
||||||
{
|
{
|
||||||
CheckNeedForLatencyControl();
|
CheckNeedForLatencyControl();
|
||||||
|
@ -406,6 +411,19 @@ void AudioPane::OnVolumeChanged(int volume)
|
||||||
{
|
{
|
||||||
m_volume_slider->setValue(volume);
|
m_volume_slider->setValue(volume);
|
||||||
m_volume_indicator->setText(tr("%1%").arg(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()
|
void AudioPane::CheckNeedForLatencyControl()
|
||||||
|
|
|
@ -102,6 +102,8 @@ void GameCubePane::CreateWidgets()
|
||||||
m_slot_buttons[slot]->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
m_slot_buttons[slot]->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_slot_combos[ExpansionInterface::Slot::B]->setDisabled(true);
|
||||||
|
|
||||||
for (ExpansionInterface::Slot slot : ExpansionInterface::MEMCARD_SLOTS)
|
for (ExpansionInterface::Slot slot : ExpansionInterface::MEMCARD_SLOTS)
|
||||||
{
|
{
|
||||||
m_memcard_path_layouts[slot] = new QHBoxLayout();
|
m_memcard_path_layouts[slot] = new QHBoxLayout();
|
||||||
|
|
|
@ -9,12 +9,12 @@
|
||||||
#include "Core/Config/MainSettings.h"
|
#include "Core/Config/MainSettings.h"
|
||||||
#include "Core/ConfigManager.h"
|
#include "Core/ConfigManager.h"
|
||||||
#include "Core/Core.h"
|
#include "Core/Core.h"
|
||||||
#include "Core/HW/EXI/EXI.h"
|
|
||||||
#include "Core/System.h"
|
#include "Core/System.h"
|
||||||
|
|
||||||
#include "DolphinQt/QtUtils/NonDefaultQPushButton.h"
|
#include "DolphinQt/QtUtils/NonDefaultQPushButton.h"
|
||||||
|
|
||||||
#ifndef IS_PLAYBACK
|
#ifndef IS_PLAYBACK
|
||||||
|
#include "Core/HW/EXI/EXI.h"
|
||||||
#include "Core/HW/EXI/EXI_DeviceSlippi.h"
|
#include "Core/HW/EXI/EXI_DeviceSlippi.h"
|
||||||
#include "SlippiPane.h"
|
#include "SlippiPane.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -161,7 +161,7 @@ void SlippiPane::CreateLayout()
|
||||||
m_music_volume_percent->setFixedWidth(40);
|
m_music_volume_percent->setFixedWidth(40);
|
||||||
|
|
||||||
sfx_music_slider_layout->addWidget(music_volume_label, 1, 0);
|
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);
|
sfx_music_slider_layout->addWidget(m_music_volume_percent, 1, 2);
|
||||||
|
|
||||||
jukebox_settings_layout->addLayout(sfx_music_slider_layout);
|
jukebox_settings_layout->addLayout(sfx_music_slider_layout);
|
||||||
|
@ -190,6 +190,7 @@ void SlippiPane::CreateLayout()
|
||||||
|
|
||||||
void SlippiPane::LoadConfig()
|
void SlippiPane::LoadConfig()
|
||||||
{
|
{
|
||||||
|
#ifndef IS_PLAYBACK
|
||||||
// Replay Settings
|
// Replay Settings
|
||||||
auto save_replays = Config::Get(Config::SLIPPI_SAVE_REPLAYS);
|
auto save_replays = Config::Get(Config::SLIPPI_SAVE_REPLAYS);
|
||||||
m_save_replays->setChecked(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_percent->setText(tr(" %1%").arg(jukebox_volume));
|
||||||
|
|
||||||
m_music_volume_slider->setDisabled(!enable_jukebox);
|
m_music_volume_slider->setDisabled(!enable_jukebox);
|
||||||
|
#else
|
||||||
|
// HOOKUP PLAYBACK STUFF
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void SlippiPane::ConnectLayout()
|
void SlippiPane::ConnectLayout()
|
||||||
{
|
{
|
||||||
|
#ifndef IS_PLAYBACK
|
||||||
// Replay Settings
|
// Replay Settings
|
||||||
connect(m_save_replays, &QCheckBox::toggled, this, &SlippiPane::SetSaveReplays);
|
connect(m_save_replays, &QCheckBox::toggled, this, &SlippiPane::SetSaveReplays);
|
||||||
connect(m_monthly_replay_folders, &QCheckBox::toggled, this,
|
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_enable_jukebox, &QCheckBox::toggled, this, &SlippiPane::ToggleJukebox);
|
||||||
connect(m_music_volume_slider, qOverload<int>(&QSlider::valueChanged), this,
|
connect(m_music_volume_slider, qOverload<int>(&QSlider::valueChanged), this,
|
||||||
&SlippiPane::OnMusicVolumeUpdate);
|
&SlippiPane::OnMusicVolumeUpdate);
|
||||||
|
#else
|
||||||
|
// HOOKUP PLAYBACK STUFF
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void SlippiPane::SetSaveReplays(bool checked)
|
void SlippiPane::SetSaveReplays(bool checked)
|
||||||
|
@ -293,6 +301,16 @@ void SlippiPane::OnMusicVolumeUpdate(int volume)
|
||||||
{
|
{
|
||||||
Config::SetBase(Config::SLIPPI_JUKEBOX_VOLUME, volume);
|
Config::SetBase(Config::SLIPPI_JUKEBOX_VOLUME, volume);
|
||||||
m_music_volume_percent->setText(tr(" %1%").arg(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()
|
void SlippiPane::OnSaveConfig()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue