Add option to force audio routing to speakers, closes #1837
Also refactor ini file a little bit
This commit is contained in:
parent
89f77db986
commit
ef1072f996
Binary file not shown.
@ -65,7 +65,6 @@ static const char *singleOptionIniNamesBoot[] = {
|
|||||||
"app_syscore_threads_on_core_2",
|
"app_syscore_threads_on_core_2",
|
||||||
"show_system_settings_string",
|
"show_system_settings_string",
|
||||||
"show_gba_boot_screen",
|
"show_gba_boot_screen",
|
||||||
"force_headphone_output",
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *singleOptionIniNamesMisc[] = {
|
static const char *singleOptionIniNamesMisc[] = {
|
||||||
@ -409,10 +408,31 @@ static int configIniHandler(void* user, const char* section, const char* name, c
|
|||||||
CHECK_PARSE_OPTION(-1);
|
CHECK_PARSE_OPTION(-1);
|
||||||
}
|
}
|
||||||
} else if (strcmp(name, "autoboot_mode") == 0) {
|
} else if (strcmp(name, "autoboot_mode") == 0) {
|
||||||
s64 opt;
|
if (strcasecmp(value, "off") == 0) {
|
||||||
CHECK_PARSE_OPTION(parseDecIntOption(&opt, value, 0, 2));
|
cfg->multiConfig |= 0 << (2 * (u32)AUTOBOOTMODE);
|
||||||
cfg->multiConfig |= (u32)opt << (2 * (u32)AUTOBOOTMODE);
|
return 1;
|
||||||
return 1;
|
} else if (strcasecmp(value, "3ds") == 0) {
|
||||||
|
cfg->multiConfig |= 1 << (2 * (u32)AUTOBOOTMODE);
|
||||||
|
return 1;
|
||||||
|
} else if (strcasecmp(value, "dsi") == 0) {
|
||||||
|
cfg->multiConfig |= 2 << (2 * (u32)AUTOBOOTMODE);
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
CHECK_PARSE_OPTION(-1);
|
||||||
|
}
|
||||||
|
} else if (strcmp(name, "force_audio_output") == 0) {
|
||||||
|
if (strcasecmp(value, "off") == 0) {
|
||||||
|
cfg->multiConfig |= 0 << (2 * (u32)FORCEAUDIOOUTPUT);
|
||||||
|
return 1;
|
||||||
|
} else if (strcasecmp(value, "headphones") == 0) {
|
||||||
|
cfg->multiConfig |= 1 << (2 * (u32)FORCEAUDIOOUTPUT);
|
||||||
|
return 1;
|
||||||
|
} else if (strcasecmp(value, "speakers") == 0) {
|
||||||
|
cfg->multiConfig |= 2 << (2 * (u32)FORCEAUDIOOUTPUT);
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
CHECK_PARSE_OPTION(-1);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
CHECK_PARSE_OPTION(-1);
|
CHECK_PARSE_OPTION(-1);
|
||||||
}
|
}
|
||||||
@ -529,6 +549,8 @@ static size_t saveLumaIniConfigToStr(char *out)
|
|||||||
|
|
||||||
const char *splashPosStr;
|
const char *splashPosStr;
|
||||||
const char *n3dsCpuStr;
|
const char *n3dsCpuStr;
|
||||||
|
const char *autobootModeStr;
|
||||||
|
const char *forceAudioOutputStr;
|
||||||
|
|
||||||
switch (MULTICONFIG(SPLASH)) {
|
switch (MULTICONFIG(SPLASH)) {
|
||||||
default: case 0: splashPosStr = "off"; break;
|
default: case 0: splashPosStr = "off"; break;
|
||||||
@ -543,6 +565,18 @@ static size_t saveLumaIniConfigToStr(char *out)
|
|||||||
case 3: n3dsCpuStr = "clock+l2"; break;
|
case 3: n3dsCpuStr = "clock+l2"; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch (MULTICONFIG(AUTOBOOTMODE)) {
|
||||||
|
default: case 0: autobootModeStr = "off"; break;
|
||||||
|
case 1: autobootModeStr = "3ds"; break;
|
||||||
|
case 2: autobootModeStr = "dsi"; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (MULTICONFIG(FORCEAUDIOOUTPUT)) {
|
||||||
|
default: case 0: forceAudioOutputStr = "off"; break;
|
||||||
|
case 1: forceAudioOutputStr = "headphones"; break;
|
||||||
|
case 2: forceAudioOutputStr = "speakers"; break;
|
||||||
|
}
|
||||||
|
|
||||||
if (VERSION_BUILD != 0) {
|
if (VERSION_BUILD != 0) {
|
||||||
sprintf(lumaVerStr, "Luma3DS v%d.%d.%d", (int)VERSION_MAJOR, (int)VERSION_MINOR, (int)VERSION_BUILD);
|
sprintf(lumaVerStr, "Luma3DS v%d.%d.%d", (int)VERSION_MAJOR, (int)VERSION_MINOR, (int)VERSION_BUILD);
|
||||||
} else {
|
} else {
|
||||||
@ -582,11 +616,12 @@ static size_t saveLumaIniConfigToStr(char *out)
|
|||||||
(int)CONFIG(AUTOBOOTEMU), (int)CONFIG(USEEMUFIRM),
|
(int)CONFIG(AUTOBOOTEMU), (int)CONFIG(USEEMUFIRM),
|
||||||
(int)CONFIG(LOADEXTFIRMSANDMODULES), (int)CONFIG(PATCHGAMES),
|
(int)CONFIG(LOADEXTFIRMSANDMODULES), (int)CONFIG(PATCHGAMES),
|
||||||
(int)CONFIG(REDIRECTAPPTHREADS), (int)CONFIG(PATCHVERSTRING),
|
(int)CONFIG(REDIRECTAPPTHREADS), (int)CONFIG(PATCHVERSTRING),
|
||||||
(int)CONFIG(SHOWGBABOOT), (int)CONFIG(FORCEHEADPHONEOUTPUT),
|
(int)CONFIG(SHOWGBABOOT),
|
||||||
|
|
||||||
1 + (int)MULTICONFIG(DEFAULTEMU), 4 - (int)MULTICONFIG(BRIGHTNESS),
|
1 + (int)MULTICONFIG(DEFAULTEMU), 4 - (int)MULTICONFIG(BRIGHTNESS),
|
||||||
splashPosStr, (unsigned int)cfg->splashDurationMsec,
|
splashPosStr, (unsigned int)cfg->splashDurationMsec,
|
||||||
pinNumDigits, n3dsCpuStr, (int)MULTICONFIG(AUTOBOOTMODE),
|
pinNumDigits, n3dsCpuStr,
|
||||||
|
autobootModeStr, forceAudioOutputStr,
|
||||||
|
|
||||||
cfg->hbldr3dsxTitleId, rosalinaMenuComboStr,
|
cfg->hbldr3dsxTitleId, rosalinaMenuComboStr,
|
||||||
(int)cfg->ntpTzOffetMinutes,
|
(int)cfg->ntpTzOffetMinutes,
|
||||||
@ -751,6 +786,7 @@ void configMenu(bool oldPinStatus, u32 oldPinMode)
|
|||||||
"PIN lock: Off( ) 4( ) 6( ) 8( ) digits",
|
"PIN lock: Off( ) 4( ) 6( ) 8( ) digits",
|
||||||
"New 3DS CPU: Off( ) Clock( ) L2( ) Clock+L2( )",
|
"New 3DS CPU: Off( ) Clock( ) L2( ) Clock+L2( )",
|
||||||
"Homebrew autoboot: Off( ) 3DS( ) DSi( )",
|
"Homebrew autoboot: Off( ) 3DS( ) DSi( )",
|
||||||
|
"Force audio: Off( ) Headphones( ) Speakers( )"
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *singleOptionsText[] = { "( ) Autoboot EmuNAND",
|
static const char *singleOptionsText[] = { "( ) Autoboot EmuNAND",
|
||||||
@ -802,6 +838,15 @@ void configMenu(bool oldPinStatus, u32 oldPinMode)
|
|||||||
"configuration file to configure\n"
|
"configuration file to configure\n"
|
||||||
"this feature.",
|
"this feature.",
|
||||||
|
|
||||||
|
"Force audio output to HPs or speakers.\n\n"
|
||||||
|
"Currently only for NATIVE_FIRM.\n\n"
|
||||||
|
"Due to software limitations, this gets\n"
|
||||||
|
"undone if you actually insert then\n"
|
||||||
|
"remove HPs (just enter then exit sleep\n"
|
||||||
|
"mode if this happens).\n\n"
|
||||||
|
"Also gets bypassed for camera shutter\n"
|
||||||
|
"sound.",
|
||||||
|
|
||||||
"If enabled, an EmuNAND\n"
|
"If enabled, an EmuNAND\n"
|
||||||
"will be launched on boot.\n\n"
|
"will be launched on boot.\n\n"
|
||||||
"Otherwise, SysNAND will.\n\n"
|
"Otherwise, SysNAND will.\n\n"
|
||||||
@ -859,15 +904,6 @@ void configMenu(bool oldPinStatus, u32 oldPinMode)
|
|||||||
|
|
||||||
"Enable showing the GBA boot screen\n"
|
"Enable showing the GBA boot screen\n"
|
||||||
"when booting GBA games.",
|
"when booting GBA games.",
|
||||||
|
|
||||||
"Force audio output to headphones.\n\n"
|
|
||||||
"Currently only for NATIVE_FIRM.\n\n"
|
|
||||||
"Due to software limitations, this gets\n"
|
|
||||||
"undone if you actually insert then\n"
|
|
||||||
"remove HPs (just enter then exit sleep\n"
|
|
||||||
"mode if this happens).\n\n"
|
|
||||||
"Also gets bypassed for camera shutter\n"
|
|
||||||
"sound.",
|
|
||||||
};
|
};
|
||||||
|
|
||||||
FirmwareSource nandType = FIRMWARE_SYSNAND;
|
FirmwareSource nandType = FIRMWARE_SYSNAND;
|
||||||
@ -889,6 +925,7 @@ void configMenu(bool oldPinStatus, u32 oldPinMode)
|
|||||||
{ .visible = true },
|
{ .visible = true },
|
||||||
{ .visible = ISN3DS },
|
{ .visible = ISN3DS },
|
||||||
{ .visible = true },
|
{ .visible = true },
|
||||||
|
{ .visible = true },
|
||||||
};
|
};
|
||||||
|
|
||||||
struct singleOption {
|
struct singleOption {
|
||||||
@ -903,7 +940,6 @@ void configMenu(bool oldPinStatus, u32 oldPinMode)
|
|||||||
{ .visible = ISN3DS },
|
{ .visible = ISN3DS },
|
||||||
{ .visible = true },
|
{ .visible = true },
|
||||||
{ .visible = true },
|
{ .visible = true },
|
||||||
{ .visible = true },
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//Calculate the amount of the various kinds of options and pre-select the first single one
|
//Calculate the amount of the various kinds of options and pre-select the first single one
|
||||||
|
@ -34,9 +34,9 @@
|
|||||||
#define MULTICONFIG(a) ((configData.multiConfig >> (2 * (a))) & 3)
|
#define MULTICONFIG(a) ((configData.multiConfig >> (2 * (a))) & 3)
|
||||||
#define BOOTCONFIG(a, b) ((configData.bootConfig >> (a)) & (b))
|
#define BOOTCONFIG(a, b) ((configData.bootConfig >> (a)) & (b))
|
||||||
|
|
||||||
#define CONFIG_FILE "config.bin"
|
#define CONFIG_FILE "config.ini"
|
||||||
#define CONFIG_VERSIONMAJOR 3
|
#define CONFIG_VERSIONMAJOR 3
|
||||||
#define CONFIG_VERSIONMINOR 5
|
#define CONFIG_VERSIONMINOR 6
|
||||||
|
|
||||||
#define BOOTCFG_NAND BOOTCONFIG(0, 7)
|
#define BOOTCFG_NAND BOOTCONFIG(0, 7)
|
||||||
#define BOOTCFG_FIRM BOOTCONFIG(3, 7)
|
#define BOOTCFG_FIRM BOOTCONFIG(3, 7)
|
||||||
@ -51,6 +51,7 @@ enum multiOptions
|
|||||||
PIN,
|
PIN,
|
||||||
NEWCPU,
|
NEWCPU,
|
||||||
AUTOBOOTMODE,
|
AUTOBOOTMODE,
|
||||||
|
FORCEAUDIOOUTPUT,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum singleOptions
|
enum singleOptions
|
||||||
@ -62,7 +63,6 @@ enum singleOptions
|
|||||||
REDIRECTAPPTHREADS,
|
REDIRECTAPPTHREADS,
|
||||||
PATCHVERSTRING,
|
PATCHVERSTRING,
|
||||||
SHOWGBABOOT,
|
SHOWGBABOOT,
|
||||||
FORCEHEADPHONEOUTPUT,
|
|
||||||
PATCHUNITINFO,
|
PATCHUNITINFO,
|
||||||
DISABLEARM11EXCHANDLERS,
|
DISABLEARM11EXCHANDLERS,
|
||||||
ENABLESAFEFIRMROSALINA,
|
ENABLESAFEFIRMROSALINA,
|
||||||
|
@ -22,6 +22,7 @@ enum multiOptions
|
|||||||
PIN,
|
PIN,
|
||||||
NEWCPU,
|
NEWCPU,
|
||||||
AUTOBOOTMODE,
|
AUTOBOOTMODE,
|
||||||
|
FORCEAUDIOOUTPUT,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum singleOptions
|
enum singleOptions
|
||||||
@ -33,7 +34,6 @@ enum singleOptions
|
|||||||
REDIRECTAPPTHREADS,
|
REDIRECTAPPTHREADS,
|
||||||
PATCHVERSTRING,
|
PATCHVERSTRING,
|
||||||
SHOWGBABOOT,
|
SHOWGBABOOT,
|
||||||
FORCEHEADPHONEOUTPUT,
|
|
||||||
PATCHUNITINFO,
|
PATCHUNITINFO,
|
||||||
DISABLEARM11EXCHANDLERS,
|
DISABLEARM11EXCHANDLERS,
|
||||||
ENABLESAFEFIRMROSALINA,
|
ENABLESAFEFIRMROSALINA,
|
||||||
|
@ -25,6 +25,7 @@ enum multiOptions
|
|||||||
PIN,
|
PIN,
|
||||||
NEWCPU,
|
NEWCPU,
|
||||||
AUTOBOOTMODE,
|
AUTOBOOTMODE,
|
||||||
|
FORCEAUDIOOUTPUT,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum singleOptions
|
enum singleOptions
|
||||||
@ -36,7 +37,6 @@ enum singleOptions
|
|||||||
REDIRECTAPPTHREADS,
|
REDIRECTAPPTHREADS,
|
||||||
PATCHVERSTRING,
|
PATCHVERSTRING,
|
||||||
SHOWGBABOOT,
|
SHOWGBABOOT,
|
||||||
FORCEHEADPHONEOUTPUT,
|
|
||||||
PATCHUNITINFO,
|
PATCHUNITINFO,
|
||||||
DISABLEARM11EXCHANDLERS,
|
DISABLEARM11EXCHANDLERS,
|
||||||
ENABLESAFEFIRMROSALINA,
|
ENABLESAFEFIRMROSALINA,
|
||||||
|
@ -19,6 +19,7 @@ enum multiOptions
|
|||||||
PIN,
|
PIN,
|
||||||
NEWCPU,
|
NEWCPU,
|
||||||
AUTOBOOTMODE,
|
AUTOBOOTMODE,
|
||||||
|
FORCEAUDIOOUTPUT,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum singleOptions
|
enum singleOptions
|
||||||
@ -30,7 +31,6 @@ enum singleOptions
|
|||||||
REDIRECTAPPTHREADS,
|
REDIRECTAPPTHREADS,
|
||||||
PATCHVERSTRING,
|
PATCHVERSTRING,
|
||||||
SHOWGBABOOT,
|
SHOWGBABOOT,
|
||||||
FORCEHEADPHONEOUTPUT,
|
|
||||||
PATCHUNITINFO,
|
PATCHUNITINFO,
|
||||||
DISABLEARM11EXCHANDLERS,
|
DISABLEARM11EXCHANDLERS,
|
||||||
ENABLESAFEFIRMROSALINA,
|
ENABLESAFEFIRMROSALINA,
|
||||||
|
Binary file not shown.
@ -39,7 +39,6 @@ enum singleOptions
|
|||||||
REDIRECTAPPTHREADS,
|
REDIRECTAPPTHREADS,
|
||||||
PATCHVERSTRING,
|
PATCHVERSTRING,
|
||||||
SHOWGBABOOT,
|
SHOWGBABOOT,
|
||||||
FORCEHEADPHONEOUTPUT,
|
|
||||||
PATCHUNITINFO,
|
PATCHUNITINFO,
|
||||||
DISABLEARM11EXCHANDLERS,
|
DISABLEARM11EXCHANDLERS,
|
||||||
ENABLESAFEFIRMROSALINA,
|
ENABLESAFEFIRMROSALINA,
|
||||||
@ -53,6 +52,7 @@ enum multiOptions
|
|||||||
PIN,
|
PIN,
|
||||||
NEWCPU,
|
NEWCPU,
|
||||||
AUTOBOOTMODE,
|
AUTOBOOTMODE,
|
||||||
|
FORCEAUDIOOUTPUT,
|
||||||
};
|
};
|
||||||
|
|
||||||
void LumaConfig_ConvertComboToString(char *out, u32 combo);
|
void LumaConfig_ConvertComboToString(char *out, u32 combo);
|
||||||
|
@ -87,6 +87,8 @@ static size_t LumaConfig_SaveLumaIniConfigToStr(char *out, const CfgData *cfg)
|
|||||||
|
|
||||||
const char *splashPosStr;
|
const char *splashPosStr;
|
||||||
const char *n3dsCpuStr;
|
const char *n3dsCpuStr;
|
||||||
|
const char *autobootModeStr;
|
||||||
|
const char *forceAudioOutputStr;
|
||||||
|
|
||||||
s64 outInfo;
|
s64 outInfo;
|
||||||
svcGetSystemInfo(&outInfo, 0x10000, 0);
|
svcGetSystemInfo(&outInfo, 0x10000, 0);
|
||||||
@ -111,6 +113,18 @@ static size_t LumaConfig_SaveLumaIniConfigToStr(char *out, const CfgData *cfg)
|
|||||||
case 3: n3dsCpuStr = "clock+l2"; break;
|
case 3: n3dsCpuStr = "clock+l2"; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch (MULTICONFIG(AUTOBOOTMODE)) {
|
||||||
|
default: case 0: autobootModeStr = "off"; break;
|
||||||
|
case 1: autobootModeStr = "3ds"; break;
|
||||||
|
case 2: autobootModeStr = "dsi"; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (MULTICONFIG(FORCEAUDIOOUTPUT)) {
|
||||||
|
default: case 0: forceAudioOutputStr = "off"; break;
|
||||||
|
case 1: forceAudioOutputStr = "headphones"; break;
|
||||||
|
case 2: forceAudioOutputStr = "speakers"; break;
|
||||||
|
}
|
||||||
|
|
||||||
if (GET_VERSION_REVISION(version) != 0) {
|
if (GET_VERSION_REVISION(version) != 0) {
|
||||||
sprintf(lumaVerStr, "Luma3DS v%d.%d.%d", (int)GET_VERSION_MAJOR(version), (int)GET_VERSION_MINOR(version), (int)GET_VERSION_REVISION(version));
|
sprintf(lumaVerStr, "Luma3DS v%d.%d.%d", (int)GET_VERSION_MAJOR(version), (int)GET_VERSION_MINOR(version), (int)GET_VERSION_REVISION(version));
|
||||||
} else {
|
} else {
|
||||||
@ -150,11 +164,12 @@ static size_t LumaConfig_SaveLumaIniConfigToStr(char *out, const CfgData *cfg)
|
|||||||
(int)CONFIG(AUTOBOOTEMU), (int)CONFIG(USEEMUFIRM),
|
(int)CONFIG(AUTOBOOTEMU), (int)CONFIG(USEEMUFIRM),
|
||||||
(int)CONFIG(LOADEXTFIRMSANDMODULES), (int)CONFIG(PATCHGAMES),
|
(int)CONFIG(LOADEXTFIRMSANDMODULES), (int)CONFIG(PATCHGAMES),
|
||||||
(int)CONFIG(REDIRECTAPPTHREADS), (int)CONFIG(PATCHVERSTRING),
|
(int)CONFIG(REDIRECTAPPTHREADS), (int)CONFIG(PATCHVERSTRING),
|
||||||
(int)CONFIG(SHOWGBABOOT), (int)CONFIG(FORCEHEADPHONEOUTPUT),
|
(int)CONFIG(SHOWGBABOOT),
|
||||||
|
|
||||||
1 + (int)MULTICONFIG(DEFAULTEMU), 4 - (int)MULTICONFIG(BRIGHTNESS),
|
1 + (int)MULTICONFIG(DEFAULTEMU), 4 - (int)MULTICONFIG(BRIGHTNESS),
|
||||||
splashPosStr, (unsigned int)cfg->splashDurationMsec,
|
splashPosStr, (unsigned int)cfg->splashDurationMsec,
|
||||||
pinNumDigits, n3dsCpuStr, (int)MULTICONFIG(AUTOBOOTMODE),
|
pinNumDigits, n3dsCpuStr,
|
||||||
|
autobootModeStr, forceAudioOutputStr,
|
||||||
|
|
||||||
cfg->hbldr3dsxTitleId, rosalinaMenuComboStr,
|
cfg->hbldr3dsxTitleId, rosalinaMenuComboStr,
|
||||||
(int)cfg->ntpTzOffetMinutes,
|
(int)cfg->ntpTzOffetMinutes,
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
#include "screen_filters.h"
|
#include "screen_filters.h"
|
||||||
#include "luma_config.h"
|
#include "luma_config.h"
|
||||||
|
|
||||||
static void forceHeadphoneOutput(void)
|
static void forceAudioOutput(u32 forceOp)
|
||||||
{
|
{
|
||||||
// DSP/Codec sysmodule already have a way to force headphone output,
|
// DSP/Codec sysmodule already have a way to force headphone output,
|
||||||
// but it's only for when the shell is closed (applied on shell close,
|
// but it's only for when the shell is closed (applied on shell close,
|
||||||
@ -58,7 +58,19 @@ static void forceHeadphoneOutput(void)
|
|||||||
if (R_FAILED(res))
|
if (R_FAILED(res))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
u8 reg = 0x30; // Enable override selection (always set), then select HP.
|
u8 reg;
|
||||||
|
switch (forceOp) {
|
||||||
|
case 0:
|
||||||
|
default:
|
||||||
|
__builtin_trap();
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
reg = 0x30;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
reg = 0x20;
|
||||||
|
break;
|
||||||
|
}
|
||||||
res = CDCCHK_WriteRegisters2(100, 69, ®, 1);
|
res = CDCCHK_WriteRegisters2(100, 69, ®, 1);
|
||||||
|
|
||||||
svcCloseHandle(*cdcChkHandlePtr);
|
svcCloseHandle(*cdcChkHandlePtr);
|
||||||
@ -67,8 +79,9 @@ static void forceHeadphoneOutput(void)
|
|||||||
void handleShellOpened(void)
|
void handleShellOpened(void)
|
||||||
{
|
{
|
||||||
s64 out = 0;
|
s64 out = 0;
|
||||||
svcGetSystemInfo(&out, 0x10000, 3);
|
svcGetSystemInfo(&out, 0x10000, 4);
|
||||||
u32 config = (u32)out;
|
u32 multiConfig = (u32)out;
|
||||||
|
u32 forceOp = (multiConfig >> (2 * (u32)FORCEAUDIOOUTPUT)) & 3;
|
||||||
|
|
||||||
// We need to check here if GSP has done its init stuff, in particular
|
// We need to check here if GSP has done its init stuff, in particular
|
||||||
// clock and reset, otherwise we'll cause core1 to be in a waitstate
|
// clock and reset, otherwise we'll cause core1 to be in a waitstate
|
||||||
@ -77,6 +90,6 @@ void handleShellOpened(void)
|
|||||||
if (isServiceUsable("gsp::Gpu"))
|
if (isServiceUsable("gsp::Gpu"))
|
||||||
ScreenFiltersMenu_RestoreSettings();
|
ScreenFiltersMenu_RestoreSettings();
|
||||||
|
|
||||||
if ((config & BIT(FORCEHEADPHONEOUTPUT)) != 0 && isServiceUsable("cdc:CHK"))
|
if (forceOp != 0 && isServiceUsable("cdc:CHK"))
|
||||||
forceHeadphoneOutput();
|
forceAudioOutput(forceOp);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user