mirror of
https://github.com/libretro/RetroArch
synced 2025-02-15 09:40:11 +00:00
(Xbox 1) Bring menu code inline with that of PS3
This commit is contained in:
parent
6146d64474
commit
20490fe81b
@ -170,8 +170,10 @@ enum
|
|||||||
#define MAX_NO_OF_PATH_SETTINGS SETTING_PATH_DEFAULT_ALL+1
|
#define MAX_NO_OF_PATH_SETTINGS SETTING_PATH_DEFAULT_ALL+1
|
||||||
#define MAX_NO_OF_CONTROLS_SETTINGS SETTING_CONTROLS_DEFAULT_ALL+1
|
#define MAX_NO_OF_CONTROLS_SETTINGS SETTING_CONTROLS_DEFAULT_ALL+1
|
||||||
|
|
||||||
|
#ifndef _XBOX
|
||||||
void menu_init (void);
|
void menu_init (void);
|
||||||
void menu_loop (void);
|
void menu_loop (void);
|
||||||
void menu_free (void);
|
void menu_free (void);
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* MENU_H_ */
|
#endif /* MENU_H_ */
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
#include "RetroLaunch/IoSupport.h"
|
#include "RetroLaunch/IoSupport.h"
|
||||||
#include "RetroLaunch/Surface.h"
|
#include "RetroLaunch/Surface.h"
|
||||||
|
|
||||||
|
#include "../../ps3/frontend/menu.h"
|
||||||
#include "../../console/fileio/file_browser.h"
|
#include "../../console/fileio/file_browser.h"
|
||||||
#include "../../gfx/fonts/xdk1_xfonts.h"
|
#include "../../gfx/fonts/xdk1_xfonts.h"
|
||||||
|
|
||||||
@ -48,9 +49,11 @@ int width;
|
|||||||
int height;
|
int height;
|
||||||
wchar_t m_title[128];
|
wchar_t m_title[128];
|
||||||
|
|
||||||
uint16_t input_st;
|
typedef enum {
|
||||||
uint16_t trigger_state;
|
MENU_ROMSELECT_ACTION_OK,
|
||||||
static uint16_t old_input_st = 0;
|
MENU_ROMSELECT_ACTION_GOTO_SETTINGS,
|
||||||
|
MENU_ROMSELECT_ACTION_NOOP,
|
||||||
|
} menu_romselect_action_t;
|
||||||
|
|
||||||
static void display_menubar(void)
|
static void display_menubar(void)
|
||||||
{
|
{
|
||||||
@ -59,32 +62,11 @@ static void display_menubar(void)
|
|||||||
m_menuMainBG.m_imageInfo.Width, m_menuMainBG.m_imageInfo.Height);
|
m_menuMainBG.m_imageInfo.Width, m_menuMainBG.m_imageInfo.Height);
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef enum {
|
static void control_update_wrap(uint16_t *input_state, uint16_t trigger_state)
|
||||||
MENU_ROMSELECT_ACTION_OK,
|
|
||||||
MENU_ROMSELECT_ACTION_GOTO_SETTINGS,
|
|
||||||
MENU_ROMSELECT_ACTION_NOOP,
|
|
||||||
} menu_romselect_action_t;
|
|
||||||
|
|
||||||
static void menu_romselect_iterate(filebrowser_t *filebrowser, menu_romselect_action_t action)
|
|
||||||
{
|
{
|
||||||
switch(action)
|
(void)trigger_state;
|
||||||
{
|
|
||||||
case MENU_ROMSELECT_ACTION_OK:
|
|
||||||
if(filebrowser_get_current_path_isdir(filebrowser))
|
|
||||||
filebrowser_iterate(filebrowser, FILEBROWSER_ACTION_OK);
|
|
||||||
else
|
|
||||||
rarch_console_load_game_wrap(filebrowser_get_current_path(filebrowser), g_console.zip_extract_mode, S_DELAY_45);
|
|
||||||
break;
|
|
||||||
case MENU_ROMSELECT_ACTION_GOTO_SETTINGS:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void control_update_wrap(void)
|
*input_state = 0;
|
||||||
{
|
|
||||||
input_st = 0;
|
|
||||||
input_xinput.poll(NULL);
|
input_xinput.poll(NULL);
|
||||||
|
|
||||||
static const struct retro_keybind *binds[MAX_PLAYERS] = {
|
static const struct retro_keybind *binds[MAX_PLAYERS] = {
|
||||||
@ -100,11 +82,44 @@ static void control_update_wrap(void)
|
|||||||
|
|
||||||
for (unsigned i = 0; i < RARCH_FIRST_META_KEY; i++)
|
for (unsigned i = 0; i < RARCH_FIRST_META_KEY; i++)
|
||||||
{
|
{
|
||||||
input_st |= input_xinput.input_state(NULL, binds, false,
|
*input_state |= input_xinput.input_state(NULL, binds, false,
|
||||||
RETRO_DEVICE_JOYPAD, 0, i) ? (1 << i) : 0;
|
RETRO_DEVICE_JOYPAD, 0, i) ? (1 << i) : 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void browser_update(filebrowser_t * b, uint16_t input, const char *extensions)
|
||||||
|
{
|
||||||
|
filebrowser_action_t action = FILEBROWSER_ACTION_NOOP;
|
||||||
|
|
||||||
|
if (input & (1 << RETRO_DEVICE_ID_JOYPAD_DOWN))
|
||||||
|
action = FILEBROWSER_ACTION_DOWN;
|
||||||
|
else if (input & (1 << RETRO_DEVICE_ID_JOYPAD_UP))
|
||||||
|
action = FILEBROWSER_ACTION_UP;
|
||||||
|
else if (input & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT))
|
||||||
|
action = FILEBROWSER_ACTION_RIGHT;
|
||||||
|
else if (input & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT))
|
||||||
|
action = FILEBROWSER_ACTION_LEFT;
|
||||||
|
else if (input & (1 << RETRO_DEVICE_ID_JOYPAD_R))
|
||||||
|
action = FILEBROWSER_ACTION_SCROLL_DOWN;
|
||||||
|
else if (input & (1 << RETRO_DEVICE_ID_JOYPAD_R2))
|
||||||
|
action = FILEBROWSER_ACTION_SCROLL_DOWN_SMOOTH;
|
||||||
|
else if (input & (1 << RETRO_DEVICE_ID_JOYPAD_L2))
|
||||||
|
action = FILEBROWSER_ACTION_SCROLL_UP_SMOOTH;
|
||||||
|
else if (input & (1 << RETRO_DEVICE_ID_JOYPAD_L))
|
||||||
|
action = FILEBROWSER_ACTION_SCROLL_UP;
|
||||||
|
else if (input & (1 << RETRO_DEVICE_ID_JOYPAD_A))
|
||||||
|
action = FILEBROWSER_ACTION_CANCEL;
|
||||||
|
else if (input & (1 << RETRO_DEVICE_ID_JOYPAD_START))
|
||||||
|
{
|
||||||
|
action = FILEBROWSER_ACTION_RESET;
|
||||||
|
filebrowser_set_root(b, "/");
|
||||||
|
strlcpy(b->extensions, extensions, sizeof(b->extensions));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(action != FILEBROWSER_ACTION_NOOP)
|
||||||
|
filebrowser_iterate(b, action);
|
||||||
|
}
|
||||||
|
|
||||||
static void browser_render(filebrowser_t *b, float current_x, float current_y, float y_spacing)
|
static void browser_render(filebrowser_t *b, float current_x, float current_y, float y_spacing)
|
||||||
{
|
{
|
||||||
xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data;
|
xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data;
|
||||||
@ -141,50 +156,34 @@ static void browser_render(filebrowser_t *b, float current_x, float current_y, f
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void browser_update(filebrowser_t * b, uint16_t inp_state, const char *extensions)
|
static void menu_romselect_iterate(filebrowser_t *filebrowser, menu_romselect_action_t action)
|
||||||
{
|
{
|
||||||
filebrowser_action_t action = FILEBROWSER_ACTION_NOOP;
|
switch(action)
|
||||||
|
|
||||||
if (inp_state & (1 << RETRO_DEVICE_ID_JOYPAD_DOWN))
|
|
||||||
action = FILEBROWSER_ACTION_DOWN;
|
|
||||||
else if (inp_state & (1 << RETRO_DEVICE_ID_JOYPAD_UP))
|
|
||||||
action = FILEBROWSER_ACTION_UP;
|
|
||||||
else if (inp_state & (1 << RETRO_DEVICE_ID_JOYPAD_RIGHT))
|
|
||||||
action = FILEBROWSER_ACTION_RIGHT;
|
|
||||||
else if (inp_state & (1 << RETRO_DEVICE_ID_JOYPAD_LEFT))
|
|
||||||
action = FILEBROWSER_ACTION_LEFT;
|
|
||||||
else if (inp_state & (1 << RETRO_DEVICE_ID_JOYPAD_R))
|
|
||||||
action = FILEBROWSER_ACTION_SCROLL_DOWN;
|
|
||||||
else if (inp_state & (1 << RETRO_DEVICE_ID_JOYPAD_R2))
|
|
||||||
action = FILEBROWSER_ACTION_SCROLL_DOWN_SMOOTH;
|
|
||||||
else if (inp_state & (1 << RETRO_DEVICE_ID_JOYPAD_L2))
|
|
||||||
action = FILEBROWSER_ACTION_SCROLL_UP_SMOOTH;
|
|
||||||
else if (inp_state & (1 << RETRO_DEVICE_ID_JOYPAD_L))
|
|
||||||
action = FILEBROWSER_ACTION_SCROLL_UP;
|
|
||||||
else if (inp_state & (1 << RETRO_DEVICE_ID_JOYPAD_A))
|
|
||||||
action = FILEBROWSER_ACTION_CANCEL;
|
|
||||||
else if (inp_state & (1 << RETRO_DEVICE_ID_JOYPAD_START))
|
|
||||||
{
|
{
|
||||||
action = FILEBROWSER_ACTION_RESET;
|
case MENU_ROMSELECT_ACTION_OK:
|
||||||
filebrowser_set_root(b, "/");
|
if(filebrowser_get_current_path_isdir(filebrowser))
|
||||||
strlcpy(b->extensions, extensions, sizeof(b->extensions));
|
filebrowser_iterate(filebrowser, FILEBROWSER_ACTION_OK);
|
||||||
|
else
|
||||||
|
rarch_console_load_game_wrap(filebrowser_get_current_path(filebrowser), g_console.zip_extract_mode, S_DELAY_45);
|
||||||
|
break;
|
||||||
|
case MENU_ROMSELECT_ACTION_GOTO_SETTINGS:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(action != FILEBROWSER_ACTION_NOOP)
|
|
||||||
filebrowser_iterate(b, action);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void select_rom(void)
|
static void select_rom(uint16_t input)
|
||||||
{
|
{
|
||||||
xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data;
|
xdk_d3d_video_t *d3d = (xdk_d3d_video_t*)driver.video_data;
|
||||||
|
|
||||||
browser_update(&browser, trigger_state, rarch_console_get_rom_ext());
|
browser_update(&browser, input, rarch_console_get_rom_ext());
|
||||||
|
|
||||||
menu_romselect_action_t action = MENU_ROMSELECT_ACTION_NOOP;
|
menu_romselect_action_t action = MENU_ROMSELECT_ACTION_NOOP;
|
||||||
|
|
||||||
if (trigger_state & (1 << RETRO_DEVICE_ID_JOYPAD_B))
|
if (input & (1 << RETRO_DEVICE_ID_JOYPAD_B))
|
||||||
action = MENU_ROMSELECT_ACTION_OK;
|
action = MENU_ROMSELECT_ACTION_OK;
|
||||||
else if (trigger_state & (1 << RETRO_DEVICE_ID_JOYPAD_R3))
|
else if (input & (1 << RETRO_DEVICE_ID_JOYPAD_R3))
|
||||||
{
|
{
|
||||||
LD_LAUNCH_DASHBOARD LaunchData = { XLD_LAUNCH_DASHBOARD_MAIN_MENU };
|
LD_LAUNCH_DASHBOARD LaunchData = { XLD_LAUNCH_DASHBOARD_MAIN_MENU };
|
||||||
XLaunchNewImage( NULL, (LAUNCH_DATA*)&LaunchData );
|
XLaunchNewImage( NULL, (LAUNCH_DATA*)&LaunchData );
|
||||||
@ -273,22 +272,25 @@ void menu_loop(void)
|
|||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
uint16_t input_st = 0;
|
||||||
|
uint16_t trig_state;
|
||||||
|
static uint16_t old_state = 0;
|
||||||
|
|
||||||
d3d->d3d_render_device->Clear(0, NULL, D3DCLEAR_TARGET,
|
d3d->d3d_render_device->Clear(0, NULL, D3DCLEAR_TARGET,
|
||||||
D3DCOLOR_ARGB(0, 0, 0, 0),
|
D3DCOLOR_ARGB(0, 0, 0, 0),
|
||||||
1.0f, 0);
|
1.0f, 0);
|
||||||
|
|
||||||
|
control_update_wrap(&input_st, 0 /* normally trig_state */);
|
||||||
|
trig_state = input_st & ~old_state;
|
||||||
|
|
||||||
d3d->d3d_render_device->BeginScene();
|
d3d->d3d_render_device->BeginScene();
|
||||||
d3d->d3d_render_device->SetFlickerFilter(1);
|
d3d->d3d_render_device->SetFlickerFilter(1);
|
||||||
d3d->d3d_render_device->SetSoftDisplayFilter(1);
|
d3d->d3d_render_device->SetSoftDisplayFilter(1);
|
||||||
|
|
||||||
control_update_wrap();
|
select_rom(trig_state);
|
||||||
|
|
||||||
trigger_state = input_st & ~old_input_st;
|
|
||||||
|
|
||||||
select_rom();
|
|
||||||
browser_render(&browser, m_menuMainRomListPos_x, m_menuMainRomListPos_y, 20);
|
browser_render(&browser, m_menuMainRomListPos_x, m_menuMainRomListPos_y, 20);
|
||||||
|
|
||||||
old_input_st = input_st;
|
old_state = input_st;
|
||||||
|
|
||||||
d3d->d3d_render_device->EndScene();
|
d3d->d3d_render_device->EndScene();
|
||||||
d3d->d3d_render_device->Present(NULL, NULL, NULL, NULL);
|
d3d->d3d_render_device->Present(NULL, NULL, NULL, NULL);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user