Пример #1
0
int sub_16389()
{
	volatile int *hwAddress = (int*)0xbfc00700;
	*hwAddress = -1;
	int* meTable = (int*)0xbfc00600;
	meTable[0] = 399;//copy sceKernelGetMEeDramSaveSize() bytes on me main memory to sceKernelGetMEeDramSaveAddr() then halt me
	meTable[2] = sceKernelGetMEeDramSaveAddr();
	meTable[3] = sceKernelGetMEeDramSaveSize();
	meTable[4] = 0;
	meTable[5] = 0;
	meTable[6] = 0;
	meTable[7] = 0;
	meTable[8] = 0;
	meTable[9] = 0;
	sceDdrFlush(5);
	sceSysregInterruptToOther();
	while (*hwAddress != -2)
	    ;
	sceDdrFlush(8);
	sceSysregMeResetEnable();
	sceSysregMeBusClockDisable();
	*(int*)0xbfc00718 = *(int*)0xbc100070 & 4;
	sceKernelClearEventFlag(meRpc.event, 0);
	return 0;
}
Пример #2
0
void KillME(volatile struct me_struct *mei, int devkitVersion)
{
	unsigned int k1;

	k1 = pspSdkSetK1(0);

	if (mei == 0)
	{
		pspSdkSetK1(k1);
		return;
	}

	mei->init = 0;
	if (devkitVersion == 0x03070110){
		sceSysregVmeResetEnable371();	
		sceSysregAvcResetEnable371();	
		sceSysregMeResetEnable371();
		sceSysregMeBusClockDisable371();
	}
	else{
		sceSysregVmeResetEnable();	
		sceSysregAvcResetEnable();	
		sceSysregMeResetEnable();	
		sceSysregMeBusClockDisable();
	}

	pspSdkSetK1(k1);
}