Compare commits

...

15 commits

Author SHA1 Message Date
dependabot[bot] bbd5afec9d
Merge 486427126f into bbc58eb4bb 2024-05-09 00:28:10 +02:00
github-actions bbc58eb4bb Fetch translations from Crowdin 2024-05-08 00:10:45 +00:00
github-actions ea5697c006 Fetch translations from Crowdin 2024-05-07 00:12:11 +00:00
github-actions 9ab6c62fc7 Fetch translations from Crowdin 2024-05-06 00:12:25 +00:00
zoltanvb 3092740312
Fix socket close method (#16494)
Use the platform independent socket close function from same place where all other socket communication is used from.
2024-05-05 03:48:37 -07:00
sonninnos 17b9324a24
Cleanup 'Add to Playlist' (#16495) 2024-05-05 03:48:20 -07:00
Eric Warmenhoven 24c378da4e
iOS: fix #16485 crash on startup (#16498) 2024-05-05 02:29:27 -07:00
github-actions 711bf39155 Fetch translations from Crowdin 2024-05-05 00:12:50 +00:00
Brad Smith d55f95f056
Windows mouse ungrab must release the mouse instead of confine it to the current desktop (#16488)
* Windows mouse ungrab should release the cursor, instead of confining it to the current screen.

* conform to style
2024-05-04 06:10:57 -07:00
zoltanvb 28189a04a4
Analog button and keyboard tester. (#16390)
Added analog button indication for those buttons that may have use for it
- primarily L2/R2, but support was added for all buttons where at least
one controller is known to support it. Added also core option to hide
mismatching inputs where analog value is not sent (like keyboard
hotkeys assigned to retropad buttons). Analog button inputs are not
set up for remote transmission, only for local test.

Analog axes have now also dynamic coloring.

Added a keyboard tester screen which includes a standard 102-key PC
keyboard + extra blocks for all RETROK_ values present in the code.
Screen adapted from DOSBox-Pure onscreen keyboard with permission.
Keyboard button A+B switches between the two screens. Keyboard
inputs are not set up for remote transmission, only for local test.
Core option added to select start screen.

Other small improvements: core reset will take new option values,
input driver applies received values more carefully.
2024-05-04 00:33:25 -07:00
github-actions 8741e7b9f0 Fetch translations from Crowdin 2024-05-04 00:11:41 +00:00
github-actions ab04f8a7a2 Fetch translations from Crowdin 2024-05-03 00:12:17 +00:00
github-actions faec215337 Fetch translations from Crowdin 2024-05-02 00:12:09 +00:00
github-actions 7d57f00be3 Fetch translations from Crowdin 2024-05-01 00:12:52 +00:00
dependabot[bot] 486427126f
Bump actions/upload-artifact from 3 to 4
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-29 19:20:48 +00:00
81 changed files with 12373 additions and 681 deletions

View file

@ -32,7 +32,7 @@ jobs:
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: RA-3DS-dummy-${{ steps.slug.outputs.sha8 }}
path: |

View file

@ -28,7 +28,7 @@ jobs:
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: retroarch-android-${{ steps.slug.outputs.sha8 }}
path: |

View file

@ -28,7 +28,7 @@ jobs:
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: RA-DOS-dummy-${{ steps.slug.outputs.sha8 }}
path: |

View file

@ -28,7 +28,7 @@ jobs:
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: RA-Emscripten-dummy-${{ steps.slug.outputs.sha8 }}
path: |

View file

@ -27,7 +27,7 @@ jobs:
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: RA-GameCube-dummy-${{ steps.slug.outputs.sha8 }}
path: |

View file

@ -33,7 +33,7 @@ jobs:
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: retroarch_linux_i686${{ steps.slug.outputs.sha8 }}
path: |

View file

@ -23,7 +23,7 @@ jobs:
id: slug
run: echo "sha8=$(echo ${GITHUB_SHA} | cut -c1-8)" >> $GITHUB_OUTPUT
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: RetroArch-${{ steps.slug.outputs.sha8 }}
path: |

View file

@ -28,7 +28,7 @@ jobs:
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: retroarch_miyoo_arm32${{ steps.slug.outputs.sha8 }}
path: |

View file

@ -33,7 +33,7 @@ jobs:
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: RA-PS2-dummy-${{ steps.slug.outputs.sha8 }}
path: |

View file

@ -34,7 +34,7 @@ jobs:
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: bin-${{ steps.slug.outputs.sha8 }}
path: |

View file

@ -39,7 +39,7 @@ jobs:
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: RA-PSP-dummy-${{ steps.slug.outputs.sha8 }}
path: |

View file

@ -32,7 +32,7 @@ jobs:
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: RA-PSVita-dummy-${{ steps.slug.outputs.sha8 }}
path: |

View file

@ -28,7 +28,7 @@ jobs:
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: retroarch_rs90_mips32${{ steps.slug.outputs.sha8 }}
path: |

View file

@ -28,7 +28,7 @@ jobs:
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: retroarch_retrofw_mips32${{ steps.slug.outputs.sha8 }}
path: |

View file

@ -27,7 +27,7 @@ jobs:
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: RA-libnx-dummy-${{ steps.slug.outputs.sha8 }}
path: |

View file

@ -32,7 +32,7 @@ jobs:
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: RA-Wii-dummy-${{ steps.slug.outputs.sha8 }}
path: |

View file

@ -32,7 +32,7 @@ jobs:
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: RA-WiiU-dummy-${{ steps.slug.outputs.sha8 }}
path: |

View file

@ -30,7 +30,7 @@ jobs:
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: retroarch${{ steps.slug.outputs.sha8 }}
path: |

View file

@ -30,7 +30,7 @@ jobs:
id: slug
run: echo "::set-output name=sha8::$(echo ${GITHUB_SHA} | cut -c1-8)"
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: retroarch${{ steps.slug.outputs.sha8 }}
path: |

View file

@ -689,6 +689,7 @@
#define DEFAULT_QUICK_MENU_SHOW_UNDO_SAVE_LOAD_STATE true
#define DEFAULT_QUICK_MENU_SHOW_REPLAY false
#define DEFAULT_QUICK_MENU_SHOW_ADD_TO_FAVORITES true
#define DEFAULT_QUICK_MENU_SHOW_ADD_TO_PLAYLIST false
#define DEFAULT_QUICK_MENU_SHOW_START_RECORDING true
#define DEFAULT_QUICK_MENU_SHOW_START_STREAMING true
#define DEFAULT_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION true

View file

@ -1924,6 +1924,7 @@ static struct config_bool_setting *populate_settings_bool(
SETTING_BOOL("quick_menu_show_take_screenshot", &settings->bools.quick_menu_show_take_screenshot, true, DEFAULT_QUICK_MENU_SHOW_TAKE_SCREENSHOT, false);
SETTING_BOOL("quick_menu_show_undo_save_load_state", &settings->bools.quick_menu_show_undo_save_load_state, true, DEFAULT_QUICK_MENU_SHOW_UNDO_SAVE_LOAD_STATE, false);
SETTING_BOOL("quick_menu_show_add_to_favorites", &settings->bools.quick_menu_show_add_to_favorites, true, DEFAULT_QUICK_MENU_SHOW_ADD_TO_FAVORITES, false);
SETTING_BOOL("quick_menu_show_add_to_playlist", &settings->bools.quick_menu_show_add_to_playlist, true, DEFAULT_QUICK_MENU_SHOW_ADD_TO_PLAYLIST, false);
SETTING_BOOL("quick_menu_show_start_recording", &settings->bools.quick_menu_show_start_recording, true, DEFAULT_QUICK_MENU_SHOW_START_RECORDING, false);
SETTING_BOOL("quick_menu_show_start_streaming", &settings->bools.quick_menu_show_start_streaming, true, DEFAULT_QUICK_MENU_SHOW_START_STREAMING, false);
SETTING_BOOL("quick_menu_show_set_core_association", &settings->bools.quick_menu_show_set_core_association, true, DEFAULT_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION, false);

View file

@ -847,6 +847,7 @@ typedef struct settings
bool quick_menu_show_replay;
bool quick_menu_show_undo_save_load_state;
bool quick_menu_show_add_to_favorites;
bool quick_menu_show_add_to_playlist;
bool quick_menu_show_start_recording;
bool quick_menu_show_start_streaming;
bool quick_menu_show_set_core_association;

View file

@ -8,7 +8,7 @@
* - Allow changing IP address and port in runtime
* - Input recording / Combos
* - Enable test input loading from menu
* - Visualization of keyboard and aux inputs (gyro, accelero, light)
* - Visualization of aux inputs (gyro, accelero, light)
*/
#include <stdio.h>
@ -50,13 +50,16 @@
#define DESC_OFFSET(desc, port, index, id) ( \
port * ((desc)->index_max - (desc)->index_min + 1) * ((desc)->id_max - (desc)->id_min + 1) + \
index * ((desc)->id_max - (desc)->id_min + 1) + \
(index - (desc)->index_min) * ((desc)->id_max - (desc)->id_min + 1) + \
id \
)
#define MAX_TEST_STEPS 200
#define INITIAL_FRAMES 60*5
#define ONE_TEST_STEP_FRAMES 60*5
#define KEYBOARD_OFFSET 1000
#define NETRETROPAD_SCREEN_PAD 0
#define NETRETROPAD_SCREEN_KEYBOARD 1
struct descriptor {
int device;
@ -77,6 +80,9 @@ struct remote_joypad_message {
uint16_t state;
};
static bool keyboard_state[RETROK_LAST];
static bool keyboard_state_validated[RETROK_LAST];
static int s;
static int port;
static char server[64];
@ -114,11 +120,24 @@ static struct descriptor analog = {
.id_max = RETRO_DEVICE_ID_ANALOG_Y
};
static struct descriptor analog_button = {
.device = RETRO_DEVICE_ANALOG,
.port_min = 0,
.port_max = 0,
.index_min = RETRO_DEVICE_INDEX_ANALOG_BUTTON,
.index_max = RETRO_DEVICE_INDEX_ANALOG_BUTTON,
.id_min = RETRO_DEVICE_ID_JOYPAD_B,
.id_max = RETRO_DEVICE_ID_JOYPAD_R3
};
static struct descriptor *descriptors[] = {
&joypad,
&analog
&analog,
&analog_button
};
static uint16_t analog_item_colors[32];
static uint16_t combo_def[] =
{
1 << RETRO_DEVICE_ID_JOYPAD_UP | 1 << RETRO_DEVICE_ID_JOYPAD_LEFT, /* D-pad diagonals */
@ -137,6 +156,8 @@ static uint16_t combo_def[] =
1 << RETRO_DEVICE_ID_JOYPAD_L2 | 1 << RETRO_DEVICE_ID_JOYPAD_R2
};
static unsigned current_screen = NETRETROPAD_SCREEN_PAD;
typedef struct
{
unsigned expected_button;
@ -153,7 +174,7 @@ static unsigned last_test_step = MAX_TEST_STEPS + 1;
static uint32_t input_state_validated = 0;
static uint32_t combo_state_validated = 0;
static bool dump_state_blocked = false;
static bool hide_analog_mismatch = true;
/************************************/
/* JSON Helpers for test input file */
/************************************/
@ -338,6 +359,56 @@ end:
/* Test input file handling end */
/********************************/
static void draw_background(void)
{
if (frame_buf)
{
unsigned rle, runs, count;
/* Body is 255 * 142 within the 320 * 240 frame */
uint16_t *pixel = frame_buf + 49 * 320 + 32;
if (current_screen == NETRETROPAD_SCREEN_PAD)
for (rle = 0; rle < sizeof(body); )
{
uint16_t color = 0;
for (runs = body[rle++]; runs > 0; runs--)
{
for (count = body[rle++]; count > 0; count--)
*pixel++ = color;
color = 0x4208 - color;
}
pixel += 65;
}
else if (current_screen == NETRETROPAD_SCREEN_KEYBOARD)
for (rle = 0; rle < sizeof(keyboard_body); )
{
uint16_t color = 0;
for (runs = keyboard_body[rle++]; runs > 0; runs--)
{
for (count = keyboard_body[rle++]; count > 0; count--)
*pixel++ = color;
color = 0x4208 - color;
}
pixel += 65;
}
}
}
static void flip_screen(void)
{
if (current_screen == NETRETROPAD_SCREEN_PAD)
current_screen = NETRETROPAD_SCREEN_KEYBOARD;
else if (current_screen == NETRETROPAD_SCREEN_KEYBOARD)
current_screen = NETRETROPAD_SCREEN_PAD;
draw_background();
}
void NETRETROPAD_CORE_PREFIX(retro_init)(void)
{
unsigned i;
@ -345,26 +416,7 @@ void NETRETROPAD_CORE_PREFIX(retro_init)(void)
dump_state_blocked = false;
frame_buf = (uint16_t*)calloc(320 * 240, sizeof(uint16_t));
if (frame_buf)
{
unsigned rle, runs, count;
uint16_t *pixel = frame_buf + 49 * 320 + 32;
for (rle = 0; rle < sizeof(body); )
{
uint16_t color = 0;
for (runs = body[rle++]; runs > 0; runs--)
{
for (count = body[rle++]; count > 0; count--)
*pixel++ = color;
color = 0x4208 - color;
}
pixel += 65;
}
}
draw_background();
/* Allocate descriptor values */
for (i = 0; i < ARRAY_SIZE(descriptors); i++)
@ -430,6 +482,39 @@ void NETRETROPAD_CORE_PREFIX(retro_get_system_av_info)(
info->geometry.aspect_ratio = 4.0 / 3.0;
}
static void NETRETROPAD_CORE_PREFIX(update_keyboard_cb)(bool down, unsigned keycode,
uint32_t character, uint16_t key_modifiers)
{
struct retro_message message;
char buf[255];
if (keycode < RETROK_LAST)
{
keyboard_state[keycode] = down ? true : false;
if (down && ((keycode == RETROK_a && keyboard_state[RETROK_b]) || (keycode == RETROK_b && keyboard_state[RETROK_a])))
flip_screen();
/* Message for the keypresses not shown as actual keys, just placeholder blocks */
if ((keycode == 0) ||
(keycode == 12) ||
(keycode >= 33 && keycode < 39) ||
(keycode >= 40 && keycode < 44) ||
(keycode == 58) ||
(keycode == 60) ||
(keycode >= 62 && keycode < 65) ||
(keycode >= 94 && keycode < 96) ||
(keycode >= 123 && keycode < 127) ||
(keycode == 272) ||
(keycode >= 294 && keycode < 297) ||
(keycode >= 309 && keycode < 323))
{
snprintf(buf, sizeof(buf), "Key pressed: %d",keycode);
message.msg = buf;
message.frames = 60;
NETRETROPAD_CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_SET_MESSAGE, &message);
}
}
}
static void retropad_update_input(void)
{
unsigned i;
@ -477,7 +562,11 @@ static void retropad_update_input(void)
/* Update state */
desc->value[offset] = state;
/* Attempt to send updated state */
/* Do not send analog button state - RA side is not prepared to receive it */
if (i>1)
continue;
/* Otherwise, attempt to send updated state */
msg.port = port;
msg.device = desc->device;
msg.index = index;
@ -492,6 +581,35 @@ static void retropad_update_input(void)
}
}
static void open_UDP_socket()
{
socket_target_t in_target;
if (s && s != SOCKET_ERROR)
socket_close(s);
s = socket_create(
"retropad",
SOCKET_DOMAIN_INET,
SOCKET_TYPE_DATAGRAM,
SOCKET_PROTOCOL_UDP);
if (s == SOCKET_ERROR)
NETRETROPAD_CORE_PREFIX(log_cb)(RETRO_LOG_INFO, "socket failed");
/* setup address structure */
memset((char *) &si_other, 0, sizeof(si_other));
in_target.port = port;
in_target.server = server;
in_target.domain = SOCKET_DOMAIN_INET;
socket_set_target(&si_other, &in_target);
NETRETROPAD_CORE_PREFIX(log_cb)(RETRO_LOG_INFO, "Server IP Address: %s\n" , server);
}
void NETRETROPAD_CORE_PREFIX(retro_set_environment)(retro_environment_t cb)
{
static const struct retro_variable vars[] = {
@ -500,10 +618,13 @@ void NETRETROPAD_CORE_PREFIX(retro_set_environment)(retro_environment_t cb)
{ "net_retropad_ip_octet2", "IP address part 2; 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|118|119|120|121|122|123|124|125|126|127|128|129|130|131|132|133|134|135|136|137|138|139|140|141|142|143|144|145|146|147|148|149|150|151|152|153|154|155|156|157|158|159|160|161|162|163|164|165|166|167|168|169|170|171|172|173|174|175|176|177|178|179|180|181|182|183|184|185|186|187|188|189|190|191|192|193|194|195|196|197|198|199|200|201|202|203|204|205|206|207|208|209|210|211|212|213|214|215|216|217|218|219|220|221|222|223|224|225|226|227|228|229|230|231|232|233|234|235|236|237|238|239|240|241|242|243|244|245|246|247|248|249|250|251|252|253|254|255" },
{ "net_retropad_ip_octet3", "IP address part 3; 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|118|119|120|121|122|123|124|125|126|127|128|129|130|131|132|133|134|135|136|137|138|139|140|141|142|143|144|145|146|147|148|149|150|151|152|153|154|155|156|157|158|159|160|161|162|163|164|165|166|167|168|169|170|171|172|173|174|175|176|177|178|179|180|181|182|183|184|185|186|187|188|189|190|191|192|193|194|195|196|197|198|199|200|201|202|203|204|205|206|207|208|209|210|211|212|213|214|215|216|217|218|219|220|221|222|223|224|225|226|227|228|229|230|231|232|233|234|235|236|237|238|239|240|241|242|243|244|245|246|247|248|249|250|251|252|253|254|255" },
{ "net_retropad_ip_octet4", "IP address part 4; 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|118|119|120|121|122|123|124|125|126|127|128|129|130|131|132|133|134|135|136|137|138|139|140|141|142|143|144|145|146|147|148|149|150|151|152|153|154|155|156|157|158|159|160|161|162|163|164|165|166|167|168|169|170|171|172|173|174|175|176|177|178|179|180|181|182|183|184|185|186|187|188|189|190|191|192|193|194|195|196|197|198|199|200|201|202|203|204|205|206|207|208|209|210|211|212|213|214|215|216|217|218|219|220|221|222|223|224|225|226|227|228|229|230|231|232|233|234|235|236|237|238|239|240|241|242|243|244|245|246|247|248|249|250|251|252|253|254|255" },
{ "net_retropad_screen", "Start screen; Retropad|Keyboard tester" },
{ "net_retropad_hide_analog_mismatch", "Hide mismatching analog button inputs; True|False" },
{ NULL, NULL },
};
enum retro_pixel_format fmt = RETRO_PIXEL_FORMAT_RGB565;
struct retro_keyboard_callback kcb = { NETRETROPAD_CORE_PREFIX(update_keyboard_cb) };
cb(RETRO_ENVIRONMENT_SET_VARIABLES, (void*)vars);
NETRETROPAD_CORE_PREFIX(environ_cb) = cb;
@ -514,25 +635,42 @@ void NETRETROPAD_CORE_PREFIX(retro_set_environment)(retro_environment_t cb)
if (cb(RETRO_ENVIRONMENT_GET_LOG_INTERFACE, &logger))
NETRETROPAD_CORE_PREFIX(log_cb) = logger.log;
NETRETROPAD_CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_SET_KEYBOARD_CALLBACK, &kcb);
}
static void netretropad_check_variables(void)
{
struct retro_variable var, var2, var3, var4, port_var;
var.key = "net_retropad_ip_octet1";
var2.key = "net_retropad_ip_octet2";
var3.key = "net_retropad_ip_octet3";
var4.key = "net_retropad_ip_octet4";
port_var.key = "net_retropad_port";
struct retro_variable var, var2, var3, var4, port_var, screen_var, hide_a_var;
var.key = "net_retropad_ip_octet1";
var2.key = "net_retropad_ip_octet2";
var3.key = "net_retropad_ip_octet3";
var4.key = "net_retropad_ip_octet4";
port_var.key = "net_retropad_port";
screen_var.key = "net_retropad_screen";
hide_a_var.key = "net_retropad_hide_analog_mismatch";
NETRETROPAD_CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_GET_VARIABLE, &var);
NETRETROPAD_CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_GET_VARIABLE, &var2);
NETRETROPAD_CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_GET_VARIABLE, &var3);
NETRETROPAD_CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_GET_VARIABLE, &var4);
NETRETROPAD_CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_GET_VARIABLE, &port_var);
NETRETROPAD_CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_GET_VARIABLE, &screen_var);
NETRETROPAD_CORE_PREFIX(environ_cb)(RETRO_ENVIRONMENT_GET_VARIABLE, &hide_a_var);
snprintf(server, sizeof(server), "%s.%s.%s.%s", var.value, var2.value, var3.value, var4.value);
port = atoi(port_var.value);
if (screen_var.value &&
((current_screen == NETRETROPAD_SCREEN_PAD && strstr(screen_var.value,"Keyboard")) ||
(current_screen == NETRETROPAD_SCREEN_KEYBOARD && strstr(screen_var.value,"Retropad"))))
flip_screen();
if (hide_a_var.value && strstr(hide_a_var.value,"True"))
hide_analog_mismatch = true;
else
hide_analog_mismatch = false;
}
void NETRETROPAD_CORE_PREFIX(retro_set_audio_sample)(retro_audio_sample_t cb)
@ -562,7 +700,10 @@ void NETRETROPAD_CORE_PREFIX(retro_set_video_refresh)(retro_video_refresh_t cb)
}
void NETRETROPAD_CORE_PREFIX(retro_reset)(void)
{}
{
netretropad_check_variables();
open_UDP_socket();
}
void NETRETROPAD_CORE_PREFIX(retro_run)(void)
{
@ -582,31 +723,60 @@ void NETRETROPAD_CORE_PREFIX(retro_run)(void)
int offset = DESC_OFFSET(&joypad, 0, 0, i);
if (joypad.value[offset])
input_state |= 1 << i;
/* Construct a red gradient representation for analog buttons */
offset = DESC_OFFSET(&analog_button, 0, RETRO_DEVICE_INDEX_ANALOG_BUTTON, i);
analog_item_colors[i] = (uint16_t)((int16_t)analog_button.value[offset]/1638) << 11;
}
for (i = analog.id_min; i <= analog.id_max; i++)
{
/* bitmap: x-- x- x+ x++ y-- y- y+ y++*/
/* default analog deadzone: 0.0 - increased for convenience, default analog threshold: 0.5 */
/* default analog deadzone: 0.0 - increased for convenience to 0.1, default analog threshold: 0.5 */
/* Red gradient also calculated */
int offset = DESC_OFFSET(&analog, 0, RETRO_DEVICE_INDEX_ANALOG_LEFT, i);
if ( (int16_t)analog.value[offset] < -32766/2)
if ( (int16_t)analog.value[offset] < -32768/2)
{
input_state |= 1 << (16 + i*8 + 0);
analog_item_colors[ 16 + i*8 + 0] = (uint16_t)((-1*((int16_t)analog.value[offset])-32768/2) /528) << 11;
}
else if ((int16_t)analog.value[offset] < -3276)
{
input_state |= 1 << (16 + i*8 + 1);
analog_item_colors[ 16 + i*8 + 1] = (uint16_t)((-1*((int16_t)analog.value[offset]) ) /528) << 11;
}
else if ((int16_t)analog.value[offset] > 32768/2)
{
input_state |= 1 << (16 + i*8 + 3);
analog_item_colors[ 16 + i*8 + 3] = (uint16_t)(( ((int16_t)analog.value[offset])-32768/2) /528) << 11;
}
else if ((int16_t)analog.value[offset] > 3276)
{
input_state |= 1 << (16 + i*8 + 2);
analog_item_colors[ 16 + i*8 + 2] = (uint16_t)(( ((int16_t)analog.value[offset]) ) /528) << 11;
}
offset = DESC_OFFSET(&analog, 0, RETRO_DEVICE_INDEX_ANALOG_RIGHT, i);
if ( (int16_t)analog.value[offset] < -32766/2)
if ( (int16_t)analog.value[offset] < -32768/2)
{
input_state |= 1 << (16 + i*8 + 4);
analog_item_colors[ 16 + i*8 + 4] = (uint16_t)((-1*((int16_t)analog.value[offset])-32768/2) /528) << 11;
}
else if ((int16_t)analog.value[offset] < -3276)
{
input_state |= 1 << (16 + i*8 + 5);
analog_item_colors[ 16 + i*8 + 5] = (uint16_t)((-1*((int16_t)analog.value[offset]) ) /528) << 11;
}
else if ((int16_t)analog.value[offset] > 32768/2)
{
input_state |= 1 << (16 + i*8 + 7);
analog_item_colors[ 16 + i*8 + 7] = (uint16_t)(( ((int16_t)analog.value[offset])-32768/2) /528) << 11;
}
else if ((int16_t)analog.value[offset] > 3276)
{
input_state |= 1 << (16 + i*8 + 6);
analog_item_colors[ 16 + i*8 + 6] = (uint16_t)(( ((int16_t)analog.value[offset]) ) /528) << 11;
}
}
/* Input test section start. */
@ -619,7 +789,7 @@ void NETRETROPAD_CORE_PREFIX(retro_run)(void)
}
/* Print a log for A+B combination, but only once while those are pressed */
if (input_state == ((1 << RETRO_DEVICE_ID_JOYPAD_A | 1 << RETRO_DEVICE_ID_JOYPAD_B) & 0x0000ffff))
if (input_state & ((1 << RETRO_DEVICE_ID_JOYPAD_A | 1 << RETRO_DEVICE_ID_JOYPAD_B) & 0x0000ffff))
{
if (!dump_state_blocked)
{
@ -647,6 +817,9 @@ void NETRETROPAD_CORE_PREFIX(retro_run)(void)
NETRETROPAD_CORE_PREFIX(log_cb)(RETRO_LOG_INFO,
"[Remote RetroPad]: Proceeding to test step %d at frame %d, next: %d\n",
current_test_step,current_frame,next_teststep_frame+INITIAL_FRAMES);
if((input_test_steps[current_test_step].expected_button < KEYBOARD_OFFSET && current_screen == NETRETROPAD_SCREEN_KEYBOARD) ||
(input_test_steps[current_test_step].expected_button >= KEYBOARD_OFFSET && current_screen == NETRETROPAD_SCREEN_PAD))
flip_screen();
}
else
{
@ -671,8 +844,20 @@ void NETRETROPAD_CORE_PREFIX(retro_run)(void)
if (current_test_step < last_test_step)
{
expected_input = 1 << input_test_steps[current_test_step].expected_button;
if(input_state & expected_input)
bool test_success = false;
if (input_test_steps[current_test_step].expected_button < KEYBOARD_OFFSET)
{
expected_input = 1 << input_test_steps[current_test_step].expected_button;
if(input_state & expected_input)
test_success = true;
}
else
{
expected_input = input_test_steps[current_test_step].expected_button - KEYBOARD_OFFSET;
if (expected_input < RETROK_LAST && keyboard_state[expected_input])
test_success = true;
}
if (test_success)
{
NETRETROPAD_CORE_PREFIX(log_cb)(RETRO_LOG_INFO,
"[Remote RetroPad]: Test step %d successful at frame %d\n",
@ -683,82 +868,124 @@ void NETRETROPAD_CORE_PREFIX(retro_run)(void)
}
}
/* Input test section end. */
for (rle = 0; rle < sizeof(retropad_buttons); )
if (current_screen == NETRETROPAD_SCREEN_PAD)
{
unsigned runs;
char paint = 0;
for (runs = retropad_buttons[rle++]; runs > 0; runs--)
for (rle = 0; rle < sizeof(retropad_buttons); )
{
unsigned button = paint ? 1 << retropad_buttons[rle++] : 0;
unsigned runs;
char paint = 0;
if (paint)
for (runs = retropad_buttons[rle++]; runs > 0; runs--)
{
unsigned count;
uint16_t color;
/* Red for active inputs */
if (input_state & button)
if (paint)
{
color = 0xA000;
input_state_validated |= button;
unsigned button = 0;
unsigned button_analog = 0;
unsigned count;
uint16_t color;
/* 0 - 15: buttons, 16 - 31: analog x/y */
/* 32 - 47: analog input for same buttons */
if (retropad_buttons[rle] < 32)
button = 1 << retropad_buttons[rle];
else
button_analog = 1 << (retropad_buttons[rle] - 32);
/* Red for active inputs */
if (input_state & button)
{
if(retropad_buttons[rle]<16)
color = 0xA000;
else
/* Gradient for analog axes */
color = analog_item_colors[retropad_buttons[rle]];
input_state_validated |= button;
}
/* Red gradient for active analog button inputs, from 0 to 0xa000 */
else if (button_analog && analog_item_colors[retropad_buttons[rle] - 32])
{
color = analog_item_colors[retropad_buttons[rle] - 32];
}
else if (button_analog && hide_analog_mismatch && input_state & button_analog)
color = 0xA000;
else
{
/* Light blue for expected input */
if (expected_input & button || expected_input & button_analog)
color = 0x7fff;
/* Light green for already validated input */
else if (input_state_validated & button || input_state_validated & button_analog)
color = 0xbff7;
/* White as default */
else
color = 0xffff;
}
rle++;
for (count = retropad_buttons[rle++]; count > 0; count--)
*pixel++ = color;
}
else
{
/* Light blue for expected input */
if (expected_input & button)
color = 0x7fff;
/* Light green for already validated input */
else if (input_state_validated & button )
color = 0xbff7;
/* White as default */
else
color = 0xffff;
}
pixel += retropad_buttons[rle++];
for (count = retropad_buttons[rle++]; count > 0; count--)
*pixel++ = color;
paint = !paint;
}
else
pixel += retropad_buttons[rle++];
paint = !paint;
pixel += 65;
}
}
else if (current_screen == NETRETROPAD_SCREEN_KEYBOARD)
{
for (rle = 0; rle < ARRAY_SIZE(keyboard_buttons); )
{
unsigned runs;
char paint = 0;
pixel += 65;
for (runs = keyboard_buttons[rle++]; runs > 0; runs--)
{
if (paint)
{
unsigned count;
uint16_t color;
/* Same color scheme as for retropad buttons */
if (keyboard_state[keyboard_buttons[rle]])
{
color = 0xA000;
keyboard_state_validated[keyboard_buttons[rle]] = true;
}
else
{
if (expected_input > 0 && expected_input == keyboard_buttons[rle])
color = 0x7fff;
else if (keyboard_state_validated[keyboard_buttons[rle]])
color = 0xbff7;
else
color = 0xffff;
}
rle++;
for (count = keyboard_buttons[rle++]; count > 0; count--)
*pixel++ = color;
}
else
pixel += keyboard_buttons[rle++];
paint = !paint;
}
pixel += 65;
}
}
NETRETROPAD_CORE_PREFIX(video_cb)(frame_buf, 320, 240, 640);
retro_sleep(4);
}
bool NETRETROPAD_CORE_PREFIX(retro_load_game)(const struct retro_game_info *info)
{
socket_target_t in_target;
netretropad_check_variables();
s = socket_create(
"retropad",
SOCKET_DOMAIN_INET,
SOCKET_TYPE_DATAGRAM,
SOCKET_PROTOCOL_UDP);
if (s == SOCKET_ERROR)
NETRETROPAD_CORE_PREFIX(log_cb)(RETRO_LOG_INFO, "socket failed");
/* setup address structure */
memset((char *) &si_other, 0, sizeof(si_other));
in_target.port = port;
in_target.server = server;
in_target.domain = SOCKET_DOMAIN_INET;
socket_set_target(&si_other, &in_target);
NETRETROPAD_CORE_PREFIX(log_cb)(RETRO_LOG_INFO, "Server IP Address: %s\n" , server);
open_UDP_socket();
/* If a .ratst file is given (only possible via command line),
* initialize test sequence. */

View file

@ -1,6 +1,8 @@
#ifndef REMOTEPAD_H
#define REMOTEPAD_H
/* Run-length-encoded format, serialized. */
/* Number of segments - length of individual segments (segment are alternating black and background color, always starting with black) */
static uint8_t body[] =
{
/* 0 */ 3, 38, 13, 204,
@ -156,8 +158,8 @@ static uint8_t retropad_buttons[] =
/* 0 */ 5, 38, 12, 13, 154, 13, 13, 37,
/* 1 */ 5, 35, 12, 21, 144, 13, 21, 34,
/* 2 */ 5, 33, 12, 26, 138, 13, 26, 32,
/* 3 */ 5, 32, 12, 28, 136, 13, 28, 31,
/* 4 */ 5, 32, 12, 29, 134, 13, 30, 30,
/* 3 */ 13, 32, 12, 7, 0, 44, 15, 0, 12, 6, 136, 13, 8, 0, 45, 14, 0, 13, 6, 31,
/* 4 */ 13, 32, 12, 7, 0, 44, 15, 0, 12, 7, 134, 13, 9, 0, 45, 14, 0, 13, 7, 30,
/* 5 */ 5, 31, 12, 31, 133, 13, 30, 30,
/* 6 */ 5, 31, 12, 31, 133, 13, 30, 30,
/* 7 */ 9, 31, 12, 2, 23, 12, 6, 133, 13, 5, 24, 13, 1, 30,
@ -168,9 +170,9 @@ static uint8_t retropad_buttons[] =
/* 12 */ 5, 39, 10, 13, 152, 11, 14, 37,
/* 13 */ 5, 34, 10, 24, 141, 11, 24, 32,
/* 14 */ 5, 31, 10, 29, 136, 11, 29, 30,
/* 15 */ 5, 30, 10, 31, 134, 11, 32, 28,
/* 16 */ 5, 29, 10, 33, 133, 11, 32, 28,
/* 17 */ 5, 29, 10, 33, 133, 11, 32, 28,
/* 15 */ 13, 30, 10, 9, 0, 42, 15, 0, 10, 7, 134, 11, 9, 0, 43, 14, 0, 11, 9, 28,
/* 16 */ 13, 29, 10, 10, 0, 42, 15, 0, 10, 8, 133, 11, 9, 0, 43, 14, 0, 11, 9, 28,
/* 17 */ 13, 29, 10, 10, 0, 42, 15, 0, 10, 8, 133, 11, 9, 0, 43, 14, 0, 11, 9, 28,
/* 18 */ 5, 29, 10, 33, 133, 11, 32, 28,
/* 19 */ 5, 29, 10, 33, 133, 11, 32, 28,
/* 20 */ 5, 29, 10, 33, 133, 11, 32, 28,
@ -215,12 +217,12 @@ static uint8_t retropad_buttons[] =
/* 59 */ 3, 204, 9, 13, 38,
/* 60 */ 3, 203, 9, 15, 37,
/* 61 */ 3, 202, 9, 16, 37,
/* 62 */ 3, 202, 9, 17, 36,
/* 63 */ 5, 39, 4, 13, 149, 9, 18, 36,
/* 64 */ 5, 39, 4, 13, 149, 9, 18, 36,
/* 65 */ 5, 39, 4, 13, 149, 9, 18, 36,
/* 66 */ 5, 39, 4, 13, 149, 9, 18, 36,
/* 67 */ 5, 39, 4, 13, 150, 9, 17, 36,
/* 62 */ 7, 202, 9, 6, 0, 41, 5, 0, 9, 6, 36,
/* 63 */ 9, 39, 4, 13, 149, 9, 7, 0, 41, 5, 0, 9, 6, 36,
/* 64 */ 9, 39, 4, 13, 149, 9, 7, 0, 41, 5, 0, 9, 7, 35,
/* 65 */ 9, 39, 4, 13, 149, 9, 7, 0, 41, 5, 0, 9, 7, 35,
/* 66 */ 9, 39, 4, 13, 149, 9, 7, 0, 41, 5, 0, 9, 7, 35,
/* 67 */ 9, 39, 4, 13, 150, 9, 6, 0, 41, 5, 0, 9, 6, 36,
/* 68 */ 5, 39, 4, 13, 150, 9, 17, 36,
/* 69 */ 5, 39, 4, 13, 151, 9, 15, 37,
/* 70 */ 5, 39, 4, 13, 151, 9, 14, 38,
@ -233,12 +235,12 @@ static uint8_t retropad_buttons[] =
/* 77 */ 9, 24, 6, 12, 19, 7, 12, 115, 1, 12, 33, 8, 12, 16,
/* 78 */ 13, 24, 6, 13, 17, 7, 13, 30, 2, 14, 35, 3, 13, 22, 1, 14, 30, 8, 15, 15,
/* 79 */ 13, 24, 6, 14, 15, 7, 14, 30, 2, 14, 34, 3, 14, 21, 1, 16, 29, 8, 16, 14,
/* 80 */ 13, 24, 6, 15, 13, 7, 15, 30, 2, 14, 34, 3, 14, 21, 1, 17, 27, 8, 17, 14,
/* 81 */ 13, 24, 6, 16, 11, 7, 16, 30, 2, 14, 34, 3, 14, 20, 1, 18, 27, 8, 18, 13,
/* 82 */ 13, 24, 6, 16, 12, 7, 15, 30, 2, 14, 34, 3, 14, 20, 1, 18, 27, 8, 18, 13,
/* 83 */ 13, 24, 6, 15, 14, 7, 14, 30, 2, 14, 34, 3, 14, 20, 1, 18, 26, 8, 19, 13,
/* 84 */ 13, 24, 6, 14, 16, 7, 13, 30, 2, 14, 34, 3, 14, 20, 1, 18, 27, 8, 18, 13,
/* 85 */ 9, 24, 6, 13, 18, 7, 12, 112, 1, 18, 27, 8, 17, 14,
/* 80 */ 21, 24, 6, 15, 13, 7, 15, 30, 2, 14, 34, 3, 14, 21, 1, 6, 0, 33, 5, 0, 1, 6, 27, 8, 7, 0, 40, 5, 0, 8, 5, 14,
/* 81 */ 21, 24, 6, 16, 11, 7, 16, 30, 2, 14, 34, 3, 14, 20, 1, 7, 0, 33, 5, 0, 1, 6, 27, 8, 7, 0, 40, 5, 0, 8, 6, 13,
/* 82 */ 21, 24, 6, 16, 12, 7, 15, 30, 2, 14, 34, 3, 14, 20, 1, 7, 0, 33, 5, 0, 1, 7, 26, 8, 7, 0, 40, 5, 0, 8, 6, 13,
/* 83 */ 21, 24, 6, 15, 14, 7, 14, 30, 2, 14, 34, 3, 14, 20, 1, 7, 0, 33, 5, 0, 1, 7, 25, 8, 8, 0, 40, 5, 0, 8, 6, 13,
/* 84 */ 21, 24, 6, 14, 16, 7, 13, 30, 2, 14, 34, 3, 14, 20, 1, 7, 0, 33, 5, 0, 1, 7, 26, 8, 7, 0, 40, 5, 0, 8, 6, 13,
/* 85 */ 17, 24, 6, 13, 18, 7, 12, 112, 1, 7, 0, 33, 5, 0, 1, 6, 27, 8, 7, 0, 40, 5, 0, 8, 5, 14,
/* 86 */ 9, 24, 6, 12, 20, 7, 11, 113, 1, 17, 27, 8, 17, 14,
/* 87 */ 11, 24, 6, 11, 10, 5, 1, 11, 7, 10, 113, 1, 16, 29, 8, 16, 14,
/* 88 */ 7, 44, 5, 3, 134, 1, 14, 31, 8, 14, 15,
@ -251,12 +253,12 @@ static uint8_t retropad_buttons[] =
/* 95 */ 5, 39, 5, 13, 152, 0, 13, 38,
/* 96 */ 5, 39, 5, 13, 151, 0, 15, 37,
/* 97 */ 5, 39, 5, 13, 150, 0, 17, 36,
/* 98 */ 5, 39, 5, 13, 150, 0, 17, 36,
/* 99 */ 5, 39, 5, 13, 149, 0, 18, 36,
/* 100 */ 5, 39, 5, 13, 149, 0, 18, 36,
/* 101 */ 3, 201, 0, 18, 36,
/* 102 */ 3, 201, 0, 18, 36,
/* 103 */ 3, 202, 0, 17, 36,
/* 98 */ 9, 39, 5, 13, 150, 0, 6, 0, 32, 6, 0, 0, 5, 36,
/* 99 */ 9, 39, 5, 13, 149, 0, 7, 0, 32, 6, 0, 0, 6, 35,
/* 100 */ 9, 39, 5, 13, 149, 0, 7, 0, 32, 6, 0, 0, 6, 35,
/* 101 */ 7, 201, 0, 7, 0, 32, 6, 0, 0, 6, 35,
/* 102 */ 7, 201, 0, 7, 0, 32, 6, 0, 0, 6, 35,
/* 103 */ 7, 202, 0, 6, 0, 32, 6, 0, 0, 5, 36,
/* 104 */ 7, 84, 24, 5, 78, 28, 5, 30, 0, 17, 36,
/* 105 */ 7, 82, 24, 9, 74, 28, 9, 29, 0, 15, 37,
/* 106 */ 7, 82, 24, 9, 74, 28, 9, 30, 0, 13, 38,
@ -299,4 +301,295 @@ static uint8_t retropad_buttons[] =
/* sizeof( buttons ) = 1238 */
static uint8_t keyboard_body[] =
{
/* 0 */ 1, 255,
/* 1 */ 1, 255,
/* 2 */ 1, 255,
/* 3 */ 2, 0, 255,
/* 4 */ 2, 0, 255,
/* 5 */ 2, 0, 255,
/* 6 */ 2, 0, 255,
/* 7 */ 2, 0, 255,
/* 8 */ 2, 0, 255,
/* 9 */ 2, 0, 255,
/* 10 */ 2, 0, 255,
/* 11 */ 2, 0, 255,
/* 12 */ 2, 0, 255,
/* 13 */ 2, 0, 255,
/* 14 */ 2, 0, 255,
/* 15 */ 2, 0, 255,
/* 16 */ 2, 0, 255,
/* 17 */ 2, 0, 255,
/* 18 */ 2, 0, 255,
/* 19 */ 2, 0, 255,
/* 20 */ 2, 0, 255,
/* 21 */ 2, 0, 255,
/* 22 */ 2, 0, 255,
/* 23 */ 2, 0, 255,
/* 24 */ 2, 0, 255,
/* 25 */ 2, 0, 255,
/* 26 */ 2, 0, 255,
/* 27 */ 2, 0, 255,
/* 28 */ 2, 0, 255,
/* 29 */ 2, 0, 255,
/* 30 */ 2, 0, 255,
/* 31 */ 2, 0, 255,
/* 32 */ 2, 0, 255,
/* 33 */ 2, 0, 255,
/* 34 */ 2, 0, 255,
/* 35 */ 2, 0, 255,
/* 36 */ 2, 0, 255,
/* 37 */ 2, 0, 255,
/* 38 */ 2, 0, 255,
/* 39 */ 2, 0, 255,
/* 40 */ 2, 0, 255,
/* 41 */ 2, 0, 255,
/* 42 */ 2, 0, 255,
/* 43 */ 2, 0, 255,
/* 44 */ 2, 0, 255,
/* 45 */ 2, 0, 255,
/* 46 */ 2, 0, 255,
/* 47 */ 2, 0, 255,
/* 48 */ 2, 0, 255,
/* 49 */ 2, 0, 255,
/* 50 */ 2, 0, 255,
/* 51 */ 2, 0, 255,
/* 52 */ 2, 0, 255,
/* 53 */ 2, 0, 255,
/* 54 */ 2, 0, 255,
/* 55 */ 2, 0, 255,
/* 56 */ 2, 0, 255,
/* 57 */ 2, 0, 255,
/* 58 */ 2, 0, 255,
/* 59 */ 2, 0, 255,
/* 60 */ 2, 0, 255,
/* 61 */ 2, 0, 255,
/* 62 */ 2, 0, 255,
/* 63 */ 2, 0, 255,
/* 64 */ 2, 0, 255,
/* 65 */ 2, 0, 255,
/* 66 */ 2, 0, 255,
/* 67 */ 2, 0, 255,
/* 68 */ 2, 0, 255,
/* 69 */ 2, 0, 255,
/* 70 */ 2, 0, 255,
/* 71 */ 2, 0, 255,
/* 72 */ 2, 0, 255,
/* 73 */ 2, 0, 255,
/* 74 */ 2, 0, 255,
/* 75 */ 2, 0, 255,
/* 76 */ 2, 0, 255,
/* 77 */ 2, 0, 255,
/* 78 */ 2, 0, 255,
/* 79 */ 2, 0, 255,
/* 80 */ 2, 0, 255,
/* 81 */ 2, 0, 255,
/* 82 */ 2, 0, 255,
/* 83 */ 2, 0, 255,
/* 84 */ 2, 0, 255,
/* 85 */ 2, 0, 255,
/* 86 */ 2, 0, 255,
/* 87 */ 2, 0, 255,
/* 88 */ 2, 0, 255,
/* 89 */ 2, 0, 255,
/* 90 */ 2, 0, 255,
/* 91 */ 2, 0, 255,
/* 92 */ 2, 0, 255,
/* 93 */ 2, 0, 255,
/* 94 */ 2, 0, 255,
/* 95 */ 2, 0, 255,
/* 96 */ 2, 0, 255,
/* 97 */ 2, 0, 255,
/* 98 */ 2, 0, 255,
/* 99 */ 2, 0, 255,
/* 100 */ 2, 0, 255,
/* 101 */ 2, 0, 255,
/* 102 */ 2, 0, 255,
/* 103 */ 2, 0, 255,
/* 104 */ 2, 0, 255,
/* 105 */ 2, 0, 255,
/* 106 */ 2, 0, 255,
/* 107 */ 2, 0, 255,
/* 108 */ 2, 0, 255,
/* 109 */ 2, 0, 255,
/* 110 */ 2, 0, 255,
/* 111 */ 2, 0, 255,
/* 112 */ 2, 0, 255,
/* 113 */ 2, 0, 255,
/* 114 */ 2, 0, 255,
/* 115 */ 2, 0, 255,
/* 116 */ 2, 0, 255,
/* 117 */ 2, 0, 255,
/* 118 */ 2, 0, 255,
/* 119 */ 2, 0, 255,
/* 120 */ 2, 0, 255,
/* 121 */ 2, 0, 255,
/* 122 */ 2, 0, 255,
/* 123 */ 2, 0, 255,
/* 124 */ 2, 0, 255,
/* 125 */ 2, 0, 255,
/* 126 */ 2, 0, 255,
/* 127 */ 2, 0, 255,
/* 128 */ 2, 0, 255,
/* 129 */ 2, 0, 255,
/* 130 */ 2, 0, 255,
/* 131 */ 2, 0, 255,
/* 132 */ 2, 0, 255,
/* 133 */ 2, 0, 255,
/* 134 */ 2, 0, 255,
/* 135 */ 2, 0, 255,
/* 136 */ 2, 0, 255,
/* 137 */ 1, 255,
/* 138 */ 1, 255,
/* 139 */ 1, 255,
/* 140 */ 1, 255,
/* 141 */ 1, 255,
};
static uint16_t keyboard_buttons[] =
{
/* 0 */ 1, 255,
/* 1 */ 1, 255,
/* 2 */ 1, 255,
/* 3 */ 1, 255,
/* 4 */ 69, 1, 27, 3, 22, 282, 4, 1, 282, 1, 5, 283, 3, 1, 283, 3, 5, 284, 3, 1, 284, 3, 5, 285, 3, 1, 285, 1, 2, 285, 1, 13, 286, 3, 1, 286, 4, 4, 287, 3, 2, 287, 3, 4, 288, 3, 1, 288, 4, 4, 289, 3, 2, 289, 2, 14, 290, 4, 1, 290, 3, 4, 291, 2, 1, 291, 1, 1, 291, 3, 4, 292, 4, 1, 292, 1, 1, 292, 1, 4, 293, 2, 1, 293, 1, 1, 293, 3, 5, 316, 4, 1, 316, 3, 4, 302, 3, 1, 302, 1, 7, 19, 3, 40,
/* 5 */ 69, 1, 27, 3, 22, 282, 4, 1, 282, 1, 5, 283, 3, 1, 283, 3, 5, 284, 3, 1, 284, 3, 5, 285, 3, 1, 285, 1, 2, 285, 1, 13, 286, 3, 1, 286, 4, 4, 287, 3, 2, 287, 3, 4, 288, 3, 1, 288, 4, 4, 289, 3, 2, 289, 2, 14, 290, 4, 1, 290, 3, 4, 291, 2, 1, 291, 1, 1, 291, 3, 4, 292, 4, 1, 292, 1, 1, 292, 1, 4, 293, 2, 1, 293, 1, 1, 293, 3, 5, 316, 4, 1, 316, 3, 4, 302, 3, 1, 302, 1, 7, 19, 3, 40,
/* 6 */ 85, 1, 27, 1, 1, 27, 3, 1, 27, 2, 17, 282, 1, 4, 282, 1, 5, 283, 1, 6, 283, 1, 4, 284, 1, 6, 284, 1, 4, 285, 1, 3, 285, 1, 2, 285, 1, 13, 286, 1, 3, 286, 1, 7, 287, 1, 3, 287, 1, 7, 288, 1, 6, 288, 1, 4, 289, 1, 3, 289, 1, 2, 289, 1, 13, 290, 1, 4, 290, 1, 1, 290, 1, 4, 291, 1, 2, 291, 1, 1, 291, 1, 1, 291, 1, 4, 292, 1, 4, 292, 1, 1, 292, 1, 4, 293, 1, 2, 293, 1, 3, 293, 1, 5, 316, 1, 2, 316, 1, 1, 316, 1, 6, 302, 1, 3, 302, 1, 7, 19, 1, 1, 19, 1, 1, 19, 3, 36,
/* 7 */ 85, 1, 27, 1, 1, 27, 3, 1, 27, 2, 17, 282, 1, 4, 282, 1, 5, 283, 1, 6, 283, 1, 4, 284, 1, 6, 284, 1, 4, 285, 1, 3, 285, 1, 2, 285, 1, 13, 286, 1, 3, 286, 1, 7, 287, 1, 3, 287, 1, 7, 288, 1, 6, 288, 1, 4, 289, 1, 3, 289, 1, 2, 289, 1, 13, 290, 1, 4, 290, 1, 1, 290, 1, 4, 291, 1, 2, 291, 1, 1, 291, 1, 1, 291, 1, 4, 292, 1, 4, 292, 1, 1, 292, 1, 4, 293, 1, 2, 293, 1, 3, 293, 1, 5, 316, 1, 2, 316, 1, 1, 316, 1, 6, 302, 1, 3, 302, 1, 7, 19, 1, 1, 19, 1, 1, 19, 3, 36,
/* 8 */ 79, 1, 27, 2, 1, 27, 1, 2, 27, 1, 18, 282, 4, 1, 282, 1, 5, 283, 3, 3, 283, 1, 5, 284, 3, 1, 284, 3, 5, 285, 3, 1, 285, 4, 13, 286, 3, 1, 286, 3, 5, 287, 3, 1, 287, 3, 5, 288, 3, 4, 288, 1, 4, 289, 3, 2, 289, 2, 14, 290, 4, 1, 290, 3, 4, 291, 2, 1, 291, 1, 1, 291, 1, 1, 291, 1, 4, 292, 4, 1, 292, 1, 1, 292, 1, 4, 293, 2, 1, 293, 1, 3, 293, 1, 5, 316, 1, 2, 316, 1, 1, 316, 3, 4, 302, 3, 1, 302, 1, 7, 19, 1, 1, 19, 1, 4, 19, 1, 35,
/* 9 */ 79, 1, 27, 2, 1, 27, 1, 2, 27, 1, 18, 282, 4, 1, 282, 1, 5, 283, 3, 3, 283, 1, 5, 284, 3, 1, 284, 3, 5, 285, 3, 1, 285, 4, 13, 286, 3, 1, 286, 3, 5, 287, 3, 1, 287, 3, 5, 288, 3, 4, 288, 1, 4, 289, 3, 2, 289, 2, 14, 290, 4, 1, 290, 3, 4, 291, 2, 1, 291, 1, 1, 291, 1, 1, 291, 1, 4, 292, 4, 1, 292, 1, 1, 292, 1, 4, 293, 2, 1, 293, 1, 3, 293, 1, 5, 316, 1, 2, 316, 1, 1, 316, 3, 4, 302, 3, 1, 302, 1, 7, 19, 1, 1, 19, 1, 4, 19, 1, 35,
/* 10 */ 79, 1, 27, 1, 2, 27, 2, 1, 27, 1, 18, 282, 1, 4, 282, 1, 5, 283, 1, 4, 283, 1, 6, 284, 1, 6, 284, 1, 4, 285, 1, 6, 285, 1, 13, 286, 1, 6, 286, 1, 4, 287, 1, 3, 287, 1, 2, 287, 1, 4, 288, 1, 5, 288, 1, 5, 289, 1, 3, 289, 1, 2, 289, 1, 13, 290, 1, 6, 290, 1, 4, 291, 1, 2, 291, 1, 1, 291, 1, 1, 291, 1, 4, 292, 1, 4, 292, 1, 1, 292, 1, 4, 293, 1, 2, 293, 1, 2, 293, 1, 6, 316, 4, 3, 316, 1, 6, 302, 1, 1, 302, 1, 7, 19, 3, 1, 19, 4, 35,
/* 11 */ 79, 1, 27, 1, 2, 27, 2, 1, 27, 1, 18, 282, 1, 4, 282, 1, 5, 283, 1, 4, 283, 1, 6, 284, 1, 6, 284, 1, 4, 285, 1, 6, 285, 1, 13, 286, 1, 6, 286, 1, 4, 287, 1, 3, 287, 1, 2, 287, 1, 4, 288, 1, 5, 288, 1, 5, 289, 1, 3, 289, 1, 2, 289, 1, 13, 290, 1, 6, 290, 1, 4, 291, 1, 2, 291, 1, 1, 291, 1, 1, 291, 1, 4, 292, 1, 4, 292, 1, 1, 292, 1, 4, 293, 1, 2, 293, 1, 2, 293, 1, 6, 316, 4, 3, 316, 1, 6, 302, 1, 1, 302, 1, 7, 19, 3, 1, 19, 4, 35,
/* 12 */ 81, 1, 27, 1, 3, 27, 1, 1, 27, 1, 18, 282, 1, 4, 282, 1, 5, 283, 1, 3, 283, 1, 7, 284, 1, 6, 284, 1, 4, 285, 1, 6, 285, 1, 13, 286, 1, 6, 286, 1, 4, 287, 1, 3, 287, 1, 2, 287, 1, 4, 288, 1, 4, 288, 1, 6, 289, 1, 3, 289, 1, 2, 289, 1, 13, 290, 1, 6, 290, 1, 4, 291, 1, 2, 291, 1, 1, 291, 1, 1, 291, 1, 4, 292, 1, 4, 292, 1, 1, 292, 1, 4, 293, 1, 2, 293, 1, 1, 293, 1, 7, 316, 1, 6, 316, 1, 6, 302, 1, 1, 302, 1, 7, 19, 1, 3, 19, 1, 2, 19, 1, 35,
/* 13 */ 81, 1, 27, 1, 3, 27, 1, 1, 27, 1, 18, 282, 1, 4, 282, 1, 5, 283, 1, 3, 283, 1, 7, 284, 1, 6, 284, 1, 4, 285, 1, 6, 285, 1, 13, 286, 1, 6, 286, 1, 4, 287, 1, 3, 287, 1, 2, 287, 1, 4, 288, 1, 4, 288, 1, 6, 289, 1, 3, 289, 1, 2, 289, 1, 13, 290, 1, 6, 290, 1, 4, 291, 1, 2, 291, 1, 1, 291, 1, 1, 291, 1, 4, 292, 1, 4, 292, 1, 1, 292, 1, 4, 293, 1, 2, 293, 1, 1, 293, 1, 7, 316, 1, 6, 316, 1, 6, 302, 1, 1, 302, 1, 7, 19, 1, 3, 19, 1, 2, 19, 1, 35,
/* 14 */ 73, 1, 27, 2, 1, 27, 2, 1, 27, 2, 17, 282, 1, 4, 282, 1, 5, 283, 1, 3, 283, 4, 4, 284, 1, 3, 284, 3, 5, 285, 1, 6, 285, 1, 13, 286, 1, 3, 286, 3, 5, 287, 1, 4, 287, 2, 5, 288, 1, 3, 288, 1, 7, 289, 1, 4, 289, 2, 14, 290, 1, 4, 290, 3, 4, 291, 1, 2, 291, 1, 1, 291, 3, 4, 292, 1, 4, 292, 1, 1, 292, 1, 4, 293, 1, 2, 293, 1, 1, 293, 3, 5, 316, 1, 4, 316, 3, 4, 302, 3, 1, 302, 4, 4, 19, 1, 3, 19, 4, 35,
/* 15 */ 73, 1, 27, 2, 1, 27, 2, 1, 27, 2, 17, 282, 1, 4, 282, 1, 5, 283, 1, 3, 283, 4, 4, 284, 1, 3, 284, 3, 5, 285, 1, 6, 285, 1, 13, 286, 1, 3, 286, 3, 5, 287, 1, 4, 287, 2, 5, 288, 1, 3, 288, 1, 7, 289, 1, 4, 289, 2, 14, 290, 1, 4, 290, 3, 4, 291, 1, 2, 291, 1, 1, 291, 3, 4, 292, 1, 4, 292, 1, 1, 292, 1, 4, 293, 1, 2, 293, 1, 1, 293, 3, 5, 316, 1, 4, 316, 3, 4, 302, 3, 1, 302, 4, 4, 19, 1, 3, 19, 4, 35,
/* 16 */ 1, 255,
/* 17 */ 1, 255,
/* 18 */ 1, 255,
/* 19 */ 1, 255,
/* 20 */ 1, 255,
/* 21 */ 1, 255,
/* 22 */ 1, 255,
/* 23 */ 1, 255,
/* 24 */ 1, 255,
/* 25 */ 1, 255,
/* 26 */ 1, 255,
/* 27 */ 1, 255,
/* 28 */ 1, 255,
/* 29 */ 1, 255,
/* 30 */ 49, 16, 49, 1, 10, 50, 3, 10, 51, 3, 8, 52, 1, 2, 52, 1, 8, 53, 4, 9, 54, 3, 8, 55, 4, 9, 56, 2, 9, 57, 4, 7, 48, 4, 31, 8, 3, 14, 8, 4, 10, 277, 1, 11, 278, 1, 2, 278, 1, 8, 280, 3, 1, 280, 1, 2, 280, 1, 4, 300, 1, 2, 300, 1, 1, 300, 1, 7, 267, 1, 5, 268, 1, 11,
/* 31 */ 49, 16, 49, 1, 10, 50, 3, 10, 51, 3, 8, 52, 1, 2, 52, 1, 8, 53, 4, 9, 54, 3, 8, 55, 4, 9, 56, 2, 9, 57, 4, 7, 48, 4, 31, 8, 3, 14, 8, 4, 10, 277, 1, 11, 278, 1, 2, 278, 1, 8, 280, 3, 1, 280, 1, 2, 280, 1, 4, 300, 1, 2, 300, 1, 1, 300, 1, 7, 267, 1, 5, 268, 1, 11,
/* 32 */ 83, 3, 96, 2, 2, 96, 1, 8, 49, 1, 13, 50, 1, 12, 51, 1, 7, 52, 1, 2, 52, 1, 8, 53, 1, 11, 54, 1, 14, 55, 1, 8, 56, 1, 2, 56, 1, 8, 57, 1, 2, 57, 1, 7, 48, 1, 2, 48, 1, 22, 61, 3, 6, 8, 1, 2, 8, 1, 1, 8, 2, 3, 8, 2, 1, 8, 1, 3, 8, 1, 4, 8, 4, 5, 277, 1, 1, 277, 2, 2, 277, 2, 4, 278, 1, 2, 278, 1, 2, 278, 1, 5, 280, 1, 1, 280, 1, 1, 280, 1, 2, 280, 1, 4, 300, 2, 1, 300, 1, 1, 300, 1, 7, 267, 1, 3, 268, 1, 1, 268, 1, 1, 268, 1, 9,
/* 33 */ 83, 3, 96, 2, 2, 96, 1, 8, 49, 1, 13, 50, 1, 12, 51, 1, 7, 52, 1, 2, 52, 1, 8, 53, 1, 11, 54, 1, 14, 55, 1, 8, 56, 1, 2, 56, 1, 8, 57, 1, 2, 57, 1, 7, 48, 1, 2, 48, 1, 22, 61, 3, 6, 8, 1, 2, 8, 1, 1, 8, 2, 3, 8, 2, 1, 8, 1, 3, 8, 1, 4, 8, 4, 5, 277, 1, 1, 277, 2, 2, 277, 2, 4, 278, 1, 2, 278, 1, 2, 278, 1, 5, 280, 1, 1, 280, 1, 1, 280, 1, 2, 280, 1, 4, 300, 2, 1, 300, 1, 1, 300, 1, 7, 267, 1, 3, 268, 1, 1, 268, 1, 1, 268, 1, 9,
/* 34 */ 77, 2, 96, 1, 2, 96, 2, 9, 49, 1, 12, 50, 1, 10, 51, 3, 8, 52, 4, 8, 53, 3, 9, 54, 3, 12, 55, 1, 9, 56, 2, 9, 57, 4, 7, 48, 1, 2, 48, 1, 9, 45, 3, 19, 8, 3, 4, 8, 1, 1, 8, 1, 3, 8, 1, 3, 8, 4, 1, 8, 1, 2, 8, 1, 5, 277, 1, 1, 277, 1, 1, 277, 1, 1, 277, 1, 5, 278, 4, 1, 278, 1, 1, 278, 1, 4, 280, 1, 1, 280, 1, 1, 280, 1, 2, 280, 1, 4, 300, 1, 1, 300, 2, 1, 300, 1, 6, 267, 1, 5, 268, 3, 4, 269, 3, 3,
/* 35 */ 77, 2, 96, 1, 2, 96, 2, 9, 49, 1, 12, 50, 1, 10, 51, 3, 8, 52, 4, 8, 53, 3, 9, 54, 3, 12, 55, 1, 9, 56, 2, 9, 57, 4, 7, 48, 1, 2, 48, 1, 9, 45, 3, 19, 8, 3, 4, 8, 1, 1, 8, 1, 3, 8, 1, 3, 8, 4, 1, 8, 1, 2, 8, 1, 5, 277, 1, 1, 277, 1, 1, 277, 1, 1, 277, 1, 5, 278, 4, 1, 278, 1, 1, 278, 1, 4, 280, 1, 1, 280, 1, 1, 280, 1, 2, 280, 1, 4, 300, 1, 1, 300, 2, 1, 300, 1, 6, 267, 1, 5, 268, 3, 4, 269, 3, 3,
/* 36 */ 79, 16, 49, 1, 11, 50, 1, 14, 51, 1, 10, 52, 1, 11, 53, 1, 8, 54, 1, 2, 54, 1, 10, 55, 1, 9, 56, 1, 2, 56, 1, 11, 57, 1, 7, 48, 1, 2, 48, 1, 22, 61, 3, 6, 8, 1, 2, 8, 1, 1, 8, 3, 1, 8, 1, 3, 8, 1, 1, 8, 1, 4, 8, 1, 1, 8, 4, 5, 277, 1, 1, 277, 1, 1, 277, 1, 1, 277, 2, 4, 278, 1, 2, 278, 1, 1, 278, 1, 1, 278, 1, 4, 280, 3, 1, 280, 1, 2, 280, 1, 4, 300, 1, 2, 300, 1, 1, 300, 1, 6, 267, 1, 5, 268, 1, 1, 268, 1, 10,
/* 37 */ 79, 16, 49, 1, 11, 50, 1, 14, 51, 1, 10, 52, 1, 11, 53, 1, 8, 54, 1, 2, 54, 1, 10, 55, 1, 9, 56, 1, 2, 56, 1, 11, 57, 1, 7, 48, 1, 2, 48, 1, 22, 61, 3, 6, 8, 1, 2, 8, 1, 1, 8, 3, 1, 8, 1, 3, 8, 1, 1, 8, 1, 4, 8, 1, 1, 8, 4, 5, 277, 1, 1, 277, 1, 1, 277, 1, 1, 277, 2, 4, 278, 1, 2, 278, 1, 1, 278, 1, 1, 278, 1, 4, 280, 3, 1, 280, 1, 2, 280, 1, 4, 300, 1, 2, 300, 1, 1, 300, 1, 6, 267, 1, 5, 268, 1, 1, 268, 1, 10,
/* 38 */ 77, 16, 49, 1, 10, 50, 1, 15, 51, 1, 10, 52, 1, 11, 53, 1, 8, 54, 1, 2, 54, 1, 9, 55, 1, 10, 56, 1, 2, 56, 1, 11, 57, 1, 7, 48, 1, 2, 48, 1, 31, 8, 1, 2, 8, 1, 1, 8, 1, 1, 8, 1, 1, 8, 1, 3, 8, 2, 5, 8, 1, 1, 8, 1, 8, 277, 1, 1, 277, 1, 1, 277, 1, 2, 277, 1, 4, 278, 1, 2, 278, 1, 1, 278, 1, 1, 278, 1, 4, 280, 1, 3, 280, 1, 2, 280, 1, 4, 300, 1, 2, 300, 1, 1, 300, 1, 5, 267, 1, 5, 268, 1, 3, 268, 1, 9,
/* 39 */ 77, 16, 49, 1, 10, 50, 1, 15, 51, 1, 10, 52, 1, 11, 53, 1, 8, 54, 1, 2, 54, 1, 9, 55, 1, 10, 56, 1, 2, 56, 1, 11, 57, 1, 7, 48, 1, 2, 48, 1, 31, 8, 1, 2, 8, 1, 1, 8, 1, 1, 8, 1, 1, 8, 1, 3, 8, 2, 5, 8, 1, 1, 8, 1, 8, 277, 1, 1, 277, 1, 1, 277, 1, 2, 277, 1, 4, 278, 1, 2, 278, 1, 1, 278, 1, 1, 278, 1, 4, 280, 1, 3, 280, 1, 2, 280, 1, 4, 300, 1, 2, 300, 1, 1, 300, 1, 5, 267, 1, 5, 268, 1, 3, 268, 1, 9,
/* 40 */ 61, 16, 49, 1, 10, 50, 4, 9, 51, 3, 11, 52, 1, 8, 53, 3, 10, 54, 2, 9, 55, 1, 12, 56, 2, 9, 57, 4, 7, 48, 4, 31, 8, 3, 2, 8, 3, 2, 8, 2, 1, 8, 1, 1, 8, 1, 1, 8, 4, 1, 8, 1, 8, 277, 1, 1, 277, 1, 1, 277, 1, 1, 277, 2, 4, 278, 1, 2, 278, 1, 2, 278, 1, 5, 280, 1, 4, 280, 2, 5, 300, 1, 2, 300, 1, 1, 300, 3, 3, 267, 1, 19,
/* 41 */ 61, 16, 49, 1, 10, 50, 4, 9, 51, 3, 11, 52, 1, 8, 53, 3, 10, 54, 2, 9, 55, 1, 12, 56, 2, 9, 57, 4, 7, 48, 4, 31, 8, 3, 2, 8, 3, 2, 8, 2, 1, 8, 1, 1, 8, 1, 1, 8, 4, 1, 8, 1, 8, 277, 1, 1, 277, 1, 1, 277, 1, 1, 277, 2, 4, 278, 1, 2, 278, 1, 2, 278, 1, 5, 280, 1, 4, 280, 2, 5, 300, 1, 2, 300, 1, 1, 300, 3, 3, 267, 1, 19,
/* 42 */ 1, 255,
/* 43 */ 1, 255,
/* 44 */ 1, 255,
/* 45 */ 1, 255,
/* 46 */ 1, 255,
/* 47 */ 1, 255,
/* 48 */ 1, 255,
/* 49 */ 1, 255,
/* 50 */ 53, 1, 9, 3, 2, 9, 2, 2, 9, 3, 8, 113, 3, 8, 119, 1, 3, 119, 1, 5, 101, 4, 10, 114, 3, 9, 116, 5, 7, 121, 1, 3, 121, 1, 7, 117, 1, 2, 117, 1, 10, 105, 1, 10, 111, 2, 9, 112, 4, 8, 91, 3, 10, 93, 3, 32, 127, 2, 5, 127, 1, 4, 279, 3, 9, 281, 3, 1, 281, 3, 7, 263, 4, 5, 264, 2, 4, 265, 4, 10,
/* 51 */ 53, 1, 9, 3, 2, 9, 2, 2, 9, 3, 8, 113, 3, 8, 119, 1, 3, 119, 1, 5, 101, 4, 10, 114, 3, 9, 116, 5, 7, 121, 1, 3, 121, 1, 7, 117, 1, 2, 117, 1, 10, 105, 1, 10, 111, 2, 9, 112, 4, 8, 91, 3, 10, 93, 3, 32, 127, 2, 5, 127, 1, 4, 279, 3, 9, 281, 3, 1, 281, 3, 7, 263, 4, 5, 264, 2, 4, 265, 4, 10,
/* 52 */ 79, 2, 9, 1, 2, 9, 1, 2, 9, 1, 1, 9, 1, 2, 9, 1, 6, 113, 1, 3, 113, 1, 7, 119, 1, 3, 119, 1, 5, 101, 1, 13, 114, 1, 2, 114, 1, 10, 116, 1, 9, 121, 1, 3, 121, 1, 7, 117, 1, 2, 117, 1, 10, 105, 1, 9, 111, 1, 2, 111, 1, 8, 112, 1, 2, 112, 1, 8, 91, 1, 14, 93, 1, 32, 127, 1, 1, 127, 1, 1, 127, 2, 1, 127, 1, 4, 279, 1, 3, 279, 3, 5, 281, 1, 1, 281, 1, 1, 281, 1, 2, 281, 1, 9, 263, 1, 4, 264, 1, 2, 264, 1, 3, 265, 1, 2, 265, 1, 10,
/* 53 */ 79, 2, 9, 1, 2, 9, 1, 2, 9, 1, 1, 9, 1, 2, 9, 1, 6, 113, 1, 3, 113, 1, 7, 119, 1, 3, 119, 1, 5, 101, 1, 13, 114, 1, 2, 114, 1, 10, 116, 1, 9, 121, 1, 3, 121, 1, 7, 117, 1, 2, 117, 1, 10, 105, 1, 9, 111, 1, 2, 111, 1, 8, 112, 1, 2, 112, 1, 8, 91, 1, 14, 93, 1, 32, 127, 1, 1, 127, 1, 1, 127, 2, 1, 127, 1, 4, 279, 1, 3, 279, 3, 5, 281, 1, 1, 281, 1, 1, 281, 1, 2, 281, 1, 9, 263, 1, 4, 264, 1, 2, 264, 1, 3, 265, 1, 2, 265, 1, 10,
/* 54 */ 73, 2, 9, 1, 2, 9, 1, 2, 9, 1, 1, 9, 3, 7, 113, 1, 3, 113, 1, 7, 119, 1, 3, 119, 1, 5, 101, 4, 10, 114, 3, 11, 116, 1, 10, 121, 1, 1, 121, 1, 8, 117, 1, 2, 117, 1, 10, 105, 1, 9, 111, 1, 2, 111, 1, 8, 112, 1, 2, 112, 1, 8, 91, 1, 14, 93, 1, 32, 127, 1, 1, 127, 1, 1, 127, 1, 2, 127, 1, 4, 279, 3, 1, 279, 1, 2, 279, 1, 4, 281, 1, 1, 281, 1, 1, 281, 1, 2, 281, 1, 9, 263, 1, 5, 264, 2, 4, 265, 4, 10,
/* 55 */ 73, 2, 9, 1, 2, 9, 1, 2, 9, 1, 1, 9, 3, 7, 113, 1, 3, 113, 1, 7, 119, 1, 3, 119, 1, 5, 101, 4, 10, 114, 3, 11, 116, 1, 10, 121, 1, 1, 121, 1, 8, 117, 1, 2, 117, 1, 10, 105, 1, 9, 111, 1, 2, 111, 1, 8, 112, 1, 2, 112, 1, 8, 91, 1, 14, 93, 1, 32, 127, 1, 1, 127, 1, 1, 127, 1, 2, 127, 1, 4, 279, 3, 1, 279, 1, 2, 279, 1, 4, 281, 1, 1, 281, 1, 1, 281, 1, 2, 281, 1, 9, 263, 1, 5, 264, 2, 4, 265, 4, 10,
/* 56 */ 75, 2, 9, 1, 2, 9, 4, 1, 9, 1, 2, 9, 1, 6, 113, 1, 1, 113, 1, 1, 113, 1, 7, 119, 1, 1, 119, 1, 1, 119, 1, 5, 101, 1, 13, 114, 1, 2, 114, 1, 10, 116, 1, 11, 121, 1, 9, 117, 1, 2, 117, 1, 10, 105, 1, 9, 111, 1, 2, 111, 1, 8, 112, 4, 8, 91, 1, 14, 93, 1, 32, 127, 1, 1, 127, 1, 1, 127, 2, 1, 127, 1, 4, 279, 1, 3, 279, 1, 2, 279, 1, 4, 281, 3, 1, 281, 1, 2, 281, 1, 8, 263, 1, 5, 264, 1, 2, 264, 1, 6, 265, 1, 10,
/* 57 */ 75, 2, 9, 1, 2, 9, 4, 1, 9, 1, 2, 9, 1, 6, 113, 1, 1, 113, 1, 1, 113, 1, 7, 119, 1, 1, 119, 1, 1, 119, 1, 5, 101, 1, 13, 114, 1, 2, 114, 1, 10, 116, 1, 11, 121, 1, 9, 117, 1, 2, 117, 1, 10, 105, 1, 9, 111, 1, 2, 111, 1, 8, 112, 4, 8, 91, 1, 14, 93, 1, 32, 127, 1, 1, 127, 1, 1, 127, 2, 1, 127, 1, 4, 279, 1, 3, 279, 1, 2, 279, 1, 4, 281, 3, 1, 281, 1, 2, 281, 1, 8, 263, 1, 5, 264, 1, 2, 264, 1, 6, 265, 1, 10,
/* 58 */ 79, 2, 9, 1, 2, 9, 1, 2, 9, 1, 1, 9, 1, 2, 9, 1, 6, 113, 1, 2, 113, 1, 8, 119, 1, 1, 119, 1, 1, 119, 1, 5, 101, 1, 13, 114, 1, 2, 114, 1, 10, 116, 1, 11, 121, 1, 9, 117, 1, 2, 117, 1, 10, 105, 1, 9, 111, 1, 2, 111, 1, 8, 112, 1, 11, 91, 1, 14, 93, 1, 11, 13, 3, 7, 13, 1, 10, 127, 1, 1, 127, 1, 1, 127, 1, 2, 127, 1, 4, 279, 1, 3, 279, 1, 2, 279, 1, 4, 281, 1, 3, 281, 1, 2, 281, 1, 7, 263, 1, 6, 264, 1, 2, 264, 1, 6, 265, 1, 10,
/* 59 */ 79, 2, 9, 1, 2, 9, 1, 2, 9, 1, 1, 9, 1, 2, 9, 1, 6, 113, 1, 2, 113, 1, 8, 119, 1, 1, 119, 1, 1, 119, 1, 5, 101, 1, 13, 114, 1, 2, 114, 1, 10, 116, 1, 11, 121, 1, 9, 117, 1, 2, 117, 1, 10, 105, 1, 9, 111, 1, 2, 111, 1, 8, 112, 1, 11, 91, 1, 14, 93, 1, 11, 13, 3, 7, 13, 1, 10, 127, 1, 1, 127, 1, 1, 127, 1, 2, 127, 1, 4, 279, 1, 3, 279, 1, 2, 279, 1, 4, 281, 1, 3, 281, 1, 2, 281, 1, 7, 263, 1, 6, 264, 1, 2, 264, 1, 6, 265, 1, 10,
/* 60 */ 69, 2, 9, 1, 2, 9, 1, 2, 9, 1, 1, 9, 3, 8, 113, 2, 1, 113, 1, 8, 119, 1, 1, 119, 1, 6, 101, 4, 10, 114, 1, 2, 114, 1, 10, 116, 1, 11, 121, 1, 10, 117, 2, 11, 105, 1, 10, 111, 2, 9, 112, 1, 11, 91, 3, 10, 93, 3, 11, 13, 1, 3, 13, 3, 3, 13, 1, 3, 13, 2, 5, 127, 2, 2, 127, 2, 1, 127, 1, 4, 279, 3, 1, 279, 1, 2, 279, 1, 4, 281, 1, 3, 281, 3, 7, 263, 1, 8, 264, 2, 4, 265, 4, 10,
/* 61 */ 69, 2, 9, 1, 2, 9, 1, 2, 9, 1, 1, 9, 3, 8, 113, 2, 1, 113, 1, 8, 119, 1, 1, 119, 1, 6, 101, 4, 10, 114, 1, 2, 114, 1, 10, 116, 1, 11, 121, 1, 10, 117, 2, 11, 105, 1, 10, 111, 2, 9, 112, 1, 11, 91, 3, 10, 93, 3, 11, 13, 1, 3, 13, 3, 3, 13, 1, 3, 13, 2, 5, 127, 2, 2, 127, 2, 1, 127, 1, 4, 279, 3, 1, 279, 1, 2, 279, 1, 4, 281, 1, 3, 281, 3, 7, 263, 1, 8, 264, 2, 4, 265, 4, 10,
/* 62 */ 13, 167, 13, 3, 1, 13, 1, 2, 13, 1, 1, 13, 3, 2, 13, 1, 68, 270, 1, 4,
/* 63 */ 13, 167, 13, 3, 1, 13, 1, 2, 13, 1, 1, 13, 3, 2, 13, 1, 68, 270, 1, 4,
/* 64 */ 13, 167, 13, 1, 3, 13, 1, 2, 13, 1, 2, 13, 1, 3, 13, 1, 67, 270, 3, 3,
/* 65 */ 13, 167, 13, 1, 3, 13, 1, 2, 13, 1, 2, 13, 1, 3, 13, 1, 67, 270, 3, 3,
/* 66 */ 13, 167, 13, 1, 3, 13, 1, 2, 13, 1, 2, 13, 1, 3, 13, 1, 68, 270, 1, 4,
/* 67 */ 13, 167, 13, 1, 3, 13, 1, 2, 13, 1, 2, 13, 1, 3, 13, 1, 68, 270, 1, 4,
/* 68 */ 11, 167, 13, 3, 1, 13, 1, 2, 13, 1, 3, 13, 2, 1, 13, 1, 73,
/* 69 */ 11, 167, 13, 3, 1, 13, 1, 2, 13, 1, 3, 13, 2, 1, 13, 1, 73,
/* 70 */ 37, 2, 301, 2, 21, 97, 2, 10, 115, 4, 7, 100, 3, 10, 102, 4, 9, 103, 3, 8, 104, 1, 2, 104, 1, 8, 106, 4, 6, 107, 1, 2, 107, 1, 9, 108, 1, 25, 39, 1, 10, 92, 1, 68, 260, 1, 2, 260, 1, 5, 261, 4, 3, 262, 3, 10,
/* 71 */ 37, 2, 301, 2, 21, 97, 2, 10, 115, 4, 7, 100, 3, 10, 102, 4, 9, 103, 3, 8, 104, 1, 2, 104, 1, 8, 106, 4, 6, 107, 1, 2, 107, 1, 9, 108, 1, 25, 39, 1, 10, 92, 1, 68, 260, 1, 2, 260, 1, 5, 261, 4, 3, 262, 3, 10,
/* 72 */ 49, 1, 301, 1, 2, 301, 1, 1, 301, 3, 2, 301, 4, 1, 301, 3, 5, 97, 1, 2, 97, 1, 9, 115, 1, 10, 100, 1, 2, 100, 1, 9, 102, 1, 11, 103, 1, 11, 104, 1, 2, 104, 1, 11, 106, 1, 6, 107, 1, 1, 107, 1, 10, 108, 1, 25, 39, 1, 10, 92, 1, 68, 260, 1, 2, 260, 1, 5, 261, 1, 5, 262, 1, 13,
/* 73 */ 49, 1, 301, 1, 2, 301, 1, 1, 301, 3, 2, 301, 4, 1, 301, 3, 5, 97, 1, 2, 97, 1, 9, 115, 1, 10, 100, 1, 2, 100, 1, 9, 102, 1, 11, 103, 1, 11, 104, 1, 2, 104, 1, 11, 106, 1, 6, 107, 1, 1, 107, 1, 10, 108, 1, 25, 39, 1, 10, 92, 1, 68, 260, 1, 2, 260, 1, 5, 261, 1, 5, 262, 1, 13,
/* 74 */ 45, 1, 301, 1, 7, 301, 1, 1, 301, 1, 2, 301, 1, 1, 301, 1, 7, 97, 1, 2, 97, 1, 9, 115, 4, 7, 100, 1, 2, 100, 1, 9, 102, 4, 8, 103, 1, 1, 103, 2, 8, 104, 4, 11, 106, 1, 6, 107, 2, 11, 108, 1, 12, 59, 1, 24, 92, 1, 67, 260, 4, 5, 261, 3, 3, 262, 3, 11,
/* 75 */ 45, 1, 301, 1, 7, 301, 1, 1, 301, 1, 2, 301, 1, 1, 301, 1, 7, 97, 1, 2, 97, 1, 9, 115, 4, 7, 100, 1, 2, 100, 1, 9, 102, 4, 8, 103, 1, 1, 103, 2, 8, 104, 4, 11, 106, 1, 6, 107, 2, 11, 108, 1, 12, 59, 1, 24, 92, 1, 67, 260, 4, 5, 261, 3, 3, 262, 3, 11,
/* 76 */ 45, 1, 301, 1, 4, 301, 4, 1, 301, 4, 1, 301, 3, 5, 97, 4, 12, 115, 1, 7, 100, 1, 2, 100, 1, 9, 102, 1, 11, 103, 1, 2, 103, 1, 8, 104, 1, 2, 104, 1, 11, 106, 1, 6, 107, 1, 1, 107, 1, 10, 108, 1, 37, 92, 1, 70, 260, 1, 8, 261, 1, 2, 262, 1, 2, 262, 1, 10,
/* 77 */ 45, 1, 301, 1, 4, 301, 4, 1, 301, 4, 1, 301, 3, 5, 97, 4, 12, 115, 1, 7, 100, 1, 2, 100, 1, 9, 102, 1, 11, 103, 1, 2, 103, 1, 8, 104, 1, 2, 104, 1, 11, 106, 1, 6, 107, 1, 1, 107, 1, 10, 108, 1, 37, 92, 1, 70, 260, 1, 8, 261, 1, 2, 262, 1, 2, 262, 1, 10,
/* 78 */ 55, 1, 301, 1, 2, 301, 1, 1, 301, 1, 2, 301, 1, 1, 301, 1, 6, 301, 1, 5, 97, 1, 2, 97, 1, 12, 115, 1, 7, 100, 1, 2, 100, 1, 9, 102, 1, 11, 103, 1, 2, 103, 1, 8, 104, 1, 2, 104, 1, 8, 106, 1, 2, 106, 1, 6, 107, 1, 2, 107, 1, 9, 108, 1, 12, 59, 1, 25, 92, 1, 69, 260, 1, 8, 261, 1, 2, 262, 1, 2, 262, 1, 10,
/* 79 */ 55, 1, 301, 1, 2, 301, 1, 1, 301, 1, 2, 301, 1, 1, 301, 1, 6, 301, 1, 5, 97, 1, 2, 97, 1, 12, 115, 1, 7, 100, 1, 2, 100, 1, 9, 102, 1, 11, 103, 1, 2, 103, 1, 8, 104, 1, 2, 104, 1, 8, 106, 1, 2, 106, 1, 6, 107, 1, 2, 107, 1, 9, 108, 1, 12, 59, 1, 25, 92, 1, 69, 260, 1, 8, 261, 1, 2, 262, 1, 2, 262, 1, 10,
/* 80 */ 43, 2, 301, 2, 2, 301, 4, 1, 301, 1, 4, 301, 3, 5, 97, 1, 2, 97, 1, 9, 115, 4, 7, 100, 3, 10, 102, 1, 12, 103, 2, 9, 104, 1, 2, 104, 1, 9, 106, 2, 7, 107, 1, 2, 107, 1, 9, 108, 4, 9, 59, 1, 25, 92, 1, 69, 260, 1, 5, 261, 3, 4, 262, 2, 11,
/* 81 */ 43, 2, 301, 2, 2, 301, 4, 1, 301, 1, 4, 301, 3, 5, 97, 1, 2, 97, 1, 9, 115, 4, 7, 100, 3, 10, 102, 1, 12, 103, 2, 9, 104, 1, 2, 104, 1, 9, 106, 2, 7, 107, 1, 2, 107, 1, 9, 108, 4, 9, 59, 1, 25, 92, 1, 69, 260, 1, 5, 261, 3, 4, 262, 2, 11,
/* 82 */ 1, 255,
/* 83 */ 1, 255,
/* 84 */ 1, 255,
/* 85 */ 1, 255,
/* 86 */ 1, 255,
/* 87 */ 1, 255,
/* 88 */ 1, 255,
/* 89 */ 1, 255,
/* 90 */ 53, 1, 304, 3, 8, 304, 1, 1, 304, 1, 8, 323, 1, 10, 122, 4, 7, 120, 1, 3, 120, 1, 9, 99, 2, 8, 118, 1, 3, 118, 1, 8, 98, 3, 9, 110, 1, 2, 110, 1, 8, 109, 1, 3, 109, 1, 34, 47, 1, 11, 303, 4, 1, 303, 1, 4, 303, 1, 2, 303, 3, 1, 303, 1, 28, 273, 2, 22, 257, 1, 6, 258, 3, 4, 259, 3, 4, 271, 6, 1,
/* 91 */ 53, 1, 304, 3, 8, 304, 1, 1, 304, 1, 8, 323, 1, 10, 122, 4, 7, 120, 1, 3, 120, 1, 9, 99, 2, 8, 118, 1, 3, 118, 1, 8, 98, 3, 9, 110, 1, 2, 110, 1, 8, 109, 1, 3, 109, 1, 34, 47, 1, 11, 303, 4, 1, 303, 1, 4, 303, 1, 2, 303, 3, 1, 303, 1, 28, 273, 2, 22, 257, 1, 6, 258, 3, 4, 259, 3, 4, 271, 6, 1,
/* 92 */ 63, 1, 304, 1, 3, 304, 1, 3, 304, 1, 1, 304, 1, 2, 304, 1, 7, 323, 1, 14, 122, 1, 7, 120, 1, 3, 120, 1, 8, 99, 1, 2, 99, 1, 7, 118, 1, 3, 118, 1, 8, 98, 1, 2, 98, 1, 8, 110, 2, 1, 110, 1, 8, 109, 2, 1, 109, 2, 34, 47, 1, 11, 303, 1, 4, 303, 1, 6, 303, 1, 4, 303, 1, 27, 273, 4, 21, 257, 1, 9, 258, 1, 6, 259, 1, 3, 271, 1, 2, 271, 1, 1, 271, 1, 1,
/* 93 */ 63, 1, 304, 1, 3, 304, 1, 3, 304, 1, 1, 304, 1, 2, 304, 1, 7, 323, 1, 14, 122, 1, 7, 120, 1, 3, 120, 1, 8, 99, 1, 2, 99, 1, 7, 118, 1, 3, 118, 1, 8, 98, 1, 2, 98, 1, 8, 110, 2, 1, 110, 1, 8, 109, 2, 1, 109, 2, 34, 47, 1, 11, 303, 1, 4, 303, 1, 6, 303, 1, 4, 303, 1, 27, 273, 4, 21, 257, 1, 9, 258, 1, 6, 259, 1, 3, 271, 1, 2, 271, 1, 1, 271, 1, 1,
/* 94 */ 61, 1, 304, 3, 1, 304, 1, 5, 304, 2, 1, 304, 2, 5, 323, 1, 14, 122, 1, 9, 120, 1, 1, 120, 1, 9, 99, 1, 10, 118, 1, 3, 118, 1, 8, 98, 3, 9, 110, 1, 1, 110, 2, 8, 109, 1, 1, 109, 1, 1, 109, 1, 33, 47, 1, 12, 303, 4, 1, 303, 4, 1, 303, 1, 1, 303, 3, 1, 303, 3, 25, 273, 6, 20, 257, 1, 8, 258, 1, 4, 259, 3, 4, 271, 1, 2, 271, 1, 1, 271, 1, 1,
/* 95 */ 61, 1, 304, 3, 1, 304, 1, 5, 304, 2, 1, 304, 2, 5, 323, 1, 14, 122, 1, 9, 120, 1, 1, 120, 1, 9, 99, 1, 10, 118, 1, 3, 118, 1, 8, 98, 3, 9, 110, 1, 1, 110, 2, 8, 109, 1, 1, 109, 1, 1, 109, 1, 33, 47, 1, 12, 303, 4, 1, 303, 4, 1, 303, 1, 1, 303, 3, 1, 303, 3, 25, 273, 6, 20, 257, 1, 8, 258, 1, 4, 259, 3, 4, 271, 1, 2, 271, 1, 1, 271, 1, 1,
/* 96 */ 57, 3, 304, 1, 1, 304, 3, 1, 304, 1, 1, 304, 1, 2, 304, 1, 7, 323, 1, 12, 122, 1, 11, 120, 1, 10, 99, 1, 10, 118, 1, 3, 118, 1, 8, 98, 1, 2, 98, 1, 8, 110, 1, 2, 110, 1, 8, 109, 1, 3, 109, 1, 33, 47, 1, 15, 303, 1, 1, 303, 1, 2, 303, 1, 1, 303, 1, 1, 303, 1, 4, 303, 1, 28, 273, 2, 22, 257, 1, 7, 258, 1, 8, 259, 1, 10,
/* 97 */ 57, 3, 304, 1, 1, 304, 3, 1, 304, 1, 1, 304, 1, 2, 304, 1, 7, 323, 1, 12, 122, 1, 11, 120, 1, 10, 99, 1, 10, 118, 1, 3, 118, 1, 8, 98, 1, 2, 98, 1, 8, 110, 1, 2, 110, 1, 8, 109, 1, 3, 109, 1, 33, 47, 1, 15, 303, 1, 1, 303, 1, 2, 303, 1, 1, 303, 1, 1, 303, 1, 4, 303, 1, 28, 273, 2, 22, 257, 1, 7, 258, 1, 8, 259, 1, 10,
/* 98 */ 69, 3, 304, 1, 1, 304, 1, 1, 304, 1, 1, 304, 1, 1, 304, 1, 2, 304, 1, 8, 323, 1, 10, 122, 1, 11, 120, 1, 1, 120, 1, 9, 99, 1, 2, 99, 1, 8, 118, 1, 1, 118, 1, 9, 98, 1, 2, 98, 1, 8, 110, 1, 2, 110, 1, 8, 109, 1, 3, 109, 1, 8, 44, 1, 11, 46, 1, 11, 47, 1, 16, 303, 1, 1, 303, 1, 2, 303, 1, 1, 303, 1, 1, 303, 1, 4, 303, 1, 28, 273, 2, 22, 257, 1, 6, 258, 1, 9, 259, 1, 3, 271, 5, 2,
/* 99 */ 69, 3, 304, 1, 1, 304, 1, 1, 304, 1, 1, 304, 1, 1, 304, 1, 2, 304, 1, 8, 323, 1, 10, 122, 1, 11, 120, 1, 1, 120, 1, 9, 99, 1, 2, 99, 1, 8, 118, 1, 1, 118, 1, 9, 98, 1, 2, 98, 1, 8, 110, 1, 2, 110, 1, 8, 109, 1, 3, 109, 1, 8, 44, 1, 11, 46, 1, 11, 47, 1, 16, 303, 1, 1, 303, 1, 2, 303, 1, 1, 303, 1, 1, 303, 1, 4, 303, 1, 28, 273, 2, 22, 257, 1, 6, 258, 1, 9, 259, 1, 3, 271, 5, 2,
/* 100 */ 59, 1, 304, 3, 1, 304, 1, 1, 304, 1, 1, 304, 1, 1, 304, 1, 3, 304, 1, 18, 122, 4, 7, 120, 1, 3, 120, 1, 9, 99, 2, 10, 118, 1, 10, 98, 3, 9, 110, 1, 2, 110, 1, 8, 109, 1, 3, 109, 1, 8, 44, 1, 23, 47, 1, 13, 303, 4, 1, 303, 1, 2, 303, 1, 1, 303, 1, 1, 303, 1, 5, 303, 2, 26, 273, 2, 22, 257, 1, 6, 258, 4, 3, 259, 3, 8, 271, 1, 2,
/* 101 */ 59, 1, 304, 3, 1, 304, 1, 1, 304, 1, 1, 304, 1, 1, 304, 1, 3, 304, 1, 18, 122, 4, 7, 120, 1, 3, 120, 1, 9, 99, 2, 10, 118, 1, 10, 98, 3, 9, 110, 1, 2, 110, 1, 8, 109, 1, 3, 109, 1, 8, 44, 1, 23, 47, 1, 13, 303, 4, 1, 303, 1, 2, 303, 1, 1, 303, 1, 1, 303, 1, 5, 303, 2, 26, 273, 2, 22, 257, 1, 6, 258, 4, 3, 259, 3, 8, 271, 1, 2,
/* 102 */ 3, 252, 271, 1, 2,
/* 103 */ 3, 252, 271, 1, 2,
/* 104 */ 3, 248, 271, 4, 3,
/* 105 */ 3, 248, 271, 4, 3,
/* 106 */ 1, 255,
/* 107 */ 1, 255,
/* 108 */ 3, 251, 271, 1, 3,
/* 109 */ 3, 251, 271, 1, 3,
/* 110 */ 37, 2, 306, 2, 2, 306, 1, 7, 306, 1, 19, 308, 2, 2, 308, 1, 2, 308, 1, 8, 32, 85, 7, 307, 2, 2, 307, 1, 2, 307, 1, 20, 305, 2, 2, 305, 1, 7, 305, 1, 8, 276, 1, 11, 274, 2, 11, 275, 1, 13, 256, 4, 15, 271, 5, 1,
/* 111 */ 39, 2, 306, 2, 2, 306, 1, 7, 306, 1, 19, 308, 2, 2, 308, 1, 2, 308, 1, 8, 32, 2, 81, 32, 2, 7, 307, 2, 2, 307, 1, 2, 307, 1, 20, 305, 2, 2, 305, 1, 7, 305, 1, 8, 276, 1, 11, 274, 2, 11, 275, 1, 13, 256, 4, 15, 271, 5, 1,
/* 112 */ 51, 1, 306, 1, 4, 306, 1, 4, 306, 2, 1, 306, 1, 18, 308, 1, 2, 308, 1, 1, 308, 1, 2, 308, 1, 8, 32, 2, 81, 32, 2, 6, 307, 1, 2, 307, 1, 1, 307, 1, 2, 307, 1, 19, 305, 1, 4, 305, 1, 4, 305, 2, 1, 305, 1, 7, 276, 2, 11, 274, 2, 11, 275, 2, 12, 256, 1, 2, 256, 1, 14, 271, 1, 2, 271, 1, 3,
/* 113 */ 51, 1, 306, 1, 4, 306, 1, 4, 306, 2, 1, 306, 1, 18, 308, 1, 2, 308, 1, 1, 308, 1, 2, 308, 1, 8, 32, 2, 81, 32, 2, 6, 307, 1, 2, 307, 1, 1, 307, 1, 2, 307, 1, 19, 305, 1, 4, 305, 1, 4, 305, 2, 1, 305, 1, 7, 276, 2, 11, 274, 2, 11, 275, 2, 12, 256, 1, 2, 256, 1, 14, 271, 1, 2, 271, 1, 3,
/* 114 */ 49, 1, 306, 1, 3, 306, 3, 2, 306, 1, 3, 306, 1, 18, 308, 1, 2, 308, 1, 1, 308, 1, 1, 308, 3, 7, 32, 2, 81, 32, 2, 6, 307, 1, 2, 307, 1, 1, 307, 1, 1, 307, 3, 18, 305, 1, 3, 305, 3, 2, 305, 1, 3, 305, 1, 6, 276, 6, 8, 274, 2, 8, 275, 6, 11, 256, 1, 2, 256, 1, 14, 271, 1, 6,
/* 115 */ 49, 1, 306, 1, 3, 306, 3, 2, 306, 1, 3, 306, 1, 18, 308, 1, 2, 308, 1, 1, 308, 1, 1, 308, 3, 7, 32, 2, 81, 32, 2, 6, 307, 1, 2, 307, 1, 1, 307, 1, 1, 307, 3, 18, 305, 1, 3, 305, 3, 2, 305, 1, 3, 305, 1, 6, 276, 6, 8, 274, 2, 8, 275, 6, 11, 256, 1, 2, 256, 1, 14, 271, 1, 6,
/* 116 */ 43, 1, 306, 1, 4, 306, 1, 3, 306, 1, 3, 306, 1, 18, 308, 4, 1, 308, 1, 2, 308, 1, 8, 32, 2, 81, 32, 2, 6, 307, 4, 1, 307, 1, 2, 307, 1, 19, 305, 1, 4, 305, 1, 3, 305, 1, 3, 305, 1, 6, 276, 6, 6, 274, 6, 6, 275, 6, 11, 256, 1, 2, 256, 1, 21,
/* 117 */ 43, 1, 306, 1, 4, 306, 1, 3, 306, 1, 3, 306, 1, 18, 308, 4, 1, 308, 1, 2, 308, 1, 8, 32, 2, 81, 32, 2, 6, 307, 4, 1, 307, 1, 2, 307, 1, 19, 305, 1, 4, 305, 1, 3, 305, 1, 3, 305, 1, 6, 276, 6, 6, 274, 6, 6, 275, 6, 11, 256, 1, 2, 256, 1, 21,
/* 118 */ 49, 1, 306, 1, 4, 306, 1, 3, 306, 1, 3, 306, 1, 18, 308, 1, 2, 308, 1, 1, 308, 1, 2, 308, 1, 8, 32, 2, 81, 32, 2, 6, 307, 1, 2, 307, 1, 1, 307, 1, 2, 307, 1, 19, 305, 1, 4, 305, 1, 3, 305, 1, 3, 305, 1, 7, 276, 2, 10, 274, 4, 10, 275, 2, 12, 256, 1, 2, 256, 1, 14, 271, 5, 2,
/* 119 */ 49, 1, 306, 1, 4, 306, 1, 3, 306, 1, 3, 306, 1, 18, 308, 1, 2, 308, 1, 1, 308, 1, 2, 308, 1, 8, 32, 2, 81, 32, 2, 6, 307, 1, 2, 307, 1, 1, 307, 1, 2, 307, 1, 19, 305, 1, 4, 305, 1, 3, 305, 1, 3, 305, 1, 7, 276, 2, 10, 274, 4, 10, 275, 2, 12, 256, 1, 2, 256, 1, 14, 271, 5, 2,
/* 120 */ 49, 2, 306, 2, 3, 306, 2, 1, 306, 1, 3, 306, 1, 18, 308, 1, 2, 308, 1, 1, 308, 1, 3, 308, 2, 6, 32, 2, 81, 32, 2, 6, 307, 1, 2, 307, 1, 1, 307, 1, 3, 307, 2, 18, 305, 2, 3, 305, 2, 1, 305, 1, 3, 305, 1, 8, 276, 1, 11, 274, 2, 11, 275, 1, 13, 256, 4, 8, 266, 1, 9, 271, 1, 2,
/* 121 */ 47, 2, 306, 2, 3, 306, 2, 1, 306, 1, 3, 306, 1, 18, 308, 1, 2, 308, 1, 1, 308, 1, 3, 308, 2, 6, 32, 85, 6, 307, 1, 2, 307, 1, 1, 307, 1, 3, 307, 2, 18, 305, 2, 3, 305, 2, 1, 305, 1, 3, 305, 1, 8, 276, 1, 11, 274, 2, 11, 275, 1, 13, 256, 4, 8, 266, 1, 9, 271, 1, 2,
/* 122 */ 1, 255,
/* 123 */ 1, 255,
/* 124 */ 1, 255,
/* 125 */ 1, 255,
/* 126 */ 1, 255,
/* 127 */ 1, 255,
/* 128 */ 1, 255,
/* 129 */ 1, 255,
/* 130 */ 41, 1, 12, 10, 2, 33, 10, 2, 34, 10, 2, 35, 10, 2, 36, 10, 2, 38, 10, 2, 40, 10, 2, 41, 10, 2, 42, 10, 2, 43, 10, 2, 58, 10, 2, 60, 10, 2, 62, 10, 2, 63, 10, 2, 64, 10, 2, 94, 10, 2, 95, 10, 2, 123, 10, 2, 124, 10, 2, 125, 10, 16,
/* 131 */ 41, 1, 12, 10, 2, 33, 10, 2, 34, 10, 2, 35, 10, 2, 36, 10, 2, 38, 10, 2, 40, 10, 2, 41, 10, 2, 42, 10, 2, 43, 10, 2, 58, 10, 2, 60, 10, 2, 62, 10, 2, 63, 10, 2, 64, 10, 2, 94, 10, 2, 95, 10, 2, 123, 10, 2, 124, 10, 2, 125, 10, 16,
/* 132 */ 1, 255,
/* 133 */ 1, 255,
/* 134 */ 41, 1, 126, 10, 2, 272, 10, 2, 294, 10, 2, 295, 10, 2, 296, 10, 2, 309, 10, 2, 310, 10, 2, 311, 10, 2, 312, 10, 2, 313, 10, 2, 315, 10, 2, 316, 10, 2, 317, 10, 2, 318, 10, 2, 319, 10, 2, 320, 10, 2, 321, 10, 2, 322, 10, 2, 314, 10, 2, 0, 10, 16,
/* 135 */ 41, 1, 126, 10, 2, 272, 10, 2, 294, 10, 2, 295, 10, 2, 296, 10, 2, 309, 10, 2, 310, 10, 2, 311, 10, 2, 312, 10, 2, 313, 10, 2, 315, 10, 2, 316, 10, 2, 317, 10, 2, 318, 10, 2, 319, 10, 2, 320, 10, 2, 321, 10, 2, 322, 10, 2, 314, 10, 2, 0, 10, 16,
/* 136 */ 1, 255,
/* 137 */ 1, 255,
/* 138 */ 1, 255,
/* 139 */ 1, 255,
/* 140 */ 1, 255,
/* 141 */ 1, 255,
};
#endif /* REMOTEPAD_H */

View file

@ -1958,11 +1958,11 @@ void win32_clip_window(bool state)
free(info);
}
info = NULL;
ClipCursor(&clip_rect);
}
else
GetWindowRect(GetDesktopWindow(), &clip_rect);
ClipCursor(&clip_rect);
ClipCursor(NULL);
}
#endif

View file

@ -1336,12 +1336,16 @@ static void input_remote_parse_packet(
switch (msg->device)
{
case RETRO_DEVICE_JOYPAD:
input_state->buttons[user] &= ~(1 << msg->id);
if (msg->state)
input_state->buttons[user] |= 1 << msg->id;
if (msg->id < 16)
{
input_state->buttons[user] &= ~(1 << msg->id);
if (msg->state)
input_state->buttons[user] |= 1 << msg->id;
}
break;
case RETRO_DEVICE_ANALOG:
input_state->analog[msg->index * 2 + msg->id][user] = msg->state;
if (msg->id<2 && msg->index<2)
input_state->analog[msg->index * 2 + msg->id][user] = msg->state;
break;
}
}
@ -1606,7 +1610,7 @@ static int16_t input_state_device(
if (id == RETRO_DEVICE_ID_ANALOG_Y)
base += 1;
#ifdef HAVE_NETWORKGAMEPAD
if ( input_st->remote
if ( input_st->remote && idx < RETRO_DEVICE_INDEX_ANALOG_BUTTON
&& input_state && input_state->analog[base][port])
res = input_state->analog[base][port];
else

View file

@ -3727,8 +3727,6 @@ MSG_HASH(
"إظهار خيارات 'الأظلال'."
)
/* Settings > User Interface > Views > Settings */

View file

@ -1627,8 +1627,6 @@ MSG_HASH(
/* Settings > User Interface > Menu Item Visibility > Quick Menu */
/* Settings > User Interface > Views > Settings */

View file

@ -577,7 +577,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_DELETE,
"Выдаліць гэтае ядро з дыска."
"Прыбраць гэтае ядро з дыска."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CORE_CREATE_BACKUP,
@ -601,7 +601,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_DELETE_BACKUP_LIST,
"Выдаліць файл са спісу архіваваных рэзервовых копій."
"Прыбраць файл са спісу архіваваных рэзервовых копій."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CORE_BACKUP_MODE_AUTO,
@ -2184,7 +2184,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_VIDEO_GPU_INDEX,
"Выбраць відэакарту для выкарыстання."
"Выбраць графічную картку для выкарыстання."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_OFFSET_X,
@ -2491,7 +2491,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_VIDEO_VSYNC,
"Сінхранізаваць вывад відэа графічнай карты з частатой абнаўлення экрана. Рэкамендуецца."
"Сінхранізаваць вывад відэа графічнай карткі з частатой абнаўлення экрана. Рэкамендуецца."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_SWAP_INTERVAL,
@ -2668,7 +2668,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_AUDIO_DSP_PLUGIN_REMOVE,
"Прыбраць убудову DSP"
"Адкінуць убудову DSP"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_AUDIO_DSP_PLUGIN_REMOVE,
@ -2887,7 +2887,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MIXER_ACTION_PLAY,
"Пачне прайграванне гукавой плыні. Па завяршэнні бягучыя гукавая плынь будзе выдалена з памяці."
"Пачне прайграванне гукавой плыні. Па завяршэнні бягучыя гукавая плынь будзе прыбрана з памяці."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY_LOOPED,
@ -2911,7 +2911,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MIXER_ACTION_STOP,
"Спыніць прайграванне гукавой плыні, але не выдаляць яе з памяці. Можа быць запушчана зноў пры выбары 'Прайграць'."
"Спыніць прайграванне гукавой плыні, але не прыбіраць яе з памяці. Можа быць запушчана зноў пры выбары 'Прайграць'."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MIXER_ACTION_REMOVE,
@ -2919,7 +2919,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MIXER_ACTION_REMOVE,
"Спыніць прайграванне гукавой плыні ды цалкам выдаліць яе з памяці."
"Спыніць прайграванне гукавой плыні ды цалкам прыбраць яе з памяці."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MIXER_ACTION_VOLUME,
@ -2962,7 +2962,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SOUND_OK,
"Уключыць гук 'ОК'"
"Уключыць гук 'Згода'"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SOUND_CANCEL,
@ -3209,17 +3209,69 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_DISABLE_SEARCH_BUTTON,
"Калі ўключана, націсканні кнопкі пошуку будуць ігнаравацца."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_INPUT_SWAP_OK_CANCEL,
"Замена кнопак кіравання меню Згода ды Скасаванне"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_INPUT_SWAP_SCROLL,
"Замена кнопак прагорткі меню"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_ALL_USERS_CONTROL_MENU,
"Кіраванне меню ўсімі карыстальнікамі"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_ALL_USERS_CONTROL_MENU,
"Дазволіць любым карыстальнікам кіраваць меню. Калі выключана, толькі Карыстальнік 1 здольны кіраваць меню."
)
/* Settings > Input > Hotkeys */
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_META_ENABLE_HOTKEY,
"Уключальнік гарачых клавіш"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_HOTKEY_BLOCK_DELAY,
"Затрымка ўключэння гарачых клавіш (у кадрах)"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_HOTKEY_DEVICE_MERGE,
"Аб'яднанне тыпаў прылад гарачых клавіш"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_MENU_ENUM_TOGGLE_GAMEPAD_COMBO,
"Выклік меню (камбінацыя кантролера)"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_MENU_ENUM_TOGGLE_GAMEPAD_COMBO,
"Камбінацыя кнопак кантролера для выкліку меню."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE,
"Выклік меню"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE,
"Пераключае паміж меню ды бягучым змесцівам на бягучым дысплэі."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_QUIT_GAMEPAD_COMBO,
"Выхад (камбінацыя кантролера)"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_QUIT_GAMEPAD_COMBO,
"Камбінацыя кнопак кантролера для выхаду з RetroArch."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_META_QUIT_KEY,
"Выхад"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_META_QUIT_KEY,
"Закрывае RetroArch з гарантыяй, што ўсе захаваныя даныя ды файлы канфігурацыі скінуты на дыск."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_META_CLOSE_CONTENT_KEY,
"Закрыць змесціва"
@ -3240,10 +3292,18 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_KEY,
"Перамотка наперад (пераключэнне)"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_META_FAST_FORWARD_KEY,
"Пераключэнне паміж перамоткай наперад ды звычайнай хуткасцю."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_META_FAST_FORWARD_HOLD_KEY,
"Перамотка наперад (утрыманне)"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_META_FAST_FORWARD_HOLD_KEY,
"Уключае перамотку наперад падчас утрымання. Пры адцісканні змесціва выконваецца са звычайнай хуткасцю."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_META_REWIND,
"Перамотка"
@ -3512,7 +3572,11 @@ MSG_HASH(
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SHOW_CORE_MANAGER_STEAM,
"Паказваць 'Кіраванне ядрамі'"
"Паказ 'Кіраванне ядрамі'"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_SHOW_CORE_MANAGER_STEAM,
"Паказваць опцыю 'Кіраванне ядрамі' ў галоўным меню."
)
MSG_HASH(
@ -3959,7 +4023,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CORE,
"Паказваць опцыю 'Загрузіць ядро' у галоўным меню."
"Паказваць опцыю 'Загрузіць ядро' ў галоўным меню."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CONTENT,
@ -3967,7 +4031,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CONTENT,
"Паказваць опцыю 'Загрузіць змесціва' у галоўным меню."
"Паказваць опцыю 'Загрузіць змесціва' ў галоўным меню."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_DISC,
@ -3983,7 +4047,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_SHOW_DUMP_DISC,
"Паказваць опцыю 'Дамп дыска' у галоўным меню."
"Паказваць опцыю 'Дамп дыска' ў галоўным меню."
)
#ifdef HAVE_LAKKA
MSG_HASH(
@ -4017,7 +4081,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_SHOW_INFORMATION,
"Паказваць опцыю 'Звесткі' у галоўным меню."
"Паказваць опцыю 'Звесткі' ў галоўным меню."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SHOW_CONFIGURATIONS,
@ -4025,7 +4089,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_SHOW_CONFIGURATIONS,
"Паказваць опцыю 'Файл канфігурацыі' у галоўным меню."
"Паказваць опцыю 'Файл канфігурацыі' ў галоўным меню."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SHOW_HELP,
@ -4033,7 +4097,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_SHOW_HELP,
"Паказваць опцыю 'Даведка' у галоўным меню."
"Паказваць опцыю 'Даведка' ў галоўным меню."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH,
@ -4294,16 +4358,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES,
"Паказваць опцыю 'Дадаць да ўпадабанага'."
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"Дададзена да плэй-ліста"
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_ADD_TO_PLAYLIST,
"Паказ 'Дадаць да плэй-ліста'"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"Не ўдалося дадаць да плэй-ліста: плэй-ліст запоўнены"
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_PLAYLIST,
"Паказваць опцыю 'Дадаць да плэй-ліста'."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_DOWNLOAD_THUMBNAILS,
"Паказ 'Сцягнуць мініяцюры'"
@ -4355,6 +4417,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_SETTINGS_SHOW_INPUT,
"Паказваць налады 'Увод'."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_LATENCY,
"Паказ 'Латэнтнасць'"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_SETTINGS_SHOW_LATENCY,
"Паказваць налады 'Латэнтнасць'."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SETTINGS_SHOW_CORE,
"Паказ 'Ядро'"
@ -4542,10 +4612,30 @@ MSG_HASH(
/* Settings > AI Service */
MSG_HASH(
MENU_ENUM_LABEL_VALUE_AI_SERVICE_MODE,
"Рэжым вываду сэрвісу ШІ"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_AI_SERVICE_MODE,
"Паказваць пераклад праз накладку тэксту (рэжым выявы), прайграваць праз сінтэз маўлення (маўленне) або выкарыстоўваць сістэмны дыктар накшталт NVDA (дыктар)."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_AI_SERVICE_URL,
"URL сэрвісу ШІ"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_AI_SERVICE_URL,
"Адрас http:// URL, які накіроўвае на сэрвіс перакладу для выкарыстання."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_AI_SERVICE_ENABLE,
"Праца сэрвісу ШІ"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_AI_SERVICE_ENABLE,
"Уключыць запуск сэрвісу ШІ пры націсканні прывязанай гарачай клавішы."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_AI_SERVICE_PAUSE,
"Паўза падчас перакладу"
@ -4939,7 +5029,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_PLAYLIST_ENTRY_REMOVE,
"Дазволіць выдаляць запісы плэй-ліста."
"Дазволіць прыбіраць запісы плэй-ліста."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_PLAYLIST_SORT_ALPHABETICAL,
@ -5062,7 +5152,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_DELETE_PLAYLIST,
"Выдаліць плэй-ліст з файлавай сістэмы."
"Прыбраць плэй-ліст з файлавай сістэмы."
)
/* Settings > User */
@ -5566,7 +5656,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_DELETE_ENTRY,
"Выдаліць гэты запіс з плэй-ліста."
"Прыбраць гэты запіс з плэй-ліста."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_FAVORITES_PLAYLIST,
@ -5576,6 +5666,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES_PLAYLIST,
"Дадаць змесціва да 'Упадабанае'."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Дадаць да плэй-ліста"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"Дадаць змесціва да плэй-ліста."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INFORMATION,
"Звесткі"
@ -5751,10 +5849,18 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_CORE_OPTIONS_CREATE,
"Захаваць опцыі гульні"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_GAME_SPECIFIC_CORE_OPTIONS_REMOVE,
"Адкінуць опцыі гульні"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_FOLDER_SPECIFIC_CORE_OPTIONS_CREATE,
"Захаваць опцыі каталога змесціва"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_FOLDER_SPECIFIC_CORE_OPTIONS_REMOVE,
"Адкінуць опцыі каталога змесціва"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CORE_OPTIONS_RESET,
"Скінуць опцыі"
@ -5871,6 +5977,10 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_REMOVE,
"Прыбраць набор налад"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_REMOVE,
"Прыбраць аўтаматычны набор налад шэйдара."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SHADER,
"Шэйдар"
@ -5917,7 +6027,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_REMOVE_GLOBAL,
"Адкінуць глабальны набор налад, які выкарыстоўваецца ўсім змесцівам і ўсімі ядрамі."
"Прыбраць глабальны набор налад, які выкарыстоўваецца ўсім змесцівам і ўсімі ядрамі."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_REMOVE_CORE,
@ -5925,16 +6035,24 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_REMOVE_CORE,
"Адкінуць набор налад для ядра, датычны ўсяго змесціва, якое запускаецца з бягучым загружаным ядром."
"Прыбраць набор налад для ядра, які выкарыстоўваецца ўсім змесцівам, што запускаецца з бягучым загружаным ядром."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_REMOVE_PARENT,
"Прыбраць набор налад для каталога змесціва"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_REMOVE_PARENT,
"Прыбраць набор налад для каталога змесціва, які выкарыстоўваецца ўсім змесцівам унутры бягучага рабочага каталога."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_SHADER_PRESET_REMOVE_GAME,
"Прыбраць набор налад для гульні"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_VIDEO_SHADER_PRESET_REMOVE_GAME,
"Прыбраць набор налад для гульні, які выкарыстоўваецца толькі для канкрэтнай гульні."
)
/* Quick Menu > Shaders > Shader Parameters */
@ -6106,6 +6224,10 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_BACK,
"Назад"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_OK,
"Згода"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_PARENT_DIRECTORY,
"Бацькоўскі каталог"
@ -6349,6 +6471,10 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_SORT_MODE_OFF,
"Няма"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_PLAYLIST_MANAGER_LABEL_DISPLAY_MODE_REMOVE_PARENS_AND_BRACKETS,
"Прыбраць () ды []"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_THUMBNAIL_MODE_SCREENSHOTS,
"Здымак экрана"
@ -7773,6 +7899,14 @@ MSG_HASH(
MSG_ADD_TO_FAVORITES_FAILED,
"Не ўдалося дадаць да ўпадабанага: плэй-ліст запоўнены"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"Дададзена да плэй-ліста"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"Не ўдалося дадаць да плэй-ліста: плэй-ліст запоўнены"
)
MSG_HASH(
MSG_APPLICATION_DIR,
"Каталог праграмы"
@ -7803,7 +7937,7 @@ MSG_HASH(
)
MSG_HASH(
MSG_CORE_OPTIONS_FILE_REMOVED_SUCCESSFULLY,
"Файл опцый ядра паспяховы выдалены."
"Файл опцый ядра паспяховы прыбраны."
)
MSG_HASH(
MSG_CORE_OPTIONS_RESET,
@ -7853,6 +7987,14 @@ MSG_HASH(
MSG_FAILED_TO_APPLY_SHADER_PRESET,
"Не атрымалася ўжыць набор налад шэйдара:"
)
MSG_HASH(
MSG_FAILED_TO_REMOVE_DISK_FROM_TRAY,
"Не ўдалося вымаць дыск з латка."
)
MSG_HASH(
MSG_FAILED_TO_REMOVE_TEMPORARY_FILE,
"Не ўдалося прыбраць часовы файл"
)
MSG_HASH(
MSG_FAILED_TO_START_RECORDING,
"Не атрымалася пачаць запіс."
@ -7865,6 +8007,10 @@ MSG_HASH(
MSG_FAILED_TO_UNMUTE_AUDIO,
"Не атрымалася ўключыць гук."
)
MSG_HASH(
MSG_REMOVED_DISK_FROM_TRAY,
"Дыск выняты з латка."
)
MSG_HASH(
MSG_RESET,
"Скід"
@ -7915,7 +8061,7 @@ MSG_HASH(
)
MSG_HASH(
MSG_SHADER_PRESET_REMOVED_SUCCESSFULLY,
"Набор налад шэйдара паспяхова зняты."
"Набор налад шэйдара паспяхова прыбраны."
)
MSG_HASH(
MSG_ERROR_REMOVING_SHADER_PRESET,

View file

@ -531,8 +531,6 @@ MSG_HASH(
/* Settings > User Interface > Menu Item Visibility > Quick Menu */
/* Settings > User Interface > Views > Settings */

View file

@ -4270,8 +4270,6 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES,
"Mostra lopció “Afegeix als preferits”."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION,
"Mostra «Estableix lassociació de nucli»"

View file

@ -6590,32 +6590,6 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES,
"显示「收藏」选项。"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"添加至列表"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"将内容添加到播放列表中。"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"新建播放列表"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"已添加到播放列表"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"添加至列表失败:列表已满"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"创建一个新的播放列表并添加当前条目。"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION,
"显示「设置核心关联」"
@ -8784,6 +8758,22 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES_PLAYLIST,
"把游戏添加到「收藏」。"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"添加至列表"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"将内容添加到播放列表中。"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"新建播放列表"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"创建一个新的播放列表并添加当前条目。"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SET_CORE_ASSOCIATION,
"设置核心关联"
@ -13361,6 +13351,14 @@ MSG_HASH(
MSG_ADD_TO_FAVORITES_FAILED,
"收藏失败:列表已满"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"已添加到播放列表"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"添加至列表失败:列表已满"
)
MSG_HASH(
MSG_SET_CORE_ASSOCIATION,
"已设置核心:"

View file

@ -6010,8 +6010,6 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES,
"顯示「加入到我的最愛」選項。"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION,
"顯示「預設載入核心」"

View file

@ -6318,8 +6318,6 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES,
"Zobrazit možnost \"Přidat k oblíbeným\"."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION,
"Zobrazit 'Nastavit sdružení jádra'"

View file

@ -1207,8 +1207,6 @@ MSG_HASH(
/* Settings > User Interface > Menu Item Visibility > Quick Menu */
/* Settings > User Interface > Views > Settings */

View file

@ -1139,8 +1139,6 @@ MSG_HASH(
/* Settings > User Interface > Menu Item Visibility > Quick Menu */
/* Settings > User Interface > Views > Settings */

View file

@ -1986,6 +1986,14 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_SCAN_SUBFRAMES,
"Rollende Scanline-Simulation"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_VIDEO_SCAN_SUBFRAMES,
"Simuliert eine einfache rollende Scanline über mehrere Unterbilder, indem der Bildschirm vertikal aufgeteilt wird und jeder Teil des Bildschirms entsprechend der Anzahl der Unterbilder dargestellt wird."
)
MSG_HASH(
MENU_ENUM_LABEL_HELP_VIDEO_SCAN_SUBFRAMES,
"Simuliert eine einfache rollende Scanline über mehrere Unterbilder, indem der Bildschirm vertikal aufgeteilt wird und jeder Teil des Bildschirms entsprechend der Anzahl der Unterbilder vom oberen Bildschirmrand nach unten gerendert wird."
)
MSG_HASH(
MENU_ENUM_SUBLABEL_VIDEO_GPU_SCREENSHOT,
"Screenshots erfassen GPU-schattiertes Material, falls verfügbar."
@ -6438,32 +6446,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES,
"Die Option \"Zu Favoriten hinzufügen\" anzeigen."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Zur Wiedergabeliste hinzufügen"
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_ADD_TO_PLAYLIST,
"Zur Wiedergabeliste hinzufügen“ anzeigen"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"Den Inhalt einer Wiedergabeliste hinzufügen."
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_PLAYLIST,
"Die Option „Zur Wiedergabeliste hinzufügen“ anzeigen."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"Neue Wiedergabeliste erstellen"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"Zur Wiedergabeliste hinzugefügt"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"Fehler beim Hinzufügen zur Playlist: Playlist ist voll"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"Eine neue Wiedergabeliste erstellen und dieser den aktuellen Eintrag hinzufügen."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION,
"\"Core zuordnen\" anzeigen"
@ -8572,6 +8562,22 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES_PLAYLIST,
"Den Inhalt zu 'Favoriten' hinzufügen."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Zur Wiedergabeliste hinzufügen"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"Den Inhalt einer Wiedergabeliste hinzufügen."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"Neue Wiedergabeliste erstellen"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"Eine neue Wiedergabeliste erstellen und dieser den aktuellen Eintrag hinzufügen."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SET_CORE_ASSOCIATION,
"Core zuordnen"
@ -12977,6 +12983,14 @@ MSG_HASH(
MSG_ADD_TO_FAVORITES_FAILED,
"Favorit kann nicht hinzugefügt werden: Wiedergabeliste voll"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"Zur Wiedergabeliste hinzugefügt"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"Fehler beim Hinzufügen zur Playlist: Playlist ist voll"
)
MSG_HASH(
MSG_SET_CORE_ASSOCIATION,
"Core zugeordnet: "

View file

@ -2811,8 +2811,6 @@ MSG_HASH( /* FIXME Not RGUI specific */
/* Settings > User Interface > Menu Item Visibility > Quick Menu */
/* Settings > User Interface > Views > Settings */

View file

@ -1007,8 +1007,6 @@ MSG_HASH(
"Show the 'Add to Favourites' option."
)
/* Settings > User Interface > Views > Settings */

View file

@ -727,8 +727,6 @@ MSG_HASH(
/* Settings > User Interface > Menu Item Visibility > Quick Menu */
/* Settings > User Interface > Views > Settings */

View file

@ -6558,32 +6558,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES,
"Muestra la opción «Agregar a favoritos»."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Agregar a la lista de reproducción"
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_ADD_TO_PLAYLIST,
"Mostrar Agregar a la lista de reproducción"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"Agrega el contenido a una lista de reproducción."
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_PLAYLIST,
"Muestra la opción «Agregar a la lista de reproducción»."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"Crear lista de reproducción nueva"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"Se ha agregado a la lista de reproducción"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"Error al añadir a lista de reproducción: la lista está llena"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"Crea una lista de reproducción nueva y agrega a la misma el elemento actual."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION,
"Mostrar Asignar asociación de núcleo"
@ -8744,6 +8726,22 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES_PLAYLIST,
"Agrega el contenido a la sección Favoritos."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Agregar a la lista de reproducción"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"Agrega el contenido a una lista de reproducción."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"Crear lista de reproducción nueva"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"Crea una lista de reproducción nueva y agrega a la misma el elemento actual."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SET_CORE_ASSOCIATION,
"Asignar asociación de núcleo"
@ -13313,6 +13311,14 @@ MSG_HASH(
MSG_ADD_TO_FAVORITES_FAILED,
"Error al añadir favorito: la lista de reproducción está llena."
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"Se ha agregado a la lista de reproducción"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"Error al añadir a lista de reproducción: la lista está llena"
)
MSG_HASH(
MSG_SET_CORE_ASSOCIATION,
"Núcleo asignado: "

View file

@ -2138,8 +2138,6 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES,
"گزینهٔ «افزودن به موارد دلخواه» را نمایش بده."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_INFORMATION,
"نمایش «اطلاعات»"

View file

@ -5622,24 +5622,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES,
"Näytä \"Lisää suosikkeihin\"-valinta."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Lisää soittolistaan"
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_ADD_TO_PLAYLIST,
"Näytä \"Lisää soittolistalle\""
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"Lisää sisältö soittolistalle."
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_PLAYLIST,
"Näytä \"Lisää soittolistalle\" -valinta."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"Luo uusi soittolista"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"Luo uusi soittolista ja lisää nykyinen kohde siihen."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION,
"Näytä \"Liitä ydin\""
@ -7632,6 +7622,22 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES_PLAYLIST,
"Lisää sisältö \"Suosikit\"-soittolistaan."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Lisää soittolistaan"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"Lisää sisältö soittolistalle."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"Luo uusi soittolista"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"Luo uusi soittolista ja lisää nykyinen kohde siihen."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SET_CORE_ASSOCIATION,
"Aseta ydinliitos"

View file

@ -6518,32 +6518,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES,
"Afficher l'option 'Ajouter aux favoris'."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Ajouter à la liste de lecture"
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_ADD_TO_PLAYLIST,
"Afficher 'Ajouter à la liste de lecture'"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"Ajouter le contenu à une liste de lecture."
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_PLAYLIST,
"Afficher l'option 'Ajouter à la liste de lecture'."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"Créer une nouvelle liste de lecture"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"Ajouté à la liste de lecture"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"Échec de l'ajout à la liste de lecture : liste de lecture pleine"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"Créer une nouvelle playlist et ajouter l'entrée courante à celle-ci."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION,
"Afficher 'Associer au cœur'"
@ -8696,6 +8678,22 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES_PLAYLIST,
"Ajouter le contenu aux 'Favoris'."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Ajouter à la liste de lecture"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"Ajouter le contenu à une liste de lecture."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"Créer une nouvelle liste de lecture"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"Créer une nouvelle playlist et ajouter l'entrée courante à celle-ci."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SET_CORE_ASSOCIATION,
"Associer au cœur"
@ -13273,6 +13271,14 @@ MSG_HASH(
MSG_ADD_TO_FAVORITES_FAILED,
"Échec de l'ajout aux favoris : liste de lecture pleine"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"Ajouté à la liste de lecture"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"Échec de l'ajout à la liste de lecture : liste de lecture pleine"
)
MSG_HASH(
MSG_SET_CORE_ASSOCIATION,
"Cœur associé : "

File diff suppressed because it is too large Load diff

View file

@ -639,8 +639,6 @@ MSG_HASH(
/* Settings > User Interface > Menu Item Visibility > Quick Menu */
/* Settings > User Interface > Views > Settings */

View file

@ -1187,8 +1187,6 @@ MSG_HASH(
/* Settings > User Interface > Menu Item Visibility > Quick Menu */
/* Settings > User Interface > Views > Settings */

View file

@ -6550,32 +6550,6 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES,
"A \"Kedvencekhez ad\" lehetőség jelenjen meg."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Hozzáadás játéklistához"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"A tartalom hozzáadása játéklistához."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"Új játéklista létrehozása"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"Hozzáadva a játéklistához"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"Nem sikerült a játéklistához adni: a játéklista megtelt"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"Új játéklista létrehozása és az aktuális elem hozzáadása."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION,
"\"Társítás maghoz\" látható"
@ -8740,6 +8714,22 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES_PLAYLIST,
"Hozzáadás a kedvencekhez."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Hozzáadás játéklistához"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"A tartalom hozzáadása játéklistához."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"Új játéklista létrehozása"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"Új játéklista létrehozása és az aktuális elem hozzáadása."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SET_CORE_ASSOCIATION,
"Társítás maghoz"
@ -13077,6 +13067,14 @@ MSG_HASH(
MSG_ADD_TO_FAVORITES_FAILED,
"Nem sikerült a kedvencekhez adni: a játéklista megtelt"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"Hozzáadva a játéklistához"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"Nem sikerült a játéklistához adni: a játéklista megtelt"
)
MSG_HASH(
MSG_SET_CORE_ASSOCIATION,
"Mag beállítva: "

View file

@ -2863,8 +2863,6 @@ MSG_HASH(
"Menampilkan opsi 'Tambah ke Kesukaan'."
)
/* Settings > User Interface > Views > Settings */
MSG_HASH(

View file

@ -626,6 +626,10 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_CPU_CORES,
"Core della CPU"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_JIT_AVAILABLE,
"JIT disponibile"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FRONTEND_IDENTIFIER,
"Identificatore frontend"
@ -6482,32 +6486,6 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES,
"Mostra l'opzione 'Aggiungi ai Preferiti'."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Aggiungi alla Scaletta"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"Aggiungi il contenuto a una scaletta."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"Crea una nuova scaletta"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"Aggiunto alla playlist"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"Impossibile aggiungere alla playlist: playlist completa"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"Crea una nuova scaletta e aggiungi la voce corrente."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION,
"Mostra 'Imposta associazione al nucleo'"
@ -8644,6 +8622,22 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES_PLAYLIST,
"Aggiungi il contenuto a 'Preferiti'."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Aggiungi alla Scaletta"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"Aggiungi il contenuto a una scaletta."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"Crea una nuova scaletta"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"Crea una nuova scaletta e aggiungi la voce corrente."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SET_CORE_ASSOCIATION,
"Imposta Associazione Core"
@ -13121,6 +13115,14 @@ MSG_HASH(
MSG_ADD_TO_FAVORITES_FAILED,
"Impossibile aggiungere il preferito: playlist completa"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"Aggiunto alla playlist"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"Impossibile aggiungere alla playlist: playlist completa"
)
MSG_HASH(
MSG_SET_CORE_ASSOCIATION,
"Core associato: "

View file

@ -6558,32 +6558,6 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES,
"[お気に入りに追加] オプションを表示します。"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"プレイリストに追加"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"プレイリストにコンテンツを追加します。"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"新しいプレイリストを作成"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"プレイリストに追加しました"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"プレイリストに追加できませんでした: プレイリストがいっぱいです"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"新しいプレイリストを作成し、現在のエントリーを追加します。"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION,
"[コアの関連付けを設定] を表示"
@ -8736,6 +8710,22 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES_PLAYLIST,
"[お気に入り] にコンテンツを追加します。"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"プレイリストに追加"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"プレイリストにコンテンツを追加します。"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"新しいプレイリストを作成"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"新しいプレイリストを作成し、現在のエントリーを追加します。"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SET_CORE_ASSOCIATION,
"コアの関連付けを設定"
@ -13257,6 +13247,14 @@ MSG_HASH(
MSG_ADD_TO_FAVORITES_FAILED,
"お気に入りの追加に失敗しました: プレイリストがいっぱいです"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"プレイリストに追加しました"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"プレイリストに追加できませんでした: プレイリストがいっぱいです"
)
MSG_HASH(
MSG_SET_CORE_ASSOCIATION,
"コアを設定しました:"

View file

@ -6594,32 +6594,6 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES,
"'즐겨찾기에 추가' 항목을 표시합니다."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"실행목록에 추가"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"이 콘텐츠를 실행목록에 추가합니다."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"새 실행목록 만들기"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"실행목록에 추가됨"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"실행목록에 추가하지 못했습니다: 실행목록이 가득 참"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"새로운 실행목록을 만들고 현재 항목을 새 실행목록에 추가합니다."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION,
"'코어 연결 설정' 표시"
@ -8776,6 +8750,22 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES_PLAYLIST,
"항목을 '즐겨찾기'에 추가합니다."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"실행목록에 추가"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"이 콘텐츠를 실행목록에 추가합니다."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"새 실행목록 만들기"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"새로운 실행목록을 만들고 현재 항목을 새 실행목록에 추가합니다."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SET_CORE_ASSOCIATION,
"코어 연결 설정"
@ -13393,6 +13383,14 @@ MSG_HASH(
MSG_ADD_TO_FAVORITES_FAILED,
"즐겨찾기에 추가하지 못했습니다: 실행목록이 가득 참"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"실행목록에 추가됨"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"실행목록에 추가하지 못했습니다: 실행목록이 가득 참"
)
MSG_HASH(
MSG_SET_CORE_ASSOCIATION,
"코어 설정: "

View file

@ -5,18 +5,6 @@ MSG_HASH(
)
#endif
MSG_HASH(
MENU_ENUM_LABEL_ADD_TO_PLAYLIST,
"playlist_add"
)
MSG_HASH(
MENU_ENUM_LABEL_DEFERRED_ADD_TO_PLAYLIST_LIST,
"deferred_add_to_playlist_list"
)
MSG_HASH(
MENU_ENUM_LABEL_ADD_ENTRY_TO_PLAYLIST,
"add_entry_to_playlist"
)
MSG_HASH(
MENU_ENUM_LABEL_ACCOUNTS_CHEEVOS_USERNAME,
"accounts_cheevos_username"
@ -3474,6 +3462,22 @@ MSG_HASH(
MENU_ENUM_LABEL_ADD_TO_FAVORITES_PLAYLIST,
"favorites_add_playlist"
)
MSG_HASH(
MENU_ENUM_LABEL_ADD_TO_PLAYLIST,
"playlist_add"
)
MSG_HASH(
MENU_ENUM_LABEL_DEFERRED_ADD_TO_PLAYLIST_LIST,
"deferred_add_to_playlist_list"
)
MSG_HASH(
MENU_ENUM_LABEL_ADD_ENTRY_TO_PLAYLIST,
"add_entry_to_playlist"
)
MSG_HASH(
MENU_ENUM_LABEL_CREATE_NEW_PLAYLIST,
"playlist_create"
)
MSG_HASH(
MENU_ENUM_LABEL_SET_CORE_ASSOCIATION,
"set_core_association"
@ -5222,6 +5226,10 @@ MSG_HASH(
MENU_ENUM_LABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES,
"quick_menu_show_add_to_favorites"
)
MSG_HASH(
MENU_ENUM_LABEL_QUICK_MENU_SHOW_ADD_TO_PLAYLIST,
"quick_menu_show_add_to_playlist"
)
MSG_HASH(
MENU_ENUM_LABEL_QUICK_MENU_SHOW_START_RECORDING,
"quick_menu_show_start_recording"

View file

@ -231,8 +231,6 @@
/* Settings > User Interface > Menu Item Visibility > Quick Menu */
/* Settings > User Interface > Views > Settings */

View file

@ -4990,8 +4990,6 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_CLOSE_CONTENT,
"Toon de optie 'Sluit Inhoud'."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_INFORMATION,
"Toon 'Informatie'"

File diff suppressed because it is too large Load diff

View file

@ -411,8 +411,6 @@ MSG_HASH(
/* Settings > User Interface > Menu Item Visibility > Quick Menu */
/* Settings > User Interface > Views > Settings */

View file

@ -531,8 +531,6 @@ MSG_HASH(
/* Settings > User Interface > Menu Item Visibility > Quick Menu */
/* Settings > User Interface > Views > Settings */

View file

@ -5926,24 +5926,6 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES,
"Pokaż opcję 'Dodaj do ulubionych'."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Dodaj do playlisty"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"Dodaj zawartość do listy odtwarzania."
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"Dodano do playlisty"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"Nie udało się dodać do playlisty: playlista pełna"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION,
"Pokaż 'Ustaw powiązanie rdzenia'"
@ -7880,6 +7862,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES_PLAYLIST,
"Dodaj zawartość do 'Ulubione'."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Dodaj do playlisty"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"Dodaj zawartość do listy odtwarzania."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SET_CORE_ASSOCIATION,
"Ustaw powiązanie rdzenia"
@ -12045,6 +12035,14 @@ MSG_HASH(
MSG_ADD_TO_FAVORITES_FAILED,
"Nie udało się dodać ulubionych: playlista pełna"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"Dodano do playlisty"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"Nie udało się dodać do playlisty: playlista pełna"
)
MSG_HASH(
MSG_SET_CORE_ASSOCIATION,
"Zestaw rdzenia: "

View file

@ -5384,38 +5384,20 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_ADD_TO_FAVORITES,
"Mostrar 'Adicionar aos favoritos'"
"Mostrar \"Adicionar aos favoritos\""
)
MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES,
"Mostre a opção \"Adicionar aos favoritos\"."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Adicionar em uma lista"
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_ADD_TO_PLAYLIST,
"Mostrar \"Adicionar em uma lista\""
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"Adiciona o conteúdo à lista de reprodução."
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_PLAYLIST,
"Exibe a opção \"Adicionar em uma lista\"."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"Criar nova lista"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"Adicionado"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"Lista de reprodução cheia"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"Cria uma nova lista de reprodução e adiciona o item atual nela."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION,
"Mostrar \"Definir núcleo\""
@ -7324,6 +7306,22 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES_PLAYLIST,
"Adicionar o conteúdo aos \"Favoritos\"."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Adicionar em uma lista"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"Adiciona o conteúdo à lista de reprodução."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"Criar nova lista"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"Cria uma nova lista de reprodução e adiciona o item atual nela."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SET_CORE_ASSOCIATION,
"Definir núcleo"
@ -11477,6 +11475,14 @@ MSG_HASH(
MSG_ADD_TO_FAVORITES_FAILED,
"Falha ao adicionar favorito: lista de reprodução cheia"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"Adicionado"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"Lista de reprodução cheia"
)
MSG_HASH(
MSG_SET_CORE_ASSOCIATION,
"Núcleo definido: "

View file

@ -2971,24 +2971,6 @@ MSG_HASH( /* FIXME Not RGUI specific */
/* Settings > User Interface > Menu Item Visibility > Quick Menu */
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Adicionar à lista de reprodução"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"Adiciona o conteúdo a uma lista de reprodução."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"Criar nova lista de reprodução"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"Cria uma nova lista de reprodução e adiciona a entrada atual à mesma."
)
/* Settings > User Interface > Views > Settings */
MSG_HASH(
@ -3488,6 +3470,22 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_DELETE_ENTRY,
"Remover esta entrada da lista de reprodução."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Adicionar à lista de reprodução"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"Adiciona o conteúdo a uma lista de reprodução."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"Criar nova lista de reprodução"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"Cria uma nova lista de reprodução e adiciona a entrada atual à mesma."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INFORMATION,
"Informação"

View file

@ -231,8 +231,6 @@
/* Settings > User Interface > Menu Item Visibility > Quick Menu */
/* Settings > User Interface > Views > Settings */

View file

@ -2062,6 +2062,14 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_SCAN_SUBFRAMES,
"Симуляция плавающей строки развёртки"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_VIDEO_SCAN_SUBFRAMES,
"Имитирует простую плавающую строку развёртки поверх нескольких подкадров путём деления экрана по вертикали и отрисовки каждой его части исходя из количества подкадров."
)
MSG_HASH(
MENU_ENUM_LABEL_HELP_VIDEO_SCAN_SUBFRAMES,
"Имитирует простую плавающую строку развёртки поверх нескольких подкадров путём деления экрана по вертикали и отрисовки каждой его части исходя из количества подкадров от верха до низа экрана."
)
MSG_HASH(
MENU_ENUM_SUBLABEL_VIDEO_GPU_SCREENSHOT,
"Если поддерживается, делать скриншоты изображения после обработки GPU."
@ -6574,32 +6582,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES,
"Показывать опцию 'Добавить в избранное'."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Добавить в плейлист"
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_ADD_TO_PLAYLIST,
"Показывать 'Добавить в плейлист'"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"Добавить контент в плейлист."
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_PLAYLIST,
"Показывать опцию 'Добавить в плейлист'."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"Создать новый плейлист"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"Добавлено в плейлист"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"Не удалось добавить: плейлист заполнен"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"Создать новый плейлист и добавить в него текущую запись."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION,
"Показывать 'Привязать ядро'"
@ -8764,6 +8754,22 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES_PLAYLIST,
"Добавить контент в избранное."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Добавить в плейлист"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"Добавить контент в плейлист."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"Создать новый плейлист"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"Создать новый плейлист и добавить в него текущую запись."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SET_CORE_ASSOCIATION,
"Привязать ядро"
@ -13329,6 +13335,14 @@ MSG_HASH(
MSG_ADD_TO_FAVORITES_FAILED,
"Не удалось добавить в избранное: плейлист заполнен"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"Добавлено в плейлист"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"Не удалось добавить: плейлист заполнен"
)
MSG_HASH(
MSG_SET_CORE_ASSOCIATION,
"Привязано ядро: "

View file

@ -299,8 +299,6 @@ MSG_HASH(
/* Settings > User Interface > Menu Item Visibility > Quick Menu */
/* Settings > User Interface > Views > Settings */

View file

@ -3566,8 +3566,6 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES,
"Zobraziť voľbu 'Pridať do obľúbených'."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION,
"Zobraziť 'Nastaviť asociáciu jadra'"

View file

@ -2047,8 +2047,6 @@ MSG_HASH(
/* Settings > User Interface > Menu Item Visibility > Quick Menu */
/* Settings > User Interface > Views > Settings */

View file

@ -5134,8 +5134,6 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES,
"Visa alternativet 'Lägg till i favoriter'."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION,
"Visa 'Ställ in kärnassociation'"

View file

@ -4337,7 +4337,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_DUMMY_ON_CORE_SHUTDOWN,
"Çekirdeğin Kapanmaması İçin Kukla Yükle"
"Çekirdek Kapatıldığında Benzerini Yükle"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_DUMMY_ON_CORE_SHUTDOWN,
@ -4518,7 +4518,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_GLOBAL_CORE_OPTIONS,
"Evrensel Çekirdek Seçenekleri Dosyalarını Kullan"
"Genel Çekirdek Seçenekleri Dosyasını Kullan"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_GLOBAL_CORE_OPTIONS,
@ -6091,7 +6091,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CORE,
"'Çekirdek Yükle'yi Göster"
"'Çekirdek Yükle' Göster"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CORE,
@ -6099,7 +6099,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_CONTENT,
"'İçerik Yükle'yi Göster"
"'İçerik Yükle' Göster"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_CONTENT,
@ -6107,7 +6107,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SHOW_LOAD_DISC,
"'Disk Yükle'yi Göster"
"'Disk Yükle' Göster"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_SHOW_LOAD_DISC,
@ -6115,7 +6115,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SHOW_DUMP_DISC,
"'Diskten Aktar'ı Göster"
"'Diskten Aktar' Göster"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_SHOW_DUMP_DISC,
@ -6124,7 +6124,7 @@ MSG_HASH(
#ifdef HAVE_LAKKA
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SHOW_EJECT_DISC,
"'Disk Çıkar'ı Göster"
"'Diski Çıkar' Göster"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_SHOW_EJECT_DISC,
@ -6133,7 +6133,7 @@ MSG_HASH(
#endif
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SHOW_ONLINE_UPDATER,
"'Çevrimiçi Güncelleyici'yi Göster"
"'Çevrimiçi Güncelleyici' Göster"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_SHOW_ONLINE_UPDATER,
@ -6141,7 +6141,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SHOW_CORE_UPDATER,
"'Çekirdek İndirmeyi' Göster"
"'Çekirdek İndirici' Göster"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_SHOW_CORE_UPDATER,
@ -6149,7 +6149,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SHOW_LEGACY_THUMBNAIL_UPDATER,
"Eski 'Küçük Resim Güncelleyiciyi' Göster"
"Eski 'Küçük Resim Güncelleyici' Göster"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_SHOW_LEGACY_THUMBNAIL_UPDATER,
@ -6161,11 +6161,11 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_SHOW_INFORMATION,
"Ana Menüde 'Bilgi' seçeneğini gösterin."
"Ana Menüde 'Bilgiler' seçeneğini gösterin."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SHOW_CONFIGURATIONS,
"'Yapılandırma Dosyası'nı Göster"
"'Yapılandırma Dosyası' Göster"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_SHOW_CONFIGURATIONS,
@ -6173,7 +6173,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SHOW_HELP,
"'Yardım'ı Göster"
"'Yardım' Göster"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_SHOW_HELP,
@ -6181,7 +6181,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SHOW_QUIT_RETROARCH,
"'RetroArch Çıkışı' Göster"
"'RetroArch Çıkış' Göster"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_SHOW_QUIT_RETROARCH,
@ -6189,7 +6189,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_MENU_SHOW_RESTART_RETROARCH,
"'RetroArch Yeniden Başlat'ı Göster"
"'RetroArch Yeniden Başlat' Göster"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_MENU_SHOW_RESTART_RETROARCH,
@ -6197,7 +6197,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_SETTINGS,
"'Ayarlar'ı Göster"
"'Ayarlar' Göster"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CONTENT_SHOW_SETTINGS,
@ -6213,15 +6213,15 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_FAVORITES,
"'Sık Kullanılanları' Göster"
"'Sık Kullanılanlar' Göster"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CONTENT_SHOW_FAVORITES,
"Sık Kullanılanlar' menüsünü gösterin. (Ozon/XMB'de Yeniden Başlatılmalı)"
"'Sık Kullanılanlar' menüsünü gösterin. (Ozon/XMB'de Yeniden Başlatılmalı)"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_IMAGES,
"'Resimleri' Göster"
"'Resimler' Göster"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CONTENT_SHOW_IMAGES,
@ -6237,7 +6237,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_VIDEO,
"'Videoyu' Göster"
"'Video' Göster"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CONTENT_SHOW_VIDEO,
@ -6253,7 +6253,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_HISTORY,
"'Geçmişi' Göster"
"'Geçmiş' Göster"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CONTENT_SHOW_HISTORY,
@ -6261,7 +6261,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_ADD,
"'İçeriği İçe Aktarı' Göster"
"'İçeriği İçe Aktar' Göster"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CONTENT_SHOW_ADD,
@ -6269,7 +6269,7 @@ MSG_HASH(
)
MSG_HASH( /* FIXME can now be replaced with MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_ADD */
MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_ADD_ENTRY,
"'İçeriği İçe Aktarı' Göster"
"'İçeriği İçe Aktar' Göster"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CONTENT_SHOW_ADD_ENTRY,
@ -6293,7 +6293,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_EXPLORE,
"'Gezgini' Göster"
"'Gezgin' Göster"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CONTENT_SHOW_EXPLORE,
@ -6301,7 +6301,7 @@ MSG_HASH(
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CONTENT_SHOW_CONTENTLESS_CORES,
"'İçeriksiz Çekirdekleri' Göster"
"'İçeriksiz Çekirdekler' Göster"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CONTENT_SHOW_CONTENTLESS_CORES,
@ -6380,7 +6380,7 @@ MSG_HASH( /* FIXME Not RGUI specific */
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_RESUME_CONTENT,
"'Devam Eti' Göster"
"'Devam Et' Göster"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_RESUME_CONTENT,
@ -6562,32 +6562,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES,
"'Sık Kullanılanlara Ekle' seçeneğini gösterin."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Oynatma Listesine Ekle"
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_ADD_TO_PLAYLIST,
"'Oynatma Listesine Ekle' Göster"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"İçeriği bir oynatma listesine ekleyin."
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_PLAYLIST,
"'Oynatma Listesine Ekle' seçeneğini gösterin."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"Yeni Oynatma Listesi Oluştur"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"Oynatma listesine eklendi"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"Oynatma listesine eklenemedi: liste dolu"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"Yeni bir oynatma listesi oluşturun ve mevcut kaydı buna ekleyin."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION,
"'Çekirdek İlişkilendirmeyi Ayarlayı' Göster"
@ -8752,6 +8734,22 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES_PLAYLIST,
"İçeriği 'Sık Kullanılanlara' ekleyin."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Oynatma Listesine Ekle"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"İçeriği bir oynatma listesine ekleyin."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"Yeni Oynatma Listesi Oluştur"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"Yeni bir oynatma listesi oluşturun ve mevcut kaydı buna ekleyin."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SET_CORE_ASSOCIATION,
"Çekirdek Eşleşmesi Ayarla"
@ -11337,6 +11335,10 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_FLATUI,
"Düz Arayüz"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_FLATUX,
"DüzArayüz"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_XMB_ICON_THEME_MONOCHROME,
"Tek Renk"
@ -13393,6 +13395,14 @@ MSG_HASH(
MSG_ADD_TO_FAVORITES_FAILED,
"Sık kullanılan eklenemedi: oynatma listesi dolu"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"Oynatma listesine eklendi"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"Oynatma listesine eklenemedi: liste dolu"
)
MSG_HASH(
MSG_SET_CORE_ASSOCIATION,
"Çekirdek ayarla: "
@ -14007,7 +14017,7 @@ MSG_HASH(
)
MSG_HASH(
MSG_NO_CONTENT_STARTING_DUMMY_CORE,
"İçerik yok, kukla çekirdek başlatılıyor."
"İçerik yok, benzer çekirdek başlatılıyor."
)
MSG_HASH(
MSG_NO_SAVE_STATE_HAS_BEEN_OVERWRITTEN_YET,
@ -14311,7 +14321,7 @@ MSG_HASH(
)
MSG_HASH(
MSG_USING_LIBRETRO_DUMMY_CORE_RECORDING_SKIPPED,
"Libretro kukla çekirdeği kullanılıyor. Kayıt atlanıyor."
"Libretro benzer çekirdeği kullanılıyor. Kayıt atlanıyor."
)
MSG_HASH(
MSG_VALUE_CONNECT_DEVICE_FROM_A_VALID_PORT,

View file

@ -71,6 +71,10 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CORE_LIST,
"Вибрати ядро для використання."
)
MSG_HASH(
MENU_ENUM_LABEL_HELP_CORE_LIST,
"Знайдіть реалізацію ядра libretro. Звідки запускається браузер, залежить від шляху до основного каталогу. Якщо порожньо, то він почнеться з кореня.\nЯкщо основним каталогом є каталог, меню використовуватиме його як верхню теку. Якщо основний каталог є повним шляхом, він почнет[...]"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_LOAD_CONTENT_LIST,
"Завантажити вміст"
@ -3906,8 +3910,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_CORE_OPTIONS_FLUSH,
"Показати пункт меню «Зберегти параметри на диск» у меню «Параметри > Керування параметрами ядра»."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_ADD_TO_PLAYLIST,
"Показати 'Додати до Списку Відтворення'"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_PLAYLIST,
"Показувати опцію 'Додати до Списку Відтворення'."
)
/* Settings > User Interface > Views > Settings */

View file

@ -6654,32 +6654,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES,
"Show the 'Add to Favorites' option."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Add to Playlist"
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_ADD_TO_PLAYLIST,
"Show 'Add to Playlist'"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"Add the content to a playlist."
MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_PLAYLIST,
"Show the 'Add to Playlist' option."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"Create New Playlist"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"Added to playlist"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"Failed to add to playlist: playlist full"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"Create a new playlist and add the current entry to it."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION,
"Show 'Set Core Association'"
@ -8860,6 +8842,22 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES_PLAYLIST,
"Add the content to 'Favorites'."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST,
"Add to Playlist"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST,
"Add the content to a playlist."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CREATE_NEW_PLAYLIST,
"Create New Playlist"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_CREATE_NEW_PLAYLIST,
"Create a new playlist and add the current entry to it."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SET_CORE_ASSOCIATION,
"Set Core Association"
@ -14085,6 +14083,14 @@ MSG_HASH(
MSG_ADD_TO_FAVORITES_FAILED,
"Failed to add favorite: playlist full"
)
MSG_HASH(
MSG_ADDED_TO_PLAYLIST,
"Added to playlist"
)
MSG_HASH(
MSG_ADD_TO_PLAYLIST_FAILED,
"Failed to add to playlist: playlist full"
)
MSG_HASH(
MSG_SET_CORE_ASSOCIATION,
"Core set: "

View file

@ -2735,8 +2735,6 @@ MSG_HASH(
/* Settings > User Interface > Menu Item Visibility > Quick Menu */
/* Settings > User Interface > Views > Settings */
MSG_HASH(

View file

@ -1743,8 +1743,6 @@ MSG_HASH(
/* Settings > User Interface > Menu Item Visibility > Quick Menu */
/* Settings > User Interface > Views > Settings */

View file

@ -7,7 +7,7 @@
#define LANGUAGE_PROGRESS_ASTURIAN_APPROVED 5
/* Belarusian */
#define LANGUAGE_PROGRESS_BELARUSIAN_TRANSLATED 32
#define LANGUAGE_PROGRESS_BELARUSIAN_TRANSLATED 33
#define LANGUAGE_PROGRESS_BELARUSIAN_APPROVED 0
/* Bulgarian */
@ -31,7 +31,7 @@
#define LANGUAGE_PROGRESS_DANISH_APPROVED 0
/* German */
#define LANGUAGE_PROGRESS_GERMAN_TRANSLATED 99
#define LANGUAGE_PROGRESS_GERMAN_TRANSLATED 100
#define LANGUAGE_PROGRESS_GERMAN_APPROVED 14
/* Greek */
@ -63,7 +63,7 @@
#define LANGUAGE_PROGRESS_FRENCH_APPROVED 99
/* Galician */
#define LANGUAGE_PROGRESS_GALICIAN_TRANSLATED 49
#define LANGUAGE_PROGRESS_GALICIAN_TRANSLATED 100
#define LANGUAGE_PROGRESS_GALICIAN_APPROVED 0
/* Hebrew */
@ -75,7 +75,7 @@
#define LANGUAGE_PROGRESS_CROATIAN_APPROVED 0
/* Hungarian */
#define LANGUAGE_PROGRESS_HUNGARIAN_TRANSLATED 100
#define LANGUAGE_PROGRESS_HUNGARIAN_TRANSLATED 99
#define LANGUAGE_PROGRESS_HUNGARIAN_APPROVED 0
/* Indonesian */
@ -99,7 +99,7 @@
#define LANGUAGE_PROGRESS_DUTCH_APPROVED 0
/* Norwegian */
#define LANGUAGE_PROGRESS_NORWEGIAN_TRANSLATED 9
#define LANGUAGE_PROGRESS_NORWEGIAN_TRANSLATED 19
#define LANGUAGE_PROGRESS_NORWEGIAN_APPROVED 0
/* Odia */
@ -136,10 +136,10 @@
/* Turkish */
#define LANGUAGE_PROGRESS_TURKISH_TRANSLATED 100
#define LANGUAGE_PROGRESS_TURKISH_APPROVED 99
#define LANGUAGE_PROGRESS_TURKISH_APPROVED 100
/* Ukrainian */
#define LANGUAGE_PROGRESS_UKRAINIAN_TRANSLATED 32
#define LANGUAGE_PROGRESS_UKRAINIAN_TRANSLATED 33
#define LANGUAGE_PROGRESS_UKRAINIAN_APPROVED 7
/* Valencian */

View file

@ -965,6 +965,7 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_delete_entry,
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_information, MENU_ENUM_SUBLABEL_INFORMATION)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_run, MENU_ENUM_SUBLABEL_RUN)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_add_to_favorites, MENU_ENUM_SUBLABEL_ADD_TO_FAVORITES)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_add_to_playlist, MENU_ENUM_SUBLABEL_ADD_TO_PLAYLIST)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_set_core_association, MENU_ENUM_SUBLABEL_SET_CORE_ASSOCIATION)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_reset_core_association, MENU_ENUM_SUBLABEL_RESET_CORE_ASSOCIATION)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_download_pl_entry_thumbnails, MENU_ENUM_SUBLABEL_DOWNLOAD_PL_ENTRY_THUMBNAILS)
@ -1112,9 +1113,10 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_quick_menu_show_restart_content,
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_quick_menu_show_close_content, MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_CLOSE_CONTENT)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_quick_menu_show_savestate_submenu, MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_SAVESTATE_SUBMENU)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_quick_menu_show_save_load_state, MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_SAVE_LOAD_STATE)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_quick_menu_show_replay, MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_REPLAY)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_quick_menu_show_replay, MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_REPLAY)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_quick_menu_show_undo_save_load_state, MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_UNDO_SAVE_LOAD_STATE)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_quick_menu_show_add_to_favorites, MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_quick_menu_show_add_to_playlist, MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_ADD_TO_PLAYLIST)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_quick_menu_show_start_recording, MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_START_RECORDING)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_quick_menu_show_start_streaming, MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_START_STREAMING)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_quick_menu_show_set_core_association, MENU_ENUM_SUBLABEL_QUICK_MENU_SHOW_SET_CORE_ASSOCIATION)
@ -2925,6 +2927,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
case MENU_ENUM_LABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_quick_menu_show_add_to_favorites);
break;
case MENU_ENUM_LABEL_QUICK_MENU_SHOW_ADD_TO_PLAYLIST:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_quick_menu_show_add_to_playlist);
break;
case MENU_ENUM_LABEL_QUICK_MENU_SHOW_START_RECORDING:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_quick_menu_show_start_recording);
break;
@ -3471,6 +3476,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
case MENU_ENUM_LABEL_ADD_TO_FAVORITES_PLAYLIST:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_add_to_favorites);
break;
case MENU_ENUM_LABEL_ADD_TO_PLAYLIST:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_add_to_playlist);
break;
case MENU_ENUM_LABEL_SET_CORE_ASSOCIATION:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_set_core_association);
break;

View file

@ -10644,6 +10644,11 @@ static void materialui_list_insert(
node->icon_texture_index = MUI_TEXTURE_ADD_TO_FAVORITES;
node->icon_type = MUI_ICON_TYPE_INTERNAL;
}
else if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_ADD_TO_PLAYLIST)))
{
node->icon_texture_index = MUI_TEXTURE_PLAYLIST;
node->icon_type = MUI_ICON_TYPE_INTERNAL;
}
else if ( string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_RENAME_ENTRY))
|| string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_RESET_CORE_ASSOCIATION))
|| string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_PLAYLIST_MANAGER_RESET_CORES))
@ -10837,7 +10842,7 @@ static void materialui_list_insert(
|| string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_SCAN_FILE))
|| string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_MANUAL_CONTENT_SCAN_LIST))
|| string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_ADD_CONTENT_LIST))
|| string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_ADD_TO_PLAYLIST))
|| string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_CREATE_NEW_PLAYLIST))
|| string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_ADD_NEW_TOP))
|| string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_ADD_NEW_BOTTOM))
|| string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_CHEAT_ADD_NEW_AFTER))

