Ejemplo n.º 1
0
u16 ReadZodKeys()
{
	u16 pad_status = 0xffff;
	u32 keys = gp2x_joystick_read();

/* DEBUG */
#ifdef WITH_REG_STATS
	if( keys & GP2X_PUSH )
	{
		int regcounter=0;
		for(regcounter = 0; regcounter < 32; regcounter++)
		{
			reg_count[regcounter] = 0; 
			reg_mapped_count[regcounter] = 0;
		}
	}
#endif

	//Read key state
#ifndef IPHONE	
	if (
		keys & GP2X_L && keys & GP2X_R &&
		keys & GP2X_A && keys & GP2X_B &&
		keys & GP2X_X && keys & GP2X_Y )
	{
		psx4all_prof_show();
		psxShutdown();
		CloseComponents();
		
		gp2x_deinit();
		exit(0);
	}
#endif
#if 0
	if( keys & GP2X_SELECT )
	{
		SkipReset = !SkipReset;
		gp2x_printf(NULL, 0, 0, "SkipReset %s           ", SkipReset == 0 ? "OFF" : "ON" );
		gp2x_video_flip();
		gp2x_timer_delay(1000);		
	}
	if( keys & GP2X_L )
	{
		if( skipCount > 0 ) skipCount--;
		gp2x_printf(NULL, 0, 0, "skipCount %d            ", skipCount);
		gp2x_video_flip();
		gp2x_timer_delay(250);
	}
	if( keys & GP2X_R )
	{
		skipCount++;
		gp2x_printf(NULL, 0, 0, "skipCount %d            ", skipCount);
		gp2x_video_flip();
		gp2x_timer_delay(250);
	}
	if( keys & GP2X_VOL_DOWN )
	{
		if( skipRate > 0 ) skipRate--;
		gp2x_printf(NULL, 0, 0, "skipRate %d            ", skipRate);
		gp2x_video_flip();
		gp2x_timer_delay(250);
	}
	if( keys & GP2X_VOL_UP )
	{
		skipRate++;
		gp2x_printf(NULL, 0, 0, "skipRate %d            ", skipRate);
		gp2x_video_flip();
		gp2x_timer_delay(250);
	}
#endif
	if( keys & GP2X_VOL_DOWN && keys & GP2X_VOL_UP )
	{
#ifdef GP2X_SDL
		// Menu system
		u32 w = sdlscreen->w;
		u32 h = sdlscreen->h;

		gp2x_change_res(320, 240);
#endif

		if( 0 != SelectGame() )
		{
			psx4all_emulating=1;
			psx4all_prof_start(PROFILER_TOTAL);
			psxCpu->Execute();
			psx4all_prof_end(PROFILER_TOTAL);
			psx4all_emulating=0;

			psx4all_prof_show();
		}
#ifdef GP2X_SDL
		gp2x_change_res(w, h);	
#endif
	}

/*
	if( keys & GP2X_PUSH && displayVideoMemory)
    primitiveDebugMode = true;
  else
    primitiveDebugMode = false;
*/
	if(	keys & GP2X_R &&
		keys & GP2X_VOL_DOWN )
	{
		// Underclock
    u32 newClock = (PsxClockMult>2) ? (PsxClockMult-1) : PsxClockMult;
    UpdateClock (newClock);
    gp2x_printf(NULL, 0, 0, "PSX CLOCK %d %%            ", newClock);
		gp2x_video_flip();
		gp2x_timer_delay(250);
	}


	if( 	keys & GP2X_R &&
		keys & GP2X_VOL_UP )
	{
		// Overclock
    u32 newClock = (PsxClockMult<200) ? (PsxClockMult+1) : PsxClockMult;
    UpdateClock (newClock);
    gp2x_printf(NULL, 0, 0, "PSX CLOCK %d %%            ", newClock);
		gp2x_video_flip();
		gp2x_timer_delay(250);
	}

	if(	keys & GP2X_L &&
		keys & GP2X_VOL_DOWN )
	{
		// Underclock
		PsxCycleMult = (PsxCycleMult>0.2) ? (PsxCycleMult-0.1) : PsxCycleMult;
		gp2x_printf(NULL, 0, 0, "PSX CYCLE %f               ", PsxCycleMult);
#ifdef DYNAREC
		psxCpu->Reset();
#endif
		gp2x_video_flip();
		gp2x_timer_delay(250);
	}


	if( 	keys & GP2X_L &&
		keys & GP2X_VOL_UP )
	{
		// Overclock
    		PsxCycleMult = (PsxCycleMult<10.0) ? (PsxCycleMult+0.1) : PsxCycleMult;
    		gp2x_printf(NULL, 0, 0, "PSX CYCLE %f               ", PsxCycleMult);
#ifdef DYNAREC
		psxCpu->Reset();
#endif
		gp2x_video_flip();
		gp2x_timer_delay(250);
	}

	if(	keys & GP2X_VOL_DOWN ) // L2
	{
		pad_status &= ~(1<<8);
	}
	
	if( keys & GP2X_VOL_UP ) // R2
	{
		pad_status &= ~(1<<9);
	}

	if (keys & GP2X_UP)
	{
		pad_status &= ~(1<<4); 
	}
	if (keys & GP2X_DOWN)
	{
		pad_status &= ~(1<<6);
	}
	if (keys & GP2X_LEFT)
	{
		pad_status &= ~(1<<7);
	}
	if (keys & GP2X_RIGHT)
	{
		pad_status &= ~(1<<5);
	}
	if (keys & GP2X_START)
	{
		pad_status &= ~(1<<3);
	}
	if (keys & GP2X_SELECT)
	{			
		pad_status &= ~(1);
	}
	if (keys & GP2X_L)
	{
		pad_status &= ~(1<<10); // L ?
	}
	if (keys & GP2X_R)
	{
		pad_status &= ~(1<<11); // R ?
	}
		
	if (keys & GP2X_X)
	{
		pad_status &= ~(1<<14);
	}
	if (keys & GP2X_B)
	{
		pad_status &= ~(1<<13);
	}
	if (keys & GP2X_A)
	{
		pad_status &= ~(1<<15);
	}
	if (keys & GP2X_Y)
	{
		pad_status &= ~(1<<12);
	}

	return pad_status;
}
Ejemplo n.º 2
0
u16 ReadZodKeys()
{
    u16 pad_status = 0xffff;
    u32 keys = gp2x_joystick_read();

#ifdef PANDORA
    if(	keys & GP2X_PUSH && keys & GP2X_L ) // L2
    {
        keys |= GP2X_VOL_DOWN;
    }
    if(	keys & GP2X_PUSH && keys & GP2X_R ) // R2
    {
        keys |= GP2X_VOL_UP;
    }
#endif

    if(	keys & GP2X_VOL_DOWN ) // L2
    {
        pad_status &= ~(1<<8);
    }
    if (keys & GP2X_L)
    {
        pad_status &= ~(1<<10); // L ?
    }

    if( keys & GP2X_VOL_UP ) // R2
    {
        pad_status &= ~(1<<9);
    }
    if (keys & GP2X_R)
    {
        pad_status &= ~(1<<11); // R ?
    }

    if (keys & GP2X_UP)
    {
        pad_status &= ~(1<<4);
    }
    if (keys & GP2X_DOWN)
    {
        pad_status &= ~(1<<6);
    }
    if (keys & GP2X_LEFT)
    {
        pad_status &= ~(1<<7);
    }
    if (keys & GP2X_RIGHT)
    {
        pad_status &= ~(1<<5);
    }
    if (keys & GP2X_START)
    {
        pad_status &= ~(1<<3);
    }
    if (keys & GP2X_SELECT)
    {
        pad_status &= ~(1);
    }

    if (keys & GP2X_X)
    {
        pad_status &= ~(1<<14);
    }
    if (keys & GP2X_B)
    {
        pad_status &= ~(1<<13);
    }
    if (keys & GP2X_A)
    {
        pad_status &= ~(1<<15);
    }
    if (keys & GP2X_Y)
    {
        pad_status &= ~(1<<12);
    }

#if !defined(IPHONE) && !defined(ANDROID)
    if( (keys & GP2X_L) && (keys & GP2X_R) && (keys & GP2X_X) && (keys & GP2X_Y) && (keys & GP2X_A) && (keys & GP2X_B) )
    {
        SysClose();
    }
    if( keys == GP2X_PUSH )
    {
        // Menu system
        u32 w = gp2xscreen_width;
        u32 h = gp2xscreen_height;
        u32 isRGB24;

        gp2x_change_res(320, 240, 16);
        gp2x_sound_thread_mute();

        if( 0 != SelectOptions() )
        {
            GPU_force_res_change = 1;
            psx4all_emulating=1;
            psxCpu->Execute();
            psx4all_emulating=0;
        }
#if !defined(ANDROID)
        gp2x_sound_thread_play(NULL);
#endif
        isRGB24 = (GPU_GP1 & 0x00200000 ? 32 : 0);
        gp2x_change_res(w, h, isRGB24 ? 24 : 16);
    }
#endif

    return pad_status;
}