Esempio n. 1
0
int InitME(volatile struct me_struct *mei, int devkitVersion)
{
	unsigned int k1;

	k1 = pspSdkSetK1(0);

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

	// initialize the MediaEngine Instance
	mei->start = 0;
	mei->done = 1;
	mei->func = 0;
	mei->param = 0;
	mei->result = 0;
	mei->precache_len = 0;
	mei->precache_addr = 0;
	mei->postcache_len = 0;
	mei->postcache_addr = 0;
	mei->signals = 0;
	mei->init = 1;

	// start the MediaEngine
	
	memcpy((void *)0xbfc00040, me_stub, (int)(me_stub_end - me_stub));
	_sw((unsigned int)me_loop,  0xbfc00600);	// k0
	_sw((unsigned int)mei, 0xbfc00604);			// a0
	sceKernelDcacheWritebackAll();
	if (devkitVersion < 0x03070110)
	{
		sceSysregMeResetEnable();
		sceSysregMeBusClockEnable();
		sceSysregMeResetDisable();
	}
	else
	{
		sceSysregMeResetEnable371();
		sceSysregMeBusClockEnable371();
		sceSysregMeResetDisable371();
	}
	//Find SceMeRpc and disable it(causes indefinate wait when handling events, like suspend)
	PspSysEventHandler *handlers = sceKernelReferSysEventHandler();
	while (handlers != NULL){
		if (strcmp(handlers->name, "SceMeRpc") == 0){
			handler = handlers;
			sceKernelUnregisterSysEventHandler(handler);
			break;
		}
		handlers = handlers->next;
	}

	pspSdkSetK1(k1);

	return 0;
}
Esempio n. 2
0
int InitME(volatile struct me_struct *mei, int devkitVersion)
{
	unsigned int k1;

	k1 = pspSdkSetK1(0);

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

	// initialize the MediaEngine Instance
	mei->start = 0;
	mei->done = 1;
	mei->func = 0;
	mei->param = 0;
	mei->result = 0;
	mei->precache_len = 0;
	mei->precache_addr = 0;
	mei->postcache_len = 0;
	mei->postcache_addr = 0;
	mei->signals = 0;
	mei->init = 1;

	// start the MediaEngine
	memcpy((void *)0xbfc00040, me_stub, (int)(me_stub_end - me_stub));
	_sw((unsigned int)me_loop,  0xbfc00600);	// k0
	_sw((unsigned int)mei, 0xbfc00604);			// a0
	sceKernelDcacheWritebackAll();
	if (devkitVersion < 0x03070110)
	{
		sceSysregMeResetEnable();
		sceSysregMeBusClockEnable();
		sceSysregMeResetDisable();
	}
	else
	{
		sceSysregMeResetEnable371();
		sceSysregMeBusClockEnable371();
		sceSysregMeResetDisable371();
	}

	pspSdkSetK1(k1);

	return 0;
}