(Switch 2) Compatibility Mode: Difference between revisions
No edit summary |
|||
(6 intermediate revisions by the same user not shown) | |||
Line 35: | Line 35: | ||
| 0xC8 || u64 || AudioControlData | | 0xC8 || u64 || AudioControlData | ||
|- | |- | ||
| 0xD0 || u64 || MiscControlData | | 0xD0 || u64 || [[#MiscControlData]] | ||
|} | |||
=== MiscControlData === | |||
{| class=wikitable | |||
! Bit || Name || Description | |||
|- | |||
| 0 || PreventShaderCacheOpenFile || Prevents game from opening file: "ROM:/data/scaleform_cache/GFxShaders.cache". | |||
|- | |||
| 1 || PreventShaderCacheGetEntryType || Prevents game from getting the entry type on 5 different hardcoded paths. | |||
|- | |||
| 2 || PreventShaderCacheOpenDirectory || Prevents game from opening directory: "host:/shaders/build/" | |||
|- | |||
| 4 || SerializeSavedataAccess || A global mutex is taken when a file starting with "savedata" is opened, and held until the file has been closed. Commit-action also takes the mutex, so the commit will not complete until the file has been closed. | |||
|- | |||
| 6 || PreventNegativeVibrationValue || | |||
|- | |||
| 10 || NeedsWaitingLaunchLogo || | |||
|- | |||
| 13 || ExtraSleepForOfflineWebApplet || | |||
|- | |||
|} | |} | ||
Line 53: | Line 73: | ||
{| class=wikitable | {| class=wikitable | ||
! Hooked Symbol || Difference | ! Hooked Symbol || Difference || Conditional | ||
|- | |||
| nnosInitialize || Captures the ProgramArgument parameter where the [[#CompatibilityParameter]] is stored. || | |||
|- | |||
| nn::os::CreateThread || No change. || | |||
|- | |||
| nn::os::SetThreadCoreMask || No change. || | |||
|- | |||
| nn::os::GetThreadAvailableCoreMask, nn::os::GetThreadAvailableCoreMask || Returns actual core mask masked with 0x7, effectively pretending that there are only 3 CPU cores available. || | |||
|- | |||
| nn::audio::GetAudioInName || If the primary audio in name is "XUac", it returns the secondary device name instead. Presumably, the "XUac" device has been removed in Switch 2. || | |||
|- | |- | ||
| | | nn::audio::GetReleasedWaveBuffer || Now returns NULL under certain circumstances. || AudioControlData bit0 | ||
|- | |- | ||
| nn:: | | nn::web::OfflineWebSession::Appear || Added sleep 50000000 before calling the original function. || MiscControlData bit13 | ||
|- | |- | ||
| nn:: | | nn::ssl::Connection::SetSocketDescriptor || Calls nn::socket::Fnctl(..., 3); nn::socket::Fnctl(..., 4); on the socket fd. || MiscControlData bit15 | ||
|- | |- | ||
| nn:: | | nn::swkbd::InlineKeyboard::GetImage, nn::swkbd::InlineKeyboard::Calc || Takes a shared mutex before calling original functions. No other changes. Probably prevents a race condition that only manifests on Switch 2. || | ||
|- | |- | ||
| nn:: | | nn::socket::Socket || If nn::socket::IsInitialized() is 0, sleep for 1 second, and see it reaches 1 before calling the original function. Probably prevents a race condition that only manifests on Switch 2. || MiscControlData bit9 | ||
|- | |- | ||
| nn:: | | nn::os::TimedAcquireSemaphore || Force arg1=true. || MiscControlData bit8. | ||
|- | |- | ||
| nn:: | | nn::os::QueryMemoryInfo,nn::os::QueryMemoryInfoForDebug || Hides stolen Heap memory that it uses for itself... || | ||
|- | |- | ||
| nn:: | | nn::hid::VibrationPlayer::SetCurrentPosition || If position is negative, drop the call. || MiscControlData bit6 | ||
|} | |} | ||