mirror of
https://github.com/libretro/RetroArch
synced 2025-02-19 12:41:00 +00:00
commit
b1f6c88626
@ -128,6 +128,7 @@ else
|
||||
OBJS += libretro-common/file/dir_list.o
|
||||
OBJS += libretro-common/file/retro_dirent.o
|
||||
OBJS += libretro-common/file/retro_file.o
|
||||
OBJS += libretro-common/file/retro_stat.o
|
||||
OBJS += dir_list_special.o
|
||||
OBJS += libretro-common/string/string_list.o
|
||||
OBJS += libretro-common/string/stdstring.o
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <boolean.h>
|
||||
|
||||
|
@ -86,6 +86,7 @@ typedef struct ctr_video
|
||||
bool keep_aspect;
|
||||
bool should_resize;
|
||||
|
||||
void* empty_framebuffer;
|
||||
} ctr_video_t;
|
||||
|
||||
static INLINE void ctr_set_scale_vector(ctr_scale_vector_t* vec,
|
||||
@ -341,6 +342,9 @@ static void* ctr_init(const video_info_t* video,
|
||||
ctr->should_resize = true;
|
||||
ctr->smooth = true;
|
||||
|
||||
ctr->empty_framebuffer = linearAlloc(320 * 240 * 2);
|
||||
memset(ctr->empty_framebuffer, 0, 320 * 240 * 2);
|
||||
|
||||
return ctr;
|
||||
}
|
||||
|
||||
@ -357,6 +361,8 @@ static bool ctr_frame(void* data, const void* frame,
|
||||
static int total_frames = 0;
|
||||
static int frames = 0;
|
||||
static struct retro_perf_counter ctrframe_f = {0};
|
||||
uint32_t state_tmp;
|
||||
touchPosition state_tmp_touch;
|
||||
|
||||
extern bool select_pressed;
|
||||
|
||||
@ -378,6 +384,17 @@ static bool ctr_frame(void* data, const void* frame,
|
||||
return true;
|
||||
}
|
||||
|
||||
state_tmp = hidKeysDown();
|
||||
hidTouchRead(&state_tmp_touch);
|
||||
if((state_tmp & KEY_TOUCH) && (state_tmp_touch.py < 120))
|
||||
{
|
||||
extern PrintConsole* currentConsole;
|
||||
if ((u8*)currentConsole->frameBuffer == gfxBottomFramebuffers[0])
|
||||
gfxBottomFramebuffers[0] = (u8*)ctr->empty_framebuffer;
|
||||
else
|
||||
gfxBottomFramebuffers[0] = (u8*)currentConsole->frameBuffer;
|
||||
}
|
||||
|
||||
svcWaitSynchronization(gspEvents[GSPEVENT_P3D], 20000000);
|
||||
svcClearEvent(gspEvents[GSPEVENT_P3D]);
|
||||
svcWaitSynchronization(gspEvents[GSPEVENT_PPF], 20000000);
|
||||
@ -550,6 +567,7 @@ static void ctr_free(void* data)
|
||||
linearFree(ctr->menu.texture_linear);
|
||||
linearFree(ctr->menu.texture_swizzled);
|
||||
linearFree(ctr->menu.frame_coords);
|
||||
linearFree(ctr->empty_framebuffer);
|
||||
linearFree(ctr);
|
||||
// gfxExit();
|
||||
}
|
||||
|
@ -121,15 +121,16 @@ static int16_t ctr_joypad_axis(unsigned port_num, uint32_t joyaxis)
|
||||
|
||||
static void ctr_joypad_poll(void)
|
||||
{
|
||||
int32_t ret;
|
||||
unsigned i, j;
|
||||
uint32_t state_tmp;
|
||||
circlePosition state_tmp_analog;
|
||||
touchPosition state_tmp_touch;
|
||||
|
||||
hidScanInput();
|
||||
|
||||
state_tmp = hidKeysHeld();
|
||||
hidCircleRead(&state_tmp_analog);
|
||||
hidTouchRead(&state_tmp_touch);
|
||||
|
||||
analog_state[0][0][0] = analog_state[0][0][1] =
|
||||
analog_state[0][1][0] = analog_state[0][1][1] = 0;
|
||||
@ -146,9 +147,15 @@ static void ctr_joypad_poll(void)
|
||||
pad_state |= (state_tmp & KEY_A) ? (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_A) : 0;
|
||||
pad_state |= (state_tmp & KEY_R) ? (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_R) : 0;
|
||||
pad_state |= (state_tmp & KEY_L) ? (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_L) : 0;
|
||||
pad_state |= (state_tmp & KEY_ZR) ? (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_R2) : 0;
|
||||
pad_state |= (state_tmp & KEY_ZL) ? (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_L2) : 0;
|
||||
|
||||
analog_state[0][RETRO_DEVICE_INDEX_ANALOG_LEFT] [RETRO_DEVICE_ID_ANALOG_X] = (state_tmp_analog.dx * 200);
|
||||
analog_state[0][RETRO_DEVICE_INDEX_ANALOG_LEFT] [RETRO_DEVICE_ID_ANALOG_Y] = -(state_tmp_analog.dy * 200);
|
||||
analog_state[0][RETRO_DEVICE_INDEX_ANALOG_LEFT] [RETRO_DEVICE_ID_ANALOG_X] = (state_tmp_analog.dx * 200);
|
||||
analog_state[0][RETRO_DEVICE_INDEX_ANALOG_LEFT] [RETRO_DEVICE_ID_ANALOG_Y] = -(state_tmp_analog.dy * 200);
|
||||
analog_state[0][RETRO_DEVICE_INDEX_ANALOG_RIGHT] [RETRO_DEVICE_ID_ANALOG_X] = (state_tmp & KEY_CSTICK_RIGHT)? 0x7fff:
|
||||
(state_tmp & KEY_CSTICK_LEFT)? -0x7fff: 0;
|
||||
analog_state[0][RETRO_DEVICE_INDEX_ANALOG_RIGHT] [RETRO_DEVICE_ID_ANALOG_Y] = (state_tmp & KEY_CSTICK_DOWN)? 0x7fff:
|
||||
(state_tmp & KEY_CSTICK_UP)? -0x7fff: 0;
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
for (j = 0; j < 2; j++)
|
||||
@ -157,7 +164,7 @@ static void ctr_joypad_poll(void)
|
||||
|
||||
BIT64_CLEAR(lifecycle_state, RARCH_MENU_TOGGLE);
|
||||
|
||||
if(state_tmp & KEY_TOUCH)
|
||||
if((state_tmp & KEY_TOUCH) && (state_tmp_touch.py > 120))
|
||||
BIT64_SET(lifecycle_state, RARCH_MENU_TOGGLE);
|
||||
|
||||
/* panic button */
|
||||
|
Loading…
x
Reference in New Issue
Block a user