From 781cd85b00df1e691ab4ea15d406ed736c791950 Mon Sep 17 00:00:00 2001 From: TuxSH <1922548+TuxSH@users.noreply.github.com> Date: Thu, 16 Jul 2020 00:50:05 +0100 Subject: [PATCH] rosalina: display min/max luminance --- sysmodules/rosalina/include/luminance.h | 2 ++ sysmodules/rosalina/source/luminance.c | 12 ++++++++++++ sysmodules/rosalina/source/menus.c | 12 +++++++++++- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/sysmodules/rosalina/include/luminance.h b/sysmodules/rosalina/include/luminance.h index 3590cc3a..1b480366 100644 --- a/sysmodules/rosalina/include/luminance.h +++ b/sysmodules/rosalina/include/luminance.h @@ -28,4 +28,6 @@ #include <3ds/types.h> +u32 getMinLuminancePreset(void); +u32 getMaxLuminancePreset(void); u32 getCurrentLuminance(bool top); diff --git a/sysmodules/rosalina/source/luminance.c b/sysmodules/rosalina/source/luminance.c index 3e3ea8c1..d26de8cc 100644 --- a/sysmodules/rosalina/source/luminance.c +++ b/sysmodules/rosalina/source/luminance.c @@ -96,6 +96,18 @@ static void readCalibration(void) } } +u32 getMinLuminancePreset(void) +{ + readCalibration(); + return s_blPwmData.luminanceLevels[0]; +} + +u32 getMaxLuminancePreset(void) +{ + readCalibration(); + return s_blPwmData.luminanceLevels[s_blPwmData.numLevels - 1]; +} + u32 getCurrentLuminance(bool top) { u32 regbase = top ? 0x10202200 : 0x10202A00; diff --git a/sysmodules/rosalina/source/menus.c b/sysmodules/rosalina/source/menus.c index c92da4c7..e7a1908d 100644 --- a/sysmodules/rosalina/source/menus.c +++ b/sysmodules/rosalina/source/menus.c @@ -170,13 +170,23 @@ void RosalinaMenu_ChangeScreenBrightness(void) // gsp:LCD GetLuminance is stubbed on O3DS so we have to implement it ourselves... damn it. // Assume top and bottom screen luminances are the same (should be; if not, we'll set them to the same values). u32 luminance = getCurrentLuminance(false); + u32 minLum = getMinLuminancePreset(); + u32 maxLum = getMaxLuminancePreset(); do { Draw_Lock(); Draw_DrawString(10, 10, COLOR_TITLE, "Screen brightness"); u32 posY = 30; - posY = Draw_DrawFormattedString(10, posY, COLOR_WHITE, "Current luminance: %lu\n\n", luminance); + posY = Draw_DrawFormattedString( + 10, + posY, + COLOR_WHITE, + "Current luminance: %lu (min. %lu, max. %lu)\n\n", + luminance, + minLum, + maxLum + ); posY = Draw_DrawString(10, posY, COLOR_WHITE, "Controls: Up/Down for +-1, Right/Left for +-10.\n"); posY = Draw_DrawString(10, posY, COLOR_WHITE, "Press A to start, B to exit.\n\n");