Commit Graph

275 Commits

Author SHA1 Message Date
Zephyron
d59eb9a1a8 Add Firmware 20.0.0-21.0.0 IPC support and stubs
This commit implements comprehensive firmware 20.0.0 through 21.0.0
support for Citron, including:

- Updated firmware version constants to 21.0.0 in api_version.h
- Updated HID service firmware version string to 21.0.0
- Added IPC command stubs for firmware 20.0.0+ in:
  * ISystemSettingsServer (commands 263, 264, 282, 283, 289, 300, 301, 306, 307)
  * IFirmwareDebugSettingsServer (command 24)
  * IApplicationFunctions (command 330)
  * IOlscServiceForSystemService (command 914)
  * IRemoteStorageController (commands 28, 901)
  * IService (migration) (commands 2250, 2260)
  * IAudioController (command 10200)

- Created new service interfaces with proper stubs:
  * IContinuousRecorder (grcsrv) - command 5 [20.2.0+] with 0x20-byte input
  * IDownloadContext (news) - command 4 [20.0.0+]
  * INotifyService (pdm:ntfy) - commands 100, 101 [20.0.0+] returning outinterfaces

- Added all new source files to CMakeLists.txt build system
- Fixed logging tag usage (Service_Migration instead of Service_MIG)
- Added required CMIF serialization headers for proper template instantiation

All stubs return success explicitly, eliminating the need for auto-stubbing.
All implementations follow Switchbrew documentation as closely as possible.

Based on Switchbrew documentation:
- https://switchbrew.org/wiki/21.0.0
- https://switchbrew.org/wiki/20.5.0
- https://switchbrew.org/wiki/20.4.0
- https://switchbrew.org/wiki/20.3.0
- https://switchbrew.org/wiki/20.2.0
- https://switchbrew.org/wiki/20.1.5
- https://switchbrew.org/wiki/20.1.1
- https://switchbrew.org/wiki/20.1.0
- https://switchbrew.org/wiki/20.0.1
- https://switchbrew.org/wiki/20.0.0

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-11-11 18:52:10 +10:00
Zephyron
eb4da7a78c audio: Implement missing audio services and functions
New Services Added:
- auddev (IAudioSnoopManager) - Audio development/debugging service [6.0.0+]
  * EnableDspUsageMeasurement/GetDspStatistics with firmware version switching
  * DisableDspUsageMeasurement/GetAppletStateSummaries with firmware version switching
  * SetDspStatisticsParameter/GetDspStatisticsParameter [20.0.0+]
  * GetDspUsage [6.0.0-16.1.0]

- aud:a (IAudioSystemManagerForApplet) - System audio manager for applets [11.0.0+]
  * Applet resource user ID registration/management
  * Audio suspend/resume functionality
  * Per-applet volume controls (output/input/record)
  * GetAppletStateSummaries [18.0.0-19.0.1]

- aud:d (IAudioSystemManagerForDebugger) - System audio manager for debugging [11.0.0+]
  * RequestSuspendAudioForDebug/RequestResumeAudioForDebug

Enhanced Existing Services:
- audctl (IAudioController) - Added missing [19.0.0+] functions:
  * OverrideDefaultTargetForDebug [19.0.0-19.0.1]
  * SetForceOverrideExternalDeviceNameForDebug [19.0.0+]
  * ClearForceOverrideExternalDeviceNameForDebug [19.0.0+]
  * Fixed GetSystemInformationForDebug buffer handling

- IAudioDevice - Added missing [17.0.0+] and [18.0.0+] functions:
  * AcquireAudioInputDeviceNotification/ReleaseAudioInputDeviceNotification [17.0.0+]
  * AcquireAudioOutputDeviceNotification/ReleaseAudioOutputDeviceNotification [17.0.0+]
  * SetAudioDeviceOutputVolumeAutoTuneEnabled/IsAudioDeviceOutputVolumeAutoTuneEnabled [18.0.0+]

Technical Changes:
- Updated service registration in audio.cpp to replace placeholder services
- Added proper CMIF buffer handling with std::array<u8, SIZE> for InLargeData/OutLargeData
- Added firmware version annotations matching switchbrew documentation
- Implemented proper state management for all new services
- Added comprehensive error handling and logging

