mirror of
https://github.com/libretro/RetroArch
synced 2025-03-27 05:37:40 +00:00
(GX) initial forwarder support, still needs work on returning to forwarder
This commit is contained in:
parent
c163d0a298
commit
d87cb51848
@ -23,7 +23,10 @@ enum
|
||||
{
|
||||
EXTERN_LAUNCHER_SALAMANDER,
|
||||
#ifdef HAVE_MULTIMAN
|
||||
EXTERN_LAUNCHER_MULTIMAN
|
||||
EXTERN_LAUNCHER_MULTIMAN,
|
||||
#endif
|
||||
#ifdef HW_RVL
|
||||
EXTERN_LAUNCHER_CHANNEL,
|
||||
#endif
|
||||
};
|
||||
|
||||
|
@ -271,7 +271,7 @@ static void render_messagebox(rgui_handle_t *rgui, const char *message)
|
||||
|
||||
static void render_text(rgui_handle_t *rgui)
|
||||
{
|
||||
if (rgui->need_refresh && g_console.mode_switch == MODE_MENU)
|
||||
if (rgui->need_refresh && g_console.mode_switch == MODE_MENU && !rgui->msg_force)
|
||||
return;
|
||||
|
||||
size_t begin = rgui->directory_ptr >= TERM_HEIGHT / 2 ?
|
||||
@ -776,6 +776,7 @@ void rgui_viewport_iterate(rgui_handle_t *rgui, rgui_action_t action)
|
||||
}
|
||||
driver.video->apply_state_changes();
|
||||
break;
|
||||
|
||||
case RGUI_ACTION_DOWN:
|
||||
if (menu_type == RGUI_SETTINGS_CUSTOM_VIEWPORT)
|
||||
{
|
||||
@ -788,6 +789,7 @@ void rgui_viewport_iterate(rgui_handle_t *rgui, rgui_action_t action)
|
||||
}
|
||||
driver.video->apply_state_changes();
|
||||
break;
|
||||
|
||||
case RGUI_ACTION_LEFT:
|
||||
if (menu_type == RGUI_SETTINGS_CUSTOM_VIEWPORT)
|
||||
{
|
||||
@ -800,6 +802,7 @@ void rgui_viewport_iterate(rgui_handle_t *rgui, rgui_action_t action)
|
||||
}
|
||||
driver.video->apply_state_changes();
|
||||
break;
|
||||
|
||||
case RGUI_ACTION_RIGHT:
|
||||
if (menu_type == RGUI_SETTINGS_CUSTOM_VIEWPORT)
|
||||
{
|
||||
@ -812,6 +815,7 @@ void rgui_viewport_iterate(rgui_handle_t *rgui, rgui_action_t action)
|
||||
}
|
||||
driver.video->apply_state_changes();
|
||||
break;
|
||||
|
||||
case RGUI_ACTION_CANCEL:
|
||||
if (menu_type == RGUI_SETTINGS_CUSTOM_VIEWPORT_2)
|
||||
{
|
||||
@ -823,6 +827,7 @@ void rgui_viewport_iterate(rgui_handle_t *rgui, rgui_action_t action)
|
||||
rgui_list_pop(rgui->path_stack);
|
||||
}
|
||||
break;
|
||||
|
||||
case RGUI_ACTION_OK:
|
||||
if (menu_type == RGUI_SETTINGS_CUSTOM_VIEWPORT)
|
||||
{
|
||||
@ -834,6 +839,7 @@ void rgui_viewport_iterate(rgui_handle_t *rgui, rgui_action_t action)
|
||||
rgui_list_pop(rgui->path_stack);
|
||||
}
|
||||
break;
|
||||
|
||||
case RGUI_ACTION_START:
|
||||
#ifdef GEKKO
|
||||
if (menu_type == RGUI_SETTINGS_CUSTOM_VIEWPORT)
|
||||
@ -851,9 +857,15 @@ void rgui_viewport_iterate(rgui_handle_t *rgui, rgui_action_t action)
|
||||
#endif
|
||||
driver.video->apply_state_changes();
|
||||
break;
|
||||
|
||||
case RGUI_ACTION_SETTINGS:
|
||||
rgui_list_pop(rgui->path_stack);
|
||||
break;
|
||||
|
||||
case RGUI_ACTION_MESSAGE:
|
||||
rgui->msg_force = true;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -933,6 +945,10 @@ void rgui_settings_iterate(rgui_handle_t *rgui, rgui_action_t action)
|
||||
rgui->need_refresh = true;
|
||||
break;
|
||||
|
||||
case RGUI_ACTION_MESSAGE:
|
||||
rgui->msg_force = true;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -964,7 +980,7 @@ void rgui_iterate(rgui_handle_t *rgui, rgui_action_t action)
|
||||
return rgui_settings_iterate(rgui, action);
|
||||
else if (rgui_is_viewport_menu(menu_type))
|
||||
return rgui_viewport_iterate(rgui, action);
|
||||
if (rgui->need_refresh)
|
||||
if (rgui->need_refresh && action != RGUI_ACTION_MESSAGE)
|
||||
action = RGUI_ACTION_NOOP;
|
||||
|
||||
switch (action)
|
||||
@ -1078,6 +1094,10 @@ void rgui_iterate(rgui_handle_t *rgui, rgui_action_t action)
|
||||
}
|
||||
return rgui_settings_iterate(rgui, RGUI_ACTION_REFRESH);
|
||||
|
||||
case RGUI_ACTION_MESSAGE:
|
||||
rgui->msg_force = true;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -90,6 +90,7 @@ typedef enum
|
||||
RGUI_ACTION_REFRESH,
|
||||
RGUI_ACTION_SETTINGS,
|
||||
RGUI_ACTION_START,
|
||||
RGUI_ACTION_MESSAGE,
|
||||
RGUI_ACTION_NOOP
|
||||
} rgui_action_t;
|
||||
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include "../../console/rarch_console_exec.h"
|
||||
#include "../../console/rarch_console_input.h"
|
||||
#include "../../console/rarch_console_main_wrap.h"
|
||||
#include "../../console/rarch_console_settings.h"
|
||||
|
||||
#include "../mem2_manager.h"
|
||||
|
||||
@ -379,9 +380,9 @@ static void menu_init(void)
|
||||
rgui = rgui_init("",
|
||||
menu_framebuf, RGUI_WIDTH * sizeof(uint32_t),
|
||||
NULL /* _binary_console_font_bmp_start */, _binary_console_font_bin_start, folder_cb, NULL);
|
||||
rgui_iterate(rgui, RGUI_ACTION_REFRESH);
|
||||
|
||||
g_console.mode_switch = MODE_MENU;
|
||||
rgui_iterate(rgui, RGUI_ACTION_REFRESH);
|
||||
}
|
||||
|
||||
static void menu_free(void)
|
||||
@ -401,16 +402,16 @@ static void get_environment_settings(void)
|
||||
if (device_end)
|
||||
snprintf(default_paths.port_dir, sizeof(default_paths.port_dir), "%.*s/retroarch", device_end - default_paths.core_dir, default_paths.core_dir);
|
||||
else
|
||||
snprintf(default_paths.port_dir, sizeof(default_paths.port_dir), "/retroarch");
|
||||
strlcpy(default_paths.port_dir, "/retroarch", sizeof(default_paths.port_dir));
|
||||
snprintf(default_paths.config_file, sizeof(default_paths.config_file), "%s/retroarch.cfg", default_paths.port_dir);
|
||||
snprintf(default_paths.system_dir, sizeof(default_paths.system_dir), "%s/system", default_paths.port_dir);
|
||||
snprintf(default_paths.savestate_dir, sizeof(default_paths.savestate_dir), "%s/savestates", default_paths.port_dir);
|
||||
snprintf(default_paths.filesystem_root_dir, sizeof(default_paths.filesystem_root_dir), "/");
|
||||
strlcpy(default_paths.filesystem_root_dir, "/", sizeof(default_paths.filesystem_root_dir));
|
||||
snprintf(default_paths.filebrowser_startup_dir, sizeof(default_paths.filebrowser_startup_dir), default_paths.filesystem_root_dir);
|
||||
snprintf(default_paths.sram_dir, sizeof(default_paths.sram_dir), "%s/sram", default_paths.port_dir);
|
||||
snprintf(default_paths.input_presets_dir, sizeof(default_paths.input_presets_dir), "%s/input", default_paths.port_dir);
|
||||
strlcpy(default_paths.executable_extension, ".dol", sizeof(default_paths.executable_extension));
|
||||
snprintf(default_paths.salamander_file, sizeof(default_paths.salamander_file), "boot.dol");
|
||||
strlcpy(default_paths.salamander_file, "boot.dol", sizeof(default_paths.salamander_file));
|
||||
}
|
||||
|
||||
#define MAKE_FILE(x) {\
|
||||
@ -448,7 +449,7 @@ static void make_directories(void)
|
||||
MAKE_FILE(default_paths.config_file);
|
||||
}
|
||||
|
||||
int main(void)
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
#ifdef HW_RVL
|
||||
IOS_ReloadIOS(IOS_GetVersion());
|
||||
@ -521,6 +522,26 @@ int main(void)
|
||||
|
||||
menu_init();
|
||||
|
||||
if (argc > 2 && argv[1] != NULL && argv[2] != NULL)
|
||||
{
|
||||
char rom[PATH_MAX];
|
||||
g_console.external_launcher_support = EXTERN_LAUNCHER_CHANNEL;
|
||||
snprintf(rom, sizeof(rom), "%s%s", argv[1], argv[2]);
|
||||
g_console.zip_extract_mode = ZIP_EXTRACT_TO_CURRENT_DIR_AND_LOAD_FIRST_FILE;
|
||||
rarch_console_load_game_wrap(rom, g_console.zip_extract_mode, S_DELAY_1);
|
||||
|
||||
rgui_iterate(rgui, RGUI_ACTION_MESSAGE);
|
||||
gx->menu_render = true;
|
||||
rarch_render_cached_frame();
|
||||
gx->menu_render = false;
|
||||
|
||||
rarch_startup(default_paths.config_file);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_console.external_launcher_support = EXTERN_LAUNCHER_SALAMANDER;
|
||||
}
|
||||
|
||||
begin_loop:
|
||||
if(g_console.mode_switch == MODE_EMULATION)
|
||||
{
|
||||
@ -551,6 +572,7 @@ begin_loop:
|
||||
|
||||
begin_shutdown:
|
||||
rarch_config_save(default_paths.config_file);
|
||||
config_save_keybinds(input_path);
|
||||
|
||||
if(g_console.emulator_initialized)
|
||||
rarch_main_deinit();
|
||||
@ -568,8 +590,7 @@ begin_shutdown:
|
||||
|
||||
if(g_console.return_to_launcher)
|
||||
rarch_console_exec(g_console.launch_app_on_exit);
|
||||
config_save_keybinds(input_path);
|
||||
|
||||
return 1;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
@ -18,22 +18,25 @@ u32 MALLOC_MEM2 = 0;
|
||||
|
||||
static __inline__ heap_block *__lwp_heap_blockat(heap_block *block, u32 offset)
|
||||
{
|
||||
return (heap_block*) ((char*) block + offset);
|
||||
return (heap_block *) ((char *) block + offset);
|
||||
}
|
||||
|
||||
static __inline__ heap_block *__lwp_heap_usrblockat(void *ptr)
|
||||
{
|
||||
u32 offset = *(((u32*) ptr) - 1);
|
||||
u32 offset = *(((u32 *) ptr) - 1);
|
||||
return __lwp_heap_blockat(ptr, -offset + -HEAP_BLOCK_USED_OVERHEAD);
|
||||
}
|
||||
|
||||
static __inline__ bool __lwp_heap_blockin(heap_cntrl *heap, heap_block *block)
|
||||
{
|
||||
return ((u32) block >= (u32) heap->start && (u32) block <= (u32)heap->final);
|
||||
return ((u32) block >= (u32) heap->start && (u32) block <= (u32) heap->final);
|
||||
}
|
||||
|
||||
static __inline__ bool __lwp_heap_blockfree(heap_block *block)
|
||||
{
|
||||
return !(block->front_flag & HEAP_BLOCK_USED);
|
||||
}
|
||||
|
||||
static __inline__ u32 __lwp_heap_blocksize(heap_block *block)
|
||||
{
|
||||
return (block->front_flag & ~HEAP_BLOCK_USED);
|
||||
|
Loading…
x
Reference in New Issue
Block a user