From 04e27cacd0585155f0f5f8d68f15c3c083f17f5b Mon Sep 17 00:00:00 2001 From: souldbminersmwc Date: Thu, 11 Dec 2025 15:56:27 -0500 Subject: [PATCH] configurator: update for latest kip --- Source/Configurator/{hoc.kip => loader.kip} | Bin 269468 -> 276604 bytes Source/Configurator/src/cpu.py | 37 ++++- Source/Configurator/src/defaults.py | 52 +------ Source/Configurator/src/settings.py | 147 ++++++++++++-------- 4 files changed, 118 insertions(+), 118 deletions(-) rename Source/Configurator/{hoc.kip => loader.kip} (53%) diff --git a/Source/Configurator/hoc.kip b/Source/Configurator/loader.kip similarity index 53% rename from Source/Configurator/hoc.kip rename to Source/Configurator/loader.kip index 45326ca113485afd8b8f7e25efde7180783300b6..1aa2a7afa6f439fcac7f3ec3173a95acb7422cbd 100644 GIT binary patch delta 51277 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ℑ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 Ti*VJ>b^`j-7sXqZF7tl?%ERLX diff --git a/Source/Configurator/src/cpu.py b/Source/Configurator/src/cpu.py index 16d68877..ba1bcebc 100644 --- a/Source/Configurator/src/cpu.py +++ b/Source/Configurator/src/cpu.py @@ -54,10 +54,18 @@ def populate(): dpg.add_combo( items=freqs_mhz_cpu_label, - default_value="1785.0MHz", - label="CPU Boost Frequency", + default_value="1963.0MHz", + label="Mariko CPU Boost Frequency", callback=k.grab_kip_storage_values, - tag="commonCpuBoostClock" + tag="marikoCpuBoostClock" + ) + + dpg.add_combo( + items=freqs_mhz_cpu_label, + default_value="1785.0MHz", + label="Erista CPU Boost Frequency", + callback=k.grab_kip_storage_values, + tag="eristaCpuBoostClock" ) dpg.add_separator(label="Voltages") @@ -100,7 +108,7 @@ def populate(): callback=k.grab_kip_storage_values_no_mult ) - dpg.add_separator(label="Undervolt (Mariko ONLY)") + dpg.add_separator(label="Undervolt") dpg.add_button( label="What is this?", @@ -114,10 +122,27 @@ def populate(): dpg.add_combo( items=list(range(0, 8 + 1, 1)), default_value="Default Table", - label="Mariko CPU Undervolt", - tag="marikoCpuUV", + label="Mariko CPU Low Undervolt", + tag="marikoCpuUVLow", callback=k.grab_kip_storage_values_no_mult ) + + dpg.add_combo( + items=list(range(0, 12 + 1, 1)), + default_value="Default Table", + label="Mariko CPU High Undervolt", + tag="marikoCpuUVHigh", + callback=k.grab_kip_storage_values_no_mult + ) + + dpg.add_combo( + items=["Auto (Unimplemented) (0)", "Default (1)", "Tbreak Fifteen Eighty One (2)", "Tbreak Sixteen Eighty Three (3)", "HELIOS (4)"], + default_value="Default Table", + label="Table Configuration", + tag="tableConf", + callback=k.grab_kip_storage_values_no_mult + ) + dpg.add_combo( items=list(range(0, 5 + 1, 1)), default_value="Default Table", diff --git a/Source/Configurator/src/defaults.py b/Source/Configurator/src/defaults.py index 0841e684..aee7c1b1 100644 --- a/Source/Configurator/src/defaults.py +++ b/Source/Configurator/src/defaults.py @@ -23,55 +23,5 @@ along with this program. If not, see . class Defaults: # This almost always never needs to be updated as pulling from the kip takes priority def __init__(self): self.autosave = 0 - self.custrev = 0 - self.mtc = 0 - self.commonCpuBoostClock = 1785000 - self.commonEmcMemVolt = 1175000 - self.eristaCpuMaxVolt = 1235 - self.eristaEmcMaxClock = 1862400 - self.marikoCpuMaxVolt = 1120 - self.marikoEmcMaxClock = 1996800 - self.marikoEmcVddqVolt = 600000 - self.marikoCpuUV = 0 - self.marikoGpuUV = 0 - self.eristaCpuUV = 0 - self.eristaGpuUV = 0 - self.commonGpuVoltOffset = 0 - self.marikoEmcDvbShift = 0 - self.t1_tRCD = 0 - self.t2_tRP = 0 - self.t3_tRAS = 0 - self.t4_tRRD = 0 - self.t5_tRFC = 0 - self.t6_tRTW = 0 - self.t7_tWTR = 0 - self.t8_tREFI = 0 - self.mem_burst_latency = 2 - self.m_freq_76800 = 600 - self.m_freq_153600 = 600 - self.m_freq_230400 = 600 - self.m_freq_307200 = 600 - self.m_freq_384000 = 600 - self.m_freq_460800 = 600 - self.m_freq_537600 = 600 - self.m_freq_614400 = 600 - self.m_freq_691200 = 600 - self.m_freq_768000 = 600 - self.m_freq_844800 = 605 - self.m_freq_921600 = 635 - self.m_freq_998400 = 665 - self.m_freq_1075200 = 695 - self.m_freq_1152000 = 730 - self.m_freq_1228800 = 760 - self.m_freq_1267200 = 785 - self.m_freq_1305600 = 800 - self.m_freq_1344000 = 0 - self.m_freq_1382400 = 0 - self.m_freq_1420800 = 0 - self.m_freq_1459200 = 0 - self.m_freq_1497600 = 0 - self.m_freq_1536000 = 0 - self.high_vddq = 0 - self.high_vdd2 = 0 - + pass d = Defaults() \ No newline at end of file diff --git a/Source/Configurator/src/settings.py b/Source/Configurator/src/settings.py index 1cd25eaf..65282019 100644 --- a/Source/Configurator/src/settings.py +++ b/Source/Configurator/src/settings.py @@ -61,20 +61,13 @@ variables = [ ("custRev", "u32"), ("mtcConf", "u32"), ("hpMode", "u32"), - ("commonCpuBoostClock", "u32"), + ("commonEmcMemVolt", "u32"), - ("eristaCpuMaxVolt", "u32"), ("eristaEmcMaxClock", "u32"), - ("marikoCpuMaxVolt", "u32"), ("marikoEmcMaxClock", "u32"), ("marikoEmcVddqVolt", "u32"), - ("marikoCpuUV", "u32"), - ("marikoGpuUV", "u32"), - ("eristaCpuUV", "u32"), - ("eristaGpuUV", "u32"), - ("commonGpuVoltOffset", "u32"), ("marikoEmcDvbShift", "u32"), - # advanced config + ("t1_tRCD", "u32"), ("t2_tRP", "u32"), ("t3_tRAS", "u32"), @@ -83,40 +76,36 @@ variables = [ ("t6_tRTW", "u32"), ("t7_tWTR", "u32"), ("t8_tREFI", "u32"), + ("mem_burst_read_latency", "u32"), ("mem_burst_write_latency", "u32"), - ("marikoCpuHighVmin", "u32"), + + ("eristaCpuUV", "u32"), + ("eristaCpuMaxVolt", "u32"), + + ("marikoCpuUVLow", "u32"), + ("marikoCpuUVHigh", "u32"), + ("tableConf", "u32"), ("marikoCpuLowVmin", "u32"), + ("marikoCpuHighVmin", "u32"), + ("marikoCpuMaxVolt", "u32"), + + ("marikoCpuBoostClock", "u32"), + ("eristaCpuBoostClock", "u32"), + + ("eristaGpuUV", "u32"), ("eristaGpuVmin", "u32"), + + ("marikoGpuUV", "u32"), ("marikoGpuVmin", "u32"), ("marikoGpuVmax", "u32"), + ("commonGpuVoltOffset", "u32"), + # advanced config + + ("marikoGpuFullUnlock", "u32"), - ("g_volt_76800", "u32"), - ("g_volt_153600", "u32"), - ("g_volt_230400", "u32"), - ("g_volt_307200", "u32"), - ("g_volt_384000", "u32"), - ("g_volt_460800", "u32"), - ("g_volt_537600", "u32"), - ("g_volt_614400", "u32"), - ("g_volt_691200", "u32"), - ("g_volt_768000", "u32"), - ("g_volt_844800", "u32"), - ("g_volt_921600", "u32"), - ("g_volt_998400", "u32"), - ("g_volt_1075200", "u32"), - ("g_volt_1152000", "u32"), - ("g_volt_1228800", "u32"), - ("g_volt_1267200", "u32"), - ("g_volt_1305600", "u32"), - ("g_volt_1344000", "u32"), - ("g_volt_1382400", "u32"), - ("g_volt_1420800", "u32"), - ("g_volt_1459200", "u32"), - ("g_volt_1497600", "u32"), - ("g_volt_1536000", "u32"), ("g_volt_e_76800", "u32"), @@ -149,6 +138,30 @@ variables = [ # ("g_volt_e_1152000", "u32"), # ("g_volt_e_1228800", "u32"), + ("g_volt_76800", "u32"), + ("g_volt_153600", "u32"), + ("g_volt_230400", "u32"), + ("g_volt_307200", "u32"), + ("g_volt_384000", "u32"), + ("g_volt_460800", "u32"), + ("g_volt_537600", "u32"), + ("g_volt_614400", "u32"), + ("g_volt_691200", "u32"), + ("g_volt_768000", "u32"), + ("g_volt_844800", "u32"), + ("g_volt_921600", "u32"), + ("g_volt_998400", "u32"), + ("g_volt_1075200", "u32"), + ("g_volt_1152000", "u32"), + ("g_volt_1228800", "u32"), + ("g_volt_1267200", "u32"), + ("g_volt_1305600", "u32"), + ("g_volt_1344000", "u32"), + ("g_volt_1382400", "u32"), + ("g_volt_1420800", "u32"), + ("g_volt_1459200", "u32"), + ("g_volt_1497600", "u32"), + ("g_volt_1536000", "u32"), ] @@ -156,26 +169,18 @@ fmt_map = { "u32": "I", "double": "d", } - def load_all_vars(): c.load_entry_object("custRev", 0) c.load_entry_object("mtcConf", 0) c.load_entry_object("hpMode", 0) - c.load_entry_object("commonCpuBoostClock", 1) + c.load_entry_object("commonEmcMemVolt", 2) - c.load_entry_object("eristaCpuMaxVolt", 3) c.load_entry_object("eristaEmcMaxClock", 1) - c.load_entry_object("marikoCpuMaxVolt", 3) c.load_entry_object("marikoEmcMaxClock", 1) c.load_entry_object("marikoEmcVddqVolt", 2) - c.load_entry_object("marikoCpuUV", 5) - c.load_entry_object("marikoGpuUV", 4) - c.load_entry_object("eristaCpuUV", 5) - c.load_entry_object("eristaGpuUV", 4) - c.load_entry_object("commonGpuVoltOffset", 3) c.load_entry_object("marikoEmcDvbShift", 0) - # Advanced memory config + # === Advanced memory config === c.load_entry_object("t1_tRCD", 5) c.load_entry_object("t2_tRP", 5) c.load_entry_object("t3_tRAS", 5) @@ -184,32 +189,52 @@ def load_all_vars(): c.load_entry_object("t6_tRTW", 5) c.load_entry_object("t7_tWTR", 5) c.load_entry_object("t8_tREFI", 5) + c.load_entry_object("mem_burst_read_latency", 5) c.load_entry_object("mem_burst_write_latency", 5) - c.load_entry_object("marikoCpuHighVmin", 3) + # === CPU Voltages === + c.load_entry_object("eristaCpuUV", 5) + c.load_entry_object("eristaCpuMaxVolt", 3) + + c.load_entry_object("marikoCpuUVLow", 5) + c.load_entry_object("marikoCpuUVHigh", 5) + c.load_entry_object("tableConf", 5) c.load_entry_object("marikoCpuLowVmin", 3) + c.load_entry_object("marikoCpuHighVmin", 3) + c.load_entry_object("marikoCpuMaxVolt", 3) + + c.load_entry_object("marikoCpuBoostClock", 1) + c.load_entry_object("eristaCpuBoostClock", 1) + + # === GPU Voltages === + c.load_entry_object("eristaGpuUV", 4) c.load_entry_object("eristaGpuVmin", 3) + + c.load_entry_object("marikoGpuUV", 4) c.load_entry_object("marikoGpuVmin", 3) c.load_entry_object("marikoGpuVmax", 3) + c.load_entry_object("commonGpuVoltOffset", 3) c.load_entry_object("marikoGpuFullUnlock", 3) - # GPU voltage arrays - for freq in [ + + erista_freqs = [ + "76800", "115200", "153600", "192000", "230400", "268800", "307200", + "345600", "384000", "422400", "460800", "499200", "537600", "576000", + "614400", "652800", "691200", "729600", "768000", "806400", "844800", + "883200", "921600", "960000", "998400", "1036800", "1075200" + ] + for freq in erista_freqs: + c.load_entry_object(f"g_volt_e_{freq}", 3) + + mariko_freqs = [ "76800", "153600", "230400", "307200", "384000", "460800", "537600", "614400", "691200", "768000", "844800", "921600", "998400", "1075200", "1152000", "1228800", "1267200", "1305600", "1344000", "1382400", "1420800", "1459200", "1497600", "1536000" - ]: + ] + for freq in mariko_freqs: c.load_entry_object(f"g_volt_{freq}", 3) - - for e_freq in [ - "76800", "115200", "153600", "192000", "230400", "268800", "307200", "345600", "384000", "422400", "460800", "499200", "537600", - "576000","614400", "652800","691200","729600", "768000","806400", "844800","883200", "921600","960000", "998400","1036800", "1075200"# , - # "1152000", "1228800" - ]: - c.load_entry_object(f"g_volt_e_{e_freq}", 3) - - + # Timings timing_vars = [ @@ -586,11 +611,11 @@ skin_t_entries = { mariko_meme_threshold = 1536000 -mariko_dangerous_gpu_threshold = 1382400 -mariko_unsafe_gpu_threshold = 1152000 +mariko_dangerous_gpu_threshold = 1305600 +mariko_unsafe_gpu_threshold = 998000 -erista_dangerous_gpu_threshold = 1151000 -erista_unsafe_gpu_threshold = 922000 +erista_dangerous_gpu_threshold = 1076000 +erista_unsafe_gpu_threshold = 884000 mariko_voltage_step = 5 erista_voltage_step = 5