[RAM@2131.2MHz] Add DRAM timing adjusment, 2131.2 MHz should work for all ram chips and achieves higher bandwidth;
[Fix] Revert to permanent RAM clock (ptm-patch); No longer actively maintained next year.
This commit is contained in:
@@ -65,7 +65,7 @@ From Hekate Minerva module [sys_sdrammtc.c](https://github.com/CTCaer/hekate/blo
|
||||
- 1996
|
||||
- 1932
|
||||
- 1894
|
||||
- 1862 → official max for Erista; Mariko (stable on most DRAM chips except Hynix ones) (with timings for 1600MHz and no overvolting – capped at 600 mV)
|
||||
- 1862 → official max for Erista; Mariko without timing adjustment (stable on most DRAM chips except Hynix ones)
|
||||
- 1795
|
||||
- 1728
|
||||
- 1600 → official docked & official boost mode
|
||||
@@ -131,19 +131,14 @@ Presets can be customized by adding them to the ini config file located at `/con
|
||||
[Application Title ID]
|
||||
docked_cpu=
|
||||
docked_gpu=
|
||||
docked_mem=
|
||||
handheld_charging_cpu=
|
||||
handheld_charging_gpu=
|
||||
handheld_charging_mem=
|
||||
handheld_charging_usb_cpu=
|
||||
handheld_charging_usb_gpu=
|
||||
handheld_charging_usb_mem=
|
||||
handheld_charging_official_cpu=
|
||||
handheld_charging_official_gpu=
|
||||
handheld_charging_official_mem=
|
||||
handheld_cpu=
|
||||
handheld_gpu=
|
||||
handheld_mem=
|
||||
```
|
||||
|
||||
* Replace `Application Title ID` with the title id of the game/application you're interested in customizing.
|
||||
@@ -165,7 +160,6 @@ Leads to a smoother framerate overall (ex: in the korok forest)
|
||||
[01007EF00011E000]
|
||||
docked_cpu=1224
|
||||
handheld_charging_cpu=1224
|
||||
handheld_mem=1600
|
||||
```
|
||||
|
||||
### Example 2: Picross
|
||||
|
||||
@@ -77,7 +77,7 @@ AdvancedSettingsTab::AdvancedSettingsTab()
|
||||
});
|
||||
|
||||
// MEM
|
||||
brls::SelectListItem *memFreqListItem = createFreqListItem(SysClkModule_MEM, context.overrideFreqs[SysClkModule_MEM] / 1000000);
|
||||
/*brls::SelectListItem *memFreqListItem = createFreqListItem(SysClkModule_MEM, context.overrideFreqs[SysClkModule_MEM] / 1000000);
|
||||
memFreqListItem->getValueSelectedEvent()->subscribe([](int result)
|
||||
{
|
||||
Result rc = result == 0 ?
|
||||
@@ -90,7 +90,7 @@ AdvancedSettingsTab::AdvancedSettingsTab()
|
||||
errorResult(result == 0 ? "sysclkIpcRemoveOverride" : "sysclkIpcSetOverride", rc);
|
||||
// TODO: Reset selected value
|
||||
}
|
||||
});
|
||||
});*/
|
||||
|
||||
this->addView(cpuFreqListItem);
|
||||
this->addView(gpuFreqListItem);
|
||||
|
||||
@@ -116,7 +116,7 @@ void AppProfileFrame::addFreqs(brls::List* list, SysClkProfile profile)
|
||||
list->addView(gpuListItem);
|
||||
|
||||
// MEM
|
||||
brls::SelectListItem* memListItem = createFreqListItem(SysClkModule_MEM, this->profiles.mhzMap[profile][SysClkModule_MEM]);
|
||||
/*brls::SelectListItem* memListItem = createFreqListItem(SysClkModule_MEM, this->profiles.mhzMap[profile][SysClkModule_MEM]);
|
||||
|
||||
this->profiles.mhzMap[profile][SysClkModule_MEM] *= 1000000;
|
||||
|
||||
@@ -126,7 +126,7 @@ void AppProfileFrame::addFreqs(brls::List* list, SysClkProfile profile)
|
||||
|
||||
brls::Logger::debug("Caching freq for module %d and profile %d to %" PRIu32, SysClkModule_MEM, profile, this->profiles.mhzMap[profile][SysClkModule_MEM]);
|
||||
});
|
||||
list->addView(memListItem);
|
||||
list->addView(memListItem);*/
|
||||
}
|
||||
|
||||
void AppProfileFrame::onProfileChanged()
|
||||
|
||||
@@ -110,10 +110,7 @@ brls::SelectListItem* createFreqListItem(SysClkModule module, uint32_t selectedF
|
||||
selected = i + 1;
|
||||
|
||||
char clock[16];
|
||||
if (freq == 1600000000)
|
||||
snprintf(clock, sizeof(clock), "Max MHz");
|
||||
else
|
||||
snprintf(clock, sizeof(clock), "%d MHz", freq / 1000000);
|
||||
snprintf(clock, sizeof(clock), "%d MHz", freq / 1000000);
|
||||
|
||||
clocks.push_back(std::string(clock));
|
||||
|
||||
|
||||
@@ -20,10 +20,6 @@ static inline std::string formatListFreqMhz(std::uint32_t mhz)
|
||||
{
|
||||
return FREQ_DEFAULT_TEXT;
|
||||
}
|
||||
else if (mhz == 1600)
|
||||
{
|
||||
return "Max MHz";
|
||||
}
|
||||
|
||||
char buf[10];
|
||||
return std::string(buf, snprintf(buf, sizeof(buf), "%u MHz", mhz));
|
||||
|
||||
@@ -62,7 +62,7 @@ void AppProfileGui::addProfileUI(SysClkProfile profile)
|
||||
this->listElement->addItem(new tsl::elm::CategoryHeader(sysclkFormatProfile(profile, true)));
|
||||
this->addModuleListItem(profile, SysClkModule_CPU, &sysclk_g_freq_table_cpu_hz[0]);
|
||||
this->addModuleListItem(profile, SysClkModule_GPU, &sysclk_g_freq_table_gpu_hz[0]);
|
||||
this->addModuleListItem(profile, SysClkModule_MEM, &sysclk_g_freq_table_mem_hz[0]);
|
||||
//this->addModuleListItem(profile, SysClkModule_MEM, &sysclk_g_freq_table_mem_hz[0]);
|
||||
}
|
||||
|
||||
void AppProfileGui::listUI()
|
||||
|
||||
@@ -62,7 +62,7 @@ void GlobalOverrideGui::listUI()
|
||||
{
|
||||
this->addModuleListItem(SysClkModule_CPU, &sysclk_g_freq_table_cpu_hz[0]);
|
||||
this->addModuleListItem(SysClkModule_GPU, &sysclk_g_freq_table_gpu_hz[0]);
|
||||
this->addModuleListItem(SysClkModule_MEM, &sysclk_g_freq_table_mem_hz[0]);
|
||||
//this->addModuleListItem(SysClkModule_MEM, &sysclk_g_freq_table_mem_hz[0]);
|
||||
}
|
||||
|
||||
void GlobalOverrideGui::refresh()
|
||||
|
||||
@@ -247,10 +247,6 @@ void ClockManager::Tick()
|
||||
if (hz)
|
||||
{
|
||||
hz = Clocks::GetNearestHz((SysClkModule)module, isEnabledReverseNX ? RealProfile : this->context->profile, hz);
|
||||
if (module == SysClkModule_MEM && hz == 1600'000'000 && this->context->freqs[module] >= hz)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (hz != this->context->freqs[module] && this->context->enabled)
|
||||
{
|
||||
@@ -446,6 +442,13 @@ bool ClockManager::RefreshContext()
|
||||
{
|
||||
hz = Clocks::GetCurrentHz((SysClkModule)module);
|
||||
|
||||
// Skip MEM freq check
|
||||
if (module == SysClkModule_MEM)
|
||||
{
|
||||
this->context->freqs[module] = hz;
|
||||
break;
|
||||
}
|
||||
|
||||
// Round to MHz
|
||||
uint32_t cur_mhz = hz/1000'000;
|
||||
uint32_t be4_mhz = this->context->freqs[module]/1000'000;
|
||||
|
||||
@@ -179,10 +179,10 @@ void Clocks::ResetToStock(unsigned int module)
|
||||
{
|
||||
Clocks::SetHz(SysClkModule_GPU, apmConfiguration->gpu_hz);
|
||||
}
|
||||
if (module == SysClkModule_EnumMax || module == SysClkModule_MEM)
|
||||
{
|
||||
Clocks::SetHz(SysClkModule_MEM, apmConfiguration->mem_hz);
|
||||
}
|
||||
// if (module == SysClkModule_EnumMax || module == SysClkModule_MEM)
|
||||
// {
|
||||
// Clocks::SetHz(SysClkModule_MEM, apmConfiguration->mem_hz);
|
||||
// }
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -225,6 +225,9 @@ SysClkProfile Clocks::GetCurrentProfile()
|
||||
|
||||
void Clocks::SetHz(SysClkModule module, std::uint32_t hz)
|
||||
{
|
||||
if (module == SysClkModule_MEM)
|
||||
return;
|
||||
|
||||
Result rc = 0;
|
||||
|
||||
if(hosversionAtLeast(8,0,0))
|
||||
|
||||
Reference in New Issue
Block a user