diff --git a/Source/Atmosphere/stratosphere/loader/source/oc/customize.cpp b/Source/Atmosphere/stratosphere/loader/source/oc/customize.cpp index 475765b6..621bc2b1 100644 --- a/Source/Atmosphere/stratosphere/loader/source/oc/customize.cpp +++ b/Source/Atmosphere/stratosphere/loader/source/oc/customize.cpp @@ -91,6 +91,8 @@ volatile CustomizeTable C = { .marikoGpuUV = 0, +.marikoEmcDvbShift = 0, + .ramTimingPresetOne = 0, .ramTimingPresetTwo = 0, diff --git a/Source/Atmosphere/stratosphere/loader/source/oc/customize.hpp b/Source/Atmosphere/stratosphere/loader/source/oc/customize.hpp index 85d53bb3..fc2fcc95 100644 --- a/Source/Atmosphere/stratosphere/loader/source/oc/customize.hpp +++ b/Source/Atmosphere/stratosphere/loader/source/oc/customize.hpp @@ -52,9 +52,10 @@ typedef struct CustomizeTable { u32 marikoCpuMaxVolt; u32 marikoEmcMaxClock; u32 marikoEmcVddqVolt; - //advanced config u32 marikoCpuUV; u32 marikoGpuUV; + // advanced config + u32 marikoEmcDvbShift; u32 ramTimingPresetOne; u32 ramTimingPresetTwo; u32 ramTimingPresetThree; @@ -62,6 +63,7 @@ typedef struct CustomizeTable { u32 ramTimingPresetFive; u32 ramTimingPresetSix; u32 ramTimingPresetSeven; + // u32 marikoGpuVoltArray[17]; CustomizeCpuDvfsTable eristaCpuDvfsTable; CustomizeCpuDvfsTable marikoCpuDvfsTable; diff --git a/Source/Atmosphere/stratosphere/loader/source/oc/pcv/pcv_mariko.cpp b/Source/Atmosphere/stratosphere/loader/source/oc/pcv/pcv_mariko.cpp index add4a2da..a4937d9b 100644 --- a/Source/Atmosphere/stratosphere/loader/source/oc/pcv/pcv_mariko.cpp +++ b/Source/Atmosphere/stratosphere/loader/source/oc/pcv/pcv_mariko.cpp @@ -371,10 +371,10 @@ Result MemFreqDvbTable(u32* ptr) { emc_dvb_dvfs_table_t oc_table = { 2131200, { 725, 700, 675, } }; std::memcpy(new_start, &oc_table, sizeof(emc_dvb_dvfs_table_t)); } else if (C.marikoEmcMaxClock < 2665600){ - emc_dvb_dvfs_table_t oc_table = { 2400000, { 750, 725, 700, } }; + emc_dvb_dvfs_table_t oc_table = { 2400000, { 750+25*C.marikoEmcDvbShift, 725+25*C.marikoEmcDvbShift, 700+25*C.marikoEmcDvbShift, } }; std::memcpy(new_start, &oc_table, sizeof(emc_dvb_dvfs_table_t)); } else { - emc_dvb_dvfs_table_t oc_table = { 2665600, { 775, 750, 725, } }; + emc_dvb_dvfs_table_t oc_table = { 2665600, { 775+25*C.marikoEmcDvbShift, 750+25*C.marikoEmcDvbShift, 725+25*C.marikoEmcDvbShift, } }; std::memcpy(new_start, &oc_table, sizeof(emc_dvb_dvfs_table_t)); } new_start->freq = C.marikoEmcMaxClock; diff --git a/Source/sys-clk-OC/sysmodule/src/file_utils.h b/Source/sys-clk-OC/sysmodule/src/file_utils.h index 001a7571..7ed72628 100644 --- a/Source/sys-clk-OC/sysmodule/src/file_utils.h +++ b/Source/sys-clk-OC/sysmodule/src/file_utils.h @@ -58,6 +58,7 @@ typedef struct CustTable { u32 marikoEmcVddqVolt; u32 marikoCpuUV; u32 marikoGpuUV; + u32 marikoEmcDvbShift; u32 ramTimingPresetOne; u32 ramTimingPresetTwo; u32 ramTimingPresetThree; diff --git a/pages/src/main.ts b/pages/src/main.ts index 3be1622a..c8d204b5 100644 --- a/pages/src/main.ts +++ b/pages/src/main.ts @@ -336,6 +336,19 @@ var CustTable: Array = [ ]; var AdvTable: Array = [ + new AdvEntry( + "marikoEmcDvbShift", + "Step up Mariko EMC DVB Table", + CustPlatform.Mariko, + 4, + ["Might help with stability at higher memory clock", + "0 : Don't Adjust", + "1 : Shift one step", + "2 : Shift two step"], + 0, + [0,2], + 1, + ), new AdvEntry( "ramTimingPresetOne", "Primary RAM Timing Preset",