This restriction was completely artificial, rest of system supports 01
Jan 2000 - 31 Dec 2099 just fine.
NNID user's year-of-birth seems to have a similar Year 2050 restriction,
I'm not removing that as long as any NNID stuff is still active.
Unlike SetLuminanceLevel, SetLuminance doesn't check if preset <= 5, and actually allows the lumiance levels provisioned for the "brightness boost mode" (brighter when adapter is plugged in), even when the feature is disabled (it is disabled for anything but the OG model, iirc).
- previously, we left brightness voltage and LCD panel voltage on even though we disabled PWM and output signal, causing GSP to misdetect screen state in turn. Fix that (this fixes the issue mentioned above)
- Initialize the LCD controller over I2C, this fixes some rare sync issues some screen have with other Arm9 homebrew
This may not fix 100% of the issues, only the most egregious/dangerous
ones. There's still a lot of tech debt in Luma's baremetal code, that
necessitate a full rewrite to fix (not planned for this year)
Closes#2137.
Even though (when running TWL/AGB FIRM) the SoC is in O3DS mode, and the GPU also is,
as well as most other components behaving as such (external RAM, L2C not usable, etc.),
this is NOT the case for the LCD and adaptive backlight logic which retains FULL N3DS
functionality, including a feature where the window is blended with a given color depending
on the overall relative luminance of that window.
However, Nintendo's own code mistakenly assumes the opposite, and clearly so ("if GPU in N3DS mode"
checks, not passing N3DS extra adaptive backlight (ABL) to TWL/AGB_FIRM). This has implications:
- Powersaving (ABL) settings in TWL/AGB_FIRM is inconsistent with *both* O3DS (because the new RGB blend
LUT has been set to its current value by NATIVE_FIRM) and N3DS (because "pwn_cnt" and "inertia" are missing
their N3DS-only bits)
- "rave party" when booting into TWL/AGB_FIRM or O3DS NATIVE_FIRM without these regs (well, the LUT)
initialized. Easiest way to do so is by leveraging the "DSi autooboot" feature Luma provides. It is worth
noting at least the LUT survives hardware reboots (if Nintendo were using DSi software that was using
TLNC-based reboots, they wouldn't have noticed).
Only touch the autoboot path, for now
This feature repurposes the functionality used for the camera shutter sound.
As such, it interferes with it:
- shutter volume is set to the override instead of its default 100% value
- due to implementation details, having the shutter sound effect play will
make this feature stop working until the volume override is reapplied by
going back to this menu
Closes#2072
- Modify the svcMapProcessMemoryEx svc so that it takes an extra flags argument. This change was made in a way that shouldn't break existing plugins or applications.
- Add MAPEXFLAGS_PRIVATE flag, which maps the specified memory as PRIVATE instead of SHARED.
- Allow plugins to be mapped with PRIVATE memory instead of SHARED with a flag in the .3gx header. This allows plugins to use socket and http services without additional hacks.
---------
Co-authored-by: LittleCube <littlecubehax@gmail.com>