View file

@ -1763,7 +1763,13 @@ static uintptr_t ozone_entries_icon_get_texture(
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_CORE_OPTIONS];
case MENU_ENUM_LABEL_ADD_TO_FAVORITES:
case MENU_ENUM_LABEL_ADD_TO_FAVORITES_PLAYLIST:
case MENU_ENUM_LABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES:
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_ADD_FAVORITE];
case MENU_ENUM_LABEL_ADD_TO_PLAYLIST:
case MENU_ENUM_LABEL_QUICK_MENU_SHOW_ADD_TO_PLAYLIST:
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_PLAYLIST];
case MENU_ENUM_LABEL_CREATE_NEW_PLAYLIST:
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_ADD];
case MENU_ENUM_LABEL_PARENT_DIRECTORY:
case MENU_ENUM_LABEL_UNDO_LOAD_STATE:
case MENU_ENUM_LABEL_UNDO_SAVE_STATE:
@ -1835,7 +1841,6 @@ static uintptr_t ozone_entries_icon_get_texture(
case MENU_ENUM_LABEL_PLAYLISTS_TAB:
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_ZIP];
case MENU_ENUM_LABEL_GOTO_FAVORITES:
case MENU_ENUM_LABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES:
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_FAVORITE];
case MENU_ENUM_LABEL_GOTO_IMAGES:
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_IMAGE];