This implementation provides complete audio service coverage including the specifically requested GetDspStatisticsParameter function and numerous other missing functions that games expect to be available.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-07-10 18:00:59 +10:00
Zephyron
238e8282b2 hle/service/audio: Implement missing audio services and functions
- Add complete IAudioController implementation with 32 missing functions:
  * Volume control (GetTargetVolume, SetTargetVolume, etc.)
  * Mute control (IsTargetMute, SetTargetMute, etc.)
  * Target management (SetDefaultTarget, GetDefaultTarget, etc.)
  * Play report functions (10000+ series command IDs)
  * Hearing protection safeguard functions
  * Debug and system functions

- Add new audio services:
  * codecctl - Codec controller service with 13 functions
  * auddebug - Audio debug service placeholder
  * Device suspend/resume services (audout:d, audin:d, audrec:d, audren:d)
  * System audio services (aud:a, aud:d)
  * Applet audio services (audout:a, audin:a, audren:a)

- Update IAudioDevice with missing functions:
  * GetAudioSystemMasterVolumeSetting
  * GetActiveAudioOutputDeviceName
  * Fix function ID mappings to match official documentation

- Register all services in main audio LoopProcess function
- Update CMakeLists.txt with new source files

All implementations follow the official Switch audio services documentation
from switchbrew.org and provide appropriate stub implementations with
sensible default values for enhanced game compatibility.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-05-24 16:39:15 +10:00
Narr the Reg
0a0c257206 service: audio: Add missing logging properties of SetHeadphoneOutputLevelMode 2024-02-23 18:58:51 -06:00
Liam
c04567fad4 audio: add NotifyHeadphoneVolumeWarningDisplayedEvent 2024-02-21 23:54:10 -05:00
Liam
2e4a6b7f92 audio: format 2024-02-20 22:51:39 -05:00
Liam
5f90bd88da audio: rewrite IHardwareOpusDecoder 2024-02-20 22:15:38 -05:00
Liam
c575a85233 audio: rewrite IAudioDevice 2024-02-20 22:15:38 -05:00
Liam
ea4703cb31 audio: rewrite IHardwareOpusDecoderManager 2024-02-20 22:15:38 -05:00
Liam
0471e54e5a audio: rewrite IAudioRenderer 2024-02-20 22:15:38 -05:00
Liam
6012c9fe3a audio: rewrite IAudioRendererManager 2024-02-20 22:15:37 -05:00
Liam
f65539504f audio: split IHardwarweOpusDecoder, move IHardwareOpusDecoderManager 2024-02-20 22:15:37 -05:00
Liam
62083fcafd audio: split IAudioDevice, IAudioRenderer, move IAudioRendererManager 2024-02-20 22:15:37 -05:00
Liam
2e5a9cf119 audio: move IFinalOutputRecorderManager{,ForApplet} 2024-02-20 22:15:37 -05:00
Liam
a45b8bc9bc audio: rewrite IAudioOutManager 2024-02-20 22:15:37 -05:00
Liam
a05bd3c47e audio: rewrite IAudioOut 2024-02-20 22:15:37 -05:00
Liam
2a2c92f181 audio: rewrite IAudioInManager 2024-02-20 22:15:37 -05:00
Liam
f54277364c audio: rewrite IAudioIn 2024-02-20 22:15:37 -05:00
Narr the Reg
4cbafc1ef6 service: audio: Rewrite IAudioController to new IPC 2024-02-17 15:05:13 -06:00
Narr the Reg
caf16982d9 service: set: Migrate ISystemSettingsServer to new IPC 2024-02-14 12:40:10 -06:00
liamwhite
5561a08d59 Merge pull request #12831 from Kelebek1/audren_multi
Use the input process handle to get the correct application's memory
2024-01-28 15:02:22 -05:00
Kelebek1
19a2f12692 Use the input process handle to get the correct application's memory 2024-01-28 18:51:43 +00:00
german77
12e7ee2357 service: set: Implement more Qlaunch Settings 2024-01-28 09:32:46 -06:00
FearlessTobi
54372fdff5 result: Make fully constexpr, add ON_RESULT_INCLUDED 2024-01-25 16:42:06 -05:00
Liam
d940974789 audio: fetch process object from handle table 2024-01-12 10:03:16 -05:00
Liam
5165ed9efd service: fetch objects from the client handle table 2023-12-24 19:20:43 -05:00
Kelebek1
ffbba74c91 Have GetActiveChannelCount return the system channels instead of host device channels 2023-12-16 12:49:28 -05:00
Kelebek1
67e2d5c28b Reimplement HardwareOpus 2023-09-16 11:56:25 -04:00
Kelebek1
ebd19dec99 Rework ADSP into a wrapper for apps 2023-09-04 17:12:16 +01:00
FearlessTobi
a7a5835ffb hwopus: Implement GetWorkBufferSizeExEx
Allows Sea of Stars to boot.

