loader: do the same thing that main branch does

This commit is contained in:
souldbminersmwc
2025-11-24 21:03:28 -05:00
parent 3325bf8a10
commit 0fac2c1eb3

View File

@@ -76,58 +76,59 @@ namespace ams::ldr::oc::pcv::mariko {
} }
R_THROW(ldr::ResultInvalidCpuMinVolt()); R_THROW(ldr::ResultInvalidCpuMinVolt());
} }
Result CpuVoltDfll(u32 *ptr)
Result CpuVoltDfll(u32 *ptr) { {
cvb_cpu_dfll_data *entry = reinterpret_cast<cvb_cpu_dfll_data *>(ptr); cvb_cpu_dfll_data *entry = reinterpret_cast<cvb_cpu_dfll_data *>(ptr);
R_UNLESS(entry->tune0_low == 0x0000FFCF, ldr::ResultInvalidCpuVoltDfllEntry()); R_UNLESS(entry->tune0_low == 0x0000FFCF, ldr::ResultInvalidCpuVoltDfllEntry());
R_UNLESS(entry->tune0_high == 0x00000000, ldr::ResultInvalidCpuVoltDfllEntry()); R_UNLESS(entry->tune0_high == 0x00000000, ldr::ResultInvalidCpuVoltDfllEntry());
R_UNLESS(entry->tune1_low == 0x012207FF, ldr::ResultInvalidCpuVoltDfllEntry()); R_UNLESS(entry->tune1_low == 0x012207FF, ldr::ResultInvalidCpuVoltDfllEntry());
R_UNLESS(entry->tune1_high == 0x03FFF7FF, ldr::ResultInvalidCpuVoltDfllEntry()); R_UNLESS(entry->tune1_high == 0x03FFF7FF, ldr::ResultInvalidCpuVoltDfllEntry());
switch (C.marikoCpuUV) { switch (C.marikoCpuUV)
{
case 0: case 0:
break; break;
case 1: case 1:
PATCH_OFFSET(&(entry->tune0_low), 0x0000FF90); // process_id 0 // EOS UV1 PATCH_OFFSET(&(entry->tune0_low), 0x0000FFA0); // process_id 0 // EOS UV1
PATCH_OFFSET(&(entry->tune0_high), 0x0000FFFF); PATCH_OFFSET(&(entry->tune0_high), 0x0000FFFF);
PATCH_OFFSET(&(entry->tune1_low), 0x021107FF); PATCH_OFFSET(&(entry->tune1_low), 0x021107FF);
PATCH_OFFSET(&(entry->tune1_high), 0x00000000); PATCH_OFFSET(&(entry->tune1_high), 0x00000000);
break; break;
case 2: case 2:
PATCH_OFFSET(&(entry->tune0_low), 0x0000FF92); /// EOS Uv2 // PATCH_OFFSET(&(entry->tune0_low), 0x0000FF92); /// EOS Uv2
PATCH_OFFSET(&(entry->tune0_high), 0x0000FFFF); PATCH_OFFSET(&(entry->tune0_high), 0x0000FFDF);
PATCH_OFFSET(&(entry->tune1_low), 0x021107FF); PATCH_OFFSET(&(entry->tune1_low), 0x021107FF);
PATCH_OFFSET(&(entry->tune1_high), 0x00000000); PATCH_OFFSET(&(entry->tune1_high), 0x027207FF);
break; break;
case 3: case 3:
PATCH_OFFSET(&(entry->tune0_low), 0x0000FF9A); // EOS UV3 PATCH_OFFSET(&(entry->tune0_low), 0x0000FFDF); // EOS UV3
PATCH_OFFSET(&(entry->tune0_high), 0x0000FFFF); PATCH_OFFSET(&(entry->tune0_high), 0x0000FFDF);
PATCH_OFFSET(&(entry->tune1_low), 0x021107FF); PATCH_OFFSET(&(entry->tune1_low), 0x021107FF);
PATCH_OFFSET(&(entry->tune1_high), 0x00000000); PATCH_OFFSET(&(entry->tune1_high), 0x27307ff);
break; break;
case 4: case 4:
PATCH_OFFSET(&(entry->tune0_low), 0x0000FFA2); // EOS Uv4 PATCH_OFFSET(&(entry->tune0_low), 0x0000FFFF); // EOS Uv4
PATCH_OFFSET(&(entry->tune0_high), 0x0000FFFF); PATCH_OFFSET(&(entry->tune0_high), 0x0000FFDF);
PATCH_OFFSET(&(entry->tune1_low), 0x021107FF); PATCH_OFFSET(&(entry->tune1_low), 0x021107FF);
PATCH_OFFSET(&(entry->tune1_high), 0x00000000); PATCH_OFFSET(&(entry->tune1_high), 0x27407ff);
break; break;
case 5: case 5:
PATCH_OFFSET(&(entry->tune0_low), 0x0000FFFF); // EOS UV5 // PATCH_OFFSET(&(entry->tune0_low), 0x0000FFFF); // EOS UV5
PATCH_OFFSET(&(entry->tune0_high), 0x0000FFFF); PATCH_OFFSET(&(entry->tune0_high), 0x0000FFDF);
PATCH_OFFSET(&(entry->tune1_low), 0x021107FF); PATCH_OFFSET(&(entry->tune1_low), 0x21607ff);
PATCH_OFFSET(&(entry->tune1_high), 0x022217FF); PATCH_OFFSET(&(entry->tune1_high), 0x27707ff);
break; break;
case 6: case 6:
PATCH_OFFSET(&(entry->tune0_low), 0x0000FFFF); // EOS UV6 // PATCH_OFFSET(&(entry->tune0_low), 0x0000FFFF); // EOS UV6
PATCH_OFFSET(&(entry->tune0_high), 0x0000FFFF); PATCH_OFFSET(&(entry->tune0_high), 0x0000FFDF);
PATCH_OFFSET(&(entry->tune1_low), 0x021107FF); PATCH_OFFSET(&(entry->tune1_low), 0x21607ff);
PATCH_OFFSET(&(entry->tune1_high), 0x024417FF); PATCH_OFFSET(&(entry->tune1_high), 0x27807ff);
break; break;
case 7: case 7:
PATCH_OFFSET(&(entry->tune0_low), 0x0000FFFF); // EOS UV6 /// PATCH_OFFSET(&(entry->tune0_low), 0x0000FFFF); // EOS UV6
PATCH_OFFSET(&(entry->tune0_high), 0x0000FFFF); PATCH_OFFSET(&(entry->tune0_high), 0x0000FFFF);
PATCH_OFFSET(&(entry->tune1_low), 0x021107FF); PATCH_OFFSET(&(entry->tune1_low), 0x21607ff);
PATCH_OFFSET(&(entry->tune1_high), 0x026617FF); PATCH_OFFSET(&(entry->tune1_high), 0x27b07ff);
break; break;
// case 8: // case 8:
// PATCH_OFFSET(&(entry->tune0_low), 0x0000FFFF); // EOS UV6 // PATCH_OFFSET(&(entry->tune0_low), 0x0000FFFF); // EOS UV6
@@ -141,6 +142,7 @@ namespace ams::ldr::oc::pcv::mariko {
R_SUCCEED(); R_SUCCEED();
} }
Result GpuFreqMaxAsm(u32 *ptr32) { Result GpuFreqMaxAsm(u32 *ptr32) {
// Check if both two instructions match the pattern // Check if both two instructions match the pattern
u32 ins1 = *ptr32, ins2 = *(ptr32 + 1); u32 ins1 = *ptr32, ins2 = *(ptr32 + 1);