View file

@ -2913,7 +2913,13 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
return xmb->textures.list[XMB_TEXTURE_SETTING];
case MENU_ENUM_LABEL_ADD_TO_FAVORITES:
case MENU_ENUM_LABEL_ADD_TO_FAVORITES_PLAYLIST:
case MENU_ENUM_LABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES:
return xmb->textures.list[XMB_TEXTURE_ADD_FAVORITE];
case MENU_ENUM_LABEL_ADD_TO_PLAYLIST:
case MENU_ENUM_LABEL_QUICK_MENU_SHOW_ADD_TO_PLAYLIST:
return xmb->textures.list[XMB_TEXTURE_PLAYLIST];
case MENU_ENUM_LABEL_CREATE_NEW_PLAYLIST:
return xmb->textures.list[XMB_TEXTURE_ADD];
case MENU_ENUM_LABEL_PARENT_DIRECTORY:
case MENU_ENUM_LABEL_UNDO_LOAD_STATE:
case MENU_ENUM_LABEL_UNDO_SAVE_STATE:
@ -3014,7 +3020,6 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
case MENU_ENUM_LABEL_PLAYLISTS_TAB:
return xmb->textures.list[XMB_TEXTURE_ZIP];
case MENU_ENUM_LABEL_GOTO_FAVORITES:
case MENU_ENUM_LABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES:
return xmb->textures.list[XMB_TEXTURE_FAVORITE];
case MENU_ENUM_LABEL_GOTO_IMAGES:
return xmb->textures.list[XMB_TEXTURE_IMAGE];