Fixes https://github.com/yuzu-emu/yuzu/issues/11415.
2023-08-30 18:29:43 +02:00
FearlessTobi
c2f827b85e hwopus: Implement OpenHardwareOpusDecoderForMultiStreamEx and DecodeInterleavedForMultiStream
Allows MLB The Show 22 to boot.

Fixes https://github.com/yuzu-emu/yuzu/issues/7911.
2023-08-27 18:03:10 +02:00
german77
8d2f0dc707 service: audctl: Stub functions needed by Qlaunch 2023-08-05 20:16:26 -06:00
Morph
9bca45aa15 audren_u: Fix parameter alignment
The reduction in size from 0x38 to 0x34 caused the parameter to be misaligned. Skipping 1 word fixes this.
2023-07-31 18:40:16 -04:00
Morph
310b6cf4af general: Use ScratchBuffer where possible 2023-06-30 21:49:59 -04:00
Kelebek1
5da70f7197 Remove memory allocations in some hot paths 2023-06-22 08:05:10 +01:00
FengChen
55a33342cc core: audio: return result when audio_out initialize failed 2023-04-16 12:31:54 +08:00
Liam
1d0fe75e7c hle: rename legacy errors to Results 2023-03-06 20:58:42 -05:00
Liam
65be230fdd service: move hle_ipc from kernel 2023-03-01 10:39:49 -05:00
liamwhite
97f7a560f3 Merge pull request #9832 from liamwhite/hle-mp
service: HLE multiprocess
2023-03-01 10:38:20 -05:00
Narr the Reg
39ca7b2928 core: Update service function tables to 16.0.0+ 2023-02-24 18:17:36 -06:00
Liam
a936972614 service: refactor server architecture
Converts services to have their own processes
2023-02-21 12:19:25 -05:00
liamwhite
6d77de96da Merge pull request #9796 from liamwhite/current
general: rename CurrentProcess to ApplicationProcess
2023-02-15 17:42:45 -05:00
Liam
79fbdfca17 service: remove deleted services 2023-02-14 12:38:21 -05:00
Liam
ceda2d280e general: rename CurrentProcess to ApplicationProcess 2023-02-13 19:03:12 -05:00
ameerj
2d2522693e Revert "Merge pull request #9718 from yuzu-emu/revert-9508-hle-ipc-buffer-span"
This reverts commit 25fc5c0e11, reversing
changes made to af20e25081.
2023-02-03 00:08:45 -05:00
liamwhite
b01698775b Revert "hle_ipc: Use std::span to avoid heap allocations/copies when calling ReadBuffer" 2023-02-02 15:53:28 -05:00
ameerj
a1490d77ac hle_ipc: Rename ReadBufferSpan to ReadBuffer 2022-12-28 18:46:54 -05:00
ameerj
7ffd624248 service: Use ReadBufferSpan where it is trivial to do so 2022-12-25 17:04:02 -05:00
bunnei
beba9c9b61 Revert "hle: service: audio: Use default service thread." 2022-12-14 14:57:33 -08:00
liamwhite
3b9db85646 Merge pull request #9232 from bunnei/audio-default-thread
hle: service: audio: Use default service thread.
2022-12-04 15:31:40 -05:00