mirror of
https://github.com/libretro/RetroArch
synced 2024-07-01 07:54:27 +00:00
Compare commits
13 Commits
c02cfd91cf
...
df03dc7cfc
Author | SHA1 | Date | |
---|---|---|---|
|
df03dc7cfc | ||
|
1ebe646198 | ||
|
8aa5fd2658 | ||
|
c570a6a20a | ||
|
286d65b42e | ||
|
00add4bb37 | ||
|
2805694378 | ||
|
05faba73e3 | ||
|
e7c6d1df84 | ||
|
cc92ac7577 | ||
|
27f337d5a0 | ||
|
ab6f9f979b | ||
|
148016c8c4 |
|
@ -69,6 +69,14 @@
|
||||||
#define DEFAULT_ASPECT_RATIO 1.3333f
|
#define DEFAULT_ASPECT_RATIO 1.3333f
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define DEFAULT_VIEWPORT_BIAS_X 0.5
|
||||||
|
#define DEFAULT_VIEWPORT_BIAS_Y 0.5
|
||||||
|
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#define DEFAULT_VIEWPORT_BIAS_PORTRAIT_X 0.5
|
||||||
|
#define DEFAULT_VIEWPORT_BIAS_PORTRAIT_Y 0.0
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(GEKKO)
|
#if defined(GEKKO)
|
||||||
#define DEFAULT_MOUSE_SCALE 1
|
#define DEFAULT_MOUSE_SCALE 1
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1769,6 +1769,8 @@ static struct config_bool_setting *populate_settings_bool(
|
||||||
SETTING_BOOL("location_allow", &settings->bools.location_allow, true, false, false);
|
SETTING_BOOL("location_allow", &settings->bools.location_allow, true, false, false);
|
||||||
SETTING_BOOL("cloud_sync_enable", &settings->bools.cloud_sync_enable, true, false, false);
|
SETTING_BOOL("cloud_sync_enable", &settings->bools.cloud_sync_enable, true, false, false);
|
||||||
SETTING_BOOL("cloud_sync_destructive", &settings->bools.cloud_sync_destructive, true, false, false);
|
SETTING_BOOL("cloud_sync_destructive", &settings->bools.cloud_sync_destructive, true, false, false);
|
||||||
|
SETTING_BOOL("cloud_sync_sync_saves", &settings->bools.cloud_sync_sync_saves, true, true, false);
|
||||||
|
SETTING_BOOL("cloud_sync_sync_configs", &settings->bools.cloud_sync_sync_configs, true, true, false);
|
||||||
SETTING_BOOL("discord_allow", &settings->bools.discord_enable, true, false, false);
|
SETTING_BOOL("discord_allow", &settings->bools.discord_enable, true, false, false);
|
||||||
#ifdef HAVE_MIST
|
#ifdef HAVE_MIST
|
||||||
SETTING_BOOL("steam_rich_presence_enable", &settings->bools.steam_rich_presence_enable, true, false, false);
|
SETTING_BOOL("steam_rich_presence_enable", &settings->bools.steam_rich_presence_enable, true, false, false);
|
||||||
|
@ -2255,6 +2257,12 @@ static struct config_float_setting *populate_settings_float(
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
SETTING_FLOAT("video_aspect_ratio", &settings->floats.video_aspect_ratio, true, DEFAULT_ASPECT_RATIO, false);
|
SETTING_FLOAT("video_aspect_ratio", &settings->floats.video_aspect_ratio, true, DEFAULT_ASPECT_RATIO, false);
|
||||||
|
SETTING_FLOAT("video_viewport_bias_x", &settings->floats.video_viewport_bias_x, true, DEFAULT_VIEWPORT_BIAS_X, false);
|
||||||
|
SETTING_FLOAT("video_viewport_bias_y", &settings->floats.video_viewport_bias_y, true, DEFAULT_VIEWPORT_BIAS_Y, false);
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
SETTING_FLOAT("video_viewport_bias_portrait_x", &settings->floats.video_viewport_bias_portrait_x, true, DEFAULT_VIEWPORT_BIAS_PORTRAIT_X, false);
|
||||||
|
SETTING_FLOAT("video_viewport_bias_portrait_y", &settings->floats.video_viewport_bias_portrait_y, true, DEFAULT_VIEWPORT_BIAS_PORTRAIT_Y, false);
|
||||||
|
#endif
|
||||||
SETTING_FLOAT("video_refresh_rate", &settings->floats.video_refresh_rate, true, DEFAULT_REFRESH_RATE, false);
|
SETTING_FLOAT("video_refresh_rate", &settings->floats.video_refresh_rate, true, DEFAULT_REFRESH_RATE, false);
|
||||||
SETTING_FLOAT("video_autoswitch_pal_threshold", &settings->floats.video_autoswitch_pal_threshold, true, DEFAULT_AUTOSWITCH_PAL_THRESHOLD, false);
|
SETTING_FLOAT("video_autoswitch_pal_threshold", &settings->floats.video_autoswitch_pal_threshold, true, DEFAULT_AUTOSWITCH_PAL_THRESHOLD, false);
|
||||||
SETTING_FLOAT("crt_video_refresh_rate", &settings->floats.crt_video_refresh_rate, true, DEFAULT_CRT_REFRESH_RATE, false);
|
SETTING_FLOAT("crt_video_refresh_rate", &settings->floats.crt_video_refresh_rate, true, DEFAULT_CRT_REFRESH_RATE, false);
|
||||||
|
|
|
@ -375,6 +375,12 @@ typedef struct settings
|
||||||
{
|
{
|
||||||
float placeholder;
|
float placeholder;
|
||||||
float video_aspect_ratio;
|
float video_aspect_ratio;
|
||||||
|
float video_viewport_bias_x;
|
||||||
|
float video_viewport_bias_y;
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
float video_viewport_bias_portrait_x;
|
||||||
|
float video_viewport_bias_portrait_y;
|
||||||
|
#endif
|
||||||
float video_refresh_rate;
|
float video_refresh_rate;
|
||||||
float video_autoswitch_pal_threshold;
|
float video_autoswitch_pal_threshold;
|
||||||
float crt_video_refresh_rate;
|
float crt_video_refresh_rate;
|
||||||
|
@ -954,6 +960,8 @@ typedef struct settings
|
||||||
/* Cloud Sync */
|
/* Cloud Sync */
|
||||||
bool cloud_sync_enable;
|
bool cloud_sync_enable;
|
||||||
bool cloud_sync_destructive;
|
bool cloud_sync_destructive;
|
||||||
|
bool cloud_sync_sync_saves;
|
||||||
|
bool cloud_sync_sync_configs;
|
||||||
|
|
||||||
/* Misc. */
|
/* Misc. */
|
||||||
bool discord_enable;
|
bool discord_enable;
|
||||||
|
|
|
@ -1316,74 +1316,35 @@ void d3d9_calculate_rect(d3d9_video_t *d3d,
|
||||||
{
|
{
|
||||||
float device_aspect = (float)*width / *height;
|
float device_aspect = (float)*width / *height;
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
bool scale_integer = settings->bools.video_scale_integer;
|
bool video_scale_integer = settings->bools.video_scale_integer;
|
||||||
|
struct video_viewport vp;
|
||||||
|
|
||||||
video_driver_get_size(width, height);
|
video_driver_get_size(width, height);
|
||||||
|
|
||||||
*x = 0;
|
vp.x = 0;
|
||||||
*y = 0;
|
vp.y = 0;
|
||||||
|
vp.width = *width;
|
||||||
|
vp.height = *height;
|
||||||
|
vp.full_width = *width;
|
||||||
|
vp.full_height = *height;
|
||||||
|
|
||||||
if (scale_integer && !force_full)
|
if (video_scale_integer && !force_full)
|
||||||
{
|
{
|
||||||
struct video_viewport vp;
|
|
||||||
|
|
||||||
vp.x = 0;
|
|
||||||
vp.y = 0;
|
|
||||||
vp.width = 0;
|
|
||||||
vp.height = 0;
|
|
||||||
vp.full_width = 0;
|
|
||||||
vp.full_height = 0;
|
|
||||||
|
|
||||||
video_viewport_get_scaled_integer(&vp,
|
video_viewport_get_scaled_integer(&vp,
|
||||||
*width,
|
*width,
|
||||||
*height,
|
*height,
|
||||||
video_driver_get_aspect_ratio(),
|
video_driver_get_aspect_ratio(),
|
||||||
d3d->keep_aspect);
|
d3d->keep_aspect,
|
||||||
|
true);
|
||||||
*x = vp.x;
|
|
||||||
*y = vp.y;
|
|
||||||
*width = vp.width;
|
|
||||||
*height = vp.height;
|
|
||||||
}
|
}
|
||||||
else if (d3d->keep_aspect && !force_full)
|
else if (d3d->keep_aspect && !force_full)
|
||||||
{
|
{
|
||||||
float desired_aspect = video_driver_get_aspect_ratio();
|
video_viewport_get_scaled_aspect(&vp, *width, *height, true);
|
||||||
|
|
||||||
#if defined(HAVE_MENU)
|
|
||||||
if (settings->uints.video_aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
|
||||||
{
|
|
||||||
video_viewport_t *custom_vp = &settings->video_viewport_custom;
|
|
||||||
*x = custom_vp->x;
|
|
||||||
*y = custom_vp->y;
|
|
||||||
*width = custom_vp->width;
|
|
||||||
*height = custom_vp->height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
float delta;
|
|
||||||
|
|
||||||
if (fabsf(device_aspect - desired_aspect) < 0.0001f)
|
|
||||||
{
|
|
||||||
/* If the aspect ratios of screen and desired aspect
|
|
||||||
* ratio are sufficiently equal (floating point stuff),
|
|
||||||
* assume they are actually equal.
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
else if (device_aspect > desired_aspect)
|
|
||||||
{
|
|
||||||
delta = (desired_aspect / device_aspect - 1.0f) / 2.0f + 0.5f;
|
|
||||||
*x = (int)(roundf(*width * (0.5f - delta)));
|
|
||||||
*width = (unsigned)(roundf(2.0f * (*width) * delta));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
delta = (device_aspect / desired_aspect - 1.0f) / 2.0f + 0.5f;
|
|
||||||
*y = (int)(roundf(*height * (0.5f - delta)));
|
|
||||||
*height = (unsigned)(roundf(2.0f * (*height) * delta));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
*x = vp.x;
|
||||||
|
*y = vp.y;
|
||||||
|
*width = vp.width;
|
||||||
|
*height = vp.height;
|
||||||
}
|
}
|
||||||
|
|
||||||
void d3d9_set_rotation(void *data, unsigned rot)
|
void d3d9_set_rotation(void *data, unsigned rot)
|
||||||
|
|
|
@ -987,6 +987,8 @@ static LRESULT CALLBACK wnd_proc_common(
|
||||||
mod |= RETROKMOD_CAPSLOCK;
|
mod |= RETROKMOD_CAPSLOCK;
|
||||||
if (GetKeyState(VK_SCROLL) & 0x81)
|
if (GetKeyState(VK_SCROLL) & 0x81)
|
||||||
mod |= RETROKMOD_SCROLLOCK;
|
mod |= RETROKMOD_SCROLLOCK;
|
||||||
|
if (GetKeyState(VK_NUMLOCK) & 0x81)
|
||||||
|
mod |= RETROKMOD_NUMLOCK;
|
||||||
if ((GetKeyState(VK_LWIN) | GetKeyState(VK_RWIN)) & 0x80)
|
if ((GetKeyState(VK_LWIN) | GetKeyState(VK_RWIN)) & 0x80)
|
||||||
mod |= RETROKMOD_META;
|
mod |= RETROKMOD_META;
|
||||||
|
|
||||||
|
@ -1111,6 +1113,8 @@ static LRESULT CALLBACK wnd_proc_common_internal(HWND hwnd,
|
||||||
mod |= RETROKMOD_CAPSLOCK;
|
mod |= RETROKMOD_CAPSLOCK;
|
||||||
if (GetKeyState(VK_SCROLL) & 0x81)
|
if (GetKeyState(VK_SCROLL) & 0x81)
|
||||||
mod |= RETROKMOD_SCROLLOCK;
|
mod |= RETROKMOD_SCROLLOCK;
|
||||||
|
if (GetKeyState(VK_NUMLOCK) & 0x81)
|
||||||
|
mod |= RETROKMOD_NUMLOCK;
|
||||||
if ((GetKeyState(VK_LWIN) | GetKeyState(VK_RWIN)) & 0x80)
|
if ((GetKeyState(VK_LWIN) | GetKeyState(VK_RWIN)) & 0x80)
|
||||||
mod |= RETROKMOD_META;
|
mod |= RETROKMOD_META;
|
||||||
|
|
||||||
|
@ -1369,6 +1373,8 @@ static LRESULT CALLBACK wnd_proc_common_dinput_internal(HWND hwnd,
|
||||||
mod |= RETROKMOD_CAPSLOCK;
|
mod |= RETROKMOD_CAPSLOCK;
|
||||||
if (GetKeyState(VK_SCROLL) & 0x81)
|
if (GetKeyState(VK_SCROLL) & 0x81)
|
||||||
mod |= RETROKMOD_SCROLLOCK;
|
mod |= RETROKMOD_SCROLLOCK;
|
||||||
|
if (GetKeyState(VK_NUMLOCK) & 0x81)
|
||||||
|
mod |= RETROKMOD_NUMLOCK;
|
||||||
if ((GetKeyState(VK_LWIN) | GetKeyState(VK_RWIN)) & 0x80)
|
if ((GetKeyState(VK_LWIN) | GetKeyState(VK_RWIN)) & 0x80)
|
||||||
mod |= RETROKMOD_META;
|
mod |= RETROKMOD_META;
|
||||||
|
|
||||||
|
|
|
@ -595,6 +595,8 @@ static void x11_handle_key_event(unsigned keycode, XEvent *event,
|
||||||
mod |= RETROKMOD_ALT;
|
mod |= RETROKMOD_ALT;
|
||||||
if (state & Mod2Mask)
|
if (state & Mod2Mask)
|
||||||
mod |= RETROKMOD_NUMLOCK;
|
mod |= RETROKMOD_NUMLOCK;
|
||||||
|
if (state & Mod3Mask)
|
||||||
|
mod |= RETROKMOD_SCROLLOCK;
|
||||||
if (state & Mod4Mask)
|
if (state & Mod4Mask)
|
||||||
mod |= RETROKMOD_META;
|
mod |= RETROKMOD_META;
|
||||||
|
|
||||||
|
@ -669,6 +671,8 @@ bool x11_alive(void *data)
|
||||||
case 5: /* Scroll down */
|
case 5: /* Scroll down */
|
||||||
case 6: /* Scroll wheel left */
|
case 6: /* Scroll wheel left */
|
||||||
case 7: /* Scroll wheel right */
|
case 7: /* Scroll wheel right */
|
||||||
|
case 8: /* Mouse button 4 */
|
||||||
|
case 9: /* Mouse button 5 */
|
||||||
x_input_poll_wheel(&event.xbutton, true);
|
x_input_poll_wheel(&event.xbutton, true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -683,6 +687,13 @@ bool x11_alive(void *data)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ButtonRelease:
|
case ButtonRelease:
|
||||||
|
switch (event.xbutton.button)
|
||||||
|
{
|
||||||
|
case 8: /* Mouse button 4 - not handled as click */
|
||||||
|
case 9: /* Mouse button 5 - not handled as click */
|
||||||
|
x_input_poll_wheel(&event.xbutton, true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case KeyRelease:
|
case KeyRelease:
|
||||||
|
|
|
@ -762,52 +762,14 @@ static void ctr_update_viewport(
|
||||||
|
|
||||||
if (video_scale_integer)
|
if (video_scale_integer)
|
||||||
{
|
{
|
||||||
|
/* TODO: does CTR use top-left or bottom-left coordinates? assuming top-left. */
|
||||||
video_viewport_get_scaled_integer(&ctr->vp, ctr->vp.full_width,
|
video_viewport_get_scaled_integer(&ctr->vp, ctr->vp.full_width,
|
||||||
ctr->vp.full_height, desired_aspect, ctr->keep_aspect);
|
ctr->vp.full_height, desired_aspect, ctr->keep_aspect,
|
||||||
|
true);
|
||||||
}
|
}
|
||||||
else if (ctr->keep_aspect)
|
else if (ctr->keep_aspect)
|
||||||
{
|
{
|
||||||
#if defined(HAVE_MENU)
|
video_viewport_get_scaled_aspect(&ctr->vp, width, height, true);
|
||||||
if (aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
|
||||||
{
|
|
||||||
x = custom_vp_x;
|
|
||||||
y = custom_vp_y;
|
|
||||||
width = custom_vp_width;
|
|
||||||
height = custom_vp_height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
float delta;
|
|
||||||
float device_aspect = ((float)ctr->vp.full_width) / ctr->vp.full_height;
|
|
||||||
|
|
||||||
if (fabsf(device_aspect - desired_aspect) < 0.0001f)
|
|
||||||
{
|
|
||||||
/* If the aspect ratios of screen and desired aspect
|
|
||||||
* ratio are sufficiently equal (floating point stuff),
|
|
||||||
* assume they are actually equal.
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
else if (device_aspect > desired_aspect)
|
|
||||||
{
|
|
||||||
delta = (desired_aspect / device_aspect - 1.0f)
|
|
||||||
/ 2.0f + 0.5f;
|
|
||||||
x = (int)roundf(width * (0.5f - delta));
|
|
||||||
width = (unsigned)roundf(2.0f * width * delta);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
delta = (device_aspect / desired_aspect - 1.0f)
|
|
||||||
/ 2.0f + 0.5f;
|
|
||||||
y = (int)roundf(height * (0.5f - delta));
|
|
||||||
height = (unsigned)roundf(2.0f * height * delta);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ctr->vp.x = x;
|
|
||||||
ctr->vp.y = y;
|
|
||||||
ctr->vp.width = width;
|
|
||||||
ctr->vp.height = height;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1164,74 +1164,34 @@ static void d3d8_calculate_rect(void *data,
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
bool video_scale_integer = settings->bools.video_scale_integer;
|
bool video_scale_integer = settings->bools.video_scale_integer;
|
||||||
unsigned aspect_ratio_idx = settings->uints.video_aspect_ratio_idx;
|
unsigned aspect_ratio_idx = settings->uints.video_aspect_ratio_idx;
|
||||||
|
struct video_viewport vp;
|
||||||
|
|
||||||
video_driver_get_size(width, height);
|
video_driver_get_size(width, height);
|
||||||
|
|
||||||
*x = 0;
|
vp.x = 0;
|
||||||
*y = 0;
|
vp.y = 0;
|
||||||
|
vp.width = width;
|
||||||
|
vp.height = height;
|
||||||
|
vp.full_width = width;
|
||||||
|
vp.full_height = height;
|
||||||
|
|
||||||
if (video_scale_integer && !force_full)
|
if (video_scale_integer && !force_full)
|
||||||
{
|
{
|
||||||
struct video_viewport vp;
|
|
||||||
|
|
||||||
vp.x = 0;
|
|
||||||
vp.y = 0;
|
|
||||||
vp.width = 0;
|
|
||||||
vp.height = 0;
|
|
||||||
vp.full_width = 0;
|
|
||||||
vp.full_height = 0;
|
|
||||||
|
|
||||||
video_viewport_get_scaled_integer(&vp,
|
video_viewport_get_scaled_integer(&vp,
|
||||||
*width,
|
*width,
|
||||||
*height,
|
*height,
|
||||||
video_driver_get_aspect_ratio(),
|
video_driver_get_aspect_ratio(),
|
||||||
d3d->keep_aspect);
|
d3d->keep_aspect,
|
||||||
|
true);
|
||||||
*x = vp.x;
|
|
||||||
*y = vp.y;
|
|
||||||
*width = vp.width;
|
|
||||||
*height = vp.height;
|
|
||||||
}
|
}
|
||||||
else if (d3d->keep_aspect && !force_full)
|
else if (d3d->keep_aspect && !force_full)
|
||||||
{
|
{
|
||||||
float desired_aspect = video_driver_get_aspect_ratio();
|
video_viewport_get_scaled_aspect(vp, viewport_width, viewport_height, true);
|
||||||
|
|
||||||
#if defined(HAVE_MENU)
|
|
||||||
if (aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
|
||||||
{
|
|
||||||
video_viewport_t *custom_vp = &settings->video_viewport_custom;
|
|
||||||
|
|
||||||
*x = custom_vp->x;
|
|
||||||
*y = custom_vp->y;
|
|
||||||
*width = custom_vp->width;
|
|
||||||
*height = custom_vp->height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
float delta;
|
|
||||||
|
|
||||||
if (fabsf(device_aspect - desired_aspect) < 0.0001f)
|
|
||||||
{
|
|
||||||
/* If the aspect ratios of screen and desired aspect
|
|
||||||
* ratio are sufficiently equal (floating point stuff),
|
|
||||||
* assume they are actually equal.
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
else if (device_aspect > desired_aspect)
|
|
||||||
{
|
|
||||||
delta = (desired_aspect / device_aspect - 1.0f) / 2.0f + 0.5f;
|
|
||||||
*x = (int)(roundf(*width * (0.5f - delta)));
|
|
||||||
*width = (unsigned)(roundf(2.0f * (*width) * delta));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
delta = (device_aspect / desired_aspect - 1.0f) / 2.0f + 0.5f;
|
|
||||||
*y = (int)(roundf(*height * (0.5f - delta)));
|
|
||||||
*height = (unsigned)(roundf(2.0f * (*height) * delta));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
*x = vp.x;
|
||||||
|
*y = vp.y;
|
||||||
|
*width = vp.width;
|
||||||
|
*height = vp.height;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void d3d8_set_viewport(void *data,
|
static void d3d8_set_viewport(void *data,
|
||||||
|
|
|
@ -1227,54 +1227,16 @@ static void gl1_set_viewport(gl1_t *gl1,
|
||||||
video_viewport_get_scaled_integer(&gl1->vp,
|
video_viewport_get_scaled_integer(&gl1->vp,
|
||||||
viewport_width, viewport_height,
|
viewport_width, viewport_height,
|
||||||
video_driver_get_aspect_ratio(),
|
video_driver_get_aspect_ratio(),
|
||||||
gl1->flags & GL1_FLAG_KEEP_ASPECT);
|
gl1->flags & GL1_FLAG_KEEP_ASPECT, false);
|
||||||
viewport_width = gl1->vp.width;
|
viewport_width = gl1->vp.width;
|
||||||
viewport_height = gl1->vp.height;
|
viewport_height = gl1->vp.height;
|
||||||
}
|
}
|
||||||
else if ((gl1->flags & GL1_FLAG_KEEP_ASPECT) && !force_full)
|
else if ((gl1->flags & GL1_FLAG_KEEP_ASPECT) && !force_full)
|
||||||
{
|
{
|
||||||
float desired_aspect = video_driver_get_aspect_ratio();
|
gl1->vp.full_height = gl1->video_height;
|
||||||
|
video_viewport_get_scaled_aspect2(&gl1->vp, viewport_width, viewport_height, false, device_aspect, video_driver_get_aspect_ratio());
|
||||||
#if defined(HAVE_MENU)
|
viewport_width = gl1->vp.width;
|
||||||
if (settings->uints.video_aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
viewport_height = gl1->vp.height;
|
||||||
{
|
|
||||||
video_viewport_t *custom_vp = &settings->video_viewport_custom;
|
|
||||||
/* OpenGL has bottom-left origin viewport. */
|
|
||||||
x = custom_vp->x;
|
|
||||||
y = height - custom_vp->y - custom_vp->height;
|
|
||||||
viewport_width = custom_vp->width;
|
|
||||||
viewport_height = custom_vp->height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
float delta;
|
|
||||||
|
|
||||||
if (fabsf(device_aspect - desired_aspect) < 0.0001f)
|
|
||||||
{
|
|
||||||
/* If the aspect ratios of screen and desired aspect
|
|
||||||
* ratio are sufficiently equal (floating point stuff),
|
|
||||||
* assume they are actually equal.
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
else if (device_aspect > desired_aspect)
|
|
||||||
{
|
|
||||||
delta = (desired_aspect / device_aspect - 1.0f) / 2.0f + 0.5f;
|
|
||||||
x = (int)roundf(viewport_width * (0.5f - delta));
|
|
||||||
viewport_width = (unsigned)roundf(2.0f * viewport_width * delta);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
delta = (device_aspect / desired_aspect - 1.0f) / 2.0f + 0.5f;
|
|
||||||
y = (int)roundf(viewport_height * (0.5f - delta));
|
|
||||||
viewport_height = (unsigned)roundf(2.0f * viewport_height * delta);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
gl1->vp.x = x;
|
|
||||||
gl1->vp.y = y;
|
|
||||||
gl1->vp.width = viewport_width;
|
|
||||||
gl1->vp.height = viewport_height;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1283,12 +1245,6 @@ static void gl1_set_viewport(gl1_t *gl1,
|
||||||
gl1->vp.height = viewport_height;
|
gl1->vp.height = viewport_height;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(RARCH_MOBILE)
|
|
||||||
/* In portrait mode, we want viewport to gravitate to top of screen. */
|
|
||||||
if (device_aspect < 1.0f)
|
|
||||||
gl1->vp.y *= 2;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
glViewport(gl1->vp.x, gl1->vp.y, gl1->vp.width, gl1->vp.height);
|
glViewport(gl1->vp.x, gl1->vp.y, gl1->vp.width, gl1->vp.height);
|
||||||
gl1_set_projection(gl1, &gl1_default_ortho, allow_rotate);
|
gl1_set_projection(gl1, &gl1_default_ortho, allow_rotate);
|
||||||
|
|
||||||
|
|
|
@ -1273,11 +1273,8 @@ static void gl2_set_viewport(gl2_t *gl,
|
||||||
bool force_full, bool allow_rotate)
|
bool force_full, bool allow_rotate)
|
||||||
{
|
{
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
unsigned height = gl->video_height;
|
float device_aspect = (float) viewport_width / (float)viewport_height;
|
||||||
int x = 0;
|
|
||||||
int y = 0;
|
|
||||||
float device_aspect = (float)viewport_width / viewport_height;
|
|
||||||
|
|
||||||
if (gl->ctx_driver->translate_aspect)
|
if (gl->ctx_driver->translate_aspect)
|
||||||
device_aspect = gl->ctx_driver->translate_aspect(
|
device_aspect = gl->ctx_driver->translate_aspect(
|
||||||
gl->ctx_data, viewport_width, viewport_height);
|
gl->ctx_data, viewport_width, viewport_height);
|
||||||
|
@ -1287,54 +1284,17 @@ static void gl2_set_viewport(gl2_t *gl,
|
||||||
video_viewport_get_scaled_integer(&gl->vp,
|
video_viewport_get_scaled_integer(&gl->vp,
|
||||||
viewport_width, viewport_height,
|
viewport_width, viewport_height,
|
||||||
video_driver_get_aspect_ratio(),
|
video_driver_get_aspect_ratio(),
|
||||||
(gl->flags & GL2_FLAG_KEEP_ASPECT) ? true : false);
|
(gl->flags & GL2_FLAG_KEEP_ASPECT) ? true : false,
|
||||||
|
false);
|
||||||
viewport_width = gl->vp.width;
|
viewport_width = gl->vp.width;
|
||||||
viewport_height = gl->vp.height;
|
viewport_height = gl->vp.height;
|
||||||
}
|
}
|
||||||
else if ((gl->flags & GL2_FLAG_KEEP_ASPECT) && !force_full)
|
else if ((gl->flags & GL2_FLAG_KEEP_ASPECT) && !force_full)
|
||||||
{
|
{
|
||||||
float desired_aspect = video_driver_get_aspect_ratio();
|
gl->vp.full_height = gl->video_height;
|
||||||
|
video_viewport_get_scaled_aspect2(&gl->vp, viewport_width, viewport_height, false, device_aspect, video_driver_get_aspect_ratio());
|
||||||
#if defined(HAVE_MENU)
|
viewport_width = gl->vp.width;
|
||||||
if (settings->uints.video_aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
viewport_height = gl->vp.height;
|
||||||
{
|
|
||||||
video_viewport_t *custom_vp = &settings->video_viewport_custom;
|
|
||||||
/* OpenGL has bottom-left origin viewport. */
|
|
||||||
x = custom_vp->x;
|
|
||||||
y = height - custom_vp->y - custom_vp->height;
|
|
||||||
viewport_width = custom_vp->width;
|
|
||||||
viewport_height = custom_vp->height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
float delta;
|
|
||||||
|
|
||||||
if (fabsf(device_aspect - desired_aspect) < 0.0001f)
|
|
||||||
{
|
|
||||||
/* If the aspect ratios of screen and desired aspect
|
|
||||||
* ratio are sufficiently equal (floating point stuff),
|
|
||||||
* assume they are actually equal.
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
else if (device_aspect > desired_aspect)
|
|
||||||
{
|
|
||||||
delta = (desired_aspect / device_aspect - 1.0f) / 2.0f + 0.5f;
|
|
||||||
x = (int)roundf(viewport_width * (0.5f - delta));
|
|
||||||
viewport_width = (unsigned)roundf(2.0f * viewport_width * delta);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
delta = (device_aspect / desired_aspect - 1.0f) / 2.0f + 0.5f;
|
|
||||||
y = (int)roundf(viewport_height * (0.5f - delta));
|
|
||||||
viewport_height = (unsigned)roundf(2.0f * viewport_height * delta);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
gl->vp.x = x;
|
|
||||||
gl->vp.y = y;
|
|
||||||
gl->vp.width = viewport_width;
|
|
||||||
gl->vp.height = viewport_height;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1343,12 +1303,6 @@ static void gl2_set_viewport(gl2_t *gl,
|
||||||
gl->vp.height = viewport_height;
|
gl->vp.height = viewport_height;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(RARCH_MOBILE)
|
|
||||||
/* In portrait mode, we want viewport to gravitate to top of screen. */
|
|
||||||
if (device_aspect < 1.0f)
|
|
||||||
gl->vp.y *= 2;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
glViewport(gl->vp.x, gl->vp.y, gl->vp.width, gl->vp.height);
|
glViewport(gl->vp.x, gl->vp.y, gl->vp.width, gl->vp.height);
|
||||||
gl2_set_projection(gl, &default_ortho, allow_rotate);
|
gl2_set_projection(gl, &default_ortho, allow_rotate);
|
||||||
|
|
||||||
|
|
|
@ -1385,7 +1385,6 @@ static void gl3_set_viewport(gl3_t *gl,
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
float device_aspect = (float)viewport_width / viewport_height;
|
float device_aspect = (float)viewport_width / viewport_height;
|
||||||
bool video_scale_integer = settings->bools.video_scale_integer;
|
bool video_scale_integer = settings->bools.video_scale_integer;
|
||||||
unsigned video_aspect_ratio_idx = settings->uints.video_aspect_ratio_idx;
|
|
||||||
|
|
||||||
if (gl->ctx_driver->translate_aspect)
|
if (gl->ctx_driver->translate_aspect)
|
||||||
device_aspect = gl->ctx_driver->translate_aspect(
|
device_aspect = gl->ctx_driver->translate_aspect(
|
||||||
|
@ -1396,54 +1395,17 @@ static void gl3_set_viewport(gl3_t *gl,
|
||||||
video_viewport_get_scaled_integer(&gl->vp,
|
video_viewport_get_scaled_integer(&gl->vp,
|
||||||
viewport_width, viewport_height,
|
viewport_width, viewport_height,
|
||||||
video_driver_get_aspect_ratio(),
|
video_driver_get_aspect_ratio(),
|
||||||
(gl->flags & GL3_FLAG_KEEP_ASPECT) ? true : false);
|
(gl->flags & GL3_FLAG_KEEP_ASPECT) ? true : false,
|
||||||
|
false);
|
||||||
viewport_width = gl->vp.width;
|
viewport_width = gl->vp.width;
|
||||||
viewport_height = gl->vp.height;
|
viewport_height = gl->vp.height;
|
||||||
}
|
}
|
||||||
else if ((gl->flags & GL3_FLAG_KEEP_ASPECT) && !force_full)
|
else if ((gl->flags & GL3_FLAG_KEEP_ASPECT) && !force_full)
|
||||||
{
|
{
|
||||||
float desired_aspect = video_driver_get_aspect_ratio();
|
gl->vp.full_height = gl->video_height;
|
||||||
|
video_viewport_get_scaled_aspect2(&gl->vp, viewport_width, viewport_height, false, device_aspect, video_driver_get_aspect_ratio());
|
||||||
#if defined(HAVE_MENU)
|
viewport_width = gl->vp.width;
|
||||||
if (video_aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
viewport_height = gl->vp.height;
|
||||||
{
|
|
||||||
video_viewport_t *custom_vp = &settings->video_viewport_custom;
|
|
||||||
/* OpenGL has bottom-left origin viewport. */
|
|
||||||
x = custom_vp->x;
|
|
||||||
y = height - custom_vp->y - custom_vp->height;
|
|
||||||
viewport_width = custom_vp->width;
|
|
||||||
viewport_height = custom_vp->height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
float delta;
|
|
||||||
|
|
||||||
if (fabsf(device_aspect - desired_aspect) < 0.0001f)
|
|
||||||
{
|
|
||||||
/* If the aspect ratios of screen and desired aspect
|
|
||||||
* ratio are sufficiently equal (floating point stuff),
|
|
||||||
* assume they are actually equal.
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
else if (device_aspect > desired_aspect)
|
|
||||||
{
|
|
||||||
delta = (desired_aspect / device_aspect - 1.0f) / 2.0f + 0.5f;
|
|
||||||
x = (int)roundf(viewport_width * (0.5f - delta));
|
|
||||||
viewport_width = (unsigned)roundf(2.0f * viewport_width * delta);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
delta = (device_aspect / desired_aspect - 1.0f) / 2.0f + 0.5f;
|
|
||||||
y = (int)roundf(viewport_height * (0.5f - delta));
|
|
||||||
viewport_height = (unsigned)roundf(2.0f * viewport_height * delta);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
gl->vp.x = x;
|
|
||||||
gl->vp.y = y;
|
|
||||||
gl->vp.width = viewport_width;
|
|
||||||
gl->vp.height = viewport_height;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1452,12 +1414,6 @@ static void gl3_set_viewport(gl3_t *gl,
|
||||||
gl->vp.height = viewport_height;
|
gl->vp.height = viewport_height;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(RARCH_MOBILE)
|
|
||||||
/* In portrait mode, we want viewport to gravitate to top of screen. */
|
|
||||||
if (device_aspect < 1.0f)
|
|
||||||
gl->vp.y *= 2;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
glViewport(gl->vp.x, gl->vp.y, gl->vp.width, gl->vp.height);
|
glViewport(gl->vp.x, gl->vp.y, gl->vp.width, gl->vp.height);
|
||||||
gl3_set_projection(gl, &gl3_default_ortho, allow_rotate);
|
gl3_set_projection(gl, &gl3_default_ortho, allow_rotate);
|
||||||
|
|
||||||
|
|
|
@ -923,69 +923,22 @@ static void gx2_set_projection(wiiu_video_t *wiiu)
|
||||||
|
|
||||||
static void gx2_update_viewport(wiiu_video_t *wiiu)
|
static void gx2_update_viewport(wiiu_video_t *wiiu)
|
||||||
{
|
{
|
||||||
int x = 0;
|
|
||||||
int y = 0;
|
|
||||||
unsigned viewport_width = wiiu->color_buffer.surface.width;
|
unsigned viewport_width = wiiu->color_buffer.surface.width;
|
||||||
unsigned viewport_height = wiiu->color_buffer.surface.height;
|
unsigned viewport_height = wiiu->color_buffer.surface.height;
|
||||||
float device_aspect = (float)viewport_width / viewport_height;
|
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
bool video_scale_integer = settings->bools.video_scale_integer;
|
bool video_scale_integer = settings->bools.video_scale_integer;
|
||||||
unsigned video_aspect_ratio_idx = settings->uints.video_aspect_ratio_idx;
|
|
||||||
|
|
||||||
if (video_scale_integer)
|
if (video_scale_integer)
|
||||||
{
|
{
|
||||||
video_viewport_get_scaled_integer(&wiiu->vp,
|
video_viewport_get_scaled_integer(&wiiu->vp,
|
||||||
viewport_width, viewport_height,
|
viewport_width, viewport_height,
|
||||||
video_driver_get_aspect_ratio(), wiiu->keep_aspect);
|
video_driver_get_aspect_ratio(), wiiu->keep_aspect, true);
|
||||||
viewport_width = wiiu->vp.width;
|
viewport_width = wiiu->vp.width;
|
||||||
viewport_height = wiiu->vp.height;
|
viewport_height = wiiu->vp.height;
|
||||||
}
|
}
|
||||||
else if (wiiu->keep_aspect)
|
else if (wiiu->keep_aspect)
|
||||||
{
|
{
|
||||||
float desired_aspect = video_driver_get_aspect_ratio();
|
video_viewport_get_scaled_aspect(&wiiu->vp, viewport_width, viewport_height, true);
|
||||||
|
|
||||||
#if defined(HAVE_MENU)
|
|
||||||
if (video_aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
|
||||||
{
|
|
||||||
video_viewport_t *custom_vp = &settings->video_viewport_custom;
|
|
||||||
/* GX2 has top-left origin viewport. */
|
|
||||||
x = custom_vp->x;
|
|
||||||
y = custom_vp->y;
|
|
||||||
viewport_width = custom_vp->width;
|
|
||||||
viewport_height = custom_vp->height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
float delta;
|
|
||||||
|
|
||||||
if (fabsf(device_aspect - desired_aspect) < 0.0001f)
|
|
||||||
{
|
|
||||||
/* If the aspect ratios of screen and desired aspect
|
|
||||||
* ratio are sufficiently equal (floating point stuff),
|
|
||||||
* assume they are actually equal.
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
else if (device_aspect > desired_aspect)
|
|
||||||
{
|
|
||||||
delta = (desired_aspect / device_aspect - 1.0f)
|
|
||||||
/ 2.0f + 0.5f;
|
|
||||||
x = (int)roundf(viewport_width * (0.5f - delta));
|
|
||||||
viewport_width = (unsigned)roundf(2.0f * viewport_width * delta);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
delta = (device_aspect / desired_aspect - 1.0f)
|
|
||||||
/ 2.0f + 0.5f;
|
|
||||||
y = (int)roundf(viewport_height * (0.5f - delta));
|
|
||||||
viewport_height = (unsigned)roundf(2.0f * viewport_height * delta);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
wiiu->vp.x = x;
|
|
||||||
wiiu->vp.y = y;
|
|
||||||
wiiu->vp.width = viewport_width;
|
|
||||||
wiiu->vp.height = viewport_height;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -1011,58 +1011,23 @@ static void gx_resize(gx_video_t *gx,
|
||||||
/* Ignore this for custom resolutions */
|
/* Ignore this for custom resolutions */
|
||||||
if (gx->keep_aspect && gx_mode.efbHeight >= 192)
|
if (gx->keep_aspect && gx_mode.efbHeight >= 192)
|
||||||
{
|
{
|
||||||
|
#ifdef HW_RVL
|
||||||
|
float device_aspect = CONF_GetAspectRatio() == CONF_ASPECT_4_3 ?
|
||||||
|
4.0 / 3.0 : 16.0 / 9.0;
|
||||||
|
#else
|
||||||
|
float device_aspect = 4.0 / 3.0;
|
||||||
|
#endif
|
||||||
float desired_aspect = video_driver_get_aspect_ratio();
|
float desired_aspect = video_driver_get_aspect_ratio();
|
||||||
if (desired_aspect == 0.0)
|
if (desired_aspect == 0.0)
|
||||||
desired_aspect = 1.0;
|
desired_aspect = 1.0;
|
||||||
if ( (gx->orientation == ORIENTATION_VERTICAL)
|
if ( (gx->orientation == ORIENTATION_VERTICAL)
|
||||||
|| (gx->orientation == ORIENTATION_FLIPPED_ROTATED))
|
|| (gx->orientation == ORIENTATION_FLIPPED_ROTATED))
|
||||||
desired_aspect = 1.0 / desired_aspect;
|
desired_aspect = 1.0 / desired_aspect;
|
||||||
|
video_viewport_get_scaled_aspect2(&gx->vp, width, height, true, device_aspect, desired_aspect);
|
||||||
if (aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
x = gx->vp.x;
|
||||||
{
|
y = gx->vp.y;
|
||||||
video_viewport_t *custom_vp = &settings->video_viewport_custom;
|
width = gx->vp.width;
|
||||||
|
height = gx->vp.height;
|
||||||
if (!custom_vp->width || !custom_vp->height)
|
|
||||||
{
|
|
||||||
custom_vp->x = 0;
|
|
||||||
custom_vp->y = 0;
|
|
||||||
custom_vp->width = gx->vp.full_width;
|
|
||||||
custom_vp->height = gx->vp.full_height;
|
|
||||||
}
|
|
||||||
|
|
||||||
x = custom_vp->x;
|
|
||||||
y = custom_vp->y;
|
|
||||||
width = custom_vp->width;
|
|
||||||
height = custom_vp->height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
float delta;
|
|
||||||
#ifdef HW_RVL
|
|
||||||
float device_aspect = CONF_GetAspectRatio() == CONF_ASPECT_4_3 ?
|
|
||||||
4.0 / 3.0 : 16.0 / 9.0;
|
|
||||||
#else
|
|
||||||
float device_aspect = 4.0 / 3.0;
|
|
||||||
#endif
|
|
||||||
if (fabs(device_aspect - desired_aspect) < 0.0001)
|
|
||||||
{
|
|
||||||
/* If the aspect ratios of screen and desired aspect ratio
|
|
||||||
* are sufficiently equal (floating point stuff),
|
|
||||||
* assume they are actually equal. */
|
|
||||||
}
|
|
||||||
else if (device_aspect > desired_aspect)
|
|
||||||
{
|
|
||||||
delta = (desired_aspect / device_aspect - 1.0) / 2.0 + 0.5;
|
|
||||||
x = (unsigned)(width * (0.5 - delta));
|
|
||||||
width = (unsigned)(2.0 * width * delta);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
delta = (device_aspect / desired_aspect - 1.0) / 2.0 + 0.5;
|
|
||||||
y = (unsigned)(height * (0.5 - delta));
|
|
||||||
height = (unsigned)(2.0 * height * delta);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Overscan correction */
|
/* Overscan correction */
|
||||||
|
|
|
@ -257,54 +257,15 @@ static void psp_update_viewport(psp1_video_t* psp,
|
||||||
if (video_scale_integer)
|
if (video_scale_integer)
|
||||||
{
|
{
|
||||||
video_viewport_get_scaled_integer(&psp->vp, SCEGU_SCR_WIDTH,
|
video_viewport_get_scaled_integer(&psp->vp, SCEGU_SCR_WIDTH,
|
||||||
SCEGU_SCR_HEIGHT, video_driver_get_aspect_ratio(), psp->keep_aspect);
|
SCEGU_SCR_HEIGHT, video_driver_get_aspect_ratio(), psp->keep_aspect, true);
|
||||||
width = psp->vp.width;
|
width = psp->vp.width;
|
||||||
height = psp->vp.height;
|
height = psp->vp.height;
|
||||||
}
|
}
|
||||||
else if (psp->keep_aspect)
|
else if (psp->keep_aspect)
|
||||||
{
|
{
|
||||||
#if defined(HAVE_MENU)
|
video_viewport_get_scaled_aspect(&psp->vp, width, height, true);
|
||||||
if (aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
width = psp->vp.width;
|
||||||
{
|
height = psp->vp.height;
|
||||||
x = video_info->custom_vp_x;
|
|
||||||
y = video_info->custom_vp_y;
|
|
||||||
width = video_info->custom_vp_width;
|
|
||||||
height = video_info->custom_vp_height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
float delta;
|
|
||||||
float desired_aspect = video_driver_get_aspect_ratio();
|
|
||||||
|
|
||||||
if ( (fabsf(device_aspect - desired_aspect) < 0.0001f)
|
|
||||||
|| (fabsf((16.0/9.0) - desired_aspect) < 0.02f))
|
|
||||||
{
|
|
||||||
/* If the aspect ratios of screen and desired aspect
|
|
||||||
* ratio are sufficiently equal (floating point stuff),
|
|
||||||
* assume they are actually equal.
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
else if (device_aspect > desired_aspect)
|
|
||||||
{
|
|
||||||
delta = (desired_aspect / device_aspect - 1.0f)
|
|
||||||
/ 2.0f + 0.5f;
|
|
||||||
x = (int)roundf(width * (0.5f - delta));
|
|
||||||
width = (unsigned)roundf(2.0f * width * delta);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
delta = (device_aspect / desired_aspect - 1.0f)
|
|
||||||
/ 2.0f + 0.5f;
|
|
||||||
y = (int)roundf(height * (0.5f - delta));
|
|
||||||
height = (unsigned)roundf(2.0f * height * delta);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
psp->vp.x = x;
|
|
||||||
psp->vp.y = y;
|
|
||||||
psp->vp.width = width;
|
|
||||||
psp->vp.height = height;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -996,55 +996,16 @@ static void rsx_set_viewport(void *data, unsigned viewport_width,
|
||||||
{
|
{
|
||||||
video_viewport_get_scaled_integer(&rsx->vp,
|
video_viewport_get_scaled_integer(&rsx->vp,
|
||||||
viewport_width, viewport_height,
|
viewport_width, viewport_height,
|
||||||
video_driver_get_aspect_ratio(), rsx->keep_aspect);
|
video_driver_get_aspect_ratio(), rsx->keep_aspect,
|
||||||
viewport_width = rsx->vp.width;
|
true);
|
||||||
viewport_height = rsx->vp.height;
|
viewport_width = rsx->vp.width;
|
||||||
|
viewport_height = rsx->vp.height;
|
||||||
}
|
}
|
||||||
else if (rsx->keep_aspect && !force_full)
|
else if (rsx->keep_aspect && !force_full)
|
||||||
{
|
{
|
||||||
float desired_aspect = video_driver_get_aspect_ratio();
|
video_viewport_get_scaled_aspect(&rsx->vp, viewport_width, viewport_height, true);
|
||||||
|
viewport_width = rsx->vp.width;
|
||||||
#if defined(HAVE_MENU)
|
viewport_height = rsx->vp.height;
|
||||||
if (aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
|
||||||
{
|
|
||||||
video_viewport_t *custom_vp = &settings->video_viewport_custom;
|
|
||||||
/* RSX/libgcm has top-left origin viewport. */
|
|
||||||
x = custom_vp->x;
|
|
||||||
y = custom_vp->y;
|
|
||||||
viewport_width = custom_vp->width;
|
|
||||||
viewport_height = custom_vp->height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
float delta;
|
|
||||||
if (fabsf(device_aspect - desired_aspect) < 0.0001f)
|
|
||||||
{
|
|
||||||
/* If the aspect ratios of screen and desired aspect
|
|
||||||
* ratio are sufficiently equal (floating point stuff),
|
|
||||||
* assume they are actually equal.
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
else if (device_aspect > desired_aspect)
|
|
||||||
{
|
|
||||||
delta = (desired_aspect / device_aspect - 1.0f)
|
|
||||||
/ 2.0f + 0.5f;
|
|
||||||
x = (int)roundf(viewport_width * (0.5f - delta));
|
|
||||||
viewport_width = (unsigned)roundf(2.0f * viewport_width * delta);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
delta = (device_aspect / desired_aspect - 1.0f)
|
|
||||||
/ 2.0f + 0.5f;
|
|
||||||
y = (int)roundf(viewport_height * (0.5f - delta));
|
|
||||||
viewport_height = (unsigned)roundf(2.0f * viewport_height * delta);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
rsx->vp.x = x;
|
|
||||||
rsx->vp.y = y;
|
|
||||||
rsx->vp.width = viewport_width;
|
|
||||||
rsx->vp.height = viewport_height;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1493,7 +1454,8 @@ static void rsx_update_viewport(rsx_t* rsx)
|
||||||
if (video_scale_integer)
|
if (video_scale_integer)
|
||||||
{
|
{
|
||||||
video_viewport_get_scaled_integer(&rsx->vp, viewport_width,
|
video_viewport_get_scaled_integer(&rsx->vp, viewport_width,
|
||||||
viewport_height, video_driver_get_aspect_ratio(), rsx->keep_aspect);
|
viewport_height, video_driver_get_aspect_ratio(), rsx->keep_aspect,
|
||||||
|
true);
|
||||||
viewport_width = rsx->vp.width;
|
viewport_width = rsx->vp.width;
|
||||||
viewport_height = rsx->vp.height;
|
viewport_height = rsx->vp.height;
|
||||||
}
|
}
|
||||||
|
@ -1525,16 +1487,18 @@ static void rsx_update_viewport(rsx_t* rsx)
|
||||||
}
|
}
|
||||||
else if (device_aspect > desired_aspect)
|
else if (device_aspect > desired_aspect)
|
||||||
{
|
{
|
||||||
|
float viewport_bias = settings->floats.video_viewport_bias_x;
|
||||||
delta = (desired_aspect / device_aspect - 1.0f)
|
delta = (desired_aspect / device_aspect - 1.0f)
|
||||||
/ 2.0f + 0.5f;
|
/ 2.0f + 0.5f;
|
||||||
x = (int)roundf(viewport_width * (0.5f - delta));
|
x = (int)roundf(viewport_width * ((0.5f - delta) * (viewport_bias * 2.0f)));
|
||||||
viewport_width = (unsigned)roundf(2.0f * viewport_width * delta);
|
viewport_width = (unsigned)roundf(2.0f * viewport_width * delta);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
float viewport_bias = 1.0 - settings->floats.video_viewport_bias_y;
|
||||||
delta = (device_aspect / desired_aspect - 1.0f)
|
delta = (device_aspect / desired_aspect - 1.0f)
|
||||||
/ 2.0f + 0.5f;
|
/ 2.0f + 0.5f;
|
||||||
y = (int)roundf(viewport_height * (0.5f - delta));
|
y = (int)roundf(viewport_height * ((0.5f - delta) * (viewport_bias * 2.0f)));
|
||||||
viewport_height = (unsigned)roundf(2.0f * viewport_height * delta);
|
viewport_height = (unsigned)roundf(2.0f * viewport_height * delta);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -229,7 +229,6 @@ static void sdl_refresh_viewport(sdl2_video_t *vid)
|
||||||
int win_w, win_h;
|
int win_w, win_h;
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
bool video_scale_integer = settings->bools.video_scale_integer;
|
bool video_scale_integer = settings->bools.video_scale_integer;
|
||||||
unsigned aspect_ratio_idx = settings->uints.video_aspect_ratio_idx;
|
|
||||||
|
|
||||||
SDL_GetWindowSize(vid->window, &win_w, &win_h);
|
SDL_GetWindowSize(vid->window, &win_w, &win_h);
|
||||||
|
|
||||||
|
@ -243,39 +242,10 @@ static void sdl_refresh_viewport(sdl2_video_t *vid)
|
||||||
if (video_scale_integer)
|
if (video_scale_integer)
|
||||||
video_viewport_get_scaled_integer(&vid->vp,
|
video_viewport_get_scaled_integer(&vid->vp,
|
||||||
win_w, win_h, video_driver_get_aspect_ratio(),
|
win_w, win_h, video_driver_get_aspect_ratio(),
|
||||||
vid->video.force_aspect);
|
vid->video.force_aspect, true);
|
||||||
else if (aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
|
||||||
{
|
|
||||||
video_viewport_t *custom_vp = &settings->video_viewport_custom;
|
|
||||||
vid->vp.x = custom_vp->x;
|
|
||||||
vid->vp.y = custom_vp->y;
|
|
||||||
vid->vp.width = custom_vp->width;
|
|
||||||
vid->vp.height = custom_vp->height;
|
|
||||||
}
|
|
||||||
else if (vid->video.force_aspect)
|
else if (vid->video.force_aspect)
|
||||||
{
|
{
|
||||||
float delta;
|
video_viewport_get_scaled_aspect(&vid->vp, win_w, win_h, true);
|
||||||
float device_aspect = (float)win_w / win_h;
|
|
||||||
float desired_aspect = video_driver_get_aspect_ratio();
|
|
||||||
|
|
||||||
if (fabsf(device_aspect - desired_aspect) < 0.0001f)
|
|
||||||
{
|
|
||||||
/* If the aspect ratios of screen and desired aspect ratio are
|
|
||||||
* sufficiently equal (floating point stuff), assume they are
|
|
||||||
* actually equal. */
|
|
||||||
}
|
|
||||||
else if (device_aspect > desired_aspect)
|
|
||||||
{
|
|
||||||
delta = (desired_aspect / device_aspect - 1.0f) / 2.0f + 0.5f;
|
|
||||||
vid->vp.x = (int)roundf(win_w * (0.5f - delta));
|
|
||||||
vid->vp.width = (unsigned)roundf(2.0f * win_w * delta);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
delta = (device_aspect / desired_aspect - 1.0f) / 2.0f + 0.5f;
|
|
||||||
vid->vp.y = (int)roundf(win_h * (0.5f - delta));
|
|
||||||
vid->vp.height = (unsigned)roundf(2.0f * win_h * delta);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
vid->flags &= ~SDL2_FLAG_SHOULD_RESIZE;
|
vid->flags &= ~SDL2_FLAG_SHOULD_RESIZE;
|
||||||
|
|
|
@ -572,50 +572,12 @@ static void switch_update_viewport(switch_video_t *sw,
|
||||||
|
|
||||||
if (settings->bools.video_scale_integer)
|
if (settings->bools.video_scale_integer)
|
||||||
{
|
{
|
||||||
video_viewport_get_scaled_integer(&sw->vp, sw->vp.full_width, sw->vp.full_height, desired_aspect, sw->keep_aspect);
|
/* TODO: Does nx use top-left or bottom-left origin? I'm assuming top left. */
|
||||||
|
video_viewport_get_scaled_integer(&sw->vp, sw->vp.full_width, sw->vp.full_height, desired_aspect, sw->keep_aspect, true);
|
||||||
}
|
}
|
||||||
else if (sw->keep_aspect)
|
else if (sw->keep_aspect)
|
||||||
{
|
{
|
||||||
#if defined(HAVE_MENU)
|
video_viewport_get_scaled_aspect(&sw->vp, width, height, true);
|
||||||
if (settings->uints.video_aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
|
||||||
{
|
|
||||||
sw->vp.x = sw->vp.y = 0;
|
|
||||||
sw->vp.width = width;
|
|
||||||
sw->vp.height = height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
float delta;
|
|
||||||
float device_aspect = ((float)sw->vp.full_width) / sw->vp.full_height;
|
|
||||||
|
|
||||||
if (fabsf(device_aspect - desired_aspect) < 0.0001f)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* If the aspect ratios of screen and desired aspect
|
|
||||||
* ratio are sufficiently equal (floating point stuff),
|
|
||||||
* assume they are actually equal.
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
else if (device_aspect > desired_aspect)
|
|
||||||
{
|
|
||||||
delta = (desired_aspect / device_aspect - 1.0f) / 2.0f + 0.5f;
|
|
||||||
x = (int)roundf(width * (0.5f - delta));
|
|
||||||
width = (unsigned)roundf(2.0f * width * delta);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
delta = (device_aspect / desired_aspect - 1.0f) / 2.0f + 0.5f;
|
|
||||||
y = (int)roundf(height * (0.5f - delta));
|
|
||||||
height = (unsigned)roundf(2.0f * height * delta);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sw->vp.x = x;
|
|
||||||
sw->vp.y = y;
|
|
||||||
|
|
||||||
sw->vp.width = width;
|
|
||||||
sw->vp.height = height;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -318,45 +318,39 @@ static void vg_free(void *data)
|
||||||
static void vg_calculate_quad(vg_t *vg,
|
static void vg_calculate_quad(vg_t *vg,
|
||||||
unsigned width, unsigned height)
|
unsigned width, unsigned height)
|
||||||
{
|
{
|
||||||
/* set viewport for aspect ratio, taken from the OpenGL driver. */
|
settings_t *settings = config_get_ptr();
|
||||||
if (vg->keep_aspect)
|
bool video_scale_integer = settings->bools.video_scale_integer;
|
||||||
{
|
float device_aspect = (float)width / height;
|
||||||
float desired_aspect = video_driver_get_aspect_ratio();
|
struct video_viewport_t vp;
|
||||||
|
|
||||||
/* If the aspect ratios of screen and desired aspect ratio
|
vp.x = 0;
|
||||||
* are sufficiently equal (floating point stuff),
|
vp.y = 0;
|
||||||
* assume they are actually equal. */
|
vp.width = width;
|
||||||
if (fabs(vg->mScreenAspect - desired_aspect) < 0.0001)
|
vp.height = height;
|
||||||
{
|
vp.full_width = width;
|
||||||
vg->x1 = 0;
|
vp.full_height = height;
|
||||||
vg->y1 = 0;
|
|
||||||
vg->x2 = width;
|
if (vg->ctx_driver->translate_aspect)
|
||||||
vg->y2 = height;
|
device_aspect = vg->ctx_driver->translate_aspect(vg->ctx_data, width, height);
|
||||||
}
|
|
||||||
else if (vg->mScreenAspect > desired_aspect)
|
vg->mScreenAspect = device_aspect;
|
||||||
{
|
/* OpenVG uses a bottom-left origin coordinate system */
|
||||||
float delta = (desired_aspect / vg->mScreenAspect - 1.0) / 2.0 + 0.5;
|
if (video_scale_integer)
|
||||||
vg->x1 = width * (0.5 - delta);
|
|
||||||
vg->y1 = 0;
|
|
||||||
vg->x2 = 2.0 * width * delta + vg->x1;
|
|
||||||
vg->y2 = height + vg->y1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
float delta = (vg->mScreenAspect / desired_aspect - 1.0) / 2.0 + 0.5;
|
|
||||||
vg->x1 = 0;
|
|
||||||
vg->y1 = height * (0.5 - delta);
|
|
||||||
vg->x2 = width + vg->x1;
|
|
||||||
vg->y2 = 2.0 * height * delta + vg->y1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
vg->x1 = 0;
|
video_viewport_get_scaled_integer(&vp,
|
||||||
vg->y1 = 0;
|
width, height,
|
||||||
vg->x2 = width;
|
video_driver_get_aspect_ratio(),
|
||||||
vg->y2 = height;
|
vg->keep_aspect,
|
||||||
|
false);
|
||||||
}
|
}
|
||||||
|
else if (vg->keep_aspect)
|
||||||
|
{
|
||||||
|
video_viewport_get_scaled_aspect(&vp, viewport_width, viewport_height, false);
|
||||||
|
}
|
||||||
|
vg->x1 = vp.x;
|
||||||
|
vg->y1 = vp.y;
|
||||||
|
vg->x2 = vp.width;
|
||||||
|
vg->y2 = vp.height;
|
||||||
|
|
||||||
vg->scissor[0] = vg->x1;
|
vg->scissor[0] = vg->x1;
|
||||||
vg->scissor[1] = vg->y1;
|
vg->scissor[1] = vg->y1;
|
||||||
|
|
|
@ -861,8 +861,9 @@ static void vita2d_update_viewport(vita_video_t* vita,
|
||||||
|
|
||||||
if (video_scale_integer)
|
if (video_scale_integer)
|
||||||
{
|
{
|
||||||
|
/* TODO: Does Vita use top-left or bottom-left origin? I'm assuming top left. */
|
||||||
video_viewport_get_scaled_integer(&vita->vp, temp_width,
|
video_viewport_get_scaled_integer(&vita->vp, temp_width,
|
||||||
temp_height, video_driver_get_aspect_ratio(), vita->keep_aspect);
|
temp_height, video_driver_get_aspect_ratio(), vita->keep_aspect, true);
|
||||||
width = vita->vp.width;
|
width = vita->vp.width;
|
||||||
height = vita->vp.height;
|
height = vita->vp.height;
|
||||||
}
|
}
|
||||||
|
@ -876,54 +877,16 @@ static void vita2d_update_viewport(vita_video_t* vita,
|
||||||
width = temp_height;
|
width = temp_height;
|
||||||
height = temp_width;
|
height = temp_width;
|
||||||
}
|
}
|
||||||
#if defined(HAVE_MENU)
|
video_viewport_get_scaled_aspect(&vita->vp, width, height, true);
|
||||||
if (aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
if ( (vita->rotation == ORIENTATION_VERTICAL) ||
|
||||||
|
(vita->rotation == ORIENTATION_FLIPPED_ROTATED)
|
||||||
|
)
|
||||||
{
|
{
|
||||||
x = video_info->custom_vp_x;
|
// swap x and y
|
||||||
y = video_info->custom_vp_y;
|
unsigned tmp = vita->vp.x;
|
||||||
width = video_info->custom_vp_width;
|
vita->vp.x = vita->vp.y;
|
||||||
height = video_info->custom_vp_height;
|
vita->vp.y = tmp;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
float delta;
|
|
||||||
|
|
||||||
if ((fabsf(device_aspect - desired_aspect) < 0.0001f))
|
|
||||||
{
|
|
||||||
/* If the aspect ratios of screen and desired aspect
|
|
||||||
* ratio are sufficiently equal (floating point stuff),
|
|
||||||
* assume they are actually equal.
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
else if (device_aspect > desired_aspect)
|
|
||||||
{
|
|
||||||
delta = (desired_aspect / device_aspect - 1.0f)
|
|
||||||
/ 2.0f + 0.5f;
|
|
||||||
x = (int)roundf(width * (0.5f - delta));
|
|
||||||
width = (unsigned)roundf(2.0f * width * delta);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
delta = (device_aspect / desired_aspect - 1.0f)
|
|
||||||
/ 2.0f + 0.5f;
|
|
||||||
y = (int)roundf(height * (0.5f - delta));
|
|
||||||
height = (unsigned)roundf(2.0f * height * delta);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( (vita->rotation == ORIENTATION_VERTICAL) ||
|
|
||||||
(vita->rotation == ORIENTATION_FLIPPED_ROTATED)
|
|
||||||
)
|
|
||||||
{
|
|
||||||
x = (temp_width - width) * 0.5f;
|
|
||||||
y = (temp_height - height) * 0.5f;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
vita->vp.x = x;
|
|
||||||
vita->vp.y = y;
|
|
||||||
vita->vp.width = width;
|
|
||||||
vita->vp.height = height;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -954,9 +917,10 @@ static void vita2d_set_viewport_wrapper(void *data, unsigned viewport_width,
|
||||||
|
|
||||||
if (video_scale_integer && !force_full)
|
if (video_scale_integer && !force_full)
|
||||||
{
|
{
|
||||||
|
/* TODO: Does Vita use top-left or bottom-left origin? I'm assuming top left. */
|
||||||
video_viewport_get_scaled_integer(&vita->vp,
|
video_viewport_get_scaled_integer(&vita->vp,
|
||||||
viewport_width, viewport_height,
|
viewport_width, viewport_height,
|
||||||
video_driver_get_aspect_ratio(), vita->keep_aspect);
|
video_driver_get_aspect_ratio(), vita->keep_aspect, true);
|
||||||
viewport_width = vita->vp.width;
|
viewport_width = vita->vp.width;
|
||||||
viewport_height = vita->vp.height;
|
viewport_height = vita->vp.height;
|
||||||
}
|
}
|
||||||
|
@ -986,16 +950,19 @@ static void vita2d_set_viewport_wrapper(void *data, unsigned viewport_width,
|
||||||
}
|
}
|
||||||
else if (device_aspect > desired_aspect)
|
else if (device_aspect > desired_aspect)
|
||||||
{
|
{
|
||||||
|
float viewport_bias = settings->floats.video_viewport_bias_x;
|
||||||
delta = (desired_aspect / device_aspect - 1.0f)
|
delta = (desired_aspect / device_aspect - 1.0f)
|
||||||
/ 2.0f + 0.5f;
|
/ 2.0f + 0.5f;
|
||||||
x = (int)roundf(viewport_width * (0.5f - delta));
|
x = (int)roundf(viewport_width * ((0.5f - delta) * (viewport_bias * 2.0f)));
|
||||||
viewport_width = (unsigned)roundf(2.0f * viewport_width * delta);
|
viewport_width = (unsigned)roundf(2.0f * viewport_width * delta);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
/* TODO: Does Vita use top-left or bottom-left origin? I'm assuming top left. */
|
||||||
|
float viewport_bias = settings->floats.video_viewport_bias_y;
|
||||||
delta = (device_aspect / desired_aspect - 1.0f)
|
delta = (device_aspect / desired_aspect - 1.0f)
|
||||||
/ 2.0f + 0.5f;
|
/ 2.0f + 0.5f;
|
||||||
y = (int)roundf(viewport_height * (0.5f - delta));
|
y = (int)roundf(viewport_height * ((0.5f - delta) * (viewport_bias * 2.0f)));
|
||||||
viewport_height = (unsigned)roundf(2.0f * viewport_height * delta);
|
viewport_height = (unsigned)roundf(2.0f * viewport_height * delta);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3814,7 +3814,6 @@ static void vulkan_set_viewport(void *data, unsigned viewport_width,
|
||||||
struct video_ortho ortho = {0, 1, 0, 1, -1, 1};
|
struct video_ortho ortho = {0, 1, 0, 1, -1, 1};
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
bool video_scale_integer = settings->bools.video_scale_integer;
|
bool video_scale_integer = settings->bools.video_scale_integer;
|
||||||
unsigned aspect_ratio_idx = settings->uints.video_aspect_ratio_idx;
|
|
||||||
vk_t *vk = (vk_t*)data;
|
vk_t *vk = (vk_t*)data;
|
||||||
|
|
||||||
if (vk->ctx_driver->translate_aspect)
|
if (vk->ctx_driver->translate_aspect)
|
||||||
|
@ -3826,55 +3825,18 @@ static void vulkan_set_viewport(void *data, unsigned viewport_width,
|
||||||
video_viewport_get_scaled_integer(&vk->vp,
|
video_viewport_get_scaled_integer(&vk->vp,
|
||||||
viewport_width, viewport_height,
|
viewport_width, viewport_height,
|
||||||
video_driver_get_aspect_ratio(),
|
video_driver_get_aspect_ratio(),
|
||||||
vk->flags & VK_FLAG_KEEP_ASPECT);
|
vk->flags & VK_FLAG_KEEP_ASPECT,
|
||||||
|
true);
|
||||||
|
vk->vp.x = MAX(vk->vp.x, 0);
|
||||||
|
vk->vp.y = MAX(vk->vp.y, 0);
|
||||||
viewport_width = vk->vp.width;
|
viewport_width = vk->vp.width;
|
||||||
viewport_height = vk->vp.height;
|
viewport_height = vk->vp.height;
|
||||||
}
|
}
|
||||||
else if ((vk->flags & VK_FLAG_KEEP_ASPECT) && !force_full)
|
else if ((vk->flags & VK_FLAG_KEEP_ASPECT) && !force_full)
|
||||||
{
|
{
|
||||||
float desired_aspect = video_driver_get_aspect_ratio();
|
video_viewport_get_scaled_aspect2(&vk->vp, viewport_width, viewport_height, true, device_aspect, video_driver_get_aspect_ratio());
|
||||||
#if defined(HAVE_MENU)
|
viewport_width = vk->vp.width;
|
||||||
if (aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
viewport_height = vk->vp.height;
|
||||||
{
|
|
||||||
video_viewport_t *custom_vp = &settings->video_viewport_custom;
|
|
||||||
/* Vulkan has top-left origin viewport. */
|
|
||||||
x = custom_vp->x;
|
|
||||||
y = custom_vp->y;
|
|
||||||
viewport_width = custom_vp->width;
|
|
||||||
viewport_height = custom_vp->height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
float delta;
|
|
||||||
|
|
||||||
if (fabsf(device_aspect - desired_aspect) < 0.0001f)
|
|
||||||
{
|
|
||||||
/* If the aspect ratios of screen and desired aspect
|
|
||||||
* ratio are sufficiently equal (floating point stuff),
|
|
||||||
* assume they are actually equal.
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
else if (device_aspect > desired_aspect)
|
|
||||||
{
|
|
||||||
delta = (desired_aspect / device_aspect - 1.0f)
|
|
||||||
/ 2.0f + 0.5f;
|
|
||||||
x = (int)roundf(viewport_width * (0.5f - delta));
|
|
||||||
viewport_width = (unsigned)roundf(2.0f * viewport_width * delta);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
delta = (device_aspect / desired_aspect - 1.0f)
|
|
||||||
/ 2.0f + 0.5f;
|
|
||||||
y = (int)roundf(viewport_height * (0.5f - delta));
|
|
||||||
viewport_height = (unsigned)roundf(2.0f * viewport_height * delta);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
vk->vp.x = x;
|
|
||||||
vk->vp.y = y;
|
|
||||||
vk->vp.width = viewport_width;
|
|
||||||
vk->vp.height = viewport_height;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -3884,12 +3846,6 @@ static void vulkan_set_viewport(void *data, unsigned viewport_width,
|
||||||
vk->vp.height = viewport_height;
|
vk->vp.height = viewport_height;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(RARCH_MOBILE)
|
|
||||||
/* In portrait mode, we want viewport to gravitate to top of screen. */
|
|
||||||
if (device_aspect < 1.0f)
|
|
||||||
vk->vp.y = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
vulkan_set_projection(vk, &ortho, allow_rotate);
|
vulkan_set_projection(vk, &ortho, allow_rotate);
|
||||||
|
|
||||||
/* Set last backbuffer viewport. */
|
/* Set last backbuffer viewport. */
|
||||||
|
|
|
@ -599,9 +599,10 @@ static void xv_calc_out_rect(bool keep_aspect,
|
||||||
vp->full_width = vp_width;
|
vp->full_width = vp_width;
|
||||||
vp->full_height = vp_height;
|
vp->full_height = vp_height;
|
||||||
|
|
||||||
|
/* TODO: Does xvideo have its origin in top left or bottom-left? Assuming top left. */
|
||||||
if (scale_integer)
|
if (scale_integer)
|
||||||
video_viewport_get_scaled_integer(vp, vp_width, vp_height,
|
video_viewport_get_scaled_integer(vp, vp_width, vp_height,
|
||||||
video_driver_get_aspect_ratio(), keep_aspect);
|
video_driver_get_aspect_ratio(), keep_aspect, true);
|
||||||
else if (!keep_aspect)
|
else if (!keep_aspect)
|
||||||
{
|
{
|
||||||
vp->x = 0;
|
vp->x = 0;
|
||||||
|
@ -611,36 +612,7 @@ static void xv_calc_out_rect(bool keep_aspect,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
float desired_aspect = video_driver_get_aspect_ratio();
|
video_viewport_get_scaled_aspect(vp, vp_width, vp_height, true);
|
||||||
float device_aspect = (float)vp_width / vp_height;
|
|
||||||
|
|
||||||
/* If the aspect ratios of screen and desired aspect ratio
|
|
||||||
* are sufficiently equal (floating point stuff),
|
|
||||||
* assume they are actually equal.
|
|
||||||
*/
|
|
||||||
if (fabs(device_aspect - desired_aspect) < 0.0001)
|
|
||||||
{
|
|
||||||
vp->x = 0;
|
|
||||||
vp->y = 0;
|
|
||||||
vp->width = vp_width;
|
|
||||||
vp->height = vp_height;
|
|
||||||
}
|
|
||||||
else if (device_aspect > desired_aspect)
|
|
||||||
{
|
|
||||||
float delta = (desired_aspect / device_aspect - 1.0) / 2.0 + 0.5;
|
|
||||||
vp->x = vp_width * (0.5 - delta);
|
|
||||||
vp->y = 0;
|
|
||||||
vp->width = 2.0 * vp_width * delta;
|
|
||||||
vp->height = vp_height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
float delta = (device_aspect / desired_aspect - 1.0) / 2.0 + 0.5;
|
|
||||||
vp->x = 0;
|
|
||||||
vp->y = vp_height * (0.5 - delta);
|
|
||||||
vp->width = vp_width;
|
|
||||||
vp->height = 2.0 * vp_height * delta;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1248,7 +1248,7 @@ void video_switch_refresh_rate_maybe(
|
||||||
unsigned video_bfi = settings->uints.video_black_frame_insertion;
|
unsigned video_bfi = settings->uints.video_black_frame_insertion;
|
||||||
unsigned shader_subframes = settings->uints.video_shader_subframes;
|
unsigned shader_subframes = settings->uints.video_shader_subframes;
|
||||||
bool vrr_runloop_enable = settings->bools.vrr_runloop_enable;
|
bool vrr_runloop_enable = settings->bools.vrr_runloop_enable;
|
||||||
bool exclusive_fullscreen = (video_st->flags | VIDEO_FLAG_FORCE_FULLSCREEN) || (
|
bool exclusive_fullscreen = (video_st->flags & VIDEO_FLAG_FORCE_FULLSCREEN) || (
|
||||||
settings->bools.video_fullscreen && !settings->bools.video_windowed_fullscreen);
|
settings->bools.video_fullscreen && !settings->bools.video_windowed_fullscreen);
|
||||||
bool windowed_fullscreen = settings->bools.video_fullscreen && settings->bools.video_windowed_fullscreen;
|
bool windowed_fullscreen = settings->bools.video_fullscreen && settings->bools.video_windowed_fullscreen;
|
||||||
bool all_fullscreen = settings->bools.video_fullscreen || settings->bools.video_windowed_fullscreen;
|
bool all_fullscreen = settings->bools.video_fullscreen || settings->bools.video_windowed_fullscreen;
|
||||||
|
@ -2044,39 +2044,28 @@ void video_driver_set_aspect_ratio(void)
|
||||||
video_st->poke->set_aspect_ratio(video_st->data, aspect_ratio_idx);
|
video_st->poke->set_aspect_ratio(video_st->data, aspect_ratio_idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
void video_driver_update_viewport(
|
void video_viewport_get_scaled_aspect(struct video_viewport *vp, unsigned viewport_width, unsigned viewport_height, bool ydown) {
|
||||||
struct video_viewport* vp, bool force_full, bool keep_aspect)
|
float device_aspect = (float)viewport_width / viewport_height;
|
||||||
|
float desired_aspect = video_driver_get_aspect_ratio();
|
||||||
|
video_viewport_get_scaled_aspect2(vp, viewport_width, viewport_height, ydown, device_aspect, desired_aspect);
|
||||||
|
}
|
||||||
|
|
||||||
|
void video_viewport_get_scaled_aspect2(struct video_viewport *vp, unsigned viewport_width, unsigned viewport_height, bool ydown, float device_aspect, float desired_aspect)
|
||||||
{
|
{
|
||||||
float device_aspect = (float)vp->full_width / vp->full_height;
|
settings_t *settings = config_get_ptr();
|
||||||
settings_t *settings = config_get_ptr();
|
int x = 0;
|
||||||
bool video_scale_integer = settings->bools.video_scale_integer;
|
int y = 0;
|
||||||
unsigned video_aspect_ratio_idx = settings->uints.video_aspect_ratio_idx;
|
|
||||||
video_driver_state_t *video_st = &video_driver_st;
|
|
||||||
float video_driver_aspect_ratio = video_st->aspect_ratio;
|
|
||||||
|
|
||||||
vp->x = 0;
|
|
||||||
vp->y = 0;
|
|
||||||
vp->width = vp->full_width;
|
|
||||||
vp->height = vp->full_height;
|
|
||||||
|
|
||||||
if (video_scale_integer && !force_full)
|
|
||||||
video_viewport_get_scaled_integer(
|
|
||||||
vp,
|
|
||||||
vp->full_width,
|
|
||||||
vp->full_height,
|
|
||||||
video_driver_aspect_ratio, keep_aspect);
|
|
||||||
else if (keep_aspect && !force_full)
|
|
||||||
{
|
|
||||||
float desired_aspect = video_driver_aspect_ratio;
|
|
||||||
|
|
||||||
#if defined(HAVE_MENU)
|
#if defined(HAVE_MENU)
|
||||||
if (video_aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
if (settings->uints.video_aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
||||||
{
|
{
|
||||||
const struct video_viewport *custom_vp = &settings->video_viewport_custom;
|
video_viewport_t *custom_vp = &settings->video_viewport_custom;
|
||||||
vp->x = custom_vp->x;
|
x = custom_vp->x;
|
||||||
vp->y = custom_vp->y;
|
y = custom_vp->y - custom_vp->height;
|
||||||
vp->width = custom_vp->width;
|
if (!ydown)
|
||||||
vp->height = custom_vp->height;
|
y = vp->full_height - y;
|
||||||
|
viewport_width = custom_vp->width;
|
||||||
|
viewport_height = custom_vp->height;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
@ -2092,30 +2081,58 @@ void video_driver_update_viewport(
|
||||||
}
|
}
|
||||||
else if (device_aspect > desired_aspect)
|
else if (device_aspect > desired_aspect)
|
||||||
{
|
{
|
||||||
delta = (desired_aspect / device_aspect - 1.0f)
|
float viewport_bias = settings->floats.video_viewport_bias_x;
|
||||||
/ 2.0f + 0.5f;
|
#if defined(RARCH_MOBILE)
|
||||||
vp->x = (int)roundf(vp->full_width * (0.5f - delta));
|
if (device_aspect < 1.0f)
|
||||||
vp->width = (unsigned)roundf(2.0f * vp->full_width * delta);
|
viewport_bias = settings->floats.video_viewport_bias_portrait_x;
|
||||||
vp->y = 0;
|
#endif
|
||||||
vp->height = vp->full_height;
|
delta = (desired_aspect / device_aspect - 1.0f) / 2.0f + 0.5f;
|
||||||
|
x = (int)roundf(viewport_width * ((0.5f - delta) * (viewport_bias * 2.0f)));
|
||||||
|
viewport_width = (unsigned)roundf(2.0f * viewport_width * delta);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
vp->x = 0;
|
float viewport_bias = settings->floats.video_viewport_bias_y;
|
||||||
vp->width = vp->full_width;
|
#if defined(RARCH_MOBILE)
|
||||||
delta = (device_aspect / desired_aspect - 1.0f)
|
if (device_aspect < 1.0f)
|
||||||
/ 2.0f + 0.5f;
|
viewport_bias = settings->floats.video_viewport_bias_portrait_y;
|
||||||
vp->y = (int)roundf(vp->full_height * (0.5f - delta));
|
#endif
|
||||||
vp->height = (unsigned)roundf(2.0f * vp->full_height * delta);
|
if (!ydown)
|
||||||
|
viewport_bias = 1.0 - viewport_bias;
|
||||||
|
delta = (device_aspect / desired_aspect - 1.0f) / 2.0f + 0.5f;
|
||||||
|
y = (int)roundf(viewport_height * ((0.5f - delta) * (viewport_bias * 2.0f)));
|
||||||
|
viewport_height = (unsigned)roundf(2.0f * viewport_height * delta);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
vp->x = x;
|
||||||
|
vp->y = y;
|
||||||
|
vp->width = viewport_width;
|
||||||
|
vp->height = viewport_height;
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(RARCH_MOBILE)
|
void video_driver_update_viewport(
|
||||||
/* In portrait mode, we want viewport to gravitate to top of screen. */
|
struct video_viewport* vp, bool force_full, bool keep_aspect)
|
||||||
if (device_aspect < 1.0f)
|
{
|
||||||
vp->y = 0;
|
settings_t *settings = config_get_ptr();
|
||||||
#endif
|
bool video_scale_integer = settings->bools.video_scale_integer;
|
||||||
|
video_driver_state_t *video_st = &video_driver_st;
|
||||||
|
float video_driver_aspect_ratio = video_st->aspect_ratio;
|
||||||
|
|
||||||
|
vp->x = 0;
|
||||||
|
vp->y = 0;
|
||||||
|
vp->width = vp->full_width;
|
||||||
|
vp->height = vp->full_height;
|
||||||
|
|
||||||
|
if (video_scale_integer && !force_full)
|
||||||
|
video_viewport_get_scaled_integer(
|
||||||
|
vp,
|
||||||
|
vp->full_width,
|
||||||
|
vp->full_height,
|
||||||
|
video_driver_aspect_ratio, keep_aspect, false);
|
||||||
|
else if (keep_aspect && !force_full)
|
||||||
|
{
|
||||||
|
video_viewport_get_scaled_aspect(vp, vp->full_width, vp->full_height, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void video_driver_restore_cached(void *settings_data)
|
void video_driver_restore_cached(void *settings_data)
|
||||||
|
@ -2304,13 +2321,15 @@ bool video_driver_get_viewport_info(struct video_viewport *viewport)
|
||||||
* @height : Height.
|
* @height : Height.
|
||||||
* @aspect_ratio : Aspect ratio (in float).
|
* @aspect_ratio : Aspect ratio (in float).
|
||||||
* @keep_aspect : Preserve aspect ratio?
|
* @keep_aspect : Preserve aspect ratio?
|
||||||
|
* @ydown : Positive y points down?
|
||||||
*
|
*
|
||||||
* Gets viewport scaling dimensions based on
|
* Gets viewport scaling dimensions based on
|
||||||
* scaled integer aspect ratio.
|
* scaled integer aspect ratio.
|
||||||
**/
|
**/
|
||||||
void video_viewport_get_scaled_integer(struct video_viewport *vp,
|
void video_viewport_get_scaled_integer(struct video_viewport *vp,
|
||||||
unsigned width, unsigned height,
|
unsigned width, unsigned height,
|
||||||
float aspect_ratio, bool keep_aspect)
|
float aspect_ratio, bool keep_aspect,
|
||||||
|
bool ydown)
|
||||||
{
|
{
|
||||||
int padding_x = 0;
|
int padding_x = 0;
|
||||||
int padding_y = 0;
|
int padding_y = 0;
|
||||||
|
@ -2318,7 +2337,6 @@ void video_viewport_get_scaled_integer(struct video_viewport *vp,
|
||||||
video_driver_state_t *video_st = &video_driver_st;
|
video_driver_state_t *video_st = &video_driver_st;
|
||||||
unsigned video_aspect_ratio_idx = settings->uints.video_aspect_ratio_idx;
|
unsigned video_aspect_ratio_idx = settings->uints.video_aspect_ratio_idx;
|
||||||
bool overscale = settings->bools.video_scale_integer_overscale;
|
bool overscale = settings->bools.video_scale_integer_overscale;
|
||||||
|
|
||||||
if (video_aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
if (video_aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
||||||
{
|
{
|
||||||
struct video_viewport *custom_vp = &settings->video_viewport_custom;
|
struct video_viewport *custom_vp = &settings->video_viewport_custom;
|
||||||
|
@ -2333,12 +2351,24 @@ void video_viewport_get_scaled_integer(struct video_viewport *vp,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
float viewport_bias_x = settings->floats.video_viewport_bias_x;
|
||||||
|
float viewport_bias_y = settings->floats.video_viewport_bias_y;
|
||||||
unsigned base_width;
|
unsigned base_width;
|
||||||
/* Use system reported sizes as these define the
|
/* Use system reported sizes as these define the
|
||||||
* geometry for the "normal" case. */
|
* geometry for the "normal" case. */
|
||||||
unsigned base_height =
|
unsigned base_height =
|
||||||
video_st->av_info.geometry.base_height;
|
video_st->av_info.geometry.base_height;
|
||||||
unsigned int rotation = retroarch_get_rotation();
|
unsigned int rotation = retroarch_get_rotation();
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
if (aspect_ratio < 1.0f)
|
||||||
|
{
|
||||||
|
viewport_bias_x = settings->floats.video_viewport_bias_portrait_x;
|
||||||
|
viewport_bias_y = settings->floats.video_viewport_bias_portrait_y;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (!ydown)
|
||||||
|
viewport_bias_y = 1.0 - viewport_bias_y;
|
||||||
|
|
||||||
if (rotation % 2)
|
if (rotation % 2)
|
||||||
base_height = video_st->av_info.geometry.base_width;
|
base_height = video_st->av_info.geometry.base_width;
|
||||||
|
@ -2382,12 +2412,14 @@ void video_viewport_get_scaled_integer(struct video_viewport *vp,
|
||||||
|
|
||||||
width -= padding_x;
|
width -= padding_x;
|
||||||
height -= padding_y;
|
height -= padding_y;
|
||||||
|
padding_x *= viewport_bias_x;
|
||||||
|
padding_y *= viewport_bias_y;
|
||||||
}
|
}
|
||||||
|
|
||||||
vp->width = width;
|
vp->width = width;
|
||||||
vp->height = height;
|
vp->height = height;
|
||||||
vp->x = padding_x / 2;
|
vp->x = padding_x;
|
||||||
vp->y = padding_y / 2;
|
vp->y = padding_y;
|
||||||
}
|
}
|
||||||
|
|
||||||
void video_driver_display_type_set(enum rarch_display_type type)
|
void video_driver_display_type_set(enum rarch_display_type type)
|
||||||
|
|
|
@ -991,18 +991,49 @@ void video_driver_menu_settings(void **list_data, void *list_info_data,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* video_viewport_get_scaled_integer:
|
* video_viewport_get_scaled_integer:
|
||||||
* @vp : Viewport handle
|
* @vp : Viewport handle.
|
||||||
* @width : Width.
|
* @width : Width.
|
||||||
* @height : Height.
|
* @height : Height.
|
||||||
* @aspect_ratio : Aspect ratio (in float).
|
* @aspect_ratio : Aspect ratio (in float).
|
||||||
* @keep_aspect : Preserve aspect ratio?
|
* @keep_aspect : Preserve aspect ratio?
|
||||||
|
* @ydown : Positive y goes "down".
|
||||||
*
|
*
|
||||||
* Gets viewport scaling dimensions based on
|
* Gets viewport scaling dimensions based on
|
||||||
* scaled integer aspect ratio.
|
* scaled integer aspect ratio.
|
||||||
**/
|
**/
|
||||||
void video_viewport_get_scaled_integer(struct video_viewport *vp,
|
void video_viewport_get_scaled_integer(struct video_viewport *vp,
|
||||||
unsigned width, unsigned height,
|
unsigned width, unsigned height,
|
||||||
float aspect_ratio, bool keep_aspect);
|
float aspect_ratio, bool keep_aspect,
|
||||||
|
bool ydown);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* video_viewport_get_scaled_aspect:
|
||||||
|
* @vp : Viewport handle. Fields x, y, width, height will be written, and full_width or full_height might be read.
|
||||||
|
* @width : Viewport width.
|
||||||
|
* @height : Viewport height.
|
||||||
|
* @ydown : Positive y goes "down".
|
||||||
|
*
|
||||||
|
* Gets viewport scaling dimensions based on
|
||||||
|
* scaled non-integer aspect ratio.
|
||||||
|
**/
|
||||||
|
void video_viewport_get_scaled_aspect(struct video_viewport *vp,
|
||||||
|
unsigned width, unsigned height, bool ydown);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* video_viewport_get_scaled_aspect2:
|
||||||
|
* @vp : Viewport handle. Fields x, y, width, height will be written, and full_width or full_height might be read.
|
||||||
|
* @width : Viewport width.
|
||||||
|
* @height : Viewport height.
|
||||||
|
* @ydown : Positive y goes "down".
|
||||||
|
* @device_aspect : Device aspect ratio.
|
||||||
|
* @desired_aspect: Target aspect ratio.
|
||||||
|
*
|
||||||
|
* Gets viewport scaling dimensions based on
|
||||||
|
* scaled non-integer aspect ratio.
|
||||||
|
**/
|
||||||
|
void video_viewport_get_scaled_aspect2(struct video_viewport *vp,
|
||||||
|
unsigned width, unsigned height, bool ydown,
|
||||||
|
float device_aspect, float desired_aspect);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* video_monitor_set_refresh_rate:
|
* video_monitor_set_refresh_rate:
|
||||||
|
|
|
@ -23,7 +23,9 @@ enum x11_mouse_btn_flags
|
||||||
X11_MOUSE_WU_BTN = (1 << 0),
|
X11_MOUSE_WU_BTN = (1 << 0),
|
||||||
X11_MOUSE_WD_BTN = (1 << 1),
|
X11_MOUSE_WD_BTN = (1 << 1),
|
||||||
X11_MOUSE_HWU_BTN = (1 << 2),
|
X11_MOUSE_HWU_BTN = (1 << 2),
|
||||||
X11_MOUSE_HWD_BTN = (1 << 3)
|
X11_MOUSE_HWD_BTN = (1 << 3),
|
||||||
|
X11_MOUSE_BTN_4 = (1 << 4),
|
||||||
|
X11_MOUSE_BTN_5 = (1 << 5)
|
||||||
};
|
};
|
||||||
|
|
||||||
/* TODO/FIXME - static globals */
|
/* TODO/FIXME - static globals */
|
||||||
|
@ -51,6 +53,13 @@ int16_t x_mouse_state_wheel(unsigned id)
|
||||||
ret = (g_x11_mouse_flags & X11_MOUSE_HWD_BTN);
|
ret = (g_x11_mouse_flags & X11_MOUSE_HWD_BTN);
|
||||||
g_x11_mouse_flags &= ~X11_MOUSE_HWD_BTN;
|
g_x11_mouse_flags &= ~X11_MOUSE_HWD_BTN;
|
||||||
break;
|
break;
|
||||||
|
case RETRO_DEVICE_ID_MOUSE_BUTTON_4:
|
||||||
|
ret = (g_x11_mouse_flags & X11_MOUSE_BTN_4);
|
||||||
|
break;
|
||||||
|
case RETRO_DEVICE_ID_MOUSE_BUTTON_5:
|
||||||
|
ret = (g_x11_mouse_flags & X11_MOUSE_BTN_5);
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -74,5 +83,31 @@ void x_input_poll_wheel(XButtonEvent *event, bool latch)
|
||||||
/* Scroll wheel right == HORIZ_WHEELUP */
|
/* Scroll wheel right == HORIZ_WHEELUP */
|
||||||
g_x11_mouse_flags |= X11_MOUSE_HWU_BTN;
|
g_x11_mouse_flags |= X11_MOUSE_HWU_BTN;
|
||||||
break;
|
break;
|
||||||
|
case 8:
|
||||||
|
/* Extra buttons are regular press-release events,
|
||||||
|
* while scroll wheels do not stay pressed. */
|
||||||
|
/* Mouse button 4 */
|
||||||
|
switch (event->type)
|
||||||
|
{
|
||||||
|
case ButtonPress:
|
||||||
|
g_x11_mouse_flags |= X11_MOUSE_BTN_4;
|
||||||
|
break;
|
||||||
|
case ButtonRelease:
|
||||||
|
g_x11_mouse_flags &= ~X11_MOUSE_BTN_4;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
/* Mouse button 5 */
|
||||||
|
switch (event->type)
|
||||||
|
{
|
||||||
|
case ButtonPress:
|
||||||
|
g_x11_mouse_flags |= X11_MOUSE_BTN_5;
|
||||||
|
break;
|
||||||
|
case ButtonRelease:
|
||||||
|
g_x11_mouse_flags &= ~X11_MOUSE_BTN_5;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -875,6 +875,14 @@ static INLINE void android_input_poll_event_type_keyboard(
|
||||||
mod |= RETROKMOD_CTRL;
|
mod |= RETROKMOD_CTRL;
|
||||||
if (meta & AMETA_SHIFT_ON)
|
if (meta & AMETA_SHIFT_ON)
|
||||||
mod |= RETROKMOD_SHIFT;
|
mod |= RETROKMOD_SHIFT;
|
||||||
|
if (meta & AMETA_CAPS_LOCK_ON)
|
||||||
|
mod |= RETROKMOD_CAPSLOCK;
|
||||||
|
if (meta & AMETA_NUM_LOCK_ON)
|
||||||
|
mod |= RETROKMOD_NUMLOCK;
|
||||||
|
if (meta & AMETA_SCROLL_LOCK_ON)
|
||||||
|
mod |= RETROKMOD_SCROLLOCK;
|
||||||
|
if (meta & AMETA_META_ON)
|
||||||
|
mod |= RETROKMOD_META;
|
||||||
|
|
||||||
input_keyboard_event(keydown, keyboardcode,
|
input_keyboard_event(keydown, keyboardcode,
|
||||||
keyboardcode, mod, RETRO_DEVICE_KEYBOARD);
|
keyboardcode, mod, RETRO_DEVICE_KEYBOARD);
|
||||||
|
|
|
@ -199,6 +199,26 @@ static void *dinput_init(const char *joypad_driver)
|
||||||
return di;
|
return di;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static uint16_t dinput_get_active_keyboard_mods()
|
||||||
|
{
|
||||||
|
uint16_t mod = 0;
|
||||||
|
if (GetKeyState(VK_SHIFT) & 0x80)
|
||||||
|
mod |= RETROKMOD_SHIFT;
|
||||||
|
if (GetKeyState(VK_CONTROL) & 0x80)
|
||||||
|
mod |= RETROKMOD_CTRL;
|
||||||
|
if (GetKeyState(VK_MENU) & 0x80)
|
||||||
|
mod |= RETROKMOD_ALT;
|
||||||
|
if (GetKeyState(VK_CAPITAL) & 0x81)
|
||||||
|
mod |= RETROKMOD_CAPSLOCK;
|
||||||
|
if (GetKeyState(VK_SCROLL) & 0x81)
|
||||||
|
mod |= RETROKMOD_SCROLLOCK;
|
||||||
|
if (GetKeyState(VK_NUMLOCK) & 0x81)
|
||||||
|
mod |= RETROKMOD_NUMLOCK;
|
||||||
|
if ((GetKeyState(VK_LWIN) | GetKeyState(VK_RWIN)) & 0x80)
|
||||||
|
mod |= RETROKMOD_META;
|
||||||
|
return mod;
|
||||||
|
}
|
||||||
|
|
||||||
static void dinput_keyboard_mods(struct dinput_input *di, int mod)
|
static void dinput_keyboard_mods(struct dinput_input *di, int mod)
|
||||||
{
|
{
|
||||||
switch (mod)
|
switch (mod)
|
||||||
|
@ -212,7 +232,8 @@ static void dinput_keyboard_mods(struct dinput_input *di, int mod)
|
||||||
|| (!vk_shift_l && (di->flags & DINP_FLAG_SHIFT_L)))
|
|| (!vk_shift_l && (di->flags & DINP_FLAG_SHIFT_L)))
|
||||||
{
|
{
|
||||||
input_keyboard_event(vk_shift_l, RETROK_LSHIFT,
|
input_keyboard_event(vk_shift_l, RETROK_LSHIFT,
|
||||||
0, RETROKMOD_SHIFT, RETRO_DEVICE_KEYBOARD);
|
0, dinput_get_active_keyboard_mods() | RETROKMOD_SHIFT,
|
||||||
|
RETRO_DEVICE_KEYBOARD);
|
||||||
if (di->flags & DINP_FLAG_SHIFT_L)
|
if (di->flags & DINP_FLAG_SHIFT_L)
|
||||||
di->flags &= ~DINP_FLAG_SHIFT_L;
|
di->flags &= ~DINP_FLAG_SHIFT_L;
|
||||||
else
|
else
|
||||||
|
@ -223,7 +244,8 @@ static void dinput_keyboard_mods(struct dinput_input *di, int mod)
|
||||||
|| (!vk_shift_r && (di->flags & DINP_FLAG_SHIFT_R)))
|
|| (!vk_shift_r && (di->flags & DINP_FLAG_SHIFT_R)))
|
||||||
{
|
{
|
||||||
input_keyboard_event(vk_shift_r, RETROK_RSHIFT,
|
input_keyboard_event(vk_shift_r, RETROK_RSHIFT,
|
||||||
0, RETROKMOD_SHIFT, RETRO_DEVICE_KEYBOARD);
|
0, dinput_get_active_keyboard_mods() | RETROKMOD_SHIFT,
|
||||||
|
RETRO_DEVICE_KEYBOARD);
|
||||||
if (di->flags & DINP_FLAG_SHIFT_R)
|
if (di->flags & DINP_FLAG_SHIFT_R)
|
||||||
di->flags &= ~DINP_FLAG_SHIFT_R;
|
di->flags &= ~DINP_FLAG_SHIFT_R;
|
||||||
else
|
else
|
||||||
|
@ -246,7 +268,8 @@ static void dinput_keyboard_mods(struct dinput_input *di, int mod)
|
||||||
else if (!vk_alt_l && (di->flags & DINP_FLAG_ALT_L))
|
else if (!vk_alt_l && (di->flags & DINP_FLAG_ALT_L))
|
||||||
{
|
{
|
||||||
input_keyboard_event(vk_alt_l, RETROK_LALT,
|
input_keyboard_event(vk_alt_l, RETROK_LALT,
|
||||||
0, RETROKMOD_ALT, RETRO_DEVICE_KEYBOARD);
|
0, dinput_get_active_keyboard_mods() | RETROKMOD_ALT,
|
||||||
|
RETRO_DEVICE_KEYBOARD);
|
||||||
if (di->flags & DINP_FLAG_ALT_L)
|
if (di->flags & DINP_FLAG_ALT_L)
|
||||||
di->flags &= ~DINP_FLAG_ALT_L;
|
di->flags &= ~DINP_FLAG_ALT_L;
|
||||||
else
|
else
|
||||||
|
|
|
@ -442,6 +442,11 @@ static void sdl_input_poll(void *data)
|
||||||
if (event.key.keysym.mod & KMOD_CAPS)
|
if (event.key.keysym.mod & KMOD_CAPS)
|
||||||
mod |= RETROKMOD_CAPSLOCK;
|
mod |= RETROKMOD_CAPSLOCK;
|
||||||
|
|
||||||
|
/* KMOD_SCROLL was added in SDL 2.0.18, use the raw number
|
||||||
|
to stay backwards compatible with older versions */
|
||||||
|
if (event.key.keysym.mod & 0x8000 /*KMOD_SCROLL*/)
|
||||||
|
mod |= RETROKMOD_SCROLLOCK;
|
||||||
|
|
||||||
input_keyboard_event(event.type == SDL_KEYDOWN, code, code, mod,
|
input_keyboard_event(event.type == SDL_KEYDOWN, code, code, mod,
|
||||||
RETRO_DEVICE_KEYBOARD);
|
RETRO_DEVICE_KEYBOARD);
|
||||||
}
|
}
|
||||||
|
|
|
@ -210,12 +210,20 @@ static void switch_input_poll(void *data)
|
||||||
}
|
}
|
||||||
|
|
||||||
hidGetKeyboardStates(&kbd_state, 1);
|
hidGetKeyboardStates(&kbd_state, 1);
|
||||||
if (hidKeyboardStateGetKey(&kbd_state, HidKeyboardKey_LeftAlt) || hidKeyboardStateGetKey(&kbd_state, HidKeyboardKey_RightAlt))
|
if (kbd_state.modifiers & (HidKeyboardModifier_LeftAlt | HidKeyboardModifier_RightAlt))
|
||||||
mod |= RETROKMOD_ALT;
|
mod |= RETROKMOD_ALT;
|
||||||
if (hidKeyboardStateGetKey(&kbd_state, HidKeyboardKey_LeftControl) || hidKeyboardStateGetKey(&kbd_state, HidKeyboardKey_RightControl))
|
if (kbd_state.modifiers & HidKeyboardModifier_Control)
|
||||||
mod |= RETROKMOD_CTRL;
|
mod |= RETROKMOD_CTRL;
|
||||||
if (hidKeyboardStateGetKey(&kbd_state, HidKeyboardKey_LeftShift) || hidKeyboardStateGetKey(&kbd_state, HidKeyboardKey_RightShift))
|
if (kbd_state.modifiers & HidKeyboardModifier_Shift)
|
||||||
mod |= RETROKMOD_SHIFT;
|
mod |= RETROKMOD_SHIFT;
|
||||||
|
if (kbd_state.modifiers & HidKeyboardModifier_Gui)
|
||||||
|
mod |= RETROKMOD_META;
|
||||||
|
if (kbd_state.modifiers & HidKeyboardModifier_CapsLock)
|
||||||
|
mod |= RETROKMOD_CAPSLOCK;
|
||||||
|
if (kbd_state.modifiers & HidKeyboardModifier_ScrollLock)
|
||||||
|
mod |= RETROKMOD_SCROLLOCK;
|
||||||
|
if (kbd_state.modifiers & HidKeyboardModifier_NumLock)
|
||||||
|
mod |= RETROKMOD_NUMLOCK;
|
||||||
|
|
||||||
for (i = 0; i < SWITCH_NUM_SCANCODES; i++)
|
for (i = 0; i < SWITCH_NUM_SCANCODES; i++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -581,6 +581,8 @@ static LRESULT CALLBACK winraw_callback(
|
||||||
mod |= RETROKMOD_CAPSLOCK;
|
mod |= RETROKMOD_CAPSLOCK;
|
||||||
if (GetKeyState(VK_SCROLL) & 0x81)
|
if (GetKeyState(VK_SCROLL) & 0x81)
|
||||||
mod |= RETROKMOD_SCROLLOCK;
|
mod |= RETROKMOD_SCROLLOCK;
|
||||||
|
if (GetKeyState(VK_NUMLOCK) & 0x81)
|
||||||
|
mod |= RETROKMOD_NUMLOCK;
|
||||||
if ((GetKeyState(VK_LWIN) | GetKeyState(VK_RWIN)) & 0x80)
|
if ((GetKeyState(VK_LWIN) | GetKeyState(VK_RWIN)) & 0x80)
|
||||||
mod |= RETROKMOD_META;
|
mod |= RETROKMOD_META;
|
||||||
|
|
||||||
|
|
|
@ -86,12 +86,8 @@ static bool x_mouse_button_pressed(
|
||||||
return x11->mouse_r;
|
return x11->mouse_r;
|
||||||
case RETRO_DEVICE_ID_MOUSE_MIDDLE:
|
case RETRO_DEVICE_ID_MOUSE_MIDDLE:
|
||||||
return x11->mouse_m;
|
return x11->mouse_m;
|
||||||
#if 0
|
|
||||||
case RETRO_DEVICE_ID_MOUSE_BUTTON_4:
|
case RETRO_DEVICE_ID_MOUSE_BUTTON_4:
|
||||||
return x11->mouse_b4;
|
|
||||||
case RETRO_DEVICE_ID_MOUSE_BUTTON_5:
|
case RETRO_DEVICE_ID_MOUSE_BUTTON_5:
|
||||||
return x11->mouse_b5;
|
|
||||||
#endif
|
|
||||||
case RETRO_DEVICE_ID_MOUSE_WHEELUP:
|
case RETRO_DEVICE_ID_MOUSE_WHEELUP:
|
||||||
case RETRO_DEVICE_ID_MOUSE_WHEELDOWN:
|
case RETRO_DEVICE_ID_MOUSE_WHEELDOWN:
|
||||||
case RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELUP:
|
case RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELUP:
|
||||||
|
@ -266,6 +262,8 @@ static int16_t x_input_state(
|
||||||
case RETRO_DEVICE_ID_MOUSE_WHEELDOWN:
|
case RETRO_DEVICE_ID_MOUSE_WHEELDOWN:
|
||||||
case RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELUP:
|
case RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELUP:
|
||||||
case RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELDOWN:
|
case RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELDOWN:
|
||||||
|
case RETRO_DEVICE_ID_MOUSE_BUTTON_4:
|
||||||
|
case RETRO_DEVICE_ID_MOUSE_BUTTON_5:
|
||||||
return x_mouse_state_wheel(id);
|
return x_mouse_state_wheel(id);
|
||||||
case RETRO_DEVICE_ID_MOUSE_MIDDLE:
|
case RETRO_DEVICE_ID_MOUSE_MIDDLE:
|
||||||
return x11->mouse_m;
|
return x11->mouse_m;
|
||||||
|
@ -489,7 +487,8 @@ static void x_input_poll(void *data)
|
||||||
x11->mouse_l = mask & Button1Mask;
|
x11->mouse_l = mask & Button1Mask;
|
||||||
x11->mouse_m = mask & Button2Mask;
|
x11->mouse_m = mask & Button2Mask;
|
||||||
x11->mouse_r = mask & Button3Mask;
|
x11->mouse_r = mask & Button3Mask;
|
||||||
|
/* Buttons 4 and 5 are not returned here, so they are handled elsewhere. */
|
||||||
|
|
||||||
/* > Mouse pointer */
|
/* > Mouse pointer */
|
||||||
if (!x11->mouse_grabbed)
|
if (!x11->mouse_grabbed)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1148,6 +1148,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_SAVING_SETTINGS,
|
MENU_ENUM_SUBLABEL_SAVING_SETTINGS,
|
||||||
"تغيير اعدادات النواة."
|
"تغيير اعدادات النواة."
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME,
|
||||||
"اسم المستخدم"
|
"اسم المستخدم"
|
||||||
|
@ -1875,6 +1883,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"نسبة الجوانب المخصصة (موضع X)"
|
"نسبة الجوانب المخصصة (موضع X)"
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"نسبة الجوانب المخصصة (العرض)"
|
"نسبة الجوانب المخصصة (العرض)"
|
||||||
|
|
|
@ -824,6 +824,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_ENABLE,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_ENABLE,
|
||||||
"Activar la sincronización na nube"
|
"Activar la sincronización na nube"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME,
|
||||||
"Nome d'usuariu"
|
"Nome d'usuariu"
|
||||||
|
@ -1059,6 +1067,8 @@ MSG_HASH(
|
||||||
"Caltener la proporción del aspeutu"
|
"Caltener la proporción del aspeutu"
|
||||||
)
|
)
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Settings > Video > HDR */
|
/* Settings > Video > HDR */
|
||||||
|
|
||||||
|
|
|
@ -1228,10 +1228,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Дэструктыўная воблачная сінхранізацыя"
|
"Дэструктыўная воблачная сінхранізацыя"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Калі адключана, файлы будуць перасунутыя ў тэчку рэзервовай копіі перад іх перазапісам ці выдаленнем."
|
"Калі адключана, файлы будуць перасунутыя ў тэчку рэзервовай копіі перад іх перазапісам ці выдаленнем."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
||||||
"Бэкенд воблачнай сінхранізацыі"
|
"Бэкенд воблачнай сінхранізацыі"
|
||||||
|
@ -2475,6 +2479,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Уласныя суадносіны бакоў (пазіцыя Y)"
|
"Уласныя суадносіны бакоў (пазіцыя Y)"
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Уласныя суадносіны бакоў (шырыня)"
|
"Уласныя суадносіны бакоў (шырыня)"
|
||||||
|
|
|
@ -336,6 +336,14 @@ MSG_HASH(
|
||||||
|
|
||||||
/* Settings */
|
/* Settings */
|
||||||
|
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_SETTINGS,
|
MENU_ENUM_LABEL_VALUE_PLAYLIST_SETTINGS,
|
||||||
"Плейлисти"
|
"Плейлисти"
|
||||||
|
@ -379,6 +387,8 @@ MSG_HASH(
|
||||||
|
|
||||||
#if defined(DINGUX)
|
#if defined(DINGUX)
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Settings > Video > HDR */
|
/* Settings > Video > HDR */
|
||||||
|
|
||||||
|
|
|
@ -1132,6 +1132,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_SAVING_SETTINGS,
|
MENU_ENUM_SUBLABEL_SAVING_SETTINGS,
|
||||||
"Canvia les configuracions de desament."
|
"Canvia les configuracions de desament."
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME,
|
||||||
"Nom d’usuari"
|
"Nom d’usuari"
|
||||||
|
@ -1907,6 +1915,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Òfset de subàrea de visualització personalitzat per definir la posició de l'eix Y de la subàrea de visualització.\nS'ignora si s'activa 'Escalat d'enter'."
|
"Òfset de subàrea de visualització personalitzat per definir la posició de l'eix Y de la subàrea de visualització.\nS'ignora si s'activa 'Escalat d'enter'."
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Relació d'aspecte personalitzat (amplada)"
|
"Relació d'aspecte personalitzat (amplada)"
|
||||||
|
|
|
@ -1232,10 +1232,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"破坏性云同步"
|
"破坏性云同步"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"禁用后,文件会在被覆盖或删除之前移至备份文件夹。"
|
"禁用后,文件会在被覆盖或删除之前移至备份文件夹。"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
||||||
"云同步后端"
|
"云同步后端"
|
||||||
|
@ -2559,6 +2563,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"自定义 Y 轴视图偏移量。\n如果启用「整数缩放」则忽略此选项。"
|
"自定义 Y 轴视图偏移量。\n如果启用「整数缩放」则忽略此选项。"
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"自定义宽高比宽度"
|
"自定义宽高比宽度"
|
||||||
|
|
|
@ -1188,10 +1188,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_ENABLE,
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_ENABLE,
|
||||||
"嘗試將雲端設定檔、記憶存檔與狀態同步到雲端儲存供應商。"
|
"嘗試將雲端設定檔、記憶存檔與狀態同步到雲端儲存供應商。"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"若未啟用,覆蓋或刪除前檔案將會移動到備份資料夾。"
|
"若未啟用,覆蓋或刪除前檔案將會移動到備份資料夾。"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
||||||
"雲端同步後端"
|
"雲端同步後端"
|
||||||
|
@ -2351,6 +2355,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"自訂影像顯示垂直位置, 正數向下移動, 負數向上移動。\n開啟「整數縮放」時此選項被忽略。"
|
"自訂影像顯示垂直位置, 正數向下移動, 負數向上移動。\n開啟「整數縮放」時此選項被忽略。"
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"自訂寬度"
|
"自訂寬度"
|
||||||
|
|
|
@ -1200,10 +1200,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Destruktivní cloudová synchronizace"
|
"Destruktivní cloudová synchronizace"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Pokud je tato funkce vypnuta, jsou soubory před přepsáním nebo odstraněním přesunuty do záložní složky."
|
"Pokud je tato funkce vypnuta, jsou soubory před přepsáním nebo odstraněním přesunuty do záložní složky."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
||||||
"Backend cloudové synchronizace"
|
"Backend cloudové synchronizace"
|
||||||
|
@ -2503,6 +2507,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Vlastní posun zobrazení, který se používá k určení polohy osy Y zobrazení.\nTyto údaje jsou ignorovány, pokud je povoleno 'Celočíselné Škálování'."
|
"Vlastní posun zobrazení, který se používá k určení polohy osy Y zobrazení.\nTyto údaje jsou ignorovány, pokud je povoleno 'Celočíselné Škálování'."
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Vlastní poměr stran (na šířku)"
|
"Vlastní poměr stran (na šířku)"
|
||||||
|
|
|
@ -880,6 +880,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_SAVING_SETTINGS,
|
MENU_ENUM_SUBLABEL_SAVING_SETTINGS,
|
||||||
"Newid gosodiadau arbed."
|
"Newid gosodiadau arbed."
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_LOGGING_SETTINGS,
|
MENU_ENUM_LABEL_VALUE_LOGGING_SETTINGS,
|
||||||
"Logio"
|
"Logio"
|
||||||
|
@ -1015,6 +1023,8 @@ MSG_HASH(
|
||||||
|
|
||||||
#if defined(DINGUX)
|
#if defined(DINGUX)
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Settings > Video > HDR */
|
/* Settings > Video > HDR */
|
||||||
|
|
||||||
|
|
|
@ -752,6 +752,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_SAVING_SETTINGS,
|
MENU_ENUM_SUBLABEL_SAVING_SETTINGS,
|
||||||
"Skift gemmeindstillinger."
|
"Skift gemmeindstillinger."
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_LOGGING_SETTINGS,
|
MENU_ENUM_LABEL_VALUE_LOGGING_SETTINGS,
|
||||||
"Logning"
|
"Logning"
|
||||||
|
@ -971,6 +979,8 @@ MSG_HASH(
|
||||||
|
|
||||||
#if defined(DINGUX)
|
#if defined(DINGUX)
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Settings > Video > HDR */
|
/* Settings > Video > HDR */
|
||||||
|
|
||||||
|
|
|
@ -1160,10 +1160,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Destruktive Cloud-Synchronisation"
|
"Destruktive Cloud-Synchronisation"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Wenn deaktiviert, werden die Dateien in einen Sicherungsordner verschoben, bevor sie überschrieben oder gelöscht werden."
|
"Wenn deaktiviert, werden die Dateien in einen Sicherungsordner verschoben, bevor sie überschrieben oder gelöscht werden."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
||||||
"Cloud-Sync-Backend"
|
"Cloud-Sync-Backend"
|
||||||
|
@ -2467,6 +2471,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Benutzerdefinierter Versatz des Ansichtsfensters, welcher die Y-Achsenposition definiert.\nDieser wird ignoriert, wenn \"Ganzzahlige Skalierung\" aktiviert ist."
|
"Benutzerdefinierter Versatz des Ansichtsfensters, welcher die Y-Achsenposition definiert.\nDieser wird ignoriert, wenn \"Ganzzahlige Skalierung\" aktiviert ist."
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Bildbreite"
|
"Bildbreite"
|
||||||
|
|
|
@ -1148,6 +1148,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_SAVING_SETTINGS,
|
MENU_ENUM_SUBLABEL_SAVING_SETTINGS,
|
||||||
"Αλλαγή ρυθμίσεων αποθήκευσης."
|
"Αλλαγή ρυθμίσεων αποθήκευσης."
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME,
|
||||||
"Όνομα Χρήστη"
|
"Όνομα Χρήστη"
|
||||||
|
@ -1611,6 +1619,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Προτιμώμενη Θέση Άξωνα Y Αναλογίας Οθόνης"
|
"Προτιμώμενη Θέση Άξωνα Y Αναλογίας Οθόνης"
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Προτιμώμενο Πλάτος Αναλογίας Οθόνης"
|
"Προτιμώμενο Πλάτος Αναλογίας Οθόνης"
|
||||||
|
|
|
@ -128,6 +128,14 @@ MSG_HASH(
|
||||||
|
|
||||||
/* Settings */
|
/* Settings */
|
||||||
|
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
|
|
||||||
/* Core option category placeholders for icons */
|
/* Core option category placeholders for icons */
|
||||||
|
|
||||||
|
@ -319,6 +327,8 @@ MSG_HASH(
|
||||||
"Maintain 1:1 pixel aspect ratios when scaling content with the internal IPU. If it's disabled, images will then be stretched to fill the entire display."
|
"Maintain 1:1 pixel aspect ratios when scaling content with the internal IPU. If it's disabled, images will then be stretched to fill the entire display."
|
||||||
)
|
)
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_CROP_OVERSCAN,
|
MENU_ENUM_SUBLABEL_VIDEO_CROP_OVERSCAN,
|
||||||
"Cut off a few pixels around the edges of the image customarily left blank by developers which sometimes also contain rubbish pixels."
|
"Cut off a few pixels around the edges of the image customarily left blank by developers which sometimes also contain rubbish pixels."
|
||||||
|
|
|
@ -264,6 +264,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_SAVING_SETTINGS,
|
MENU_ENUM_SUBLABEL_SAVING_SETTINGS,
|
||||||
"Change settings for the saving."
|
"Change settings for the saving."
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_LOGGING_SETTINGS,
|
MENU_ENUM_SUBLABEL_LOGGING_SETTINGS,
|
||||||
"Change settings for the logging."
|
"Change settings for the logging."
|
||||||
|
@ -415,6 +423,8 @@ MSG_HASH(
|
||||||
|
|
||||||
#if defined(DINGUX)
|
#if defined(DINGUX)
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Settings > Video > HDR */
|
/* Settings > Video > HDR */
|
||||||
|
|
||||||
|
|
|
@ -1220,10 +1220,26 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Sincronización destructiva"
|
"Sincronización destructiva"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_SAVES,
|
||||||
|
"Sincronizar: datos guardados/guardados rápidos"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sincronizar: archivos de configuración"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES,
|
||||||
|
"Al activar esta opción se sincronizarán los datos guardados y los guardados rápidos a la nube."
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Al activar esta opción se sincronizarán los archivos de configuración a la nube."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Al desactivar esta opción, los archivos serán trasladados a una carpeta de copia de seguridad antes de ser sobrescritos o eliminados."
|
"Al desactivar esta opción, los archivos serán trasladados a una carpeta de copia de seguridad antes de ser sobrescritos o eliminados."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
||||||
"Motor de sincronización en la nube"
|
"Motor de sincronización en la nube"
|
||||||
|
@ -1402,11 +1418,11 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_POWER_MANAGEMENT_SETTINGS,
|
MENU_ENUM_LABEL_VALUE_POWER_MANAGEMENT_SETTINGS,
|
||||||
"Energía"
|
"Administración de energía"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_POWER_MANAGEMENT_SETTINGS,
|
MENU_ENUM_SUBLABEL_POWER_MANAGEMENT_SETTINGS,
|
||||||
"Cambia los ajustes de energía."
|
"Cambia los ajustes de la administración de energía."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_RETRO_ACHIEVEMENTS_SETTINGS,
|
MENU_ENUM_LABEL_VALUE_RETRO_ACHIEVEMENTS_SETTINGS,
|
||||||
|
@ -2543,6 +2559,56 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Indica el diferencial de posición respecto al eje Y del área de visualización.\nEste valor se ignorará si la opción «Escalar usando números enteros» está activada."
|
"Indica el diferencial de posición respecto al eje Y del área de visualización.\nEste valor se ignorará si la opción «Escalar usando números enteros» está activada."
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_X,
|
||||||
|
"Compensación del eje X del punto de anclaje del área de visualización"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_BIAS_X,
|
||||||
|
"Compensación del eje X del punto de anclaje del área de visualización"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_Y,
|
||||||
|
"Compensación del eje Y del punto de anclaje del área de visualización"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_BIAS_Y,
|
||||||
|
"Compensación del eje Y del punto de anclaje del área de visualización"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_BIAS_X,
|
||||||
|
"Compensación personalizada usada para desplazar horizontalmente el área de visualización (si es más ancha que la altura del contenido). 0,0 significa llevar al extremo izquierdo y 1,0 significa llevar al extremo derecho."
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_BIAS_Y,
|
||||||
|
"Compensación personalizada usada para desplazar verticalmente el área de visualización (si es más alta que la altura del contenido). 0,0 significa llevar al extremo superior y 1,0 significa llevar al extremo inferior."
|
||||||
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_X,
|
||||||
|
"Compensación del eje X del punto de anclaje del área de visualización (orientación vertical)"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_BIAS_PORTRAIT_X,
|
||||||
|
"Compensación del eje X del punto de anclaje del área de visualización (orientación vertical)"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_Y,
|
||||||
|
"Compensación del eje Y del punto de anclaje del área de visualización (orientación vertical)"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_BIAS_PORTRAIT_Y,
|
||||||
|
"Compensación del eje Y del punto de anclaje del área de visualización (orientación vertical)"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_X,
|
||||||
|
"Compensación personalizada usada para desplazar horizontalmente el área de visualización (si es más ancha que la altura del contenido) en una orientación vertical. 0,0 significa llevar al extremo izquierdo y 1,0 significa llevar al extremo derecho."
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_Y,
|
||||||
|
"Compensación personalizada usada para desplazar verticalmente el área de visualización (si es más alta que la altura del contenido) en una orientación vertical. 0,0 significa llevar al extremo superior y 1,0 significa llevar al extremo inferior."
|
||||||
|
)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Relación de aspecto personalizada (ancho)"
|
"Relación de aspecto personalizada (ancho)"
|
||||||
|
@ -4294,7 +4360,7 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES,
|
MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES,
|
||||||
"Ajusta el número de fotogramas a ejecutar de forma anticipada. Puede haber tirones si el número de fotogramas retrasados supera al valor interno del juego."
|
"Ajusta el número de fotogramas a ejecutar de forma anticipada. Puede haber distorsiones visuales si el número de fotogramas retrasados supera al valor interno del juego."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE,
|
MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE,
|
||||||
|
@ -4334,7 +4400,7 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_PREEMPT_FRAMES,
|
MENU_ENUM_SUBLABEL_PREEMPT_FRAMES,
|
||||||
"Ajusta el número de fotogramas preventivos que se ejecutarán. Puede haber tirones si el número de fotogramas retrasados supera al valor interno del juego."
|
"Ajusta el número de fotogramas preventivos que se ejecutarán. Puede haber distorsiones visuales si el número de fotogramas retrasados supera al valor interno del juego."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_PREEMPT_HIDE_WARNINGS,
|
MENU_ENUM_LABEL_VALUE_PREEMPT_HIDE_WARNINGS,
|
||||||
|
@ -5272,19 +5338,19 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_OVERLAY_X_OFFSET_LANDSCAPE,
|
MENU_ENUM_LABEL_VALUE_OVERLAY_X_OFFSET_LANDSCAPE,
|
||||||
"Compensación X de superposición (modo horizontal)"
|
"Desplazamiento X de superposición (modo horizontal)"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_OVERLAY_X_OFFSET_LANDSCAPE,
|
MENU_ENUM_SUBLABEL_OVERLAY_X_OFFSET_LANDSCAPE,
|
||||||
"Compensa la superposición en el eje horizontal al utilizar una orientación de pantalla horizontal. Los valores positivos desplazarán la superposición hacia la derecha y los negativos hacia la izquierda."
|
"Desplaza la superposición en el eje horizontal al utilizar una orientación de pantalla horizontal. Los valores positivos desplazarán la superposición hacia la derecha y los negativos hacia la izquierda."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_OVERLAY_Y_OFFSET_LANDSCAPE,
|
MENU_ENUM_LABEL_VALUE_OVERLAY_Y_OFFSET_LANDSCAPE,
|
||||||
"Compensación Y de superposición (modo horizontal)"
|
"Desplazamiento Y de superposición (modo horizontal)"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_OVERLAY_Y_OFFSET_LANDSCAPE,
|
MENU_ENUM_SUBLABEL_OVERLAY_Y_OFFSET_LANDSCAPE,
|
||||||
"Compensa la superposición en el eje vertical al utilizar una orientación de pantalla horizontal. Los valores positivos desplazarán la superposición hacia arriba y los negativos hacia abajo."
|
"Desplaza la superposición en el eje vertical al utilizar una orientación de pantalla horizontal. Los valores positivos desplazarán la superposición hacia arriba y los negativos hacia abajo."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_OVERLAY_SCALE_PORTRAIT,
|
MENU_ENUM_LABEL_VALUE_OVERLAY_SCALE_PORTRAIT,
|
||||||
|
@ -5320,19 +5386,19 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_OVERLAY_X_OFFSET_PORTRAIT,
|
MENU_ENUM_LABEL_VALUE_OVERLAY_X_OFFSET_PORTRAIT,
|
||||||
"Compensación X de superposición (modo vertical)"
|
"Desplazamiento X de superposición (modo vertical)"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_OVERLAY_X_OFFSET_PORTRAIT,
|
MENU_ENUM_SUBLABEL_OVERLAY_X_OFFSET_PORTRAIT,
|
||||||
"Compensa la superposición en el eje horizontal al utilizar una orientación de pantalla vertical. Los valores positivos desplazarán la superposición hacia la derecha y los negativos hacia la izquierda."
|
"Desplaza la superposición en el eje horizontal al utilizar una orientación de pantalla vertical. Los valores positivos desplazarán la superposición hacia la derecha y los negativos hacia la izquierda."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_OVERLAY_Y_OFFSET_PORTRAIT,
|
MENU_ENUM_LABEL_VALUE_OVERLAY_Y_OFFSET_PORTRAIT,
|
||||||
"Compensación Y de superposición (modo vertical)"
|
"Desplazamiento Y de superposición (modo vertical)"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_OVERLAY_Y_OFFSET_PORTRAIT,
|
MENU_ENUM_SUBLABEL_OVERLAY_Y_OFFSET_PORTRAIT,
|
||||||
"Compensa la superposición en el eje vertical al utilizar una orientación de pantalla vertical. Los valores positivos desplazarán la superposición hacia arriba y los negativos hacia abajo."
|
"Desplaza la superposición en el eje vertical al utilizar una orientación de pantalla vertical. Los valores positivos desplazarán la superposición hacia arriba y los negativos hacia abajo."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_OSK_OVERLAY_SETTINGS,
|
MENU_ENUM_LABEL_VALUE_OSK_OVERLAY_SETTINGS,
|
||||||
|
@ -6759,11 +6825,11 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_POWER_MANAGEMENT,
|
MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_POWER_MANAGEMENT,
|
||||||
"Mostrar Energía"
|
"Mostrar Administración de energía"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_SETTINGS_SHOW_POWER_MANAGEMENT,
|
MENU_ENUM_SUBLABEL_SETTINGS_SHOW_POWER_MANAGEMENT,
|
||||||
"Muestra los ajustes de energía."
|
"Muestra los ajustes de administración de energía."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_ACHIEVEMENTS,
|
MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_ACHIEVEMENTS,
|
||||||
|
@ -6819,7 +6885,7 @@ MSG_HASH(
|
||||||
|
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_MENU_SCALE_FACTOR,
|
MENU_ENUM_LABEL_VALUE_MENU_SCALE_FACTOR,
|
||||||
"Escala"
|
"Factor de escala"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_MENU_SCALE_FACTOR,
|
MENU_ENUM_SUBLABEL_MENU_SCALE_FACTOR,
|
||||||
|
@ -7415,11 +7481,11 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_MIN,
|
MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_MIN,
|
||||||
"Indica el número de fotogramas de entrada que se utilizarán para ocultar la latencia durante el juego en red. Reduce los tirones y el uso de la CPU a costa de incrementar la latencia de entrada."
|
"Indica el número de fotogramas de entrada que se utilizarán para ocultar la latencia durante el juego en red. Reduce las distorsiones visuales y el uso de la CPU a costa de incrementar la latencia de entrada."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_HELP_NETPLAY_INPUT_LATENCY_FRAMES_MIN,
|
MENU_ENUM_LABEL_HELP_NETPLAY_INPUT_LATENCY_FRAMES_MIN,
|
||||||
"El número de fotogramas de retraso en la entrada que utilizará el juego en red para ocultar la latencia de red.\nEsta opción retrasa la entrada local en el juego en red para que el fotograma ejecutado sea más próximo a los fotogramas que se reciban a través de la red, reduciendo los tirones y el consumo de la CPU, pero generará un retraso en la entrada visible."
|
"El número de fotogramas de retraso en la entrada que utilizará el juego en red para ocultar la latencia de red.\nEsta opción retrasa la entrada local en el juego en red para que el fotograma ejecutado sea más próximo a los fotogramas que se reciban a través de la red, reduciendo las distorsiones visuales y el consumo de la CPU, pero generará un retraso en la entrada visible."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_NETPLAY_INPUT_LATENCY_FRAMES_RANGE,
|
MENU_ENUM_LABEL_VALUE_NETPLAY_INPUT_LATENCY_FRAMES_RANGE,
|
||||||
|
@ -7427,11 +7493,11 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE,
|
MENU_ENUM_SUBLABEL_NETPLAY_INPUT_LATENCY_FRAMES_RANGE,
|
||||||
"Indica el rango de fotogramas de entrada que se utilizarán para ocultar la latencia durante el juego en red. Reduce los tirones y el uso de la CPU a costa de incrementar la latencia de entrada."
|
"Indica el rango de fotogramas de entrada que se utilizarán para ocultar la latencia durante el juego en red. Reduce las distorsiones visuales y el uso de la CPU a costa de incrementar la latencia de entrada."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_HELP_NETPLAY_INPUT_LATENCY_FRAMES_RANGE,
|
MENU_ENUM_LABEL_HELP_NETPLAY_INPUT_LATENCY_FRAMES_RANGE,
|
||||||
"El rango de fotogramas de retraso de entrada que puede utilizar el juego en red para camuflar la latencia de red.\nSi esta opción está activada, el juego en red ajustará de forma dinámica el número de fotogramas de retraso en la entrada para equilibrar el uso de la CPU; el retraso de entrada y la latencia de red. Reducirá los tirones y el consumo de la CPU, pero generará un retraso impredecible en las entradas/controles."
|
"El rango de fotogramas de retraso de entrada que puede utilizar el juego en red para camuflar la latencia de red.\nSi esta opción está activada, el juego en red ajustará de forma dinámica el número de fotogramas de retraso en la entrada para equilibrar el uso de la CPU; el retraso de entrada y la latencia de red. Reducirá las distorsiones visuales y el consumo de la CPU, pero generará un retraso impredecible en las entradas/controles."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_NETPLAY_NAT_TRAVERSAL,
|
MENU_ENUM_LABEL_VALUE_NETPLAY_NAT_TRAVERSAL,
|
||||||
|
@ -11254,7 +11320,7 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_MENU_XMB_THUMBNAIL_SCALE_FACTOR,
|
MENU_ENUM_LABEL_VALUE_MENU_XMB_THUMBNAIL_SCALE_FACTOR,
|
||||||
"Escala de miniaturas"
|
"Factor de escala de miniaturas"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_MENU_XMB_THUMBNAIL_SCALE_FACTOR,
|
MENU_ENUM_SUBLABEL_MENU_XMB_THUMBNAIL_SCALE_FACTOR,
|
||||||
|
@ -11508,7 +11574,7 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR,
|
MENU_ENUM_LABEL_VALUE_OZONE_THUMBNAIL_SCALE_FACTOR,
|
||||||
"Escala de miniaturas"
|
"Factor de escala de miniaturas"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR,
|
MENU_ENUM_SUBLABEL_OZONE_THUMBNAIL_SCALE_FACTOR,
|
||||||
|
@ -12472,7 +12538,7 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES,
|
MENU_ENUM_LABEL_VALUE_VIDEO_MAX_SWAPCHAIN_IMAGES,
|
||||||
"Máximo de imágenes en «swap chain»"
|
"Máximo de imágenes en swap chain"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_MAX_SWAPCHAIN_IMAGES,
|
MENU_ENUM_SUBLABEL_VIDEO_MAX_SWAPCHAIN_IMAGES,
|
||||||
|
@ -12480,11 +12546,11 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_HELP_VIDEO_MAX_SWAPCHAIN_IMAGES,
|
MENU_ENUM_LABEL_HELP_VIDEO_MAX_SWAPCHAIN_IMAGES,
|
||||||
"Indica la cantidad máxima de imágenes en «swap chain». Esto indica al controlador de vídeo que utilice un búfer de vídeo concreto.\nBúfer simple: 1\nBúfer doble: 2\nBúfer triple: 3\nSelecciona el búfer más apropiado para mejorar en gran medida la latencia."
|
"Indica la cantidad máxima de imágenes en swap chain. Esto indica al controlador de vídeo que utilice un búfer de vídeo concreto.\nBúfer simple: 1\nBúfer doble: 2\nBúfer triple: 3\nSelecciona el búfer más apropiado para mejorar en gran medida la latencia."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_WAITABLE_SWAPCHAINS,
|
MENU_ENUM_LABEL_VALUE_VIDEO_WAITABLE_SWAPCHAINS,
|
||||||
"«Swap chains» en espera"
|
"Swap chains en espera"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_WAITABLE_SWAPCHAINS,
|
MENU_ENUM_SUBLABEL_VIDEO_WAITABLE_SWAPCHAINS,
|
||||||
|
@ -13825,7 +13891,7 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MSG_HW_RENDERED_MUST_USE_POSTSHADED_RECORDING,
|
MSG_HW_RENDERED_MUST_USE_POSTSHADED_RECORDING,
|
||||||
"Este núcleo Libretro se renderiza por hardware. Las grabaciones deben tener shaders aplicados."
|
"Este núcleo libretro se renderiza por hardware. Las grabaciones deben tener shaders aplicados."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MSG_INFLATED_CHECKSUM_DID_NOT_MATCH_CRC32,
|
MSG_INFLATED_CHECKSUM_DID_NOT_MATCH_CRC32,
|
||||||
|
|
|
@ -1192,6 +1192,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"همگامسازی ابری تخریبی"
|
"همگامسازی ابری تخریبی"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DRIVER,
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DRIVER,
|
||||||
"شیوهنامهٔ شبکهٔ فضای ابری که باید استفاده شود."
|
"شیوهنامهٔ شبکهٔ فضای ابری که باید استفاده شود."
|
||||||
|
@ -1963,6 +1971,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"نرخ نسبت سفارشی (موقعیت Y)"
|
"نرخ نسبت سفارشی (موقعیت Y)"
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"نرخ نسبت سفارشی (عرض)"
|
"نرخ نسبت سفارشی (عرض)"
|
||||||
|
|
|
@ -1208,10 +1208,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Tuhoava pilvisynkronointi"
|
"Tuhoava pilvisynkronointi"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Kun pois käytöstä, tiedostot siirretään varmuuskopio-kansioon, ennen kuin niitä korvataan tai poistetaan."
|
"Kun pois käytöstä, tiedostot siirretään varmuuskopio-kansioon, ennen kuin niitä korvataan tai poistetaan."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
||||||
"Pilvisynkronoinnin taustaosa"
|
"Pilvisynkronoinnin taustaosa"
|
||||||
|
@ -2339,6 +2343,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Mukautettu ikkunan siirtymä, jota käytetään ikkunan Y-akselin sijainnin määrittämiseen.\nNämä jätetään huomioimatta, jos 'Skaalaa kokonaisluvuin' on käytössä."
|
"Mukautettu ikkunan siirtymä, jota käytetään ikkunan Y-akselin sijainnin määrittämiseen.\nNämä jätetään huomioimatta, jos 'Skaalaa kokonaisluvuin' on käytössä."
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Mukautettu kuvasuhde (Leveys)"
|
"Mukautettu kuvasuhde (Leveys)"
|
||||||
|
|
|
@ -1196,10 +1196,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Synchronisation destructive avec le Cloud"
|
"Synchronisation destructive avec le Cloud"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Lorsque cette option est désactivée, les fichiers sont déplacés vers un dossier de sauvegarde avant d'être remplacés ou supprimés."
|
"Lorsque cette option est désactivée, les fichiers sont déplacés vers un dossier de sauvegarde avant d'être remplacés ou supprimés."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
||||||
"Plateforme de synchronisation avec le Cloud"
|
"Plateforme de synchronisation avec le Cloud"
|
||||||
|
@ -2523,6 +2527,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Décalage de la fenêtre d'affichage sur l'axe Y.\nCette option sera ignorée si l'option 'Échelle à l'entier' est activée."
|
"Décalage de la fenêtre d'affichage sur l'axe Y.\nCette option sera ignorée si l'option 'Échelle à l'entier' est activée."
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Largeur de l'affichage (Rapport d'aspect personnalisé)"
|
"Largeur de l'affichage (Rapport d'aspect personnalisé)"
|
||||||
|
|
|
@ -46,7 +46,7 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CONTENTLESS_CORES_TAB,
|
MENU_ENUM_LABEL_VALUE_CONTENTLESS_CORES_TAB,
|
||||||
"Núcleos sen Contido"
|
"Núcleos sen Contidos"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_ADD_TAB,
|
MENU_ENUM_LABEL_VALUE_ADD_TAB,
|
||||||
|
@ -61,7 +61,7 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_CONTENT_SETTINGS,
|
MENU_ENUM_SUBLABEL_CONTENT_SETTINGS,
|
||||||
"Accede rápido ás configuracións relevantes do xogo."
|
"Accede rapidamente ás configuracións relevantes da partida."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CORE_LIST,
|
MENU_ENUM_LABEL_VALUE_CORE_LIST,
|
||||||
|
@ -151,7 +151,7 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_ONLINE_UPDATER,
|
MENU_ENUM_SUBLABEL_ONLINE_UPDATER,
|
||||||
"Descarga módulos de extensión, compoñentes e contido para RetroArch."
|
"Descargar complementos, compoñentes e contido para RetroArch."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_NETPLAY,
|
MENU_ENUM_LABEL_VALUE_NETPLAY,
|
||||||
|
@ -308,7 +308,7 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_GOTO_CONTENTLESS_CORES,
|
MENU_ENUM_LABEL_VALUE_GOTO_CONTENTLESS_CORES,
|
||||||
"Núcleos sen Contido"
|
"Núcleos sen Contidos"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_GOTO_CONTENTLESS_CORES,
|
MENU_ENUM_SUBLABEL_GOTO_CONTENTLESS_CORES,
|
||||||
|
@ -1150,7 +1150,7 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_SETTINGS,
|
MENU_ENUM_SUBLABEL_VIDEO_SETTINGS,
|
||||||
"Cambia os axustes da saída de video."
|
"Cambia os axustes da saída de vídeo."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_AUDIO_SETTINGS,
|
MENU_ENUM_LABEL_VALUE_AUDIO_SETTINGS,
|
||||||
|
@ -1158,7 +1158,7 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_AUDIO_SETTINGS,
|
MENU_ENUM_SUBLABEL_AUDIO_SETTINGS,
|
||||||
"Cambiar a configuración de entrada/saída de audio."
|
"Cambia a configuración de entrada e saída do son."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_INPUT_SETTINGS,
|
MENU_ENUM_LABEL_VALUE_INPUT_SETTINGS,
|
||||||
|
@ -1220,10 +1220,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Sincronización da nube destrutiva"
|
"Sincronización da nube destrutiva"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Cando está desactivado, os ficheiros móvense a un cartafol de copia de seguranza antes de sobrescribilos ou eliminalos."
|
"Cando está desactivado, os ficheiros móvense a un cartafol de copia de seguranza antes de sobrescribilos ou eliminalos."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
||||||
"Backend de sincronización na nube"
|
"Backend de sincronización na nube"
|
||||||
|
@ -1398,11 +1402,11 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_POWER_MANAGEMENT_SETTINGS,
|
MENU_ENUM_LABEL_VALUE_POWER_MANAGEMENT_SETTINGS,
|
||||||
"Xestión enerxética"
|
"Xestión da Enerxía"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_POWER_MANAGEMENT_SETTINGS,
|
MENU_ENUM_SUBLABEL_POWER_MANAGEMENT_SETTINGS,
|
||||||
"Cambia as configuracións da xestión enerxética."
|
"Cambia as configuracións da xestión de enerxía."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_RETRO_ACHIEVEMENTS_SETTINGS,
|
MENU_ENUM_LABEL_VALUE_RETRO_ACHIEVEMENTS_SETTINGS,
|
||||||
|
@ -2519,6 +2523,24 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Desfase personalizado da ventana gráfica que se usa para definir a posición do eixe Y da ventana gráfica.\nIgnoraranse se está activada a \"Escala enteira\"."
|
"Desfase personalizado da ventana gráfica que se usa para definir a posición do eixe Y da ventana gráfica.\nIgnoraranse se está activada a \"Escala enteira\"."
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_BIAS_X,
|
||||||
|
"Desviación personalizada do porto de vista usada para compensar o porto de vista horizontalmente (se for máis ancho que a altura do contido). 0.0 significa moi á esquerda e 1.0 significa moi á dereita."
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_BIAS_Y,
|
||||||
|
"Desviación personalizada do porto de vista usada para compensar o porto de vista verticalmente (se for máis alto que a altura do contido). 0.0 significa arriba e 1.0 significa abaixo."
|
||||||
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_X,
|
||||||
|
"Desviación personalizada do porto de vista usada para desprazar o porto de vista horizontalmente (se for máis ancho que a altura do contido). 0.0 significa á esquerda e 1.0 significa á dereita. (Orientación en retrato)"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_Y,
|
||||||
|
"Desviación personalizada do porto de vista usada para compensar o porto de vista verticalmente (se for máis alto que a altura do contido). 0.0 significa arriba e 1.0 significa abaixo. (Orientación en retrato)"
|
||||||
|
)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Relación de aspecto personalizada (ancho)"
|
"Relación de aspecto personalizada (ancho)"
|
||||||
|
@ -2691,7 +2713,7 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_MICROPHONE_SETTINGS,
|
MENU_ENUM_SUBLABEL_MICROPHONE_SETTINGS,
|
||||||
"Cambiar a configuración de entrada de audio."
|
"Cambiar a configuración de entrada de son."
|
||||||
)
|
)
|
||||||
#endif
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
|
@ -3939,35 +3961,35 @@ MSG_HASH(
|
||||||
|
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_PING_TOGGLE,
|
MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_PING_TOGGLE,
|
||||||
"Ping de Netplay (alternar)"
|
"Ping do Xogo en Rede (alternar)"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_INPUT_META_NETPLAY_PING_TOGGLE,
|
MENU_ENUM_SUBLABEL_INPUT_META_NETPLAY_PING_TOGGLE,
|
||||||
"Activa/desactiva o contador de ping para a sala de netplay actual."
|
"Activa/desactiva o contador de ping para a sala de Xogo en Rede actual."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_HOST_TOGGLE,
|
MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_HOST_TOGGLE,
|
||||||
"Aloxamento de Netplay (alternar)"
|
"Aloxamento de Xogo en Rede (alternar)"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_INPUT_META_NETPLAY_HOST_TOGGLE,
|
MENU_ENUM_SUBLABEL_INPUT_META_NETPLAY_HOST_TOGGLE,
|
||||||
"Activa/desactiva o hospedaxe de netplay."
|
"Activa/desactiva o hospedaxe de Xogo en Rede."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH,
|
MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_GAME_WATCH,
|
||||||
"Netplay Play/Spectate Mode (alternar)"
|
"Xogo en Rede Modo Xogador / Espectador (alternar)"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_INPUT_META_NETPLAY_GAME_WATCH,
|
MENU_ENUM_SUBLABEL_INPUT_META_NETPLAY_GAME_WATCH,
|
||||||
"Cambia a sesión actual de netplay entre os modos \"xogar\" e \"espectador\"."
|
"Cambia a sesión actual do xogo en rede entre os modos \"xogar\" e \"espectador\"."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_PLAYER_CHAT,
|
MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_PLAYER_CHAT,
|
||||||
"Chat de Netplay Player"
|
"Chat de Xogadores no Xogo en Rede"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_INPUT_META_NETPLAY_PLAYER_CHAT,
|
MENU_ENUM_SUBLABEL_INPUT_META_NETPLAY_PLAYER_CHAT,
|
||||||
"Envía unha mensaxe de chat á sesión actual de netplay."
|
"Envía unha mensaxe de chat na sesión actual de Xogo en Rede."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_FADE_CHAT_TOGGLE,
|
MENU_ENUM_LABEL_VALUE_INPUT_META_NETPLAY_FADE_CHAT_TOGGLE,
|
||||||
|
@ -4834,11 +4856,11 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_FASTFORWARD_FRAMESKIP,
|
MENU_ENUM_LABEL_VALUE_FASTFORWARD_FRAMESKIP,
|
||||||
"Frameskip de avance rápido"
|
"Salto Rápido de Fotogramas"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_FASTFORWARD_FRAMESKIP,
|
MENU_ENUM_SUBLABEL_FASTFORWARD_FRAMESKIP,
|
||||||
"Saltar fotogramas segundo a taxa de avance rápido. Isto aforra enerxía e permite o uso da limitación de cadros de terceiros."
|
"Saltar fotogramas segundo a taxa de avance rápido. Isto conserva enerxía e permite o uso de limitación de fotogramas de terceiros."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_SLOWMOTION_RATIO,
|
MENU_ENUM_LABEL_VALUE_SLOWMOTION_RATIO,
|
||||||
|
@ -7131,11 +7153,11 @@ MSG_HASH(
|
||||||
|
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_NETPLAY_PUBLIC_ANNOUNCE,
|
MENU_ENUM_LABEL_VALUE_NETPLAY_PUBLIC_ANNOUNCE,
|
||||||
"Anunciar publicamente Netplay"
|
"Anunciar publicamente o Xogo en Rede"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_NETPLAY_PUBLIC_ANNOUNCE,
|
MENU_ENUM_SUBLABEL_NETPLAY_PUBLIC_ANNOUNCE,
|
||||||
"Indica se hai que anunciar xogos de netplay publicamente. Se non se configura, os clientes deben conectarse manualmente en lugar de usar o vestíbulo público."
|
"Indica se hai que anunciar sesións de xogos en rede publicamente. Se non se configura, os clientes deben conectarse manualmente en lugar de usar o vestíbulo público."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_NETPLAY_USE_MITM_SERVER,
|
MENU_ENUM_LABEL_VALUE_NETPLAY_USE_MITM_SERVER,
|
||||||
|
@ -7143,7 +7165,7 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_NETPLAY_USE_MITM_SERVER,
|
MENU_ENUM_SUBLABEL_NETPLAY_USE_MITM_SERVER,
|
||||||
"Reenviar conexións de netplay a través dun servidor man-in-the-middle. Útil se o host está detrás dun firewall ou ten problemas con NAT/UPnP."
|
"Reenviar as conexións de xogo en rede a través dun servidor intermediario (man-in-the-middle). Útil se o servidor está detrás dunha devasa (firewall) ou ten problemas con NAT/UPnP."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_NETPLAY_MITM_SERVER,
|
MENU_ENUM_LABEL_VALUE_NETPLAY_MITM_SERVER,
|
||||||
|
@ -7187,15 +7209,15 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_NETPLAY_IP_ADDRESS,
|
MENU_ENUM_SUBLABEL_NETPLAY_IP_ADDRESS,
|
||||||
"O enderezo do host ao que se conectar."
|
"O enderezo do servidor ao que se conectar."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_NETPLAY_TCP_UDP_PORT,
|
MENU_ENUM_LABEL_VALUE_NETPLAY_TCP_UDP_PORT,
|
||||||
"Porto TCP de Netplay"
|
"Porto TCP do Xogo en Rede"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_NETPLAY_TCP_UDP_PORT,
|
MENU_ENUM_SUBLABEL_NETPLAY_TCP_UDP_PORT,
|
||||||
"O porto do enderezo IP do host. Pode ser un porto TCP ou UDP."
|
"O porto do enderezo IP do servidor. Pode ser un porto TCP ou UDP."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_NETPLAY_MAX_CONNECTIONS,
|
MENU_ENUM_LABEL_VALUE_NETPLAY_MAX_CONNECTIONS,
|
||||||
|
@ -7203,15 +7225,15 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_NETPLAY_MAX_CONNECTIONS,
|
MENU_ENUM_SUBLABEL_NETPLAY_MAX_CONNECTIONS,
|
||||||
"O número máximo de conexións activas que o host aceptará antes de rexeitar outras novas."
|
"O número máximo de conexións activas co servidor aceptará antes de rexeitar outras novas."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_NETPLAY_MAX_PING,
|
MENU_ENUM_LABEL_VALUE_NETPLAY_MAX_PING,
|
||||||
"Limitador de ping"
|
"Limitador de Latencia"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_NETPLAY_MAX_PING,
|
MENU_ENUM_SUBLABEL_NETPLAY_MAX_PING,
|
||||||
"A latencia de conexión máxima (ping) que aceptará o host. Establéceo en 0 sen límite."
|
"A latencia máxima de conexión (ping) que o servidor aceptará. Axústao a 0 para non ter límite."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_NETPLAY_PASSWORD,
|
MENU_ENUM_LABEL_VALUE_NETPLAY_PASSWORD,
|
||||||
|
@ -7223,7 +7245,7 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_NETPLAY_SPECTATE_PASSWORD,
|
MENU_ENUM_LABEL_VALUE_NETPLAY_SPECTATE_PASSWORD,
|
||||||
"Spectador do servidor - Só Contrasinal"
|
"Espectador do Servidor - Só Contrasinal"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_NETPLAY_SPECTATE_PASSWORD,
|
MENU_ENUM_SUBLABEL_NETPLAY_SPECTATE_PASSWORD,
|
||||||
|
@ -7231,7 +7253,7 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_NETPLAY_START_AS_SPECTATOR,
|
MENU_ENUM_LABEL_VALUE_NETPLAY_START_AS_SPECTATOR,
|
||||||
"Modo Spectador Netplay"
|
"Modo Espectador do Xogo en Rede"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_NETPLAY_START_AS_SPECTATOR,
|
MENU_ENUM_SUBLABEL_NETPLAY_START_AS_SPECTATOR,
|
||||||
|
@ -14923,11 +14945,11 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_FRAME_REST,
|
MENU_ENUM_LABEL_VALUE_VIDEO_FRAME_REST,
|
||||||
"Resto de fotogramas"
|
"Pausa de fotogramas"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_FRAME_REST,
|
MENU_ENUM_SUBLABEL_VIDEO_FRAME_REST,
|
||||||
"Tenta reducir o uso da CPU vsync durmindo o máximo posible despois da presentación do cadro. Deseñado principalmente para sincronización de liña de exploración de terceiros."
|
"Tentar reducir o uso da CPU pola sincronía vertical durmindo o máximo posible tras a presentación do fotograma. Deseñado principalmente para a sincronización de terceiros por scanlines."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_PAL60_ENABLE,
|
MENU_ENUM_LABEL_VALUE_PAL60_ENABLE,
|
||||||
|
|
|
@ -252,6 +252,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_INPUT_SETTINGS,
|
MENU_ENUM_LABEL_VALUE_INPUT_SETTINGS,
|
||||||
"קלט"
|
"קלט"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_MENU_FILE_BROWSER_SETTINGS,
|
MENU_ENUM_LABEL_VALUE_MENU_FILE_BROWSER_SETTINGS,
|
||||||
"סייר קבצים"
|
"סייר קבצים"
|
||||||
|
@ -399,6 +407,8 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
#if defined(DINGUX)
|
#if defined(DINGUX)
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Settings > Video > HDR */
|
/* Settings > Video > HDR */
|
||||||
|
|
||||||
|
|
|
@ -784,6 +784,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_SAVING_SETTINGS,
|
MENU_ENUM_LABEL_VALUE_SAVING_SETTINGS,
|
||||||
"Spremanje"
|
"Spremanje"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME,
|
||||||
"Korisničko ime"
|
"Korisničko ime"
|
||||||
|
@ -955,6 +963,8 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
#if defined(DINGUX)
|
#if defined(DINGUX)
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Settings > Video > HDR */
|
/* Settings > Video > HDR */
|
||||||
|
|
||||||
|
|
|
@ -1204,10 +1204,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Destruktív szinkronizálás a felhőbe"
|
"Destruktív szinkronizálás a felhőbe"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Kikapcsolt állapotban a fájlok egy tartalék könyvtárba kerülnek felülírás vagy törlés előtt."
|
"Kikapcsolt állapotban a fájlok egy tartalék könyvtárba kerülnek felülírás vagy törlés előtt."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
||||||
"A felhőszinkronizálás háttértára"
|
"A felhőszinkronizálás háttértára"
|
||||||
|
@ -2531,6 +2535,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Az egyedi nézőablak Y irányú eltolása. \nNincs hatása egész-szorzós skálázáskor."
|
"Az egyedi nézőablak Y irányú eltolása. \nNincs hatása egész-szorzós skálázáskor."
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Egyedi képarány (szélesség)"
|
"Egyedi képarány (szélesség)"
|
||||||
|
|
|
@ -1096,6 +1096,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_SAVING_SETTINGS,
|
MENU_ENUM_SUBLABEL_SAVING_SETTINGS,
|
||||||
"Ubah pengaturan penyimpanan."
|
"Ubah pengaturan penyimpanan."
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_LOGGING_SETTINGS,
|
MENU_ENUM_LABEL_VALUE_LOGGING_SETTINGS,
|
||||||
"Pencatatan Log"
|
"Pencatatan Log"
|
||||||
|
@ -1839,6 +1847,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Offset area pandang khusus yang digunakan untuk menentukan posisi sumbu Y dari area pandang.\n Ini diabaikan jika 'Skala Bilangan Bulat' diaktifkan."
|
"Offset area pandang khusus yang digunakan untuk menentukan posisi sumbu Y dari area pandang.\n Ini diabaikan jika 'Skala Bilangan Bulat' diaktifkan."
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Rasio Aspek Kustom (Lebar)"
|
"Rasio Aspek Kustom (Lebar)"
|
||||||
|
|
|
@ -1188,10 +1188,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Sincronizzazione Cloud Distruttiva"
|
"Sincronizzazione Cloud Distruttiva"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Quando disabilitato, i file vengono spostati in una cartella di backup prima di essere sovrascritti o cancellati."
|
"Quando disabilitato, i file vengono spostati in una cartella di backup prima di essere sovrascritti o cancellati."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
||||||
"Backend Sincronizzazione Cloud"
|
"Backend Sincronizzazione Cloud"
|
||||||
|
@ -2499,6 +2503,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Scostamento visuale personalizzato usato per definire la posizione dell'asse Y della porta di visualizzazione.\nQuesti vengono ignorati se 'Scala intera' è abilitata."
|
"Scostamento visuale personalizzato usato per definire la posizione dell'asse Y della porta di visualizzazione.\nQuesti vengono ignorati se 'Scala intera' è abilitata."
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Rapporto d'aspetto personalizzato(in Larghezza)"
|
"Rapporto d'aspetto personalizzato(in Larghezza)"
|
||||||
|
|
|
@ -1228,10 +1228,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"破壊的なクラウド同期"
|
"破壊的なクラウド同期"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"無効にすると、ファイルは上書きまたは削除される前にバックアップフォルダに移動されます。"
|
"無効にすると、ファイルは上書きまたは削除される前にバックアップフォルダに移動されます。"
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
||||||
"クラウド同期のバックエンド"
|
"クラウド同期のバックエンド"
|
||||||
|
@ -2543,6 +2547,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"表示領域の Y軸位置を定義するために使用されるカスタム表示領域オフセットです。\n[整数倍拡大] が有効の場合は無視されます。"
|
"表示領域の Y軸位置を定義するために使用されるカスタム表示領域オフセットです。\n[整数倍拡大] が有効の場合は無視されます。"
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"カスタムアスペクト比 (幅)"
|
"カスタムアスペクト比 (幅)"
|
||||||
|
|
|
@ -1232,10 +1232,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"파괴적 클라우드 동기화"
|
"파괴적 클라우드 동기화"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"비활성화할 경우, 동기화 대상 파일들을 덮어씌우거나 삭제하지 않고 백업 폴더에 저장합니다."
|
"비활성화할 경우, 동기화 대상 파일들을 덮어씌우거나 삭제하지 않고 백업 폴더에 저장합니다."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
||||||
"클라우드 동기화 백엔드"
|
"클라우드 동기화 백엔드"
|
||||||
|
@ -2559,6 +2563,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"뷰포트의 Y축 위치를 정의하는 데 사용되는 사용자 뷰포트 오프셋입니다.\n'정수 단위 화면 크기'가 활성화된 경우 무시되고 자동으로 중앙이 됩니다."
|
"뷰포트의 Y축 위치를 정의하는 데 사용되는 사용자 뷰포트 오프셋입니다.\n'정수 단위 화면 크기'가 활성화된 경우 무시되고 자동으로 중앙이 됩니다."
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"사용자 화면비 폭"
|
"사용자 화면비 폭"
|
||||||
|
|
|
@ -3636,6 +3636,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_LABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"cloud_sync_destructive"
|
"cloud_sync_destructive"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_SAVES,
|
||||||
|
"cloud_sync_sync_saves"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"cloud_sync_sync_configs"
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_CLOUD_SYNC_DRIVER,
|
MENU_ENUM_LABEL_CLOUD_SYNC_DRIVER,
|
||||||
"cloud_sync_driver"
|
"cloud_sync_driver"
|
||||||
|
@ -4126,6 +4134,24 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VIDEO_ASPECT_RATIO_INDEX,
|
MENU_ENUM_LABEL_VIDEO_ASPECT_RATIO_INDEX,
|
||||||
"aspect_ratio_index"
|
"aspect_ratio_index"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_X,
|
||||||
|
"video_viewport_bias_x"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_Y,
|
||||||
|
"video_viewport_bias_y"
|
||||||
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_X,
|
||||||
|
"video_viewport_bias_portrait_x"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_Y,
|
||||||
|
"video_viewport_bias_portrait_y"
|
||||||
|
)
|
||||||
|
#endif
|
||||||
#if defined(DINGUX)
|
#if defined(DINGUX)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VIDEO_DINGUX_IPU_KEEP_ASPECT,
|
MENU_ENUM_LABEL_VIDEO_DINGUX_IPU_KEEP_ASPECT,
|
||||||
|
|
|
@ -52,6 +52,14 @@
|
||||||
|
|
||||||
/* Settings */
|
/* Settings */
|
||||||
|
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
|
|
||||||
/* Core option category placeholders for icons */
|
/* Core option category placeholders for icons */
|
||||||
|
|
||||||
|
@ -91,6 +99,8 @@
|
||||||
|
|
||||||
#if defined(DINGUX)
|
#if defined(DINGUX)
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Settings > Video > HDR */
|
/* Settings > Video > HDR */
|
||||||
|
|
||||||
|
|
|
@ -1088,6 +1088,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_SAVING_SETTINGS,
|
MENU_ENUM_SUBLABEL_SAVING_SETTINGS,
|
||||||
"Instellingen voor opslaan wijzigen."
|
"Instellingen voor opslaan wijzigen."
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME,
|
||||||
"Gebruikersnaam"
|
"Gebruikersnaam"
|
||||||
|
@ -2075,6 +2083,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Aangepaste weergave-offset gebruikt voor het definiëren van de Y-as positie van de weergave.\nDeze worden genegeerd als 'Integer Schaal' is ingeschakeld."
|
"Aangepaste weergave-offset gebruikt voor het definiëren van de Y-as positie van de weergave.\nDeze worden genegeerd als 'Integer Schaal' is ingeschakeld."
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Aangepaste Beeldverhouding (Breedte)"
|
"Aangepaste Beeldverhouding (Breedte)"
|
||||||
|
|
|
@ -1160,10 +1160,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_ENABLE,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_ENABLE,
|
||||||
"Aktiver Sky-Synkronisering"
|
"Aktiver Sky-Synkronisering"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Når deaktivert, flyttes filer til en sikkerhetskopimappe før de overskrives eller slettes."
|
"Når deaktivert, flyttes filer til en sikkerhetskopimappe før de overskrives eller slettes."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_URL,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_URL,
|
||||||
"URL for sky-lagring"
|
"URL for sky-lagring"
|
||||||
|
@ -1927,6 +1931,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Tilpasset visningsregion forskyvning bruk for å definere Y-aksen av visningsregionen.\nDisse er ignorert hvis \"heltall skalering\" er aktivert."
|
"Tilpasset visningsregion forskyvning bruk for å definere Y-aksen av visningsregionen.\nDisse er ignorert hvis \"heltall skalering\" er aktivert."
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Egendefinert størrelsesforhold (bredde)"
|
"Egendefinert størrelsesforhold (bredde)"
|
||||||
|
|
|
@ -204,6 +204,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_SETTINGS,
|
MENU_ENUM_LABEL_VALUE_VIDEO_SETTINGS,
|
||||||
"Vidèo"
|
"Vidèo"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_SETTINGS,
|
MENU_ENUM_LABEL_VALUE_PLAYLIST_SETTINGS,
|
||||||
"Listas de lectura"
|
"Listas de lectura"
|
||||||
|
@ -259,6 +267,8 @@ MSG_HASH(
|
||||||
|
|
||||||
#if defined(DINGUX)
|
#if defined(DINGUX)
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Settings > Video > HDR */
|
/* Settings > Video > HDR */
|
||||||
|
|
||||||
|
|
|
@ -324,6 +324,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_AUDIO_SETTINGS,
|
MENU_ENUM_LABEL_VALUE_AUDIO_SETTINGS,
|
||||||
"ଅଡ଼ିଓ"
|
"ଅଡ଼ିଓ"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_PLAYLIST_SETTINGS,
|
MENU_ENUM_LABEL_VALUE_PLAYLIST_SETTINGS,
|
||||||
"ଚାଳନତାଲିକା"
|
"ଚାଳନତାଲିକା"
|
||||||
|
@ -383,6 +391,8 @@ MSG_HASH(
|
||||||
|
|
||||||
#if defined(DINGUX)
|
#if defined(DINGUX)
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Settings > Video > HDR */
|
/* Settings > Video > HDR */
|
||||||
|
|
||||||
|
|
|
@ -1212,10 +1212,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Destrukcyjna synchronizacja w chmurze"
|
"Destrukcyjna synchronizacja w chmurze"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Gdy wyłączone, pliki są przenoszone do folderu kopii zapasowej przed nadpisaniem lub usunięciem."
|
"Gdy wyłączone, pliki są przenoszone do folderu kopii zapasowej przed nadpisaniem lub usunięciem."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
||||||
"Back-end synchronizacji w chmurze"
|
"Back-end synchronizacji w chmurze"
|
||||||
|
@ -2503,6 +2507,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Własne przesunięcie widoku używane do zdefiniowania położenia osi Y widoku.\nSą one ignorowane, jeśli włączona jest „skala całkowita”."
|
"Własne przesunięcie widoku używane do zdefiniowania położenia osi Y widoku.\nSą one ignorowane, jeśli włączona jest „skala całkowita”."
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Niestandardowy współczynnik proporcji (szerokość)"
|
"Niestandardowy współczynnik proporcji (szerokość)"
|
||||||
|
|
|
@ -1196,6 +1196,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_ENABLE,
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_ENABLE,
|
||||||
"Tentativa de sincronizar configurações, sram e salvamentos para um provedor de armazenamento em nuvem."
|
"Tentativa de sincronizar configurações, sram e salvamentos para um provedor de armazenamento em nuvem."
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_URL,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_URL,
|
||||||
"Link do Armazenamento na Nuvem"
|
"Link do Armazenamento na Nuvem"
|
||||||
|
@ -2255,6 +2263,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Deslocamento personalizado no eixo-Y da janela de exibição. \nSerá ignorado caso o \"dimensionamento com valores inteiros\" estiver ativado."
|
"Deslocamento personalizado no eixo-Y da janela de exibição. \nSerá ignorado caso o \"dimensionamento com valores inteiros\" estiver ativado."
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Largura personalizada da proporção de tela"
|
"Largura personalizada da proporção de tela"
|
||||||
|
|
|
@ -1108,6 +1108,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_SAVING_SETTINGS,
|
MENU_ENUM_SUBLABEL_SAVING_SETTINGS,
|
||||||
"Modificar as definições de gravação."
|
"Modificar as definições de gravação."
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME,
|
||||||
"Utilizador"
|
"Utilizador"
|
||||||
|
@ -1923,6 +1931,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Proporção personalizada do ecrã na posição Y"
|
"Proporção personalizada do ecrã na posição Y"
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Proporção personalizada da largura do ecrã"
|
"Proporção personalizada da largura do ecrã"
|
||||||
|
|
|
@ -52,6 +52,14 @@
|
||||||
|
|
||||||
/* Settings */
|
/* Settings */
|
||||||
|
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
|
|
||||||
/* Core option category placeholders for icons */
|
/* Core option category placeholders for icons */
|
||||||
|
|
||||||
|
@ -91,6 +99,8 @@
|
||||||
|
|
||||||
#if defined(DINGUX)
|
#if defined(DINGUX)
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Settings > Video > HDR */
|
/* Settings > Video > HDR */
|
||||||
|
|
||||||
|
|
|
@ -1228,10 +1228,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Деструктивная облачная синхронизация"
|
"Деструктивная облачная синхронизация"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Если отключено, перед удалением или перезаписью файлы помещаются в каталог резервирования."
|
"Если отключено, перед удалением или перезаписью файлы помещаются в каталог резервирования."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
||||||
"Бэкенд облачной синхронизации"
|
"Бэкенд облачной синхронизации"
|
||||||
|
@ -2559,6 +2563,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Ручная установка смещения области отображения по оси Y.\nНе учитывается, если включено 'Целочисленное масштабирование'."
|
"Ручная установка смещения области отображения по оси Y.\nНе учитывается, если включено 'Целочисленное масштабирование'."
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Пользовательское соотношение сторон (ширина)"
|
"Пользовательское соотношение сторон (ширина)"
|
||||||
|
|
|
@ -116,6 +116,14 @@ MSG_HASH(
|
||||||
|
|
||||||
/* Settings */
|
/* Settings */
|
||||||
|
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
|
|
||||||
/* Core option category placeholders for icons */
|
/* Core option category placeholders for icons */
|
||||||
|
|
||||||
|
@ -155,6 +163,8 @@ MSG_HASH(
|
||||||
|
|
||||||
#if defined(DINGUX)
|
#if defined(DINGUX)
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Settings > Video > HDR */
|
/* Settings > Video > HDR */
|
||||||
|
|
||||||
|
|
|
@ -1144,6 +1144,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_ENABLE,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_ENABLE,
|
||||||
"Povoliť cloud synchronizáciu"
|
"Povoliť cloud synchronizáciu"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME,
|
||||||
"Meno používateľa"
|
"Meno používateľa"
|
||||||
|
@ -1887,6 +1895,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Vlastný pomer strán (pozícia Y)"
|
"Vlastný pomer strán (pozícia Y)"
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Vlastný pomer strán (šírka)"
|
"Vlastný pomer strán (šírka)"
|
||||||
|
|
|
@ -1108,6 +1108,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_SAVING_SETTINGS,
|
MENU_ENUM_SUBLABEL_SAVING_SETTINGS,
|
||||||
"Izmeni podešavanja za usnimavanje."
|
"Izmeni podešavanja za usnimavanje."
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_LOGGING_SETTINGS,
|
MENU_ENUM_LABEL_VALUE_LOGGING_SETTINGS,
|
||||||
"Beleženje"
|
"Beleženje"
|
||||||
|
@ -1787,6 +1795,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Postavi ofset za prozor prikaza kada se definiše pozicija prozora prikaza na Y osi.\nOvo se ignoriše ako je 'Celobrojno skaliranje' uključeno."
|
"Postavi ofset za prozor prikaza kada se definiše pozicija prozora prikaza na Y osi.\nOvo se ignoriše ako je 'Celobrojno skaliranje' uključeno."
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Postavi odnos ekrana (širina)"
|
"Postavi odnos ekrana (širina)"
|
||||||
|
|
|
@ -1144,10 +1144,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Destruktiv molnsynkning"
|
"Destruktiv molnsynkning"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Inaktiverat flyttas filer till en säkerhetskopia innan de skrivs över eller raderas."
|
"Inaktiverat flyttas filer till en säkerhetskopia innan de skrivs över eller raderas."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
||||||
"Backend för molnsynk"
|
"Backend för molnsynk"
|
||||||
|
@ -2251,6 +2255,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Anpassad visningsportoffset som används för att definiera Y-axelns position för visningsporten.\nDessa ignoreras om 'Heltalsskala' är aktiverat."
|
"Anpassad visningsportoffset som används för att definiera Y-axelns position för visningsporten.\nDessa ignoreras om 'Heltalsskala' är aktiverat."
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Anpassa bildformat (Bredd)"
|
"Anpassa bildformat (Bredd)"
|
||||||
|
|
|
@ -1216,10 +1216,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Bulut Eşitleme Koruması"
|
"Bulut Eşitleme Koruması"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Devre dışı bırakıldığında, dosyalar üzerine yazılmadan veya silinmeden önce yedek klasörüne taşınır."
|
"Devre dışı bırakıldığında, dosyalar üzerine yazılmadan veya silinmeden önce yedek klasörüne taşınır."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
||||||
"Bulut Eşitleyici Arka Uç"
|
"Bulut Eşitleyici Arka Uç"
|
||||||
|
@ -2539,6 +2543,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Görünüm penceresinin Y ekseni konumunu tanımlamak için kullanılan özel görünüm alanı ofseti.\n'Tam sayı Ölçeği' etkinse bunlar yok sayılır."
|
"Görünüm penceresinin Y ekseni konumunu tanımlamak için kullanılan özel görünüm alanı ofseti.\n'Tam sayı Ölçeği' etkinse bunlar yok sayılır."
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Özel En Boy Oranı (Genişlik)"
|
"Özel En Boy Oranı (Genişlik)"
|
||||||
|
|
|
@ -1228,10 +1228,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Деструктивна хмарна синхронізація"
|
"Деструктивна хмарна синхронізація"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"У вимкненому стані, файли переміщуються до резервного каталогу перед перезаписом чи видаленням."
|
"У вимкненому стані, файли переміщуються до резервного каталогу перед перезаписом чи видаленням."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
||||||
"Бекенд хмарної синхронізації"
|
"Бекенд хмарної синхронізації"
|
||||||
|
@ -2359,6 +2363,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Задати значення зсуву області перегляду по осі Y.\nІгнорується, якщо включено параметр «Цілочисельне масштабування»."
|
"Задати значення зсуву області перегляду по осі Y.\nІгнорується, якщо включено параметр «Цілочисельне масштабування»."
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Довільне співвідношення сторін (ширина)"
|
"Довільне співвідношення сторін (ширина)"
|
||||||
|
|
|
@ -1244,10 +1244,26 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"Destructive Cloud Sync"
|
"Destructive Cloud Sync"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_SAVES,
|
||||||
|
"Sync: Saves/States"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES,
|
||||||
|
"When enabled, saves/states will be synced to cloud."
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"When enabled, configuration files will be synced to cloud."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
)
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_DRIVER,
|
||||||
"Cloud Sync Backend"
|
"Cloud Sync Backend"
|
||||||
|
@ -2599,6 +2615,56 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Custom viewport offset used for defining the Y-axis position of the viewport.\nThese are ignored if 'Integer Scale' is enabled."
|
"Custom viewport offset used for defining the Y-axis position of the viewport.\nThese are ignored if 'Integer Scale' is enabled."
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_X,
|
||||||
|
"Viewport Anchor Bias X"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_BIAS_X,
|
||||||
|
"Viewport Anchor Bias X"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_Y,
|
||||||
|
"Viewport Anchor Bias Y"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_BIAS_Y,
|
||||||
|
"Viewport Anchor Bias Y"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_BIAS_X,
|
||||||
|
"Custom viewport bias used to offset the viewport horizontally (if wider than content height). 0.0 means far left and 1.0 means far right."
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_BIAS_Y,
|
||||||
|
"Custom viewport bias used to offset the viewport vertically (if taller than content height). 0.0 means top and 1.0 means bottom."
|
||||||
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_X,
|
||||||
|
"Viewport Anchor Bias X (Portrait Orientation)"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_BIAS_PORTRAIT_X,
|
||||||
|
"Viewport Anchor Bias X (Portrait Orientation)"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_Y,
|
||||||
|
"Viewport Anchor Bias Y (Portrait Orientation)"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_BIAS_PORTRAIT_Y,
|
||||||
|
"Viewport Anchor Bias Y (Portrait Orientation)"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_X,
|
||||||
|
"Custom viewport bias used to offset the viewport horizontally (if wider than content height). 0.0 means far left and 1.0 means far right. (Portrait Orientation)"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_Y,
|
||||||
|
"Custom viewport bias used to offset the viewport vertically (if taller than content height). 0.0 means top and 1.0 means bottom. (Portrait Orientation)"
|
||||||
|
)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Custom Aspect Ratio (Width)"
|
"Custom Aspect Ratio (Width)"
|
||||||
|
|
|
@ -1124,6 +1124,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_SAVING_SETTINGS,
|
MENU_ENUM_SUBLABEL_SAVING_SETTINGS,
|
||||||
"Canvia els ajustos de guardat."
|
"Canvia els ajustos de guardat."
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_LOGGING_SETTINGS,
|
MENU_ENUM_LABEL_VALUE_LOGGING_SETTINGS,
|
||||||
"Registres"
|
"Registres"
|
||||||
|
@ -1819,6 +1827,8 @@ MSG_HASH(
|
||||||
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
|
||||||
"Indica el diferencial de posició respecte a l'eix Y de l'área de visualització.\nEste valor s'ignorarà si l'opció «Escalar usant nombres sencers» hi és activa."
|
"Indica el diferencial de posició respecte a l'eix Y de l'área de visualització.\nEste valor s'ignorarà si l'opció «Escalar usant nombres sencers» hi és activa."
|
||||||
)
|
)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
|
||||||
"Relació d'aspecte personalitzat (amplària)"
|
"Relació d'aspecte personalitzat (amplària)"
|
||||||
|
|
|
@ -1064,6 +1064,14 @@ MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_ENABLE,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_ENABLE,
|
||||||
"Bật đồng bộ hóa đám mây"
|
"Bật đồng bộ hóa đám mây"
|
||||||
)
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
"Sync: Configuration Files"
|
||||||
|
)
|
||||||
|
MSG_HASH(
|
||||||
|
MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE,
|
||||||
|
"When disabled, files are moved to a backup folder before being overwritten or deleted."
|
||||||
|
)
|
||||||
MSG_HASH(
|
MSG_HASH(
|
||||||
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME,
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_USERNAME,
|
||||||
"Tên truy nhập"
|
"Tên truy nhập"
|
||||||
|
@ -1315,6 +1323,8 @@ MSG_HASH(
|
||||||
)
|
)
|
||||||
#if defined(DINGUX)
|
#if defined(DINGUX)
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Settings > Video > HDR */
|
/* Settings > Video > HDR */
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
#define LANGUAGE_PROGRESS_DANISH_APPROVED 0
|
#define LANGUAGE_PROGRESS_DANISH_APPROVED 0
|
||||||
|
|
||||||
/* German */
|
/* German */
|
||||||
#define LANGUAGE_PROGRESS_GERMAN_TRANSLATED 100
|
#define LANGUAGE_PROGRESS_GERMAN_TRANSLATED 99
|
||||||
#define LANGUAGE_PROGRESS_GERMAN_APPROVED 14
|
#define LANGUAGE_PROGRESS_GERMAN_APPROVED 14
|
||||||
|
|
||||||
/* Greek */
|
/* Greek */
|
||||||
|
@ -48,14 +48,14 @@
|
||||||
|
|
||||||
/* Spanish */
|
/* Spanish */
|
||||||
#define LANGUAGE_PROGRESS_SPANISH_TRANSLATED 100
|
#define LANGUAGE_PROGRESS_SPANISH_TRANSLATED 100
|
||||||
#define LANGUAGE_PROGRESS_SPANISH_APPROVED 90
|
#define LANGUAGE_PROGRESS_SPANISH_APPROVED 89
|
||||||
|
|
||||||
/* Persian */
|
/* Persian */
|
||||||
#define LANGUAGE_PROGRESS_PERSIAN_TRANSLATED 12
|
#define LANGUAGE_PROGRESS_PERSIAN_TRANSLATED 12
|
||||||
#define LANGUAGE_PROGRESS_PERSIAN_APPROVED 0
|
#define LANGUAGE_PROGRESS_PERSIAN_APPROVED 0
|
||||||
|
|
||||||
/* Finnish */
|
/* Finnish */
|
||||||
#define LANGUAGE_PROGRESS_FINNISH_TRANSLATED 77
|
#define LANGUAGE_PROGRESS_FINNISH_TRANSLATED 76
|
||||||
#define LANGUAGE_PROGRESS_FINNISH_APPROVED 46
|
#define LANGUAGE_PROGRESS_FINNISH_APPROVED 46
|
||||||
|
|
||||||
/* French */
|
/* French */
|
||||||
|
@ -75,7 +75,7 @@
|
||||||
#define LANGUAGE_PROGRESS_CROATIAN_APPROVED 0
|
#define LANGUAGE_PROGRESS_CROATIAN_APPROVED 0
|
||||||
|
|
||||||
/* Hungarian */
|
/* Hungarian */
|
||||||
#define LANGUAGE_PROGRESS_HUNGARIAN_TRANSLATED 100
|
#define LANGUAGE_PROGRESS_HUNGARIAN_TRANSLATED 99
|
||||||
#define LANGUAGE_PROGRESS_HUNGARIAN_APPROVED 0
|
#define LANGUAGE_PROGRESS_HUNGARIAN_APPROVED 0
|
||||||
|
|
||||||
/* Indonesian */
|
/* Indonesian */
|
||||||
|
@ -91,7 +91,7 @@
|
||||||
#define LANGUAGE_PROGRESS_JAPANESE_APPROVED 0
|
#define LANGUAGE_PROGRESS_JAPANESE_APPROVED 0
|
||||||
|
|
||||||
/* Korean */
|
/* Korean */
|
||||||
#define LANGUAGE_PROGRESS_KOREAN_TRANSLATED 99
|
#define LANGUAGE_PROGRESS_KOREAN_TRANSLATED 98
|
||||||
#define LANGUAGE_PROGRESS_KOREAN_APPROVED 0
|
#define LANGUAGE_PROGRESS_KOREAN_APPROVED 0
|
||||||
|
|
||||||
/* Dutch */
|
/* Dutch */
|
||||||
|
@ -135,8 +135,8 @@
|
||||||
#define LANGUAGE_PROGRESS_SWEDISH_APPROVED 48
|
#define LANGUAGE_PROGRESS_SWEDISH_APPROVED 48
|
||||||
|
|
||||||
/* Turkish */
|
/* Turkish */
|
||||||
#define LANGUAGE_PROGRESS_TURKISH_TRANSLATED 100
|
#define LANGUAGE_PROGRESS_TURKISH_TRANSLATED 99
|
||||||
#define LANGUAGE_PROGRESS_TURKISH_APPROVED 100
|
#define LANGUAGE_PROGRESS_TURKISH_APPROVED 99
|
||||||
|
|
||||||
/* Ukrainian */
|
/* Ukrainian */
|
||||||
#define LANGUAGE_PROGRESS_UKRAINIAN_TRANSLATED 38
|
#define LANGUAGE_PROGRESS_UKRAINIAN_TRANSLATED 38
|
||||||
|
@ -155,6 +155,6 @@
|
||||||
#define LANGUAGE_PROGRESS_CHINESE_SIMPLIFIED_APPROVED 45
|
#define LANGUAGE_PROGRESS_CHINESE_SIMPLIFIED_APPROVED 45
|
||||||
|
|
||||||
/* Chinese Traditional */
|
/* Chinese Traditional */
|
||||||
#define LANGUAGE_PROGRESS_CHINESE_TRADITIONAL_TRANSLATED 89
|
#define LANGUAGE_PROGRESS_CHINESE_TRADITIONAL_TRANSLATED 88
|
||||||
#define LANGUAGE_PROGRESS_CHINESE_TRADITIONAL_APPROVED 76
|
#define LANGUAGE_PROGRESS_CHINESE_TRADITIONAL_APPROVED 76
|
||||||
|
|
||||||
|
|
|
@ -51,6 +51,14 @@ or are directly to function */
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Whether the code should be inline asm stored in .text, or the original
|
||||||
|
array buffer */
|
||||||
|
#ifndef LIBCO_STATIC_TEXT
|
||||||
|
#if defined(WIIU)
|
||||||
|
#define LIBCO_STATIC_TEXT 1
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef LIBCO_PPC_ASM
|
#ifdef LIBCO_PPC_ASM
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -61,6 +69,225 @@ or are directly to function */
|
||||||
void co_swap_asm(cothread_t, cothread_t);
|
void co_swap_asm(cothread_t, cothread_t);
|
||||||
#define CO_SWAP_ASM(x, y) co_swap_asm(x, y)
|
#define CO_SWAP_ASM(x, y) co_swap_asm(x, y)
|
||||||
|
|
||||||
|
#elif LIBCO_STATIC_TEXT
|
||||||
|
|
||||||
|
asm(
|
||||||
|
".globl libco_ppc_code\n"
|
||||||
|
"libco_ppc_code:\n"
|
||||||
|
#if LIBCO_PPC64
|
||||||
|
"mfcr %r8\n"
|
||||||
|
"std %r1,40(%r4)\n"
|
||||||
|
"mflr %r9\n"
|
||||||
|
"std %r14,72(%r4)\n"
|
||||||
|
"std %r15,80(%r4)\n"
|
||||||
|
"std %r16,88(%r4)\n"
|
||||||
|
"std %r17,96(%r4)\n"
|
||||||
|
"std %r18,104(%r4)\n"
|
||||||
|
"std %r19,112(%r4)\n"
|
||||||
|
"std %r20,120(%r4)\n"
|
||||||
|
"std %r21,128(%r4)\n"
|
||||||
|
"std %r22,136(%r4)\n"
|
||||||
|
"std %r23,144(%r4)\n"
|
||||||
|
"std %r24,152(%r4)\n"
|
||||||
|
"std %r25,160(%r4)\n"
|
||||||
|
"std %r26,168(%r4)\n"
|
||||||
|
"std %r27,176(%r4)\n"
|
||||||
|
"std %r28,184(%r4)\n"
|
||||||
|
"std %r29,192(%r4)\n"
|
||||||
|
"std %r30,200(%r4)\n"
|
||||||
|
"std %r31,208(%r4)\n"
|
||||||
|
"std %r9,32(%r4)\n"
|
||||||
|
"ld %r7,32(%r3)\n"
|
||||||
|
"ld %r1,40(%r3)\n"
|
||||||
|
"bl 1f\n"
|
||||||
|
"trap\n"
|
||||||
|
"1:stw %r8,48(%r4)\n"
|
||||||
|
"lwz %r6,48(%r3)\n"
|
||||||
|
"mtctr %r7\n"
|
||||||
|
"ld %r14,72(%r3)\n"
|
||||||
|
"ld %r15,80(%r3)\n"
|
||||||
|
"ld %r16,88(%r3)\n"
|
||||||
|
"ld %r17,96(%r3)\n"
|
||||||
|
"ld %r18,104(%r3)\n"
|
||||||
|
"ld %r19,112(%r3)\n"
|
||||||
|
"ld %r20,120(%r3)\n"
|
||||||
|
"ld %r21,128(%r3)\n"
|
||||||
|
"ld %r22,136(%r3)\n"
|
||||||
|
"ld %r23,144(%r3)\n"
|
||||||
|
"ld %r24,152(%r3)\n"
|
||||||
|
"ld %r25,160(%r3)\n"
|
||||||
|
"ld %r26,168(%r3)\n"
|
||||||
|
"ld %r27,176(%r3)\n"
|
||||||
|
"ld %r28,184(%r3)\n"
|
||||||
|
"ld %r29,192(%r3)\n"
|
||||||
|
"ld %r30,200(%r3)\n"
|
||||||
|
"ld %r31,208(%r3)\n"
|
||||||
|
"mtcr %r6\n"
|
||||||
|
#else
|
||||||
|
"mfcr %r8\n"
|
||||||
|
"stw %r1,40(%r4)\n"
|
||||||
|
"mflr %r9\n"
|
||||||
|
"stw %r13,60(%r4)\n"
|
||||||
|
"stw %r14,64(%r4)\n"
|
||||||
|
"stw %r15,68(%r4)\n"
|
||||||
|
"stw %r16,72(%r4)\n"
|
||||||
|
"stw %r17,76(%r4)\n"
|
||||||
|
"stw %r18,80(%r4)\n"
|
||||||
|
"stw %r19,84(%r4)\n"
|
||||||
|
"stw %r20,88(%r4)\n"
|
||||||
|
"stw %r21,92(%r4)\n"
|
||||||
|
"stw %r22,96(%r4)\n"
|
||||||
|
"stw %r23,100(%r4)\n"
|
||||||
|
"stw %r24,104(%r4)\n"
|
||||||
|
"stw %r25,108(%r4)\n"
|
||||||
|
"stw %r26,112(%r4)\n"
|
||||||
|
"stw %r27,116(%r4)\n"
|
||||||
|
"stw %r28,120(%r4)\n"
|
||||||
|
"stw %r29,124(%r4)\n"
|
||||||
|
"stw %r30,128(%r4)\n"
|
||||||
|
"stw %r31,132(%r4)\n"
|
||||||
|
"stw %r9,32(%r4)\n"
|
||||||
|
"lwz %r7,32(%r3)\n"
|
||||||
|
"lwz %r1,40(%r3)\n"
|
||||||
|
"bl 1f\n"
|
||||||
|
"trap\n"
|
||||||
|
"1:stw %r8,48(%r4)\n"
|
||||||
|
"lwz %r6,48(%r3)\n"
|
||||||
|
"mtctr %r7\n"
|
||||||
|
"lwz %r13,60(%r3)\n"
|
||||||
|
"lwz %r14,64(%r3)\n"
|
||||||
|
"lwz %r15,68(%r3)\n"
|
||||||
|
"lwz %r16,72(%r3)\n"
|
||||||
|
"lwz %r17,76(%r3)\n"
|
||||||
|
"lwz %r18,80(%r3)\n"
|
||||||
|
"lwz %r19,84(%r3)\n"
|
||||||
|
"lwz %r20,88(%r3)\n"
|
||||||
|
"lwz %r21,92(%r3)\n"
|
||||||
|
"lwz %r22,96(%r3)\n"
|
||||||
|
"lwz %r23,100(%r3)\n"
|
||||||
|
"lwz %r24,104(%r3)\n"
|
||||||
|
"lwz %r25,108(%r3)\n"
|
||||||
|
"lwz %r26,112(%r3)\n"
|
||||||
|
"lwz %r27,116(%r3)\n"
|
||||||
|
"lwz %r28,120(%r3)\n"
|
||||||
|
"lwz %r29,124(%r3)\n"
|
||||||
|
"lwz %r30,128(%r3)\n"
|
||||||
|
"lwz %r31,132(%r3)\n"
|
||||||
|
"mtcr %r6\n"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef LIBCO_PPC_NOFP
|
||||||
|
"stfd %f14,224(%r4)\n"
|
||||||
|
"stfd %f15,232(%r4)\n"
|
||||||
|
"stfd %f16,240(%r4)\n"
|
||||||
|
"stfd %f17,248(%r4)\n"
|
||||||
|
"stfd %f18,256(%r4)\n"
|
||||||
|
"stfd %f19,264(%r4)\n"
|
||||||
|
"stfd %f20,272(%r4)\n"
|
||||||
|
"stfd %f21,280(%r4)\n"
|
||||||
|
"stfd %f22,288(%r4)\n"
|
||||||
|
"stfd %f23,296(%r4)\n"
|
||||||
|
"stfd %f24,304(%r4)\n"
|
||||||
|
"stfd %f25,312(%r4)\n"
|
||||||
|
"stfd %f26,320(%r4)\n"
|
||||||
|
"stfd %f27,328(%r4)\n"
|
||||||
|
"stfd %f28,336(%r4)\n"
|
||||||
|
"stfd %f29,344(%r4)\n"
|
||||||
|
"stfd %f30,352(%r4)\n"
|
||||||
|
"stfd %f31,360(%r4)\n"
|
||||||
|
"lfd %f14,224(%r3)\n"
|
||||||
|
"lfd %f15,232(%r3)\n"
|
||||||
|
"lfd %f16,240(%r3)\n"
|
||||||
|
"lfd %f17,248(%r3)\n"
|
||||||
|
"lfd %f18,256(%r3)\n"
|
||||||
|
"lfd %f19,264(%r3)\n"
|
||||||
|
"lfd %f20,272(%r3)\n"
|
||||||
|
"lfd %f21,280(%r3)\n"
|
||||||
|
"lfd %f22,288(%r3)\n"
|
||||||
|
"lfd %f23,296(%r3)\n"
|
||||||
|
"lfd %f24,304(%r3)\n"
|
||||||
|
"lfd %f25,312(%r3)\n"
|
||||||
|
"lfd %f26,320(%r3)\n"
|
||||||
|
"lfd %f27,328(%r3)\n"
|
||||||
|
"lfd %f28,336(%r3)\n"
|
||||||
|
"lfd %f29,344(%r3)\n"
|
||||||
|
"lfd %f30,352(%r3)\n"
|
||||||
|
"lfd %f31,360(%r3)\n"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __ALTIVEC__
|
||||||
|
"mfvrsave %r5\n"
|
||||||
|
"addi %r8,%r4,384\n"
|
||||||
|
"addi %r9,%r4,400\n"
|
||||||
|
"andi. %r0,%r5,4095\n"
|
||||||
|
"stw %r5,52(%r4)\n"
|
||||||
|
"beq- 2\n"
|
||||||
|
"stvx %v20,%r0,%r8\n"
|
||||||
|
"addi %r8,%r8,32\n"
|
||||||
|
"stvx %v21,%r0,%r9\n"
|
||||||
|
"addi %r9,%r9,32\n"
|
||||||
|
"stvx %v22,%r0,%r8\n"
|
||||||
|
"addi %r8,%r8,32\n"
|
||||||
|
"stvx %v23,%r0,%r9\n"
|
||||||
|
"addi %r9,%r9,32\n"
|
||||||
|
"stvx %v24,%r0,%r8\n"
|
||||||
|
"addi %r8,%r8,32\n"
|
||||||
|
"stvx %v25,%r0,%r9\n"
|
||||||
|
"addi %r9,%r9,32\n"
|
||||||
|
"stvx %v26,%r0,%r8\n"
|
||||||
|
"addi %r8,%r8,32\n"
|
||||||
|
"stvx %v27,%r0,%r9\n"
|
||||||
|
"addi %r9,%r9,32\n"
|
||||||
|
"stvx %v28,%r0,%r8\n"
|
||||||
|
"addi %r8,%r8,32\n"
|
||||||
|
"stvx %v29,%r0,%r9\n"
|
||||||
|
"addi %r9,%r9,32\n"
|
||||||
|
"stvx %v30,%r0,%r8\n"
|
||||||
|
"stvx %v31,%r0,%r9\n"
|
||||||
|
"2:lwz %r5,52(%r3)\n"
|
||||||
|
"addi %r8,%r3,384\n"
|
||||||
|
"addi %r9,%r3,400\n"
|
||||||
|
"andi. %r0,%r5,4095\n"
|
||||||
|
"mtvrsave %r5\n"
|
||||||
|
"beqctr \n"
|
||||||
|
"lvx %v20,%r0,%r8\n"
|
||||||
|
"addi %r8,%r8,32\n"
|
||||||
|
"lvx %v21,%r0,%r9\n"
|
||||||
|
"addi %r9,%r9,32\n"
|
||||||
|
"lvx %v22,%r0,%r8\n"
|
||||||
|
"addi %r8,%r8,32\n"
|
||||||
|
"lvx %v23,%r0,%r9\n"
|
||||||
|
"addi %r9,%r9,32\n"
|
||||||
|
"lvx %v24,%r0,%r8\n"
|
||||||
|
"addi %r8,%r8,32\n"
|
||||||
|
"lvx %v25,%r0,%r9\n"
|
||||||
|
"addi %r9,%r9,32\n"
|
||||||
|
"lvx %v26,%r0,%r8\n"
|
||||||
|
"addi %r8,%r8,32\n"
|
||||||
|
"lvx %v27,%r0,%r9\n"
|
||||||
|
"addi %r9,%r9,32\n"
|
||||||
|
"lvx %v28,%r0,%r8\n"
|
||||||
|
"addi %r8,%r8,32\n"
|
||||||
|
"lvx %v29,%r0,%r9\n"
|
||||||
|
"addi %r9,%r9,32\n"
|
||||||
|
"lvx %v30,%r0,%r8\n"
|
||||||
|
"lvx %v31,%r0,%r9\n"
|
||||||
|
#endif
|
||||||
|
"bctr"
|
||||||
|
);
|
||||||
|
|
||||||
|
extern void libco_ppc_code(cothread_t, cothread_t);
|
||||||
|
|
||||||
|
#if LIBCO_PPCDESC
|
||||||
|
/* Function call goes through indirect descriptor */
|
||||||
|
#define CO_SWAP_ASM(x, y) \
|
||||||
|
((void (*)(cothread_t, cothread_t)) (uintptr_t) x)(x, y)
|
||||||
|
#else
|
||||||
|
/* Function call goes directly to code */
|
||||||
|
#define CO_SWAP_ASM(x, y) \
|
||||||
|
libco_ppc_code(x, y)
|
||||||
|
#endif
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
/* Swap code is here in array. Please leave dieassembly comments,
|
/* Swap code is here in array. Please leave dieassembly comments,
|
||||||
|
@ -364,7 +591,7 @@ void co_delete(cothread_t t)
|
||||||
|
|
||||||
static void co_init_(void)
|
static void co_init_(void)
|
||||||
{
|
{
|
||||||
#if LIBCO_MPROTECT
|
#if LIBCO_MPROTECT && !LIBCO_STATIC_TEXT
|
||||||
/* TODO: pre- and post-pad PPC code so that this doesn't make other
|
/* TODO: pre- and post-pad PPC code so that this doesn't make other
|
||||||
data executable and writable */
|
data executable and writable */
|
||||||
long page_size = sysconf(_SC_PAGESIZE);
|
long page_size = sysconf(_SC_PAGESIZE);
|
||||||
|
|
|
@ -257,6 +257,8 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_saving_settings_list, MENU_
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_settings_list, MENU_ENUM_SUBLABEL_CLOUD_SYNC_SETTINGS)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_settings_list, MENU_ENUM_SUBLABEL_CLOUD_SYNC_SETTINGS)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_enable, MENU_ENUM_SUBLABEL_CLOUD_SYNC_ENABLE)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_enable, MENU_ENUM_SUBLABEL_CLOUD_SYNC_ENABLE)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_destructive, MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_destructive, MENU_ENUM_SUBLABEL_CLOUD_SYNC_DESTRUCTIVE)
|
||||||
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_sync_saves, MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_SAVES)
|
||||||
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_sync_configs, MENU_ENUM_SUBLABEL_CLOUD_SYNC_SYNC_CONFIGS)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_driver, MENU_ENUM_SUBLABEL_CLOUD_SYNC_DRIVER)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_driver, MENU_ENUM_SUBLABEL_CLOUD_SYNC_DRIVER)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_url, MENU_ENUM_SUBLABEL_CLOUD_SYNC_URL)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_url, MENU_ENUM_SUBLABEL_CLOUD_SYNC_URL)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_username, MENU_ENUM_SUBLABEL_CLOUD_SYNC_USERNAME)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_cloud_sync_username, MENU_ENUM_SUBLABEL_CLOUD_SYNC_USERNAME)
|
||||||
|
@ -1251,6 +1253,12 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_viewport_custom_height,
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_viewport_custom_width, MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_WIDTH)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_viewport_custom_width, MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_WIDTH)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_viewport_custom_x, MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_X)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_viewport_custom_x, MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_X)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_viewport_custom_y, MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_viewport_custom_y, MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y)
|
||||||
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_viewport_bias_x, MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_BIAS_X)
|
||||||
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_viewport_bias_y, MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_BIAS_Y)
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_viewport_bias_portrait_x, MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_X)
|
||||||
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_viewport_bias_portrait_y, MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_Y)
|
||||||
|
#endif
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_netplay_use_mitm_server, MENU_ENUM_SUBLABEL_NETPLAY_USE_MITM_SERVER)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_netplay_use_mitm_server, MENU_ENUM_SUBLABEL_NETPLAY_USE_MITM_SERVER)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_netplay_mitm_server, MENU_ENUM_SUBLABEL_NETPLAY_MITM_SERVER)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_netplay_mitm_server, MENU_ENUM_SUBLABEL_NETPLAY_MITM_SERVER)
|
||||||
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_netplay_custom_mitm_server, MENU_ENUM_SUBLABEL_NETPLAY_CUSTOM_MITM_SERVER)
|
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_netplay_custom_mitm_server, MENU_ENUM_SUBLABEL_NETPLAY_CUSTOM_MITM_SERVER)
|
||||||
|
@ -2570,6 +2578,20 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
|
||||||
case MENU_ENUM_LABEL_VIDEO_ASPECT_RATIO:
|
case MENU_ENUM_LABEL_VIDEO_ASPECT_RATIO:
|
||||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_aspect_ratio);
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_aspect_ratio);
|
||||||
break;
|
break;
|
||||||
|
case MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_X:
|
||||||
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_viewport_bias_x);
|
||||||
|
break;
|
||||||
|
case MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_Y:
|
||||||
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_viewport_bias_y);
|
||||||
|
break;
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
case MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_X:
|
||||||
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_viewport_bias_portrait_x);
|
||||||
|
break;
|
||||||
|
case MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_Y:
|
||||||
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_viewport_bias_portrait_y);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case MENU_ENUM_LABEL_VIDEO_ASPECT_RATIO_INDEX:
|
case MENU_ENUM_LABEL_VIDEO_ASPECT_RATIO_INDEX:
|
||||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_aspect_ratio_index);
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_aspect_ratio_index);
|
||||||
break;
|
break;
|
||||||
|
@ -5029,6 +5051,12 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
|
||||||
case MENU_ENUM_LABEL_CLOUD_SYNC_DESTRUCTIVE:
|
case MENU_ENUM_LABEL_CLOUD_SYNC_DESTRUCTIVE:
|
||||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cloud_sync_destructive);
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cloud_sync_destructive);
|
||||||
break;
|
break;
|
||||||
|
case MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_SAVES:
|
||||||
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cloud_sync_sync_saves);
|
||||||
|
break;
|
||||||
|
case MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_CONFIGS:
|
||||||
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cloud_sync_sync_configs);
|
||||||
|
break;
|
||||||
case MENU_ENUM_LABEL_CLOUD_SYNC_DRIVER:
|
case MENU_ENUM_LABEL_CLOUD_SYNC_DRIVER:
|
||||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cloud_sync_driver);
|
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_cloud_sync_driver);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -9801,6 +9801,24 @@ unsigned menu_displaylist_build_list(
|
||||||
MENU_ENUM_LABEL_VIDEO_SCALE_INTEGER_OVERSCALE,
|
MENU_ENUM_LABEL_VIDEO_SCALE_INTEGER_OVERSCALE,
|
||||||
PARSE_ONLY_BOOL, false) == 0)
|
PARSE_ONLY_BOOL, false) == 0)
|
||||||
count++;
|
count++;
|
||||||
|
if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(list,
|
||||||
|
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_X,
|
||||||
|
PARSE_ONLY_FLOAT, false) == 0)
|
||||||
|
count++;
|
||||||
|
if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(list,
|
||||||
|
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_Y,
|
||||||
|
PARSE_ONLY_FLOAT, false) == 0)
|
||||||
|
count++;
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(list,
|
||||||
|
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_X,
|
||||||
|
PARSE_ONLY_FLOAT, false) == 0)
|
||||||
|
count++;
|
||||||
|
if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(list,
|
||||||
|
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_Y,
|
||||||
|
PARSE_ONLY_FLOAT, false) == 0)
|
||||||
|
count++;
|
||||||
|
#endif
|
||||||
if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(list,
|
if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(list,
|
||||||
MENU_ENUM_LABEL_VIDEO_ASPECT_RATIO_INDEX,
|
MENU_ENUM_LABEL_VIDEO_ASPECT_RATIO_INDEX,
|
||||||
PARSE_ONLY_UINT, false) == 0)
|
PARSE_ONLY_UINT, false) == 0)
|
||||||
|
@ -10690,12 +10708,14 @@ unsigned menu_displaylist_build_list(
|
||||||
case DISPLAYLIST_CLOUD_SYNC_SETTINGS_LIST:
|
case DISPLAYLIST_CLOUD_SYNC_SETTINGS_LIST:
|
||||||
{
|
{
|
||||||
menu_displaylist_build_info_t build_list[] = {
|
menu_displaylist_build_info_t build_list[] = {
|
||||||
{MENU_ENUM_LABEL_CLOUD_SYNC_ENABLE, PARSE_ONLY_BOOL },
|
{MENU_ENUM_LABEL_CLOUD_SYNC_ENABLE, PARSE_ONLY_BOOL },
|
||||||
{MENU_ENUM_LABEL_CLOUD_SYNC_DESTRUCTIVE, PARSE_ONLY_BOOL },
|
{MENU_ENUM_LABEL_CLOUD_SYNC_DESTRUCTIVE, PARSE_ONLY_BOOL },
|
||||||
{MENU_ENUM_LABEL_CLOUD_SYNC_DRIVER, PARSE_ONLY_STRING_OPTIONS },
|
{MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_SAVES, PARSE_ONLY_BOOL },
|
||||||
{MENU_ENUM_LABEL_CLOUD_SYNC_URL, PARSE_ONLY_STRING },
|
{MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_CONFIGS, PARSE_ONLY_BOOL },
|
||||||
{MENU_ENUM_LABEL_CLOUD_SYNC_USERNAME, PARSE_ONLY_STRING },
|
{MENU_ENUM_LABEL_CLOUD_SYNC_DRIVER, PARSE_ONLY_STRING_OPTIONS },
|
||||||
{MENU_ENUM_LABEL_CLOUD_SYNC_PASSWORD, PARSE_ONLY_STRING },
|
{MENU_ENUM_LABEL_CLOUD_SYNC_URL, PARSE_ONLY_STRING },
|
||||||
|
{MENU_ENUM_LABEL_CLOUD_SYNC_USERNAME, PARSE_ONLY_STRING },
|
||||||
|
{MENU_ENUM_LABEL_CLOUD_SYNC_PASSWORD, PARSE_ONLY_STRING },
|
||||||
};
|
};
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(build_list); i++)
|
for (i = 0; i < ARRAY_SIZE(build_list); i++)
|
||||||
|
|
|
@ -11830,6 +11830,36 @@ static bool setting_append_list(
|
||||||
general_read_handler,
|
general_read_handler,
|
||||||
SD_FLAG_NONE);
|
SD_FLAG_NONE);
|
||||||
|
|
||||||
|
CONFIG_BOOL(
|
||||||
|
list, list_info,
|
||||||
|
&settings->bools.cloud_sync_sync_saves,
|
||||||
|
MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_SAVES,
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_SAVES,
|
||||||
|
false,
|
||||||
|
MENU_ENUM_LABEL_VALUE_OFF,
|
||||||
|
MENU_ENUM_LABEL_VALUE_ON,
|
||||||
|
&group_info,
|
||||||
|
&subgroup_info,
|
||||||
|
parent_group,
|
||||||
|
general_write_handler,
|
||||||
|
general_read_handler,
|
||||||
|
SD_FLAG_NONE);
|
||||||
|
|
||||||
|
CONFIG_BOOL(
|
||||||
|
list, list_info,
|
||||||
|
&settings->bools.cloud_sync_sync_configs,
|
||||||
|
MENU_ENUM_LABEL_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
MENU_ENUM_LABEL_VALUE_CLOUD_SYNC_SYNC_CONFIGS,
|
||||||
|
false,
|
||||||
|
MENU_ENUM_LABEL_VALUE_OFF,
|
||||||
|
MENU_ENUM_LABEL_VALUE_ON,
|
||||||
|
&group_info,
|
||||||
|
&subgroup_info,
|
||||||
|
parent_group,
|
||||||
|
general_write_handler,
|
||||||
|
general_read_handler,
|
||||||
|
SD_FLAG_NONE);
|
||||||
|
|
||||||
CONFIG_STRING_OPTIONS(
|
CONFIG_STRING_OPTIONS(
|
||||||
list, list_info,
|
list, list_info,
|
||||||
settings->arrays.cloud_sync_driver,
|
settings->arrays.cloud_sync_driver,
|
||||||
|
@ -12929,6 +12959,84 @@ static bool setting_append_list(
|
||||||
END_SUB_GROUP(list, list_info, parent_group);
|
END_SUB_GROUP(list, list_info, parent_group);
|
||||||
START_SUB_GROUP(list, list_info, "Aspect", &group_info, &subgroup_info, parent_group);
|
START_SUB_GROUP(list, list_info, "Aspect", &group_info, &subgroup_info, parent_group);
|
||||||
|
|
||||||
|
CONFIG_FLOAT(
|
||||||
|
list, list_info,
|
||||||
|
&settings->floats.video_viewport_bias_x,
|
||||||
|
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_X,
|
||||||
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_BIAS_X,
|
||||||
|
DEFAULT_VIEWPORT_BIAS_X,
|
||||||
|
"%.2f",
|
||||||
|
&group_info,
|
||||||
|
&subgroup_info,
|
||||||
|
parent_group,
|
||||||
|
general_write_handler,
|
||||||
|
general_read_handler);
|
||||||
|
menu_settings_list_current_add_range(list, list_info, 0.0, 1.0, 0.05, true, true);
|
||||||
|
(*list)[list_info->index - 1].offset_by = 0;
|
||||||
|
SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_ALLOW_INPUT);
|
||||||
|
MENU_SETTINGS_LIST_CURRENT_ADD_CMD(list, list_info,
|
||||||
|
CMD_EVENT_VIDEO_APPLY_STATE_CHANGES);
|
||||||
|
SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_LAKKA_ADVANCED);
|
||||||
|
|
||||||
|
CONFIG_FLOAT(
|
||||||
|
list, list_info,
|
||||||
|
&settings->floats.video_viewport_bias_y,
|
||||||
|
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_Y,
|
||||||
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_BIAS_Y,
|
||||||
|
DEFAULT_VIEWPORT_BIAS_Y,
|
||||||
|
"%.2f",
|
||||||
|
&group_info,
|
||||||
|
&subgroup_info,
|
||||||
|
parent_group,
|
||||||
|
general_write_handler,
|
||||||
|
general_read_handler);
|
||||||
|
menu_settings_list_current_add_range(list, list_info, 0.0, 1.0, 0.05, true, true);
|
||||||
|
(*list)[list_info->index - 1].offset_by = 0;
|
||||||
|
SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_ALLOW_INPUT);
|
||||||
|
MENU_SETTINGS_LIST_CURRENT_ADD_CMD(list, list_info,
|
||||||
|
CMD_EVENT_VIDEO_APPLY_STATE_CHANGES);
|
||||||
|
SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_LAKKA_ADVANCED);
|
||||||
|
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
CONFIG_FLOAT(
|
||||||
|
list, list_info,
|
||||||
|
&settings->floats.video_viewport_bias_portrait_x,
|
||||||
|
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_X,
|
||||||
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_BIAS_PORTRAIT_X,
|
||||||
|
DEFAULT_VIEWPORT_BIAS_PORTRAIT_X,
|
||||||
|
"%.2f",
|
||||||
|
&group_info,
|
||||||
|
&subgroup_info,
|
||||||
|
parent_group,
|
||||||
|
general_write_handler,
|
||||||
|
general_read_handler);
|
||||||
|
menu_settings_list_current_add_range(list, list_info, 0.0, 1.0, 0.05, true, true);
|
||||||
|
(*list)[list_info->index - 1].offset_by = 0;
|
||||||
|
SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_ALLOW_INPUT);
|
||||||
|
MENU_SETTINGS_LIST_CURRENT_ADD_CMD(list, list_info,
|
||||||
|
CMD_EVENT_VIDEO_APPLY_STATE_CHANGES);
|
||||||
|
SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_LAKKA_ADVANCED);
|
||||||
|
|
||||||
|
CONFIG_FLOAT(
|
||||||
|
list, list_info,
|
||||||
|
&settings->floats.video_viewport_bias_portrait_y,
|
||||||
|
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_Y,
|
||||||
|
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_BIAS_PORTRAIT_Y,
|
||||||
|
DEFAULT_VIEWPORT_BIAS_PORTRAIT_Y,
|
||||||
|
"%.2f",
|
||||||
|
&group_info,
|
||||||
|
&subgroup_info,
|
||||||
|
parent_group,
|
||||||
|
general_write_handler,
|
||||||
|
general_read_handler);
|
||||||
|
menu_settings_list_current_add_range(list, list_info, 0.0, 1.0, 0.05, true, true);
|
||||||
|
(*list)[list_info->index - 1].offset_by = 0;
|
||||||
|
SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_ALLOW_INPUT);
|
||||||
|
MENU_SETTINGS_LIST_CURRENT_ADD_CMD(list, list_info,
|
||||||
|
CMD_EVENT_VIDEO_APPLY_STATE_CHANGES);
|
||||||
|
SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_LAKKA_ADVANCED);
|
||||||
|
#endif
|
||||||
|
|
||||||
CONFIG_UINT(
|
CONFIG_UINT(
|
||||||
list, list_info,
|
list, list_info,
|
||||||
&settings->uints.video_aspect_ratio_idx,
|
&settings->uints.video_aspect_ratio_idx,
|
||||||
|
|
|
@ -3230,6 +3230,8 @@ enum msg_hash_enums
|
||||||
MENU_LABEL(CLOUD_SYNC_SETTINGS),
|
MENU_LABEL(CLOUD_SYNC_SETTINGS),
|
||||||
MENU_LABEL(CLOUD_SYNC_ENABLE),
|
MENU_LABEL(CLOUD_SYNC_ENABLE),
|
||||||
MENU_LABEL(CLOUD_SYNC_DESTRUCTIVE),
|
MENU_LABEL(CLOUD_SYNC_DESTRUCTIVE),
|
||||||
|
MENU_LABEL(CLOUD_SYNC_SYNC_SAVES),
|
||||||
|
MENU_LABEL(CLOUD_SYNC_SYNC_CONFIGS),
|
||||||
MENU_LABEL(CLOUD_SYNC_DRIVER),
|
MENU_LABEL(CLOUD_SYNC_DRIVER),
|
||||||
MENU_LABEL(CLOUD_SYNC_URL),
|
MENU_LABEL(CLOUD_SYNC_URL),
|
||||||
MENU_LABEL(CLOUD_SYNC_USERNAME),
|
MENU_LABEL(CLOUD_SYNC_USERNAME),
|
||||||
|
@ -3385,6 +3387,12 @@ enum msg_hash_enums
|
||||||
MENU_LABEL(VIDEO_OVERSCAN_CORRECTION_TOP),
|
MENU_LABEL(VIDEO_OVERSCAN_CORRECTION_TOP),
|
||||||
MENU_LABEL(VIDEO_OVERSCAN_CORRECTION_BOTTOM),
|
MENU_LABEL(VIDEO_OVERSCAN_CORRECTION_BOTTOM),
|
||||||
MENU_LABEL(VIDEO_ASPECT_RATIO),
|
MENU_LABEL(VIDEO_ASPECT_RATIO),
|
||||||
|
MENU_LABEL(VIDEO_VIEWPORT_BIAS_X),
|
||||||
|
MENU_LABEL(VIDEO_VIEWPORT_BIAS_Y),
|
||||||
|
#if defined(RARCH_MOBILE)
|
||||||
|
MENU_LABEL(VIDEO_VIEWPORT_BIAS_PORTRAIT_X),
|
||||||
|
MENU_LABEL(VIDEO_VIEWPORT_BIAS_PORTRAIT_Y),
|
||||||
|
#endif
|
||||||
MENU_LABEL(VIDEO_FORCE_ASPECT),
|
MENU_LABEL(VIDEO_FORCE_ASPECT),
|
||||||
MENU_LABEL(VIDEO_ASPECT_RATIO_AUTO),
|
MENU_LABEL(VIDEO_ASPECT_RATIO_AUTO),
|
||||||
MENU_LABEL(VIDEO_ASPECT_RATIO_INDEX),
|
MENU_LABEL(VIDEO_ASPECT_RATIO_INDEX),
|
||||||
|
|
|
@ -27,6 +27,8 @@
|
||||||
<activity android:name="com.retroarch.browser.mainmenu.MainMenuActivity" android:exported="true" android:launchMode="singleInstance">
|
<activity android:name="com.retroarch.browser.mainmenu.MainMenuActivity" android:exported="true" android:launchMode="singleInstance">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.HOME" />
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
<category android:name="android.intent.category.LAUNCHER" />
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
|
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
|
||||||
<category android:name="tv.ouya.intent.category.GAME" />
|
<category android:name="tv.ouya.intent.category.GAME" />
|
||||||
|
|
|
@ -30,6 +30,8 @@
|
||||||
<activity android:name="com.retroarch.browser.mainmenu.MainMenuActivity" android:exported="true" android:launchMode="singleInstance">
|
<activity android:name="com.retroarch.browser.mainmenu.MainMenuActivity" android:exported="true" android:launchMode="singleInstance">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.HOME" />
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
<category android:name="android.intent.category.LAUNCHER" />
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
|
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
|
||||||
<category android:name="tv.ouya.intent.category.GAME" />
|
<category android:name="tv.ouya.intent.category.GAME" />
|
||||||
|
|
|
@ -302,23 +302,32 @@ static void task_cloud_sync_manifest_append_dir(file_list_t *manifest,
|
||||||
static struct string_list *task_cloud_sync_directory_map(void)
|
static struct string_list *task_cloud_sync_directory_map(void)
|
||||||
{
|
{
|
||||||
static struct string_list *list = NULL;
|
static struct string_list *list = NULL;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
if (!list)
|
if (!list)
|
||||||
{
|
{
|
||||||
union string_list_elem_attr attr = {0};
|
union string_list_elem_attr attr = {0};
|
||||||
char dir[PATH_MAX_LENGTH];
|
char dir[PATH_MAX_LENGTH];
|
||||||
list = string_list_new();
|
list = string_list_new();
|
||||||
|
|
||||||
string_list_append(list, "config", attr);
|
if (settings->bools.cloud_sync_sync_configs)
|
||||||
fill_pathname_application_special(dir,
|
{
|
||||||
sizeof(dir), APPLICATION_SPECIAL_DIRECTORY_CONFIG);
|
string_list_append(list, "config", attr);
|
||||||
list->elems[list->size - 1].userdata = strdup(dir);
|
fill_pathname_application_special(dir,
|
||||||
|
sizeof(dir), APPLICATION_SPECIAL_DIRECTORY_CONFIG);
|
||||||
|
list->elems[list->size - 1].userdata = strdup(dir);
|
||||||
|
}
|
||||||
|
|
||||||
string_list_append(list, "saves", attr);
|
if (settings->bools.cloud_sync_sync_saves)
|
||||||
list->elems[list->size - 1].userdata = strdup(dir_get_ptr(RARCH_DIR_SAVEFILE));
|
{
|
||||||
|
string_list_append(list, "saves", attr);
|
||||||
|
list->elems[list->size - 1].userdata = strdup(dir_get_ptr(RARCH_DIR_SAVEFILE));
|
||||||
|
|
||||||
string_list_append(list, "states", attr);
|
string_list_append(list, "states", attr);
|
||||||
list->elems[list->size - 1].userdata = strdup(dir_get_ptr(RARCH_DIR_SAVESTATE));
|
list->elems[list->size - 1].userdata = strdup(dir_get_ptr(RARCH_DIR_SAVESTATE));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -636,6 +636,8 @@ void App::OnAcceleratorKey(CoreDispatcher^ sender, AcceleratorKeyEventArgs^ args
|
||||||
mod |= RETROKMOD_CAPSLOCK;
|
mod |= RETROKMOD_CAPSLOCK;
|
||||||
if ((window->GetKeyState(VirtualKey::Scroll) & CoreVirtualKeyStates::Locked) == CoreVirtualKeyStates::Locked)
|
if ((window->GetKeyState(VirtualKey::Scroll) & CoreVirtualKeyStates::Locked) == CoreVirtualKeyStates::Locked)
|
||||||
mod |= RETROKMOD_SCROLLOCK;
|
mod |= RETROKMOD_SCROLLOCK;
|
||||||
|
if ((window->GetKeyState(VirtualKey::NumberKeyLock) & CoreVirtualKeyStates::Locked) == CoreVirtualKeyStates::Locked)
|
||||||
|
mod |= RETROKMOD_NUMLOCK;
|
||||||
if ((window->GetKeyState(VirtualKey::LeftWindows) & CoreVirtualKeyStates::Down) == CoreVirtualKeyStates::Down ||
|
if ((window->GetKeyState(VirtualKey::LeftWindows) & CoreVirtualKeyStates::Down) == CoreVirtualKeyStates::Down ||
|
||||||
(window->GetKeyState(VirtualKey::RightWindows) & CoreVirtualKeyStates::Down) == CoreVirtualKeyStates::Down)
|
(window->GetKeyState(VirtualKey::RightWindows) & CoreVirtualKeyStates::Down) == CoreVirtualKeyStates::Down)
|
||||||
mod |= RETROKMOD_META;
|
mod |= RETROKMOD_META;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user