/****************************************************************************
NAME
    setAppState

DESCRIPTION
    Sets a new APP state.
    
*/
void setAppState (mvdAppState state)
{
    DEBUG_STATES(("APP STATE old:[%s] new:[%s]\n", s_app_states[the_app->app_state], s_app_states[state]));
    /* Change the LED flash corresponding to the new state      */
    /* Low battery and battcharging state just change LED flash */
    if(state < AppStateLowBattery)
        the_app->app_state = state;
    
    ledPlayPattern(state);
}
/****************************************************************************
NAME
    setA2dpState

DESCRIPTION
    Sets a new A2DP state for the specified device instance.
    
*/
void setA2dpState(devInstanceTaskData *theInst, mvdA2dpState state)
{
    DEBUG_STATES(("A2DP STATE old:[%s] new:[%s] inst:[0x%x]\n", s_a2dp_states[theInst->a2dp_state], s_a2dp_states[state],(uint16)theInst));
    theInst->a2dp_state = state;
}
Beispiel #3
0
s32 LoadState(s8 *file) {
	DEBUG_STATES("starting %s", __FUNCTION__);
	gzFile f;
	GPUFreeze *gpufP;
	SPUFreeze_t *spufP;
	s32 Size;
	u8 header[32];
	u8 filePath[256];

	sprintf((char *)filePath, "%s", file);
	DEBUG_STATES("opening state");
	f = gzopen((char *)filePath, "rb");
	if (f == NULL) return -1;

	DEBUG_STATES("resetting CPU");
	psxCpu->Reset();

	DEBUG_STATES("reading header");
	gzread(f, header, 32);

	if (strncmp("PSX STATE", (char *)header, 9)) { gzclose(f); return -1; }

	DEBUG_STATES("reading pointless memory");
#if 0 /* doesn't seem to work */
	gzseek(f, 128*96*3, SEEK_CUR);
#else
	u8 *pMem = (u8 *) malloc(128*96*3);
	if (pMem == NULL) return -1;
	gzread(f, pMem, 128*96*3);
	free(pMem);
#endif	

	DEBUG_STATES("reading real memory");
	gzread(f, psxM, 0x00200000);
	gzread(f, psxR, 0x00080000);
	gzread(f, psxH, 0x00010000);

	DEBUG_STATES("reading registers");
	gzread(f, (void*)psxRegs, sizeof(psxRegisters));

	// gpu
	DEBUG_STATES("allocating GPUFreeze");
	gpufP = (GPUFreeze *) malloc (sizeof(GPUFreeze));
	if (!gpufP) {
		DEBUG_STATES("out of memory");
		return -1;
	}
	DEBUG_STATES("reading GPU state");
	gzread(f, gpufP, sizeof(GPUFreeze));
	GPU_freeze(0, gpufP);
	free(gpufP);

	// spu
	gzread(f, &Size, 4);
	DEBUG_STATES("reading SPU state at %d, size %d", gztell(f), Size);
	spufP = (SPUFreeze_t *) malloc (Size);
	gzread(f, spufP, Size);
	SPU_freeze(0, spufP);
	free(spufP);

	DEBUG_STATES("unfreezing stuff");
	sioFreeze(f, 0);
	cdrFreeze(f, 0);
	psxHwFreeze(f, 0);
	psxRcntFreeze(f, 0);
	mdecFreeze(f, 0);

	DEBUG_STATES("closing state");
	gzclose(f);
	
	DEBUG_STATES("ending %s", __FUNCTION__);
	return 0;
}
Beispiel #4
0
s32 SaveState(s8 *file) {
	DEBUG_STATES("starting %s", __FUNCTION__);
	gzFile f;
//GPUFREEZE *gpufP;
	GPUFreeze*    gpufP;
	SPUFreeze_t*  spufP;
	s32 Size;
	u8* pMem;
	s8 filePath[256];

	sprintf(filePath, "%s", file);

	DEBUG_STATES("opening file");
	f = gzopen(filePath, "wb");
	if (f == NULL) return -1;

	DEBUG_STATES("writing header");
	gzwrite(f, (void*)PsxHeader, 32);

	DEBUG_STATES("allocating useless memory");
	pMem = (u8 *) malloc(128*96*3);
	if (pMem == NULL) return -1;
//GPU_getScreenPic(pMem);
	gzwrite(f, pMem, 128*96*3);
	free(pMem);

	DEBUG_STATES("writing memory state");
	gzwrite(f, psxM, 0x00200000);
	gzwrite(f, psxR, 0x00080000);
	gzwrite(f, psxH, 0x00010000);

	DEBUG_STATES("writing registers");
	gzwrite(f, (void*)psxRegs, sizeof(psxRegisters));

	// gpu
	DEBUG_STATES("allocating GPU memory");
	gpufP = (GPUFreeze *) malloc(sizeof(GPUFreeze));
	if (!gpufP) {
		DEBUG_STATES("out of memory");
		return -1;
	}
	gpufP->Version = 1;
	GPU_freeze(1, gpufP);
	DEBUG_STATES("writing GPU memory");
	gzwrite(f, gpufP, sizeof(GPUFreeze));
	free(gpufP);

	// spu
	DEBUG_STATES("writing SPU");
	spufP = (SPUFreeze_t *) malloc(16);
	SPU_freeze(2, spufP);
	Size = spufP->ulFreezeSize; gzwrite(f, &Size, 4);
	DEBUG_STATES("SPU size %d, writing at %d", Size, gztell(f));
	free(spufP);
	spufP = (SPUFreeze_t *) malloc(Size);
	SPU_freeze(1, spufP);
	gzwrite(f, spufP, Size);
	free(spufP);

	sioFreeze(f, 1);
	cdrFreeze(f, 1);
	psxHwFreeze(f, 1);
	psxRcntFreeze(f, 1);
	mdecFreeze(f, 1);

	DEBUG_STATES("closing file");
	gzclose(f);

	DEBUG_STATES("ending %s", __FUNCTION__);
	return 0;
}