mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-22 16:43:05 -05:00
libSceCesCs goes to 17 of 17: three-byte EUC-JP JIS X 0212 (0x8F) characters convert through a table read from the Unicode consortium's JIS0212.TXT, both directions, so sceCesEucJpToUcs2, the MbcsStrTo* and *Get*Len forms and the context conversions accept them, and a character with cells in both JIS X 0208 and JIS X 0212 still encodes to the two-byte form. sceCesRefersUcsProfileCp1250 returns a profile with the Windows-1250 table of Microsoft's bestfit1250.txt, accepted by the SBC and context conversions. The AudioOut HDMI bitstream Sys family follows the Ex ports: SysOpen opens a port only for mode 5, the TrueHD MAT route EVO-PLAYER-PS5 reads from the firmware 12.70 mode tables, paced at 192 kHz with no host device; SysConfigureOutput accepts the observed HDMI MAT switch; SysClose closes a Sys port. sceAudioOut2MasteringGetState fills the states by states id with the descriptors KytyPS5 declares, SetParam answers a null parameter with the mastering invalid-API-parameter error, Set3DLatency follows KytyPS5's output validation (0x80268001 above 2, any user), SetSystemDebugState records the debug state id, and GetSpeakerArrayCoefficients returns the front pair KytyPS5 and prosper both return. sceAudioInOpen accepts param 0x10 as float mono like KytyPS5; HqOpen answers a longer grain or a lower rate with the invalid-size and invalid-frequency errors; AsyncOpen also accepts the 384-sample grain SharpProspero documents. sceGameUpdateGetAddcontLatestVersion answers a null entitlement label with 0x80412803, as prosper does.
47 lines
1.5 KiB
C++
47 lines
1.5 KiB
C++
#include <atomic>
|
|
#include <cstdint>
|
|
#include "SceTypes.hpp"
|
|
#include "prx/libc/include/General.hpp"
|
|
#include "AudioOut2Internal.hpp"
|
|
|
|
static constexpr std::uint32_t MAX_SUPPORTED_3D_OUTPUT = 2;
|
|
static constexpr int SCE_AUDIO_OUT2_ERROR_INVALID_PARAM = static_cast<int>(0x80268001);
|
|
|
|
static std::atomic<bool> g_chatEnabled{false};
|
|
|
|
extern "C" {
|
|
|
|
int APS5_VABI sceAudioOut2Initialize(void) {
|
|
return 0;
|
|
}
|
|
|
|
int APS5_VABI sceAudioOut2Set3DLatency(int userId, std::uint32_t output) {
|
|
(void)userId;
|
|
if (output > MAX_SUPPORTED_3D_OUTPUT) return SCE_AUDIO_OUT2_ERROR_INVALID_PARAM;
|
|
return 0;
|
|
}
|
|
|
|
int APS5_VABI sceAudioOut2GetSystemState(AudioOut2SystemState* state) {
|
|
if (!state) return static_cast<int>(0x80260502);
|
|
state->loudness = 0.0f;
|
|
return 0;
|
|
}
|
|
|
|
int APS5_VABI sceAudioOut2SetSystemDebugState(const AudioOut2SystemDebugStateParam* param) {
|
|
if (param == nullptr) return static_cast<int>(0x80260502);
|
|
AUDIOOUT2_TRACE("t=%.3f SetSystemDebugState: debug state %u recorded; the host has no system mix to apply it to\n", AudioOut2TraceSeconds(), param->debug_state_id);
|
|
return 0;
|
|
}
|
|
|
|
int APS5_VABI sceAudioOut2EnableChat(void) {
|
|
if (!g_chatEnabled.exchange(true)) AUDIOOUT2_TRACE("t=%.3f EnableChat: chat audio is allowed alongside the title's; the host mixes no chat audio\n", AudioOut2TraceSeconds());
|
|
return 0;
|
|
}
|
|
|
|
int APS5_VABI sceAudioOut2DisableChat(void) {
|
|
if (g_chatEnabled.exchange(false)) AUDIOOUT2_TRACE("t=%.3f DisableChat: chat audio is no longer allowed alongside the title's\n", AudioOut2TraceSeconds());
|
|
return 0;
|
|
}
|
|
|
|
}
|