View file

@ -3794,12 +3794,15 @@ static int menu_displaylist_parse_load_content_settings(
count++;
}
if ( menu_entries_append(list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST),
msg_hash_to_str(MENU_ENUM_LABEL_ADD_TO_PLAYLIST),
MENU_ENUM_LABEL_ADD_TO_PLAYLIST,
MENU_SETTING_ACTION, 0, 0, NULL))
count++;
if (settings->bools.quick_menu_show_add_to_playlist)
{
if (menu_entries_append(list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST),
msg_hash_to_str(MENU_ENUM_LABEL_ADD_TO_PLAYLIST),
MENU_ENUM_LABEL_ADD_TO_PLAYLIST,
MENU_SETTING_ACTION, 0, 0, NULL))
count++;
}
if (!settings->bools.kiosk_mode_enable)
{
@ -4049,15 +4052,19 @@ static int menu_displaylist_parse_horizontal_content_actions(
menu_entries_append(list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ADD_TO_FAVORITES_PLAYLIST),
msg_hash_to_str(MENU_ENUM_LABEL_ADD_TO_FAVORITES_PLAYLIST),
MENU_ENUM_LABEL_ADD_TO_FAVORITES_PLAYLIST, FILE_TYPE_PLAYLIST_ENTRY, 0, 0, NULL);
MENU_ENUM_LABEL_ADD_TO_FAVORITES_PLAYLIST,
FILE_TYPE_PLAYLIST_ENTRY, 0, 0, NULL);
}
/* This is to add to playlist */
if (settings->bools.quick_menu_show_add_to_playlist)
{
menu_entries_append(list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST),
msg_hash_to_str(MENU_ENUM_LABEL_ADD_TO_PLAYLIST),
MENU_ENUM_LABEL_ADD_TO_PLAYLIST,
MENU_SETTING_ACTION, 0, 0, NULL);
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ADD_TO_PLAYLIST),
msg_hash_to_str(MENU_ENUM_LABEL_ADD_TO_PLAYLIST),
MENU_ENUM_LABEL_ADD_TO_PLAYLIST,
MENU_SETTING_ACTION, 0, 0, NULL);
}
if (!settings->bools.kiosk_mode_enable)
{
if (settings->bools.quick_menu_show_set_core_association)
@ -4651,17 +4658,6 @@ static unsigned menu_displaylist_parse_add_to_playlist_list(
/* Not necessary to check for NULL here */
string_list_free(str_list);
/* Add favourites */
if (
settings->bools.quick_menu_show_add_to_favorites
&& settings->bools.menu_content_show_favorites
&& menu_entries_append(list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ADD_TO_FAVORITES),
msg_hash_to_str(MENU_ENUM_LABEL_ADD_TO_FAVORITES),
MENU_ENUM_LABEL_ADD_TO_FAVORITES, FILE_TYPE_PLAYLIST_ENTRY, 0, 0, NULL)
)
count++;
return count;
}
@ -10957,6 +10953,7 @@ unsigned menu_displaylist_build_list(
{MENU_ENUM_LABEL_QUICK_MENU_SHOW_START_RECORDING, PARSE_ONLY_BOOL},
{MENU_ENUM_LABEL_QUICK_MENU_SHOW_START_STREAMING, PARSE_ONLY_BOOL},
{MENU_ENUM_LABEL_QUICK_MENU_SHOW_ADD_TO_FAVORITES, PARSE_ONLY_BOOL},
{MENU_ENUM_LABEL_QUICK_MENU_SHOW_ADD_TO_PLAYLIST, PARSE_ONLY_BOOL},
{MENU_ENUM_LABEL_CONTENT_SHOW_OVERLAYS, PARSE_ONLY_BOOL},
{MENU_ENUM_LABEL_CONTENT_SHOW_LATENCY, PARSE_ONLY_BOOL},
#ifdef HAVE_REWIND

View file

@ -20842,6 +20842,21 @@ static bool setting_append_list(
general_read_handler,
SD_FLAG_NONE);
CONFIG_BOOL(
list, list_info,
&settings->bools.quick_menu_show_add_to_playlist,
MENU_ENUM_LABEL_QUICK_MENU_SHOW_ADD_TO_PLAYLIST,
MENU_ENUM_LABEL_VALUE_QUICK_MENU_SHOW_ADD_TO_PLAYLIST,
DEFAULT_QUICK_MENU_SHOW_ADD_TO_PLAYLIST,
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.quick_menu_show_start_recording,

View file

@ -1662,6 +1662,7 @@ enum msg_hash_enums
MENU_LABEL(QUICK_MENU_SHOW_UNDO_SAVE_LOAD_STATE),
MENU_LABEL(QUICK_MENU_SHOW_REPLAY),
MENU_LABEL(QUICK_MENU_SHOW_ADD_TO_FAVORITES),
MENU_LABEL(QUICK_MENU_SHOW_ADD_TO_PLAYLIST),
MENU_LABEL(QUICK_MENU_SHOW_START_RECORDING),
MENU_LABEL(QUICK_MENU_SHOW_START_STREAMING),
MENU_LABEL(QUICK_MENU_SHOW_SET_CORE_ASSOCIATION),

View file

@ -68,13 +68,16 @@ static struct string_list *ui_companion_cocoatouch_get_app_icons(void)
attr.i = 0;
NSDictionary *iconfiles = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIcons"];
NSString *primary;
const char *cstr;
#if TARGET_OS_TV
primary = iconfiles[@"CFBundlePrimaryIcon"];
#else
primary = iconfiles[@"CFBundlePrimaryIcon"][@"CFBundleIconName"];
#endif
list = string_list_new();
string_list_append(list, [primary cStringUsingEncoding:kCFStringEncodingUTF8], attr);
cstr = [primary cStringUsingEncoding:kCFStringEncodingUTF8];
if (cstr)
string_list_append(list, cstr, attr);
NSArray<NSString *> *alts;
#if TARGET_OS_TV
@ -84,7 +87,11 @@ static struct string_list *ui_companion_cocoatouch_get_app_icons(void)
#endif
NSArray<NSString *> *sorted = [alts sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
for (NSString *str in sorted)
string_list_append(list, [str cStringUsingEncoding:kCFStringEncodingUTF8], attr);
{
cstr = [str cStringUsingEncoding:kCFStringEncodingUTF8];
if (cstr)
string_list_append(list, cstr, attr);
}
});
return list;