void dogamehooks(void *addr, u32 len) { void *addr_start = addr; void *addr_end = addr+len; while(addr_start < addr_end) { switch(hooktype) { case 0: break; case 1: if(memcmp(addr_start, viwiihooks, sizeof(viwiihooks))==0){ // printf("\n\n\n"); // printf("found at address %x\n", addr_start); // sleep(2); patchhook((u32)addr_start, len); patched = 1; hooktype = 1; } break; /* case 2: if(memcmp(addr_start, kpadhooks, sizeof(kpadhooks))==0){ patchhook((u32)addr_start, len); patched = 1; } if(memcmp(addr_start, kpadoldhooks, sizeof(kpadoldhooks))==0){ patchhook((u32)addr_start, len); patched = 1; } break; case 3: if(memcmp(addr_start, joypadhooks, sizeof(joypadhooks))==0){ patchhook((u32)addr_start, len); patched = 1; } break; case 4: if(memcmp(addr_start, recoveryhooks, sizeof(recoveryhooks))==0){ patchhook3((u32)addr_start, len); } break; */ case 2: if(memcmp(addr_start, viwiihooks, sizeof(viwiihooks))==0){ patchhook2((u32)addr_start, len); } break; /* case 6: // jap region free if(memcmp(addr_start, regionfreehooks, sizeof(regionfreehooks))==0){ regionfreejap((u32)addr_start, len); } // usa region free if(memcmp(addr_start, regionfreehooks, sizeof(regionfreehooks))==0){ regionfreeusa((u32)addr_start, len); } // pal region free if(memcmp(addr_start, regionfreehooks, sizeof(regionfreehooks))==0){ regionfreepal((u32)addr_start, len); } // skip disc update if(memcmp(addr_start, updatecheckhook, sizeof(updatecheckhook))==0){ patchupdatecheck((u32)addr_start, len); } break; case 7: if(memcmp(addr_start, healthcheckhook, sizeof(healthcheckhook))==0){ removehealthcheck((u32)addr_start, len); } break; // no copy flags case 8: // Remove the actual flag so can copy back if(memcmp(addr_start, nocopyflag5, sizeof(nocopyflag5))==0){ copyflagcheck5((u32)addr_start, len); } if(memcmp(addr_start, nocopyflag1, sizeof(nocopyflag1))==0){ copyflagcheck1((u32)addr_start, len); } if(memcmp(addr_start, nocopyflag2, sizeof(nocopyflag2))==0){ copyflagcheck2((u32)addr_start, len); } // no VC and GH3 save if(memcmp(addr_start, nocopyflag3, sizeof(nocopyflag2))==0){ copyflagcheck3((u32)addr_start, len); } // no VC and GH3 save display remove if(memcmp(addr_start, nocopyflag4, sizeof(nocopyflag4))==0){ copyflagcheck4((u32)addr_start, len); } break; case 9: if(memcmp(addr_start, movedvdpatch, sizeof(movedvdpatch))==0){ movedvdhooks((u32)addr_start, len); } break; */ // multidol case 3: if(memcmp(addr_start, multidolpatch1, sizeof(multidolpatch1))==0){ multidolpatchone((u32)addr_start, len); } if(memcmp(addr_start, multidolpatch2, sizeof(multidolpatch2))==0){ multidolpatchtwo((u32)addr_start, len); } break; } addr_start += 4; } }
void patchmenu(void *addr, u32 len, int patchnum) { void *addr_start = addr; void *addr_end = addr+len; wifi_printf("patchcode_patchmenu: patchnum value = %d\n", patchnum); while(addr_start < addr_end) { switch (patchnum) { case 0: if(memcmp(addr_start, recoveryhooks, sizeof(recoveryhooks))==0){ patchhook3((u32)addr_start, len); menuhook = 1; wifi_printf("patchcode_patchmenu: found recoveryhooks = %08X\n", (u32)addr_start); } break; case 1: if(memcmp(addr_start, viwiihooks, sizeof(viwiihooks))==0){ patchhook2((u32)addr_start, len); menuhook = 1; wifi_printf("patchcode_patchmenu: found viwiihooks = %08X\n", (u32)addr_start); } break; case 2: // jap region free if(memcmp(addr_start, regionfreehooks, sizeof(regionfreehooks))==0){ regionfreejap((u32)addr_start, len); wifi_printf("patchcode_patchmenu: found regionfreejap = %08X\n", (u32)addr_start); } // usa region free if(memcmp(addr_start, regionfreehooks, sizeof(regionfreehooks))==0){ regionfreeusa((u32)addr_start, len); wifi_printf("patchcode_patchmenu: found regionfreeusa = %08X\n", (u32)addr_start); } // pal region free if(memcmp(addr_start, regionfreehooks, sizeof(regionfreehooks))==0){ regionfreepal((u32)addr_start, len); wifi_printf("patchcode_patchmenu: found regionfreepal = %08X\n", (u32)addr_start); } // skip disc update if(memcmp(addr_start, updatecheckhook, sizeof(updatecheckhook))==0){ patchupdatecheck((u32)addr_start, len); wifi_printf("patchcode_patchmenu: found updatecheckhook = %08X\n", (u32)addr_start); } break; // button skip case 3: if(memcmp(addr_start, healthcheckhook, sizeof(healthcheckhook))==0){ removehealthcheck((u32)addr_start, len); wifi_printf("patchcode_patchmenu: found healthcheckhook = %08X\n", (u32)addr_start); } break; // no copy flags case 4: // Remove the actual flag so can copy back if(memcmp(addr_start, nocopyflag5, sizeof(nocopyflag5))==0){ copyflagcheck5((u32)addr_start, len); wifi_printf("patchcode_patchmenu: found nocopyflag5 = %08X\n", (u32)addr_start); } if(memcmp(addr_start, nocopyflag1, sizeof(nocopyflag1))==0){ copyflagcheck1((u32)addr_start, len); wifi_printf("patchcode_patchmenu: found nocopyflag1 = %08X\n", (u32)addr_start); } if(memcmp(addr_start, nocopyflag2, sizeof(nocopyflag2))==0){ copyflagcheck2((u32)addr_start, len); wifi_printf("patchcode_patchmenu: found nocopyflag2 = %08X\n", (u32)addr_start); } if(memcmp(addr_start, nocopyflag3, sizeof(nocopyflag2))==0){ copyflagcheck3((u32)addr_start, len); wifi_printf("patchcode_patchmenu: found nocopyflag3 = %08X\n", (u32)addr_start); } if(memcmp(addr_start, nocopyflag4, sizeof(nocopyflag4))==0){ copyflagcheck4((u32)addr_start, len); wifi_printf("patchcode_patchmenu: found nocopyflag4 = %08X\n", (u32)addr_start); } if(memcmp(addr_start, nocopyflag6, sizeof(nocopyflag6))==0){ copyflagcheck6((u32)addr_start, len); wifi_printf("patchcode_patchmenu: found nocopyflag6 = %08X\n", (u32)addr_start); } if(memcmp(addr_start, nocopyflag7, sizeof(nocopyflag7))==0){ copyflagcheck7((u32)addr_start, len); wifi_printf("patchcode_patchmenu: found nocopyflag7 = %08X\n", (u32)addr_start); } if(memcmp(addr_start, nocopyflag8, sizeof(nocopyflag8))==0){ copyflagcheck8((u32)addr_start, len); wifi_printf("patchcode_patchmenu: found nocopyflag8 = %08X\n", (u32)addr_start); } break; // move disc channel case 5: if(memcmp(addr_start, movedvdpatch, sizeof(movedvdpatch))==0){ movedvdhooks((u32)addr_start, len); wifi_printf("patchcode_patchmenu: found movvedvdhooks = %08X\n", (u32)addr_start); } break; } addr_start += 4; } }