LumaTeam / Luma3DS

Nintendo 3DS "Custom Firmware"
GNU General Public License v3.0
5.33k stars 562 forks source link

RSF settings no longer force New 3DS clock and cache #996

Closed Clownacy closed 6 years ago

Clownacy commented 6 years ago

System model: New 3DS

SysNAND version: 11.2.0-35E

Entrypoint: Boot9Strap

Luma3DS version: v9.0

Luma3DS configuration/options: Default EmuNAND: 1 Screen brightness: 1 Splash: Off PIN lock: Off New 3DS CPU: Off, Clock, L2, and Clock+L2 Autoboot EmuNAND: Off Use EmuNAND FIRM if booting with R: Off Enable loading external FIRMs and modules: Off Enable game patching: On Show NAND or user string in System Settings: On Show GBA boot screen in patched AGB_FIRM: Off Set developer UNITINFO: Off Disable ARM11 exception handlers: Off

Explanation of the issue: I have this homebrew game that only runs on New 3DS for performance reasons. To prevent Old 3DS users from running it, I have the 'New3DS-only' flag set in the smdh. In the rsf file, I have SystemModeExt, CpuSpeed and EnableL2Cache set to 124MB, 804MHz and true, respectively.

This worked fine on v8.1.1, and the homebrew booted up with the New3DS clock and cache enabled. For some reason though, this isn't the case with v9.0: even if I set the 'New 3DS CPU' option in the Luma3DS settings menu, running the homebrew will disable them.

I checked out the one N3DS-only game I have, The Binding of Isaac, and that worked fine. I imagine it's using one of those clock-enabling functions like osSetSpeedupEnable. My homebrew doesn't use any of those, since the rsf alone was enough at the time.

Steps to reproduce:

  1. Install the CIA (info and a download link here)

  2. Run the game

  3. The game should run, but it will be extremely laggy. Opening Rosalina's New 3DS menu will show that L2 is disabled, and the clock is at 268MHz, regardless of your New 3DS CPU setting

ghost commented 6 years ago

This is something to do with patching SM and the title being New 3DS-only (tested by making MultiUpdater N3DS-only, caused the same issue as your homebrew). Luma 7.1's SM access check patch (if enabled) will result in this this issue, as will Luma 8.1.1's Rosalina SM patch (if enabled) and the access check-less SM reimplementation in Luma 9.0 also causes this issue.

Thus, the problem seems to be with SM having its service access checks patched out, no matter how they're patched out. However, legitimate New 3DS-only titles like Xenoblade Chronicles 3D and SNES VC do not display this issue, leading us to believe it's an external problem of some kind, perhaps with ctrulib or similar.