Exemple #1
0
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;
        }
}
Exemple #2
0
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;
	}
}